From 49dd40247d903a4e79b4986d9be59604802177f8 Mon Sep 17 00:00:00 2001 From: Rob Clark Date: Thu, 31 Oct 2024 08:59:36 -0700 Subject: [PATCH] freedreno/a6xx: Don't check dst coords Only the src coords of a blit must be in-bounds. "Fixes" dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_out_of_bounds_{min,mag}* by virtue of avoiding the 3d u_blitter fallback, where NEAREST filtering doesn't do what the deqp test expects. See https://gitlab.freedesktop.org/mesa/mesa/-/issues/12085 Signed-off-by: Rob Clark Part-of: --- src/freedreno/ci/freedreno-a618-fails.txt | 14 -------------- src/freedreno/ci/freedreno-a630-fails.txt | 14 -------------- src/freedreno/ci/freedreno-a660-fails.txt | 14 -------------- src/freedreno/ci/freedreno-a750-fails.txt | 14 -------------- src/gallium/drivers/freedreno/a6xx/fd6_blitter.cc | 7 ++++++- 5 files changed, 6 insertions(+), 57 deletions(-) diff --git a/src/freedreno/ci/freedreno-a618-fails.txt b/src/freedreno/ci/freedreno-a618-fails.txt index 150176026a1..95c908dabfc 100644 --- a/src/freedreno/ci/freedreno-a618-fails.txt +++ b/src/freedreno/ci/freedreno-a618-fails.txt @@ -249,25 +249,11 @@ spec@khr_texture_compression_astc@miptree-gles srgb-fp,Fail spec@khr_texture_compression_astc@miptree-gles srgb-fp@sRGB decode full precision,Fail # glcts update -dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_out_of_bounds_mag_reverse_dst_x,Fail dEQP-GLES2.functional.texture.mipmap.cube.projected.nearest_linear,Fail -dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_out_of_bounds_min,Fail -dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_out_of_bounds_min_reverse_dst_x,Fail KHR-GL46.texture_view.view_classes,Fail -dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_out_of_bounds_mag_reverse_dst_y,Fail -dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_out_of_bounds_min_reverse_src_dst_x,Fail -dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_out_of_bounds_mag_reverse_src_dst_y,Fail -dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_out_of_bounds_mag_reverse_src_dst_x,Fail KHR-GLES3.framebuffer_blit.framebuffer_blit_functionality_multisampled_to_singlesampled_blit,Fail -dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_out_of_bounds_min_reverse_src_dst_y,Fail -dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_out_of_bounds_mag_reverse_src_y,Fail KHR-GL46.texture_lod_bias.texture_lod_bias_all,Fail KHR-GL46.texture_lod_basic.lod_selection,Fail -dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_out_of_bounds_min_reverse_src_x,Fail -dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_out_of_bounds_min_reverse_src_y,Fail -dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_out_of_bounds_min_reverse_dst_y,Fail -dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_out_of_bounds_mag_reverse_src_x,Fail -dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_out_of_bounds_mag,Fail # GL tests above, Vulkan tests below diff --git a/src/freedreno/ci/freedreno-a630-fails.txt b/src/freedreno/ci/freedreno-a630-fails.txt index 74bce6a235a..f87377ab8b7 100644 --- a/src/freedreno/ci/freedreno-a630-fails.txt +++ b/src/freedreno/ci/freedreno-a630-fails.txt @@ -243,24 +243,10 @@ spec@khr_texture_compression_astc@miptree-gles srgb-fp,Fail spec@khr_texture_compression_astc@miptree-gles srgb-fp@sRGB decode full precision,Fail # glcts update -dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_out_of_bounds_mag,Fail -dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_out_of_bounds_mag_reverse_dst_x,Fail dEQP-GLES2.functional.texture.mipmap.cube.projected.nearest_linear,Fail -dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_out_of_bounds_min,Fail -dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_out_of_bounds_min_reverse_dst_x,Fail KHR-GL46.texture_view.view_classes,Fail -dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_out_of_bounds_mag_reverse_dst_y,Fail -dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_out_of_bounds_min_reverse_src_dst_x,Fail -dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_out_of_bounds_mag_reverse_src_dst_y,Fail -dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_out_of_bounds_mag_reverse_src_dst_x,Fail KHR-GLES3.framebuffer_blit.framebuffer_blit_functionality_multisampled_to_singlesampled_blit,Fail KHR-GL46.texture_lod_basic.lod_selection,Fail -dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_out_of_bounds_min_reverse_src_x,Fail -dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_out_of_bounds_min_reverse_src_y,Fail -dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_out_of_bounds_min_reverse_dst_y,Fail -dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_out_of_bounds_mag_reverse_src_x,Fail -dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_out_of_bounds_min_reverse_src_dst_y,Fail -dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_out_of_bounds_mag_reverse_src_y,Fail KHR-GL46.texture_lod_bias.texture_lod_bias_all,Fail # GL tests above, Vulkan tests below diff --git a/src/freedreno/ci/freedreno-a660-fails.txt b/src/freedreno/ci/freedreno-a660-fails.txt index e1f8dc4ace3..5bfb9c8f8fb 100644 --- a/src/freedreno/ci/freedreno-a660-fails.txt +++ b/src/freedreno/ci/freedreno-a660-fails.txt @@ -4,24 +4,10 @@ KHR-GL46.shader_subroutine.control_flow_and_returned_subroutine_values_used_as_s dEQP-GLES31.functional.texture.border_clamp.range_clamp.linear_float_color,Fail #glcts update -dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_out_of_bounds_min,Fail -dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_out_of_bounds_min_reverse_dst_x,Fail dEQP-GLES2.functional.texture.mipmap.cube.projected.nearest_linear,Fail -dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_out_of_bounds_mag_reverse_dst_y,Fail -dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_out_of_bounds_min_reverse_src_dst_x,Fail -dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_out_of_bounds_mag_reverse_dst_x,Fail -dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_out_of_bounds_mag_reverse_src_dst_y,Fail -dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_out_of_bounds_mag_reverse_src_dst_x,Fail KHR-GLES3.framebuffer_blit.framebuffer_blit_functionality_multisampled_to_singlesampled_blit,Fail KHR-GL46.texture_lod_basic.lod_selection,Fail -dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_out_of_bounds_min_reverse_src_x,Fail KHR-GL46.texture_lod_bias.texture_lod_bias_all,Fail -dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_out_of_bounds_min_reverse_dst_y,Fail -dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_out_of_bounds_min_reverse_src_y,Fail -dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_out_of_bounds_mag_reverse_src_y,Fail -dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_out_of_bounds_min_reverse_src_dst_y,Fail -dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_out_of_bounds_mag_reverse_src_x,Fail -dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_out_of_bounds_mag,Fail # GL tests above, Vulkan tests below diff --git a/src/freedreno/ci/freedreno-a750-fails.txt b/src/freedreno/ci/freedreno-a750-fails.txt index 8fda944175d..e1ddc1a898a 100644 --- a/src/freedreno/ci/freedreno-a750-fails.txt +++ b/src/freedreno/ci/freedreno-a750-fails.txt @@ -18,20 +18,6 @@ KHR-GL46.vertex_attrib_binding.advanced-iterations,Fail KHR-GLES3.framebuffer_blit.framebuffer_blit_functionality_multisampled_to_singlesampled_blit,Fail KHR-GLES31.core.vertex_attrib_binding.advanced-iterations,Fail dEQP-GLES2.functional.texture.mipmap.cube.projected.nearest_linear,Fail -dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_out_of_bounds_mag,Fail -dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_out_of_bounds_mag_reverse_dst_x,Fail -dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_out_of_bounds_mag_reverse_dst_y,Fail -dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_out_of_bounds_mag_reverse_src_dst_x,Fail -dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_out_of_bounds_mag_reverse_src_dst_y,Fail -dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_out_of_bounds_mag_reverse_src_x,Fail -dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_out_of_bounds_mag_reverse_src_y,Fail -dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_out_of_bounds_min,Fail -dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_out_of_bounds_min_reverse_dst_x,Fail -dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_out_of_bounds_min_reverse_dst_y,Fail -dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_out_of_bounds_min_reverse_src_dst_x,Fail -dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_out_of_bounds_min_reverse_src_dst_y,Fail -dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_out_of_bounds_min_reverse_src_x,Fail -dEQP-GLES3.functional.fbo.blit.rect.nearest_consistency_out_of_bounds_min_reverse_src_y,Fail dEQP-GLES3.functional.polygon_offset.fixed16_render_with_units,Fail dEQP-GLES31.functional.texture.border_clamp.range_clamp.linear_float_color,Fail diff --git a/src/gallium/drivers/freedreno/a6xx/fd6_blitter.cc b/src/gallium/drivers/freedreno/a6xx/fd6_blitter.cc index 54fc15048b3..010327252e1 100644 --- a/src/gallium/drivers/freedreno/a6xx/fd6_blitter.cc +++ b/src/gallium/drivers/freedreno/a6xx/fd6_blitter.cc @@ -191,7 +191,12 @@ can_do_blit(const struct pipe_blit_info *info) fail_if(!ok_dims(info->src.resource, &info->src.box, info->src.level)); - fail_if(!ok_dims(info->dst.resource, &info->dst.box, info->dst.level)); + /* We _shouldn't_ be getting negative dst coords, but do as a result of + * y-flip in do_blit_framebuffer(). See + * dEQP-GLES31.functional.primitive_bounding_box.blit_fbo.blit_fbo_to_default + */ + fail_if(info->dst.box.x < 0); + fail_if(info->dst.box.y < 0); assert(info->dst.box.width >= 0); assert(info->dst.box.height >= 0);