Merge remote branch 'origin/7.8'
[mesa.git] / src / gallium / drivers / nvfx / nvfx_state_viewport.c
1 #include "nvfx_context.h"
2
3 void
4 nvfx_state_viewport_validate(struct nvfx_context *nvfx)
5 {
6 struct nouveau_channel *chan = nvfx->screen->base.channel;
7 struct pipe_viewport_state *vpt = &nvfx->viewport;
8
9 WAIT_RING(chan, 11);
10 if(nvfx->render_mode == HW) {
11 OUT_RING(chan, RING_3D(NV34TCL_VIEWPORT_TRANSLATE_X, 8));
12 OUT_RINGf(chan, vpt->translate[0]);
13 OUT_RINGf(chan, vpt->translate[1]);
14 OUT_RINGf(chan, vpt->translate[2]);
15 OUT_RINGf(chan, vpt->translate[3]);
16 OUT_RINGf(chan, vpt->scale[0]);
17 OUT_RINGf(chan, vpt->scale[1]);
18 OUT_RINGf(chan, vpt->scale[2]);
19 OUT_RINGf(chan, vpt->scale[3]);
20 OUT_RING(chan, RING_3D(0x1d78, 1));
21 OUT_RING(chan, 1);
22 } else {
23 OUT_RING(chan, RING_3D(NV34TCL_VIEWPORT_TRANSLATE_X, 8));
24 OUT_RINGf(chan, 0.0f);
25 OUT_RINGf(chan, 0.0f);
26 OUT_RINGf(chan, 0.0f);
27 OUT_RINGf(chan, 0.0f);
28 OUT_RINGf(chan, 1.0f);
29 OUT_RINGf(chan, 1.0f);
30 OUT_RINGf(chan, 1.0f);
31 OUT_RINGf(chan, 1.0f);
32 OUT_RING(chan, RING_3D(0x1d78, 1));
33 OUT_RING(chan, nvfx->is_nv4x ? 0x110 : 1);
34 }
35 }