diff options
author | Luca Barbieri <luca@luca-barbieri.com> | 2010-02-20 23:30:59 +0100 |
---|---|---|
committer | Younes Manton <younes.m@gmail.com> | 2010-03-15 00:03:02 -0400 |
commit | 4d93ef1a015c8ec7341b0793e87ec375014436b3 (patch) | |
tree | e7fb2d8a0fa6562064b5c901a71835efcb4d5bb7 /src/gallium/drivers/nvfx/nvfx_state_viewport.c | |
parent | 9937116c7b15468088a224da478d927347a76f32 (diff) |
nv30, nv40: unify nv[34]0_state_viewport.c
The files are identical, except for an extra comment in nv30.
Diffstat (limited to 'src/gallium/drivers/nvfx/nvfx_state_viewport.c')
-rw-r--r-- | src/gallium/drivers/nvfx/nvfx_state_viewport.c | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/src/gallium/drivers/nvfx/nvfx_state_viewport.c b/src/gallium/drivers/nvfx/nvfx_state_viewport.c new file mode 100644 index 0000000000..72057a80f8 --- /dev/null +++ b/src/gallium/drivers/nvfx/nvfx_state_viewport.c @@ -0,0 +1,38 @@ +#include "nvfx_context.h" + +static boolean +nvfx_state_viewport_validate(struct nvfx_context *nvfx) +{ + struct pipe_viewport_state *vpt = &nvfx->viewport; + struct nouveau_stateobj *so; + + if (nvfx->state.hw[NVFX_STATE_VIEWPORT] && + !(nvfx->dirty & NVFX_NEW_VIEWPORT)) + return FALSE; + + so = so_new(2, 9, 0); + so_method(so, nvfx->screen->eng3d, + NV34TCL_VIEWPORT_TRANSLATE_X, 8); + 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); + + so_ref(so, &nvfx->state.hw[NVFX_STATE_VIEWPORT]); + so_ref(NULL, &so); + return TRUE; +} + +struct nvfx_state_entry nvfx_state_viewport = { + .validate = nvfx_state_viewport_validate, + .dirty = { + .pipe = NVFX_NEW_VIEWPORT | NVFX_NEW_RAST, + .hw = NVFX_STATE_VIEWPORT + } +}; |