mesa: Branch 'master' - 2 commits

Jeremy Kolb jkolb at kemper.freedesktop.org
Mon Jan 22 01:49:40 UTC 2007


 src/mesa/drivers/dri/nouveau/nv30_state.c |  122 ++++++++++++++++++++++--------
 1 files changed, 93 insertions(+), 29 deletions(-)

New commits:
diff-tree 95fc270b06f07268732ade745084410bbc877168 (from parents)
Merge: ea441355d304ceff0d7eac4e112ed713ea08a43f d1f0a55af42c8a34c2d59ca003e7d7a8263665fb
Author: Jeremy Kolb <jkolb at brandeis.edu>
Date:   Sun Jan 21 20:47:10 2007 -0500

    Merge branch 'master' of git+ssh://git.freedesktop.org/git/mesa/mesa

diff-tree ea441355d304ceff0d7eac4e112ed713ea08a43f (from 669fefd3da55e3946b4b65a5d1104540c04717cb)
Author: Jeremy Kolb <jkolb at brandeis.edu>
Date:   Sun Jan 21 20:30:31 2007 -0500

    nouveau: Fixes for nv30.

diff --git a/src/mesa/drivers/dri/nouveau/nv30_state.c b/src/mesa/drivers/dri/nouveau/nv30_state.c
index 4d79bb6..e788a92 100644
--- a/src/mesa/drivers/dri/nouveau/nv30_state.c
+++ b/src/mesa/drivers/dri/nouveau/nv30_state.c
@@ -764,8 +764,66 @@ static void nv30WindowMoved(nouveauConte
 
 static GLboolean nv30InitCard(nouveauContextPtr nmesa)
 {
-	/* Need some love.. */
-	return GL_FALSE;
+	int i;
+	nouveauObjectOnSubchannel(nmesa, NvSub3D, Nv3D);
+
+	BEGIN_RING_SIZE(NvSub3D, NV30_TCL_PRIMITIVE_3D_SET_OBJECT1, 3);
+	OUT_RING(NvDmaFB);
+	OUT_RING(NvDmaAGP);
+        OUT_RING(NvDmaFB);
+	BEGIN_RING_SIZE(NvSub3D, NV30_TCL_PRIMITIVE_3D_SET_OBJECT8, 1);
+	OUT_RING(NvDmaFB);
+	BEGIN_RING_SIZE(NvSub3D, NV30_TCL_PRIMITIVE_3D_SET_OBJECT4, 2);
+	OUT_RING(NvDmaFB);
+	OUT_RING(NvDmaFB);
+        BEGIN_RING_SIZE(NvSub3D, 0x1b0, 1); /* SET_OBJECT8B*/
+        OUT_RING(NvDmaFB);
+
+        for(i = 0x2c8; i <= 0x2fc; i += 4)
+        {
+            BEGIN_RING_SIZE(NvSub3D, i, 1);
+            OUT_RING(0x0);
+        }
+
+	BEGIN_RING_SIZE(NvSub3D, 0x0220, 1);
+	OUT_RING(1);
+
+	BEGIN_RING_SIZE(NvSub3D, 0x03b0, 1);
+	OUT_RING(0x00100000);
+	BEGIN_RING_SIZE(NvSub3D, 0x1454, 1);
+	OUT_RING(0);
+	BEGIN_RING_SIZE(NvSub3D, 0x1d80, 1);
+	OUT_RING(3);
+	BEGIN_RING_SIZE(NvSub3D, 0x1450, 1);
+	OUT_RING(0x00030004);
+	
+	/* NEW */
+       	BEGIN_RING_SIZE(NvSub3D, 0x1e98, 1);
+        OUT_RING(0);
+        BEGIN_RING_SIZE(NvSub3D, 0x17e0, 3);
+        OUT_RING(0);
+        OUT_RING(0);
+        OUT_RING(0x3f800000);
+        BEGIN_RING_SIZE(NvSub3D, 0x1f80, 16);
+        OUT_RING(0); OUT_RING(0); OUT_RING(0); OUT_RING(0); 
+        OUT_RING(0); OUT_RING(0); OUT_RING(0); OUT_RING(0); 
+        OUT_RING(0x0000ffff);
+        OUT_RING(0); OUT_RING(0); OUT_RING(0); OUT_RING(0); 
+        OUT_RING(0); OUT_RING(0); OUT_RING(0); 
+/*
+        BEGIN_RING_SIZE(NvSub3D, 0x100, 2);
+        OUT_RING(0);
+        OUT_RING(0);
+*/
+        BEGIN_RING_SIZE(NvSub3D, 0x120, 3);
+        OUT_RING(0);
+        OUT_RING(1);
+        OUT_RING(2);
+
+        BEGIN_RING_SIZE(NvSub3D, 0x1d88, 1);
+        OUT_RING(0x00001200);
+
+	return GL_TRUE;
 }
 
 static GLboolean nv40InitCard(nouveauContextPtr nmesa)
@@ -811,36 +869,41 @@ static GLboolean nv40InitCard(nouveauCon
 }
 
 static GLboolean nv30BindBuffers(nouveauContextPtr nmesa, int num_color,
-      				 nouveau_renderbuffer **color,
-				 nouveau_renderbuffer *depth)
+		nouveau_renderbuffer **color,
+		nouveau_renderbuffer *depth)
 {
-   GLuint x, y, w, h;
+	GLuint x, y, w, h;
 
-   w = color[0]->mesa.Width;
-   h = color[0]->mesa.Height;
-   x = nmesa->drawX;
-   y = nmesa->drawY;
-
-   if (num_color != 1)
-      return GL_FALSE;
-   BEGIN_RING_SIZE(NvSub3D, NV30_TCL_PRIMITIVE_3D_VIEWPORT_COLOR_BUFFER_DIM0, 5);
-   OUT_RING        (((w+x)<<16)|x);
-   OUT_RING        (((h+y)<<16)|y);
-   if (color[0]->mesa._ActualFormat == GL_RGBA8)
-      OUT_RING        (0x148);
-   else
-      OUT_RING        (0x143);
-   OUT_RING        (color[0]->pitch);
-   OUT_RING        (color[0]->offset);
-
-   if (depth) {
-      BEGIN_RING_SIZE(NvSub3D, NV30_TCL_PRIMITIVE_3D_DEPTH_OFFSET, 1);
-      OUT_RING        (depth->offset);
-      BEGIN_RING_SIZE(NvSub3D, NV30_TCL_PRIMITIVE_3D_LMA_DEPTH_BUFFER_PITCH, 1);
-      OUT_RING        (depth->pitch);
-   }
+	w = color[0]->mesa.Width;
+	h = color[0]->mesa.Height;
+	x = nmesa->drawX;
+	y = nmesa->drawY;
+
+	if (num_color != 1)
+		return GL_FALSE;
+	BEGIN_RING_SIZE(NvSub3D, NV30_TCL_PRIMITIVE_3D_VIEWPORT_COLOR_BUFFER_DIM0, 5);
+	OUT_RING        (((w+x)<<16)|x);
+	OUT_RING        (((h+y)<<16)|y);
+	if (color[0]->mesa._ActualFormat == GL_RGBA8)
+		OUT_RING        (0x148);
+	else
+		OUT_RING        (0x143);
+	if (nmesa->screen->card->type >= NV_40)
+		OUT_RING        (color[0]->pitch);
+	else
+		OUT_RING        (color[0]->pitch | (depth ? (depth->pitch << 16): 0));
+	OUT_RING        (color[0]->offset);
+
+	if (depth) {
+		BEGIN_RING_SIZE(NvSub3D, NV30_TCL_PRIMITIVE_3D_DEPTH_OFFSET, 1);
+		OUT_RING        (depth->offset);
+		if (nmesa->screen->card->type >= NV_40) {
+			BEGIN_RING_SIZE(NvSub3D, NV30_TCL_PRIMITIVE_3D_LMA_DEPTH_BUFFER_PITCH, 1);
+			OUT_RING        (depth->pitch >> 2);
+		}
+	}
 
-   return GL_TRUE;
+	return GL_TRUE;
 }
 
 void nv30InitStateFuncs(GLcontext *ctx, struct dd_function_table *func)
@@ -862,6 +925,7 @@ void nv30InitStateFuncs(GLcontext *ctx, 
 	func->FrontFace			= nv30FrontFace;
 	func->DepthFunc			= nv30DepthFunc;
 	func->DepthMask			= nv30DepthMask;
+	func->DepthRange                = nv30DepthRange;
 	func->Enable			= nv30Enable;
 	func->Fogfv			= nv30Fogfv;
 	func->Hint			= nv30Hint;



More information about the mesa-commit mailing list