summaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers/radeonsi
diff options
context:
space:
mode:
authorNicolai Hähnle <[email protected]>2017-09-17 11:26:53 +0200
committerNicolai Hähnle <[email protected]>2017-10-02 15:07:44 +0200
commit4d74432dd3b64814aca7d31fa133d5ee8bce9026 (patch)
tree4841b38bf06cf06ce6308cee365375b45da51968 /src/gallium/drivers/radeonsi
parentf86a112b07f01e267828fc255ffd63f223d2d5bb (diff)
radeonsi: don't discard points and lines
This is a bit conservative, but a more precise solution requires access to the rasterizer state. This is something to tackle after the fork between r600 and radeonsi. Cc: [email protected] Reviewed-by: Marek Olšák <[email protected]>
Diffstat (limited to 'src/gallium/drivers/radeonsi')
-rw-r--r--src/gallium/drivers/radeonsi/si_state_draw.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/gallium/drivers/radeonsi/si_state_draw.c b/src/gallium/drivers/radeonsi/si_state_draw.c
index e4f592c3845..fb91d936c96 100644
--- a/src/gallium/drivers/radeonsi/si_state_draw.c
+++ b/src/gallium/drivers/radeonsi/si_state_draw.c
@@ -1255,6 +1255,13 @@ void si_draw_vbo(struct pipe_context *ctx, const struct pipe_draw_info *info)
rast_prim = info->mode;
if (rast_prim != sctx->b.current_rast_prim) {
+ bool old_is_poly = sctx->b.current_rast_prim >= PIPE_PRIM_TRIANGLES;
+ bool new_is_poly = rast_prim >= PIPE_PRIM_TRIANGLES;
+ if (old_is_poly != new_is_poly) {
+ sctx->b.scissors.dirty_mask = (1 << R600_MAX_VIEWPORTS) - 1;
+ si_set_atom_dirty(sctx, &sctx->b.scissors.atom, true);
+ }
+
sctx->b.current_rast_prim = rast_prim;
sctx->do_update_shaders = true;
}