mirror of
https://github.com/encounter/dawn-cmake.git
synced 2025-12-17 08:57:26 +00:00
Fix bugs about TextureViewDesc's default values
TextureViewDescriptor's default values for dimension and arrayLayerCount in Dawn are not correct according to WebGPU spec. This change fixes these bugs. Bug: dawn:760 Change-Id: Ic1d069838d6c0f7bb1afa1dceaf73e91bdfdb20a Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/58020 Commit-Queue: Yunchao He <yunchao.he@intel.com> Reviewed-by: Kai Ninomiya <kainino@chromium.org>
This commit is contained in:
@@ -559,7 +559,9 @@ namespace {
|
||||
wgpu::Texture resolveTexture =
|
||||
CreateTexture(device, wgpu::TextureDimension::e2D, kColorFormat, kSize, kSize,
|
||||
kArrayLayers2, kLevelCount);
|
||||
wgpu::TextureView resolveTextureView = resolveTexture.CreateView();
|
||||
wgpu::TextureViewDescriptor viewDesc;
|
||||
viewDesc.dimension = wgpu::TextureViewDimension::e2DArray;
|
||||
wgpu::TextureView resolveTextureView = resolveTexture.CreateView(&viewDesc);
|
||||
|
||||
utils::ComboRenderPassDescriptor renderPass = CreateMultisampledRenderPass();
|
||||
renderPass.cColorAttachments[0].resolveTarget = resolveTextureView;
|
||||
|
||||
@@ -288,7 +288,7 @@ namespace {
|
||||
// specifying the values they're supposed to default to.
|
||||
// Variant for a 2D texture with more than 1 array layer.
|
||||
TEST_F(TextureViewValidationTest, TextureViewDescriptorDefaults2DArray) {
|
||||
constexpr uint32_t kDefaultArrayLayers = 6;
|
||||
constexpr uint32_t kDefaultArrayLayers = 8;
|
||||
wgpu::Texture texture = Create2DArrayTexture(device, kDefaultArrayLayers);
|
||||
|
||||
{ texture.CreateView(); }
|
||||
@@ -307,7 +307,25 @@ namespace {
|
||||
texture.CreateView(&descriptor);
|
||||
descriptor.dimension = wgpu::TextureViewDimension::e2DArray;
|
||||
texture.CreateView(&descriptor);
|
||||
// Setting view dimension to 2D, its arrayLayer will default to 1. And view creation
|
||||
// will success.
|
||||
descriptor.dimension = wgpu::TextureViewDimension::e2D;
|
||||
texture.CreateView(&descriptor);
|
||||
// Setting view dimension to Cube, its arrayLayer will default to 6.
|
||||
descriptor.dimension = wgpu::TextureViewDimension::Cube;
|
||||
texture.CreateView(&descriptor);
|
||||
descriptor.baseArrayLayer = 2;
|
||||
texture.CreateView(&descriptor);
|
||||
descriptor.baseArrayLayer = 3;
|
||||
ASSERT_DEVICE_ERROR(texture.CreateView(&descriptor));
|
||||
// Setting view dimension to CubeArray, its arrayLayer will default to
|
||||
// size.depthOrArrayLayers (kDefaultArrayLayers) - baseArrayLayer.
|
||||
descriptor.dimension = wgpu::TextureViewDimension::CubeArray;
|
||||
descriptor.baseArrayLayer = 0;
|
||||
ASSERT_DEVICE_ERROR(texture.CreateView(&descriptor));
|
||||
descriptor.baseArrayLayer = 2;
|
||||
texture.CreateView(&descriptor);
|
||||
descriptor.baseArrayLayer = 3;
|
||||
ASSERT_DEVICE_ERROR(texture.CreateView(&descriptor));
|
||||
}
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user