diff options
| author | ArielG-NV <159081215+ArielG-NV@users.noreply.github.com> | 2024-06-14 12:56:59 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-06-14 09:56:59 -0700 |
| commit | fdef653ab5b38ac78d355d2f0148c6d77e784a8c (patch) | |
| tree | 5319d02e0678b39321868fd93befbfa7062d7726 /source/slang | |
| parent | 33e81a03115dad223b244ca689e2abdbf26641f7 (diff) | |
Improve Direct SPIRV Backend Test Coverage (#4396)
'raytracing' and 'texture-footprint' tests
fixed texture-footprint bug
changed when we emit raytracing/rayquery extensions with glsl backend (to reduce incorrect extension emitting)
Diffstat (limited to 'source/slang')
| -rw-r--r-- | source/slang/hlsl.meta.slang | 21 | ||||
| -rw-r--r-- | source/slang/slang-emit-glsl.cpp | 5 | ||||
| -rw-r--r-- | source/slang/slang-emit-spirv.cpp | 4 | ||||
| -rw-r--r-- | source/slang/slang-profile.cpp | 16 | ||||
| -rw-r--r-- | source/slang/slang-profile.h | 2 |
5 files changed, 31 insertions, 17 deletions
diff --git a/source/slang/hlsl.meta.slang b/source/slang/hlsl.meta.slang index 10d183da2..c85b9c0ce 100644 --- a/source/slang/hlsl.meta.slang +++ b/source/slang/hlsl.meta.slang @@ -19209,8 +19209,7 @@ ${ return spirv_asm { OpCapability ImageFootprintNV; OpExtension "SPV_NV_shader_image_footprint"; - %sampledImage:__sampledImageType(this) = OpSampledImage $this $sampler; - %resultVal:$$__FootprintData = OpImageSampleFootprintNV %sampledImage $coords $granularity $useCoarseLevel; + %resultVal:$$__FootprintData = OpImageSampleFootprintNV &this $coords $granularity $useCoarseLevel; OpStore &footprint %resultVal; result:$$bool = OpCompositeExtract %resultVal 0; }; @@ -19237,8 +19236,7 @@ ${ return spirv_asm { OpCapability ImageFootprintNV; OpExtension "SPV_NV_shader_image_footprint"; - %sampledImage:__sampledImageType(this) = OpSampledImage $this $sampler; - %resultVal:$$__FootprintData = OpImageSampleFootprintNV %sampledImage $coords $granularity $useCoarseLevel Bias $bias; + %resultVal:$$__FootprintData = OpImageSampleFootprintNV &this $coords $granularity $useCoarseLevel Bias $bias; OpStore &footprint %resultVal; result:$$bool = OpCompositeExtract %resultVal 0; }; @@ -19267,8 +19265,7 @@ ${ OpCapability ImageFootprintNV; OpCapability MinLod; OpExtension "SPV_NV_shader_image_footprint"; - %sampledImage:__sampledImageType(this) = OpSampledImage $this $sampler; - %resultVal:$$__FootprintData = OpImageSampleFootprintNV %sampledImage $coords $granularity $useCoarseLevel MinLod $lodClamp; + %resultVal:$$__FootprintData = OpImageSampleFootprintNV &this $coords $granularity $useCoarseLevel MinLod $lodClamp; OpStore &footprint %resultVal; result:$$bool = OpCompositeExtract %resultVal 0; }; @@ -19298,8 +19295,7 @@ ${ OpCapability ImageFootprintNV; OpCapability MinLod; OpExtension "SPV_NV_shader_image_footprint"; - %sampledImage:__sampledImageType(this) = OpSampledImage $this $sampler; - %resultVal:$$__FootprintData = OpImageSampleFootprintNV %sampledImage $coords $granularity $useCoarseLevel Bias|MinLod $bias $lodClamp; + %resultVal:$$__FootprintData = OpImageSampleFootprintNV &this $coords $granularity $useCoarseLevel Bias|MinLod $bias $lodClamp; OpStore &footprint %resultVal; result:$$bool = OpCompositeExtract %resultVal 0; }; @@ -19327,8 +19323,7 @@ ${ return spirv_asm { OpCapability ImageFootprintNV; OpExtension "SPV_NV_shader_image_footprint"; - %sampledImage:__sampledImageType(this) = OpSampledImage $this $sampler; - %resultVal:$$__FootprintData = OpImageSampleFootprintNV %sampledImage $coords $granularity $useCoarseLevel Lod $lod; + %resultVal:$$__FootprintData = OpImageSampleFootprintNV &this $coords $granularity $useCoarseLevel Lod $lod; OpStore &footprint %resultVal; result:$$bool = OpCompositeExtract %resultVal 0; }; @@ -19361,8 +19356,7 @@ ${{{ return spirv_asm { OpCapability ImageFootprintNV; OpExtension "SPV_NV_shader_image_footprint"; - %sampledImage:__sampledImageType(this) = OpSampledImage $this $sampler; - %resultVal:$$__FootprintData = OpImageSampleFootprintNV %sampledImage $coords $granularity $useCoarseLevel Grad $dx $dy; + %resultVal:$$__FootprintData = OpImageSampleFootprintNV &this $coords $granularity $useCoarseLevel Grad $dx $dy; OpStore &footprint %resultVal; result:$$bool = OpCompositeExtract %resultVal 0; }; @@ -19393,8 +19387,7 @@ ${{{ OpCapability ImageFootprintNV; OpCapability MinLod; OpExtension "SPV_NV_shader_image_footprint"; - %sampledImage:__sampledImageType(this) = OpSampledImage $this $sampler; - %resultVal:$$__FootprintData = OpImageSampleFootprintNV %sampledImage $coords $granularity $useCoarseLevel Grad|MinLod $dx $dy $lodClamp; + %resultVal:$$__FootprintData = OpImageSampleFootprintNV &this $coords $granularity $useCoarseLevel Grad|MinLod $dx $dy $lodClamp; OpStore &footprint %resultVal; result:$$bool = OpCompositeExtract %resultVal 0; }; diff --git a/source/slang/slang-emit-glsl.cpp b/source/slang/slang-emit-glsl.cpp index c788d9cbf..2a7f22905 100644 --- a/source/slang/slang-emit-glsl.cpp +++ b/source/slang/slang-emit-glsl.cpp @@ -2591,7 +2591,10 @@ void GLSLSourceEmitter::emitSimpleTypeImpl(IRType* type) { case kIROp_RaytracingAccelerationStructureType: { - _requireRayQuery(); + if (!isRaytracingStage(m_entryPointStage)) + _requireRayQuery(); + else + _requireRayTracing(); m_writer->emit("accelerationStructureEXT"); break; } diff --git a/source/slang/slang-emit-spirv.cpp b/source/slang/slang-emit-spirv.cpp index df60feecf..3ee0d9241 100644 --- a/source/slang/slang-emit-spirv.cpp +++ b/source/slang/slang-emit-spirv.cpp @@ -3590,8 +3590,8 @@ struct SPIRVEmitContext case kIROp_VulkanRayPayloadDecoration: case kIROp_VulkanRayPayloadInDecoration: // needed since GLSL will not set optypes accordingly, but will keep the decoration - ensureExtensionDeclaration(UnownedStringSlice("SPV_KHR_ray_query")); - requireSPIRVCapability(SpvCapabilityRayQueryKHR); + ensureExtensionDeclaration(UnownedStringSlice("SPV_KHR_ray_tracing")); + requireSPIRVCapability(SpvCapabilityRayTracingKHR); isRayTracingObject = true; break; case kIROp_InterpolationModeDecoration: diff --git a/source/slang/slang-profile.cpp b/source/slang/slang-profile.cpp index e5ce6fde3..9b7112b1f 100644 --- a/source/slang/slang-profile.cpp +++ b/source/slang/slang-profile.cpp @@ -14,6 +14,22 @@ ProfileFamily getProfileFamily(ProfileVersion version) } } +bool isRaytracingStage(Stage inStage) +{ + switch (inStage) + { + case Stage::RayGeneration: + case Stage::Miss: + case Stage::Intersection: + case Stage::ClosestHit: + case Stage::Callable: + case Stage::AnyHit: + return true; + default: + return false; + } +} + const char* getStageName(Stage stage) { switch(stage) diff --git a/source/slang/slang-profile.h b/source/slang/slang-profile.h index 9a164805b..55855b91d 100644 --- a/source/slang/slang-profile.h +++ b/source/slang/slang-profile.h @@ -56,6 +56,8 @@ namespace Slang }; + bool isRaytracingStage(Stage inStage); + const char* getStageName(Stage stage); void printDiagnosticArg(StringBuilder& sb, Stage val); |
