Mesa (radeon-rewrite): r300: fixup texture state emission for kms path

Dave Airlie airlied at kemper.freedesktop.org
Thu Feb 26 01:15:01 UTC 2009


Module: Mesa
Branch: radeon-rewrite
Commit: 158ede35d50faae7cbc8aa2bb9288f93c9e60962
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=158ede35d50faae7cbc8aa2bb9288f93c9e60962

Author: Dave Airlie <airlied at redhat.com>
Date:   Thu Feb 26 11:09:32 2009 +1000

r300: fixup texture state emission for kms path

---

 src/mesa/drivers/dri/r300/r300_cmdbuf.c |   13 +++++++++++++
 1 files changed, 13 insertions(+), 0 deletions(-)

diff --git a/src/mesa/drivers/dri/r300/r300_cmdbuf.c b/src/mesa/drivers/dri/r300/r300_cmdbuf.c
index 3b12d36..068a9f9 100644
--- a/src/mesa/drivers/dri/r300/r300_cmdbuf.c
+++ b/src/mesa/drivers/dri/r300/r300_cmdbuf.c
@@ -168,10 +168,21 @@ static void emit_tex_offsets(GLcontext *ctx, struct radeon_state_atom * atom)
 	r300ContextPtr r300 = R300_CONTEXT(ctx);
 	BATCH_LOCALS(&r300->radeon);
 	int numtmus = packet0_count(r300, r300->hw.tex.offset.cmd);
+	int notexture = 0;
 
 	if (numtmus) {
 		int i;
 
+		for(i = 0; i < numtmus; ++i) {
+		    radeonTexObj *t = r300->hw.textures[i];
+		
+		    if (!t)
+			notexture = 1;
+		}
+
+		if (r300->radeon.radeonScreen->kernel_mm && notexture) {
+			return;
+		}
 		BEGIN_BATCH_NO_AUTOSTATE(4 * numtmus);
 		for(i = 0; i < numtmus; ++i) {
 		    radeonTexObj *t = r300->hw.textures[i];
@@ -188,6 +199,8 @@ static void emit_tex_offsets(GLcontext *ctx, struct radeon_state_atom * atom)
 			    } else if (!r300->radeon.radeonScreen->kernel_mm) {
 				    OUT_BATCH(t->override_offset);
 			    }
+			    else
+			    	OUT_BATCH(r300->radeon.radeonScreen->texOffset[0]);
 		    }
 		}
 		END_BATCH();




More information about the mesa-commit mailing list