> > Garbage in Mozilla still remains when acceleration is turned on - what
> > other XAA bits should I look over?
>
> Not sure, read XAA.HOWTO if you haven't already.

Will do.

> > Now the remanining problem is the garbage in lower part of the screen -
> > any ideas about that? It's there even with NoAccel and changing too.
>
> Changing what? Have you tried the modifications I suggested for the
> framebuffer aperture?

I suspect that the pixmap cache is at the end of video RAM and I'm
running into it with framebuffer - but I'm not sure.


The current patch is like this:

Index: s3v_accel.c
===================================================================
RCS file: /cvs/xc/programs/Xserver/hw/xfree86/drivers/s3virge/s3v_accel.c,v
retrieving revision 1.23
diff -u -r1.23 s3v_accel.c
--- s3v_accel.c 2001/12/13 18:01:50     1.23
+++ s3v_accel.c 2003/01/22 07:55:54
@@ -128,7 +128,11 @@
     infoPtr->Mono8x8PatternFillFlags = NO_TRANSPARENCY |
                                HARDWARE_PATTERN_PROGRAMMED_BITS |
                                HARDWARE_PATTERN_SCREEN_ORIGIN |
+#if X_BYTE_ORDER==X_BIG_ENDIAN
+                               BIT_ORDER_IN_BYTE_LSBFIRST;
+#else
                                BIT_ORDER_IN_BYTE_MSBFIRST;
+#endif


 #ifndef __alpha__
@@ -144,7 +148,11 @@
        infoPtr->CPUToScreenColorExpandFillFlags =  ROP_NEEDS_SOURCE |
                                        CPU_TRANSFER_PAD_DWORD |
                                         SCANLINE_PAD_DWORD |
+#if X_BYTE_ORDER==X_BIG_ENDIAN
+                                        BIT_ORDER_IN_BYTE_LSBFIRST |
+#else
                                         BIT_ORDER_IN_BYTE_MSBFIRST |
+#endif
                                        LEFT_EDGE_CLIPPING;

        if(ps3v->AccelFlags & MONO_TRANS_BUG)
Index: s3v_driver.c
===================================================================
RCS file: /cvs/xc/programs/Xserver/hw/xfree86/drivers/s3virge/s3v_driver.c,v
retrieving revision 1.85
diff -u -r1.85 s3v_driver.c
--- s3v_driver.c        2003/01/12 03:55:48     1.85
+++ s3v_driver.c        2003/01/22 07:56:16
@@ -2395,10 +2395,17 @@
        "Internal error: could not map registers.\n");
     return FALSE;
   }
+
+  pScrn->memPhysBase = ps3v->PciInfo->memBase[0];
+
+#if X_BYTE_ORDER==X_BIG_ENDIAN
+  pScrn->memPhysBase += 32*1024*1024; /* bigendian aperture is at 32M */
+#endif
+
                                        /* Map the framebuffer */
   if (ps3v->videoRambytes) { /* not set in PreInit() */
       ps3v->FBBase = xf86MapPciMem(pScrn->scrnIndex, VIDMEM_FRAMEBUFFER,
-                                  ps3v->PciTag, ps3v->PciInfo->memBase[0],
+                                  ps3v->PciTag, pScrn->memPhysBase,
                                   ps3v->videoRambytes );

       if( !ps3v->FBBase ) {
@@ -2411,7 +2418,6 @@
       ps3v->FBStart = ps3v->FBBase;
   }

-  pScrn->memPhysBase = ps3v->PciInfo->memBase[0];
   pScrn->fbOffset = 0;

                                /* Set up offset to hwcursor memory area */
@@ -2884,6 +2890,10 @@
      new->CR31 = 0x8c;     /* Dis. 64k window, en. ENH maps */
    }

+#if X_BYTE_ORDER==X_BIG_ENDIAN
+   new->CR53 |= 0x2;       /* 2 - word swap */
+#endif
+
    /* Enables S3D graphic engine and PCI disconnects */
    if(ps3v->Chipset == S3_ViRGE_VX){
       new->CR66 = 0x90;
@@ -2958,7 +2968,12 @@
    new->CR45 = 0x00;
                                /* Enable MMIO to RAMDAC registers */
    new->CR65 = 0x00;           /* CR65_2 must be zero, doc seems to be wrong */
+
+#if X_BYTE_ORDER==X_BIG_ENDIAN
+   new->CR54 = 0x43;           /* 0x20 is OK */
+#else
    new->CR54 = 0x00;
+#endif

    if ( S3_ViRGE_GX2_SERIES(ps3v->Chipset) ||
        /* S3_ViRGE_MX_SERIES(ps3v->Chipset) || CR40 reserved on MX */

-- 
Meelis Roos ([EMAIL PROTECTED])

_______________________________________________
Devel mailing list
[EMAIL PROTECTED]
http://XFree86.Org/mailman/listinfo/devel

Reply via email to