mirror of
https://github.com/encounter/dawn-cmake.git
synced 2025-12-17 00:47:13 +00:00
Fix erroneous validation logic for BindGroupLayoutEntry
https://dawn-review.googlesource.com/c/dawn/+/34921 introduced a couple of bugs. This CL fixes them and tests to ensure that the new validation logic is working correctly. BUG=dawn:527 Change-Id: Ief01dfda0b97a202bf12ff6aeb0e7a3b84b4b81c Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/35700 Commit-Queue: Brandon Jones <bajones@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Austin Eng <enga@chromium.org>
This commit is contained in:
committed by
Commit Bot service account
parent
e0a4d8f209
commit
b35ae00239
@@ -48,6 +48,63 @@ TEST_P(DeprecationTests, SetIndexBufferWithFormat) {
|
||||
pass.EndPass();
|
||||
}
|
||||
|
||||
// Test that BindGroupLayoutEntry cannot have a type if buffer, sampler, texture, or storageTexture
|
||||
// are defined.
|
||||
TEST_P(DeprecationTests, BindGroupLayoutEntryTypeConflict) {
|
||||
wgpu::BindGroupLayoutEntry binding;
|
||||
binding.binding = 0;
|
||||
binding.visibility = wgpu::ShaderStage::Vertex;
|
||||
|
||||
wgpu::BindGroupLayoutDescriptor descriptor;
|
||||
descriptor.entryCount = 1;
|
||||
descriptor.entries = &binding;
|
||||
|
||||
// Succeeds with only a type.
|
||||
// Will soon emit a deprecation warning.
|
||||
binding.type = wgpu::BindingType::UniformBuffer;
|
||||
device.CreateBindGroupLayout(&descriptor);
|
||||
|
||||
binding.type = wgpu::BindingType::Undefined;
|
||||
|
||||
// Succeeds with only a buffer.type.
|
||||
binding.buffer.type = wgpu::BufferBindingType::Uniform;
|
||||
device.CreateBindGroupLayout(&descriptor);
|
||||
// Fails when both type and a buffer.type are specified.
|
||||
binding.type = wgpu::BindingType::UniformBuffer;
|
||||
ASSERT_DEVICE_ERROR(device.CreateBindGroupLayout(&descriptor));
|
||||
|
||||
binding.buffer.type = wgpu::BufferBindingType::Undefined;
|
||||
binding.type = wgpu::BindingType::Undefined;
|
||||
|
||||
// Succeeds with only a sampler.type.
|
||||
binding.sampler.type = wgpu::SamplerBindingType::Filtering;
|
||||
device.CreateBindGroupLayout(&descriptor);
|
||||
// Fails when both type and a sampler.type are specified.
|
||||
binding.type = wgpu::BindingType::Sampler;
|
||||
ASSERT_DEVICE_ERROR(device.CreateBindGroupLayout(&descriptor));
|
||||
|
||||
binding.sampler.type = wgpu::SamplerBindingType::Undefined;
|
||||
binding.type = wgpu::BindingType::Undefined;
|
||||
|
||||
// Succeeds with only a texture.sampleType.
|
||||
binding.texture.sampleType = wgpu::TextureSampleType::Float;
|
||||
device.CreateBindGroupLayout(&descriptor);
|
||||
// Fails when both type and a texture.sampleType are specified.
|
||||
binding.type = wgpu::BindingType::SampledTexture;
|
||||
ASSERT_DEVICE_ERROR(device.CreateBindGroupLayout(&descriptor));
|
||||
|
||||
binding.texture.sampleType = wgpu::TextureSampleType::Undefined;
|
||||
binding.type = wgpu::BindingType::Undefined;
|
||||
|
||||
// Succeeds with only a storageTexture.access.
|
||||
binding.storageTexture.access = wgpu::StorageTextureAccess::ReadOnly;
|
||||
binding.storageTexture.format = wgpu::TextureFormat::RGBA8Unorm;
|
||||
device.CreateBindGroupLayout(&descriptor);
|
||||
// Fails when both type and a storageTexture.access are specified.
|
||||
binding.type = wgpu::BindingType::ReadonlyStorageTexture;
|
||||
ASSERT_DEVICE_ERROR(device.CreateBindGroupLayout(&descriptor));
|
||||
}
|
||||
|
||||
DAWN_INSTANTIATE_TEST(DeprecationTests,
|
||||
D3D12Backend(),
|
||||
MetalBackend(),
|
||||
|
||||
Reference in New Issue
Block a user