Imported Upstream version 1.0 35/26535/1
authorSooChan Lim <sc1.lim@samsung.com>
Tue, 26 Aug 2014 05:10:27 +0000 (14:10 +0900)
committerSooChan Lim <sc1.lim@samsung.com>
Tue, 26 Aug 2014 05:10:54 +0000 (14:10 +0900)
Change-Id: I7db0e52c4eb6fca1ac45406d5f9bfe26802b7efe

.gitignore [new file with mode: 0644]
Makefile.am [new file with mode: 0644]
autogen.sh [new file with mode: 0755]
configure.ac [new file with mode: 0644]
dri3proto.h [new file with mode: 0644]
dri3proto.pc.in [new file with mode: 0644]
dri3proto.txt [new file with mode: 0644]

diff --git a/.gitignore b/.gitignore
new file mode 100644 (file)
index 0000000..b0e3523
--- /dev/null
@@ -0,0 +1,12 @@
+Makefile
+Makefile.in
+aclocal.m4
+autom4te.cache/
+config.guess
+config.log
+config.status
+config.sub
+configure
+dri3proto.pc
+install-sh
+missing
diff --git a/Makefile.am b/Makefile.am
new file mode 100644 (file)
index 0000000..7a85bf1
--- /dev/null
@@ -0,0 +1,19 @@
+dri3dir = $(includedir)/X11/extensions
+dri3_HEADERS = dri3proto.h
+
+pkgconfigdir = $(libdir)/pkgconfig
+pkgconfig_DATA = dri3proto.pc
+
+dist_doc_DATA = dri3proto.txt
+
+MAINTAINERCLEANFILES = ChangeLog INSTALL
+
+.PHONY: ChangeLog INSTALL
+
+INSTALL:
+       $(INSTALL_CMD)
+
+ChangeLog:
+       $(CHANGELOG_CMD)
+
+dist-hook: ChangeLog INSTALL
diff --git a/autogen.sh b/autogen.sh
new file mode 100755 (executable)
index 0000000..904cd67
--- /dev/null
@@ -0,0 +1,12 @@
+#! /bin/sh
+
+srcdir=`dirname $0`
+test -z "$srcdir" && srcdir=.
+
+ORIGDIR=`pwd`
+cd $srcdir
+
+autoreconf -v --install || exit 1
+cd $ORIGDIR || exit $?
+
+$srcdir/configure --enable-maintainer-mode "$@"
diff --git a/configure.ac b/configure.ac
new file mode 100644 (file)
index 0000000..1671e6c
--- /dev/null
@@ -0,0 +1,13 @@
+AC_PREREQ([2.60])
+AC_INIT([DRI3Proto], [1.0], [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg])
+AM_INIT_AUTOMAKE([foreign dist-bzip2])
+AM_MAINTAINER_MODE
+
+# Require xorg-macros: XORG_DEFAULT_OPTIONS
+m4_ifndef([XORG_MACROS_VERSION],
+          [m4_fatal([must install xorg-macros 1.3 or later before running autoconf/autogen])])
+XORG_MACROS_VERSION(1.3)
+XORG_DEFAULT_OPTIONS
+
+AC_OUTPUT([Makefile
+           dri3proto.pc])
diff --git a/dri3proto.h b/dri3proto.h
new file mode 100644 (file)
index 0000000..ceddee8
--- /dev/null
@@ -0,0 +1,167 @@
+/*
+ * Copyright © 2013 Keith Packard
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that copyright
+ * notice and this permission notice appear in supporting documentation, and
+ * that the name of the copyright holders not be used in advertising or
+ * publicity pertaining to distribution of the software without specific,
+ * written prior permission.  The copyright holders make no representations
+ * about the suitability of this software for any purpose.  It is provided "as
+ * is" without express or implied warranty.
+ *
+ * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+ * EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+ * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
+ * OF THIS SOFTWARE.
+ */
+
+#ifndef _DRI3_PROTO_H_
+#define _DRI3_PROTO_H_
+
+#define DRI3_NAME                      "DRI3"
+#define DRI3_MAJOR                     1
+#define DRI3_MINOR                     0
+
+#define DRI3NumberErrors               0
+#define DRI3NumberEvents               0
+
+#define X_DRI3QueryVersion             0
+#define X_DRI3Open                     1
+#define X_DRI3PixmapFromBuffer          2
+#define X_DRI3BufferFromPixmap          3
+#define X_DRI3FenceFromFD               4
+#define X_DRI3FDFromFence               5
+
+#define DRI3NumberRequests             6
+
+typedef struct {
+    CARD8   reqType;
+    CARD8   dri3ReqType;
+    CARD16  length B16;
+    CARD32  majorVersion B32;
+    CARD32  minorVersion B32;
+} xDRI3QueryVersionReq;
+#define sz_xDRI3QueryVersionReq   12
+
+typedef struct {
+    BYTE    type;   /* X_Reply */
+    BYTE    pad1;
+    CARD16  sequenceNumber B16;
+    CARD32  length B32;
+    CARD32  majorVersion B32;
+    CARD32  minorVersion B32;
+    CARD32  pad2 B32;
+    CARD32  pad3 B32;
+    CARD32  pad4 B32;
+    CARD32  pad5 B32;
+} xDRI3QueryVersionReply;
+#define sz_xDRI3QueryVersionReply      32
+
+typedef struct {
+    CARD8   reqType;
+    CARD8   dri3ReqType;
+    CARD16  length B16;
+    CARD32  drawable B32;
+    CARD32  provider B32;
+} xDRI3OpenReq;
+#define sz_xDRI3OpenReq        12
+
+typedef struct {
+    BYTE    type;   /* X_Reply */
+    CARD8   nfd;
+    CARD16  sequenceNumber B16;
+    CARD32  length B32;
+    CARD32  pad2 B32;
+    CARD32  pad3 B32;
+    CARD32  pad4 B32;
+    CARD32  pad5 B32;
+    CARD32  pad6 B32;
+    CARD32  pad7 B32;
+} xDRI3OpenReply;
+#define sz_xDRI3OpenReply      32
+
+typedef struct {
+    CARD8   reqType;
+    CARD8   dri3ReqType;
+    CARD16  length B16;
+    CARD32  pixmap B32;
+    CARD32  drawable B32;
+    CARD32  size B32;
+    CARD16  width B16;
+    CARD16  height B16;
+    CARD16  stride B16;
+    CARD8   depth;
+    CARD8   bpp;
+} xDRI3PixmapFromBufferReq;
+
+#define sz_xDRI3PixmapFromBufferReq     24
+
+typedef struct {
+    CARD8   reqType;
+    CARD8   dri3ReqType;
+    CARD16  length B16;
+    CARD32  pixmap B32;
+} xDRI3BufferFromPixmapReq;
+#define sz_xDRI3BufferFromPixmapReq     8
+
+typedef struct {
+    BYTE    type;   /* X_Reply */
+    CARD8   nfd;    /* Number of file descriptors returned (1) */
+    CARD16  sequenceNumber B16;
+    CARD32  length B32;
+    CARD32  size B32;
+    CARD16  width B16;
+    CARD16  height B16;
+    CARD16  stride B16;
+    CARD8   depth;
+    CARD8   bpp;
+    CARD32  pad20 B32;
+    CARD32  pad24 B32;
+    CARD32  pad28 B32;
+} xDRI3BufferFromPixmapReply;
+#define sz_xDRI3BufferFromPixmapReply   32
+
+typedef struct {
+    CARD8   reqType;
+    CARD8   dri3ReqType;
+    CARD16  length B16;
+    CARD32  drawable B32;
+    CARD32  fence B32;
+    BOOL    initially_triggered;
+    CARD8   pad13;
+    CARD16  pad14 B16;
+} xDRI3FenceFromFDReq;
+
+#define sz_xDRI3FenceFromFDReq  16
+
+typedef struct {
+    CARD8   reqType;
+    CARD8   dri3ReqType;
+    CARD16  length B16;
+    CARD32  drawable B32;
+    CARD32  fence B32;
+} xDRI3FDFromFenceReq;
+
+#define sz_xDRI3FDFromFenceReq  12
+
+typedef struct {
+    BYTE    type;   /* X_Reply */
+    CARD8   nfd;    /* Number of file descriptors returned (1) */
+    CARD16  sequenceNumber B16;
+    CARD32  length B32;
+    CARD32  pad08 B32;
+    CARD32  pad12 B32;
+    CARD32  pad16 B32;
+    CARD32  pad20 B32;
+    CARD32  pad24 B32;
+    CARD32  pad28 B32;
+} xDRI3FDFromFenceReply;
+
+#define sz_xDRI3FDFromFenceReply   32
+
+#endif
diff --git a/dri3proto.pc.in b/dri3proto.pc.in
new file mode 100644 (file)
index 0000000..be8c7c6
--- /dev/null
@@ -0,0 +1,9 @@
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+Name: DRI3Proto
+Description: DRI3 extension headers
+Version: @PACKAGE_VERSION@
+Cflags: -I${includedir}
diff --git a/dri3proto.txt b/dri3proto.txt
new file mode 100644 (file)
index 0000000..3f516f7
--- /dev/null
@@ -0,0 +1,382 @@
+                         The DRI3 Extension
+                            Version 1.0
+                              2013-6-4
+      
+                           Keith Packard
+                         keithp@keithp.com
+                         Intel Corporation
+
+1. Introduction
+
+The DRI3 extension provides mechanisms to translate between direct
+rendered buffers and X pixmaps. When combined with the Present extension,
+a complete direct rendering solution for OpenGL is provided.
+
+The direct rendered buffers are passed across the protocol via
+standard POSIX file descriptor passing mechanisms. On Linux, these
+buffers are DMA-BUF objects.
+
+DRI3 also includes a mechanism to translate between Linux Futexes
+and X Sync extension Fences. This provides a synchronization mechanism
+which can be used to serialize access to shared render buffers.
+
+1.1. Acknowledgments
+
+Eric Anholt <eric@anholt.net>
+Dave Airlie <airlied@redhat.com>
+Kristian Høgsberg <krh@bitplanet.net>
+James Jones <janomes@nvidia.com>
+Arthur Huillet <arthur.huillet@free.fr>
+
+                            ❄ ❄ ❄  ❄  ❄ ❄ ❄ 
+
+2. Data Types
+
+The DRI3 extension uses the RandR extension Provider data type to
+select among multiple GPUs on a single screen and the Sync extension
+fence object to provide graphics object synchronization.
+
+                            ❄ ❄ ❄  ❄  ❄ ❄ ❄ 
+
+4. Errors
+
+DRI3 defines no errors.
+
+                            ❄ ❄ ❄  ❄  ❄ ❄ ❄ 
+
+5. Events
+
+DRI3 defines no events.
+
+                            ❄ ❄ ❄  ❄  ❄ ❄ ❄ 
+
+6. Protocol Types
+
+DRI3 defines no new protocol types.
+
+                            ❄ ❄ ❄  ❄  ❄ ❄ ❄ 
+
+7. Extension Initialization
+
+The name of this extension is "DRI3"
+
+┌───
+    DRI3QueryVersion
+       client-major-version:   CARD32
+       client-minor-version:   CARD32
+      ▶
+       major-version:          CARD32
+       minor-version:          CARD32
+└───
+
+       The client sends the highest supported version to the server
+       and the server sends the highest version it supports, but no
+       higher than the requested version. Major versions changes can
+       introduce incompatibilities in existing functionality, minor
+       version changes introduce only backward compatible changes.
+       It is the clients responsibility to ensure that the server
+       supports a version which is compatible with its expectations.
+
+       Backwards compatible changes included addition of new
+       requests.
+
+
+                            ❄ ❄ ❄  ❄  ❄ ❄ ❄ 
+
+8. Extension Requests
+
+┌───
+    DRI3Open
+       drawable: DRAWABLE
+       provider: PROVIDER
+      ▶
+       nfd: CARD8
+       device: FD
+└───
+       Errors: Drawable, Value, Match
+
+       This requests that the X server open the direct rendering
+       device associated with drawable and RandR provider. The
+       provider must support SourceOutput or SourceOffload.
+
+       The file descriptor for the device is returned in
+       'device'. 'nfd' will be set to one (this is strictly a
+       convenience for XCB which otherwise would need
+       request-specific information about how many file descriptors
+       were associated with this reply).
+
+┌───
+    DRI3PixmapFromBuffer
+       pixmap: PIXMAP
+       drawable: DRAWABLE
+       size: CARD32
+       width, height, stride: CARD16
+       depth, bpp: CARD8
+       buffer: FD
+└───
+       Errors: Alloc, Drawable, IDChoice, Value, Match
+
+       Creates a pixmap for the direct rendering object associated
+       with 'buffer'. Changes to pixmap will be visible in that
+       direct rendered object and changes to the direct rendered
+       object will be visible in the pixmap.
+
+       'size' specifies the total size of the buffer bytes. 'width',
+       'height' describe the geometry (in pixels) of the underlying
+       buffer. 'stride' specifies the number of bytes per scanline in
+       the buffer. The pixels within the buffer are not required to
+       be arranged in a simple linear fashion, but 'size' will be at
+       least 'height' * 'stride'.
+
+       Precisely how any additional information about the buffer is
+       shared is outside the scope of this extension.
+
+       If buffer cannot be used with the screen associated with
+       drawable, a Match error is returned.
+
+       If depth or bpp are not supported by the screen, a Value error
+       is returned.
+
+┌───
+    DRI3BufferFromPixmap
+       pixmap: PIXMAP
+      ▶
+       nfd: CARD8
+       size: CARD32
+       width, height, stride: CARD16
+       depth, bpp: CARD8
+       buffer: FD
+└───
+       Errors: Pixmap, Match
+
+       Pass back a direct rendering object associated with
+       pixmap. Changes to pixmap will be visible in that
+       direct rendered object and changes to the direct rendered
+       object will be visible in the pixmap.
+
+       'size' specifies the total size of the buffer bytes. 'width',
+       'height' describe the geometry (in pixels) of the underlying
+       buffer. 'stride' specifies the number of bytes per scanline in
+       the buffer. The pixels within the buffer are not required to
+       be arranged in a simple linear fashion, but 'size' will be at
+       least 'height' * 'stride'.
+
+       Precisely how any additional information about the buffer is
+       shared is outside the scope of this extension.
+
+       If buffer cannot be used with the screen associated with
+       drawable, a Match error is returned.
+
+┌───
+    DRI3FenceFromFD
+       drawable: DRAWABLE
+       fence: FENCE
+       initially-triggered: BOOL
+       fd: FD
+└───
+       Errors: IDchoice, Drawable
+
+       Creates a Sync extension Fence that provides the regular Sync
+       extension semantics along with a file descriptor that provides
+       a device-specific mechanism to manipulate the fence directly.
+       Details about the mechanism used with this file descriptor are
+       outside the scope of the DRI3 extension.
+
+┌───
+    DRI3FDFromFence
+       drawable: DRAWABLE
+       fence: FENCE
+      ▶
+       fd: FD
+└───
+       Errors: IDchoice, Drawable, Match
+
+       Given a Sync extension Fence that provides the regular Sync
+       extension semantics, returns a file descriptor that provides a
+       device-specific mechanism to manipulate the fence directly.
+       Details about the mechanism used with this file descriptor are
+       outside the scope of the DRI3 extension. 'drawable' must be
+       associated with a direct rendering device that 'fence' can
+       work with, otherwise a Match error results.
+
+
+                            ❄ ❄ ❄  ❄  ❄ ❄ ❄ 
+
+9. Extension Events
+
+DRI3 defines no events.
+
+                            ❄ ❄ ❄  ❄  ❄ ❄ ❄
+
+10. Extension Versioning
+
+The DRI3 extension is adapted from the DRI2 extension.
+
+       1.0: First published version
+
+                            ❄ ❄ ❄  ❄  ❄ ❄ ❄
+
+
+11. Relationship with other extensions
+
+As an extension designed to support other extensions, there is
+naturally some interactions with other extensions.
+
+11.1 GLX
+
+GLX is both an application interface and an X extension. OpenGL
+applications using the GLX API will use the GLX extension, DRI3 and
+Present when doing direct rendering.
+
+11.2 Present
+
+The Present extension provides a way to synchronize the display of pixmap
+contents to the screen. When used in conjunction with DRI3, they
+provide a complete direct rendering solution for OpenGL or other APIs.
+
+11.3 DRI2
+
+DRI3 provides similar functionality to the DRI2Connect and
+DRI2GetBuffersWithFormat requests, however DRI3 uses file descriptors
+to refer to the direct rendering device and buffers.
+
+Present and DRI3 are designed in conjunction to replace DRI2
+
+11.2 XvMC / Xv
+
+It might be nice to be able to reference YUV formatted direct rendered
+objects from the X server.
+
+                            ❄ ❄ ❄  ❄  ❄ ❄ ❄
+
+Appendix A. Protocol Encoding
+
+Syntactic Conventions
+
+This document uses the same syntactic conventions as the core X
+protocol encoding document.
+
+
+A.1 Common Types
+
+None.
+
+A.2 Protocol Requests
+
+┌───
+    DRI3QueryVersion
+       1       CARD8                   major opcode
+       1       0                       DRI3 opcode
+       2       3                       length
+       4       CARD32                  major version
+       4       CARD32                  minor version
+      ▶
+       1       1                       Reply
+        1                              unused
+       2       CARD16                  sequence number
+       4       0                       reply length
+       4       CARD32                  major version
+        4      CARD32                  minor version
+       16                              unused  
+└───
+
+
+┌───
+    DRI3Open
+       1       CARD8                   major opcode
+       1       1                       DRI3 opcode
+       2       4                       length
+       4       DRAWABLE                drawable
+       4       CARD32                  driver type
+       4       PROVIDER                provider
+      ▶      
+       1       1                       Reply
+        1      1                       nfd
+       2       CARD16                  sequence number
+       4       (n + p) / 4             reply length
+       4       n                       driver name length (n)
+       20                              unused
+       n       CARD8                   driver name
+       p                               unused, p=pad(n)
+
+       0       FD                      device
+└───
+
+┌───
+    DRI3PixmapFromBuffer
+       1       CARD8                   major opcode
+       1       2                       DRI3 opcode
+       2       6                       length
+       4       Pixmap                  pixmap
+       4       Drawable                drawable
+       4       CARD32                  size
+       2       CARD16                  width
+       2       CARD16                  height
+       2       CARD16                  stride
+       1       CARD8                   depth
+       1       CARD8                   bpp
+
+       0       FD                      buffer
+└───
+
+┌───
+    DRI3BufferFromPixmap
+       1       CARD8                   major opcode
+       1       3                       DRI3 opcode
+       2       2                       length
+       4       Pixmap                  pixmap
+      ▶      
+       1       1                       Reply
+        1      1                       nfd
+       2       CARD16                  sequence number
+       4       0                       reply length
+       4       CARD32                  size
+       2       CARD16                  width
+       2       CARD16                  height
+       2       CARD16                  stride
+       1       CARD8                   depth
+       1       CARD8                   bpp
+       12                              unused
+
+       0       FD                      buffer
+└───
+
+┌───
+    DRI3FenceFromFD
+       1       CARD8                   major opcode
+       1       4                       DRI3 opcode
+       2       4                       length
+       4       Drawable                drawable
+       4       Fence                   fence
+       1       BOOL                    initially triggered
+       3                               unused
+
+       0       FD                      fence fd
+└───
+
+┌───
+    DRI3FDFromFence
+       1       CARD8                   major opcode
+       1       5                       DRI3 opcode
+       2       3                       length
+       4       Drawable                drawable
+       4       Fence                   fence
+      ▶      
+       1       1                       Reply
+        1      1                       nfd
+       2       CARD16                  sequence number
+       4       0                       reply length
+       24                              unused
+
+       0       FD                      fence fd
+└───
+
+A.3 Protocol Events
+
+The DRI3 extension defines no events.
+
+A.4 Protocol Errors
+
+The DRI3 extension defines no errors.
+
+                            ❄ ❄ ❄  ❄  ❄ ❄ ❄