nV News Forums

 
 

nV News Forums (http://www.nvnews.net/vbulletin/index.php)
-   NVIDIA Linux (http://www.nvnews.net/vbulletin/forumdisplay.php?f=14)
-   -   Advice to driver programming 100.14.09 (http://www.nvnews.net/vbulletin/showthread.php?t=93395)

loopi 06-17-07 01:55 PM

Advice to driver programming 100.14.09
 
Hi there,

I am using following:
2.6.21.3
Gigabyte 8600 GT / dual DVI but run on CRT-0 and CRT-1
Driver 100.14.09

I have problem with XVideo tearing, but only for second output. I have following theory because I could not get the chance to read the source code of NVIDIA driver and help you to fix it:

----------------
- 2nd output waits for its vertical retrace to end
- 2nd output got to know its vertical retrace is ended, but...

- 1st output also want to output one video frame, so it lock the same card for exclusive operation, waits for its vertical retrace to end, so it ended, so one frame of 1920x1080 4:2:0 YUV get delivered and get displayed, and unlock the card

- 2nd output get to access the card, so it also get to deliver one frame of 1920x1080 4:2:0 YUV, but unfortunely the vertical retrace already started, so tearing happen as part of old frame and part of new frame get displayed out from RAMDAC
-----------------

Each frame takes 3.2 MB , for 25 fps it would take atleast 100MB per output, so there will be a total 200MB/sec flooding over PCI-Express signal path, and it has to be realtime, eg. 50fps, but it can't be done perfectly atleast for 2nd output.

It seems like 1st output has higher priority than 2nd output, so 1st output always blocked 2nd output for any operations, sadly, this means 2nd output always has tearing video under the pleasure of 1st output.

To be exact, in my theory, one cycle of XvShmPutImage + CompletionEvent doesn't guaranteed a frame to get output to monitor. That frame is queued in the buffer of the driver and it just find some opportunity to get it over PCI Express bus, get it over to the card memory buffer, and get it over to the GPU, get it over YUV->RGB texture conversion, get it over to RAMDAC, and get it over during vertical blanking period, .......

To be exact, in my theory, even glSwapBuffer can't guaranteed you that it will swap the buffer exactly during vertical blank.

I have walk through the list of graphics card that you have to support and I understand it is a hard job to do driver programming. You might break certain features at some time, or it is just the fact that, every new hardware has its own demand for doing the same thing, even to output the YUV video, and you guys just could not have enough hands to fulfill each single demands done by those hardware engineers.

This is OK, I understand what's going on, as I am a software engineer myself, I have to fights with weird SATA chip, weird audio chip, and even weird Intel chipset that only support 1x on a 16x PCI-E lane, that Multi**eo.

Things just happen, but I can help you to fix them. But on a second thought, if you open the driver souce code itself, you might as well have to open the spec for NVIDIA graphics chip, which is certainly no good for your company.

Can we get some NDA done ? I help you , you help me.

Best Regards.

netllama 06-17-07 03:56 PM

Re: Advice to driver programming 100.14.09
 
You can only sync to VBLANK on a single display device. You can control which via nvidia-settings.

loopi 06-18-07 01:36 AM

Re: Advice to driver programming 100.14.09
 
No, last time I use 7800GT + 1.0-8762 it can sync to individual vertical retrace on both outputs.

This time 8600GT + 100.14.09 changes something? I don't understand.

Is it a hardware changes, or a software changes?

loopi 06-18-07 02:55 AM

Re: Advice to driver programming 100.14.09
 
I am running this 8600GT on 16x bus, yet it still have video tearing for 2nd output, if they have to play video together on individual screen, not Twinview.

Is it because even though the bus may run at 16X, but the card isn't ? Is there anyway to know if this difference exists ?

loopi 06-18-07 03:56 AM

Re: Advice to driver programming 100.14.09
 
So if 8600GT can only do one vertical sync at a time, despite it having 2 DVI outputs, which series do you recommend?

Quadro?

netllama 06-18-07 09:29 AM

Re: Advice to driver programming 100.14.09
 
This has nothing to do with the graphics card, and the behavior was not any different in older drivers.

If you'd like further assistance, please generate and attach an nvidia-bug-report.log.

loopi 06-19-07 11:05 PM

Re: Advice to driver programming 100.14.09
 
1 Attachment(s)
Dear netllama,

Thanks, please get attachment.

You are my friend :)

Best Regards.

loopi 06-25-07 02:59 AM

Re: Advice to driver programming 100.14.09
 
Hi netllama,

I have tried 100.14.11 but still got video tearing on 2nd output of Gigabyte 8600GT when 1st output is also playing video.

Thanks.

netllama 06-25-07 09:38 AM

Re: Advice to driver programming 100.14.09
 
Right, and that is expected, and is not a bug. As I stated earlier, you can only sync to VBLANK on a single display device. You can control which via nvidia-settings.

neosmatrix 06-25-07 01:35 PM

Re: Advice to driver programming 100.14.09
 
That's why i use 2 seperate X-Servers with my 8500GT. I would love to have twinview without any tearing :(

loopi 06-26-07 05:48 AM

Re: Advice to driver programming 100.14.09
 
Hi netllama,

Previously I own a 8600GT and it is only supported by 100.14.11 , but not 1.0-8762, so I could not distinguish if the card hardware or the driver software has problems on xvideo vertical sync. The problem is, for a card having dual DVI-I outputs, while the first output is perfect, it always has xvideo tearing on 2nd output.

Today, I have bought a new card, which is supported by old and new version of the drivers, and I observed that, the same card exhibits different results with different driver:

Card: Leadtek NVIDIA Quadro FX 560 PCI Express, dual DVI-I outputs
-----------
Driver version: 1.0-8762
XVideo Result: Both VGA outputs are perfect, no tearing
-----------
Driver version: 100.14.11
XVideo Result: CRT-0 is perfect, CRT-1 has tearing
-----------

Hence, in old driver I am able to sync XVideo output to individual monitor automatically for each of the dual outputs, but in new driver I could only sync to one monitor at any time, and that results in tearing all the time for 2nd outputs, and I can't do anything special to rectify it.

Therefore, vital changes has happened in the software driver, which should not have.

Why would this happen?


Best Regards.

netllama 06-26-07 09:59 AM

Re: Advice to driver programming 100.14.09
 
Please detail how or where you're setting sync to vblank.


All times are GMT -5. The time now is 05:47 AM.

Powered by vBulletin® Version 3.7.1
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
Copyright 1998 - 2014, nV News.