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

Author: Dave Airlie <[email protected]>
Date:   Mon Feb 23 15:41:30 2009 +1000

r300: fixup old setTexOffset DRI1 extension

---

 src/mesa/drivers/dri/r300/r300_cmdbuf.c     |   20 +++++---------------
 src/mesa/drivers/dri/r300/r300_texstate.c   |    2 +-
 src/mesa/drivers/dri/radeon/radeon_screen.c |   14 ++++++++------
 3 files changed, 14 insertions(+), 22 deletions(-)

diff --git a/src/mesa/drivers/dri/r300/r300_cmdbuf.c 
b/src/mesa/drivers/dri/r300/r300_cmdbuf.c
index ac1c128..c3a808c 100644
--- a/src/mesa/drivers/dri/r300/r300_cmdbuf.c
+++ b/src/mesa/drivers/dri/r300/r300_cmdbuf.c
@@ -97,7 +97,7 @@ void emit_vpu(GLcontext *ctx, struct radeon_state_atom * atom)
        addr = (cmd.vpu.adrhi << 8) | cmd.vpu.adrlo;
        ndw = cmd.vpu.count * 4;
        if (ndw) {
-               BEGIN_BATCH_NO_AUTOSTATE(13 + ndw);
+               BEGIN_BATCH_NO_AUTOSTATE(15 + ndw);
 
                /* flush processing vertices */
                OUT_BATCH_REGVAL(R300_SC_SCREENDOOR, 0);
@@ -166,35 +166,25 @@ static void emit_tex_offsets(GLcontext *ctx, struct 
radeon_state_atom * atom)
        if (numtmus) {
                int i;
 
+               BEGIN_BATCH_NO_AUTOSTATE(4 * numtmus);
                for(i = 0; i < numtmus; ++i) {
                    radeonTexObj *t = r300->hw.textures[i];
+                   OUT_BATCH_REGSEQ(R300_TX_OFFSET_0 + (i * 4), 1);
                    if (t && !t->image_override) {
-                           BEGIN_BATCH_NO_AUTOSTATE(4);
-                           OUT_BATCH_REGSEQ(R300_TX_OFFSET_0 + (i * 4), 1);
                            OUT_BATCH_RELOC(t->tile_bits, t->mt->bo, 0,
                                            RADEON_GEM_DOMAIN_VRAM, 0, 0);
-                           END_BATCH();
                    } else if (!t) {
-                           //assert(0);
-                           BEGIN_BATCH_NO_AUTOSTATE(4);
-                           OUT_BATCH_REGSEQ(R300_TX_OFFSET_0 + (i * 4), 1);
                            OUT_BATCH(r300->radeon.radeonScreen->texOffset[0]);
-                           END_BATCH();
-                   } else {
+                   } else { /* override cases */
                            if (t->bo) {
-                                   BEGIN_BATCH_NO_AUTOSTATE(4);
-                                   OUT_BATCH_REGSEQ(R300_TX_OFFSET_0 + (i * 
4), 1);
                                    OUT_BATCH_RELOC(t->tile_bits, t->bo, 0,
                                                    RADEON_GEM_DOMAIN_VRAM, 0, 
0);
-                                   END_BATCH();
                            } else if (!r300->radeon.radeonScreen->kernel_mm) {
-                                   BEGIN_BATCH_NO_AUTOSTATE(2);
-                                   OUT_BATCH_REGSEQ(R300_TX_OFFSET_0 + (i * 
4), 1);
                                    OUT_BATCH(t->override_offset);
-                                   END_BATCH();
                            }
                    }
                }
+               END_BATCH();
        }
 }
 
diff --git a/src/mesa/drivers/dri/r300/r300_texstate.c 
b/src/mesa/drivers/dri/r300/r300_texstate.c
index 25cd4d8..4f145bd 100644
--- a/src/mesa/drivers/dri/r300/r300_texstate.c
+++ b/src/mesa/drivers/dri/r300/r300_texstate.c
@@ -216,7 +216,7 @@ static void setup_hardware_state(r300ContextPtr rmesa, 
radeonTexObj *t)
                return;
        }
 
-       if (t->image_override)
+       if (t->image_override && t->bo)
                return;
 
        t->pp_txsize = (((firstImage->Width - 1) << R300_TX_WIDTHMASK_SHIFT)
diff --git a/src/mesa/drivers/dri/radeon/radeon_screen.c 
b/src/mesa/drivers/dri/radeon/radeon_screen.c
index 086a268..f8de799 100644
--- a/src/mesa/drivers/dri/radeon/radeon_screen.c
+++ b/src/mesa/drivers/dri/radeon/radeon_screen.c
@@ -983,20 +983,22 @@ radeonCreateScreen( __DRIscreenPrivate *sPriv )
        screen->extensions[i++] = &driMediaStreamCounterExtension.base;
    }
 
+   if (!screen->kernel_mm) {
 #if !RADEON_COMMON
-   screen->extensions[i++] = &radeonTexOffsetExtension.base;
+       screen->extensions[i++] = &radeonTexOffsetExtension.base;
 #endif
 
 #if RADEON_COMMON && defined(RADEON_COMMON_FOR_R200)
-   if (IS_R200_CLASS(screen))
-       screen->extensions[i++] = &r200AllocateExtension.base;
+        if (IS_R200_CLASS(screen))
+            screen->extensions[i++] = &r200AllocateExtension.base;
 
-   screen->extensions[i++] = &r200texOffsetExtension.base;
+        screen->extensions[i++] = &r200texOffsetExtension.base;
 #endif
 
 #if RADEON_COMMON && defined(RADEON_COMMON_FOR_R300)
-   //screen->extensions[i++] = &r300texOffsetExtension.base;
+        screen->extensions[i++] = &r300texOffsetExtension.base;
 #endif
+   }
 
    screen->extensions[i++] = NULL;
    sPriv->extensions = screen->extensions;
@@ -1090,7 +1092,7 @@ radeonCreateScreen2(__DRIscreenPrivate *sPriv)
 #endif
 
 #if RADEON_COMMON && defined(RADEON_COMMON_FOR_R300)
-   screen->extensions[i++] = &r300texOffsetExtension.base;
+   //screen->extensions[i++] = &r300texOffsetExtension.base;
    screen->extensions[i++] = &r300TexBufferExtension.base;
 #endif
 

_______________________________________________
mesa-commit mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to