summaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers/nouveau
diff options
context:
space:
mode:
authorBen Skeggs <[email protected]>2008-06-16 22:02:02 +1000
committerBen Skeggs <[email protected]>2008-06-29 15:46:18 +1000
commit5d3070149267251bafc1ff982b77e7f422554f50 (patch)
tree9df80c1e5f9b873cd8ad9e212949d90435373ffb /src/gallium/drivers/nouveau
parent431504b99cd55948522e86a249e656e78598ddbd (diff)
nv50: use stateobjs for sampler/image_control uploads
Diffstat (limited to 'src/gallium/drivers/nouveau')
-rw-r--r--src/gallium/drivers/nouveau/nouveau_stateobj.h18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/gallium/drivers/nouveau/nouveau_stateobj.h b/src/gallium/drivers/nouveau/nouveau_stateobj.h
index d501b76b51e..78b27380702 100644
--- a/src/gallium/drivers/nouveau/nouveau_stateobj.h
+++ b/src/gallium/drivers/nouveau/nouveau_stateobj.h
@@ -2,6 +2,7 @@
#define __NOUVEAU_STATEOBJ_H__
#include "pipe/p_util.h"
+#include "pipe/p_debug.h"
struct nouveau_stateobj_reloc {
struct pipe_buffer *bo;
@@ -68,6 +69,14 @@ so_data(struct nouveau_stateobj *so, unsigned data)
}
static INLINE void
+so_datap(struct nouveau_stateobj *so, unsigned *data, unsigned size)
+{
+ so->cur_packet += (4 * size);
+ while (size--)
+ (*so->cur++) = (*data++);
+}
+
+static INLINE void
so_method(struct nouveau_stateobj *so, struct nouveau_grobj *gr,
unsigned mthd, unsigned size)
{
@@ -92,6 +101,15 @@ so_reloc(struct nouveau_stateobj *so, struct pipe_buffer *bo,
}
static INLINE void
+so_dump(struct nouveau_stateobj *so)
+{
+ unsigned i, nr = so->cur - so->push;
+
+ for (i = 0; i < nr; i++)
+ debug_printf("+0x%04x: 0x%08x\n", i, so->push[i]);
+}
+
+static INLINE void
so_emit(struct nouveau_winsys *nvws, struct nouveau_stateobj *so)
{
struct nouveau_pushbuf *pb = nvws->channel->pushbuf;