xf86-video-intel: src/sna/gen4_render.c src/sna/gen5_render.c src/sna/gen6_render.c src/sna/gen7_render.c

Chris Wilson ickle at kemper.freedesktop.org
Sat Jul 14 07:11:57 PDT 2012


 src/sna/gen4_render.c |   91 +++++++++++++++++++------------------------------
 src/sna/gen5_render.c |   92 ++++++++++++++++++++------------------------------
 src/sna/gen6_render.c |   87 +++++++++++++++++++----------------------------
 src/sna/gen7_render.c |   70 ++++++++++++--------------------------
 4 files changed, 131 insertions(+), 209 deletions(-)

New commits:
commit 9f05b0c03b1fdab474b436431c430028fca1937e
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Sat Jul 14 15:03:32 2012 +0100

    sna/gen4+: Fix up card/dest format confusion in previous commit
    
    That would have been much more successful had I not supplied the wrong
    opaque formats to the sampler.
    
    Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>

diff --git a/src/sna/gen4_render.c b/src/sna/gen4_render.c
index 9cd0250..d6623f7 100644
--- a/src/sna/gen4_render.c
+++ b/src/sna/gen4_render.c
@@ -510,75 +510,83 @@ static uint32_t gen4_get_blend(int op,
 	return BLEND_OFFSET(src, dst);
 }
 
-static uint32_t gen4_get_dest_format(PictFormat format)
+static uint32_t gen4_get_card_format(PictFormat format)
 {
 	switch (format) {
 	default:
-		assert(0);
+		return -1;
 	case PICT_a8r8g8b8:
-	case PICT_x8r8g8b8:
 		return GEN4_SURFACEFORMAT_B8G8R8A8_UNORM;
+	case PICT_x8r8g8b8:
+		return GEN4_SURFACEFORMAT_B8G8R8X8_UNORM;
 	case PICT_a8b8g8r8:
-	case PICT_x8b8g8r8:
 		return GEN4_SURFACEFORMAT_R8G8B8A8_UNORM;
+	case PICT_x8b8g8r8:
+		return GEN4_SURFACEFORMAT_R8G8B8X8_UNORM;
 	case PICT_a2r10g10b10:
-	case PICT_x2r10g10b10:
 		return GEN4_SURFACEFORMAT_B10G10R10A2_UNORM;
+	case PICT_x2r10g10b10:
+		return GEN4_SURFACEFORMAT_B10G10R10X2_UNORM;
+	case PICT_a2b10g10r10:
+		return GEN4_SURFACEFORMAT_R10G10B10A2_UNORM;
+	case PICT_r8g8b8:
+		return GEN4_SURFACEFORMAT_R8G8B8_UNORM;
 	case PICT_r5g6b5:
 		return GEN4_SURFACEFORMAT_B5G6R5_UNORM;
 	case PICT_x1r5g5b5:
+		return GEN4_SURFACEFORMAT_B5G5R5X1_UNORM;
 	case PICT_a1r5g5b5:
 		return GEN4_SURFACEFORMAT_B5G5R5A1_UNORM;
 	case PICT_a8:
 		return GEN4_SURFACEFORMAT_A8_UNORM;
 	case PICT_a4r4g4b4:
-	case PICT_x4r4g4b4:
 		return GEN4_SURFACEFORMAT_B4G4R4A4_UNORM;
 	}
 }
 
-static bool gen4_check_dst_format(PictFormat format)
+static uint32_t gen4_get_dest_format(PictFormat format)
 {
 	switch (format) {
+	default:
+		return -1;
 	case PICT_a8r8g8b8:
 	case PICT_x8r8g8b8:
+		return GEN4_SURFACEFORMAT_B8G8R8A8_UNORM;
 	case PICT_a8b8g8r8:
 	case PICT_x8b8g8r8:
+		return GEN4_SURFACEFORMAT_R8G8B8A8_UNORM;
 	case PICT_a2r10g10b10:
 	case PICT_x2r10g10b10:
+		return GEN4_SURFACEFORMAT_B10G10R10A2_UNORM;
 	case PICT_r5g6b5:
+		return GEN4_SURFACEFORMAT_B5G6R5_UNORM;
 	case PICT_x1r5g5b5:
 	case PICT_a1r5g5b5:
+		return GEN4_SURFACEFORMAT_B5G5R5A1_UNORM;
 	case PICT_a8:
+		return GEN4_SURFACEFORMAT_A8_UNORM;
 	case PICT_a4r4g4b4:
 	case PICT_x4r4g4b4:
-		return true;
-	default:
-		DBG(("%s: unhandled format: %x\n", __FUNCTION__, (int)format));
-		return false;
+		return GEN4_SURFACEFORMAT_B4G4R4A4_UNORM;
 	}
 }
 
+static bool gen4_check_dst_format(PictFormat format)
+{
+	if (gen4_check_dst_format(format) != -1)
+		return true;
+
+	DBG(("%s: unhandled format: %x\n", __FUNCTION__, (int)format));
+	return false;
+}
+
 static bool gen4_check_format(uint32_t format)
 {
-	switch (format) {
-	case PICT_a8r8g8b8:
-	case PICT_x8r8g8b8:
-	case PICT_a8b8g8r8:
-	case PICT_x8b8g8r8:
-	case PICT_a2r10g10b10:
-	case PICT_x2r10g10b10:
-	case PICT_r8g8b8:
-	case PICT_r5g6b5:
-	case PICT_a1r5g5b5:
-	case PICT_a8:
-	case PICT_a4r4g4b4:
-	case PICT_x4r4g4b4:
+	if (gen4_get_card_format(format) != -1)
 		return true;
-	default:
-		DBG(("%s: unhandled format: %x\n", __FUNCTION__, format));
-		return false;
-	}
+
+	DBG(("%s: unhandled format: %x\n", __FUNCTION__, (int)format));
+	return false;
 }
 
 typedef struct gen4_surface_state_padded {
@@ -640,33 +648,6 @@ sampler_state_init(struct gen4_sampler_state *sampler_state,
 	}
 }
 
-static uint32_t gen4_get_card_format(PictFormat format)
-{
-	switch (format) {
-	default:
-		return -1;
-	case PICT_a8r8g8b8:
-	case PICT_x8r8g8b8:
-		return GEN4_SURFACEFORMAT_B8G8R8A8_UNORM;
-	case PICT_a8b8g8r8:
-	case PICT_x8b8g8r8:
-		return GEN4_SURFACEFORMAT_R8G8B8A8_UNORM;
-	case PICT_a2r10g10b10:
-	case PICT_x2r10g10b10:
-		return GEN4_SURFACEFORMAT_B10G10R10A2_UNORM;
-	case PICT_r5g6b5:
-		return GEN4_SURFACEFORMAT_B5G6R5_UNORM;
-	case PICT_x1r5g5b5:
-	case PICT_a1r5g5b5:
-		return GEN4_SURFACEFORMAT_B5G5R5A1_UNORM;
-	case PICT_a8:
-		return GEN4_SURFACEFORMAT_A8_UNORM;
-	case PICT_a4r4g4b4:
-	case PICT_x4r4g4b4:
-		return GEN4_SURFACEFORMAT_B4G4R4A4_UNORM;
-	}
-}
-
 static uint32_t gen4_filter(uint32_t filter)
 {
 	switch (filter) {
diff --git a/src/sna/gen5_render.c b/src/sna/gen5_render.c
index 06123cc..f611a51 100644
--- a/src/sna/gen5_render.c
+++ b/src/sna/gen5_render.c
@@ -504,74 +504,83 @@ static uint32_t gen5_get_blend(int op,
 	return BLEND_OFFSET(src, dst);
 }
 
-static uint32_t gen5_get_dest_format(PictFormat format)
+static uint32_t gen5_get_card_format(PictFormat format)
 {
 	switch (format) {
-	case PICT_a8r8g8b8:
-	case PICT_x8r8g8b8:
 	default:
+		return -1;
+	case PICT_a8r8g8b8:
 		return GEN5_SURFACEFORMAT_B8G8R8A8_UNORM;
+	case PICT_x8r8g8b8:
+		return GEN5_SURFACEFORMAT_B8G8R8X8_UNORM;
 	case PICT_a8b8g8r8:
-	case PICT_x8b8g8r8:
 		return GEN5_SURFACEFORMAT_R8G8B8A8_UNORM;
+	case PICT_x8b8g8r8:
+		return GEN5_SURFACEFORMAT_R8G8B8X8_UNORM;
 	case PICT_a2r10g10b10:
-	case PICT_x2r10g10b10:
 		return GEN5_SURFACEFORMAT_B10G10R10A2_UNORM;
+	case PICT_x2r10g10b10:
+		return GEN5_SURFACEFORMAT_B10G10R10X2_UNORM;
+	case PICT_a2b10g10r10:
+		return GEN5_SURFACEFORMAT_R10G10B10A2_UNORM;
+	case PICT_r8g8b8:
+		return GEN5_SURFACEFORMAT_R8G8B8_UNORM;
 	case PICT_r5g6b5:
 		return GEN5_SURFACEFORMAT_B5G6R5_UNORM;
 	case PICT_x1r5g5b5:
+		return GEN5_SURFACEFORMAT_B5G5R5X1_UNORM;
 	case PICT_a1r5g5b5:
 		return GEN5_SURFACEFORMAT_B5G5R5A1_UNORM;
 	case PICT_a8:
 		return GEN5_SURFACEFORMAT_A8_UNORM;
 	case PICT_a4r4g4b4:
-	case PICT_x4r4g4b4:
 		return GEN5_SURFACEFORMAT_B4G4R4A4_UNORM;
 	}
 }
 
-static bool gen5_check_dst_format(PictFormat format)
+static uint32_t gen5_get_dest_format(PictFormat format)
 {
 	switch (format) {
+	default:
+		return -1;
 	case PICT_a8r8g8b8:
 	case PICT_x8r8g8b8:
+		return GEN5_SURFACEFORMAT_B8G8R8A8_UNORM;
 	case PICT_a8b8g8r8:
 	case PICT_x8b8g8r8:
+		return GEN5_SURFACEFORMAT_R8G8B8A8_UNORM;
 	case PICT_a2r10g10b10:
 	case PICT_x2r10g10b10:
+		return GEN5_SURFACEFORMAT_B10G10R10A2_UNORM;
 	case PICT_r5g6b5:
+		return GEN5_SURFACEFORMAT_B5G6R5_UNORM;
 	case PICT_x1r5g5b5:
 	case PICT_a1r5g5b5:
+		return GEN5_SURFACEFORMAT_B5G5R5A1_UNORM;
 	case PICT_a8:
+		return GEN5_SURFACEFORMAT_A8_UNORM;
 	case PICT_a4r4g4b4:
 	case PICT_x4r4g4b4:
-		return true;
-	default:
-		DBG(("%s: unhandled format: %x\n", __FUNCTION__, (int)format));
-		return false;
+		return GEN5_SURFACEFORMAT_B4G4R4A4_UNORM;
 	}
 }
 
+static bool gen5_check_dst_format(PictFormat format)
+{
+	if (gen5_get_dest_format(format) != -1)
+		return true;
+
+	DBG(("%s: unhandled format: %x\n", __FUNCTION__, (int)format));
+	return false;
+}
+
 static bool gen5_check_format(uint32_t format)
 {
-	switch (format) {
-	case PICT_a8r8g8b8:
-	case PICT_x8r8g8b8:
-	case PICT_a8b8g8r8:
-	case PICT_x8b8g8r8:
-	case PICT_a2r10g10b10:
-	case PICT_x2r10g10b10:
-	case PICT_r8g8b8:
-	case PICT_r5g6b5:
-	case PICT_a1r5g5b5:
-	case PICT_a8:
-	case PICT_a4r4g4b4:
-	case PICT_x4r4g4b4:
+	if (gen5_get_card_format(format) != -1)
 		return true;
-	default:
-		DBG(("%s: unhandled format: %x\n", __FUNCTION__, format));
-		return false;
-	}
+
+	DBG(("%s: unhandled format: %x\n", __FUNCTION__, (int)format));
+	return false;
 }
 
 typedef struct gen5_surface_state_padded {
@@ -633,33 +642,6 @@ sampler_state_init(struct gen5_sampler_state *sampler_state,
 	}
 }
 
-static uint32_t gen5_get_card_format(PictFormat format)
-{
-	switch (format) {
-	default:
-		return -1;
-	case PICT_a8r8g8b8:
-	case PICT_x8r8g8b8:
-		return GEN5_SURFACEFORMAT_B8G8R8A8_UNORM;
-	case PICT_a8b8g8r8:
-	case PICT_x8b8g8r8:
-		return GEN5_SURFACEFORMAT_R8G8B8A8_UNORM;
-	case PICT_a2r10g10b10:
-	case PICT_x2r10g10b10:
-		return GEN5_SURFACEFORMAT_B10G10R10A2_UNORM;
-	case PICT_r5g6b5:
-		return GEN5_SURFACEFORMAT_B5G6R5_UNORM;
-	case PICT_x1r5g5b5:
-	case PICT_a1r5g5b5:
-		return GEN5_SURFACEFORMAT_B5G5R5A1_UNORM;
-	case PICT_a8:
-		return GEN5_SURFACEFORMAT_A8_UNORM;
-	case PICT_a4r4g4b4:
-	case PICT_x4r4g4b4:
-		return GEN5_SURFACEFORMAT_B4G4R4A4_UNORM;
-	}
-}
-
 static uint32_t gen5_filter(uint32_t filter)
 {
 	switch (filter) {
diff --git a/src/sna/gen6_render.c b/src/sna/gen6_render.c
index ab3e4d6..c635f4d 100644
--- a/src/sna/gen6_render.c
+++ b/src/sna/gen6_render.c
@@ -241,73 +241,83 @@ static uint32_t gen6_get_blend(int op,
 	return BLEND_OFFSET(src, dst);
 }
 
-static uint32_t gen6_get_dest_format(PictFormat format)
+static uint32_t gen6_get_card_format(PictFormat format)
 {
 	switch (format) {
 	default:
-		assert(0);
+		return -1;
 	case PICT_a8r8g8b8:
-	case PICT_x8r8g8b8:
 		return GEN6_SURFACEFORMAT_B8G8R8A8_UNORM;
+	case PICT_x8r8g8b8:
+		return GEN6_SURFACEFORMAT_B8G8R8X8_UNORM;
 	case PICT_a8b8g8r8:
-	case PICT_x8b8g8r8:
 		return GEN6_SURFACEFORMAT_R8G8B8A8_UNORM;
+	case PICT_x8b8g8r8:
+		return GEN6_SURFACEFORMAT_R8G8B8X8_UNORM;
 	case PICT_a2r10g10b10:
-	case PICT_x2r10g10b10:
 		return GEN6_SURFACEFORMAT_B10G10R10A2_UNORM;
+	case PICT_x2r10g10b10:
+		return GEN6_SURFACEFORMAT_B10G10R10X2_UNORM;
+	case PICT_a2b10g10r10:
+		return GEN6_SURFACEFORMAT_R10G10B10A2_UNORM;
+	case PICT_r8g8b8:
+		return GEN6_SURFACEFORMAT_R8G8B8_UNORM;
 	case PICT_r5g6b5:
 		return GEN6_SURFACEFORMAT_B5G6R5_UNORM;
 	case PICT_x1r5g5b5:
+		return GEN6_SURFACEFORMAT_B5G5R5X1_UNORM;
 	case PICT_a1r5g5b5:
 		return GEN6_SURFACEFORMAT_B5G5R5A1_UNORM;
 	case PICT_a8:
 		return GEN6_SURFACEFORMAT_A8_UNORM;
 	case PICT_a4r4g4b4:
-	case PICT_x4r4g4b4:
 		return GEN6_SURFACEFORMAT_B4G4R4A4_UNORM;
 	}
 }
 
-static bool gen6_check_dst_format(PictFormat format)
+static uint32_t gen6_get_dest_format(PictFormat format)
 {
 	switch (format) {
+	default:
+		return -1;
 	case PICT_a8r8g8b8:
 	case PICT_x8r8g8b8:
+		return GEN6_SURFACEFORMAT_B8G8R8A8_UNORM;
 	case PICT_a8b8g8r8:
 	case PICT_x8b8g8r8:
+		return GEN6_SURFACEFORMAT_R8G8B8A8_UNORM;
 	case PICT_a2r10g10b10:
 	case PICT_x2r10g10b10:
+		return GEN6_SURFACEFORMAT_B10G10R10A2_UNORM;
 	case PICT_r5g6b5:
+		return GEN6_SURFACEFORMAT_B5G6R5_UNORM;
 	case PICT_x1r5g5b5:
 	case PICT_a1r5g5b5:
+		return GEN6_SURFACEFORMAT_B5G5R5A1_UNORM;
 	case PICT_a8:
+		return GEN6_SURFACEFORMAT_A8_UNORM;
 	case PICT_a4r4g4b4:
 	case PICT_x4r4g4b4:
-		return true;
+		return GEN6_SURFACEFORMAT_B4G4R4A4_UNORM;
 	}
+}
+
+static bool gen6_check_dst_format(PictFormat format)
+{
+	if (gen6_get_dest_format(format) != -1)
+		return true;
+
+	DBG(("%s: unhandled format: %x\n", __FUNCTION__, (int)format));
 	return false;
 }
 
 static bool gen6_check_format(uint32_t format)
 {
-	switch (format) {
-	case PICT_a8r8g8b8:
-	case PICT_x8r8g8b8:
-	case PICT_a8b8g8r8:
-	case PICT_x8b8g8r8:
-	case PICT_a2r10g10b10:
-	case PICT_x2r10g10b10:
-	case PICT_r8g8b8:
-	case PICT_r5g6b5:
-	case PICT_a1r5g5b5:
-	case PICT_a8:
-	case PICT_a4r4g4b4:
-	case PICT_x4r4g4b4:
+	if (gen6_get_card_format(format) != -1)
 		return true;
-	default:
-		DBG(("%s: unhandled format: %x\n", __FUNCTION__, format));
-		return false;
-	}
+
+	DBG(("%s: unhandled format: %x\n", __FUNCTION__, (int)format));
+	return false;
 }
 
 static uint32_t gen6_filter(uint32_t filter)
@@ -1116,33 +1126,6 @@ static uint32_t gen6_create_cc_viewport(struct sna_static_stream *stream)
 	return sna_static_stream_add(stream, &vp, sizeof(vp), 32);
 }
 
-static uint32_t gen6_get_card_format(PictFormat format)
-{
-	switch (format) {
-	default:
-		return -1;
-	case PICT_a8r8g8b8:
-	case PICT_x8r8g8b8:
-		return GEN6_SURFACEFORMAT_B8G8R8A8_UNORM;
-	case PICT_a8b8g8r8:
-	case PICT_x8b8g8r8:
-		return GEN6_SURFACEFORMAT_R8G8B8A8_UNORM;
-	case PICT_a2r10g10b10:
-	case PICT_x2r10g10b10:
-		return GEN6_SURFACEFORMAT_B10G10R10A2_UNORM;
-	case PICT_r5g6b5:
-		return GEN6_SURFACEFORMAT_B5G6R5_UNORM;
-	case PICT_x1r5g5b5:
-	case PICT_a1r5g5b5:
-		return GEN6_SURFACEFORMAT_B5G5R5A1_UNORM;
-	case PICT_a8:
-		return GEN6_SURFACEFORMAT_A8_UNORM;
-	case PICT_a4r4g4b4:
-	case PICT_x4r4g4b4:
-		return GEN6_SURFACEFORMAT_B4G4R4A4_UNORM;
-	}
-}
-
 static uint32_t
 gen6_tiling_bits(uint32_t tiling)
 {
diff --git a/src/sna/gen7_render.c b/src/sna/gen7_render.c
index 5d1d93f..9e7683e 100644
--- a/src/sna/gen7_render.c
+++ b/src/sna/gen7_render.c
@@ -274,7 +274,7 @@ static uint32_t gen7_get_blend(int op,
 	return BLEND_OFFSET(src, dst);
 }
 
-static uint32_t gen7_get_dest_format(PictFormat format)
+static uint32_t gen7_get_card_format(PictFormat format)
 {
 	switch (format) {
 	default:
@@ -308,46 +308,49 @@ static uint32_t gen7_get_dest_format(PictFormat format)
 	}
 }
 
-static bool gen7_check_dst_format(PictFormat format)
+static uint32_t gen7_get_dest_format(PictFormat format)
 {
 	switch (format) {
+	default:
+		return -1;
 	case PICT_a8r8g8b8:
 	case PICT_x8r8g8b8:
+		return GEN7_SURFACEFORMAT_B8G8R8A8_UNORM;
 	case PICT_a8b8g8r8:
 	case PICT_x8b8g8r8:
+		return GEN7_SURFACEFORMAT_R8G8B8A8_UNORM;
 	case PICT_a2r10g10b10:
 	case PICT_x2r10g10b10:
+		return GEN7_SURFACEFORMAT_B10G10R10A2_UNORM;
 	case PICT_r5g6b5:
+		return GEN7_SURFACEFORMAT_B5G6R5_UNORM;
 	case PICT_x1r5g5b5:
 	case PICT_a1r5g5b5:
+		return GEN7_SURFACEFORMAT_B5G5R5A1_UNORM;
 	case PICT_a8:
+		return GEN7_SURFACEFORMAT_A8_UNORM;
 	case PICT_a4r4g4b4:
 	case PICT_x4r4g4b4:
-		return true;
+		return GEN7_SURFACEFORMAT_B4G4R4A4_UNORM;
 	}
+}
+
+static bool gen7_check_dst_format(PictFormat format)
+{
+	if (gen7_get_dest_format(format) != -1)
+		return true;
+
+	DBG(("%s: unhandled format: %x\n", __FUNCTION__, (int)format));
 	return false;
 }
 
 static bool gen7_check_format(uint32_t format)
 {
-	switch (format) {
-	case PICT_a8r8g8b8:
-	case PICT_x8r8g8b8:
-	case PICT_a8b8g8r8:
-	case PICT_x8b8g8r8:
-	case PICT_a2r10g10b10:
-	case PICT_x2r10g10b10:
-	case PICT_r8g8b8:
-	case PICT_r5g6b5:
-	case PICT_a1r5g5b5:
-	case PICT_a8:
-	case PICT_a4r4g4b4:
-	case PICT_x4r4g4b4:
+	if (gen7_get_card_format(format) != -1)
 		return true;
-	default:
-		DBG(("%s: unhandled format: %x\n", __FUNCTION__, format));
-		return false;
-	}
+
+	DBG(("%s: unhandled format: %x\n", __FUNCTION__, (int)format));
+	return false;
 }
 
 static uint32_t gen7_filter(uint32_t filter)
@@ -1264,33 +1267,6 @@ static uint32_t gen7_create_cc_viewport(struct sna_static_stream *stream)
 	return sna_static_stream_add(stream, &vp, sizeof(vp), 32);
 }
 
-static uint32_t gen7_get_card_format(PictFormat format)
-{
-	switch (format) {
-	default:
-		return -1;
-	case PICT_a8r8g8b8:
-	case PICT_x8r8g8b8:
-		return GEN7_SURFACEFORMAT_B8G8R8A8_UNORM;
-	case PICT_a8b8g8r8:
-	case PICT_x8b8g8r8:
-		return GEN7_SURFACEFORMAT_R8G8B8A8_UNORM;
-	case PICT_a2r10g10b10:
-	case PICT_x2r10g10b10:
-		return GEN7_SURFACEFORMAT_B10G10R10A2_UNORM;
-	case PICT_r5g6b5:
-		return GEN7_SURFACEFORMAT_B5G6R5_UNORM;
-	case PICT_x1r5g5b5:
-	case PICT_a1r5g5b5:
-		return GEN7_SURFACEFORMAT_B5G5R5A1_UNORM;
-	case PICT_a8:
-		return GEN7_SURFACEFORMAT_A8_UNORM;
-	case PICT_a4r4g4b4:
-	case PICT_x4r4g4b4:
-		return GEN7_SURFACEFORMAT_B4G4R4A4_UNORM;
-	}
-}
-
 static uint32_t
 gen7_tiling_bits(uint32_t tiling)
 {


More information about the xorg-commit mailing list