Updated glslang.

This commit is contained in:
Бранимир Караџић
2026-01-01 20:32:02 -08:00
committed by Branimir Karadžić
parent 3fdf319b8b
commit 1addd1a3d7

View File

@@ -4287,10 +4287,13 @@ void Builder::accessChainStore(Id rvalue, Decoration nonUniform, spv::MemoryAcce
transferAccessChainSwizzle(true);
// MeshShadingEXT outputs don't support loads, so split swizzled stores
bool isMeshOutput = getStorageClass(accessChain.base) == StorageClass::Output &&
capabilities.find(spv::Capability::MeshShadingEXT) != capabilities.end();
// If a swizzle exists and is not full and is not dynamic, then the swizzle will be broken into individual stores.
if (accessChain.swizzle.size() > 0 &&
getNumTypeComponents(getResultingAccessChainType()) != accessChain.swizzle.size() &&
accessChain.component == NoResult) {
((getNumTypeComponents(getResultingAccessChainType()) != accessChain.swizzle.size() && accessChain.component == NoResult) || isMeshOutput)) {
for (unsigned int i = 0; i < accessChain.swizzle.size(); ++i) {
accessChain.indexChain.push_back(makeUintConstant(accessChain.swizzle[i]));
accessChain.instr = NoResult;