From 43d0c2100ef1a5df4b54525e50eb29fe7c39ec16 Mon Sep 17 00:00:00 2001 From: Gangzheng Tong Date: Tue, 8 Jul 2025 23:44:56 -0700 Subject: Convert gfx unit tests and examples to use slang-rhi (#7577) * Port first gfx unit test to slang-rhi * port triangle example to use slang-rhi * port platform-test to slang-rhi * Update platform-test to throttle mouse move events * port gpu-printing example to use slang-rhi * port model-viewer example to use slang-rhi * port ray-tracing example to use slang-rhi * port ray-tracing pipeline example to use slang-rhi * port reflection parameter blocks example to use slang-rhi * port shader-object example to use slang-rhi * port shader-toy example to use slang-rhi * Port most of tests to slang-rhi * port link-time-constant-array-size to use slang-rhi * Fix tests and find matching tests in slang-rhi * port autodiff-texture * remove gfx target; port nv-aftermath-example * update include path for shader-cursor.h * Disabled 2 more ported tests * fix build error * remove gfx test * put slang-rhi (static-lib) before slang (shared) * format code (#7621) Co-authored-by: slangbot <186143334+slangbot@users.noreply.github.com> * add debug callback * format code (#7649) Co-authored-by: slangbot <186143334+slangbot@users.noreply.github.com> * Address review comments; revert back to use SLANG_CHECK_MSG --------- Co-authored-by: slangbot Co-authored-by: slangbot <186143334+slangbot@users.noreply.github.com> --- tools/gfx-unit-test/link-time-type-layout.cpp | 27 +++++++++++++-------------- 1 file changed, 13 insertions(+), 14 deletions(-) (limited to 'tools/gfx-unit-test/link-time-type-layout.cpp') diff --git a/tools/gfx-unit-test/link-time-type-layout.cpp b/tools/gfx-unit-test/link-time-type-layout.cpp index c1997b18a..c5c044acd 100644 --- a/tools/gfx-unit-test/link-time-type-layout.cpp +++ b/tools/gfx-unit-test/link-time-type-layout.cpp @@ -1,9 +1,9 @@ #include "core/slang-blob.h" #include "gfx-test-util.h" -#include "slang-gfx.h" +#include "slang-rhi.h" #include "unit-test/slang-unit-test.h" -using namespace gfx; +using namespace rhi; namespace gfx_test { @@ -17,8 +17,8 @@ static void diagnoseIfNeeded(Slang::ComPtr& diagnosticsBlob) } static Slang::Result loadSpirvProgram( - gfx::IDevice* device, - Slang::ComPtr& outShaderProgram, + rhi::IDevice* device, + Slang::ComPtr& outShaderProgram, slang::ProgramLayout*& slangReflection) { // main.slang: declares the interface and extern struct S, and the vertex shader. @@ -88,9 +88,9 @@ static Slang::Result loadSpirvProgram( slangReflection = composedProgram->getLayout(); // Create a shader program that will generate SPIRV code. - gfx::IShaderProgram::Desc programDesc = {}; + ShaderProgramDesc programDesc = {}; programDesc.slangGlobalScope = composedProgram.get(); - auto shaderProgram = device->createProgram(programDesc); + auto shaderProgram = device->createShaderProgram(programDesc); outShaderProgram = shaderProgram; // Force SPIRV generation by explicitly requesting it @@ -201,9 +201,9 @@ static void validateStructSLayout(UnitTestContext* context, slang::ProgramLayout SLANG_CHECK_MSG(foundFooField, "Could not find field 'foo' in struct S"); } -void linkTimeTypeLayoutImpl(gfx::IDevice* device, UnitTestContext* context) +void linkTimeTypeLayoutImpl(rhi::IDevice* device, UnitTestContext* context) { - Slang::ComPtr shaderProgram; + Slang::ComPtr shaderProgram; slang::ProgramLayout* slangReflection = nullptr; auto result = loadSpirvProgram(device, shaderProgram, slangReflection); @@ -213,15 +213,14 @@ void linkTimeTypeLayoutImpl(gfx::IDevice* device, UnitTestContext* context) validateStructSLayout(context, slangReflection); // Create a graphics pipeline to verify SPIRV code generation works - GraphicsPipelineStateDesc pipelineDesc = {}; + RenderPipelineDesc pipelineDesc = {}; pipelineDesc.program = shaderProgram.get(); // We need to set up a minimal pipeline state for a vertex shader - pipelineDesc.primitiveType = PrimitiveType::Triangle; + pipelineDesc.primitiveTopology = PrimitiveTopology::TriangleList; - ComPtr pipelineState; - auto pipelineResult = - device->createGraphicsPipelineState(pipelineDesc, pipelineState.writeRef()); + ComPtr pipelineState; + auto pipelineResult = device->createRenderPipeline(pipelineDesc, pipelineState.writeRef()); SLANG_CHECK(SLANG_SUCCEEDED(pipelineResult)); } @@ -239,7 +238,7 @@ void linkTimeTypeLayoutImpl(gfx::IDevice* device, UnitTestContext* context) SLANG_UNIT_TEST(linkTimeTypeLayout) { - runTestImpl(linkTimeTypeLayoutImpl, unitTestContext, Slang::RenderApiFlag::Vulkan); + runTestImpl(linkTimeTypeLayoutImpl, unitTestContext, DeviceType::Vulkan); } } // namespace gfx_test -- cgit v1.2.3