From 094b68fa728621b2d4f89479bd1b15a1767683ef Mon Sep 17 00:00:00 2001 From: "Kristian H. Kristensen" Date: Wed, 1 Jul 2020 14:50:52 -0700 Subject: [PATCH] freedreno/a6xx: Don't blit with R2D_RAW Map all formats to a valid ifmt. FMT6_10_10_10_2_UNORM_DEST still doesn't work on the blitter so keep that one on the u_blitter path. Fixes dEQP-GLES31.functional.draw_buffers_indexed.random.max_implementation_draw_buffers.* with FD_MESA_DEBUG=nogmem. Part-of: --- .gitlab-ci/deqp-freedreno-a630-bypass-fails.txt | 10 ---------- .gitlab-ci/traces-baremetal.yml | 2 +- src/gallium/drivers/freedreno/a6xx/fd6_blitter.c | 13 +------------ src/gallium/drivers/freedreno/a6xx/fd6_format.h | 15 +++++++-------- 4 files changed, 9 insertions(+), 31 deletions(-) diff --git a/.gitlab-ci/deqp-freedreno-a630-bypass-fails.txt b/.gitlab-ci/deqp-freedreno-a630-bypass-fails.txt index 45fac70f001..db865ecf467 100644 --- a/.gitlab-ci/deqp-freedreno-a630-bypass-fails.txt +++ b/.gitlab-ci/deqp-freedreno-a630-bypass-fails.txt @@ -67,16 +67,6 @@ dEQP-GLES31.functional.draw_buffers_indexed.overwrite_indexed.common_advanced_bl dEQP-GLES31.functional.draw_buffers_indexed.overwrite_indexed.common_advanced_blend_eq_buffer_blend_eq dEQP-GLES31.functional.draw_buffers_indexed.overwrite_indexed.common_advanced_blend_eq_buffer_separate_blend_eq dEQP-GLES31.functional.draw_buffers_indexed.overwrite_indexed.common_separate_blend_eq_buffer_blend_eq -dEQP-GLES31.functional.draw_buffers_indexed.random.max_implementation_draw_buffers.11 -dEQP-GLES31.functional.draw_buffers_indexed.random.max_implementation_draw_buffers.15 -dEQP-GLES31.functional.draw_buffers_indexed.random.max_implementation_draw_buffers.17 -dEQP-GLES31.functional.draw_buffers_indexed.random.max_implementation_draw_buffers.18 -dEQP-GLES31.functional.draw_buffers_indexed.random.max_implementation_draw_buffers.2 -dEQP-GLES31.functional.draw_buffers_indexed.random.max_implementation_draw_buffers.3 -dEQP-GLES31.functional.draw_buffers_indexed.random.max_implementation_draw_buffers.6 -dEQP-GLES31.functional.draw_buffers_indexed.random.max_implementation_draw_buffers.7 -dEQP-GLES31.functional.draw_buffers_indexed.random.max_required_draw_buffers.19 -dEQP-GLES31.functional.draw_buffers_indexed.random.max_required_draw_buffers.3 dEQP-GLES31.functional.image_load_store.early_fragment_tests.early_fragment_tests_depth_fbo dEQP-GLES31.functional.ssbo.layout.3_level_array.std140.column_major_mat4x2 dEQP-GLES31.functional.ssbo.layout.3_level_unsized_array.std430.mat3 diff --git a/.gitlab-ci/traces-baremetal.yml b/.gitlab-ci/traces-baremetal.yml index 09df7af9365..95da793883a 100644 --- a/.gitlab-ci/traces-baremetal.yml +++ b/.gitlab-ci/traces-baremetal.yml @@ -72,7 +72,7 @@ traces: expectations: # Bad rendering -- some sort of gap in the upper right of the image. - device: freedreno-a630 - checksum: 1c7411cebed6ba0015aaef102539fc5a + checksum: c6d7e9712631762b6acdd53bc1dd2aa3 - path: humus/RaytracedShadows.trace expectations: - device: freedreno-a630 diff --git a/src/gallium/drivers/freedreno/a6xx/fd6_blitter.c b/src/gallium/drivers/freedreno/a6xx/fd6_blitter.c index feb2b44d4a4..e90807fc340 100644 --- a/src/gallium/drivers/freedreno/a6xx/fd6_blitter.c +++ b/src/gallium/drivers/freedreno/a6xx/fd6_blitter.c @@ -80,7 +80,7 @@ ok_format(enum pipe_format pfmt) if (fmt == FMT6_NONE) return false; - if (fd6_ifmt(fmt) == 0) + if (fmt == FMT6_10_10_10_2_UNORM_DEST) return false; return true; @@ -409,15 +409,6 @@ emit_blit_or_clear_texture(struct fd_context *ctx, struct fd_ringbuffer *ring, dfmt = FMT6_Z24_UNORM_S8_UINT_AS_R8G8B8A8; break; } - case PIPE_FORMAT_B5G6R5_UNORM: - case PIPE_FORMAT_B5G5R5A1_UNORM: - case PIPE_FORMAT_B5G5R5X1_UNORM: - case PIPE_FORMAT_B4G4R4A4_UNORM: - color->ui[0] = float_to_ubyte(color->f[0]); - color->ui[1] = float_to_ubyte(color->f[1]); - color->ui[2] = float_to_ubyte(color->f[2]); - color->ui[3] = float_to_ubyte(color->f[3]); - break; default: break; } @@ -439,12 +430,10 @@ emit_blit_or_clear_texture(struct fd_context *ctx, struct fd_ringbuffer *ring, OUT_RING(ring, _mesa_float_to_half(color->f[3])); sfmt = FMT6_16_16_16_16_FLOAT; break; - case R2D_FLOAT32: case R2D_INT32: case R2D_INT16: case R2D_INT8: - case R2D_RAW: default: OUT_RING(ring, color->ui[0]); OUT_RING(ring, color->ui[1]); diff --git a/src/gallium/drivers/freedreno/a6xx/fd6_format.h b/src/gallium/drivers/freedreno/a6xx/fd6_format.h index a7fe81084e7..331450eb768 100644 --- a/src/gallium/drivers/freedreno/a6xx/fd6_format.h +++ b/src/gallium/drivers/freedreno/a6xx/fd6_format.h @@ -61,6 +61,9 @@ fd6_ifmt(enum a6xx_format fmt) case FMT6_8_8_8_8_UNORM: case FMT6_8_8_8_X8_UNORM: case FMT6_8_8_8_8_SNORM: + case FMT6_4_4_4_4_UNORM: + case FMT6_5_5_5_1_UNORM: + case FMT6_5_6_5_UNORM: return R2D_UNORM8; case FMT6_32_UINT: @@ -77,6 +80,7 @@ fd6_ifmt(enum a6xx_format fmt) case FMT6_16_16_SINT: case FMT6_16_16_16_16_UINT: case FMT6_16_16_16_16_SINT: + case FMT6_10_10_10_2_UINT: return R2D_INT16; case FMT6_8_UINT: @@ -85,6 +89,8 @@ fd6_ifmt(enum a6xx_format fmt) case FMT6_8_8_SINT: case FMT6_8_8_8_8_UINT: case FMT6_8_8_8_8_SINT: + case FMT6_Z24_UNORM_S8_UINT: + case FMT6_Z24_UNORM_S8_UINT_AS_R8G8B8A8: return R2D_INT8; case FMT6_16_UNORM: @@ -102,16 +108,9 @@ fd6_ifmt(enum a6xx_format fmt) case FMT6_16_16_FLOAT: case FMT6_16_16_16_16_FLOAT: case FMT6_11_11_10_FLOAT: + case FMT6_10_10_10_2_UNORM_DEST: return R2D_FLOAT16; - case FMT6_10_10_10_2_UNORM_DEST: - case FMT6_4_4_4_4_UNORM: - case FMT6_5_5_5_1_UNORM: - case FMT6_5_6_5_UNORM: - case FMT6_10_10_10_2_UINT: - case FMT6_Z24_UNORM_S8_UINT: - case FMT6_Z24_UNORM_S8_UINT_AS_R8G8B8A8: - return R2D_RAW; default: unreachable("bad format"); return 0; -- 2.30.2