OpenGL: clean up / enable e2e texture init tests.
Enable end2end texture zero init tests where possible, and mark them
as failing on Compatibility mode where appropriate.
Bug: dawn:643 dawn:1328
Change-Id: Icababb19ddc7457afb1874b491abe9c70017fe0f
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/192640
Reviewed-by: Austin Eng <enga@chromium.org>
Commit-Queue: Stephen White <senorblanco@chromium.org>
diff --git a/src/dawn/tests/end2end/TextureZeroInitTests.cpp b/src/dawn/tests/end2end/TextureZeroInitTests.cpp
index 318da89..66edb7b 100644
--- a/src/dawn/tests/end2end/TextureZeroInitTests.cpp
+++ b/src/dawn/tests/end2end/TextureZeroInitTests.cpp
@@ -806,9 +806,6 @@
// Test that a stencil texture that is written via copy, then discarded, sees
// zero contents when it is read by sampling.
TEST_P(TextureZeroInitTest, StencilCopyThenDiscardAndReadBySampling) {
- // Copies to a single aspect are unsupported on OpenGL.
- DAWN_SUPPRESS_TEST_IF(IsOpenGL() || IsOpenGLES());
-
for (wgpu::TextureFormat format :
{wgpu::TextureFormat::Stencil8, wgpu::TextureFormat::Depth24PlusStencil8}) {
wgpu::Texture depthStencilTexture = CreateAndFillStencilTexture(format);
@@ -837,9 +834,6 @@
// Test that a stencil texture that is written via copy, then discarded, sees
// zero contents when it is read via copy.
TEST_P(TextureZeroInitTest, StencilCopyThenDiscardAndReadByCopy) {
- // Copies to a single aspect are unsupported on OpenGL.
- DAWN_SUPPRESS_TEST_IF(IsOpenGL() || IsOpenGLES());
-
for (wgpu::TextureFormat format :
{wgpu::TextureFormat::Stencil8, wgpu::TextureFormat::Depth24PlusStencil8}) {
wgpu::Texture depthStencilTexture = CreateAndFillStencilTexture(format);
@@ -870,9 +864,6 @@
// Test that a stencil texture that is written via copy, then discarded, then copied to
// another texture, sees zero contents when it is read via copy.
TEST_P(TextureZeroInitTest, StencilCopyThenDiscardAndCopyToTextureThenReadByCopy) {
- // Copies to a single aspect are unsupported on OpenGL.
- DAWN_SUPPRESS_TEST_IF(IsOpenGL() || IsOpenGLES());
-
for (wgpu::TextureFormat format :
{wgpu::TextureFormat::Stencil8, wgpu::TextureFormat::Depth24PlusStencil8}) {
// Create the texture.
@@ -1083,6 +1074,8 @@
// sampled and attachment (with LoadOp::Clear so the lazy clear can be skipped) then the sampled
// subresource is correctly cleared.
TEST_P(TextureZeroInitTest, TextureBothSampledAndAttachmentClear) {
+ // TODO(crbug.com/346362367): Compatibility mode does not support binding a `2d-array` texture
+ // to a WGSL variable of type `texture_2d`.
DAWN_TEST_UNSUPPORTED_IF(IsCompatibilityMode());
// Create a 2D array texture, layer 0 will be used as attachment, layer 1 as sampled.
@@ -1092,15 +1085,6 @@
texDesc.size = {1, 1, 2};
texDesc.format = wgpu::TextureFormat::RGBA8Unorm;
- // Only set the textureBindingViewDimension in compat mode. It's not needed nor used in
- // non-compat.
- wgpu::TextureBindingViewDimensionDescriptor textureBindingViewDimensionDesc;
- if (IsCompatibilityMode()) {
- textureBindingViewDimensionDesc.textureBindingViewDimension =
- wgpu::TextureViewDimension::e2DArray;
- texDesc.nextInChain = &textureBindingViewDimensionDesc;
- }
-
wgpu::Texture texture = device.CreateTexture(&texDesc);
wgpu::TextureViewDescriptor viewDesc;
@@ -1531,6 +1515,8 @@
// Test that if one layer of a texture is initialized and another is uninitialized, lazy clearing
// the uninitialized layer does not clear the initialized layer.
TEST_P(TextureZeroInitTest, PreservesInitializedArrayLayer) {
+ // TODO(crbug.com/346362367): Compatibility mode does not support binding a `2d-array` texture
+ // to a WGSL variable of type `texture_2d`.
DAWN_TEST_UNSUPPORTED_IF(IsCompatibilityMode());
wgpu::TextureDescriptor sampleTextureDescriptor =
@@ -1539,15 +1525,6 @@
wgpu::TextureUsage::TextureBinding,
kColorFormat);
- // Only set the textureBindingViewDimension in compat mode. It's not needed
- // nor used in non-compat.
- wgpu::TextureBindingViewDimensionDescriptor textureBindingViewDimensionDesc;
- if (IsCompatibilityMode()) {
- textureBindingViewDimensionDesc.textureBindingViewDimension =
- wgpu::TextureViewDimension::e2D;
- sampleTextureDescriptor.nextInChain = &textureBindingViewDimensionDesc;
- }
-
wgpu::Texture sampleTexture = device.CreateTexture(&sampleTextureDescriptor);
wgpu::TextureDescriptor renderTextureDescriptor = CreateTextureDescriptor(
@@ -2074,9 +2051,6 @@
// Test that 1 lazy clear count happens when we copy to half the texture
TEST_P(CompressedTextureZeroInitTest, HalfCopyBufferToTexture) {
- // TODO(crbug.com/dawn/643): diagnose and fix this failure on OpenGL.
- DAWN_SUPPRESS_TEST_IF(IsOpenGL() || IsOpenGLES());
-
wgpu::TextureDescriptor textureDescriptor;
textureDescriptor.usage = wgpu::TextureUsage::CopySrc | wgpu::TextureUsage::CopyDst |
wgpu::TextureUsage::TextureBinding;
@@ -2094,9 +2068,6 @@
// Test that 0 lazy clear count happens when we copy buffer to texture to a nonzero mip level
// (with physical size different from the virtual mip size)
TEST_P(CompressedTextureZeroInitTest, FullCopyToNonZeroMipLevel) {
- // TODO(crbug.com/dawn/1328): ES3.1 does not support subsetting of compressed textures.
- DAWN_TEST_UNSUPPORTED_IF(IsOpenGLES());
-
wgpu::TextureDescriptor textureDescriptor;
textureDescriptor.usage = wgpu::TextureUsage::CopySrc | wgpu::TextureUsage::CopyDst |
wgpu::TextureUsage::TextureBinding;
@@ -2119,8 +2090,8 @@
// Test that 1 lazy clear count happens when we copy buffer to half texture to a nonzero mip level
// (with physical size different from the virtual mip size)
TEST_P(CompressedTextureZeroInitTest, HalfCopyToNonZeroMipLevel) {
- // TODO(crbug.com/dawn/643): diagnose and fix this failure on OpenGL.
- DAWN_SUPPRESS_TEST_IF(IsOpenGL() || IsOpenGLES());
+ // TODO(crbug.com/346264229): diagnose this failure on ANGLE/D3D11
+ DAWN_SUPPRESS_TEST_IF(IsANGLED3D11());
wgpu::TextureDescriptor textureDescriptor;
textureDescriptor.usage = wgpu::TextureUsage::CopySrc | wgpu::TextureUsage::CopyDst |
@@ -2143,8 +2114,9 @@
// Test that 0 lazy clear count happens when we copy buffer to nonzero array layer
TEST_P(CompressedTextureZeroInitTest, FullCopyToNonZeroArrayLayer) {
- // TODO(crbug.com/dawn/1328): ES3.1 does not support subsetting of compressed textures.
- DAWN_TEST_UNSUPPORTED_IF(IsOpenGLES());
+ // TODO(crbug.com/346362367): Compatibility mode does not support binding a `2d-array` texture
+ // to a WGSL variable of type `texture_2d`.
+ DAWN_TEST_UNSUPPORTED_IF(IsCompatibilityMode());
wgpu::TextureDescriptor textureDescriptor;
textureDescriptor.usage = wgpu::TextureUsage::CopySrc | wgpu::TextureUsage::CopyDst |
@@ -2163,8 +2135,9 @@
// Test that 1 lazy clear count happens when we copy buffer to half texture to a nonzero array layer
TEST_P(CompressedTextureZeroInitTest, HalfCopyToNonZeroArrayLayer) {
- // TODO(crbug.com/dawn/643): diagnose and fix this failure on OpenGL.
- DAWN_SUPPRESS_TEST_IF(IsOpenGL() || IsOpenGLES());
+ // TODO(crbug.com/346362367): Compatibility mode does not support binding a `2d-array` texture
+ // to a WGSL variable of type `texture_2d`.
+ DAWN_TEST_UNSUPPORTED_IF(IsCompatibilityMode());
wgpu::TextureDescriptor textureDescriptor;
textureDescriptor.usage = wgpu::TextureUsage::CopySrc | wgpu::TextureUsage::CopyDst |
@@ -2183,8 +2156,8 @@
// full copy texture to texture, 0 lazy clears are needed
TEST_P(CompressedTextureZeroInitTest, FullCopyTextureToTextureMipLevel) {
- // TODO(crbug.com/dawn/1328): ES3.1 does not support subsetting of compressed textures.
- DAWN_TEST_UNSUPPORTED_IF(IsOpenGLES());
+ // Compatibility mode does not support compressed texture-to-texture copies.
+ DAWN_TEST_UNSUPPORTED_IF(IsCompatibilityMode());
// create srcTexture and fill it with data
wgpu::TextureDescriptor srcDescriptor =
@@ -2232,8 +2205,8 @@
// half copy texture to texture, lazy clears are needed for noncopied half
TEST_P(CompressedTextureZeroInitTest, HalfCopyTextureToTextureMipLevel) {
- // TODO(crbug.com/dawn/643): diagnose and fix this failure on OpenGL.
- DAWN_SUPPRESS_TEST_IF(IsOpenGL() || IsOpenGLES());
+ // Compatibility mode does not support compressed texture-to-texture copies.
+ DAWN_SUPPRESS_TEST_IF(IsCompatibilityMode());
// create srcTexture with data
wgpu::TextureDescriptor srcDescriptor =
@@ -2285,8 +2258,8 @@
// was considered fully initialized even though there was a 256-byte
// stride between images.
TEST_P(CompressedTextureZeroInitTest, Copy2DArrayCompressedB2T2B) {
- // TODO(crbug.com/dawn/643): diagnose and fix this failure on OpenGL.
- DAWN_SUPPRESS_TEST_IF(IsOpenGL() || IsOpenGLES());
+ // Compatibility mode does not support compressed texture-to-buffer copies.
+ DAWN_SUPPRESS_TEST_IF(IsCompatibilityMode());
// create srcTexture with data
wgpu::TextureDescriptor textureDescriptor = CreateTextureDescriptor(