Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/KhronosGroup/SPIRV-Cross.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHans-Kristian Arntzen <post@arntzen-software.no>2020-06-18 12:37:24 +0300
committerHans-Kristian Arntzen <post@arntzen-software.no>2020-06-18 12:49:03 +0300
commit03d4bcea68b07587f902a22eb20000b7c9aba830 (patch)
tree6eb08a049c2e3015a79862b34ee8b1670f1771f8 /spirv_cross.cpp
parent11832b6e14f3223df0c1f426d6162d6f0d008c53 (diff)
MSL: Improve handling of array types in buffer objects.
When loading and storing array types which belong to buffer objects, we need to treat these values as not being value types. Also, need to handle array load/store from/to more address space combinations.
Diffstat (limited to 'spirv_cross.cpp')
-rw-r--r--spirv_cross.cpp7
1 files changed, 6 insertions, 1 deletions
diff --git a/spirv_cross.cpp b/spirv_cross.cpp
index 7c227a3d..f9b26a66 100644
--- a/spirv_cross.cpp
+++ b/spirv_cross.cpp
@@ -277,7 +277,12 @@ StorageClass Compiler::get_backing_variable_storage(uint32_t ptr)
{
auto *var = maybe_get_backing_variable(ptr);
if (var)
- return var->storage;
+ {
+ if (var->storage == StorageClassUniform && has_decoration(get<SPIRType>(var->basetype).self, DecorationBufferBlock))
+ return StorageClassStorageBuffer;
+ else
+ return var->storage;
+ }
else
return expression_type(ptr).storage;
}