diff options
author | Kristian Høgsberg <krh@bitplanet.net> | 2014-07-07 15:11:45 -0700 |
---|---|---|
committer | Kristian Høgsberg <krh@bitplanet.net> | 2014-08-15 10:33:41 -0700 |
commit | 3f0f2c7f7d558a96e540bed3bfb4de835e9f40e0 (patch) | |
tree | 7f3fdab07488bb9a6a0fd1fba12500912c3eed82 /src/mesa/drivers/dri/i965/brw_draw.c | |
parent | ff7a2fc322a0ae0a36a976444b7506e9313ac630 (diff) | |
download | external_mesa3d-3f0f2c7f7d558a96e540bed3bfb4de835e9f40e0.zip external_mesa3d-3f0f2c7f7d558a96e540bed3bfb4de835e9f40e0.tar.gz external_mesa3d-3f0f2c7f7d558a96e540bed3bfb4de835e9f40e0.tar.bz2 |
i965: Add a mechanism for sending native primitives into the driver
The brw_draw_prims() function is the draw entry point into the driver,
and takes struct _mesa_prim for input. We want to be able to feed
native primitives into the driver, and to that end we introduce
BRW_PRIM_OFFSET, which lets use describe geometry using the native
GEN primitive types.
Signed-off-by: Kristian Høgsberg <krh@bitplanet.net>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Diffstat (limited to 'src/mesa/drivers/dri/i965/brw_draw.c')
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_draw.c | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_draw.c b/src/mesa/drivers/dri/i965/brw_draw.c index 412c360..f84a2ad 100644 --- a/src/mesa/drivers/dri/i965/brw_draw.c +++ b/src/mesa/drivers/dri/i965/brw_draw.c @@ -55,7 +55,7 @@ #define FILE_DEBUG_FLAG DEBUG_PRIMS -const GLuint prim_to_hw_prim[GL_TRIANGLE_STRIP_ADJACENCY+1] = { +static const GLuint prim_to_hw_prim[GL_TRIANGLE_STRIP_ADJACENCY+1] = { _3DPRIM_POINTLIST, _3DPRIM_LINELIST, _3DPRIM_LINELOOP, @@ -86,6 +86,15 @@ static const GLenum reduced_prim[GL_POLYGON+1] = { GL_TRIANGLES }; +uint32_t +get_hw_prim_for_gl_prim(int mode) +{ + if (mode >= BRW_PRIM_OFFSET) + return mode - BRW_PRIM_OFFSET; + else + return prim_to_hw_prim[mode]; +} + /* When the primitive changes, set a state bit and re-validate. Not * the nicest and would rather deal with this by having all the @@ -96,7 +105,7 @@ static void brw_set_prim(struct brw_context *brw, const struct _mesa_prim *prim) { struct gl_context *ctx = &brw->ctx; - uint32_t hw_prim = prim_to_hw_prim[prim->mode]; + uint32_t hw_prim = get_hw_prim_for_gl_prim(prim->mode); DBG("PRIM: %s\n", _mesa_lookup_enum_by_nr(prim->mode)); @@ -133,7 +142,7 @@ static void gen6_set_prim(struct brw_context *brw, DBG("PRIM: %s\n", _mesa_lookup_enum_by_nr(prim->mode)); - hw_prim = prim_to_hw_prim[prim->mode]; + hw_prim = get_hw_prim_for_gl_prim(prim->mode); if (hw_prim != brw->primitive) { brw->primitive = hw_prim; |