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