mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-06 05:08:08 +02:00
nv40: respect rasterizer cso bypass_clipping flag
This commit is contained in:
parent
46a7f297a1
commit
799d3bce06
2 changed files with 15 additions and 2 deletions
|
|
@ -97,6 +97,7 @@ struct nv40_blend_state {
|
|||
struct nv40_state {
|
||||
unsigned scissor_enabled;
|
||||
unsigned stipple_enabled;
|
||||
unsigned viewport_bypass;
|
||||
unsigned fp_samplers;
|
||||
|
||||
uint64_t dirty;
|
||||
|
|
|
|||
|
|
@ -5,8 +5,20 @@ nv40_state_viewport_validate(struct nv40_context *nv40)
|
|||
{
|
||||
struct nouveau_stateobj *so = so_new(11, 0);
|
||||
struct pipe_viewport_state *vpt = &nv40->viewport;
|
||||
unsigned bypass;
|
||||
|
||||
if (nv40->render_mode == HW) {
|
||||
if (nv40->render_mode == HW && !nv40->rasterizer->pipe.bypass_clipping)
|
||||
bypass = 0;
|
||||
else
|
||||
bypass = 1;
|
||||
|
||||
if (nv40->state.hw[NV40_STATE_VIEWPORT] &&
|
||||
(bypass || !(nv40->dirty & NV40_NEW_VIEWPORT)) &&
|
||||
nv40->state.viewport_bypass == bypass)
|
||||
return FALSE;
|
||||
nv40->state.viewport_bypass = bypass;
|
||||
|
||||
if (!bypass) {
|
||||
so_method(so, nv40->screen->curie,
|
||||
NV40TCL_VIEWPORT_TRANSLATE_X, 8);
|
||||
so_data (so, fui(vpt->translate[0]));
|
||||
|
|
@ -48,7 +60,7 @@ nv40_state_viewport_validate(struct nv40_context *nv40)
|
|||
struct nv40_state_entry nv40_state_viewport = {
|
||||
.validate = nv40_state_viewport_validate,
|
||||
.dirty = {
|
||||
.pipe = NV40_NEW_VIEWPORT,
|
||||
.pipe = NV40_NEW_VIEWPORT | NV40_NEW_RAST,
|
||||
.hw = NV40_STATE_VIEWPORT
|
||||
}
|
||||
};
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue