mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2024-12-14 20:55:01 +08:00
b5045e2991
After talking to Jon Leech he suggested this should be fine. update spec to the version in the registry. Signed-off-by: Dave Airlie <airlied@redhat.com>
148 lines
4.1 KiB
Plaintext
148 lines
4.1 KiB
Plaintext
Name
|
|
|
|
MESA_image_dma_buf_export
|
|
|
|
Name Strings
|
|
|
|
EGL_MESA_image_dma_buf_export
|
|
|
|
Contributors
|
|
|
|
Dave Airlie
|
|
|
|
Contact
|
|
|
|
Dave Airlie (airlied 'at' redhat 'dot' com)
|
|
|
|
Status
|
|
|
|
Complete, shipping.
|
|
|
|
Version
|
|
|
|
Version 3, May 5, 2015
|
|
|
|
Number
|
|
|
|
EGL Extension #87
|
|
|
|
Dependencies
|
|
|
|
Requires EGL 1.4 or later. This extension is written against the
|
|
wording of the EGL 1.4 specification.
|
|
|
|
EGL_KHR_base_image is required.
|
|
|
|
The EGL implementation must be running on a Linux kernel supporting the
|
|
dma_buf buffer sharing mechanism.
|
|
|
|
Overview
|
|
|
|
This extension provides entry points for integrating EGLImage with the
|
|
dma-buf infrastructure. The extension allows creating a Linux dma_buf
|
|
file descriptor or multiple file descriptors, in the case of multi-plane
|
|
YUV image, from an EGLImage.
|
|
|
|
It is designed to provide the complementary functionality to
|
|
EGL_EXT_image_dma_buf_import.
|
|
|
|
IP Status
|
|
|
|
Open-source; freely implementable.
|
|
|
|
New Types
|
|
|
|
This extension uses the 64-bit unsigned integer type EGLuint64KHR
|
|
first introduced by the EGL_KHR_stream extension, but does not
|
|
depend on that extension. The typedef may be reproduced separately
|
|
for this extension, if not already present in eglext.h.
|
|
|
|
typedef khronos_uint64_t EGLuint64KHR;
|
|
|
|
New Procedures and Functions
|
|
|
|
EGLBoolean eglExportDMABUFImageQueryMESA(EGLDisplay dpy,
|
|
EGLImageKHR image,
|
|
int *fourcc,
|
|
int *num_planes,
|
|
EGLuint64KHR *modifiers);
|
|
|
|
EGLBoolean eglExportDMABUFImageMESA(EGLDisplay dpy,
|
|
EGLImageKHR image,
|
|
int *fds,
|
|
EGLint *strides,
|
|
EGLint *offsets);
|
|
|
|
New Tokens
|
|
|
|
None
|
|
|
|
|
|
Additions to the EGL 1.4 Specification:
|
|
|
|
To mirror the import extension, this extension attempts to return
|
|
enough information to enable an exported dma-buf to be imported
|
|
via eglCreateImageKHR and EGL_LINUX_DMA_BUF_EXT token.
|
|
|
|
Retrieving the information is a two step process, so two APIs
|
|
are required.
|
|
|
|
The first entrypoint
|
|
EGLBoolean eglExportDMABUFImageQueryMESA(EGLDisplay dpy,
|
|
EGLImageKHR image,
|
|
int *fourcc,
|
|
int *num_planes,
|
|
EGLuint64KHR *modifiers);
|
|
|
|
is used to retrieve the pixel format of the buffer, as specified by
|
|
drm_fourcc.h, the number of planes in the image and the Linux
|
|
drm modifiers. <fourcc>, <num_planes> and <modifiers> may be NULL,
|
|
in which case no value is retrieved.
|
|
|
|
The second entrypoint retrieves the dma_buf file descriptors,
|
|
strides and offsets for the image. The caller should pass
|
|
arrays sized according to the num_planes values retrieved previously.
|
|
Passing arrays of the wrong size will have undefined results.
|
|
If the number of fds is less than the number of planes, then
|
|
subsequent fd slots should contain -1.
|
|
|
|
EGLBoolean eglExportDMABUFImageMESA(EGLDisplay dpy,
|
|
EGLImageKHR image,
|
|
int *fds,
|
|
EGLint *strides,
|
|
EGLint *offsets);
|
|
|
|
<fds>, <strides>, <offsets> can be NULL if the infomatation isn't
|
|
required by the caller.
|
|
|
|
Issues
|
|
|
|
1. Should the API look more like an attribute getting API?
|
|
|
|
ANSWER: No, from a user interface pov, having to iterate across calling
|
|
the API up to 12 times using attribs seems like the wrong solution.
|
|
|
|
2. Should the API take a plane and just get the fd/stride/offset for that
|
|
plane?
|
|
|
|
ANSWER: UNKNOWN,this might be just as valid an API.
|
|
|
|
3. Does ownership of the file descriptor remain with the app?
|
|
|
|
ANSWER: Yes, the app is responsible for closing any fds retrieved.
|
|
|
|
4. If number of planes and number of fds differ what should we do?
|
|
|
|
ANSWER: Return -1 for the secondary slots, as this avoids having
|
|
to dup the fd extra times to make the interface sane.
|
|
|
|
Revision History
|
|
|
|
Version 3, May, 2015
|
|
Just use the KHR 64-bit type.
|
|
Version 2, March, 2015
|
|
Add a query interface (Dave Airlie)
|
|
Version 1, June 3, 2014
|
|
Initial draft (Dave Airlie)
|
|
|