From 271ae7165915cf9910e2de0224159ea0fdd8ce72 Mon Sep 17 00:00:00 2001 From: Ellie Hermaszewska Date: Mon, 3 Apr 2023 11:46:03 +0800 Subject: Fix several silently failing tests (#2767) * Add missing expected.txt for test * Diagnostics -> StdWriters in render test * Allow specifying several test prefixes to run `slang-test -- tests/foo tests/bar` * Squash warnings in some tests * Enable gfx debug layer in gfx test util Makes this issue present consistently: https://github.com/shader-slang/slang/issues/2766 * Allow DebugDevice to return interfaces instantiated by the debugged object * Check that we actaully have a shader cache for shader cache tests --------- Co-authored-by: Yong He --- tools/gfx/debug-layer/debug-device.cpp | 14 ++++++++++++++ tools/gfx/debug-layer/debug-device.h | 4 +++- 2 files changed, 17 insertions(+), 1 deletion(-) (limited to 'tools/gfx/debug-layer') diff --git a/tools/gfx/debug-layer/debug-device.cpp b/tools/gfx/debug-layer/debug-device.cpp index 7790149b6..45374b64f 100644 --- a/tools/gfx/debug-layer/debug-device.cpp +++ b/tools/gfx/debug-layer/debug-device.cpp @@ -26,6 +26,20 @@ using namespace Slang; namespace debug { +SlangResult DebugDevice::queryInterface(SlangUUID const& uuid, void** outObject) noexcept +{ + void* intf = getInterface(uuid); + if (intf) + { + addRef(); + *outObject = intf; + return SLANG_OK; + } + + // Fallback to trying to get the interface from the debugged object + return baseObject->queryInterface(uuid, outObject); +} + Result DebugDevice::getNativeDeviceHandles(InteropHandles* outHandles) { return baseObject->getNativeDeviceHandles(outHandles); diff --git a/tools/gfx/debug-layer/debug-device.h b/tools/gfx/debug-layer/debug-device.h index db07cdd1b..5b8424093 100644 --- a/tools/gfx/debug-layer/debug-device.h +++ b/tools/gfx/debug-layer/debug-device.h @@ -12,7 +12,9 @@ namespace debug class DebugDevice : public DebugObject { public: - SLANG_COM_OBJECT_IUNKNOWN_ALL; + SlangResult SLANG_MCALL queryInterface(SlangUUID const& uuid, void** outObject) noexcept override; + SLANG_COM_OBJECT_IUNKNOWN_ADD_REF; + SLANG_COM_OBJECT_IUNKNOWN_RELEASE; public: DebugDevice(); -- cgit v1.2.3