summaryrefslogtreecommitdiffstats
path: root/source/slang/slang-stdlib-textures.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'source/slang/slang-stdlib-textures.cpp')
-rw-r--r--source/slang/slang-stdlib-textures.cpp19
1 files changed, 15 insertions, 4 deletions
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
);