1Name
2
3    ANDROID_get_native_client_buffer
4
5Name Strings
6
7    EGL_ANDROID_get_native_client_buffer
8
9Contributors
10
11    Craig Donner
12
13Contact
14
15    Craig Donner, Google Inc. (cdonner 'at' google.com)
16
17Status
18
19    Complete
20
21Version
22
23    Version 3, October 11, 2017
24
25Number
26
27    EGL Extension #123
28
29Dependencies
30
31    Requires EGL 1.2.
32
33    EGL_ANDROID_image_native_buffer and EGL_KHR_image_base are required.
34
35    This extension is written against the wording of the EGL 1.2
36    Specification as modified by EGL_KHR_image_base and
37    EGL_ANDROID_image_native_buffer.
38
39Overview
40
41    This extension allows creating an EGLClientBuffer from an Android
42    AHardwareBuffer object which can be later used to create an EGLImage.
43
44New Types
45
46    struct AHardwareBuffer
47
48New Procedures and Functions
49
50    EGLClientBuffer eglGetNativeClientBufferANDROID(const struct AHardwareBuffer *buffer)
51
52New Tokens
53
54    None
55
56Changes to Chapter 3 of the EGL 1.2 Specification (EGL Functions and Errors)
57
58    Add the following to section 2.5.1 "EGLImage Specification" (as modified by
59    the EGL_KHR_image_base and EGL_ANDROID_image_native_buffer specifications),
60    below the description of eglCreateImageKHR:
61
62   "The command
63
64        EGLClientBuffer eglGetNativeClientBufferANDROID(
65                                const struct AHardwareBuffer *buffer)
66
67    may be used to create an EGLClientBuffer from an AHardwareBuffer object.
68    EGL implementations must guarantee that the lifetime of the returned
69    EGLClientBuffer is at least as long as the EGLImage(s) it is bound to,
70    following the lifetime semantics described below in section 2.5.2; the
71    EGLClientBuffer must be destroyed no earlier than when all of its associated
72    EGLImages are destroyed by eglDestroyImageKHR.
73
74    Errors
75
76        If eglGetNativeClientBufferANDROID fails, NULL will be returned, no
77        memory will be allocated, and the following error will be generated:
78
79       * If the value of buffer is NULL, the error EGL_BAD_PARAMETER is
80         generated.
81
82Issues
83
84    1. Should this extension define what particular AHardwareBuffer formats EGL
85    implementations are required to support?
86
87    RESOLVED: No.
88
89    The set of valid formats is implementation-specific and may depend on
90    additional EGL extensions. The particular valid combinations for a given
91    Android version and implementation should be documented by that version.
92
93Revision History
94
95#3 (Jesse Hall, October 11, 2017)
96    - Assigned extension number, fixed minor issues for publication
97
98#2 (Craig Donner, February 17, 2017)
99    - Fix typographical errors.
100
101#1 (Craig Donner, January 27, 2017)
102    - Initial draft.
103