summaryrefslogtreecommitdiff
path: root/tools/gfx/metal/metal-buffer.cpp
diff options
context:
space:
mode:
authorskallweitNV <64953474+skallweitNV@users.noreply.github.com>2024-06-06 18:08:38 +0200
committerGitHub <noreply@github.com>2024-06-06 09:08:38 -0700
commit8ea3854d94eb1ff213be716a38493d601784810b (patch)
tree071be96574be4afa54afe0a1fe0d66f10eb2cd80 /tools/gfx/metal/metal-buffer.cpp
parent40d48bf1742cf21cc1ad3dd00d11fb04f37e512f (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.cpp26
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