i965: Split brw_set_prim into brw/gen6 variants

The "slight optimization to avoid the GS program" in brw_set_prim() is not
used by Gen 6, since Gen 6 doesn't use a GS program. Also, Gen 6 doesn't use
reduced primitives.

Also, document that intel_context.reduced_primitive is only used for Gen < 6

Reviewed-by: Eric Anholt <eric@anho.net>
Signed-off-by: Chad Versace <chad@chad-versace.us>
This commit is contained in:
Chad Versace 2011-09-26 15:48:54 -07:00
parent 95fd5e5aba
commit 9559ca600d
2 changed files with 19 additions and 2 deletions

View file

@ -115,6 +115,19 @@ static GLuint brw_set_prim(struct brw_context *brw,
return prim_to_hw_prim[mode];
}
static GLuint gen6_set_prim(struct brw_context *brw,
const struct _mesa_prim *prim)
{
DBG("PRIM: %s\n", _mesa_lookup_enum_by_nr(prim->mode));
if (prim->mode != brw->primitive) {
brw->primitive = prim->mode;
brw->state.dirty.brw |= BRW_NEW_PRIMITIVE;
}
return prim_to_hw_prim[mode];
}
static GLuint trim(GLenum prim, GLuint length)
{
@ -335,7 +348,11 @@ static GLboolean brw_try_draw_prims( struct gl_context *ctx,
*/
intel_batchbuffer_require_space(intel, estimated_max_prim_size, false);
hw_prim = brw_set_prim(brw, &prim[i]);
if (intel->gen < 6)
hw_prim = brw_set_prim(brw, &prim[i]);
else
hw_prim = gen6_set_prim(brw, &prim[i]);
if (brw->state.dirty.brw) {
brw_validate_state(brw);

View file

@ -253,7 +253,7 @@ struct intel_context
GLuint RenderIndex;
GLmatrix ViewportMatrix;
GLenum render_primitive;
GLenum reduced_primitive;
GLenum reduced_primitive; /*< Only gen < 6 */
GLuint vertex_size;
GLubyte *verts; /* points to tnl->clipspace.vertex_buf */