Mesa (master): r300g: make translate_primitive table-driven
Marek Olšák
mareko at kemper.freedesktop.org
Wed Jun 8 23:26:59 UTC 2011
Module: Mesa
Branch: master
Commit: f48412c39f2ea3e2c25191814f519f84efec7a95
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=f48412c39f2ea3e2c25191814f519f84efec7a95
Author: Marek Olšák <maraeo at gmail.com>
Date: Thu Jun 9 00:33:45 2011 +0200
r300g: make translate_primitive table-driven
---
src/gallium/drivers/r300/r300_render.c | 44 ++++++++++++++-----------------
1 files changed, 20 insertions(+), 24 deletions(-)
diff --git a/src/gallium/drivers/r300/r300_render.c b/src/gallium/drivers/r300/r300_render.c
index b24e7fa..479503f 100644
--- a/src/gallium/drivers/r300/r300_render.c
+++ b/src/gallium/drivers/r300/r300_render.c
@@ -46,30 +46,26 @@
static uint32_t r300_translate_primitive(unsigned prim)
{
- switch (prim) {
- case PIPE_PRIM_POINTS:
- return R300_VAP_VF_CNTL__PRIM_POINTS;
- case PIPE_PRIM_LINES:
- return R300_VAP_VF_CNTL__PRIM_LINES;
- case PIPE_PRIM_LINE_LOOP:
- return R300_VAP_VF_CNTL__PRIM_LINE_LOOP;
- case PIPE_PRIM_LINE_STRIP:
- return R300_VAP_VF_CNTL__PRIM_LINE_STRIP;
- case PIPE_PRIM_TRIANGLES:
- return R300_VAP_VF_CNTL__PRIM_TRIANGLES;
- case PIPE_PRIM_TRIANGLE_STRIP:
- return R300_VAP_VF_CNTL__PRIM_TRIANGLE_STRIP;
- case PIPE_PRIM_TRIANGLE_FAN:
- return R300_VAP_VF_CNTL__PRIM_TRIANGLE_FAN;
- case PIPE_PRIM_QUADS:
- return R300_VAP_VF_CNTL__PRIM_QUADS;
- case PIPE_PRIM_QUAD_STRIP:
- return R300_VAP_VF_CNTL__PRIM_QUAD_STRIP;
- case PIPE_PRIM_POLYGON:
- return R300_VAP_VF_CNTL__PRIM_POLYGON;
- default:
- return 0;
- }
+ static const int prim_conv[] = {
+ R300_VAP_VF_CNTL__PRIM_POINTS,
+ R300_VAP_VF_CNTL__PRIM_LINES,
+ R300_VAP_VF_CNTL__PRIM_LINE_LOOP,
+ R300_VAP_VF_CNTL__PRIM_LINE_STRIP,
+ R300_VAP_VF_CNTL__PRIM_TRIANGLES,
+ R300_VAP_VF_CNTL__PRIM_TRIANGLE_STRIP,
+ R300_VAP_VF_CNTL__PRIM_TRIANGLE_FAN,
+ R300_VAP_VF_CNTL__PRIM_QUADS,
+ R300_VAP_VF_CNTL__PRIM_QUAD_STRIP,
+ R300_VAP_VF_CNTL__PRIM_POLYGON,
+ -1,
+ -1,
+ -1,
+ -1
+ };
+ unsigned hwprim = prim_conv[prim];
+
+ assert(hwprim != -1);
+ return hwprim;
}
static uint32_t r300_provoking_vertex_fixes(struct r300_context *r300,
More information about the mesa-commit
mailing list