mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 22:38:05 +02:00
nvfx: so->RING_3D: scissor
This commit is contained in:
parent
6558797f99
commit
5c89cb0f6c
2 changed files with 10 additions and 13 deletions
|
|
@ -83,5 +83,7 @@ nvfx_create(struct pipe_screen *pscreen, void *priv)
|
|||
draw_enable_point_sprites(nvfx->draw, FALSE);
|
||||
draw_set_rasterize_stage(nvfx->draw, nvfx_draw_render_stage(nvfx));
|
||||
|
||||
/* set these to that we init them on first validation */
|
||||
nvfx->state.scissor_enabled = ~0;
|
||||
return &nvfx->pipe;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,27 +3,23 @@
|
|||
static boolean
|
||||
nvfx_state_scissor_validate(struct nvfx_context *nvfx)
|
||||
{
|
||||
struct nouveau_channel *chan = nvfx->screen->base.channel;
|
||||
struct pipe_rasterizer_state *rast = &nvfx->rasterizer->pipe;
|
||||
struct pipe_scissor_state *s = &nvfx->scissor;
|
||||
struct nouveau_stateobj *so;
|
||||
|
||||
if (nvfx->state.hw[NVFX_STATE_SCISSOR] &&
|
||||
(rast->scissor == 0 && nvfx->state.scissor_enabled == 0))
|
||||
if ((rast->scissor == 0 && nvfx->state.scissor_enabled == 0))
|
||||
return FALSE;
|
||||
nvfx->state.scissor_enabled = rast->scissor;
|
||||
|
||||
so = so_new(1, 2, 0);
|
||||
so_method(so, nvfx->screen->eng3d, NV34TCL_SCISSOR_HORIZ, 2);
|
||||
WAIT_RING(chan, 3);
|
||||
OUT_RING(chan, RING_3D(NV34TCL_SCISSOR_HORIZ, 2));
|
||||
if (nvfx->state.scissor_enabled) {
|
||||
so_data (so, ((s->maxx - s->minx) << 16) | s->minx);
|
||||
so_data (so, ((s->maxy - s->miny) << 16) | s->miny);
|
||||
OUT_RING(chan, ((s->maxx - s->minx) << 16) | s->minx);
|
||||
OUT_RING(chan, ((s->maxy - s->miny) << 16) | s->miny);
|
||||
} else {
|
||||
so_data (so, 4096 << 16);
|
||||
so_data (so, 4096 << 16);
|
||||
OUT_RING(chan, 4096 << 16);
|
||||
OUT_RING(chan, 4096 << 16);
|
||||
}
|
||||
|
||||
so_ref(so, &nvfx->state.hw[NVFX_STATE_SCISSOR]);
|
||||
so_ref(NULL, &so);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
|
@ -31,6 +27,5 @@ struct nvfx_state_entry nvfx_state_scissor = {
|
|||
.validate = nvfx_state_scissor_validate,
|
||||
.dirty = {
|
||||
.pipe = NVFX_NEW_SCISSOR | NVFX_NEW_RAST,
|
||||
.hw = NVFX_STATE_SCISSOR
|
||||
}
|
||||
};
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue