nvfx: so->RING_3D: viewport
This commit is contained in:
@@ -8,45 +8,41 @@
|
||||
static boolean
|
||||
nvfx_state_viewport_validate(struct nvfx_context *nvfx)
|
||||
{
|
||||
struct nouveau_channel *chan = nvfx->screen->base.channel;
|
||||
struct pipe_viewport_state *vpt = &nvfx->viewport;
|
||||
struct nouveau_stateobj *so;
|
||||
|
||||
so = so_new(2, 9, 0);
|
||||
so_method(so, nvfx->screen->eng3d,
|
||||
NV34TCL_VIEWPORT_TRANSLATE_X, 8);
|
||||
WAIT_RING(chan, 11);
|
||||
if(nvfx->render_mode == HW) {
|
||||
so_data (so, fui(vpt->translate[0]));
|
||||
so_data (so, fui(vpt->translate[1]));
|
||||
so_data (so, fui(vpt->translate[2]));
|
||||
so_data (so, fui(vpt->translate[3]));
|
||||
so_data (so, fui(vpt->scale[0]));
|
||||
so_data (so, fui(vpt->scale[1]));
|
||||
so_data (so, fui(vpt->scale[2]));
|
||||
so_data (so, fui(vpt->scale[3]));
|
||||
so_method(so, nvfx->screen->eng3d, 0x1d78, 1);
|
||||
so_data (so, 1);
|
||||
OUT_RING(chan, RING_3D(NV34TCL_VIEWPORT_TRANSLATE_X, 8));
|
||||
OUT_RINGf(chan, vpt->translate[0]);
|
||||
OUT_RINGf(chan, vpt->translate[1]);
|
||||
OUT_RINGf(chan, vpt->translate[2]);
|
||||
OUT_RINGf(chan, vpt->translate[3]);
|
||||
OUT_RINGf(chan, vpt->scale[0]);
|
||||
OUT_RINGf(chan, vpt->scale[1]);
|
||||
OUT_RINGf(chan, vpt->scale[2]);
|
||||
OUT_RINGf(chan, vpt->scale[3]);
|
||||
OUT_RING(chan, RING_3D(0x1d78, 1));
|
||||
OUT_RING(chan, 1);
|
||||
} else {
|
||||
so_data (so, fui(0.0f));
|
||||
so_data (so, fui(0.0f));
|
||||
so_data (so, fui(0.0f));
|
||||
so_data (so, fui(0.0f));
|
||||
so_data (so, fui(1.0f));
|
||||
so_data (so, fui(1.0f));
|
||||
so_data (so, fui(1.0f));
|
||||
so_data (so, fui(1.0f));
|
||||
so_method(so, nvfx->screen->eng3d, 0x1d78, 1);
|
||||
so_data (so, nvfx->is_nv4x ? 0x110 : 1);
|
||||
OUT_RING(chan, RING_3D(NV34TCL_VIEWPORT_TRANSLATE_X, 8));
|
||||
OUT_RINGf(chan, 0.0f);
|
||||
OUT_RINGf(chan, 0.0f);
|
||||
OUT_RINGf(chan, 0.0f);
|
||||
OUT_RINGf(chan, 0.0f);
|
||||
OUT_RINGf(chan, 1.0f);
|
||||
OUT_RINGf(chan, 1.0f);
|
||||
OUT_RINGf(chan, 1.0f);
|
||||
OUT_RINGf(chan, 1.0f);
|
||||
OUT_RING(chan, RING_3D(0x1d78, 1));
|
||||
OUT_RING(chan, nvfx->is_nv4x ? 0x110 : 1);
|
||||
}
|
||||
|
||||
so_ref(so, &nvfx->state.hw[NVFX_STATE_VIEWPORT]);
|
||||
so_ref(NULL, &so);
|
||||
return TRUE;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
struct nvfx_state_entry nvfx_state_viewport = {
|
||||
.validate = nvfx_state_viewport_validate,
|
||||
.dirty = {
|
||||
.pipe = NVFX_NEW_VIEWPORT | NVFX_NEW_FB | NVFX_NEW_RAST,
|
||||
.hw = NVFX_STATE_VIEWPORT
|
||||
}
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user