summaryrefslogtreecommitdiff
path: root/src/gallium/drivers/nv40/nv40_state_viewport.c
diff options
context:
space:
mode:
authorBen Skeggs <darktama@beleth.(none)>2008-02-20 17:14:41 +1100
committerBen Skeggs <darktama@beleth.(none)>2008-02-20 17:14:41 +1100
commit9cd10d7618a226fe46395b08beb19e420bc14a4f (patch)
tree105906fcd4a642586332f8aa7bc7cd7274c78fb5 /src/gallium/drivers/nv40/nv40_state_viewport.c
parent46c3d0918dd7a47f69c21e4eb1a3fd2a2fbe6223 (diff)
nv40: almost there..
Diffstat (limited to 'src/gallium/drivers/nv40/nv40_state_viewport.c')
-rw-r--r--src/gallium/drivers/nv40/nv40_state_viewport.c30
1 files changed, 30 insertions, 0 deletions
diff --git a/src/gallium/drivers/nv40/nv40_state_viewport.c b/src/gallium/drivers/nv40/nv40_state_viewport.c
new file mode 100644
index 0000000000..79fcc31a8b
--- /dev/null
+++ b/src/gallium/drivers/nv40/nv40_state_viewport.c
@@ -0,0 +1,30 @@
+#include "nv40_context.h"
+
+static boolean
+nv40_state_viewport_validate(struct nv40_context *nv40)
+{
+ struct nouveau_stateobj *so = so_new(9, 0);
+ struct pipe_viewport_state *vpt = &nv40->pipe_state.viewport;
+
+ so_method(so, nv40->hw->curie, NV40TCL_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_ref(so, &nv40->state.hw[NV40_STATE_VIEWPORT]);
+ so_ref(NULL, &so);
+ return TRUE;
+}
+
+struct nv40_state_entry nv40_state_viewport = {
+ .validate = nv40_state_viewport_validate,
+ .dirty = {
+ .pipe = NV40_NEW_VIEWPORT,
+ .hw = NV40_STATE_VIEWPORT
+ }
+};