Current DRI3 specification

James Jones jajones at nvidia.com
Wed Jun 5 23:10:56 PDT 2013


On 06/05/2013 06:20 PM, Keith Packard wrote:
> * PGP Signed by an unknown key
>
> James Jones <jajones at nvidia.com> writes:
>
>> I read through this and the extension specification below.  The DRI3
>> stuff doesn't directly affect our driver at the moment of course, but I
>> like the direction it's going and the proposed/implied interactions
>> between DRI3 and Present.
>
> Thanks much for the review. I think the most relevant question for the
> binary nVidia driver is whether you think you can do something similar
> in terms of mapping your back buffers into X pixmaps for use by
> Present.

Yeah, I think the semantics are compatible.  We allocate these buffers 
on the server-side, but I don't think that affects the interaction with 
Present.

> Oh, I'm curious if you think we should be mapping the OML_sync_control
> UST/MSC/SBC triplet into Sync extension counters. It sure seems like a
> natural fit to me, and would reduce the size of the Present extension
> quite a bit.

I've never been fond of the OML triplet because the values don't 
correspond well to the counters/clocks our HW has.  However, it was 
always the intent that there would be a bunch of external-event 
triggered types of fences added via other extensions (trigger at a given 
timer value, when a certain scanline is reached, triggered while in the 
vblank region or a certain bracketed set of scanlines, etc.)

Perhaps rather than merge these into sync or present, there could be 
small, separate extensions that introduce various new ways to create a 
fence sync object with these properties.  One such extension could 
introduce the OML values either as a combined fence object, or as 3 
separate objects.  I had imagined the "present" operation would take an 
arbitrary length ordered list of fence sync objects to wait for, which 
would be passed down to drivers where they could be collapsed when 
possible.  For example, if the HW or kernel driver supports waiting for 
the first vblank after a given timer value was reached as a single 
operation, the fence sequence { TIMER, VBLANK } could be collapsed into 
a single HW/kernel wait operation by the corresponding X driver.

Thanks,
-James

>> I read through your futex-based fence sync implementation notes as well.
>>    Seems reasonable to me.  I didn't try too hard to poke holes in it
>>    though.
>
> I've had a couple of other positive reviews of that code; obviously it's
> going to take some actual failures before people figure out why it
> doesn't work right :-)
>


More information about the xorg-devel mailing list