diff --git a/src/gallium/drivers/llvmpipe/lp_setup.c b/src/gallium/drivers/llvmpipe/lp_setup.c index 8834739198f..707ba5df29f 100644 --- a/src/gallium/drivers/llvmpipe/lp_setup.c +++ b/src/gallium/drivers/llvmpipe/lp_setup.c @@ -600,7 +600,8 @@ lp_setup_set_point_state( struct lp_setup_context *setup, float point_size, boolean point_size_per_vertex, uint sprite_coord_enable, - uint sprite_coord_origin) + uint sprite_coord_origin, + boolean point_quad_rasterization) { LP_DBG(DEBUG_SETUP, "%s\n", __FUNCTION__); @@ -608,6 +609,7 @@ lp_setup_set_point_state( struct lp_setup_context *setup, setup->sprite_coord_enable = sprite_coord_enable; setup->sprite_coord_origin = sprite_coord_origin; setup->point_size_per_vertex = point_size_per_vertex; + setup->legacy_points = !point_quad_rasterization; } void diff --git a/src/gallium/drivers/llvmpipe/lp_setup.h b/src/gallium/drivers/llvmpipe/lp_setup.h index a948212a511..da702378fa9 100644 --- a/src/gallium/drivers/llvmpipe/lp_setup.h +++ b/src/gallium/drivers/llvmpipe/lp_setup.h @@ -90,7 +90,8 @@ lp_setup_set_point_state( struct lp_setup_context *setup, float point_size, boolean point_size_per_vertex, uint sprite_coord_enable, - uint sprite_coord_origin); + uint sprite_coord_origin, + boolean point_quad_rasterization); void lp_setup_set_setup_variant( struct lp_setup_context *setup, diff --git a/src/gallium/drivers/llvmpipe/lp_setup_context.h b/src/gallium/drivers/llvmpipe/lp_setup_context.h index 82fc14b5e5e..891eadbc229 100644 --- a/src/gallium/drivers/llvmpipe/lp_setup_context.h +++ b/src/gallium/drivers/llvmpipe/lp_setup_context.h @@ -100,6 +100,7 @@ struct lp_setup_context boolean ccw_is_frontface; boolean scissor_test; boolean point_size_per_vertex; + boolean legacy_points; boolean rasterizer_discard; boolean multisample; unsigned cullmode; diff --git a/src/gallium/drivers/llvmpipe/lp_setup_point.c b/src/gallium/drivers/llvmpipe/lp_setup_point.c index 696612309eb..66e1416abeb 100644 --- a/src/gallium/drivers/llvmpipe/lp_setup_point.c +++ b/src/gallium/drivers/llvmpipe/lp_setup_point.c @@ -374,8 +374,7 @@ try_setup_point( struct lp_setup_context *setup, print_point(setup, v0, size); /* Bounding rectangle (in pixels) */ - if (!lp_context->rasterizer || - lp_context->rasterizer->point_quad_rasterization) { + if (!setup->legacy_points) { /* * Rasterize points as quads. */ diff --git a/src/gallium/drivers/llvmpipe/lp_state_rasterizer.c b/src/gallium/drivers/llvmpipe/lp_state_rasterizer.c index cd907cfb0f4..712bd5db4e1 100644 --- a/src/gallium/drivers/llvmpipe/lp_state_rasterizer.c +++ b/src/gallium/drivers/llvmpipe/lp_state_rasterizer.c @@ -126,7 +126,8 @@ llvmpipe_bind_rasterizer_state(struct pipe_context *pipe, void *handle) state->lp_state.point_size, state->lp_state.point_size_per_vertex, state->lp_state.sprite_coord_enable, - state->lp_state.sprite_coord_mode); + state->lp_state.sprite_coord_mode, + state->lp_state.point_quad_rasterization); } else { llvmpipe->rasterizer = NULL;