Fix BindGroupLayoutEntry validation message for no bindings types set
Fixed: dawn:1318 Change-Id: I9c5953d77c9758f0814fa50a98f5f813daf5e705 Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/83061 Reviewed-by: Brandon Jones <bajones@chromium.org> Commit-Queue: Austin Eng <enga@chromium.org>
This commit is contained in:
parent
1a73be4107
commit
5073fb5685
|
@ -141,6 +141,10 @@ namespace dawn::native {
|
|||
bindingType = BindingInfoType::ExternalTexture;
|
||||
}
|
||||
|
||||
DAWN_INVALID_IF(bindingMemberCount == 0,
|
||||
"BindGroupLayoutEntry had none of buffer, sampler, texture, "
|
||||
"storageTexture, or externalTexture set");
|
||||
|
||||
DAWN_INVALID_IF(bindingMemberCount != 1,
|
||||
"BindGroupLayoutEntry had more than one of buffer, sampler, texture, "
|
||||
"storageTexture, or externalTexture set");
|
||||
|
|
|
@ -964,6 +964,33 @@ TEST_F(BindGroupLayoutValidationTest, DynamicAndTypeCompatibility) {
|
|||
});
|
||||
}
|
||||
|
||||
// Test that it is invalid to create a BGL with more than one binding type set.
|
||||
TEST_F(BindGroupLayoutValidationTest, BindGroupLayoutEntryTooManySet) {
|
||||
wgpu::BindGroupLayoutEntry entry = {};
|
||||
entry.binding = 0;
|
||||
entry.visibility = wgpu::ShaderStage::Fragment;
|
||||
entry.buffer.type = wgpu::BufferBindingType::Uniform;
|
||||
entry.sampler.type = wgpu::SamplerBindingType::Filtering;
|
||||
|
||||
wgpu::BindGroupLayoutDescriptor descriptor;
|
||||
descriptor.entryCount = 1;
|
||||
descriptor.entries = &entry;
|
||||
ASSERT_DEVICE_ERROR(device.CreateBindGroupLayout(&descriptor),
|
||||
testing::HasSubstr("had more than one of"));
|
||||
}
|
||||
|
||||
// Test that it is invalid to create a BGL with none one of buffer,
|
||||
// sampler, texture, storageTexture, or externalTexture set.
|
||||
TEST_F(BindGroupLayoutValidationTest, BindGroupLayoutEntryNoneSet) {
|
||||
wgpu::BindGroupLayoutEntry entry = {};
|
||||
|
||||
wgpu::BindGroupLayoutDescriptor descriptor;
|
||||
descriptor.entryCount = 1;
|
||||
descriptor.entries = &entry;
|
||||
ASSERT_DEVICE_ERROR(device.CreateBindGroupLayout(&descriptor),
|
||||
testing::HasSubstr("had none of"));
|
||||
}
|
||||
|
||||
// This test verifies that visibility of bindings in BindGroupLayout can be none
|
||||
TEST_F(BindGroupLayoutValidationTest, BindGroupLayoutVisibilityNone) {
|
||||
utils::MakeBindGroupLayout(device,
|
||||
|
|
Loading…
Reference in New Issue