From f1490526be567059a8e4b98aa41eef698065aee1 Mon Sep 17 00:00:00 2001 From: Jay Kwak <82421531+jkwak-work@users.noreply.github.com> Date: Thu, 6 Jun 2024 10:48:39 -0700 Subject: Remove unnecessary call to __requireComputeDerivative (#4283) * Remove unnecessary call to __requireComputeDerivative When SPIR-V uses operators whose name has a keyword, "Implicit", they require calling a function "__requireComputeDerivative()". When it uses "Explicit", the function doesn't need to be called. --- source/slang/glsl.meta.slang | 43 ------------------------------------------- source/slang/hlsl.meta.slang | 4 ++++ 2 files changed, 4 insertions(+), 43 deletions(-) (limited to 'source') diff --git a/source/slang/glsl.meta.slang b/source/slang/glsl.meta.slang index 729bf3822..1daf0ec07 100644 --- a/source/slang/glsl.meta.slang +++ b/source/slang/glsl.meta.slang @@ -2592,7 +2592,6 @@ public vector textureLod(__TextureImpl< [require(glsl_hlsl_spirv, texture_shadowlod)] public float textureLod(sampler2DShadow sampler, vec3 p, float lod) { - __requireComputeDerivative(); __target_switch { case glsl: __intrinsic_asm "textureLod"; @@ -2612,7 +2611,6 @@ public float textureLod(sampler2DShadow sampler, vec3 p, float lod) [require(glsl_hlsl_spirv, texture_shadowlod)] public float textureLod(sampler1DShadow sampler, vec3 p, float lod) { - __requireComputeDerivative(); __target_switch { case glsl: __intrinsic_asm "textureLod"; @@ -2632,7 +2630,6 @@ public float textureLod(sampler1DShadow sampler, vec3 p, float lod) [require(glsl_hlsl_spirv, texture_shadowlod)] public float textureLod(sampler1DArrayShadow sampler, vec3 p, float lod) { - __requireComputeDerivative(); __target_switch { case glsl: __intrinsic_asm "textureLod"; @@ -3225,7 +3222,6 @@ public vector textureLodOffset(__TextureImpl< [require(glsl_hlsl_spirv, texture_shadowlod)] public float textureLodOffset(sampler1DShadow sampler, vec3 p, float lod, constexpr int offset) { - __requireComputeDerivative(); __target_switch { case glsl: __intrinsic_asm "textureLodOffset"; @@ -3246,7 +3242,6 @@ public float textureLodOffset(sampler1DShadow sampler, vec3 p, float lod, conste [require(glsl_hlsl_spirv, texture_shadowlod)] public float textureLodOffset(sampler2DShadow sampler, vec3 p, float lod, constexpr ivec2 offset) { - __requireComputeDerivative(); __target_switch { case glsl: __intrinsic_asm "textureLodOffset"; @@ -3267,7 +3262,6 @@ public float textureLodOffset(sampler2DShadow sampler, vec3 p, float lod, conste [require(glsl_hlsl_spirv, texture_shadowlod)] public float textureLodOffset(sampler1DArrayShadow sampler, vec3 p, float lod, constexpr int offset) { - __requireComputeDerivative(); __target_switch { case glsl: __intrinsic_asm "textureLodOffset"; @@ -3293,7 +3287,6 @@ __generic [require(cpp_cuda_glsl_hlsl_spirv, texture_sm_4_1_fragment)] public vector textureProjLod(Sampler1D> sampler, vec2 p, float lod) { - __requireComputeDerivative(); __target_switch { case glsl: __intrinsic_asm "textureProjLod"; @@ -3310,7 +3303,6 @@ __generic [require(cpp_cuda_glsl_hlsl_spirv, texture_sm_4_1_fragment)] public vector textureProjLod(Sampler1D> sampler, vec4 p, float lod) { - __requireComputeDerivative(); __target_switch { case glsl: __intrinsic_asm "textureProjLod"; @@ -3331,7 +3323,6 @@ __generic [require(cpp_cuda_glsl_hlsl_spirv, texture_sm_4_1_fragment)] public vector textureProjLod(Sampler2D> sampler, vec3 p, float lod) { - __requireComputeDerivative(); __target_switch { case glsl: __intrinsic_asm "textureProjLod"; @@ -3348,7 +3339,6 @@ __generic [require(cpp_cuda_glsl_hlsl_spirv, texture_sm_4_1_fragment)] public vector textureProjLod(Sampler2D> sampler, vec4 p, float lod) { - __requireComputeDerivative(); __target_switch { case glsl: __intrinsic_asm "textureProjLod"; @@ -3369,7 +3359,6 @@ __generic [require(cpp_cuda_glsl_hlsl_spirv, texture_sm_4_1_fragment)] public vector textureProjLod(Sampler3D> sampler, vec4 p, float lod) { - __requireComputeDerivative(); __target_switch { case glsl: __intrinsic_asm "textureProjLod"; @@ -3385,7 +3374,6 @@ public vector textureProjLod(Sampler3D> sampler, vec4 p, float [require(glsl_hlsl_spirv, texture_shadowlod)] public float textureProjLod(sampler1DShadow sampler, vec4 p, float lod) { - __requireComputeDerivative(); __target_switch { case glsl: __intrinsic_asm "textureProjLod"; @@ -3406,7 +3394,6 @@ public float textureProjLod(sampler1DShadow sampler, vec4 p, float lod) [require(glsl_hlsl_spirv, texture_shadowlod)] public float textureProjLod(sampler2DShadow sampler, vec4 p, float lod) { - __requireComputeDerivative(); __target_switch { case glsl: __intrinsic_asm "textureProjLod"; @@ -3432,7 +3419,6 @@ __generic [require(glsl_hlsl_spirv, texture_sm_4_1_fragment)] public vector textureProjLodOffset(Sampler1D> sampler, vec2 p, float lod, constexpr int offset) { - __requireComputeDerivative(); __target_switch { case glsl: __intrinsic_asm "textureProjLodOffset"; @@ -3449,7 +3435,6 @@ __generic [require(glsl_hlsl_spirv, texture_sm_4_1_fragment)] public vector textureProjLodOffset(Sampler1D> sampler, vec4 p, float lod, constexpr int offset) { - __requireComputeDerivative(); __target_switch { case glsl: __intrinsic_asm "textureProjLodOffset"; @@ -3470,7 +3455,6 @@ __generic [require(glsl_hlsl_spirv, texture_sm_4_1_fragment)] public vector textureProjLodOffset(Sampler2D> sampler, vec3 p, float lod, constexpr ivec2 offset) { - __requireComputeDerivative(); __target_switch { case glsl: __intrinsic_asm "textureProjLodOffset"; @@ -3487,7 +3471,6 @@ __generic [require(glsl_hlsl_spirv, texture_sm_4_1_fragment)] public vector textureProjLodOffset(Sampler2D> sampler, vec4 p, float lod, constexpr ivec2 offset) { - __requireComputeDerivative(); __target_switch { case glsl: __intrinsic_asm "textureProjLodOffset"; @@ -3508,7 +3491,6 @@ __generic [require(glsl_hlsl_spirv, texture_sm_4_1_fragment)] public vector textureProjLodOffset(Sampler3D> sampler, vec4 p, float lod, constexpr ivec3 offset) { - __requireComputeDerivative(); __target_switch { case glsl: __intrinsic_asm "textureProjLodOffset"; @@ -3524,7 +3506,6 @@ public vector textureProjLodOffset(Sampler3D> sampler, vec4 p, [require(glsl_hlsl_spirv, texture_shadowlod)] public float textureProjLodOffset(sampler1DShadow sampler, vec4 p, float lod, constexpr int offset) { - __requireComputeDerivative(); __target_switch { case glsl: __intrinsic_asm "textureProjLodOffset"; @@ -3545,7 +3526,6 @@ public float textureProjLodOffset(sampler1DShadow sampler, vec4 p, float lod, co [require(glsl_hlsl_spirv, texture_shadowlod)] public float textureProjLodOffset(sampler2DShadow sampler, vec4 p, float lod, constexpr ivec2 offset) { - __requireComputeDerivative(); __target_switch { case glsl: __intrinsic_asm "textureProjLodOffset"; @@ -3597,7 +3577,6 @@ public vector textureGrad(__TextureImpl< [require(glsl_spirv, texture_shadowlod)] public float textureGrad(sampler1DShadow sampler, vec3 p, float dPdx, float dPdy) { - __requireComputeDerivative(); __target_switch { case glsl: __intrinsic_asm "textureGrad"; @@ -3615,7 +3594,6 @@ public float textureGrad(sampler1DShadow sampler, vec3 p, float dPdx, float dPdy [require(glsl_spirv, texture_shadowlod)] public float textureGrad(sampler1DArrayShadow sampler, vec3 p, float dPdx, float dPdy) { - __requireComputeDerivative(); __target_switch { case glsl: __intrinsic_asm "textureGrad"; @@ -3633,7 +3611,6 @@ public float textureGrad(sampler1DArrayShadow sampler, vec3 p, float dPdx, float [require(glsl_spirv, texture_shadowlod)] public float textureGrad(sampler2DShadow sampler, vec3 p, vec2 dPdx, vec2 dPdy) { - __requireComputeDerivative(); __target_switch { case glsl: __intrinsic_asm "textureGrad"; @@ -3651,7 +3628,6 @@ public float textureGrad(sampler2DShadow sampler, vec3 p, vec2 dPdx, vec2 dPdy) [require(glsl_spirv, texture_shadowlod_cube)] public float textureGrad(samplerCubeShadow sampler, vec4 p, vec3 dPdx, vec3 dPdy) { - __requireComputeDerivative(); __target_switch { case glsl: __intrinsic_asm "textureGrad"; @@ -3669,7 +3645,6 @@ public float textureGrad(samplerCubeShadow sampler, vec4 p, vec3 dPdx, vec3 dPdy [require(glsl_spirv, texture_shadowlod)] public float textureGrad(sampler2DArrayShadow sampler, vec4 p, vec2 dPdx, vec2 dPdy) { - __requireComputeDerivative(); __target_switch { case glsl: __intrinsic_asm "textureGrad"; @@ -3717,7 +3692,6 @@ public vector textureGradOffset(__TextureImpl< [require(glsl_spirv, texture_shadowlod)] public float textureGradOffset(sampler1DShadow sampler, vec3 p, float dPdx, float dPdy, constexpr int offset) { - __requireComputeDerivative(); __target_switch { case glsl: __intrinsic_asm "textureGradOffset"; @@ -3735,7 +3709,6 @@ public float textureGradOffset(sampler1DShadow sampler, vec3 p, float dPdx, floa [require(glsl_spirv, texture_shadowlod)] public float textureGradOffset(sampler2DShadow sampler, vec3 p, vec2 dPdx, vec2 dPdy, constexpr ivec2 offset) { - __requireComputeDerivative(); __target_switch { case glsl: __intrinsic_asm "textureGradOffset"; @@ -3753,7 +3726,6 @@ public float textureGradOffset(sampler2DShadow sampler, vec3 p, vec2 dPdx, vec2 [require(glsl_spirv, texture_shadowlod)] public float textureGradOffset(sampler1DArrayShadow sampler, vec3 p, float dPdx, float dPdy, constexpr int offset) { - __requireComputeDerivative(); __target_switch { case glsl: __intrinsic_asm "textureGradOffset"; @@ -3771,7 +3743,6 @@ public float textureGradOffset(sampler1DArrayShadow sampler, vec3 p, float dPdx, [require(glsl_spirv, texture_shadowlod)] public float textureGradOffset(sampler2DArrayShadow sampler, vec4 p, vec2 dPdx, vec2 dPdy, constexpr ivec2 offset) { - __requireComputeDerivative(); __target_switch { case glsl: __intrinsic_asm "textureGradOffset"; @@ -3794,7 +3765,6 @@ __generic [require(cpp_glsl_hlsl_spirv, texture_sm_4_1)] public vector textureProjGrad(Sampler1D> sampler, vec2 p, float dPdx, float dPdy) { - __requireComputeDerivative(); __target_switch { case glsl: __intrinsic_asm "textureProjGrad"; @@ -3811,7 +3781,6 @@ __generic [require(cpp_glsl_hlsl_spirv, texture_sm_4_1)] public vector textureProjGrad(Sampler1D> sampler, vec4 p, float dPdx, float dPdy) { - __requireComputeDerivative(); __target_switch { case glsl: __intrinsic_asm "textureProjGrad"; @@ -3832,7 +3801,6 @@ __generic [require(cpp_glsl_hlsl_spirv, texture_sm_4_1)] public vector textureProjGrad(Sampler2D> sampler, vec3 p, vec2 dPdx, vec2 dPdy) { - __requireComputeDerivative(); __target_switch { case glsl: __intrinsic_asm "textureProjGrad"; @@ -3849,7 +3817,6 @@ __generic [require(cpp_glsl_hlsl_spirv, texture_sm_4_1)] public vector textureProjGrad(Sampler2D> sampler, vec4 p, vec2 dPdx, vec2 dPdy) { - __requireComputeDerivative(); __target_switch { case glsl: __intrinsic_asm "textureProjGrad"; @@ -3870,7 +3837,6 @@ __generic [require(cpp_glsl_hlsl_spirv, texture_sm_4_1)] public vector textureProjGrad(Sampler3D> sampler, vec4 p, vec3 dPdx, vec3 dPdy) { - __requireComputeDerivative(); __target_switch { case glsl: __intrinsic_asm "textureProjGrad"; @@ -3886,7 +3852,6 @@ public vector textureProjGrad(Sampler3D> sampler, vec4 p, vec3 [require(glsl_spirv, texture_shadowlod)] public float textureProjGrad(sampler1DShadow sampler, vec4 p, float dPdx, float dPdy) { - __requireComputeDerivative(); __target_switch { case glsl: __intrinsic_asm "textureProjGrad"; @@ -3907,7 +3872,6 @@ public float textureProjGrad(sampler1DShadow sampler, vec4 p, float dPdx, float [require(glsl_spirv, texture_shadowlod)] public float textureProjGrad(sampler2DShadow sampler, vec4 p, vec2 dPdx, vec2 dPdy) { - __requireComputeDerivative(); __target_switch { case glsl: __intrinsic_asm "textureProjGrad"; @@ -3933,7 +3897,6 @@ __generic [require(cpp_glsl_hlsl_spirv, texture_sm_4_1)] public vector textureProjGradOffset(Sampler1D> sampler, vec2 p, float dPdx, float dPdy, constexpr int offset) { - __requireComputeDerivative(); __target_switch { case glsl: __intrinsic_asm "textureProjGradOffset"; @@ -3950,7 +3913,6 @@ __generic [require(cpp_glsl_hlsl_spirv, texture_sm_4_1)] public vector textureProjGradOffset(Sampler1D> sampler, vec4 p, float dPdx, float dPdy, constexpr int offset) { - __requireComputeDerivative(); __target_switch { case glsl: __intrinsic_asm "textureProjGradOffset"; @@ -3971,7 +3933,6 @@ __generic [require(cpp_glsl_hlsl_spirv, texture_sm_4_1)] public vector textureProjGradOffset(Sampler2D> sampler, vec3 p, vec2 dPdx, vec2 dPdy, constexpr ivec2 offset) { - __requireComputeDerivative(); __target_switch { case glsl: __intrinsic_asm "textureProjGradOffset"; @@ -3988,7 +3949,6 @@ __generic [require(cpp_glsl_hlsl_spirv, texture_sm_4_1)] public vector textureProjGradOffset(Sampler2D> sampler, vec4 p, vec2 dPdx, vec2 dPdy, constexpr ivec2 offset) { - __requireComputeDerivative(); __target_switch { case glsl: __intrinsic_asm "textureProjGradOffset"; @@ -4009,7 +3969,6 @@ __generic [require(cpp_glsl_hlsl_spirv, texture_sm_4_1)] public vector textureProjGradOffset(Sampler3D> sampler, vec4 p, vec3 dPdx, vec3 dPdy, constexpr ivec3 offset) { - __requireComputeDerivative(); __target_switch { case glsl: __intrinsic_asm "textureProjGradOffset"; @@ -4025,7 +3984,6 @@ public vector textureProjGradOffset(Sampler3D> sampler, vec4 p, [require(glsl_spirv, texture_shadowlod)] public float textureProjGradOffset(sampler1DShadow sampler, vec4 p, float dPdx, float dPdy, constexpr int offset) { - __requireComputeDerivative(); __target_switch { case glsl: __intrinsic_asm "textureProjGradOffset"; @@ -4046,7 +4004,6 @@ public float textureProjGradOffset(sampler1DShadow sampler, vec4 p, float dPdx, [require(glsl_spirv, texture_shadowlod)] public float textureProjGradOffset(sampler2DShadow sampler, vec4 p, vec2 dPdx, vec2 dPdy, constexpr ivec2 offset) { - __requireComputeDerivative(); __target_switch { case glsl: __intrinsic_asm "textureProjGradOffset"; diff --git a/source/slang/hlsl.meta.slang b/source/slang/hlsl.meta.slang index 72c8515b3..defb27ce3 100644 --- a/source/slang/hlsl.meta.slang +++ b/source/slang/hlsl.meta.slang @@ -740,6 +740,7 @@ extension __TextureImpl [require(glsl_hlsl_metal_spirv, texture_shadowlod)] float SampleCmp(vector location, float compareValue) { + __requireComputeDerivative(); __target_switch { case glsl: @@ -799,6 +800,7 @@ extension __TextureImpl [require(glsl_hlsl_metal_spirv, texture_shadowlod)] float SampleCmp(vector location, float compareValue, constexpr vector offset) { + __requireComputeDerivative(); __target_switch { case glsl: @@ -1325,6 +1327,7 @@ extension __TextureImpl [require(glsl_hlsl_metal_spirv, texture_shadowlod)] float SampleCmp(SamplerComparisonState s, vector location, float compareValue) { + __requireComputeDerivative(); __target_switch { case glsl: @@ -1426,6 +1429,7 @@ extension __TextureImpl [require(glsl_hlsl_metal_spirv, texture_shadowlod)] float SampleCmp(SamplerComparisonState s, vector location, float compareValue, constexpr vector offset) { + __requireComputeDerivative(); __target_switch { case glsl: -- cgit v1.2.3