yum-mirror/slang

Making it easier to work with shaders

git clone https://git.yummers.dev/yum-mirror/slang

Ellie Hermaszewskaformatf65d756bf

master
1.2 KiB57 linesraw
1// metal-buffer.cpp
2#include "metal-buffer.h"
3
4#include "metal-util.h"
5
6namespace gfx
7{
8
9using namespace Slang;
10
11namespace metal
12{
13
14BufferResourceImpl::BufferResourceImpl(const IBufferResource::Desc& desc, DeviceImpl* device)
15    : Parent(desc), m_device(device)
16{
17}
18
19BufferResourceImpl::~BufferResourceImpl() {}
20
21DeviceAddress BufferResourceImpl::getDeviceAddress()
22{
23    return m_buffer->gpuAddress();
24}
25
26Result BufferResourceImpl::getNativeResourceHandle(InteropHandle* outHandle)
27{
28    outHandle->api = InteropHandleAPI::Metal;
29    outHandle->handleValue = reinterpret_cast<intptr_t>(m_buffer.get());
30    return SLANG_OK;
31}
32
33Result BufferResourceImpl::getSharedHandle(InteropHandle* outHandle)
34{
35    return SLANG_E_NOT_AVAILABLE;
36}
37
38Result BufferResourceImpl::map(MemoryRange* rangeToRead, void** outPointer)
39{
40    *outPointer = m_buffer->contents();
41    return SLANG_OK;
42}
43
44Result BufferResourceImpl::unmap(MemoryRange* writtenRange)
45{
46    return SLANG_OK;
47}
48
49Result BufferResourceImpl::setDebugName(const char* name)
50{
51    Parent::setDebugName(name);
52    m_buffer->addDebugMarker(MetalUtil::createString(name).get(), NS::Range(0, m_desc.sizeInBytes));
53    return SLANG_OK;
54}
55
56} // namespace metal
57} // namespace gfx