diff options
Diffstat (limited to 'src/mesa/pipe/softpipe/sp_prim_setup.c')
-rw-r--r-- | src/mesa/pipe/softpipe/sp_prim_setup.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/src/mesa/pipe/softpipe/sp_prim_setup.c b/src/mesa/pipe/softpipe/sp_prim_setup.c index c2a5a7907d..a7e1c9e017 100644 --- a/src/mesa/pipe/softpipe/sp_prim_setup.c +++ b/src/mesa/pipe/softpipe/sp_prim_setup.c @@ -79,6 +79,8 @@ struct setup_stage { float oneoverarea; + const unsigned *lookup; /**< vertex attribute positions */ + struct tgsi_interp_coef coef[TGSI_ATTRIB_MAX]; struct quad_header quad; @@ -884,10 +886,13 @@ static void setup_point(struct draw_stage *stage, struct prim_header *prim) { struct setup_stage *setup = setup_stage( stage ); - /*XXX this should be a vertex attrib! */ - const float halfSize = 0.5f * setup->softpipe->setup.point_size; - const boolean round = setup->softpipe->setup.point_smooth; const struct vertex_header *v0 = prim->v[0]; + + const int sizeAttr = setup->lookup[TGSI_ATTRIB_POINTSIZE]; + const float halfSize + = sizeAttr ? (0.5f * v0->data[sizeAttr][0]) + : (0.5f * setup->softpipe->setup.point_size); + const boolean round = setup->softpipe->setup.point_smooth; const float x = v0->data[TGSI_ATTRIB_POS][0]; const float y = v0->data[TGSI_ATTRIB_POS][1]; unsigned slot, j; @@ -1072,5 +1077,7 @@ struct draw_stage *sp_draw_render_stage( struct softpipe_context *softpipe ) setup->quad.coef = setup->coef; + setup->lookup = softpipe->draw->vertex_info.attrib_to_slot; + return &setup->stage; } |