From af8ce68e9fd7b6255b6e4e9e9524a285497116dc Mon Sep 17 00:00:00 2001 From: Yong He Date: Thu, 21 Sep 2023 10:39:19 -0700 Subject: Misc SPIRV fixes. (#3220) Co-authored-by: Yong He --- source/slang/slang-stdlib-textures.cpp | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) (limited to 'source/slang/slang-stdlib-textures.cpp') diff --git a/source/slang/slang-stdlib-textures.cpp b/source/slang/slang-stdlib-textures.cpp index bec3a7155..76ca51380 100644 --- a/source/slang/slang-stdlib-textures.cpp +++ b/source/slang/slang-stdlib-textures.cpp @@ -543,12 +543,23 @@ void TextureTypeInfo::writeQueryFunctions() } } -static String spirvReadIntrinsic() +static String spirvReadIntrinsic(SlangResourceAccess access) { StringBuilder spirvBuilder; const char* i = " "; - spirvBuilder << i << "%sampled : __sampledType(T) = OpImageRead $this $location;\n"; - spirvBuilder << i << "__truncate $$T result __sampledType(T) %sampled;"; + switch (access) + { + case SLANG_RESOURCE_ACCESS_NONE: + case SLANG_RESOURCE_ACCESS_READ: + spirvBuilder << i << "%sampled : __sampledType(T) = OpImageFetch $this $location;\n"; + spirvBuilder << i << "__truncate $$T result __sampledType(T) %sampled;"; + break; + + default: + spirvBuilder << i << "%sampled : __sampledType(T) = OpImageRead $this $location;\n"; + spirvBuilder << i << "__truncate $$T result __sampledType(T) %sampled;"; + break; + } return spirvBuilder; } @@ -663,7 +674,7 @@ void TextureTypeInfo::writeSubscriptFunctions() "operator[]", "get", glslBuilder, - spirvReadIntrinsic(), + spirvReadIntrinsic(access), cudaBuilder ); -- cgit v1.2.3