diff options
author | Hans-Kristian Arntzen <post@arntzen-software.no> | 2020-06-18 12:37:24 +0300 |
---|---|---|
committer | Hans-Kristian Arntzen <post@arntzen-software.no> | 2020-06-18 12:49:03 +0300 |
commit | 03d4bcea68b07587f902a22eb20000b7c9aba830 (patch) | |
tree | 6eb08a049c2e3015a79862b34ee8b1670f1771f8 /spirv_cross.cpp | |
parent | 11832b6e14f3223df0c1f426d6162d6f0d008c53 (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.cpp | 7 |
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; } |