Nice cleanup,

Reviewed-by: Edward O'Callaghan <funfunc...@folklore1984.net>

On 08/30/2016 01:28 AM, Marek Olšák wrote:
> From: Marek Olšák <marek.ol...@amd.com>
> 
> ---
>  src/gallium/drivers/radeon/r600_viewport.c | 30 
> ++++++++++++++++--------------
>  1 file changed, 16 insertions(+), 14 deletions(-)
> 
> diff --git a/src/gallium/drivers/radeon/r600_viewport.c 
> b/src/gallium/drivers/radeon/r600_viewport.c
> index 5c998c8..2d68783 100644
> --- a/src/gallium/drivers/radeon/r600_viewport.c
> +++ b/src/gallium/drivers/radeon/r600_viewport.c
> @@ -269,57 +269,59 @@ static void r600_set_viewport_states(struct 
> pipe_context *ctx,
>               r600_get_scissor_from_viewport(rctx, &state[i],
>                                              
> &rctx->viewports.as_scissor[index]);
>       }
>  
>       rctx->viewports.dirty_mask |= ((1 << num_viewports) - 1) << start_slot;
>       rctx->scissors.dirty_mask |= ((1 << num_viewports) - 1) << start_slot;
>       rctx->set_atom_dirty(rctx, &rctx->viewports.atom, true);
>       rctx->set_atom_dirty(rctx, &rctx->scissors.atom, true);
>  }
>  
> +static void r600_emit_one_viewport(struct r600_common_context *rctx,
> +                                struct pipe_viewport_state *state)
> +{
> +     struct radeon_winsys_cs *cs = rctx->gfx.cs;
> +
> +     radeon_emit(cs, fui(state->scale[0]));
> +     radeon_emit(cs, fui(state->translate[0]));
> +     radeon_emit(cs, fui(state->scale[1]));
> +     radeon_emit(cs, fui(state->translate[1]));
> +     radeon_emit(cs, fui(state->scale[2]));
> +     radeon_emit(cs, fui(state->translate[2]));
> +}
> +
>  static void r600_emit_viewports(struct r600_common_context *rctx, struct 
> r600_atom *atom)
>  {
>       struct radeon_winsys_cs *cs = rctx->gfx.cs;
>       struct pipe_viewport_state *states = rctx->viewports.states;
>       unsigned mask = rctx->viewports.dirty_mask;
>  
>       /* The simple case: Only 1 viewport is active. */
>       if (!rctx->vs_writes_viewport_index) {
>               if (!(mask & 1))
>                       return;
>  
>               radeon_set_context_reg_seq(cs, R_02843C_PA_CL_VPORT_XSCALE, 6);
> -             radeon_emit(cs, fui(states[0].scale[0]));
> -             radeon_emit(cs, fui(states[0].translate[0]));
> -             radeon_emit(cs, fui(states[0].scale[1]));
> -             radeon_emit(cs, fui(states[0].translate[1]));
> -             radeon_emit(cs, fui(states[0].scale[2]));
> -             radeon_emit(cs, fui(states[0].translate[2]));
> +             r600_emit_one_viewport(rctx, &states[0]);
>               rctx->viewports.dirty_mask &= ~1; /* clear one bit */
>               return;
>       }
>  
>       while (mask) {
>               int start, count, i;
>  
>               u_bit_scan_consecutive_range(&mask, &start, &count);
>  
>               radeon_set_context_reg_seq(cs, R_02843C_PA_CL_VPORT_XSCALE +
>                                              start * 4 * 6, count * 6);
> -             for (i = start; i < start+count; i++) {
> -                     radeon_emit(cs, fui(states[i].scale[0]));
> -                     radeon_emit(cs, fui(states[i].translate[0]));
> -                     radeon_emit(cs, fui(states[i].scale[1]));
> -                     radeon_emit(cs, fui(states[i].translate[1]));
> -                     radeon_emit(cs, fui(states[i].scale[2]));
> -                     radeon_emit(cs, fui(states[i].translate[2]));
> -             }
> +             for (i = start; i < start+count; i++)
> +                     r600_emit_one_viewport(rctx, &states[i]);
>       }
>       rctx->viewports.dirty_mask = 0;
>  }
>  
>  void r600_set_scissor_enable(struct r600_common_context *rctx, bool enable)
>  {
>       if (rctx->scissor_enabled != enable) {
>               rctx->scissor_enabled = enable;
>               rctx->scissors.dirty_mask = (1 << R600_MAX_VIEWPORTS) - 1;
>               rctx->set_atom_dirty(rctx, &rctx->scissors.atom, true);
> 

Attachment: signature.asc
Description: OpenPGP digital signature

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to