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); >
signature.asc
Description: OpenPGP digital signature
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev