blob: c362b3d95a7ff2535a4c1b563922029b55d50068 [file] [log] [blame]
Name
EXT_image_implicit_sync_control
Name Strings
EGL_EXT_image_implicit_sync_control
Contributors
Daniel Stone, Collabora Ltd.
Contacts
Daniel Stone (daniels 'at' collabora 'dot' com)
Status
Complete
Version
Version 1, May 15, 2017
Number
EGL Extension #120
Dependencies
EGL 1.2 is required.
EGL_KHR_image_base and EGL_EXT_image_dma_buf_import are required.
The EGL implementation must be running on a Linux kernel supporting implicit
synchronization, as the usage is defined in the
EGL_ARM_implicit_external_sync extension, but does not require that extension.
This extension is written against the wording of the EGL 1.2 Specification.
Overview
This extension allows a client to selectively use implicit or explicit
synchronization mechanisms when addressing externally-imported EGLImages.
A new token is added to EGLImage creation which allows the client to select
whether a platform's implicit synchronization will be in use for a buffer
imported into EGLImage.
Heterogeneous systems (supporting multiple APIs, mixed legacy/updated
clients, etc) already supporting implicit synchronization, may not be able
to change to explict synchronization in a single switch. This extension
allows synchronization to be controlled on a per-buffer basis, so explicit
synchronization can be enabled for a complete pipeline which supports it,
or implicit synchronization used otherwise.
New Types
None
New Procedures and Functions
None
New Tokens
Accepted as an attribute in the <attrib_list> parameter of
eglCreateImageKHR:
EGL_IMPORT_SYNC_TYPE_EXT 0x3470
Accepted as the value for the EGL_IMPORT_SYNC_TYPE_EXT attribute:
EGL_IMPORT_IMPLICIT_SYNC_EXT 0x3471
EGL_IMPORT_EXPLICIT_SYNC_EXT 0x3472
New Types
None.
Additions to Chapter 2 of the EGL 1.2 Specification (EGL Operation)
Add to section 2.5.1 "EGLImage Specification" (as defined by the
EGL_KHR_image_base specification), in the description of
eglCreateImageKHR:
Add the following to Table bbb (Legal attributes for eglCreateImageKHR
<attr_list> parameter), Section 2.5.1 (EGLImage Specification)
+-----------------------------+-------------------------+---------------------------+---------------+
| Attribute | Description | Valid <target>s | Default Value |
+-----------------------------+-------------------------+---------------------------+---------------+
| EGL_IMPORT_SYNC_TYPE_EXT | The type of | EGL_LINUX_DMA_BUF_EXT | EGL_IMPORT_ |
| | synchronization to | | IMPLICT_SYNC_ |
| | apply to previously | | EXT |
| | submitted rendering on | | |
| | the platform buffer | | |
+-----------------------------+-------------------------+---------------------------+---------------+
Table bbb. Legal attributes for eglCreateImageKHR <attrib_list> parameter
...
Add to section 2.5.1 "EGLImage Specification" (as defined by the
EGL_KHR_image_base specification), in the description of
eglCreateImageKHR:
The behaviour of the imported buffer with regard to commands previously
submitted (including via other APIs and from other clients) is controlled
by the EGL_IMPORT_SYNC_TYPE_EXT attribute. If the default value of
implicit synchronization is used, the platform may synchronize any access
to the imported buffer, against accesses previously made (including by
other clients or APIs) to that same buffer. If explicit synchronization
is specified, the platform will not synchronize access to that buffer
against other accesses; the client must use another synchronization
mechanism if it wishes to order its accesses with respect to others.
Add to the list of error conditions for eglCreateImageKHR:
* If <attrib_list> contains the EGL_IMPORT_SYNC_TYPE_EXT name, but the
value is not one of EGL_IMPORT_IMPLICIT_SYNC_EXT or
EGL_IMPORT_EXPLICIT_SYNC_EXT, EGL_BAD_PARAMETER is generated.
Revision History
#1 (Daniel Stone, May 15, 2017)
- Initial revision.