Implement VK_KHR_uniform_buffer_standard_layout
UniformBufferStandardLayout changes the alignment rules for uniform
buffers. This doesn't change SwiftShader's behavior, and is treated as
always enabled for the purposes of validating inputs to SPIRV-Tools.
Bug: b/169604082
Tests: dEQP-VK.ubo.*
Change-Id: I0ec59ceb0bf6cc487f37e292a04e875268c37185
Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/49868
Tested-by: Sean Risser <srisser@google.com>
Commit-Queue: Sean Risser <srisser@google.com>
Kokoro-Result: kokoro <noreply+kokoro@google.com>
Reviewed-by: Nicolas Capens <nicolascapens@google.com>
diff --git a/src/Vulkan/VkShaderModule.cpp b/src/Vulkan/VkShaderModule.cpp
index 59557da..e90b360 100644
--- a/src/Vulkan/VkShaderModule.cpp
+++ b/src/Vulkan/VkShaderModule.cpp
@@ -31,10 +31,11 @@
#if !defined(NDEBUG) || defined(DCHECK_ALWAYS_ON)
spvtools::SpirvTools spirvTools(SPIRV_VERSION);
- spvtools::ValidatorOptions options = {};
- options.SetScalarBlockLayout(true);
+ spvtools::ValidatorOptions validatorOptions = {};
+ validatorOptions.SetScalarBlockLayout(true); // VK_EXT_scalar_block_layout
+ validatorOptions.SetUniformBufferStandardLayout(true); // VK_KHR_uniform_buffer_standard_layout
- ASSERT(spirvTools.Validate(code, wordCount, options)); // The SPIR-V code passed to vkCreateShaderModule must be valid (b/158228522)
+ ASSERT(spirvTools.Validate(code, wordCount, validatorOptions)); // The SPIR-V code passed to vkCreateShaderModule must be valid (b/158228522)
#endif
}