On 05/20/2013 04:58 AM, Connor Behan wrote:
> On 19/05/13 09:48 AM, Pander wrote:
>> On 05/18/2013 10:28 PM, Tormod Volden wrote:
>>> On Sat, May 18, 2013 at 7:52 PM, Pander wrote:
>>>> (manual) patch results in
>>>>
>>>> [    74.465] (II) LoadModule: "sisimedia"
>>>> [    74.465] (II) Loading /usr/lib/xorg/modules/drivers/sisimedia_drv.so
>>>> [    74.465] (EE) Failed to load
>>>> /usr/lib/xorg/modules/drivers/sisimedia_drv.so:
>>>> /usr/lib/xorg/modules/drivers/sisimedia_drv.so: undefined symbol:
>>>> SiSUploadToScratch
>>>> [    74.465] (II) UnloadModule: "sisimedia"
>>>> [    74.465] (II) Unloading sisimedia
>>>> [    74.465] (EE) Failed to load module "sisimedia" (loader failed, 7)
>>>>
>>>> I used this file: http://pastebin.com/XkYfxrQy
>>> It would be more useful if you told which file it is and which version
>>> instead of paste-binning it. I assume this is the src/sis310_accel.c
>>> from git://gitorious.org/xf86-video-sis671/sis-671-fix.git
>> Sorry, I forgot indeed that filename. I have removed declarations and
>> usage of SiSUploadToScreen, SiSUploadToScratch and SiSDownloadFromScreen.
>>
>> Do I need to do that also for
>>   void SiSScratchSave(ScreenPtr pScreen, ExaOffscreenArea *area);
>> ?
>>
> No, that can be left in. Sorry for messing up the patch.

It works. Here is the Xorg log file. Switching to console with
CTRL+ALT+F1 etc still doesn't work however. See the top pf the file for
loading of the driver and the bottom (probably) for switching to console
and back:
  http://pastebin.com/VA7dVBjL

Using Option "UseTiming1366" "true" in the Device section still causes
screen to remain black. the log file for that is:
  http://pastebin.com/7t2XWRpQ

Attached are the patches for my current version.

I have tried to contact the author via
https://gitorious.org/xf86-video-sis671/sis-671-fix but I have not yet
received any response. In his log file I see some syncing with Xorg so
(in response of Alan's message of the 12th of May, the author might be
interested to contribute this to Xorg. I have send him a message again
if he can help out with a this.

What can be done next to get :
- console working
- acceleration support
- driver shipped with Xorg
- other improvements (fix compiler warnings, UseTiming1366, etc.)

Regards,

Pander

> 
> 
> 
> _______________________________________________
> xorg-devel@lists.x.org: X.Org development
> Archives: http://lists.x.org/archives/xorg-devel
> Info: http://lists.x.org/mailman/listinfo/xorg-devel
> 

--- sis_accel.c.orig	2013-05-20 11:23:36.280836820 +0200
+++ sis_accel.c	2013-05-19 18:46:07.753545455 +0200
@@ -55,9 +55,6 @@
 
 #ifdef SIS_USE_EXA
 extern void SiSScratchSave(ScreenPtr pScreen, ExaOffscreenArea *area);
-extern Bool SiSUploadToScreen(PixmapPtr pDst, int x, int y, int w, int h, char *src, int src_pitch);
-extern Bool SiSUploadToScratch(PixmapPtr pSrc, PixmapPtr pDst);
-extern Bool SiSDownloadFromScreen(PixmapPtr pSrc, int x, int y, int w, int h, char *dst, int dst_pitch);
 #endif /* EXA */
 
 extern UChar SiSGetCopyROP(int rop);
@@ -862,8 +859,8 @@ SiSAccelInit(ScreenPtr pScreen)
 	  /* Composite not supported */
 
 	  /* Upload, download to/from Screen */
-	  pSiS->EXADriverPtr->UploadToScreen = SiSUploadToScreen;
-	  pSiS->EXADriverPtr->DownloadFromScreen = SiSDownloadFromScreen;
+//	  pSiS->EXADriverPtr->UploadToScreen = SiSUploadToScreen;
+//	  pSiS->EXADriverPtr->DownloadFromScreen = SiSDownloadFromScreen;
 
 #endif  /*end of Xorg>=7.0 EXA Setting*/       
        }
@@ -949,7 +946,7 @@ SiSAccelInit(ScreenPtr pScreen)
        //#if  XORG_VERSION_CURRENT <= XORG_VERSION_NUMERIC(7,0,0,0,0)
        //      pSiS->EXADriverPtr->accel.UploadToScratch = SiSUploadToScratch;
        //#else
-             pSiS->EXADriverPtr->UploadToScratch = SiSUploadToScratch;
+//svg             pSiS->EXADriverPtr->UploadToScratch = SiSUploadToScratch;
        //#endif
 	  }
 
--- sis_3daccel.c.orig	2013-05-20 11:23:43.716836455 +0200
+++ sis_3daccel.c	2013-05-19 18:43:46.729552378 +0200
@@ -91,9 +91,6 @@
 
 #ifdef SIS_USE_EXA		/* EXA */
 void SiSScratchSave(ScreenPtr pScreen, ExaOffscreenArea *area);
-Bool SiSUploadToScreen(PixmapPtr pDst, int x, int y, int w, int h, char *src, int src_pitch);
-Bool SiSUploadToScratch(PixmapPtr pSrc, PixmapPtr pDst);
-Bool SiSDownloadFromScreen(PixmapPtr pSrc, int x, int y, int w, int h, char *dst, int dst_pitch);
 #endif /* EXA */
 
 
--- sis310_accel.c.orig	2013-05-20 11:23:15.780837827 +0200
+++ sis310_accel.c	2013-05-18 18:38:22.582402302 +0200
@@ -101,9 +101,6 @@ static CARD32 SiSDstTextureFormats32[3]
 
 #ifdef SIS_USE_EXA		/* EXA */
 void SiSScratchSave(ScreenPtr pScreen, ExaOffscreenArea *area);
-Bool SiSUploadToScreen(PixmapPtr pDst, int x, int y, int w, int h, char *src, int src_pitch);
-Bool SiSUploadToScratch(PixmapPtr pSrc, PixmapPtr pDst);
-Bool SiSDownloadFromScreen(PixmapPtr pSrc, int x, int y, int w, int h, char *dst, int dst_pitch);
 #endif /* EXA */
 
 void SISWriteBlitPacket(SISPtr pSiS, CARD32 *packet);
@@ -1429,141 +1426,6 @@ SiSDoneComposite(PixmapPtr pDst)
 }
 #endif
 
-Bool
-SiSUploadToScreen(PixmapPtr pDst, int x, int y, int w, int h, char *src, int src_pitch)
-{
-	ScrnInfoPtr pScrn = xf86ScreenToScrn(pDst->drawable.pScreen);
-	SISPtr pSiS = SISPTR(pScrn);
-	unsigned char *dst = pDst->devPrivate.ptr;
-	int dst_pitch = exaGetPixmapPitch(pDst);
-
-	(pSiS->SyncAccel)(pScrn);
-
-	if(pDst->drawable.bitsPerPixel < 8)
-	   return FALSE;
-
-	dst += (x * pDst->drawable.bitsPerPixel / 8) + (y * src_pitch);
-	while(h--) {
-	   SiSMemCopyToVideoRam(pSiS, dst, (unsigned char *)src,
-				(w * pDst->drawable.bitsPerPixel / 8));
-	   src += src_pitch;
-	   dst += dst_pitch;
-	}
-
-	return TRUE;
-}
-
-Bool
-SiSUploadToScratch(PixmapPtr pSrc, PixmapPtr pDst)
-{
-	ScrnInfoPtr pScrn = xf86ScreenToScrn(pSrc->drawable.pScreen);
-	SISPtr pSiS = SISPTR(pScrn);
-	unsigned char *src, *dst;
-	int src_pitch = exaGetPixmapPitch(pSrc);
-	int dst_pitch, size, w, h, bytes;
-
-	w = pSrc->drawable.width;
-/*
-#if  XORG_VERSION_CURRENT < XORG_VERSION_NUMERIC(6,8,2,0,0)
-	dst_pitch = ((w * (pSrc->drawable.bitsPerPixel >> 3)) +
-		     pSiS->EXADriverPtr->card.offscreenPitch - 1) &
-		    ~(pSiS->EXADriverPtr->card.offscreenPitch - 1);
-#elif XORG_VERSION_CURRENT <= XORG_VERSION_NUMERIC(7,0,0,0,0)
-	dst_pitch = ((w * (pSrc->drawable.bitsPerPixel >> 3)) +
-		     pSiS->EXADriverPtr->card.pixmapPitchAlign - 1) &
-		    ~(pSiS->EXADriverPtr->card.pixmapPitchAlign - 1);
-#else*/
-	dst_pitch = ((w * (pSrc->drawable.bitsPerPixel >> 3)) +
-		     pSiS->EXADriverPtr->pixmapPitchAlign - 1) &
-		    ~(pSiS->EXADriverPtr->pixmapPitchAlign - 1);
-
-//#endif
-	size = dst_pitch * pSrc->drawable.height;
-
-	if(size > pSiS->exa_scratch->size)
-	   return FALSE;
-/*
-#if  XORG_VERSION_CURRENT < XORG_VERSION_NUMERIC(6,8,2,0,0)
-	pSiS->exa_scratch_next = (pSiS->exa_scratch_next +
-				  pSiS->EXADriverPtr->card.offscreenByteAlign - 1) &
-				  ~(pSiS->EXADriverPtr->card.offscreenByteAlign - 1);
-#elif  XORG_VERSION_CURRENT <= XORG_VERSION_NUMERIC(7,0,0,0,0)
-	pSiS->exa_scratch_next = (pSiS->exa_scratch_next +
-				  pSiS->EXADriverPtr->card.pixmapOffsetAlign - 1) &
-				  ~(pSiS->EXADriverPtr->card.pixmapOffsetAlign - 1);
-#else*/
-	pSiS->exa_scratch_next = (pSiS->exa_scratch_next +
-				  pSiS->EXADriverPtr->pixmapOffsetAlign - 1) &
-				  ~(pSiS->EXADriverPtr->pixmapOffsetAlign - 1);
-//#endif
-/*
-#if  XORG_VERSION_CURRENT <= XORG_VERSION_NUMERIC(7,0,0,0,0)
-	if(pSiS->exa_scratch_next + size >
-	   pSiS->exa_scratch->offset + pSiS->exa_scratch->size) {
-	   (pSiS->EXADriverPtr->accel.WaitMarker)(pSrc->drawable.pScreen, 0);
-	   pSiS->exa_scratch_next = pSiS->exa_scratch->offset;
-	}
-#else*/
-	if(pSiS->exa_scratch_next + size >
-	   pSiS->exa_scratch->offset + pSiS->exa_scratch->size) {
-	   (pSiS->EXADriverPtr->WaitMarker)(pSrc->drawable.pScreen, 0);
-	   pSiS->exa_scratch_next = pSiS->exa_scratch->offset;
-	}
-//#endif
-
-	memcpy(pDst, pSrc, sizeof(*pDst));
-	pDst->devKind = dst_pitch;
-
-//#if  XORG_VERSION_CURRENT <= XORG_VERSION_NUMERIC(7,0,0,0,0)
-//	pDst->devPrivate.ptr = pSiS->EXADriverPtr->card.memoryBase + pSiS->exa_scratch_next;
-//#else
-	pDst->devPrivate.ptr = pSiS->EXADriverPtr->memoryBase + pSiS->exa_scratch_next;
-//#endif
-
-	pSiS->exa_scratch_next += size;
-
-	src = pSrc->devPrivate.ptr;
-	src_pitch = exaGetPixmapPitch(pSrc);
-	dst = pDst->devPrivate.ptr;
-
-	bytes = (src_pitch < dst_pitch) ? src_pitch : dst_pitch;
-
-	h = pSrc->drawable.height;
-
-	(pSiS->SyncAccel)(pScrn);
-
-	while(h--) {
-	   SiSMemCopyToVideoRam(pSiS, dst, src, size);
-	   src += src_pitch;
-	   dst += dst_pitch;
-	}
-
-	return TRUE;
-}
-
-Bool
-SiSDownloadFromScreen(PixmapPtr pSrc, int x, int y, int w, int h, char *dst, int dst_pitch)
-{
-	ScrnInfoPtr pScrn = xf86ScreenToScrn(pSrc->drawable.pScreen);
-	SISPtr pSiS = SISPTR(pScrn);
-	unsigned char *src = pSrc->devPrivate.ptr;
-	int src_pitch = exaGetPixmapPitch(pSrc);
-	int size = src_pitch < dst_pitch ? src_pitch : dst_pitch;
-
-	(pSiS->SyncAccel)(pScrn);
-
-	if(pSrc->drawable.bitsPerPixel < 8)
-	   return FALSE;
-
-	src += (x * pSrc->drawable.bitsPerPixel / 8) + (y * src_pitch);
-	while(h--) {
-	   SiSMemCopyFromVideoRam(pSiS, (unsigned char *)dst, src, size);
-	   src += src_pitch;
-	   dst += dst_pitch;
-	}
-
-	return TRUE;
-}
 #endif /* EXA */
 
 /* Helper for xv video blitter and rotation */
@@ -1818,9 +1680,6 @@ SiS315AccelInit(ScreenPtr pScreen)
 	      }
 #endif
 
-	      /* Upload, download to/from Screen */
-	      pSiS->EXADriverPtr->accel.UploadToScreen = SiSUploadToScreen;
-	      pSiS->EXADriverPtr->accel.DownloadFromScreen = SiSDownloadFromScreen;
 
 #else /*Xorg>= 7.0*/
 
@@ -1868,9 +1727,6 @@ SiS315AccelInit(ScreenPtr pScreen)
 	      }
 #endif
 
-	      /* Upload, download to/from Screen */
-	      pSiS->EXADriverPtr->UploadToScreen = SiSUploadToScreen;
-	      pSiS->EXADriverPtr->DownloadFromScreen = SiSDownloadFromScreen;
 #endif /*end of Xorg>=7.0*/ 
 	   
 	   }
@@ -1953,11 +1809,6 @@ SiS315AccelInit(ScreenPtr pScreen)
 						SiSScratchSave, pSiS);
 	      if(pSiS->exa_scratch) {
 		 pSiS->exa_scratch_next = pSiS->exa_scratch->offset;
-        //#if  XORG_VERSION_CURRENT <= XORG_VERSION_NUMERIC(7,0,0,0,0)
-	//	 pSiS->EXADriverPtr->accel.UploadToScratch = SiSUploadToScratch;
-	//#else
-                 pSiS->EXADriverPtr->UploadToScratch = SiSUploadToScratch;
-        //#endif
                }
 
 	   } else {
--- sis300_accel.c.orig	2013-05-20 11:23:27.836837235 +0200
+++ sis300_accel.c	2013-05-19 18:45:45.373546553 +0200
@@ -61,10 +61,6 @@
 
 #ifdef SIS_USE_EXA
 extern void SiSScratchSave(ScreenPtr pScreen, ExaOffscreenArea *area);
-extern Bool SiSUploadToScreen(PixmapPtr pDst, int x, int y, int w, int h, char *src, int src_pitch);
-extern Bool SiSUploadToScratch(PixmapPtr pSrc, PixmapPtr pDst);
-extern Bool SiSDownloadFromScreen(PixmapPtr pSrc, int x, int y, int w, int h,
-				char *dst, int dst_pitch);
 #endif /* EXA */
 
 extern UChar SiSGetCopyROP(int rop);
@@ -1332,8 +1328,8 @@ SiS300AccelInit(ScreenPtr pScreen)
 		 /* Composite not supported */
 
 		 /* Upload, download to/from Screen */
-		 pSiS->EXADriverPtr->UploadToScreen = SiSUploadToScreen;
-		 pSiS->EXADriverPtr->DownloadFromScreen = SiSDownloadFromScreen;
+//		 pSiS->EXADriverPtr->UploadToScreen = SiSUploadToScreen;
+//		 pSiS->EXADriverPtr->DownloadFromScreen = SiSDownloadFromScreen;
 
 	      } 
 #endif
@@ -1439,7 +1435,7 @@ SiS300AccelInit(ScreenPtr pScreen)
     #else
               if(pSiS->exa_scratch) {
 		 pSiS->exa_scratch_next = pSiS->exa_scratch->offset;
-		 pSiS->EXADriverPtr->UploadToScratch = SiSUploadToScratch;
+//svg		 pSiS->EXADriverPtr->UploadToScratch = SiSUploadToScratch;
 	      }
     #endif
 

Attachment: signature.asc
Description: OpenPGP digital signature

_______________________________________________
xorg-devel@lists.x.org: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: http://lists.x.org/mailman/listinfo/xorg-devel

Reply via email to