From 17d1a2c8c3ff6b357b99faaefff7caa7200be2f8 Mon Sep 17 00:00:00 2001 From: Gangzheng Tong Date: Wed, 9 Apr 2025 14:41:41 -0700 Subject: Get real value for typeAdapter (#6762) * Get real value for typeAdapter When the type is mismatch and typeAdapter is used, get the real value from typeAdapter so that we don't get nullptr for irValue. This fixes the assert if uint is used for SV_VertexID, which is an int in the system binding semantic. Fixes: #6525 * Add test case; add nullptr check --- source/slang/slang-ir-glsl-legalize.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'source/slang') diff --git a/source/slang/slang-ir-glsl-legalize.cpp b/source/slang/slang-ir-glsl-legalize.cpp index 455c924ca..802fc1eb4 100644 --- a/source/slang/slang-ir-glsl-legalize.cpp +++ b/source/slang/slang-ir-glsl-legalize.cpp @@ -3541,6 +3541,15 @@ void legalizeEntryPointParameterForGLSL( if (elem.key == key) { realGlobalVar = elem.val.irValue; + if (!realGlobalVar && + ScalarizedVal::Flavor::typeAdapter == elem.val.flavor) + { + if (auto typeAdapterVal = + as(elem.val.impl)) + { + realGlobalVar = typeAdapterVal->val.irValue; + } + } break; } } -- cgit v1.2.3