GLES: fix texture-to-texture copy with offset src or dest region.

glBlitFramebuffer() takes min and max coordinates, not min and size.

Bug: dawn:1084

Change-Id: I7b8b53ecd9c5ade20d4d7a909bd134c13a2d960b
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/85081
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Austin Eng <enga@chromium.org>
Commit-Queue: Stephen White <senorblanco@chromium.org>
This commit is contained in:
Stephen White 2022-03-29 16:11:34 +00:00 committed by Dawn LUCI CQ
parent de6486f9f6
commit f32ae5b680
3 changed files with 2 additions and 13 deletions

View File

@ -140,8 +140,8 @@ namespace dawn::native::opengl {
dstLevel, dst.z + layer); dstLevel, dst.z + layer);
} }
} }
gl.BlitFramebuffer(src.x, src.y, size.width, size.height, dst.x, dst.y, size.width, gl.BlitFramebuffer(src.x, src.y, src.x + size.width, src.y + size.height, dst.x, dst.y,
size.height, blitMask, GL_NEAREST); dst.x + size.width, dst.y + size.height, blitMask, GL_NEAREST);
} }
gl.Enable(GL_SCISSOR_TEST); gl.Enable(GL_SCISSOR_TEST);
gl.DeleteFramebuffers(1, &readFBO); gl.DeleteFramebuffers(1, &readFBO);

View File

@ -1194,8 +1194,6 @@ TEST_P(CopyTests_T2B, Texture3DFull) {
// Test that copying a range of texture 3D depths in one texture-to-buffer-copy works. // Test that copying a range of texture 3D depths in one texture-to-buffer-copy works.
TEST_P(CopyTests_T2B, Texture3DSubRegion) { TEST_P(CopyTests_T2B, Texture3DSubRegion) {
DAWN_TEST_UNSUPPORTED_IF(IsANGLE()); // TODO(crbug.com/angleproject/5967)
constexpr uint32_t kWidth = 256; constexpr uint32_t kWidth = 256;
constexpr uint32_t kHeight = 128; constexpr uint32_t kHeight = 128;
constexpr uint32_t kDepth = 6; constexpr uint32_t kDepth = 6;
@ -1789,8 +1787,6 @@ TEST_P(CopyTests_B2T, Texture3DFull) {
// Test that copying a range of texture 3D Depths in one texture-to-buffer-copy works. // Test that copying a range of texture 3D Depths in one texture-to-buffer-copy works.
TEST_P(CopyTests_B2T, Texture3DSubRegion) { TEST_P(CopyTests_B2T, Texture3DSubRegion) {
DAWN_TEST_UNSUPPORTED_IF(IsANGLE()); // TODO(crbug.com/angleproject/5967)
constexpr uint32_t kWidth = 256; constexpr uint32_t kWidth = 256;
constexpr uint32_t kHeight = 128; constexpr uint32_t kHeight = 128;
constexpr uint32_t kDepth = 6; constexpr uint32_t kDepth = 6;
@ -2299,7 +2295,6 @@ TEST_P(CopyTests_T2T, Texture3DTo2DArrayFull) {
// Test that copying between 3D texture and 2D array textures works. It includes partial copy // Test that copying between 3D texture and 2D array textures works. It includes partial copy
// for src and/or dst texture, non-zero offset (copy origin), non-zero mip level. // for src and/or dst texture, non-zero offset (copy origin), non-zero mip level.
TEST_P(CopyTests_T2T, Texture3DAnd2DArraySubRegion) { TEST_P(CopyTests_T2T, Texture3DAnd2DArraySubRegion) {
DAWN_TEST_UNSUPPORTED_IF(IsANGLE()); // TODO(crbug.com/angleproject/5967)
// TODO(crbug.com/dawn/1216): Remove this suppression. // TODO(crbug.com/dawn/1216): Remove this suppression.
DAWN_SUPPRESS_TEST_IF(IsD3D12() && IsNvidia()); DAWN_SUPPRESS_TEST_IF(IsD3D12() && IsNvidia());
@ -2374,7 +2369,6 @@ TEST_P(CopyTests_T2T, Texture2DArrayTo3DFull) {
// Test that copying subregion of a 3D texture in one texture-to-texture-copy works. // Test that copying subregion of a 3D texture in one texture-to-texture-copy works.
TEST_P(CopyTests_T2T, Texture3DSubRegion) { TEST_P(CopyTests_T2T, Texture3DSubRegion) {
DAWN_TEST_UNSUPPORTED_IF(IsANGLE()); // TODO(crbug.com/angleproject/5967)
constexpr uint32_t kWidth = 256; constexpr uint32_t kWidth = 256;
constexpr uint32_t kHeight = 128; constexpr uint32_t kHeight = 128;
constexpr uint32_t kDepth = 6u; constexpr uint32_t kDepth = 6u;
@ -2402,7 +2396,6 @@ TEST_P(CopyTests_T2T, Texture3DTo2DArraySubRegion) {
// Test that copying subregion of a 2D array to a 3D texture to in one texture-to-texture-copy // Test that copying subregion of a 2D array to a 3D texture to in one texture-to-texture-copy
// works. // works.
TEST_P(CopyTests_T2T, Texture2DArrayTo3DSubRegion) { TEST_P(CopyTests_T2T, Texture2DArrayTo3DSubRegion) {
DAWN_TEST_UNSUPPORTED_IF(IsANGLE()); // TODO(crbug.com/angleproject/5967)
// TODO(crbug.com/dawn/1216): Remove this suppression. // TODO(crbug.com/dawn/1216): Remove this suppression.
DAWN_SUPPRESS_TEST_IF(IsD3D12() && IsNvidia()); DAWN_SUPPRESS_TEST_IF(IsD3D12() && IsNvidia());
constexpr uint32_t kWidth = 256; constexpr uint32_t kWidth = 256;

View File

@ -92,10 +92,6 @@ namespace {
DAWN_TEST_UNSUPPORTED_IF(GetParam().mFormat == wgpu::TextureFormat::RGBA8Snorm && DAWN_TEST_UNSUPPORTED_IF(GetParam().mFormat == wgpu::TextureFormat::RGBA8Snorm &&
HasToggleEnabled("disable_snorm_read")); HasToggleEnabled("disable_snorm_read"));
// TODO(crbug.com/angleproject/5967): This texture readback hits an assert in ANGLE.
DAWN_SUPPRESS_TEST_IF(GetParam().mDimension == wgpu::TextureDimension::e3D &&
IsANGLE());
// TODO(crbug.com/dawn/791): Determine Intel specific platforms this occurs on, and // TODO(crbug.com/dawn/791): Determine Intel specific platforms this occurs on, and
// implement a workaround on all backends (happens on Windows too, but not on our test // implement a workaround on all backends (happens on Windows too, but not on our test
// machines). // machines).