summaryrefslogtreecommitdiff
path: root/src/nv50_xv.c
diff options
context:
space:
mode:
authorBen Skeggs <bskeggs@redhat.com>2012-04-19 13:21:27 +1000
committerBen Skeggs <bskeggs@redhat.com>2012-04-24 11:56:04 +1000
commitb48bcc094beecf521899dd63c8fdbccfd534e5cd (patch)
treee33c1c6030a0f2fbe10ad7fba737d363c686fb9a /src/nv50_xv.c
parent5ac2ca8c56ec8b055878c8ac4cbc8ca74379abda (diff)
nv50/exa: perform texcoord transformations in vertex program
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Diffstat (limited to 'src/nv50_xv.c')
-rw-r--r--src/nv50_xv.c25
1 files changed, 16 insertions, 9 deletions
diff --git a/src/nv50_xv.c b/src/nv50_xv.c
index 1c6e5be..8ab7202 100644
--- a/src/nv50_xv.c
+++ b/src/nv50_xv.c
@@ -214,6 +214,19 @@ nv50_xv_image_put(ScrnInfoPtr pScrn,
BEGIN_NV04(push, NV50_3D(BIND_TIC(2)), 1);
PUSH_DATA (push, 0x203);
+ PUSH_DATAu(push, pNv->scratch, PVP_DATA, 11);
+ PUSH_DATAf(push, 1.0);
+ PUSH_DATAf(push, 0.0);
+ PUSH_DATAf(push, 0.0);
+ PUSH_DATAf(push, 0.0);
+ PUSH_DATAf(push, 1.0);
+ PUSH_DATAf(push, 0.0);
+ PUSH_DATAf(push, 0.0);
+ PUSH_DATAf(push, 0.0);
+ PUSH_DATAf(push, 1.0);
+ PUSH_DATAf(push, 1.0 / width);
+ PUSH_DATAf(push, 1.0 / height);
+
if (pPriv->SyncToVBlank)
NV50SyncToVBlank(ppix, dstBox);
@@ -235,11 +248,6 @@ nv50_xv_image_put(ScrnInfoPtr pScrn,
int sy1=pbox->y1;
int sy2=pbox->y2;
- tx1 = tx1 / width;
- tx2 = tx2 / width;
- ty1 = ty1 / height;
- ty2 = ty2 / height;
-
if (nouveau_pushbuf_space(push, 64, 0, 0) ||
nouveau_pushbuf_refn (push, refs, 3))
return BadImplementation;
@@ -251,12 +259,11 @@ nv50_xv_image_put(ScrnInfoPtr pScrn,
BEGIN_NV04(push, NV50_3D(SCISSOR_HORIZ(0)), 2);
PUSH_DATA (push, sx2 << NV50_3D_SCISSOR_HORIZ_MAX__SHIFT | sx1);
PUSH_DATA (push, sy2 << NV50_3D_SCISSOR_VERT_MAX__SHIFT | sy1 );
-
BEGIN_NV04(push, NV50_3D(VERTEX_BEGIN_GL), 1);
PUSH_DATA (push, NV50_3D_VERTEX_BEGIN_GL_PRIMITIVE_TRIANGLES);
- VTX2s(pNv, tx1, ty1, tx1, ty1, sx1, sy1);
- VTX2s(pNv, tx2+(tx2-tx1), ty1, tx2+(tx2-tx1), ty1, sx2+(sx2-sx1), sy1);
- VTX2s(pNv, tx1, ty2+(ty2-ty1), tx1, ty2+(ty2-ty1), sx1, sy2+(sy2-sy1));
+ PUSH_VTX1s(push, tx1, ty1, sx1, sy1);
+ PUSH_VTX1s(push, tx2+(tx2-tx1), ty1, sx2+(sx2-sx1), sy1);
+ PUSH_VTX1s(push, tx1, ty2+(ty2-ty1), sx1, sy2+(sy2-sy1));
BEGIN_NV04(push, NV50_3D(VERTEX_END_GL), 1);
PUSH_DATA (push, 0);