On 22 Sep 2002, Fredrik Noring wrote:

> The attached patch is a work-around for the busy-wait in the
> XDGASetViewport function in the "nv" driver.
> 
> Eliminating the busy-wait can make a significant difference when
> for example playing video using DGA. (In my test setup, the 
> previous loop often required 20-40 % of wasted cpu cycles.)
> 
> The patch is ugly and made as a proof-of-concept. It uses the
> /dev/rtc registers and is Linux specific.
> 
> I have some ideas on long-term solutions, but they all require 
> external (kernel) support of some kind. 
> 
> Any thoughts?

   It's not portable.  Who cares anyway.  DGA is slated for removal
in XFree86 5.


                        Mark.

> 
>         Fredrik
> 
> 
> 
> --- xc.old/programs/Xserver/hw/xfree86/drivers/nv/nv_dga.c    2001-01-22 
>22:32:36.000000000 +0100
> +++ xc/programs/Xserver/hw/xfree86/drivers/nv/nv_dga.c        2002-09-22 
>14:23:43.000000000 +0200
> @@ -224,6 +224,9 @@
>      return pNv->DGAViewportStatus;
>  }
>  
> +#include <linux/rtc.h>
> +#include <asm/ioctl.h>
> +
>  static void 
>  NV_SetViewport(
>     ScrnInfoPtr pScrn, 
> @@ -232,11 +235,23 @@
>  ){
>     NVPtr pNv = NVPTR(pScrn);
>  
> -   NVAdjustFrame(pScrn->pScreen->myNum, x, y, flags);
> +   unsigned long rtc;
> +   int fd;
>  
> -   while(pNv->riva.PCIO[0x3da] & 0x08);
> -   while(!(pNv->riva.PCIO[0x3da] & 0x08));
> +   fd = open("/dev/rtc", O_RDONLY);
> +   ioctl(fd, RTC_IRQP_SET, 8192);
> +   ioctl(fd, RTC_PIE_ON, 0);
> +     
> +   NVAdjustFrame(pScrn->pScreen->myNum, x, y, flags);
>  
> +   while(pNv->riva.PCIO[0x3da] & 0x08)
> +      read(fd, &rtc, sizeof(unsigned long));
> +   while(!(pNv->riva.PCIO[0x3da] & 0x08))
> +      read(fd, &rtc, sizeof(unsigned long));
> +
> +   ioctl(fd, RTC_PIE_OFF, 0);
> +   close(fd);
> +   
>     pNv->DGAViewportStatus = 0;  
>  }
>  
> 
> _______________________________________________
> Xpert mailing list
> [EMAIL PROTECTED]
> http://XFree86.Org/mailman/listinfo/xpert
> 
_______________________________________________
Xpert mailing list
[EMAIL PROTECTED]
http://XFree86.Org/mailman/listinfo/xpert

Reply via email to