diff --git a/renderdoc/driver/shaders/spirv/spirv_reflect.cpp b/renderdoc/driver/shaders/spirv/spirv_reflect.cpp index 3a26578bd..06167d5c6 100644 --- a/renderdoc/driver/shaders/spirv/spirv_reflect.cpp +++ b/renderdoc/driver/shaders/spirv/spirv_reflect.cpp @@ -432,10 +432,10 @@ StructSizes CalculateStructProps(uint32_t emptyStructSize, const ShaderConstant if(matSize > 1) ret.extendedAlign = ret.baseAlign = c.type.matrixByteStride; - ret.scalarSize = ret.scalarAlign * RDCMAX(c.type.rows, (uint8_t)1) * - RDCMAX(c.type.columns, (uint8_t)1) * RDCMAX(c.type.elements, 1U); - ret.baseSize = ret.baseAlign * matSize * RDCMAX(c.type.elements, 1U); - ret.extendedSize = ret.extendedAlign * matSize * RDCMAX(c.type.elements, 1U); + ret.scalarSize = + ret.scalarAlign * RDCMAX(c.type.rows, (uint8_t)1) * RDCMAX(c.type.columns, (uint8_t)1); + ret.baseSize = ret.baseAlign * matSize; + ret.extendedSize = ret.extendedAlign * matSize; } else { @@ -483,6 +483,10 @@ StructSizes CalculateStructProps(uint32_t emptyStructSize, const ShaderConstant } } + ret.scalarSize *= RDCMAX(c.type.elements, 1U); + ret.baseSize *= RDCMAX(c.type.elements, 1U); + ret.extendedSize *= RDCMAX(c.type.elements, 1U); + return ret; } @@ -1875,6 +1879,10 @@ void Reflector::MakeConstantBlockVariables(rdcspv::StorageClass storage, const D else if(capabilities.find(rdcspv::Capability::StoragePushConstant16) != capabilities.end()) emptyStructSize = 2; } + else if(storage == rdcspv::StorageClass::TaskPayloadWorkgroupEXT) + { + return; + } for(size_t i = 0; i < cblock.size(); i++) { diff --git a/renderdoc/driver/vulkan/vk_postvs.cpp b/renderdoc/driver/vulkan/vk_postvs.cpp index 60c0d2be4..e0456c2d6 100644 --- a/renderdoc/driver/vulkan/vk_postvs.cpp +++ b/renderdoc/driver/vulkan/vk_postvs.cpp @@ -1510,13 +1510,18 @@ static void LayOutStorageStruct(rdcspv::Editor &editor, const rdcarray