summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Skeggs <bskeggs@redhat.com>2012-03-29 14:21:25 +1000
committerBen Skeggs <bskeggs@redhat.com>2012-04-14 02:07:56 +1000
commit180d8778764913ed061e68520603c0925477faba (patch)
tree9a881e48d6199e4ed9843def115bb5ac6cce5947
parente70d801ae9287eab5e82f4d467dc8cd4be1b31a8 (diff)
nvc0: replace direct inline m2mf with inline helper to do the same
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
-rw-r--r--src/nvc0_accel.c80
-rw-r--r--src/nvc0_accel.h15
-rw-r--r--src/nvc0_exa.c24
-rw-r--r--src/nvc0_xv.c20
4 files changed, 27 insertions, 112 deletions
diff --git a/src/nvc0_accel.c b/src/nvc0_accel.c
index 6a3e711..d92dff1 100644
--- a/src/nvc0_accel.c
+++ b/src/nvc0_accel.c
@@ -203,15 +203,7 @@ NVAccelInit3D_NVC0(ScrnInfoPtr pScrn)
PUSH_DATA (push, (bo->offset + CODE_OFFSET) >> 32);
PUSH_DATA (push, (bo->offset + CODE_OFFSET));
- BEGIN_NVC0(push, NVC0_M2MF(OFFSET_OUT_HIGH), 2);
- PUSH_DATA (push, (bo->offset + PVP_PASS) >> 32);
- PUSH_DATA (push, (bo->offset + PVP_PASS));
- BEGIN_NVC0(push, NVC0_M2MF(LINE_LENGTH_IN), 2);
- PUSH_DATA (push, 7 * 8 + 20 * 4);
- PUSH_DATA (push, 1);
- BEGIN_NVC0(push, NVC0_M2MF(EXEC), 1);
- PUSH_DATA (push, 0x100111);
- BEGIN_NIC0(push, NVC0_M2MF(DATA), 7 * 2 + 20);
+ PUSH_DATAu(push, bo, PVP_PASS, 20 + 7 * 2);
PUSH_DATA (push, 0x00020461);
PUSH_DATA (push, 0);
PUSH_DATA (push, 0);
@@ -257,15 +249,7 @@ NVAccelInit3D_NVC0(ScrnInfoPtr pScrn)
BEGIN_NVC0(push, SUBC_3D(0x2600), 1);
PUSH_DATA (push, 1);
- BEGIN_NVC0(push, NVC0_M2MF(OFFSET_OUT_HIGH), 2);
- PUSH_DATA (push, (bo->offset + PFP_S) >> 32);
- PUSH_DATA (push, (bo->offset + PFP_S));
- BEGIN_NVC0(push, NVC0_M2MF(LINE_LENGTH_IN), 2);
- PUSH_DATA (push, 6 * 8 + 20 * 4);
- PUSH_DATA (push, 1);
- BEGIN_NVC0(push, NVC0_M2MF(EXEC), 1);
- PUSH_DATA (push, 0x100111);
- BEGIN_NIC0(push, NVC0_M2MF(DATA), 6 * 2 + 20);
+ PUSH_DATAu(push, bo, PFP_S, 20 + 6 * 2);
PUSH_DATA (push, 0x00021462);
PUSH_DATA (push, 0x00000000);
PUSH_DATA (push, 0x00000000);
@@ -299,15 +283,7 @@ NVAccelInit3D_NVC0(ScrnInfoPtr pScrn)
PUSH_DATA (push, 0x00001de7);
PUSH_DATA (push, 0x80000000); /* exit */
- BEGIN_NVC0(push, NVC0_M2MF(OFFSET_OUT_HIGH), 2);
- PUSH_DATA (push, (bo->offset + PFP_C) >> 32);
- PUSH_DATA (push, (bo->offset + PFP_C));
- BEGIN_NVC0(push, NVC0_M2MF(LINE_LENGTH_IN), 2);
- PUSH_DATA (push, 13 * 8 + 20 * 4);
- PUSH_DATA (push, 1);
- BEGIN_NVC0(push, NVC0_M2MF(EXEC), 1);
- PUSH_DATA (push, 0x100111);
- BEGIN_NIC0(push, NVC0_M2MF(DATA), 13 * 2 + 20);
+ PUSH_DATAu(push, bo, PFP_C, 20 + 13 * 2);
PUSH_DATA (push, 0x00021462);
PUSH_DATA (push, 0x00000000);
PUSH_DATA (push, 0x00000000);
@@ -355,15 +331,7 @@ NVAccelInit3D_NVC0(ScrnInfoPtr pScrn)
PUSH_DATA (push, 0x00001de7);
PUSH_DATA (push, 0x80000000); /* exit */
- BEGIN_NVC0(push, NVC0_M2MF(OFFSET_OUT_HIGH), 2);
- PUSH_DATA (push, (bo->offset + PFP_CCA) >> 32);
- PUSH_DATA (push, (bo->offset + PFP_CCA));
- BEGIN_NVC0(push, NVC0_M2MF(LINE_LENGTH_IN), 2);
- PUSH_DATA (push, 13 * 8 + 20 * 4);
- PUSH_DATA (push, 1);
- BEGIN_NVC0(push, NVC0_M2MF(EXEC), 1);
- PUSH_DATA (push, 0x100111);
- BEGIN_NIC0(push, NVC0_M2MF(DATA), 13 * 2 + 20);
+ PUSH_DATAu(push, bo, PFP_CCA, 20 + 13 * 2);
PUSH_DATA (push, 0x00021462); /* 0x0000c000 = USES_KIL, MULTI_COLORS */
PUSH_DATA (push, 0x00000000);
PUSH_DATA (push, 0x00000000);
@@ -411,15 +379,7 @@ NVAccelInit3D_NVC0(ScrnInfoPtr pScrn)
PUSH_DATA (push, 0x00001de7);
PUSH_DATA (push, 0x80000000); /* exit */
- BEGIN_NVC0(push, NVC0_M2MF(OFFSET_OUT_HIGH), 2);
- PUSH_DATA (push, (bo->offset + PFP_CCASA) >> 32);
- PUSH_DATA (push, (bo->offset + PFP_CCASA));
- BEGIN_NVC0(push, NVC0_M2MF(LINE_LENGTH_IN), 2);
- PUSH_DATA (push, 13 * 8 + 20 * 4);
- PUSH_DATA (push, 1);
- BEGIN_NVC0(push, NVC0_M2MF(EXEC), 1);
- PUSH_DATA (push, 0x100111);
- BEGIN_NIC0(push, NVC0_M2MF(DATA), 13 * 2 + 20);
+ PUSH_DATAu(push, bo, PFP_CCASA, 20 + 13 * 2);
PUSH_DATA (push, 0x00021462);
PUSH_DATA (push, 0x00000000);
PUSH_DATA (push, 0x00000000);
@@ -467,15 +427,7 @@ NVAccelInit3D_NVC0(ScrnInfoPtr pScrn)
PUSH_DATA (push, 0x00001de7);
PUSH_DATA (push, 0x80000000); /* exit */
- BEGIN_NVC0(push, NVC0_M2MF(OFFSET_OUT_HIGH), 2);
- PUSH_DATA (push, (bo->offset + PFP_S_A8) >> 32);
- PUSH_DATA (push, (bo->offset + PFP_S_A8));
- BEGIN_NVC0(push, NVC0_M2MF(LINE_LENGTH_IN), 2);
- PUSH_DATA (push, 9 * 8 + 20 * 4);
- PUSH_DATA (push, 1);
- BEGIN_NVC0(push, NVC0_M2MF(EXEC), 1);
- PUSH_DATA (push, 0x100111);
- BEGIN_NIC0(push, NVC0_M2MF(DATA), 9 * 2 + 20);
+ PUSH_DATAu(push, bo, PFP_S_A8, 20 + 9 * 2);
PUSH_DATA (push, 0x00021462);
PUSH_DATA (push, 0x00000000);
PUSH_DATA (push, 0x00000000);
@@ -515,15 +467,7 @@ NVAccelInit3D_NVC0(ScrnInfoPtr pScrn)
PUSH_DATA (push, 0x00001de7);
PUSH_DATA (push, 0x80000000); /* exit */
- BEGIN_NVC0(push, NVC0_M2MF(OFFSET_OUT_HIGH), 2);
- PUSH_DATA (push, (bo->offset + PFP_C_A8) >> 32);
- PUSH_DATA (push, (bo->offset + PFP_C_A8));
- BEGIN_NVC0(push, NVC0_M2MF(LINE_LENGTH_IN), 2);
- PUSH_DATA (push, 13 * 8 + 20 * 4);
- PUSH_DATA (push, 1);
- BEGIN_NVC0(push, NVC0_M2MF(EXEC), 1);
- PUSH_DATA (push, 0x100111);
- BEGIN_NIC0(push, NVC0_M2MF(DATA), 13 * 2 + 20);
+ PUSH_DATAu(push, bo, PFP_C_A8, 20 + 13 * 2);
PUSH_DATA (push, 0x00021462);
PUSH_DATA (push, 0x00000000);
PUSH_DATA (push, 0x00000000);
@@ -571,15 +515,7 @@ NVAccelInit3D_NVC0(ScrnInfoPtr pScrn)
PUSH_DATA (push, 0x00001de7);
PUSH_DATA (push, 0x80000000); /* exit */
- BEGIN_NVC0(push, NVC0_M2MF(OFFSET_OUT_HIGH), 2);
- PUSH_DATA (push, (bo->offset + PFP_NV12) >> 32);
- PUSH_DATA (push, (bo->offset + PFP_NV12));
- BEGIN_NVC0(push, NVC0_M2MF(LINE_LENGTH_IN), 2);
- PUSH_DATA (push, 19 * 8 + 20 * 4);
- PUSH_DATA (push, 1);
- BEGIN_NVC0(push, NVC0_M2MF(EXEC), 1);
- PUSH_DATA (push, 0x100111);
- BEGIN_NIC0(push, NVC0_M2MF(DATA), 19 * 2 + 20);
+ PUSH_DATAu(push, bo, PFP_NV12, 20 + 19 * 2);
PUSH_DATA (push, 0x00021462);
PUSH_DATA (push, 0x00000000);
PUSH_DATA (push, 0x00000000);
diff --git a/src/nvc0_accel.h b/src/nvc0_accel.h
index 7e1fd00..bdd7677 100644
--- a/src/nvc0_accel.h
+++ b/src/nvc0_accel.h
@@ -94,4 +94,19 @@ VTX2s(NVPtr pNv, float s1x, float s1y, float s2x, float s2y,
#endif
}
+static __inline__ void
+PUSH_DATAu(struct nouveau_pushbuf *push, struct nouveau_bo *bo,
+ unsigned delta, unsigned dwords)
+{
+ BEGIN_NVC0(push, NVC0_M2MF(OFFSET_OUT_HIGH), 2);
+ PUSH_DATA (push, (bo->offset + delta) >> 32);
+ PUSH_DATA (push, (bo->offset + delta));
+ BEGIN_NVC0(push, NVC0_M2MF(LINE_LENGTH_IN), 2);
+ PUSH_DATA (push, dwords * 4);
+ PUSH_DATA (push, 1);
+ BEGIN_NVC0(push, NVC0_M2MF(EXEC), 1);
+ PUSH_DATA (push, 0x100111);
+ BEGIN_NIC0(push, NVC0_M2MF(DATA), dwords);
+}
+
#endif
diff --git a/src/nvc0_exa.c b/src/nvc0_exa.c
index a8713da..ae2a523 100644
--- a/src/nvc0_exa.c
+++ b/src/nvc0_exa.c
@@ -540,24 +540,13 @@ NVC0EXATexture(PixmapPtr ppix, PicturePtr ppict, unsigned unit)
{
NVC0EXA_LOCALS(ppix);
struct nouveau_bo *bo = nouveau_pixmap_bo(ppix);
- uint64_t tic = pNv->tesla_scratch->offset + TIC_OFFSET + (unit * 32);
- uint64_t tsc = pNv->tesla_scratch->offset + TSC_OFFSET + (unit * 32);
uint32_t mode;
/* XXX: maybe add support for linear textures at some point */
if (!nv50_style_tiled_pixmap(ppix))
NOUVEAU_FALLBACK("pixmap is scanout buffer\n");
- BEGIN_NVC0(push, NVC0_M2MF(OFFSET_OUT_HIGH), 2);
- PUSH_DATA (push, tic >> 32);
- PUSH_DATA (push, tic);
- BEGIN_NVC0(push, NVC0_M2MF(LINE_LENGTH_IN), 2);
- PUSH_DATA (push, 8 * 4);
- PUSH_DATA (push, 1);
- BEGIN_NVC0(push, NVC0_M2MF(EXEC), 1);
- PUSH_DATA (push, 0x100111);
- BEGIN_NIC0(push, NVC0_M2MF(DATA), 8);
-
+ PUSH_DATAu(push, pNv->tesla_scratch, TIC_OFFSET + (unit * 32), 8);
switch (ppict->format) {
case PICT_a8r8g8b8:
PUSH_DATA (push, _(B_C0, G_C1, R_C2, A_C3, 8_8_8_8));
@@ -637,16 +626,7 @@ NVC0EXATexture(PixmapPtr ppix, PicturePtr ppict, unsigned unit)
PUSH_DATA (push, 0x03000000);
PUSH_DATA (push, 0x00000000);
- BEGIN_NVC0(push, NVC0_M2MF(OFFSET_OUT_HIGH), 2);
- PUSH_DATA (push, tsc >> 32);
- PUSH_DATA (push, tsc);
- BEGIN_NVC0(push, NVC0_M2MF(LINE_LENGTH_IN), 2);
- PUSH_DATA (push, 8 * 4);
- PUSH_DATA (push, 1);
- BEGIN_NVC0(push, NVC0_M2MF(EXEC), 1);
- PUSH_DATA (push, 0x100111);
- BEGIN_NIC0(push, NVC0_M2MF(DATA), 8);
-
+ PUSH_DATAu(push, pNv->tesla_scratch, TSC_OFFSET + (unit * 32), 8);
if (ppict->repeat) {
switch (ppict->repeatType) {
case RepeatPad:
diff --git a/src/nvc0_xv.c b/src/nvc0_xv.c
index 96ae223..1378170 100644
--- a/src/nvc0_xv.c
+++ b/src/nvc0_xv.c
@@ -103,15 +103,7 @@ nvc0_xv_image_put(ScrnInfoPtr pScrn,
BEGIN_NVC0(push, NVC0_3D(BLEND_ENABLE(0)), 1);
PUSH_DATA (push, 0);
- BEGIN_NVC0(push, NVC0_M2MF(OFFSET_OUT_HIGH), 2);
- PUSH_DATA (push, (pNv->tesla_scratch->offset + TIC_OFFSET) >> 32);
- PUSH_DATA (push, (pNv->tesla_scratch->offset + TIC_OFFSET));
- BEGIN_NVC0(push, NVC0_M2MF(LINE_LENGTH_IN), 2);
- PUSH_DATA (push, 16 * 4);
- PUSH_DATA (push, 1);
- BEGIN_NVC0(push, NVC0_M2MF(EXEC), 1);
- PUSH_DATA (push, 0x00100111);
- BEGIN_NIC0(push, NVC0_M2MF(DATA), 16);
+ PUSH_DATAu(push, pNv->tesla_scratch, TIC_OFFSET, 16);
if (id == FOURCC_YV12 || id == FOURCC_I420) {
PUSH_DATA (push, NV50TIC_0_0_MAPA_C0 | NV50TIC_0_0_TYPEA_UNORM |
NV50TIC_0_0_MAPB_ZERO | NV50TIC_0_0_TYPEB_UNORM |
@@ -180,15 +172,7 @@ nvc0_xv_image_put(ScrnInfoPtr pScrn,
PUSH_DATA (push, 0x00000000);
}
- BEGIN_NVC0(push, NVC0_M2MF(OFFSET_OUT_HIGH), 2);
- PUSH_DATA (push, (pNv->tesla_scratch->offset + TSC_OFFSET) >> 32);
- PUSH_DATA (push, (pNv->tesla_scratch->offset + TSC_OFFSET));
- BEGIN_NVC0(push, NVC0_M2MF(LINE_LENGTH_IN), 2);
- PUSH_DATA (push, 16 * 4);
- PUSH_DATA (push, 1);
- BEGIN_NVC0(push, NVC0_M2MF(EXEC), 1);
- PUSH_DATA (push, 0x00100111);
- BEGIN_NIC0(push, NVC0_M2MF(DATA), 16);
+ PUSH_DATAu(push, pNv->tesla_scratch, TSC_OFFSET, 16);
PUSH_DATA (push, NV50TSC_1_0_WRAPS_CLAMP_TO_EDGE |
NV50TSC_1_0_WRAPT_CLAMP_TO_EDGE |
NV50TSC_1_0_WRAPR_CLAMP_TO_EDGE);