summaryrefslogtreecommitdiff
path: root/src/nv50_accel.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/nv50_accel.h')
-rw-r--r--src/nv50_accel.h18
1 files changed, 16 insertions, 2 deletions
diff --git a/src/nv50_accel.h b/src/nv50_accel.h
index 606fe74..0f77389 100644
--- a/src/nv50_accel.h
+++ b/src/nv50_accel.h
@@ -37,8 +37,7 @@
#define PFP_NV12 0x0600 /* NV12 YUV->RGB */
/* Constant buffer assignments */
-#define CB_TSC 0
-#define CB_TIC 1
+#define CB_PSH 0
#define CB_PFP 2
static __inline__ void
@@ -68,4 +67,19 @@ VTX2s(NVPtr pNv, float s1x, float s1y, float s2x, float s2y,
PUSH_DATA (push, (dy << 16) | dx);
}
+static __inline__ void
+PUSH_DATAu(struct nouveau_pushbuf *push, struct nouveau_bo *bo,
+ unsigned delta, unsigned dwords)
+{
+ const unsigned idx = (delta & 0x000000fc) >> 2;
+ const unsigned off = (delta & 0xffffff00);
+ BEGIN_NV04(push, NV50_3D(CB_DEF_ADDRESS_HIGH), 3);
+ PUSH_DATA (push, (bo->offset + off) >> 32);
+ PUSH_DATA (push, (bo->offset + off));
+ PUSH_DATA (push, (CB_PSH << NV50_3D_CB_DEF_SET_BUFFER__SHIFT) | 0x4000);
+ BEGIN_NV04(push, NV50_3D(CB_ADDR), 1);
+ PUSH_DATA (push, CB_PSH | (idx << NV50_3D_CB_ADDR_ID__SHIFT));
+ BEGIN_NI04(push, NV50_3D(CB_DATA(0)), dwords);
+}
+
#endif