Treat 'mipLevelCount == 0' as error

It's no longer a valid default value.

Bug: dawn:1026

Change-Id: I9de656f29c8b7673de412cef35dcfb8a45121ac7
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/64165
Reviewed-by: Jiawei Shao <jiawei.shao@intel.com>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Jie A Chen <jie.a.chen@intel.com>
This commit is contained in:
jchen10 2021-09-16 05:29:44 +00:00 committed by Dawn LUCI CQ
parent 8626b2142d
commit b166b99f86
2 changed files with 31 additions and 3 deletions

View File

@ -418,9 +418,7 @@ namespace dawn_native {
} }
} }
// TODO(jie.a.chen@intel.com): Remove 'desc.mipLevelCount == 0' once the WebGPU change is if (desc.mipLevelCount == wgpu::kMipLevelCountUndefined) {
// landed.
if (desc.mipLevelCount == 0 || desc.mipLevelCount == wgpu::kMipLevelCountUndefined) {
desc.mipLevelCount = texture->GetNumMipLevels() - desc.baseMipLevel; desc.mipLevelCount = texture->GetNumMipLevels() - desc.baseMipLevel;
} }
return desc; return desc;

View File

@ -79,6 +79,13 @@ namespace {
ASSERT_DEVICE_ERROR(texture.CreateView(&descriptor)); ASSERT_DEVICE_ERROR(texture.CreateView(&descriptor));
} }
// It is an error to create a view with zero 'mipLevelCount'.
{
wgpu::TextureViewDescriptor descriptor = base2DTextureViewDescriptor;
descriptor.mipLevelCount = 0;
ASSERT_DEVICE_ERROR(texture.CreateView(&descriptor));
}
// It is OK to create a 2D texture view on a 2D texture. // It is OK to create a 2D texture view on a 2D texture.
{ {
wgpu::TextureViewDescriptor descriptor = base2DTextureViewDescriptor; wgpu::TextureViewDescriptor descriptor = base2DTextureViewDescriptor;
@ -160,6 +167,14 @@ namespace {
ASSERT_DEVICE_ERROR(texture.CreateView(&descriptor)); ASSERT_DEVICE_ERROR(texture.CreateView(&descriptor));
} }
// It is an error to create a view with zero 'mipLevelCount'.
{
wgpu::TextureViewDescriptor descriptor = base2DArrayTextureViewDescriptor;
descriptor.dimension = wgpu::TextureViewDimension::e2D;
descriptor.mipLevelCount = 0;
ASSERT_DEVICE_ERROR(texture.CreateView(&descriptor));
}
// It is OK to create a 2D texture view on a 2D array texture. // It is OK to create a 2D texture view on a 2D array texture.
{ {
wgpu::TextureViewDescriptor descriptor = base2DArrayTextureViewDescriptor; wgpu::TextureViewDescriptor descriptor = base2DArrayTextureViewDescriptor;
@ -231,6 +246,13 @@ namespace {
ASSERT_DEVICE_ERROR(texture.CreateView(&descriptor)); ASSERT_DEVICE_ERROR(texture.CreateView(&descriptor));
} }
// It is an error to create a view with zero 'mipLevelCount'.
{
wgpu::TextureViewDescriptor descriptor = base3DTextureViewDescriptor;
descriptor.mipLevelCount = 0;
ASSERT_DEVICE_ERROR(texture.CreateView(&descriptor));
}
// It is OK to create a 3D texture view on a 3D texture. // It is OK to create a 3D texture view on a 3D texture.
{ {
wgpu::TextureViewDescriptor descriptor = base3DTextureViewDescriptor; wgpu::TextureViewDescriptor descriptor = base3DTextureViewDescriptor;
@ -475,6 +497,14 @@ namespace {
ASSERT_DEVICE_ERROR(texture.CreateView(&descriptor)); ASSERT_DEVICE_ERROR(texture.CreateView(&descriptor));
} }
// It is an error to create a view with zero 'mipLevelCount'.
{
wgpu::TextureViewDescriptor descriptor = base2DArrayTextureViewDescriptor;
descriptor.dimension = wgpu::TextureViewDimension::Cube;
descriptor.mipLevelCount = 0;
ASSERT_DEVICE_ERROR(texture.CreateView(&descriptor));
}
// It is OK to create a cube map texture view with arrayLayerCount == 6. // It is OK to create a cube map texture view with arrayLayerCount == 6.
{ {
wgpu::TextureViewDescriptor descriptor = base2DArrayTextureViewDescriptor; wgpu::TextureViewDescriptor descriptor = base2DArrayTextureViewDescriptor;