• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1Name
2
3    EXT_image_implicit_sync_control
4
5Name Strings
6
7    EGL_EXT_image_implicit_sync_control
8
9Contributors
10
11    Daniel Stone, Collabora Ltd.
12
13Contacts
14
15    Daniel Stone (daniels 'at' collabora 'dot' com)
16
17Status
18
19    Complete
20
21Version
22
23    Version 2, March 16, 2020
24
25Number
26
27    EGL Extension #120
28
29Dependencies
30
31    EGL 1.2 is required.
32
33    EGL_KHR_image_base and EGL_EXT_image_dma_buf_import are required.
34
35    The EGL implementation must be running on a Linux kernel supporting implicit
36    synchronization, as the usage is defined in the
37    EGL_ARM_implicit_external_sync extension, but does not require that extension.
38
39    This extension is written against the wording of the EGL 1.2 Specification.
40
41Overview
42
43    This extension allows a client to selectively use implicit or explicit
44    synchronization mechanisms when addressing externally-imported EGLImages.
45    A new token is added to EGLImage creation which allows the client to select
46    whether a platform's implicit synchronization will be in use for a buffer
47    imported into EGLImage.
48
49    Heterogeneous systems (supporting multiple APIs, mixed legacy/updated
50    clients, etc) already supporting implicit synchronization, may not be able
51    to change to explict synchronization in a single switch. This extension
52    allows synchronization to be controlled on a per-buffer basis, so explicit
53    synchronization can be enabled for a complete pipeline which supports it,
54    or implicit synchronization used otherwise.
55
56New Types
57
58    None
59
60New Procedures and Functions
61
62    None
63
64New Tokens
65
66    Accepted as an attribute in the <attrib_list> parameter of
67    eglCreateImageKHR:
68
69        EGL_IMPORT_SYNC_TYPE_EXT           0x3470
70
71    Accepted as the value for the EGL_IMPORT_SYNC_TYPE_EXT attribute:
72
73        EGL_IMPORT_IMPLICIT_SYNC_EXT       0x3471
74        EGL_IMPORT_EXPLICIT_SYNC_EXT       0x3472
75
76New Types
77
78    None.
79
80Additions to Chapter 2 of the EGL 1.2 Specification (EGL Operation)
81
82    Add to section 2.5.1 "EGLImage Specification" (as defined by the
83    EGL_KHR_image_base specification), in the description of
84    eglCreateImageKHR:
85
86    Add the following to Table bbb (Legal attributes for eglCreateImageKHR
87    <attr_list> parameter), Section 2.5.1 (EGLImage Specification)
88
89      +-----------------------------+-------------------------+---------------------------+---------------+
90      | Attribute                   | Description             | Valid <target>s           | Default Value |
91      +-----------------------------+-------------------------+---------------------------+---------------+
92      | EGL_IMPORT_SYNC_TYPE_EXT    | The type of             | EGL_LINUX_DMA_BUF_EXT     | EGL_IMPORT_   |
93      |                             | synchronization to      |                           | IMPLICT_SYNC_ |
94      |                             | apply to previously     |                           | EXT           |
95      |                             | submitted rendering on  |                           |               |
96      |                             | the platform buffer     |                           |               |
97      +-----------------------------+-------------------------+---------------------------+---------------+
98      Table bbb. Legal attributes for eglCreateImageKHR <attrib_list> parameter
99
100    ...
101
102
103    Add to section 2.5.1 "EGLImage Specification" (as defined by the
104    EGL_KHR_image_base specification), in the description of
105    eglCreateImageKHR:
106
107    The behaviour of the imported buffer with regard to commands previously
108    submitted (including via other APIs and from other clients) is controlled
109    by the EGL_IMPORT_SYNC_TYPE_EXT attribute. If the default value of
110    implicit synchronization is used, the platform may synchronize any access
111    to the imported buffer, against accesses previously made (including by
112    other clients or APIs) to that same buffer. If explicit synchronization
113    is specified, the platform will not synchronize access to that buffer
114    against other accesses; the client must use another synchronization
115    mechanism if it wishes to order its accesses with respect to others.
116
117    Add to the list of error conditions for eglCreateImageKHR:
118
119       * If <attrib_list> contains the EGL_IMPORT_SYNC_TYPE_EXT name, but the
120         value is not one of EGL_IMPORT_IMPLICIT_SYNC_EXT or
121         EGL_IMPORT_EXPLICIT_SYNC_EXT, EGL_BAD_ATTRIBUTE is generated.
122
123
124Revision History
125
126#1 (Daniel Stone, May 15, 2017)
127   - Initial revision.
128
129#2 (Eric Engestrom, March 16, 2020)
130   - Change "bad attribute value" error from EGL_BAD_PARAMETER to
131     EGL_BAD_ATTRIBUTE to follow the EGL convention.
132