Mesa (master): freedreno/a6xx: Don't blit with R2D_RAW

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Tue Jul 14 06:27:38 UTC 2020


Module: Mesa
Branch: master
Commit: 094b68fa728621b2d4f89479bd1b15a1767683ef
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=094b68fa728621b2d4f89479bd1b15a1767683ef

Author: Kristian H. Kristensen <hoegsberg at google.com>
Date:   Wed Jul  1 14:50:52 2020 -0700

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: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5717>

---

 .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;



More information about the mesa-commit mailing list