[Mesa-dev] [PATCH] gallium/radeon: unify checking streamout enable state
Nicolai Hähnle
nhaehnle at gmail.com
Mon Apr 11 16:03:20 UTC 2016
Reviewed-by: Nicolai Hähnle <nicolai.haehnle at amd.com>
On 08.04.2016 04:00, Marek Olšák wrote:
> From: Marek Olšák <marek.olsak at amd.com>
>
> ---
> src/gallium/drivers/r600/r600_state_common.c | 5 ++---
> src/gallium/drivers/radeon/r600_pipe_common.h | 6 ++++++
> src/gallium/drivers/radeon/r600_streamout.c | 6 ------
> src/gallium/drivers/radeonsi/si_state_draw.c | 3 +--
> 4 files changed, 9 insertions(+), 11 deletions(-)
>
> diff --git a/src/gallium/drivers/r600/r600_state_common.c b/src/gallium/drivers/r600/r600_state_common.c
> index df41d3f..82babeb 100644
> --- a/src/gallium/drivers/r600/r600_state_common.c
> +++ b/src/gallium/drivers/r600/r600_state_common.c
> @@ -1841,8 +1841,7 @@ static void r600_draw_vbo(struct pipe_context *ctx, const struct pipe_draw_info
> ia_switch_on_eop = true;
> }
>
> - if (rctx->b.streamout.streamout_enabled ||
> - rctx->b.streamout.prims_gen_query_enabled)
> + if (r600_get_strmout_en(&rctx->b))
> partial_vs_wave = true;
>
> radeon_set_context_reg(cs, CM_R_028AA8_IA_MULTI_VGT_PARAM,
> @@ -2018,7 +2017,7 @@ static void r600_draw_vbo(struct pipe_context *ctx, const struct pipe_draw_info
> rctx->b.family == CHIP_RV635) {
> /* if we have gs shader or streamout
> we need to do a wait idle after every draw */
> - if (rctx->gs_shader || rctx->b.streamout.streamout_enabled) {
> + if (rctx->gs_shader || r600_get_strmout_en(&rctx->b)) {
> radeon_set_config_reg(cs, R_008040_WAIT_UNTIL, S_008040_WAIT_3D_IDLE(1));
> }
> }
> diff --git a/src/gallium/drivers/radeon/r600_pipe_common.h b/src/gallium/drivers/radeon/r600_pipe_common.h
> index 062c319..7da7736 100644
> --- a/src/gallium/drivers/radeon/r600_pipe_common.h
> +++ b/src/gallium/drivers/radeon/r600_pipe_common.h
> @@ -639,6 +639,12 @@ r600_resource_reference(struct r600_resource **ptr, struct r600_resource *res)
> (struct pipe_resource *)res);
> }
>
> +static inline bool r600_get_strmout_en(struct r600_common_context *rctx)
> +{
> + return rctx->streamout.streamout_enabled ||
> + rctx->streamout.prims_gen_query_enabled;
> +}
> +
> static inline unsigned r600_tex_aniso_filter(unsigned filter)
> {
> if (filter <= 1) return 0;
> diff --git a/src/gallium/drivers/radeon/r600_streamout.c b/src/gallium/drivers/radeon/r600_streamout.c
> index e977ed9..fc9ec48 100644
> --- a/src/gallium/drivers/radeon/r600_streamout.c
> +++ b/src/gallium/drivers/radeon/r600_streamout.c
> @@ -311,12 +311,6 @@ void r600_emit_streamout_end(struct r600_common_context *rctx)
> * are no buffers bound.
> */
>
> -static bool r600_get_strmout_en(struct r600_common_context *rctx)
> -{
> - return rctx->streamout.streamout_enabled ||
> - rctx->streamout.prims_gen_query_enabled;
> -}
> -
> static void r600_emit_streamout_enable(struct r600_common_context *rctx,
> struct r600_atom *atom)
> {
> diff --git a/src/gallium/drivers/radeonsi/si_state_draw.c b/src/gallium/drivers/radeonsi/si_state_draw.c
> index 84b850a..3863e59 100644
> --- a/src/gallium/drivers/radeonsi/si_state_draw.c
> +++ b/src/gallium/drivers/radeonsi/si_state_draw.c
> @@ -882,8 +882,7 @@ void si_draw_vbo(struct pipe_context *ctx, const struct pipe_draw_info *info)
> if ((sctx->b.family == CHIP_HAWAII ||
> sctx->b.family == CHIP_TONGA ||
> sctx->b.family == CHIP_FIJI) &&
> - (sctx->b.streamout.streamout_enabled ||
> - sctx->b.streamout.prims_gen_query_enabled)) {
> + r600_get_strmout_en(&sctx->b)) {
> sctx->b.flags |= SI_CONTEXT_VGT_STREAMOUT_SYNC;
> }
>
>
More information about the mesa-dev
mailing list