From e50aac13e2c161d672b137a62f6d66820d0f9ff1 Mon Sep 17 00:00:00 2001 From: Jay Kwak <82421531+jkwak-work@users.noreply.github.com> Date: Wed, 11 Dec 2024 13:28:40 -0800 Subject: Update SPIRV submodules (#5815) * Update SPIRV submodules With the latest SPIR-V submodules, one of tests started failing: tests/gpu-feature/texture/query/footprint/nv-shader-texture-footprint.slang [ForceInline] is added to GLSL texture functions in order to inline %true and %false. Without it, the value was indirectly passed down via a function parameter, which broke the existing test. Also the test is modified to use -DAG, because the order unpredictably changed for Grad variants due to additional [ForceInline] marks for Gradient functions. A new validation check in SPIRV-Tools was causing a validation error: ``` error: line 324: [VUID-StandaloneSpirv-OpTypeImage-06924] Cannot store to OpTypeImage, OpTypeSampler, OpTypeSampledImage, or OpTypeAccelerationStructureKHR objects OpStore %17 %242 ``` It appears that this is a bug on SPIRV-Tools. A proper fix is proposed to Khronos/SPIRV-Tools: https://github.com/KhronosGroup/SPIRV-Tools/pull/5914 But this commit uses `shader-slang/SPIRV-Tools/fix_for_OpImageSampleFootprintNV` with a custom fix as a temporary solution: https://github.com/shader-slang/SPIRV-Tools/tree/fix_for_OpImageSampleFootprintNV --- source/slang/hlsl.meta.slang | 28 +++++++++++++++++++++------- 1 file changed, 21 insertions(+), 7 deletions(-) (limited to 'source') diff --git a/source/slang/hlsl.meta.slang b/source/slang/hlsl.meta.slang index 31500f028..35b88f9dc 100644 --- a/source/slang/hlsl.meta.slang +++ b/source/slang/hlsl.meta.slang @@ -19785,6 +19785,7 @@ ${ } [__NoSideEffect] + [ForceInline] __glsl_version(450) __glsl_extension(GL_NV_shader_texture_footprint) [require(glsl_spirv, texturefootprint)] @@ -19803,7 +19804,8 @@ ${ return spirv_asm { OpCapability ImageFootprintNV; OpExtension "SPV_NV_shader_image_footprint"; - %resultVal:$$__FootprintData = OpImageSampleFootprintNV &this $coords $granularity $useCoarseLevel; + %sampledImage : __sampledImageType(this) = OpSampledImage $this $sampler; + %resultVal:$$__FootprintData = OpImageSampleFootprintNV %sampledImage $coords $granularity $useCoarseLevel; OpStore &footprint %resultVal; result:$$bool = OpCompositeExtract %resultVal 0; }; @@ -19811,6 +19813,7 @@ ${ } [__NoSideEffect] + [ForceInline] __glsl_version(450) __glsl_extension(GL_NV_shader_texture_footprint) [require(glsl_spirv, texturefootprint)] @@ -19830,7 +19833,8 @@ ${ return spirv_asm { OpCapability ImageFootprintNV; OpExtension "SPV_NV_shader_image_footprint"; - %resultVal:$$__FootprintData = OpImageSampleFootprintNV &this $coords $granularity $useCoarseLevel Bias $bias; + %sampledImage : __sampledImageType(this) = OpSampledImage $this $sampler; + %resultVal:$$__FootprintData = OpImageSampleFootprintNV %sampledImage $coords $granularity $useCoarseLevel Bias $bias; OpStore &footprint %resultVal; result:$$bool = OpCompositeExtract %resultVal 0; }; @@ -19838,6 +19842,7 @@ ${ } [__NoSideEffect] + [ForceInline] __glsl_version(450) __glsl_extension(GL_NV_shader_texture_footprint) __glsl_extension(GL_ARB_sparse_texture_clamp) @@ -19859,7 +19864,8 @@ ${ OpCapability ImageFootprintNV; OpCapability MinLod; OpExtension "SPV_NV_shader_image_footprint"; - %resultVal:$$__FootprintData = OpImageSampleFootprintNV &this $coords $granularity $useCoarseLevel MinLod $lodClamp; + %sampledImage : __sampledImageType(this) = OpSampledImage $this $sampler; + %resultVal:$$__FootprintData = OpImageSampleFootprintNV %sampledImage $coords $granularity $useCoarseLevel MinLod $lodClamp; OpStore &footprint %resultVal; result:$$bool = OpCompositeExtract %resultVal 0; }; @@ -19867,6 +19873,7 @@ ${ } [__NoSideEffect] + [ForceInline] __glsl_version(450) __glsl_extension(GL_NV_shader_texture_footprint) __glsl_extension(GL_ARB_sparse_texture_clamp) @@ -19889,7 +19896,8 @@ ${ OpCapability ImageFootprintNV; OpCapability MinLod; OpExtension "SPV_NV_shader_image_footprint"; - %resultVal:$$__FootprintData = OpImageSampleFootprintNV &this $coords $granularity $useCoarseLevel Bias|MinLod $bias $lodClamp; + %sampledImage : __sampledImageType(this) = OpSampledImage $this $sampler; + %resultVal:$$__FootprintData = OpImageSampleFootprintNV %sampledImage $coords $granularity $useCoarseLevel Bias|MinLod $bias $lodClamp; OpStore &footprint %resultVal; result:$$bool = OpCompositeExtract %resultVal 0; }; @@ -19897,6 +19905,7 @@ ${ } [__NoSideEffect] + [ForceInline] __glsl_version(450) __glsl_extension(GL_NV_shader_texture_footprint) [__requiresNVAPI] @@ -19917,7 +19926,8 @@ ${ return spirv_asm { OpCapability ImageFootprintNV; OpExtension "SPV_NV_shader_image_footprint"; - %resultVal:$$__FootprintData = OpImageSampleFootprintNV &this $coords $granularity $useCoarseLevel Lod $lod; + %sampledImage : __sampledImageType(this) = OpSampledImage $this $sampler; + %resultVal:$$__FootprintData = OpImageSampleFootprintNV %sampledImage $coords $granularity $useCoarseLevel Lod $lod; OpStore &footprint %resultVal; result:$$bool = OpCompositeExtract %resultVal 0; }; @@ -19929,6 +19939,7 @@ ${{{ // Texture sampling with gradient is only available for 2D textures. }}} [__NoSideEffect] + [ForceInline] __glsl_version(450) __glsl_extension(GL_NV_shader_texture_footprint) [__requiresNVAPI] @@ -19950,7 +19961,8 @@ ${{{ return spirv_asm { OpCapability ImageFootprintNV; OpExtension "SPV_NV_shader_image_footprint"; - %resultVal:$$__FootprintData = OpImageSampleFootprintNV &this $coords $granularity $useCoarseLevel Grad $dx $dy; + %sampledImage : __sampledImageType(this) = OpSampledImage $this $sampler; + %resultVal:$$__FootprintData = OpImageSampleFootprintNV %sampledImage $coords $granularity $useCoarseLevel Grad $dx $dy; OpStore &footprint %resultVal; result:$$bool = OpCompositeExtract %resultVal 0; }; @@ -19958,6 +19970,7 @@ ${{{ } [__NoSideEffect] + [ForceInline] __glsl_version(450) __glsl_extension(GL_NV_shader_texture_footprint) __glsl_extension(GL_ARB_sparse_texture_clamp) @@ -19981,7 +19994,8 @@ ${{{ OpCapability ImageFootprintNV; OpCapability MinLod; OpExtension "SPV_NV_shader_image_footprint"; - %resultVal:$$__FootprintData = OpImageSampleFootprintNV &this $coords $granularity $useCoarseLevel Grad|MinLod $dx $dy $lodClamp; + %sampledImage : __sampledImageType(this) = OpSampledImage $this $sampler; + %resultVal:$$__FootprintData = OpImageSampleFootprintNV %sampledImage $coords $granularity $useCoarseLevel Grad|MinLod $dx $dy $lodClamp; OpStore &footprint %resultVal; result:$$bool = OpCompositeExtract %resultVal 0; }; -- cgit v1.2.3