[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