fix(rhi): validate opengl compute uav set bindings

This commit is contained in:
2026-03-26 15:42:44 +08:00
parent 491fef940d
commit 18fa150843
4 changed files with 218 additions and 33 deletions

View File

@@ -368,7 +368,7 @@ TEST_P(RHITestFixture, PipelineLayout_OpenGLSeparatesOverlappingBindingsAcrossSe
GTEST_SKIP() << "OpenGL-specific binding point verification";
}
DescriptorSetLayoutBinding set0Bindings[3] = {};
DescriptorSetLayoutBinding set0Bindings[4] = {};
set0Bindings[0].binding = 0;
set0Bindings[0].type = static_cast<uint32_t>(DescriptorType::CBV);
set0Bindings[0].count = 1;
@@ -376,10 +376,13 @@ TEST_P(RHITestFixture, PipelineLayout_OpenGLSeparatesOverlappingBindingsAcrossSe
set0Bindings[1].type = static_cast<uint32_t>(DescriptorType::SRV);
set0Bindings[1].count = 1;
set0Bindings[2].binding = 0;
set0Bindings[2].type = static_cast<uint32_t>(DescriptorType::Sampler);
set0Bindings[2].type = static_cast<uint32_t>(DescriptorType::UAV);
set0Bindings[2].count = 1;
set0Bindings[3].binding = 0;
set0Bindings[3].type = static_cast<uint32_t>(DescriptorType::Sampler);
set0Bindings[3].count = 1;
DescriptorSetLayoutBinding set1Bindings[3] = {};
DescriptorSetLayoutBinding set1Bindings[4] = {};
set1Bindings[0].binding = 0;
set1Bindings[0].type = static_cast<uint32_t>(DescriptorType::CBV);
set1Bindings[0].count = 1;
@@ -387,14 +390,17 @@ TEST_P(RHITestFixture, PipelineLayout_OpenGLSeparatesOverlappingBindingsAcrossSe
set1Bindings[1].type = static_cast<uint32_t>(DescriptorType::SRV);
set1Bindings[1].count = 1;
set1Bindings[2].binding = 0;
set1Bindings[2].type = static_cast<uint32_t>(DescriptorType::Sampler);
set1Bindings[2].type = static_cast<uint32_t>(DescriptorType::UAV);
set1Bindings[2].count = 1;
set1Bindings[3].binding = 0;
set1Bindings[3].type = static_cast<uint32_t>(DescriptorType::Sampler);
set1Bindings[3].count = 1;
DescriptorSetLayoutDesc setLayouts[2] = {};
setLayouts[0].bindings = set0Bindings;
setLayouts[0].bindingCount = 3;
setLayouts[0].bindingCount = 4;
setLayouts[1].bindings = set1Bindings;
setLayouts[1].bindingCount = 3;
setLayouts[1].bindingCount = 4;
RHIPipelineLayoutDesc desc = {};
desc.setLayouts = setLayouts;
@@ -412,6 +418,8 @@ TEST_P(RHITestFixture, PipelineLayout_OpenGLSeparatesOverlappingBindingsAcrossSe
EXPECT_EQ(openGLLayout->GetConstantBufferBindingPoint(1, 0), 1u);
EXPECT_EQ(openGLLayout->GetShaderResourceBindingPoint(0, 0), 0u);
EXPECT_EQ(openGLLayout->GetShaderResourceBindingPoint(1, 0), 1u);
EXPECT_EQ(openGLLayout->GetUnorderedAccessBindingPoint(0, 0), 0u);
EXPECT_EQ(openGLLayout->GetUnorderedAccessBindingPoint(1, 0), 1u);
EXPECT_EQ(openGLLayout->GetSamplerBindingPoint(0, 0), 0u);
EXPECT_EQ(openGLLayout->GetSamplerBindingPoint(1, 0), 1u);