[PATCH] Update dri2proto.txt to reflect current extension contents

Keith Packard keithp at keithp.com
Fri Sep 28 10:39:08 PDT 2012


Add missing CreateDrawable/DestroyDrawable requests
Add MSC/SBC parameters to DRI2SwapBuffers
Complete revision history section.
Add brief description of the prime bits in driverType

Signed-off-by: Keith Packard <keithp at keithp.com>
---
 dri2proto.txt |  118 ++++++++++++++++++++++++++++++++++++++++++++++++++-------
 1 file changed, 104 insertions(+), 14 deletions(-)

diff --git a/dri2proto.txt b/dri2proto.txt
index 9921301..aef7c0f 100644
--- a/dri2proto.txt
+++ b/dri2proto.txt
@@ -6,6 +6,24 @@
 			    krh at redhat.com
 			     Red Hat, Inc
 
+			      Ian Romanick
+			  idr at freedesktop.org
+		           Intel Corporation
+
+			      Jesse Barnes
+		         jbarnes at virtuousgeek.org
+			   Intel Corporation
+
+			     Francisco Jerez
+		          currojerez at riseup.net
+
+			      Chad Versace
+			 chad.versace at linux.intel.com
+			    Intel Corporation
+
+			      Dave Airlie
+			   airlied at redhat.com
+			      Red Hat, Inc
 
 1. Introduction
 
@@ -21,9 +39,6 @@ Direct rendering implementations of OpenVG, Xv, cairo and other
 graphics APIs should find the functionality exposed by this extension
 helpful and hopefully sufficient.
 
-Relation to XF86DRI
-
-
 1.1. Acknowledgements
 
 Kevin E. Martin <kem at redhat.com>
@@ -62,7 +77,6 @@ and submit the rendering requests is outside the scope of this
 specification.  However, Appendix B does discuss implementation of
 this specification on the Graphics Execution Manager (GEM).
 
-
 2.3. Request ordering
 
 No ordering between swap buffers and X rendering.  X rendering to src
@@ -130,7 +144,8 @@ been completed.  This can be used to throttle drawing on the client
 side and tie into application main loops.
 
 Another event is generated when the validity of the requested buffers
-changes.
+changes, either due to window size changes, buffer swapping or page
+flipping.
 
 			     ⚙ ⚙ ⚙  ⚙ ⚙ ⚙
 
@@ -140,6 +155,9 @@ changes.
 The server side region support specified in the Xfixes extension
 version 2 is used in the CopyRegion request.
 
+DRI2CLIENTBUF
+	A reference to a client-allocated buffer for use with the
+	swap request.
 
 			     ⚙ ⚙ ⚙  ⚙ ⚙ ⚙
 
@@ -251,7 +269,10 @@ The name of this extension is "DRI2".
 	Returns the driver name and device file to use for the
 	specified driver type for the screen associated with 'window'.
 
-	'type' identifies the type of driver to query for.
+	'type' identifies the type of driver to query for. The lower
+	16 bits of this value are used for the driverType, bits 16-19
+	are used for the Prime ID, which identifies a non-master GPU
+	providing rendering or display support.
 
 	'driver' is the name of the driver to load.  The client is
 	assumed to know where to look for the drivers and what to do
@@ -272,13 +293,13 @@ The name of this extension is "DRI2".
 ┌───
     DRI2Authenticate
 	window: WINDOW
-	token: CARD32
+	magic: CARD32
       ▶
         authenticated: CARD32
 └───
 	Errors: Window
 
-	Request that the X server authenticates 'token', allowing the
+	Request that the X server authenticates 'magic', allowing the
 	client to access the DRM buffers created by the X server on
 	the screen associated with 'window'.
 
@@ -286,6 +307,26 @@ The name of this extension is "DRI2".
 	invalid token is passed, in which case authenticated is False.
 
 ┌───
+    DRI2CreateDrawable
+	drawable: DRAWABLE
+└───
+	Errors: Drawable
+
+	This request lets the X server know that the application is
+	performing DRI2 operations on the target drawable. This causes
+	the server to deliver InvalidateBuffers events as needed.
+
+┌───
+    DRI2DestroyDrawable
+	drawable: DRAWABLE
+└───
+	Errors: Drawable
+
+	This request appears to have no effect on the X server, but
+	presumably it should cause the server to stop delivering
+	InvalidateBuffers events?
+
+┌───
     DRI2GetBuffers
 	drawable: DRAWABLE
 	attachments: LISTofDRI2ATTACHMENTS
@@ -293,7 +334,7 @@ The name of this extension is "DRI2".
 	width, height: CARD32
 	buffers: LISTofDRI2BUFFER
 └───
-	Errors: Window
+	Errors: Drawable, Value
 
 	Get buffers for the provided attachment points for the given
 	drawable.
@@ -315,18 +356,25 @@ The name of this extension is "DRI2".
 	destination: DRI2ATTACHMENT
       ▶	
 └───
-	Errors: Window, Value
+	Errors: Drawable, Value
 
 	Schedule a copy from one DRI2 buffer to another.
 
 	The DRICopyRegion request has a reply but it is empty.  The
 	reply is there to let the direct rendering client wait until
 	the server has seen the request before proceeding with
-	rendering the next frame.
+	rendering the next frame. An invalid source or destination
+	parameter causes a Value error.
 
 ┌───
     DRI2SwapBuffers
 	drawable: DRAWABLE
+	target_msc_hi: CARD32
+	target_msc_lo: CARD32
+	divisor_hi: CARD32
+	divisor_lo: CARD32
+	remainder_hi: CARD32
+	remainder_lo: CARD32
       ▶	
 	count: two CARD32s
 └───
@@ -335,6 +383,17 @@ The name of this extension is "DRI2".
 	Schedule a swap of the front and back buffers with the display
 	server.
 
+	target_msc_hi/target_msc_lo form a 64-bit value marking the
+	target media stamp count for the swap request. When non-zero,
+	these mark the desired time where the data should be
+	presented.
+
+	divisor_hi/divisor_lo form a 64-bit value marking the desired
+	media stamp count interval between swaps.
+
+	remainder_hi/remainder_lo form a 64-bite value marking the
+	desired offset within the divisor_hi/divisor_lo swap interval.
+
 	Returns the swap count value when the swap will actually occur (e.g.
 	the last queued swap count + (pending swap count * swap interval)).
 
@@ -536,14 +595,29 @@ The DRI2 extension has undergone a number of revisions before
              more flexible object creation.
 
 	2.2: Approaching perfection.  Added requests for swapbuffers,
-             MSC and SBC related requests, and events.
+             MSC and SBC related requests, and events. Also adds
+	     support for VDPAU drivers.
+
+	2.3: Added the DRI2InvalidateBuffers event to notify
+	     applications when their buffers have become invalid,
+	     either due to a window resize or a buffer swap.
 
-	2.3: Added the DRI2InvalidateBuffers event.
+	2.4: Fix some encoding issues in the DRI2BufferSwapComplete
+	     events; they were accidentally trying to use 36 bytes,
+	     which doesn't work well with standard sized X events.
 
-	2.6: Enlightenment attained.  Added the DRI2BufferHiz attachment.
+	2.5: Rework the DRI2BufferSwapComplete event encoding snafu by
+	     adding a new DRI2BufferSwapComplete2 event that exposes
+	     the new structure. This ensures ABI/API compatibility
+	     with older X server and library versions.
+	     
+	2.6: Added the DRI2BufferHiz attachment.
 
 	2.7: Added the DRI2GetParam request.
 
+	2.8: Add "prime" support. This allows buffers to be labeled
+	     with the offload device id.
+
 Compatibility up to 2.0 is not preserved, but was also never released.
 
 
@@ -688,6 +762,22 @@ A.2 Protocol Requests
 └───
 
 ┌───
+    DRI2CreateDrawable
+	1	CARD8			major opcode
+	1	2			DRI2 opcode
+	2	2			length
+	4	DRAWABLE		drawable
+└───
+
+┌───
+    DRI2DestroyDrawable
+	1	CARD8			major opcode
+	1	2			DRI2 opcode
+	2	2			length
+	4	DRAWABLE		drawable
+└───
+
+┌───
     DRI2GetBuffers
 	1	CARD8			major opcode
 	1	5			DRI2 opcode
-- 
1.7.10.4



More information about the xorg-devel mailing list