SpirvShader: Add support for DescriptorSet and Binding decorations Bug: b/126330097 Change-Id: Id705dc19bb3a114bf703ddc37b529d6ac89b4d52 Reviewed-on: https://swiftshader-review.googlesource.com/c/25549 Reviewed-by: Chris Forbes <chrisforbes@google.com> Tested-by: Ben Clayton <bclayton@google.com> Kokoro-Presubmit: kokoro <noreply+kokoro@google.com>
diff --git a/src/Pipeline/SpirvShader.cpp b/src/Pipeline/SpirvShader.cpp index 96f88f4..c8b57d7 100644 --- a/src/Pipeline/SpirvShader.cpp +++ b/src/Pipeline/SpirvShader.cpp
@@ -656,6 +656,14 @@ HasComponent = true; Component = arg; break; + case spv::DecorationDescriptorSet: + HasDescriptorSet = true; + DescriptorSet = arg; + break; + case spv::DecorationBinding: + HasBinding = true; + Binding = arg; + break; case spv::DecorationBuiltIn: HasBuiltIn = true; BuiltIn = static_cast<spv::BuiltIn>(arg); @@ -702,6 +710,18 @@ Component = src.Component; } + if (src.HasDescriptorSet) + { + HasDescriptorSet = true; + DescriptorSet = src.DescriptorSet; + } + + if (src.HasBinding) + { + HasBinding = true; + Binding = src.Binding; + } + Flat |= src.Flat; NoPerspective |= src.NoPerspective; Centroid |= src.Centroid;
diff --git a/src/Pipeline/SpirvShader.hpp b/src/Pipeline/SpirvShader.hpp index 96302d7..3b8d055 100644 --- a/src/Pipeline/SpirvShader.hpp +++ b/src/Pipeline/SpirvShader.hpp
@@ -271,9 +271,13 @@ { int32_t Location; int32_t Component; + int32_t DescriptorSet; + int32_t Binding; spv::BuiltIn BuiltIn; bool HasLocation : 1; bool HasComponent : 1; + bool HasDescriptorSet : 1; + bool HasBinding : 1; bool HasBuiltIn : 1; bool Flat : 1; bool Centroid : 1; @@ -282,10 +286,12 @@ bool BufferBlock : 1; Decorations() - : Location{-1}, Component{0}, BuiltIn{}, HasLocation{false}, HasComponent{false}, HasBuiltIn{false}, - Flat{false}, - Centroid{false}, NoPerspective{false}, Block{false}, - BufferBlock{false} + : Location{-1}, Component{0}, DescriptorSet{-1}, Binding{-1}, + BuiltIn{static_cast<spv::BuiltIn>(-1)}, + HasLocation{false}, HasComponent{false}, + HasDescriptorSet{false}, HasBinding{false}, + HasBuiltIn{false}, Flat{false}, Centroid{false}, + NoPerspective{false}, Block{false}, BufferBlock{false} { }