mirror of
https://github.com/encounter/dawn-cmake.git
synced 2025-12-20 10:25:28 +00:00
Implement new defaults for Texture::CreateView
https://github.com/gpuweb/gpuweb/pull/389 except for removing createDefaultView https://github.com/gpuweb/gpuweb/pull/407 This will need to slightly change again when https://github.com/gpuweb/gpuweb/pull/424 lands. Bug: dawn:214 Change-Id: Id904b55cea6d77fcf7d971bd743468c7d82a9aa8 Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/10440 Reviewed-by: Austin Eng <enga@chromium.org> Reviewed-by: Corentin Wallez <cwallez@chromium.org> Commit-Queue: Kai Ninomiya <kainino@chromium.org>
This commit is contained in:
committed by
Commit Bot service account
parent
f19c328b5b
commit
93196db8ef
@@ -69,8 +69,7 @@ TEST_F(TextureViewValidationTest, CreateTextureViewOnTexture2D) {
|
||||
texture.CreateView(&descriptor);
|
||||
}
|
||||
|
||||
// It is an error to specify the layer count of the texture view > 1 when texture view dimension
|
||||
// is 2D.
|
||||
// It is an error to view a layer past the end of the texture.
|
||||
{
|
||||
dawn::TextureViewDescriptor descriptor = base2DTextureViewDescriptor;
|
||||
descriptor.arrayLayerCount = 2;
|
||||
@@ -85,19 +84,36 @@ TEST_F(TextureViewValidationTest, CreateTextureViewOnTexture2D) {
|
||||
texture.CreateView(&descriptor);
|
||||
}
|
||||
|
||||
// It is an error to specify mipLevelCount == 0.
|
||||
// baseMipLevel == k && mipLevelCount == 0 means to use levels k..end.
|
||||
{
|
||||
dawn::TextureViewDescriptor descriptor = base2DTextureViewDescriptor;
|
||||
descriptor.mipLevelCount = 0;
|
||||
|
||||
descriptor.baseMipLevel = 0;
|
||||
texture.CreateView(&descriptor);
|
||||
descriptor.baseMipLevel = 1;
|
||||
texture.CreateView(&descriptor);
|
||||
descriptor.baseMipLevel = kDefaultMipLevels - 1;
|
||||
texture.CreateView(&descriptor);
|
||||
descriptor.baseMipLevel = kDefaultMipLevels;
|
||||
ASSERT_DEVICE_ERROR(texture.CreateView(&descriptor));
|
||||
}
|
||||
|
||||
// It is an error to make the mip level out of range.
|
||||
{
|
||||
dawn::TextureViewDescriptor descriptor = base2DTextureViewDescriptor;
|
||||
descriptor.baseMipLevel = 0;
|
||||
descriptor.mipLevelCount = kDefaultMipLevels + 1;
|
||||
ASSERT_DEVICE_ERROR(texture.CreateView(&descriptor));
|
||||
descriptor.baseMipLevel = 1;
|
||||
descriptor.mipLevelCount = kDefaultMipLevels;
|
||||
ASSERT_DEVICE_ERROR(texture.CreateView(&descriptor));
|
||||
descriptor.baseMipLevel = kDefaultMipLevels - 1;
|
||||
descriptor.mipLevelCount = 2;
|
||||
ASSERT_DEVICE_ERROR(texture.CreateView(&descriptor));
|
||||
descriptor.baseMipLevel = kDefaultMipLevels;
|
||||
descriptor.mipLevelCount = 1;
|
||||
ASSERT_DEVICE_ERROR(texture.CreateView(&descriptor));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -125,18 +141,121 @@ TEST_F(TextureViewValidationTest, CreateTextureViewOnTexture2DArray) {
|
||||
texture.CreateView(&descriptor);
|
||||
}
|
||||
|
||||
// It is an error to specify arrayLayerCount == 0.
|
||||
// baseArrayLayer == k && arrayLayerCount == 0 means to use layers k..end.
|
||||
{
|
||||
dawn::TextureViewDescriptor descriptor = base2DArrayTextureViewDescriptor;
|
||||
descriptor.arrayLayerCount = 0;
|
||||
|
||||
descriptor.baseArrayLayer = 0;
|
||||
texture.CreateView(&descriptor);
|
||||
descriptor.baseArrayLayer = 1;
|
||||
texture.CreateView(&descriptor);
|
||||
descriptor.baseArrayLayer = kDefaultArrayLayers - 1;
|
||||
texture.CreateView(&descriptor);
|
||||
descriptor.baseArrayLayer = kDefaultArrayLayers;
|
||||
ASSERT_DEVICE_ERROR(texture.CreateView(&descriptor));
|
||||
}
|
||||
|
||||
// It is an error to make the array layer out of range.
|
||||
// It is an error for the array layer range of the view to exceed that of the texture.
|
||||
{
|
||||
dawn::TextureViewDescriptor descriptor = base2DArrayTextureViewDescriptor;
|
||||
descriptor.baseArrayLayer = 0;
|
||||
descriptor.arrayLayerCount = kDefaultArrayLayers + 1;
|
||||
ASSERT_DEVICE_ERROR(texture.CreateView(&descriptor));
|
||||
descriptor.baseArrayLayer = 1;
|
||||
descriptor.arrayLayerCount = kDefaultArrayLayers;
|
||||
ASSERT_DEVICE_ERROR(texture.CreateView(&descriptor));
|
||||
descriptor.baseArrayLayer = kDefaultArrayLayers - 1;
|
||||
descriptor.arrayLayerCount = 2;
|
||||
ASSERT_DEVICE_ERROR(texture.CreateView(&descriptor));
|
||||
descriptor.baseArrayLayer = kDefaultArrayLayers;
|
||||
descriptor.arrayLayerCount = 1;
|
||||
ASSERT_DEVICE_ERROR(texture.CreateView(&descriptor));
|
||||
}
|
||||
}
|
||||
|
||||
// Using the "none" ("default") values validates the same as explicitly
|
||||
// specifying the values they're supposed to default to.
|
||||
// Variant for a texture with more than 1 array layer.
|
||||
TEST_F(TextureViewValidationTest, TextureViewDescriptorDefaultsArray) {
|
||||
constexpr uint32_t kDefaultArrayLayers = 6;
|
||||
dawn::Texture texture = Create2DArrayTexture(device, kDefaultArrayLayers);
|
||||
|
||||
{
|
||||
dawn::TextureViewDescriptor descriptor;
|
||||
texture.CreateView(&descriptor);
|
||||
}
|
||||
{
|
||||
dawn::TextureViewDescriptor descriptor;
|
||||
descriptor.format = dawn::TextureFormat::None;
|
||||
texture.CreateView(&descriptor);
|
||||
descriptor.format = dawn::TextureFormat::RGBA8Unorm;
|
||||
texture.CreateView(&descriptor);
|
||||
descriptor.format = dawn::TextureFormat::R8Unorm;
|
||||
ASSERT_DEVICE_ERROR(texture.CreateView(&descriptor));
|
||||
}
|
||||
{
|
||||
dawn::TextureViewDescriptor descriptor;
|
||||
descriptor.dimension = dawn::TextureViewDimension::None;
|
||||
texture.CreateView(&descriptor);
|
||||
descriptor.dimension = dawn::TextureViewDimension::e2DArray;
|
||||
texture.CreateView(&descriptor);
|
||||
descriptor.dimension = dawn::TextureViewDimension::e2D;
|
||||
ASSERT_DEVICE_ERROR(texture.CreateView(&descriptor));
|
||||
}
|
||||
{
|
||||
dawn::TextureViewDescriptor descriptor;
|
||||
descriptor.arrayLayerCount = kDefaultArrayLayers;
|
||||
texture.CreateView(&descriptor);
|
||||
descriptor.mipLevelCount = kDefaultMipLevels;
|
||||
texture.CreateView(&descriptor);
|
||||
}
|
||||
}
|
||||
|
||||
// Using the "none" ("default") values validates the same as explicitly
|
||||
// specifying the values they're supposed to default to.
|
||||
// Variant for a texture with only 1 array layer.
|
||||
TEST_F(TextureViewValidationTest, TextureViewDescriptorDefaultsNonArray) {
|
||||
constexpr uint32_t kDefaultArrayLayers = 1;
|
||||
dawn::Texture texture = Create2DArrayTexture(device, kDefaultArrayLayers);
|
||||
|
||||
{
|
||||
dawn::TextureViewDescriptor descriptor;
|
||||
texture.CreateView(&descriptor);
|
||||
}
|
||||
{
|
||||
dawn::TextureViewDescriptor descriptor;
|
||||
descriptor.format = dawn::TextureFormat::None;
|
||||
texture.CreateView(&descriptor);
|
||||
descriptor.format = dawn::TextureFormat::RGBA8Unorm;
|
||||
texture.CreateView(&descriptor);
|
||||
descriptor.format = dawn::TextureFormat::R8Unorm;
|
||||
ASSERT_DEVICE_ERROR(texture.CreateView(&descriptor));
|
||||
}
|
||||
{
|
||||
dawn::TextureViewDescriptor descriptor;
|
||||
descriptor.dimension = dawn::TextureViewDimension::None;
|
||||
texture.CreateView(&descriptor);
|
||||
descriptor.dimension = dawn::TextureViewDimension::e2D;
|
||||
texture.CreateView(&descriptor);
|
||||
descriptor.dimension = dawn::TextureViewDimension::e2DArray;
|
||||
texture.CreateView(&descriptor);
|
||||
}
|
||||
{
|
||||
dawn::TextureViewDescriptor descriptor;
|
||||
descriptor.arrayLayerCount = 0;
|
||||
texture.CreateView(&descriptor);
|
||||
descriptor.arrayLayerCount = 1;
|
||||
texture.CreateView(&descriptor);
|
||||
descriptor.arrayLayerCount = 2;
|
||||
ASSERT_DEVICE_ERROR(texture.CreateView(&descriptor));
|
||||
}
|
||||
{
|
||||
dawn::TextureViewDescriptor descriptor;
|
||||
descriptor.mipLevelCount = kDefaultMipLevels;
|
||||
texture.CreateView(&descriptor);
|
||||
descriptor.arrayLayerCount = kDefaultArrayLayers;
|
||||
texture.CreateView(&descriptor);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user