102f4aeb0Sopenharmony_ciName 202f4aeb0Sopenharmony_ci 302f4aeb0Sopenharmony_ci NV_stream_metadata 402f4aeb0Sopenharmony_ci 502f4aeb0Sopenharmony_ciName Strings 602f4aeb0Sopenharmony_ci 702f4aeb0Sopenharmony_ci EGL_NV_stream_metadata 802f4aeb0Sopenharmony_ci 902f4aeb0Sopenharmony_ciContributors 1002f4aeb0Sopenharmony_ci 1102f4aeb0Sopenharmony_ci Daniel Kartch 1202f4aeb0Sopenharmony_ci Gajanan Bhat 1302f4aeb0Sopenharmony_ci Laszlo Weber 1402f4aeb0Sopenharmony_ci Lawrence Ibarria 1502f4aeb0Sopenharmony_ci Miguel A. Vico 1602f4aeb0Sopenharmony_ci 1702f4aeb0Sopenharmony_ciContacts 1802f4aeb0Sopenharmony_ci 1902f4aeb0Sopenharmony_ci Daniel Kartch, NVIDIA (dkartch 'at' nvidia 'dot' com) 2002f4aeb0Sopenharmony_ci 2102f4aeb0Sopenharmony_ciStatus 2202f4aeb0Sopenharmony_ci 2302f4aeb0Sopenharmony_ci Complete 2402f4aeb0Sopenharmony_ci 2502f4aeb0Sopenharmony_ciVersion 2602f4aeb0Sopenharmony_ci 2702f4aeb0Sopenharmony_ci Version 8 - July 31, 2015 2802f4aeb0Sopenharmony_ci 2902f4aeb0Sopenharmony_ciNumber 3002f4aeb0Sopenharmony_ci 3102f4aeb0Sopenharmony_ci EGL Extension #93 3202f4aeb0Sopenharmony_ci 3302f4aeb0Sopenharmony_ci 3402f4aeb0Sopenharmony_ciExtension Type 3502f4aeb0Sopenharmony_ci 3602f4aeb0Sopenharmony_ci EGL display extension 3702f4aeb0Sopenharmony_ci 3802f4aeb0Sopenharmony_ciDependencies 3902f4aeb0Sopenharmony_ci 4002f4aeb0Sopenharmony_ci Requires EGL_KHR_stream 4102f4aeb0Sopenharmony_ci 4202f4aeb0Sopenharmony_ci Interacts with EGL_EXT_device_base 4302f4aeb0Sopenharmony_ci 4402f4aeb0Sopenharmony_ciOverview 4502f4aeb0Sopenharmony_ci 4602f4aeb0Sopenharmony_ci Application suites which make use of streams to transmit images may 4702f4aeb0Sopenharmony_ci need to communicate additional data between the producer and 4802f4aeb0Sopenharmony_ci consumer, synchronized with the frame updates. This data may change 4902f4aeb0Sopenharmony_ci infrequently, such as a movie title and track number to be displayed 5002f4aeb0Sopenharmony_ci to the user, or every frame, such as a focal length and exposure 5102f4aeb0Sopenharmony_ci time used to process the image. Transmitting this data outside the 5202f4aeb0Sopenharmony_ci scope of the stream may be inconvenient, particularly in the case of 5302f4aeb0Sopenharmony_ci cross-process streams. But the nature of the data is highly 5402f4aeb0Sopenharmony_ci application-dependent, so it is not feasible for an EGL 5502f4aeb0Sopenharmony_ci implementation to define specific extensions for a broad range of 5602f4aeb0Sopenharmony_ci application data. 5702f4aeb0Sopenharmony_ci 5802f4aeb0Sopenharmony_ci This extension provides a means for an application (or application 5902f4aeb0Sopenharmony_ci suite in the cross-process case) to associate arbitrary metadata 6002f4aeb0Sopenharmony_ci with a stream. Multiple metadata fields are available, allowing them 6102f4aeb0Sopenharmony_ci to be updated and used independently by separate subcomponents of 6202f4aeb0Sopenharmony_ci producers and consumers, respectively. The format of the data is 6302f4aeb0Sopenharmony_ci determined by the application, which is responsible for writing and 6402f4aeb0Sopenharmony_ci reading it correctly. 6502f4aeb0Sopenharmony_ci 6602f4aeb0Sopenharmony_ciNew Types 6702f4aeb0Sopenharmony_ci 6802f4aeb0Sopenharmony_ci None 6902f4aeb0Sopenharmony_ci 7002f4aeb0Sopenharmony_ciNew Functions 7102f4aeb0Sopenharmony_ci 7202f4aeb0Sopenharmony_ci EGLBoolean eglQueryDisplayAttribNV( 7302f4aeb0Sopenharmony_ci EGLDisplay dpy, 7402f4aeb0Sopenharmony_ci EGLint attribute, 7502f4aeb0Sopenharmony_ci EGLAttrib* value); 7602f4aeb0Sopenharmony_ci 7702f4aeb0Sopenharmony_ci EGLBoolean eglSetStreamMetadataNV( 7802f4aeb0Sopenharmony_ci EGLDisplay dpy, 7902f4aeb0Sopenharmony_ci EGLStreamKHR stream, 8002f4aeb0Sopenharmony_ci EGLint n, 8102f4aeb0Sopenharmony_ci EGLint offset, 8202f4aeb0Sopenharmony_ci EGLint size, 8302f4aeb0Sopenharmony_ci const void* data); 8402f4aeb0Sopenharmony_ci 8502f4aeb0Sopenharmony_ci EGLBoolean eglQueryStreamMetadataNV( 8602f4aeb0Sopenharmony_ci EGLDisplay dpy, 8702f4aeb0Sopenharmony_ci EGLStreamKHR stream, 8802f4aeb0Sopenharmony_ci EGLenum name, 8902f4aeb0Sopenharmony_ci EGLint n, 9002f4aeb0Sopenharmony_ci EGLint offset, 9102f4aeb0Sopenharmony_ci EGLint size, 9202f4aeb0Sopenharmony_ci void* data); 9302f4aeb0Sopenharmony_ci 9402f4aeb0Sopenharmony_ciNew Tokens 9502f4aeb0Sopenharmony_ci 9602f4aeb0Sopenharmony_ci Accepted as <attribute> by eglQueryDisplayAttribNV: 9702f4aeb0Sopenharmony_ci 9802f4aeb0Sopenharmony_ci EGL_MAX_STREAM_METADATA_BLOCKS_NV 0x3250 9902f4aeb0Sopenharmony_ci EGL_MAX_STREAM_METADATA_BLOCK_SIZE_NV 0x3251 10002f4aeb0Sopenharmony_ci EGL_MAX_STREAM_METADATA_TOTAL_SIZE_NV 0x3252 10102f4aeb0Sopenharmony_ci 10202f4aeb0Sopenharmony_ci Accepted as <name> by eglQueryStreamMetatdataNV: 10302f4aeb0Sopenharmony_ci 10402f4aeb0Sopenharmony_ci EGL_PRODUCER_METADATA_NV 0x3253 10502f4aeb0Sopenharmony_ci EGL_CONSUMER_METADATA_NV 0x3254 10602f4aeb0Sopenharmony_ci EGL_PENDING_METADATA_NV 0x3328 10702f4aeb0Sopenharmony_ci 10802f4aeb0Sopenharmony_ci Accepted in <attrib_list> by eglCreateStreamKHR and as <attribute> 10902f4aeb0Sopenharmony_ci by eglQueryStreamKHR: 11002f4aeb0Sopenharmony_ci 11102f4aeb0Sopenharmony_ci EGL_METADATA0_SIZE_NV 0x3255 11202f4aeb0Sopenharmony_ci EGL_METADATA1_SIZE_NV 0x3256 11302f4aeb0Sopenharmony_ci EGL_METADATA2_SIZE_NV 0x3257 11402f4aeb0Sopenharmony_ci EGL_METADATA3_SIZE_NV 0x3258 11502f4aeb0Sopenharmony_ci 11602f4aeb0Sopenharmony_ci EGL_METADATA0_TYPE_NV 0x3259 11702f4aeb0Sopenharmony_ci EGL_METADATA1_TYPE_NV 0x325A 11802f4aeb0Sopenharmony_ci EGL_METADATA2_TYPE_NV 0x325B 11902f4aeb0Sopenharmony_ci EGL_METADATA3_TYPE_NV 0x325C 12002f4aeb0Sopenharmony_ci 12102f4aeb0Sopenharmony_ci 12202f4aeb0Sopenharmony_ciAdd to section "3.3 EGL Queries" 12302f4aeb0Sopenharmony_ci 12402f4aeb0Sopenharmony_ci To query attributes of an initialized display, call 12502f4aeb0Sopenharmony_ci 12602f4aeb0Sopenharmony_ci EGLBoolean eglQueryDisplayAttribNV( 12702f4aeb0Sopenharmony_ci EGLDisplay dpy, 12802f4aeb0Sopenharmony_ci EGLint attribute, 12902f4aeb0Sopenharmony_ci EGLAttrib* value) 13002f4aeb0Sopenharmony_ci 13102f4aeb0Sopenharmony_ci On success, EGL_TRUE is returned, and the value associated with 13202f4aeb0Sopenharmony_ci attribute <name> is returned in <value>. 13302f4aeb0Sopenharmony_ci 13402f4aeb0Sopenharmony_ci If <name> is EGL_MAX_STREAM_METADATA_BLOCKS_NV, the total number 13502f4aeb0Sopenharmony_ci of independent metadata blocks supported by each stream is returned. 13602f4aeb0Sopenharmony_ci If <name> is EGL_MAX_STREAM_METADATA_BLOCK_SIZE_NV, the maximum size 13702f4aeb0Sopenharmony_ci supported for an individual metadata block is returned. If <name> is 13802f4aeb0Sopenharmony_ci EGL_MAX_STREAM_METADATA_TOTAL_SIZE_NV, the maximum combined size of 13902f4aeb0Sopenharmony_ci all metadata blocks supported by a single stream is returned. 14002f4aeb0Sopenharmony_ci 14102f4aeb0Sopenharmony_ci On failure, EGL_FALSE is returned. An EGL_BAD_DISPLAY error is 14202f4aeb0Sopenharmony_ci generated if <dpy> is not a valid initialized display. An 14302f4aeb0Sopenharmony_ci EGL_BAD_ATTRIBUTE error is generated if <name> is not a valid 14402f4aeb0Sopenharmony_ci attribute name. 14502f4aeb0Sopenharmony_ci 14602f4aeb0Sopenharmony_ciIf EGL_EXT_device_base is present, eglQueryDisplayAttribNV is equivalent 14702f4aeb0Sopenharmony_cito eglQueryDisplayAttribEXT, and calls to either will return the same 14802f4aeb0Sopenharmony_civalues. 14902f4aeb0Sopenharmony_ci 15002f4aeb0Sopenharmony_ciAdd to table "3.10.4.4 EGLStream Attributes" in EGL_KHR_stream 15102f4aeb0Sopenharmony_ci 15202f4aeb0Sopenharmony_ci Attribute Read/Write Type Section 15302f4aeb0Sopenharmony_ci ------------------------ ---------- ------ ---------- 15402f4aeb0Sopenharmony_ci EGL_METADATA<n>_SIZE_NV io EGLint 3.10.4.x 15502f4aeb0Sopenharmony_ci EGL_METADATA<n>_TYPE_NV io EGLint 3.10.4.x+1 15602f4aeb0Sopenharmony_ci 15702f4aeb0Sopenharmony_ciAdd new subsections to section "3.10.4 EGLStream Attributes" of 15802f4aeb0Sopenharmony_ciEGL_KHR_stream 15902f4aeb0Sopenharmony_ci 16002f4aeb0Sopenharmony_ci 3.10.4.x EGL_METADATA<n>_SIZE_NV 16102f4aeb0Sopenharmony_ci 16202f4aeb0Sopenharmony_ci The EGL_METADATA<n>_SIZE_NV attribute indicates the size of the 16302f4aeb0Sopenharmony_ci <n>th metadata block associated with a stream. If <n> is not less 16402f4aeb0Sopenharmony_ci than the value of EGL_MAX_STREAM_METADATA_BLOCKS_NV for the parent 16502f4aeb0Sopenharmony_ci EGLDisplay, the attribute is treated as unknown. 16602f4aeb0Sopenharmony_ci 16702f4aeb0Sopenharmony_ci These attributes may only be set when the stream is created. The 16802f4aeb0Sopenharmony_ci default value is 0. The value may not exceed that of 16902f4aeb0Sopenharmony_ci EGL_MAX_STREAM_METADATA_BLOCK_SIZE_NV for the parent EGLDisplay. 17002f4aeb0Sopenharmony_ci Furthermore, the total size of all metadata blocks may not exceed 17102f4aeb0Sopenharmony_ci the value of EGL_MAX_STREAM_METADATA_TOTAL_SIZE_NV. If either of 17202f4aeb0Sopenharmony_ci these restrictions are exceeded, an EGL_BAD_PARAMETER error is 17302f4aeb0Sopenharmony_ci generated. 17402f4aeb0Sopenharmony_ci 17502f4aeb0Sopenharmony_ci 3.10.4.x+1 EGL_METADATA<n>_TYPE_NV 17602f4aeb0Sopenharmony_ci 17702f4aeb0Sopenharmony_ci The EGL_METADATA<n>_TYPE_NV attribute indicates an optional 17802f4aeb0Sopenharmony_ci application-defined type associated with the stream's <n>th metadata 17902f4aeb0Sopenharmony_ci block. If <n> is not less than the value of 18002f4aeb0Sopenharmony_ci EGL_MAX_STREAM_METADATA_BLOCKS_NV for the parent EGLDisplay, the 18102f4aeb0Sopenharmony_ci attribute is treated as unknown. 18202f4aeb0Sopenharmony_ci 18302f4aeb0Sopenharmony_ci These attributes may only be set when the stream is created. The 18402f4aeb0Sopenharmony_ci default value is 0. It is not required that a type be provided for 18502f4aeb0Sopenharmony_ci every metadata block for which a size has been specified. These may 18602f4aeb0Sopenharmony_ci be used to help separate application components coordinate their use 18702f4aeb0Sopenharmony_ci of the stream's metadata blocks. 18802f4aeb0Sopenharmony_ci 18902f4aeb0Sopenharmony_ciAdd new section to "3.10 EGLStreams" of EGL_KHR_stream 19002f4aeb0Sopenharmony_ci 19102f4aeb0Sopenharmony_ci 3.10.y EGLStream metadata 19202f4aeb0Sopenharmony_ci 19302f4aeb0Sopenharmony_ci An application may associate arbitrary blocks of additional data 19402f4aeb0Sopenharmony_ci with the stream, to be updated in sync with the frames. The contents 19502f4aeb0Sopenharmony_ci and format of these data blocks are left to the application, subject 19602f4aeb0Sopenharmony_ci to size restrictions imposed by the implementation. The application 19702f4aeb0Sopenharmony_ci must specify the sizes of its metadata blocks at the time the stream 19802f4aeb0Sopenharmony_ci is created. The contents may be completely or partially modified 19902f4aeb0Sopenharmony_ci every frame or less frequently, as the application chooses. When a 20002f4aeb0Sopenharmony_ci new frame is inserted into the stream, a snapshot of the current 20102f4aeb0Sopenharmony_ci metadata contents are associated with the frame, and may then be 20202f4aeb0Sopenharmony_ci queried from the stream. 20302f4aeb0Sopenharmony_ci 20402f4aeb0Sopenharmony_ci The contents of all metadata blocks of non-zero size are initialized 20502f4aeb0Sopenharmony_ci to zeroes. To modify the contents of a portion of a metadata block, 20602f4aeb0Sopenharmony_ci call 20702f4aeb0Sopenharmony_ci 20802f4aeb0Sopenharmony_ci EGLBoolean eglSetStreamMetadataNV( 20902f4aeb0Sopenharmony_ci EGLDisplay dpy, 21002f4aeb0Sopenharmony_ci EGLStreamKHR stream, 21102f4aeb0Sopenharmony_ci EGLint n, 21202f4aeb0Sopenharmony_ci EGLint offset, 21302f4aeb0Sopenharmony_ci EGLint size, 21402f4aeb0Sopenharmony_ci const void* data) 21502f4aeb0Sopenharmony_ci 21602f4aeb0Sopenharmony_ci On success, EGL_TRUE is returned and the first <size> bytes pointed 21702f4aeb0Sopenharmony_ci to by <data> will be copied to the <n>th metadata block of <stream>, 21802f4aeb0Sopenharmony_ci starting at <offset> bytes from the beginning of the block. This 21902f4aeb0Sopenharmony_ci data will be associated with all subsequent frames inserted into the 22002f4aeb0Sopenharmony_ci stream until the contents are next modified. 22102f4aeb0Sopenharmony_ci 22202f4aeb0Sopenharmony_ci On failure, EGL_FALSE is returned 22302f4aeb0Sopenharmony_ci - An EGL_BAD_DISPLAY error is generated if <dpy> is not a valid 22402f4aeb0Sopenharmony_ci display. 22502f4aeb0Sopenharmony_ci - An EGL_BAD_STREAM_KHR error is generated if <stream> is not a 22602f4aeb0Sopenharmony_ci valid stream associated with <dpy>. 22702f4aeb0Sopenharmony_ci - An EGL_BAD_STATE_KHR error is generated if the state of 22802f4aeb0Sopenharmony_ci <stream> is not EGL_STREAM_STATE_NEW_FRAME_AVAILABLE_KHR, 22902f4aeb0Sopenharmony_ci EGL_STREAM_STATE_OLD_FRAME_AVAILABLE_KHR, or 23002f4aeb0Sopenharmony_ci EGL_STREAM_STATE_EMPTY_KHR. 23102f4aeb0Sopenharmony_ci - An EGL_BAD_ACCESS error is generated if the producer and 23202f4aeb0Sopenharmony_ci consumer endpoints of the stream are represented by separate 23302f4aeb0Sopenharmony_ci EGLStream objects, and the producer is not attached to 23402f4aeb0Sopenharmony_ci <stream>. 23502f4aeb0Sopenharmony_ci - An EGL_BAD_PARAMETER error is generated if <n> is negative or 23602f4aeb0Sopenharmony_ci is equal to or greather than the value of 23702f4aeb0Sopenharmony_ci EGL_MAX_STREAM_METADATA_BLOCKS_NV for <dpy>. 23802f4aeb0Sopenharmony_ci - An EGL_BAD_PARAMETER error is generated if <offset> or <size> 23902f4aeb0Sopenharmony_ci are negative, or if <offset>+<size> is greater than the value 24002f4aeb0Sopenharmony_ci of EGL_METADATA<n>_SIZE_NV for <stream>. 24102f4aeb0Sopenharmony_ci 24202f4aeb0Sopenharmony_ci If <data> does not point to valid readable memory of at least <size> 24302f4aeb0Sopenharmony_ci bytes, undefined behavior will result. If the value of <size> is 24402f4aeb0Sopenharmony_ci zero, no error will occur, but the function will have no effect. 24502f4aeb0Sopenharmony_ci 24602f4aeb0Sopenharmony_ci To query the contents of a metadata block for a frame, call 24702f4aeb0Sopenharmony_ci 24802f4aeb0Sopenharmony_ci EGLBoolean eglQueryStreamMetadataNV( 24902f4aeb0Sopenharmony_ci EGLDisplay dpy, 25002f4aeb0Sopenharmony_ci EGLStreamKHR stream, 25102f4aeb0Sopenharmony_ci EGLenum name, 25202f4aeb0Sopenharmony_ci EGLint n, 25302f4aeb0Sopenharmony_ci EGLint offset, 25402f4aeb0Sopenharmony_ci EGLint size, 25502f4aeb0Sopenharmony_ci void* data) 25602f4aeb0Sopenharmony_ci 25702f4aeb0Sopenharmony_ci On success, EGL_TRUE is returned and <size> bytes starting from the 25802f4aeb0Sopenharmony_ci <offset>th byte of the <n>th metadata block of <stream> will be 25902f4aeb0Sopenharmony_ci copied into the memory pointed to by <data>. If <name> is 26002f4aeb0Sopenharmony_ci EGL_PRODUCER_METADATA_NV, the metadata will be taken from the frame 26102f4aeb0Sopenharmony_ci most recently inserted into the stream by the producer. If <name> is 26202f4aeb0Sopenharmony_ci EGL_CONSUMER_METADATA_NV, the metadata will be taken from the frame 26302f4aeb0Sopenharmony_ci most recently acquired by the consumer. If <name> is 26402f4aeb0Sopenharmony_ci EGL_PENDING_METADATA_NV, the metadata will be taken from the frame 26502f4aeb0Sopenharmony_ci which would be obtained if an acquire operation were performed at 26602f4aeb0Sopenharmony_ci the time of the query. 26702f4aeb0Sopenharmony_ci 26802f4aeb0Sopenharmony_ci On failure, EGL_FALSE is returned 26902f4aeb0Sopenharmony_ci - An EGL_BAD_DISPLAY error is generated if <dpy> is not a valid 27002f4aeb0Sopenharmony_ci display. 27102f4aeb0Sopenharmony_ci - An EGL_BAD_STREAM_KHR error is generated if <stream> is not a 27202f4aeb0Sopenharmony_ci valid stream associated with <dpy>. 27302f4aeb0Sopenharmony_ci - An EGL_BAD_STATE_KHR error is generated if the state of 27402f4aeb0Sopenharmony_ci <stream> is not EGL_STREAM_STATE_NEW_FRAME_AVAILABLE_KHR or 27502f4aeb0Sopenharmony_ci EGL_STREAM_STATE_OLD_FRAME_AVAILABLE_KHR. 27602f4aeb0Sopenharmony_ci - An EGL_BAD_ATTRIBUTE error is generated if <name> is not 27702f4aeb0Sopenharmony_ci EGL_PRODUCER_METADATA_NV, EGL_CONSUMER_METADATA_NV, or 27802f4aeb0Sopenharmony_ci EGL_PENDING_METADATA_NV. 27902f4aeb0Sopenharmony_ci - An EGL_BAD_PARAMETER error is generated if <n> is negative or 28002f4aeb0Sopenharmony_ci is equal to or greater than the value of 28102f4aeb0Sopenharmony_ci EGL_MAX_STREAM_METADATA_BLOCKS_NV for <dpy>. 28202f4aeb0Sopenharmony_ci - An EGL_BAD_PARAMETER error is generated if <offset> or <size> 28302f4aeb0Sopenharmony_ci are negative, or if <offset>+<size> is greater than the value 28402f4aeb0Sopenharmony_ci of EGL_METADATA<n>_SIZE_NV for <stream>. 28502f4aeb0Sopenharmony_ci 28602f4aeb0Sopenharmony_ci If <data> does not point to valid writeable memory of at least 28702f4aeb0Sopenharmony_ci <size> bytes, undefined behavior will result. If the value of <size> 28802f4aeb0Sopenharmony_ci is zero, no error will occur, but the function will have no effect. 28902f4aeb0Sopenharmony_ci 29002f4aeb0Sopenharmony_ciIssues 29102f4aeb0Sopenharmony_ci 29202f4aeb0Sopenharmony_ci 1. What happens if multiple calls are made to 29302f4aeb0Sopenharmony_ci eglSetStreamMetadataNV without presenting a new frame? 29402f4aeb0Sopenharmony_ci 29502f4aeb0Sopenharmony_ci RESOLVED: If the calls specify overlapping ranges of the same 29602f4aeb0Sopenharmony_ci metadata block, the earlier data in the overlapped portion is 29702f4aeb0Sopenharmony_ci overwritten. Only the most recent values are associated with 29802f4aeb0Sopenharmony_ci the next frame when it is inserted into the stream. 29902f4aeb0Sopenharmony_ci 30002f4aeb0Sopenharmony_ci 2. What happens if multiple frames are presented without calling 30102f4aeb0Sopenharmony_ci eglSetStreamMetadataNV? 30202f4aeb0Sopenharmony_ci 30302f4aeb0Sopenharmony_ci RESOLVED: The most recently provided data is reused. 30402f4aeb0Sopenharmony_ci 30502f4aeb0Sopenharmony_ciRevision History 30602f4aeb0Sopenharmony_ci 30702f4aeb0Sopenharmony_ci #8 (July 31, 2015) Daniel Kartch 30802f4aeb0Sopenharmony_ci - Cleaned up and added contact info for publication. 30902f4aeb0Sopenharmony_ci 31002f4aeb0Sopenharmony_ci #7 (April 2, 2015) Miguel A. Vico 31102f4aeb0Sopenharmony_ci - Assigned enumerated value for metadata of pending frame. 31202f4aeb0Sopenharmony_ci 31302f4aeb0Sopenharmony_ci #6 (March 20, 2015) Daniel Kartch 31402f4aeb0Sopenharmony_ci - Add query for metadata of pending frame. 31502f4aeb0Sopenharmony_ci 31602f4aeb0Sopenharmony_ci #5 (January 15, 2015) Daniel Kartch 31702f4aeb0Sopenharmony_ci - Add paragraph of supported attributes to description of 31802f4aeb0Sopenharmony_ci eglQueryDisplayAttribNV. 31902f4aeb0Sopenharmony_ci - Added/updated error conditions to set/query functions. 32002f4aeb0Sopenharmony_ci - Fixed errors in prototypes. 32102f4aeb0Sopenharmony_ci 32202f4aeb0Sopenharmony_ci #4 (January 6, 2015) Daniel Kartch 32302f4aeb0Sopenharmony_ci - Fixed errors in prototypes. 32402f4aeb0Sopenharmony_ci - Added enum values. 32502f4aeb0Sopenharmony_ci 32602f4aeb0Sopenharmony_ci #3 (December 12, 2014) Daniel Kartch 32702f4aeb0Sopenharmony_ci - Clarified language on how metadata becomes associated with 32802f4aeb0Sopenharmony_ci frames inserted into the stream. 32902f4aeb0Sopenharmony_ci - Fixed typos. 33002f4aeb0Sopenharmony_ci 33102f4aeb0Sopenharmony_ci #2 (December 12, 2014) Daniel Kartch 33202f4aeb0Sopenharmony_ci - Added offset and size to Set and Query functions. 33302f4aeb0Sopenharmony_ci 33402f4aeb0Sopenharmony_ci #1 (December 11, 2014) Daniel Kartch 33502f4aeb0Sopenharmony_ci - Initial draft 336