diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/mesa/drivers/dri/i965/brw_defines.h | 2 | ||||
| -rw-r--r-- | src/mesa/drivers/dri/i965/brw_sf_emit.c | 9 | ||||
| -rw-r--r-- | src/mesa/drivers/dri/i965/brw_sf_state.c | 2 | 
3 files changed, 13 insertions, 0 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_defines.h b/src/mesa/drivers/dri/i965/brw_defines.h index e8f878a701..9bb7d2f703 100644 --- a/src/mesa/drivers/dri/i965/brw_defines.h +++ b/src/mesa/drivers/dri/i965/brw_defines.h @@ -240,6 +240,8 @@  #define BRW_FRONTWINDING_CW      0  #define BRW_FRONTWINDING_CCW     1 +#define BRW_SPRITE_POINT_ENABLE  16 +  #define BRW_INDEX_BYTE     0  #define BRW_INDEX_WORD     1  #define BRW_INDEX_DWORD    2 diff --git a/src/mesa/drivers/dri/i965/brw_sf_emit.c b/src/mesa/drivers/dri/i965/brw_sf_emit.c index 7ecf9bb560..22911a4649 100644 --- a/src/mesa/drivers/dri/i965/brw_sf_emit.c +++ b/src/mesa/drivers/dri/i965/brw_sf_emit.c @@ -641,6 +641,7 @@ void brw_emit_anyprim_setup( struct brw_sf_compile *c )     struct brw_compile *p = &c->func;     struct brw_reg ip = brw_ip_reg();     struct brw_reg payload_prim = brw_uw1_reg(BRW_GENERAL_REGISTER_FILE, 1, 0); +   struct brw_reg payload_attr = get_element_ud(brw_vec1_reg(BRW_GENERAL_REGISTER_FILE, 1, 0), 0);      struct brw_reg primmask;     struct brw_instruction *jmp;     struct brw_reg v1_null_ud = vec1(retype(brw_null_reg(), BRW_REGISTER_TYPE_UD)); @@ -681,6 +682,14 @@ void brw_emit_anyprim_setup( struct brw_sf_compile *c )     }     brw_land_fwd_jump(p, jmp);  +   brw_set_conditionalmod(p, BRW_CONDITIONAL_Z); +   brw_AND(p, v1_null_ud, payload_attr, brw_imm_ud(1<<BRW_SPRITE_POINT_ENABLE)); +   jmp = brw_JMPI(p, ip, ip, brw_imm_w(0)); +   { +      brw_emit_point_sprite_setup( c ); +   } +   brw_land_fwd_jump(p, jmp);  +     brw_emit_point_setup( c );  } diff --git a/src/mesa/drivers/dri/i965/brw_sf_state.c b/src/mesa/drivers/dri/i965/brw_sf_state.c index 307fb63785..236c6fd42a 100644 --- a/src/mesa/drivers/dri/i965/brw_sf_state.c +++ b/src/mesa/drivers/dri/i965/brw_sf_state.c @@ -185,6 +185,8 @@ static void upload_sf_unit( struct brw_context *brw )     /* _NEW_POINT */     sf.sf6.point_rast_rule = 1;	/* opengl conventions */     /* XXX clamp max depends on AA vs. non-AA */ + +   sf.sf7.sprite_point = brw->attribs.Point->PointSprite;     sf.sf7.point_size = CLAMP(brw->attribs.Point->Size, 1.0, 255.0) * (1<<3);     sf.sf7.use_point_size_state = !brw->attribs.Point->_Attenuated;  | 
