diff options
Diffstat (limited to 'tools/gfx')
| -rw-r--r-- | tools/gfx/debug-layer/debug-transient-heap.cpp | 10 | ||||
| -rw-r--r-- | tools/gfx/renderer-shared.cpp | 9 |
2 files changed, 13 insertions, 6 deletions
diff --git a/tools/gfx/debug-layer/debug-transient-heap.cpp b/tools/gfx/debug-layer/debug-transient-heap.cpp index 424a8feb1..5b0219fb7 100644 --- a/tools/gfx/debug-layer/debug-transient-heap.cpp +++ b/tools/gfx/debug-layer/debug-transient-heap.cpp @@ -14,7 +14,11 @@ namespace debug SlangResult DebugTransientResourceHeap::queryInterface(SlangUUID const& uuid, void** outObject) { if (uuid == GfxGUID::IID_ISlangUnknown || uuid == GfxGUID::IID_ITransientResourceHeap) + { *outObject = static_cast<ITransientResourceHeap*>(this); + addRef(); + return SLANG_OK; + } if (uuid == GfxGUID::IID_ITransientResourceHeapD3D12) { RefPtr<DebugTransientResourceHeapD3D12> result = new DebugTransientResourceHeapD3D12(); @@ -22,10 +26,8 @@ SlangResult DebugTransientResourceHeap::queryInterface(SlangUUID const& uuid, vo returnComPtr((ITransientResourceHeapD3D12**)outObject, result); return SLANG_OK; } - else - { - return baseObject->queryInterface(uuid, outObject); - } + + return baseObject->queryInterface(uuid, outObject); } Result DebugTransientResourceHeap::synchronizeAndReset() diff --git a/tools/gfx/renderer-shared.cpp b/tools/gfx/renderer-shared.cpp index cb25079fb..d68ce4ee8 100644 --- a/tools/gfx/renderer-shared.cpp +++ b/tools/gfx/renderer-shared.cpp @@ -405,8 +405,13 @@ SlangResult RendererBase::queryInterface(SlangUUID const& uuid, void** outObject return SLANG_OK; } - *outObject = getInterface(uuid); - return SLANG_OK; + if (IDevice* device_ptr = getInterface(uuid)) + { + *outObject = device_ptr; + addRef(); + return SLANG_OK; + } + return SLANG_E_NO_INTERFACE; } IDevice* gfx::RendererBase::getInterface(const Guid& guid) |
