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 06:57:09 PDT 2012
src/sna/gen4_render.c | 47 ++++++++++++++++-------------------
src/sna/gen5_render.c | 50 ++++++++++++++++---------------------
src/sna/gen6_render.c | 50 ++++++++++++++++---------------------
src/sna/gen7_render.c | 67 +++++++++++++++++++++++++-------------------------
4 files changed, 100 insertions(+), 114 deletions(-)
New commits:
commit fffbc34e4621898eee9b80bf8b6b3699bcade52a
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date: Sat Jul 14 14:54:27 2012 +0100
sna/gen4+: Translate to card format using a switch
GCC produces faster code than a walk over the format tables.
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 2edfbd0..9cd0250 100644
--- a/src/sna/gen4_render.c
+++ b/src/sna/gen4_render.c
@@ -249,25 +249,6 @@ static const struct blendinfo {
*/
#define GEN4_BLENDFACTOR_COUNT (GEN4_BLENDFACTOR_INV_DST_ALPHA + 1)
-static const struct formatinfo {
- CARD32 pict_fmt;
- uint32_t card_fmt;
-} gen4_tex_formats[] = {
- {PICT_a8, GEN4_SURFACEFORMAT_A8_UNORM},
- {PICT_a8r8g8b8, GEN4_SURFACEFORMAT_B8G8R8A8_UNORM},
- {PICT_x8r8g8b8, GEN4_SURFACEFORMAT_B8G8R8X8_UNORM},
- {PICT_a8b8g8r8, GEN4_SURFACEFORMAT_R8G8B8A8_UNORM},
- {PICT_x8b8g8r8, GEN4_SURFACEFORMAT_R8G8B8X8_UNORM},
- {PICT_r8g8b8, GEN4_SURFACEFORMAT_R8G8B8_UNORM},
- {PICT_r5g6b5, GEN4_SURFACEFORMAT_B5G6R5_UNORM},
- {PICT_a1r5g5b5, GEN4_SURFACEFORMAT_B5G5R5A1_UNORM},
- {PICT_a2r10g10b10, GEN4_SURFACEFORMAT_B10G10R10A2_UNORM},
- {PICT_x2r10g10b10, GEN4_SURFACEFORMAT_B10G10R10X2_UNORM},
- {PICT_a2b10g10r10, GEN4_SURFACEFORMAT_R10G10B10A2_UNORM},
- {PICT_x2r10g10b10, GEN4_SURFACEFORMAT_B10G10R10X2_UNORM},
- {PICT_a4r4g4b4, GEN4_SURFACEFORMAT_B4G4R4A4_UNORM},
-};
-
#define BLEND_OFFSET(s, d) \
(((s) * GEN4_BLENDFACTOR_COUNT + (d)) * 64)
@@ -661,13 +642,29 @@ sampler_state_init(struct gen4_sampler_state *sampler_state,
static uint32_t gen4_get_card_format(PictFormat format)
{
- unsigned int i;
-
- for (i = 0; i < ARRAY_SIZE(gen4_tex_formats); i++) {
- if (gen4_tex_formats[i].pict_fmt == format)
- return gen4_tex_formats[i].card_fmt;
+ 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;
}
- return -1;
}
static uint32_t gen4_filter(uint32_t filter)
diff --git a/src/sna/gen5_render.c b/src/sna/gen5_render.c
index c4b1ecf..06123cc 100644
--- a/src/sna/gen5_render.c
+++ b/src/sna/gen5_render.c
@@ -235,28 +235,6 @@ static const struct blendinfo {
*/
#define GEN5_BLENDFACTOR_COUNT (GEN5_BLENDFACTOR_INV_DST_ALPHA + 1)
-/* FIXME: surface format defined in gen5_defines.h, shared Sampling engine
- * 1.7.2
- */
-static const struct formatinfo {
- CARD32 pict_fmt;
- uint32_t card_fmt;
-} gen5_tex_formats[] = {
- {PICT_a8, GEN5_SURFACEFORMAT_A8_UNORM},
- {PICT_a8r8g8b8, GEN5_SURFACEFORMAT_B8G8R8A8_UNORM},
- {PICT_x8r8g8b8, GEN5_SURFACEFORMAT_B8G8R8X8_UNORM},
- {PICT_a8b8g8r8, GEN5_SURFACEFORMAT_R8G8B8A8_UNORM},
- {PICT_x8b8g8r8, GEN5_SURFACEFORMAT_R8G8B8X8_UNORM},
- {PICT_r8g8b8, GEN5_SURFACEFORMAT_R8G8B8_UNORM},
- {PICT_r5g6b5, GEN5_SURFACEFORMAT_B5G6R5_UNORM},
- {PICT_a1r5g5b5, GEN5_SURFACEFORMAT_B5G5R5A1_UNORM},
- {PICT_a2r10g10b10, GEN5_SURFACEFORMAT_B10G10R10A2_UNORM},
- {PICT_x2r10g10b10, GEN5_SURFACEFORMAT_B10G10R10X2_UNORM},
- {PICT_a2b10g10r10, GEN5_SURFACEFORMAT_R10G10B10A2_UNORM},
- {PICT_x2r10g10b10, GEN5_SURFACEFORMAT_B10G10R10X2_UNORM},
- {PICT_a4r4g4b4, GEN5_SURFACEFORMAT_B4G4R4A4_UNORM},
-};
-
#define BLEND_OFFSET(s, d) \
(((s) * GEN5_BLENDFACTOR_COUNT + (d)) * 64)
@@ -657,13 +635,29 @@ sampler_state_init(struct gen5_sampler_state *sampler_state,
static uint32_t gen5_get_card_format(PictFormat format)
{
- unsigned int i;
-
- for (i = 0; i < ARRAY_SIZE(gen5_tex_formats); i++) {
- if (gen5_tex_formats[i].pict_fmt == format)
- return gen5_tex_formats[i].card_fmt;
+ 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;
}
- return -1;
}
static uint32_t gen5_filter(uint32_t filter)
diff --git a/src/sna/gen6_render.c b/src/sna/gen6_render.c
index ccf27be..ab3e4d6 100644
--- a/src/sna/gen6_render.c
+++ b/src/sna/gen6_render.c
@@ -188,28 +188,6 @@ static const struct blendinfo {
*/
#define GEN6_BLENDFACTOR_COUNT (GEN6_BLENDFACTOR_INV_DST_ALPHA + 1)
-/* FIXME: surface format defined in gen6_defines.h, shared Sampling engine
- * 1.7.2
- */
-static const struct formatinfo {
- CARD32 pict_fmt;
- uint32_t card_fmt;
-} gen6_tex_formats[] = {
- {PICT_a8, GEN6_SURFACEFORMAT_A8_UNORM},
- {PICT_a8r8g8b8, GEN6_SURFACEFORMAT_B8G8R8A8_UNORM},
- {PICT_x8r8g8b8, GEN6_SURFACEFORMAT_B8G8R8X8_UNORM},
- {PICT_a8b8g8r8, GEN6_SURFACEFORMAT_R8G8B8A8_UNORM},
- {PICT_x8b8g8r8, GEN6_SURFACEFORMAT_R8G8B8X8_UNORM},
- {PICT_r8g8b8, GEN6_SURFACEFORMAT_R8G8B8_UNORM},
- {PICT_r5g6b5, GEN6_SURFACEFORMAT_B5G6R5_UNORM},
- {PICT_a1r5g5b5, GEN6_SURFACEFORMAT_B5G5R5A1_UNORM},
- {PICT_a2r10g10b10, GEN6_SURFACEFORMAT_B10G10R10A2_UNORM},
- {PICT_x2r10g10b10, GEN6_SURFACEFORMAT_B10G10R10X2_UNORM},
- {PICT_a2b10g10r10, GEN6_SURFACEFORMAT_R10G10B10A2_UNORM},
- {PICT_x2r10g10b10, GEN6_SURFACEFORMAT_B10G10R10X2_UNORM},
- {PICT_a4r4g4b4, GEN6_SURFACEFORMAT_B4G4R4A4_UNORM},
-};
-
#define GEN6_BLEND_STATE_PADDED_SIZE ALIGN(sizeof(struct gen6_blend_state), 64)
#define BLEND_OFFSET(s, d) \
@@ -1140,13 +1118,29 @@ static uint32_t gen6_create_cc_viewport(struct sna_static_stream *stream)
static uint32_t gen6_get_card_format(PictFormat format)
{
- unsigned int i;
-
- for (i = 0; i < ARRAY_SIZE(gen6_tex_formats); i++) {
- if (gen6_tex_formats[i].pict_fmt == format)
- return gen6_tex_formats[i].card_fmt;
+ 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;
}
- return -1;
}
static uint32_t
diff --git a/src/sna/gen7_render.c b/src/sna/gen7_render.c
index e76acd8..5d1d93f 100644
--- a/src/sna/gen7_render.c
+++ b/src/sna/gen7_render.c
@@ -221,28 +221,6 @@ static const struct blendinfo {
*/
#define GEN7_BLENDFACTOR_COUNT (GEN7_BLENDFACTOR_INV_DST_ALPHA + 1)
-/* FIXME: surface format defined in gen7_defines.h, shared Sampling engine
- * 1.7.2
- */
-static const struct formatinfo {
- CARD32 pict_fmt;
- uint32_t card_fmt;
-} gen7_tex_formats[] = {
- {PICT_a8, GEN7_SURFACEFORMAT_A8_UNORM},
- {PICT_a8r8g8b8, GEN7_SURFACEFORMAT_B8G8R8A8_UNORM},
- {PICT_x8r8g8b8, GEN7_SURFACEFORMAT_B8G8R8X8_UNORM},
- {PICT_a8b8g8r8, GEN7_SURFACEFORMAT_R8G8B8A8_UNORM},
- {PICT_x8b8g8r8, GEN7_SURFACEFORMAT_R8G8B8X8_UNORM},
- {PICT_r8g8b8, GEN7_SURFACEFORMAT_R8G8B8_UNORM},
- {PICT_r5g6b5, GEN7_SURFACEFORMAT_B5G6R5_UNORM},
- {PICT_a1r5g5b5, GEN7_SURFACEFORMAT_B5G5R5A1_UNORM},
- {PICT_a2r10g10b10, GEN7_SURFACEFORMAT_B10G10R10A2_UNORM},
- {PICT_x2r10g10b10, GEN7_SURFACEFORMAT_B10G10R10X2_UNORM},
- {PICT_a2b10g10r10, GEN7_SURFACEFORMAT_R10G10B10A2_UNORM},
- {PICT_x2r10g10b10, GEN7_SURFACEFORMAT_B10G10R10X2_UNORM},
- {PICT_a4r4g4b4, GEN7_SURFACEFORMAT_B4G4R4A4_UNORM},
-};
-
#define GEN7_BLEND_STATE_PADDED_SIZE ALIGN(sizeof(struct gen7_blend_state), 64)
#define BLEND_OFFSET(s, d) \
@@ -300,25 +278,32 @@ static uint32_t gen7_get_dest_format(PictFormat format)
{
switch (format) {
default:
- assert(0);
+ return -1;
case PICT_a8r8g8b8:
- case PICT_x8r8g8b8:
return GEN7_SURFACEFORMAT_B8G8R8A8_UNORM;
+ case PICT_x8r8g8b8:
+ return GEN7_SURFACEFORMAT_B8G8R8X8_UNORM;
case PICT_a8b8g8r8:
- case PICT_x8b8g8r8:
return GEN7_SURFACEFORMAT_R8G8B8A8_UNORM;
+ case PICT_x8b8g8r8:
+ return GEN7_SURFACEFORMAT_R8G8B8X8_UNORM;
case PICT_a2r10g10b10:
- case PICT_x2r10g10b10:
return GEN7_SURFACEFORMAT_B10G10R10A2_UNORM;
+ case PICT_x2r10g10b10:
+ return GEN7_SURFACEFORMAT_B10G10R10X2_UNORM;
+ case PICT_a2b10g10r10:
+ return GEN7_SURFACEFORMAT_R10G10B10A2_UNORM;
+ case PICT_r8g8b8:
+ return GEN7_SURFACEFORMAT_R8G8B8_UNORM;
case PICT_r5g6b5:
return GEN7_SURFACEFORMAT_B5G6R5_UNORM;
case PICT_x1r5g5b5:
+ return GEN7_SURFACEFORMAT_B5G5R5X1_UNORM;
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;
}
}
@@ -1281,13 +1266,29 @@ static uint32_t gen7_create_cc_viewport(struct sna_static_stream *stream)
static uint32_t gen7_get_card_format(PictFormat format)
{
- unsigned int i;
-
- for (i = 0; i < ARRAY_SIZE(gen7_tex_formats); i++) {
- if (gen7_tex_formats[i].pict_fmt == format)
- return gen7_tex_formats[i].card_fmt;
+ 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;
}
- return -1;
}
static uint32_t
More information about the xorg-commit
mailing list