diff options
| author | skallweitNV <64953474+skallweitNV@users.noreply.github.com> | 2024-06-06 18:08:38 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-06-06 09:08:38 -0700 |
| commit | 8ea3854d94eb1ff213be716a38493d601784810b (patch) | |
| tree | 071be96574be4afa54afe0a1fe0d66f10eb2cd80 /tools/gfx/metal/metal-buffer.cpp | |
| parent | 40d48bf1742cf21cc1ad3dd00d11fb04f37e512f (diff) | |
work on gfx metal backend (#4287)
* implement sampler state
* implement input layout
* implement fence object
* buffer implementation
* texture implementation
* cleanup
* add adapter enumeration
* supported formats and allocation info
* work on device and implement readBufferResource
* skeleton for transient resource heap
* initial work on command queue / buffers / encoders
* fix uploading initial buffer data
* implement buffer resource view
* string utility functions
* wip query pool implementation
* cleanup
* swapchain
* wip
* remove plain buffer view
* extend gfxGetDeviceTypeName with metal
* basic support for resource binding with compute shaders
* needed for metal bindings
* replace assert(0) with SLANG_UNIMPLEMENTED_X
Diffstat (limited to 'tools/gfx/metal/metal-buffer.cpp')
| -rw-r--r-- | tools/gfx/metal/metal-buffer.cpp | 26 |
1 files changed, 14 insertions, 12 deletions
diff --git a/tools/gfx/metal/metal-buffer.cpp b/tools/gfx/metal/metal-buffer.cpp index de866bcf7..4f2964c5b 100644 --- a/tools/gfx/metal/metal-buffer.cpp +++ b/tools/gfx/metal/metal-buffer.cpp @@ -1,5 +1,6 @@ // metal-buffer.cpp #include "metal-buffer.h" +#include "metal-util.h" namespace gfx { @@ -9,48 +10,49 @@ using namespace Slang; namespace metal { -BufferResourceImpl::BufferResourceImpl(const IBufferResource::Desc& desc, DeviceImpl* renderer) +BufferResourceImpl::BufferResourceImpl(const IBufferResource::Desc& desc, DeviceImpl* device) : Parent(desc) - , m_renderer(renderer) + , m_device(device) { - assert(renderer); } BufferResourceImpl::~BufferResourceImpl() { - if (sharedHandle.handleValue != 0) - { - } } DeviceAddress BufferResourceImpl::getDeviceAddress() { - return (DeviceAddress)0; + return m_buffer->gpuAddress(); } Result BufferResourceImpl::getNativeResourceHandle(InteropHandle* outHandle) { - return SLANG_E_NOT_IMPLEMENTED; + outHandle->api = InteropHandleAPI::Metal; + outHandle->handleValue = reinterpret_cast<intptr_t>(m_buffer.get()); + return SLANG_OK; } Result BufferResourceImpl::getSharedHandle(InteropHandle* outHandle) { - return SLANG_E_NOT_IMPLEMENTED; + return SLANG_E_NOT_AVAILABLE; } Result BufferResourceImpl::map(MemoryRange* rangeToRead, void** outPointer) { - return SLANG_E_NOT_IMPLEMENTED; + *outPointer = m_buffer->contents(); + return SLANG_OK; } Result BufferResourceImpl::unmap(MemoryRange* writtenRange) { - return SLANG_E_NOT_IMPLEMENTED; + return SLANG_OK; } Result BufferResourceImpl::setDebugName(const char* name) { - return SLANG_E_NOT_IMPLEMENTED; + Parent::setDebugName(name); + m_buffer->addDebugMarker(MetalUtil::createString(name).get(), NS::Range(0, m_desc.sizeInBytes)); + return SLANG_OK; } } // namespace metal |
