summaryrefslogtreecommitdiff
path: root/src/gallium/drivers/r300
diff options
context:
space:
mode:
authorCorbin Simpson <MostAwesomeDude@gmail.com>2010-04-26 00:08:46 -0700
committerCorbin Simpson <MostAwesomeDude@gmail.com>2010-04-26 00:24:26 -0700
commitc53142c3f46735f91b2f11308d08fa7e17edbf91 (patch)
treee36460c208292d955e8026c25bcd48f63081122e /src/gallium/drivers/r300
parent2d1b95477fbf91d90c65f8907dce0556b06db6f0 (diff)
r300g: Add CS table writing.
Diffstat (limited to 'src/gallium/drivers/r300')
-rw-r--r--src/gallium/drivers/r300/r300_cs.h7
-rw-r--r--src/gallium/drivers/r300/r300_winsys.h4
2 files changed, 11 insertions, 0 deletions
diff --git a/src/gallium/drivers/r300/r300_cs.h b/src/gallium/drivers/r300/r300_cs.h
index 456b2ec7b9..96f2825b6d 100644
--- a/src/gallium/drivers/r300/r300_cs.h
+++ b/src/gallium/drivers/r300/r300_cs.h
@@ -104,6 +104,13 @@
cs_count--; \
} while (0)
+#define OUT_CS_TABLE(values, count) do { \
+ if (VERY_VERBOSE_REGISTERS) \
+ DBG(cs_context_copy, DBG_CS, "r300: writing table of %d dwords\n", count); \
+ cs_winsys->write_cs_table(cs_winsys, values, count); \
+ cs_count -= count; \
+} while (0)
+
#define OUT_CS_BUF_RELOC(bo, offset, rd, wd, flags) do { \
DBG(cs_context_copy, DBG_CS, "r300: writing relocation for buffer %p, offset %d, " \
"domains (%d, %d, %d)\n", \
diff --git a/src/gallium/drivers/r300/r300_winsys.h b/src/gallium/drivers/r300/r300_winsys.h
index fa00a0cba9..60c4d18e3a 100644
--- a/src/gallium/drivers/r300/r300_winsys.h
+++ b/src/gallium/drivers/r300/r300_winsys.h
@@ -119,6 +119,10 @@ struct r300_winsys_screen {
/* Write a dword to the command buffer. */
void (*write_cs_dword)(struct r300_winsys_screen* winsys, uint32_t dword);
+ /* Write a table of dwords to the command buffer. */
+ void (*write_cs_table)(struct r300_winsys_screen* winsys,
+ void *dwords, unsigned count);
+
/* Write a relocated dword to the command buffer. */
void (*write_cs_reloc)(struct r300_winsys_screen *winsys,
struct r300_winsys_buffer *buf,