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
 }