[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

xserver-xorg-video-nouveau: Changes to 'upstream-unstable'



 configure.ac      |    2 -
 src/nouveau_exa.c |   12 ++++++---
 src/nv10_exa.c    |    4 +--
 src/nv30_exa.c    |    6 ++--
 src/nv30_xv_tex.c |    2 -
 src/nv40_exa.c    |    6 ++--
 src/nv40_xv_tex.c |    2 -
 src/nv50_accel.h  |   12 ++++-----
 src/nvc0_accel.h  |   28 +++++++++++++---------
 src/nve0_shader.h |   66 ++++++++++++++++++------------------------------------
 10 files changed, 63 insertions(+), 77 deletions(-)

New commits:
commit 0d2b414aff634c996e0468bb0df1894d6c28c09e
Author: Ben Skeggs <bskeggs@redhat.com>
Date:   Tue Jun 19 10:12:37 2012 +1000

    bump version to 1.0.1

diff --git a/configure.ac b/configure.ac
index cc8732b..af126fb 100644
--- a/configure.ac
+++ b/configure.ac
@@ -22,7 +22,7 @@
 
 AC_PREREQ([2.60])
 AC_INIT([xf86-video-nouveau],
-        [1.0.0],
+        [1.0.1],
         [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg],
         [xf86-video-nouveau])
 

commit f84c28c9e6a0079e527655994689cb9c2ba51999
Author: Ben Skeggs <bskeggs@redhat.com>
Date:   Tue Jun 19 09:49:02 2012 +1000

    exa: fix remaining signed datatype issues
    
    Wasn't expecting this situation, apparently it happens..
    
    Signed-off-by: Ben Skeggs <bskeggs@redhat.com>

diff --git a/src/nv10_exa.c b/src/nv10_exa.c
index a3f7df3..cb9eb7c 100644
--- a/src/nv10_exa.c
+++ b/src/nv10_exa.c
@@ -594,9 +594,9 @@ PUSH_VTX2s(struct nouveau_pushbuf *push,
 	   int x1, int y1, int x2, int y2, int dx, int dy)
 {
 	BEGIN_NV04(push, NV10_3D(VERTEX_TX0_2I), 1);
-	PUSH_DATA (push, (y1 << 16) | x1);
+	PUSH_DATA (push, ((y1 & 0xffff) << 16) | (x1 & 0xffff));
 	BEGIN_NV04(push, NV10_3D(VERTEX_TX1_2I), 1);
-	PUSH_DATA (push, (y2 << 16) | x2);
+	PUSH_DATA (push, ((y2 & 0xffff) << 16) | (x2 & 0xffff));
 	BEGIN_NV04(push, NV10_3D(VERTEX_POS_3F_X), 3);
 	PUSH_DATAf(push, dx);
 	PUSH_DATAf(push, dy);
diff --git a/src/nv30_exa.c b/src/nv30_exa.c
index 9be52e5..95509bc 100644
--- a/src/nv30_exa.c
+++ b/src/nv30_exa.c
@@ -545,10 +545,10 @@ PUSH_VTX2s(struct nouveau_pushbuf *push,
 	   int x1, int y1, int x2, int y2, int dx, int dy)
 {
 	BEGIN_NV04(push, NV30_3D(VTX_ATTR_2I(8)), 2);
-	PUSH_DATA (push, (y1 << 16) | x1);
-	PUSH_DATA (push, (y2 << 16) | x2);
+	PUSH_DATA (push, ((y1 & 0xffff) << 16) | (x1 & 0xffff));
+	PUSH_DATA (push, ((y2 & 0xffff) << 16) | (x2 & 0xffff));
 	BEGIN_NV04(push, NV30_3D(VTX_ATTR_2I(0)), 1);
-	PUSH_DATA (push, (dy << 16) | dx);
+	PUSH_DATA (push, ((dy & 0xffff) << 16) | (dx & 0xffff));
 }
 
 void
diff --git a/src/nv30_xv_tex.c b/src/nv30_xv_tex.c
index 33c5602..bf75cfa 100644
--- a/src/nv30_xv_tex.c
+++ b/src/nv30_xv_tex.c
@@ -167,7 +167,7 @@ NV30StopTexturedVideo(ScrnInfoPtr pScrn, pointer data, Bool Exit)
 	PUSH_DATAf(push, (sx)); PUSH_DATAf(push, (sy));                        \
 	PUSH_DATAf(push, (sx)/2.0); PUSH_DATAf(push, (sy)/2.0);                \
 	BEGIN_NV04(push, NV30_3D(VTX_ATTR_2I(0)), 1);                          \
- 	PUSH_DATA (push, ((dy)<<16)|(dx));                                     \
+	PUSH_DATA (push, (((dy)&0xffff)<<16)|((dx)&0xffff));                   \
 } while(0)
 
 int
diff --git a/src/nv40_exa.c b/src/nv40_exa.c
index ce0d78a..977c855 100644
--- a/src/nv40_exa.c
+++ b/src/nv40_exa.c
@@ -527,10 +527,10 @@ PUSH_VTX2s(struct nouveau_pushbuf *push,
 	   int x1, int y1, int x2, int y2, int dx, int dy)
 {
 	BEGIN_NV04(push, NV30_3D(VTX_ATTR_2I(8)), 2);
-	PUSH_DATA (push, (y1 << 16) | x1);
-	PUSH_DATA (push, (y2 << 16) | x2);
+	PUSH_DATA (push, ((y1 & 0xffff) << 16) | (x1 & 0xffff));
+	PUSH_DATA (push, ((y2 & 0xffff) << 16) | (x2 & 0xffff));
 	BEGIN_NV04(push, NV30_3D(VTX_ATTR_2I(0)), 1);
-	PUSH_DATA (push, (dy << 16) | dx);
+	PUSH_DATA (push, ((dy & 0xffff) << 16) | (dx & 0xffff));
 }
 
 void
diff --git a/src/nv40_xv_tex.c b/src/nv40_xv_tex.c
index 9f2e336..79ef1fc 100644
--- a/src/nv40_xv_tex.c
+++ b/src/nv40_xv_tex.c
@@ -167,7 +167,7 @@ NV40StopTexturedVideo(ScrnInfoPtr pScrn, pointer data, Bool Exit)
 	PUSH_DATAf(push, (sx)); PUSH_DATAf(push, (sy));                        \
 	PUSH_DATAf(push, (sx)/2.0); PUSH_DATAf(push, (sy)/2.0);                \
 	BEGIN_NV04(push, NV30_3D(VTX_ATTR_2I(0)), 1);                          \
- 	PUSH_DATA (push, ((dy)<<16)|(dx));                                     \
+	PUSH_DATA (push, (((dy)&0xffff)<<16)|((dx)&0xffff));                   \
 } while(0)
 
 int
diff --git a/src/nv50_accel.h b/src/nv50_accel.h
index 24f0fa8..87c88a3 100644
--- a/src/nv50_accel.h
+++ b/src/nv50_accel.h
@@ -53,20 +53,18 @@ PUSH_VTX1s(struct nouveau_pushbuf *push, float sx, float sy, int dx, int dy)
 	PUSH_DATAf(push, sx);
 	PUSH_DATAf(push, sy);
 	BEGIN_NV04(push, NV50_3D(VTX_ATTR_2I(0)), 1);
-	PUSH_DATA (push, (dy << 16) | dx);
+	PUSH_DATA (push, ((dy & 0xffff) << 16) | (dx & 0xffff));
 }
 
 static __inline__ void
 PUSH_VTX2s(struct nouveau_pushbuf *push,
 	   int x1, int y1, int x2, int y2, int dx, int dy)
 {
-	BEGIN_NV04(push, NV50_3D(VTX_ATTR_2F_X(8)), 4);
-	PUSH_DATAf(push, x1);
-	PUSH_DATAf(push, y1);
-	PUSH_DATAf(push, x2);
-	PUSH_DATAf(push, y2);
+	BEGIN_NV04(push, NV50_3D(VTX_ATTR_2I(8)), 2);
+	PUSH_DATA (push, ((y1 & 0xffff) << 16) | (x1 & 0xffff));
+	PUSH_DATA (push, ((y2 & 0xffff) << 16) | (x2 & 0xffff));
 	BEGIN_NV04(push, NV50_3D(VTX_ATTR_2I(0)), 1);
-	PUSH_DATA (push, (dy << 16) | dx);
+	PUSH_DATA (push, ((dy & 0xffff) << 16) | (dx & 0xffff));
 }
 
 static __inline__ void

commit 794141f22179a09ba6b2a094ba72316c298fee8b
Author: Maarten Maathuis <madman2003@gmail.com>
Date:   Tue Jun 19 00:28:59 2012 +0200

    exa: fix various issues in transfer bo handling
    
    Thanks to "Christoph Bumiller <e0425955@student.tuwien.ac.at>" for hinting
    at the cause of the memory leak.
    
    Signed-off-by: Maarten Maathuis <madman2003@gmail.com>
    Signed-off-by: Ben Skeggs <bskeggs@redhat.com>

diff --git a/src/nouveau_exa.c b/src/nouveau_exa.c
index 55dce99..9b6b1f3 100644
--- a/src/nouveau_exa.c
+++ b/src/nouveau_exa.c
@@ -175,20 +175,24 @@ nouveau_exa_scratch(NVPtr pNv, int size, struct nouveau_bo **pbo, int *off)
 		ret = nouveau_bo_new(pNv->dev, NOUVEAU_BO_GART | NOUVEAU_BO_MAP,
 				     0, NOUVEAU_ALIGN(size, 1 * 1024 * 1024),
 				     NULL, &bo);
-		if (ret == 0)
-			ret = nouveau_bo_map(bo, NOUVEAU_BO_RDWR, pNv->client);
 		if (ret != 0)
 			return ret;
 
+		ret = nouveau_bo_map(bo, NOUVEAU_BO_RDWR, pNv->client);
+		if (ret != 0) {
+			nouveau_bo_ref(NULL, &bo);
+			return ret;
+		}
+
 		nouveau_bo_ref(bo, &pNv->transfer);
+		nouveau_bo_ref(NULL, &bo);
 		pNv->transfer_offset = 0;
 	}
 
 	*off = pNv->transfer_offset;
 	*pbo = pNv->transfer;
 
-	pNv->transfer_offset += size + 0xff;
-	pNv->transfer_offset &= ~0xff;
+	pNv->transfer_offset += size;
 	return 0;
 }
 

commit 661d0cf42219a063f8faa0518f3490ddd38209ff
Author: Christoph Bumiller <e0425955@student.tuwien.ac.at>
Date:   Mon Jun 18 17:13:55 2012 +0200

    nve0: fix and improve NV12 shader
    
    Only the 1st set of coordinates is valid.
    NVC0 was fixed in 9a3e579f637267b32efc46cfce5d1a36a41323b1.

diff --git a/src/nve0_shader.h b/src/nve0_shader.h
index b727d68..4705075 100644
--- a/src/nve0_shader.h
+++ b/src/nve0_shader.h
@@ -399,7 +399,7 @@ NVE0FP_NV12[] = {
 	0x00000000,
 	0x00000000,
 	0x80000000,
-	0x00000a0a,
+	0x0000000a,
 	0x00000000,
 	0x00000000,
 	0x00000000,
@@ -413,48 +413,28 @@ NVE0FP_NV12[] = {
 	0x00000000,
 	0x0000000f,
 	0x00000000,
-	0xfff09c00,
-	0xc07e007c,
-	0x10209c00,
-	0xc8000000,
-	0x0bf01c40,
-	0xc07e0080,
-	0x0bf05c40,
-	0xc07e0084,
-	0xfc001e86,
-	0x80120000,
-	0x00001de6,
-	0xf0000000, /* texbar */
-	0x00015c40,
-	0x58004000,
-	0x1050dc20,
-	0x50004000,
-	0x20511c20,
-	0x50004000,
-	0x30515c20,
-	0x50004000,
-	0x0bf01c40,
-	0xc07e0090,
-	0x0bf05c40,
-	0xc07e0094,
-	0xfc001e86,
-	0x80130001,
-	0x00001de6,
-	0xf0000000, /* texbar */
-	0x4000dc40,
-	0x30064000,
-	0x50011c40,
-	0x30084000,
-	0x60015c40,
-	0x300a4000,
-	0x70101c40,
-	0x30064000,
-	0x90109c40,
-	0x300a4000,
-	0x80105c40,
-	0x30084000,
-	0x00001de7,
-	0x80000000,
+	0xe23282e7, 0x2c220202, /* sched 0x2e 0x28 0x23 0x2e 0x20 0x20 0xc2 */
+	0xfff09c00, 0xc07e007c, /* interp pass f32 $r2 a[0x7c] */
+	0x10209c00, 0xc8000000, /* rcp f32 $r2 $r2 */
+	0x0bf01c40, 0xc07e0080, /* interp mul f32 $r0 a[0x80] $r2 0 */
+	0x0bf05c40, 0xc07e0084, /* interp mul f32 $r1 a[0x84] $r2 0 */
+	0xfc011e86, 0x80120000, /* tex t { # # # $r4 } t2d c[0x0] { $r0 $r1 } */
+	0xfc001f06, 0x80130001, /* tex p { # # $r0 $r1 } t2d c[0x4] { $r0 $r1 } */
+	0x04001de6, 0xf0000000, /* texbar 1 */
+	0x02004287, 0x22004a22, /* sched 0x28 0x4 0x20 0x20 0xa2 0x4 0x20 */
+	0x00415c40, 0x58004000, /* mul ftz rn f32 $r5 $r4 c0[0] */
+	0x1050dc20, 0x50004000, /* add ftz rn f32 $r3 $r5 c0[0x4] */
+	0x20511c20, 0x50004000, /* add ftz rn f32 $r4 $r5 c0[0x8] */
+	0x30515c20, 0x50004000, /* add ftz rn f32 $r5 $r5 c0[0xc] */
+	0x00001de6, 0xf0000000, /* texbar 0 */
+	0x4000dc40, 0x30064000, /* fma ftz rn f32 $r3 $r0 c0[0x10] $r3 */
+	0x50011c40, 0x30084000, /* fma ftz rn f32 $r4 $r0 c0[0x14] $r4 */
+	0x42004287, 0x200002e0, /* sched 0x28 0x4 0x20 0x4 0x2e 0 0 */
+	0x60015c40, 0x300a4000, /* fma ftz rn f32 $r5 $r0 c0[0x18] $r5 */
+	0x70101c40, 0x30064000, /* fma ftz rn f32 $r0 $r1 c0[0x1c] $r3 */
+	0x90109c40, 0x300a4000, /* fma ftz rn f32 $r2 $r1 c0[0x24] $r5 */
+	0x80105c40, 0x30084000, /* fma ftz rn f32 $r1 $r1 c0[0x20] $r4 */
+	0x00001de7, 0x80000000, /* exit */
 };
 
 #endif

commit a907efe44177298cb1c42a236aab087c14b71657
Author: Christoph Bumiller <e0425955@student.tuwien.ac.at>
Date:   Mon Jun 18 13:50:27 2012 +0200

    nvc0/accel: oops fix method size in previous patch

diff --git a/src/nvc0_accel.h b/src/nvc0_accel.h
index 9ba8757..38c58fd 100644
--- a/src/nvc0_accel.h
+++ b/src/nvc0_accel.h
@@ -57,7 +57,7 @@ PUSH_VTX1s(struct nouveau_pushbuf *push, float sx, float sy, int dx, int dy)
 	PUSH_DATA (push, VTX_ATTR(1, 2, FLOAT, 4));
 	PUSH_DATAf(push, sx);
 	PUSH_DATAf(push, sy);
-	BEGIN_NVC0(push, NVC0_3D(VTX_ATTR_DEFINE), 2);
+	BEGIN_NVC0(push, NVC0_3D(VTX_ATTR_DEFINE), 3);
 	PUSH_DATA (push, VTX_ATTR(0, 2, SSCALED, 4));
 	PUSH_DATA (push, dx);
 	PUSH_DATA (push, dy);

commit 8805e20bb9c1cfb7477f3eb7def64c5711fc91ea
Author: Christoph Bumiller <e0425955@student.tuwien.ac.at>
Date:   Mon Jun 18 13:41:43 2012 +0200

    nvc0/accel: use correct (signed) vertex data type in PUSH_VTX1/2s
    
    Could have kept s16 but decided against mask and shift.

diff --git a/src/nvc0_accel.h b/src/nvc0_accel.h
index 41cf477..9ba8757 100644
--- a/src/nvc0_accel.h
+++ b/src/nvc0_accel.h
@@ -58,23 +58,27 @@ PUSH_VTX1s(struct nouveau_pushbuf *push, float sx, float sy, int dx, int dy)
 	PUSH_DATAf(push, sx);
 	PUSH_DATAf(push, sy);
 	BEGIN_NVC0(push, NVC0_3D(VTX_ATTR_DEFINE), 2);
-	PUSH_DATA (push, VTX_ATTR(0, 2, USCALED, 2));
-	PUSH_DATA (push, (dy << 16) | dx);
+	PUSH_DATA (push, VTX_ATTR(0, 2, SSCALED, 4));
+	PUSH_DATA (push, dx);
+	PUSH_DATA (push, dy);
 }
 
 static __inline__ void
 PUSH_VTX2s(struct nouveau_pushbuf *push,
 	   int x0, int y0, int x1, int y1, int dx, int dy)
 {
-	BEGIN_NVC0(push, NVC0_3D(VTX_ATTR_DEFINE), 2);
-	PUSH_DATA (push, VTX_ATTR(1, 2, USCALED, 2));
-	PUSH_DATA (push, (y0 << 16) | x0);
-	BEGIN_NVC0(push, NVC0_3D(VTX_ATTR_DEFINE), 2);
-	PUSH_DATA (push, VTX_ATTR(2, 2, USCALED, 2));
-	PUSH_DATA (push, (y1 << 16) | x1);
-	BEGIN_NVC0(push, NVC0_3D(VTX_ATTR_DEFINE), 2);
-	PUSH_DATA (push, VTX_ATTR(0, 2, USCALED, 2));
-	PUSH_DATA (push, (dy << 16) | dx);
+	BEGIN_NVC0(push, NVC0_3D(VTX_ATTR_DEFINE), 3);
+	PUSH_DATA (push, VTX_ATTR(1, 2, SSCALED, 4));
+	PUSH_DATA (push, x0);
+	PUSH_DATA (push, y0);
+	BEGIN_NVC0(push, NVC0_3D(VTX_ATTR_DEFINE), 3);
+	PUSH_DATA (push, VTX_ATTR(2, 2, SSCALED, 4));
+	PUSH_DATA (push, x1);
+	PUSH_DATA (push, y1);
+	BEGIN_NVC0(push, NVC0_3D(VTX_ATTR_DEFINE), 3);
+	PUSH_DATA (push, VTX_ATTR(0, 2, SSCALED, 4));
+	PUSH_DATA (push, dx);
+	PUSH_DATA (push, dy);
 }
 
 static __inline__ void


Reply to: