From 75d65d36608cf4653490f0a04a17d1ee057b47a6 Mon Sep 17 00:00:00 2001 From: Yong He Date: Mon, 18 Nov 2024 15:21:13 -0800 Subject: Remove "GL_EXT_samplerless_texture_functions" from combined sampler functions. (#5585) --- source/slang/hlsl.meta.slang | 41 ++++++++++++++++++++++++++--------------- 1 file changed, 26 insertions(+), 15 deletions(-) (limited to 'source') diff --git a/source/slang/hlsl.meta.slang b/source/slang/hlsl.meta.slang index 90b2a17b9..babb1ae20 100644 --- a/source/slang/hlsl.meta.slang +++ b/source/slang/hlsl.meta.slang @@ -3029,7 +3029,6 @@ extension _Texture static const int isMS = 0; static const int access = $(kCoreModule_ResourceAccessReadOnly); //@public: - __glsl_extension(GL_EXT_samplerless_texture_functions) [__readNone] [require(glsl, texture_sm_4_1_samplerless)] T __glsl_load(vector location) @@ -3037,7 +3036,6 @@ extension _Texture __intrinsic_asm "$ctexelFetch($0, ($1), 0)$z"; } - __glsl_extension(GL_EXT_samplerless_texture_functions) [__readNone] [ForceInline] [require(cpp_glsl_hlsl_metal_spirv_wgsl, texture_sm_4_1_samplerless)] @@ -3110,6 +3108,8 @@ extension _Texture static_assert(false, "Unsupported 'Load' of 'texture' for 'metal' target"); __intrinsic_asm ""; case glsl: + if (isCombined == 0) + __requireGLSLExtension("GL_EXT_samplerless_texture_functions"); __intrinsic_asm "$ctexelFetch($0, ($1).$w1b, ($1).$w1e)$z"; case spirv: const int lodLoc = Shape.dimensions+isArray; @@ -3161,7 +3161,6 @@ extension _Texture } } - __glsl_extension(GL_EXT_samplerless_texture_functions) [__readNone] [ForceInline] [require(cpp_glsl_hlsl_spirv, texture_sm_4_1_samplerless)] @@ -3171,9 +3170,11 @@ extension _Texture { case cpp: case hlsl: - __intrinsic_asm ".Load"; + __intrinsic_asm ".Load"; case glsl: - __intrinsic_asm "$ctexelFetchOffset($0, ($1).$w1b, ($1).$w1e, ($2))$z"; + if (isCombined == 0) + __requireGLSLExtension("GL_EXT_samplerless_texture_functions"); + __intrinsic_asm "$ctexelFetchOffset($0, ($1).$w1b, ($1).$w1e, ($2))$z"; case spirv: const int lodLoc = Shape.dimensions+isArray; let coord = __vectorReshape(location); @@ -3214,7 +3215,6 @@ extension _Texture __subscript(vector location) -> T { - __glsl_extension(GL_EXT_samplerless_texture_functions) [__readNone] [ForceInline] [require(cpp_glsl_hlsl_metal_spirv_wgsl, texture_sm_4_1_samplerless)] @@ -3228,6 +3228,8 @@ extension _Texture case metal: return Load(__makeVector(location, 0)); case glsl: + if (isCombined == 0) + __requireGLSLExtension("GL_EXT_samplerless_texture_functions"); return __glsl_load(location); case spirv: if (isCombined != 0) @@ -3263,7 +3265,6 @@ extension _Texture static const int access = $(kCoreModule_ResourceAccessReadOnly); static const int isMS = 1; //@public: - __glsl_extension(GL_EXT_samplerless_texture_functions) [__readNone] [ForceInline] [require(cpp_glsl_hlsl_metal_spirv_wgsl, texture_sm_4_1_samplerless)] @@ -3303,6 +3304,8 @@ extension _Texture // TODO: This needs to be handled by the capability system __intrinsic_asm ""; case glsl: + if (isCombined == 0) + __requireGLSLExtension("GL_EXT_samplerless_texture_functions"); __intrinsic_asm "$ctexelFetch($0, $1, ($2))$z"; case spirv: if (isCombined != 0) @@ -3340,7 +3343,6 @@ extension _Texture return Load(__vectorReshape(locationAndSampleIndex), locationAndSampleIndex[Shape.dimensions + isArray]); } - __glsl_extension(GL_EXT_samplerless_texture_functions) [__readNone] [ForceInline] [require(cpp_glsl_hlsl_spirv, texture_sm_4_1_samplerless)] @@ -3352,6 +3354,8 @@ extension _Texture case hlsl: __intrinsic_asm ".Load"; case glsl: + if (isCombined == 0) + __requireGLSLExtension("GL_EXT_samplerless_texture_functions"); __intrinsic_asm "$ctexelFetchOffset($0, $1, ($2), ($3))$z"; case spirv: if (isCombined != 0) @@ -3390,7 +3394,6 @@ extension _Texture __subscript(vector location) -> T { - __glsl_extension(GL_EXT_samplerless_texture_functions) [__readNone] [ForceInline] [require(cpp_glsl_hlsl_metal_spirv_wgsl, texture_sm_4_1_samplerless)] @@ -3402,16 +3405,18 @@ extension _Texture case hlsl: __intrinsic_asm "($0).sample[$1]"; case metal: - case glsl: case spirv: case wgsl: return Load(location, 0); + case glsl: + if (isCombined == 0) + __requireGLSLExtension("GL_EXT_samplerless_texture_functions"); + return Load(location, 0); } } } __subscript(vector location, int sampleIndex) -> T { - __glsl_extension(GL_EXT_samplerless_texture_functions) [__readNone] [ForceInline] [require(cpp_glsl_hlsl_metal_spirv_wgsl, texture_sm_4_1_samplerless)] @@ -3423,10 +3428,13 @@ extension _Texture case hlsl: __intrinsic_asm "($0).sample[$2][$1]"; case metal: - case glsl: case spirv: case wgsl: return Load(location, sampleIndex); + case glsl: + if (isCombined == 0) + __requireGLSLExtension("GL_EXT_samplerless_texture_functions"); + return Load(location, sampleIndex); } } } @@ -15027,7 +15035,9 @@ extension _Texture __target_switch { case hlsl: __intrinsic_asm ".GetDimensions"; - case glsl: __intrinsic_asm "($1 = $(glslTextureSizeFunc)($0))"; + case glsl: + __requireGLSLExtension("GL_EXT_samplerless_texture_functions"); + __intrinsic_asm "($1 = $(glslTextureSizeFunc)($0))"; case metal: __intrinsic_asm "(*($1) = $0.get_width())"; case spirv: dim = spirv_asm { @@ -15037,7 +15047,6 @@ extension _Texture } } - __glsl_extension(GL_EXT_samplerless_texture_functions) $(isReadOnly?"[__readNone] ":"") $(requireToSet) T Load(int location) @@ -15046,7 +15055,9 @@ extension _Texture { case hlsl: __intrinsic_asm ".Load"; case metal: __intrinsic_asm "$c$0.read(uint($1))$z"; - case glsl: __intrinsic_asm "$(glslLoadFuncName)($0, $1)$z"; + case glsl: + __requireGLSLExtension("GL_EXT_samplerless_texture_functions"); + __intrinsic_asm "$(glslLoadFuncName)($0, $1)$z"; case spirv: return spirv_asm { %sampled:__sampledType(T) = $(spvLoadInstName) $this $location; __truncate $$T result __sampledType(T) %sampled; -- cgit v1.2.3