mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-09 02:28:10 +02:00
nv50: get clear-scissor working
This commit is contained in:
parent
add89c7845
commit
7a81ffa115
2 changed files with 36 additions and 9 deletions
|
|
@ -86,6 +86,7 @@ struct nv50_state {
|
|||
struct nouveau_stateobj *scissor;
|
||||
unsigned scissor_enabled;
|
||||
struct nouveau_stateobj *viewport;
|
||||
unsigned viewport_bypass;
|
||||
struct nouveau_stateobj *tsc_upload;
|
||||
struct nouveau_stateobj *tic_upload;
|
||||
struct nouveau_stateobj *vertprog;
|
||||
|
|
|
|||
|
|
@ -228,17 +228,43 @@ nv50_state_validate(struct nv50_context *nv50)
|
|||
scissor_uptodate:
|
||||
|
||||
if (nv50->dirty & NV50_NEW_VIEWPORT) {
|
||||
so = so_new(8, 0);
|
||||
so_method(so, tesla, NV50TCL_VIEWPORT_UNK1(0), 3);
|
||||
so_data (so, fui(nv50->viewport.translate[0]));
|
||||
so_data (so, fui(nv50->viewport.translate[1]));
|
||||
so_data (so, fui(nv50->viewport.translate[2]));
|
||||
so_method(so, tesla, NV50TCL_VIEWPORT_UNK0(0), 3);
|
||||
so_data (so, fui(nv50->viewport.scale[0]));
|
||||
so_data (so, fui(-nv50->viewport.scale[1]));
|
||||
so_data (so, fui(nv50->viewport.scale[2]));
|
||||
unsigned bypass;
|
||||
|
||||
if (!nv50->rasterizer->pipe.bypass_clipping)
|
||||
bypass = 0;
|
||||
else
|
||||
bypass = 1;
|
||||
|
||||
if (nv50->state.viewport &&
|
||||
(bypass || !(nv50->dirty & NV50_NEW_VIEWPORT)) &&
|
||||
nv50->state.viewport_bypass == bypass)
|
||||
goto viewport_uptodate;
|
||||
nv50->state.viewport_bypass = bypass;
|
||||
|
||||
so = so_new(12, 0);
|
||||
if (!bypass) {
|
||||
so_method(so, tesla, NV50TCL_VIEWPORT_UNK1(0), 3);
|
||||
so_data (so, fui(nv50->viewport.translate[0]));
|
||||
so_data (so, fui(nv50->viewport.translate[1]));
|
||||
so_data (so, fui(nv50->viewport.translate[2]));
|
||||
so_method(so, tesla, NV50TCL_VIEWPORT_UNK0(0), 3);
|
||||
so_data (so, fui(nv50->viewport.scale[0]));
|
||||
so_data (so, fui(-nv50->viewport.scale[1]));
|
||||
so_data (so, fui(nv50->viewport.scale[2]));
|
||||
so_method(so, tesla, 0x192c, 1);
|
||||
so_data (so, 1);
|
||||
so_method(so, tesla, 0x0f90, 1);
|
||||
so_data (so, 0);
|
||||
} else {
|
||||
so_method(so, tesla, 0x192c, 1);
|
||||
so_data (so, 0);
|
||||
so_method(so, tesla, 0x0f90, 1);
|
||||
so_data (so, 1);
|
||||
}
|
||||
|
||||
so_ref(so, &nv50->state.viewport);
|
||||
}
|
||||
viewport_uptodate:
|
||||
|
||||
if (nv50->dirty & NV50_NEW_SAMPLER) {
|
||||
int i;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue