[spirv-writer] Declare extension when using vulkan memory model
This fixes one validation error Change-Id: I13ee67483ea211d394b51ed9ea29b6698af0acc5 Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/20622 Reviewed-by: dan sinclair <dsinclair@google.com>
This commit is contained in:
parent
e3bf49a9cf
commit
1be8d7f0d1
|
@ -128,8 +128,12 @@ Builder::~Builder() = default;
|
|||
|
||||
bool Builder::Build() {
|
||||
push_preamble(spv::Op::OpCapability, {Operand::Int(SpvCapabilityShader)});
|
||||
|
||||
// TODO(dneto): Stop using the Vulkan memory model. crbug.com/tint/63
|
||||
push_preamble(spv::Op::OpCapability,
|
||||
{Operand::Int(SpvCapabilityVulkanMemoryModel)});
|
||||
push_preamble(spv::Op::OpExtension,
|
||||
{Operand::String("SPV_KHR_vulkan_memory_model")});
|
||||
|
||||
for (const auto& imp : mod_->imports()) {
|
||||
GenerateImport(imp.get());
|
||||
|
|
|
@ -36,10 +36,11 @@ TEST_F(BuilderTest, InsertsPreambleWithImport) {
|
|||
|
||||
Builder b(&m);
|
||||
ASSERT_TRUE(b.Build());
|
||||
ASSERT_EQ(b.preamble().size(), 4u);
|
||||
ASSERT_EQ(b.preamble().size(), 5u);
|
||||
|
||||
EXPECT_EQ(DumpBuilder(b), R"(OpCapability Shader
|
||||
OpCapability VulkanMemoryModel
|
||||
OpExtension "SPV_KHR_vulkan_memory_model"
|
||||
%1 = OpExtInstImport "GLSL.std.450"
|
||||
OpMemoryModel Logical Vulkan
|
||||
)");
|
||||
|
@ -51,6 +52,7 @@ TEST_F(BuilderTest, InsertsPreambleWithoutImport) {
|
|||
ASSERT_TRUE(b.Build());
|
||||
EXPECT_EQ(DumpBuilder(b), R"(OpCapability Shader
|
||||
OpCapability VulkanMemoryModel
|
||||
OpExtension "SPV_KHR_vulkan_memory_model"
|
||||
OpMemoryModel Logical Vulkan
|
||||
)");
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue