[MPlayer-dev-eng] [PATCH] nvidia_vid update

Sascha Sommer saschasommer at freenet.de
Mon Jan 5 22:41:02 CET 2004


> Hello,
> Attached is a patch, that fixes panning & small issues with
> multibuffering. Could you please test it. It works for me, but can;t
> test on >=NV10, NV03 and in cvidix(still can't get it working on my
> Vanta :( ), winvidix.

What is the problem no output or garbled image?
How do you use it?

> -    unsigned int next_frame;
> +    unsigned int cur_frame;

Looks like pure cosmetics. Is this really needed?

>-static void nv_waitidle(struct rivatv_info *info ){
>+/*static void nv_waitidle(struct rivatv_info *info ){
>      while (info->chip.PGRAPH[0x1C0] & 1) {}
> }
>-
>+*/

This function can be removed.


> static void nv_getscreenproperties(struct rivatv_info *info){
>   uint32_t bpp=0;
>   info->chip.lock(&info->chip, 0);
>   /*get screen depth*/
>   VID_WR08(info->chip.PCIO, 0x03D4,0x28);
>-  bpp = VID_RD08(info->chip.PCIO,0x03D5);
>+  bpp = VID_RD08(info->chip.PCIO,0x03D5)&0x3;

hm

>   /* get 9th bit in CRTC_OVERFLOW*/
>   info->screen_y |= (VID_RD08(info->chip.PCIO,0x03D5) &0x02)<<7;
>   /* and the 10th in CRTC_OVERFLOW*/
>+  VID_WR08(info->chip.PCIO,0x03D4,0x07);

the register shouldn't change. Does it?




>+ while (bps == 0)
>+ {
>+  if (info->chip.arch != NV_ARCH_03)
>+   bps = info->chip.PGRAPH[0x00000670/4];
>+  else
>+   bps = info->chip.PGRAPH[0x00000650/4];
>+//  if (bps == 0) fprintf(stderr, "bps returned 0: %d\n");
>+ }
>      x = info->wx - (pan % bps) * 8 / info->depth;
>      y = info->wy - (pan / bps);
>+    }
>+

I'm currently unable to test it, but afair this register is also 0 in
textmode.

Sascha




More information about the MPlayer-dev-eng mailing list