diff options
author | Nicolai Hähnle <[email protected]> | 2017-09-26 17:57:59 +0200 |
---|---|---|
committer | Nicolai Hähnle <[email protected]> | 2017-10-02 15:07:45 +0200 |
commit | 7bbcb6ac6cf3e09da4387bf9c658c3aa1270db9a (patch) | |
tree | 6f4069e5620b6f415d0d24771b868ab512061ff2 /src/gallium/drivers/radeonsi | |
parent | 6b416ec3d665fb1e10fafad44fbd8f9cec661a68 (diff) |
radeonsi: move current_rast_prim into si_context
v2: rebase fixes
Reviewed-by: Marek Olšák <[email protected]>
Diffstat (limited to 'src/gallium/drivers/radeonsi')
-rw-r--r-- | src/gallium/drivers/radeonsi/si_pipe.h | 1 | ||||
-rw-r--r-- | src/gallium/drivers/radeonsi/si_state_draw.c | 10 | ||||
-rw-r--r-- | src/gallium/drivers/radeonsi/si_state_shaders.c | 8 | ||||
-rw-r--r-- | src/gallium/drivers/radeonsi/si_state_viewport.c | 2 |
4 files changed, 11 insertions, 10 deletions
diff --git a/src/gallium/drivers/radeonsi/si_pipe.h b/src/gallium/drivers/radeonsi/si_pipe.h index b3d5b186457..e0759eddb2c 100644 --- a/src/gallium/drivers/radeonsi/si_pipe.h +++ b/src/gallium/drivers/radeonsi/si_pipe.h @@ -433,6 +433,7 @@ struct si_context { unsigned last_sc_line_stipple; unsigned current_vs_state; unsigned last_vs_state; + enum pipe_prim_type current_rast_prim; /* primitive type after TES, GS */ /* Scratch buffer */ struct r600_atom scratch_state; diff --git a/src/gallium/drivers/radeonsi/si_state_draw.c b/src/gallium/drivers/radeonsi/si_state_draw.c index 9a6c9c8f842..2d4c9c5b9f3 100644 --- a/src/gallium/drivers/radeonsi/si_state_draw.c +++ b/src/gallium/drivers/radeonsi/si_state_draw.c @@ -531,7 +531,7 @@ static unsigned si_get_ia_multi_vgt_param(struct si_context *sctx, static void si_emit_rasterizer_prim_state(struct si_context *sctx) { struct radeon_winsys_cs *cs = sctx->b.gfx.cs; - enum pipe_prim_type rast_prim = sctx->b.current_rast_prim; + enum pipe_prim_type rast_prim = sctx->current_rast_prim; struct si_state_rasterizer *rs = sctx->emitted.named.rasterizer; /* Skip this if not rendering lines. */ @@ -581,7 +581,7 @@ static void si_emit_draw_registers(struct si_context *sctx, { struct radeon_winsys_cs *cs = sctx->b.gfx.cs; unsigned prim = si_conv_pipe_prim(info->mode); - unsigned gs_out_prim = si_conv_prim_to_gs_out(sctx->b.current_rast_prim); + unsigned gs_out_prim = si_conv_prim_to_gs_out(sctx->current_rast_prim); unsigned ia_multi_vgt_param; ia_multi_vgt_param = si_get_ia_multi_vgt_param(sctx, info, num_patches); @@ -1257,15 +1257,15 @@ void si_draw_vbo(struct pipe_context *ctx, const struct pipe_draw_info *info) } else rast_prim = info->mode; - if (rast_prim != sctx->b.current_rast_prim) { - bool old_is_poly = sctx->b.current_rast_prim >= PIPE_PRIM_TRIANGLES; + if (rast_prim != sctx->current_rast_prim) { + bool old_is_poly = sctx->current_rast_prim >= PIPE_PRIM_TRIANGLES; bool new_is_poly = rast_prim >= PIPE_PRIM_TRIANGLES; if (old_is_poly != new_is_poly) { sctx->scissors.dirty_mask = (1 << SI_MAX_VIEWPORTS) - 1; si_mark_atom_dirty(sctx, &sctx->scissors.atom); } - sctx->b.current_rast_prim = rast_prim; + sctx->current_rast_prim = rast_prim; sctx->do_update_shaders = true; } diff --git a/src/gallium/drivers/radeonsi/si_state_shaders.c b/src/gallium/drivers/radeonsi/si_state_shaders.c index 42814d9fd58..7619e2f04aa 100644 --- a/src/gallium/drivers/radeonsi/si_state_shaders.c +++ b/src/gallium/drivers/radeonsi/si_state_shaders.c @@ -1408,10 +1408,10 @@ static inline void si_shader_selector_key(struct pipe_context *ctx, } if (rs) { - bool is_poly = (sctx->b.current_rast_prim >= PIPE_PRIM_TRIANGLES && - sctx->b.current_rast_prim <= PIPE_PRIM_POLYGON) || - sctx->b.current_rast_prim >= PIPE_PRIM_TRIANGLES_ADJACENCY; - bool is_line = !is_poly && sctx->b.current_rast_prim != PIPE_PRIM_POINTS; + bool is_poly = (sctx->current_rast_prim >= PIPE_PRIM_TRIANGLES && + sctx->current_rast_prim <= PIPE_PRIM_POLYGON) || + sctx->current_rast_prim >= PIPE_PRIM_TRIANGLES_ADJACENCY; + bool is_line = !is_poly && sctx->current_rast_prim != PIPE_PRIM_POINTS; key->part.ps.prolog.color_two_side = rs->two_side && sel->info.colors_read; key->part.ps.prolog.flatshade_colors = rs->flatshade && sel->info.colors_read; diff --git a/src/gallium/drivers/radeonsi/si_state_viewport.c b/src/gallium/drivers/radeonsi/si_state_viewport.c index d462f7d0a28..eb4c00a24de 100644 --- a/src/gallium/drivers/radeonsi/si_state_viewport.c +++ b/src/gallium/drivers/radeonsi/si_state_viewport.c @@ -186,7 +186,7 @@ static void si_emit_guardband(struct si_context *ctx, discard_x = 1.0; discard_y = 1.0; - if (ctx->b.current_rast_prim < PIPE_PRIM_TRIANGLES) { + if (ctx->current_rast_prim < PIPE_PRIM_TRIANGLES) { /* When rendering wide points or lines, we need to be more * conservative about when to discard them entirely. Since * point size can be determined by the VS output, we basically |