diff options
| author | Yong He <yonghe@outlook.com> | 2023-09-21 10:39:19 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-09-21 10:39:19 -0700 |
| commit | af8ce68e9fd7b6255b6e4e9e9524a285497116dc (patch) | |
| tree | e2dfffbacb63dd47f9af538103c8192f1d105162 /source/slang/slang-stdlib-textures.cpp | |
| parent | 85d40ed62f5ef6d38a0f898b7bd452cca0f65a5b (diff) | |
Misc SPIRV fixes. (#3220)
Co-authored-by: Yong He <yhe@nvidia.com>
Diffstat (limited to 'source/slang/slang-stdlib-textures.cpp')
| -rw-r--r-- | source/slang/slang-stdlib-textures.cpp | 19 |
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 ); |
