yum-mirror/slang

Making it easier to work with shaders

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

AlexisPollonniFixed various queryInterface implementations (#6863)785669c87

master
2.6 KiB90 linesraw
1// debug-transient-heap.cpp
2#include "debug-transient-heap.h"
3
4#include "debug-command-buffer.h"
5#include "debug-helper-functions.h"
6
7namespace gfx
8{
9using namespace Slang;
10
11namespace debug
12{
13
14SlangResult DebugTransientResourceHeap::queryInterface(SlangUUID const& uuid, void** outObject)
15{
16    if (uuid == GfxGUID::IID_ISlangUnknown || uuid == GfxGUID::IID_ITransientResourceHeap)
17    {
18        *outObject = static_cast<ITransientResourceHeap*>(this);
19        addRef();
20        return SLANG_OK;
21    }
22    if (uuid == GfxGUID::IID_ITransientResourceHeapD3D12)
23    {
24        RefPtr<DebugTransientResourceHeapD3D12> result = new DebugTransientResourceHeapD3D12();
25        baseObject->queryInterface(uuid, (void**)result->baseObject.writeRef());
26        returnComPtr((ITransientResourceHeapD3D12**)outObject, result);
27        return SLANG_OK;
28    }
29
30    return baseObject->queryInterface(uuid, outObject);
31}
32
33Result DebugTransientResourceHeap::synchronizeAndReset()
34{
35    SLANG_GFX_API_FUNC;
36    return baseObject->synchronizeAndReset();
37}
38
39Result DebugTransientResourceHeap::finish()
40{
41    SLANG_GFX_API_FUNC;
42    return baseObject->finish();
43}
44
45Result DebugTransientResourceHeap::createCommandBuffer(ICommandBuffer** outCommandBuffer)
46{
47    SLANG_GFX_API_FUNC;
48    RefPtr<DebugCommandBuffer> outObject = new DebugCommandBuffer();
49    outObject->m_transientHeap = this;
50    auto result = baseObject->createCommandBuffer(outObject->baseObject.writeRef());
51    if (SLANG_FAILED(result))
52        return result;
53    outObject->queryInterface(SlangUUID SLANG_UUID_ICommandBuffer, (void**)outCommandBuffer);
54    return result;
55}
56
57SlangResult DebugTransientResourceHeapD3D12::queryInterface(SlangUUID const& uuid, void** outObject)
58{
59    if (uuid == GfxGUID::IID_ISlangUnknown || uuid == GfxGUID::IID_ITransientResourceHeapD3D12)
60        *outObject = static_cast<ITransientResourceHeapD3D12*>(this);
61    if (uuid == GfxGUID::IID_ITransientResourceHeap)
62    {
63        RefPtr<DebugTransientResourceHeap> result = new DebugTransientResourceHeap();
64        baseObject->queryInterface(uuid, (void**)result->baseObject.writeRef());
65        returnComPtr((ITransientResourceHeap**)outObject, result);
66        return SLANG_OK;
67    }
68    else
69    {
70        return baseObject->queryInterface(uuid, outObject);
71    }
72}
73
74Result DebugTransientResourceHeapD3D12::allocateTransientDescriptorTable(
75    DescriptorType type,
76    GfxCount count,
77    Offset& outDescriptorOffset,
78    void** outD3DDescriptorHeapHandle)
79{
80    SLANG_GFX_API_FUNC;
81
82    return baseObject->allocateTransientDescriptorTable(
83        type,
84        count,
85        outDescriptorOffset,
86        outD3DDescriptorHeapHandle);
87}
88
89} // namespace debug
90} // namespace gfx