nvc0: use sched control codes for gm107 blitter shader
[mesa.git] / src / gallium / drivers / nouveau / nouveau_statebuf.h
index dcffdd911548e3a656a9cd5b4270aba3c4dec2b2..da5d7972d9cb05eeeb3b753d9ad54af37ef44bcc 100644 (file)
@@ -6,9 +6,9 @@
 
 struct nouveau_statebuf_builder
 {
-       uint32_t* p;
+   uint32_t* p;
 #ifdef DEBUG
-       uint32_t* pend;
+   uint32_t* pend;
 #endif
 };
 
@@ -20,8 +20,13 @@ struct nouveau_statebuf_builder
 #define sb_data(sb, v) *(sb).p++ = (v)
 #endif
 
-#define sb_method(sb, v, n)  sb_data(sb, RING_3D(v, n));
+static inline uint32_t sb_header(unsigned subc, unsigned mthd, unsigned size)
+{
+   return (size << 18) | (subc << 13) | mthd;
+}
+
+#define sb_method(sb, v, n)  sb_data(sb, sb_header(SUBC_3D(v), n));
 
 #define sb_len(sb, var) ((sb).p - (var))
-#define sb_emit(chan, sb_buf, sb_len) do {WAIT_RING((chan), (sb_len)); OUT_RINGp((chan), (sb_buf), (sb_len)); } while(0)
+#define sb_emit(push, sb_buf, sb_len) do {PUSH_SPACE((push), (sb_len)); PUSH_DATAp((push), (sb_buf), (sb_len)); } while(0)
 #endif