xref: /aosp_15_r20/external/angle/extensions/ANGLE_external_objects_flags.txt (revision 8975f5c5ed3d1c378011245431ada316dfb6f244)
1*8975f5c5SAndroid Build Coastguard WorkerName
2*8975f5c5SAndroid Build Coastguard Worker
3*8975f5c5SAndroid Build Coastguard Worker    ANGLE_external_objects_flags
4*8975f5c5SAndroid Build Coastguard Worker
5*8975f5c5SAndroid Build Coastguard WorkerName Strings
6*8975f5c5SAndroid Build Coastguard Worker
7*8975f5c5SAndroid Build Coastguard Worker    GL_ANGLE_memory_object_flags
8*8975f5c5SAndroid Build Coastguard Worker
9*8975f5c5SAndroid Build Coastguard WorkerContributors
10*8975f5c5SAndroid Build Coastguard Worker
11*8975f5c5SAndroid Build Coastguard Worker    Shahbaz Youssefi, Google
12*8975f5c5SAndroid Build Coastguard Worker
13*8975f5c5SAndroid Build Coastguard WorkerContact
14*8975f5c5SAndroid Build Coastguard Worker
15*8975f5c5SAndroid Build Coastguard Worker    Shahbaz Youssefi, Google (syoussefi 'at' google.com)
16*8975f5c5SAndroid Build Coastguard Worker
17*8975f5c5SAndroid Build Coastguard WorkerStatus
18*8975f5c5SAndroid Build Coastguard Worker
19*8975f5c5SAndroid Build Coastguard Worker    Draft
20*8975f5c5SAndroid Build Coastguard Worker
21*8975f5c5SAndroid Build Coastguard WorkerVersion
22*8975f5c5SAndroid Build Coastguard Worker
23*8975f5c5SAndroid Build Coastguard Worker    Last Modified Date: Nov 10, 2021
24*8975f5c5SAndroid Build Coastguard Worker    Revision: 2
25*8975f5c5SAndroid Build Coastguard Worker
26*8975f5c5SAndroid Build Coastguard WorkerNumber
27*8975f5c5SAndroid Build Coastguard Worker
28*8975f5c5SAndroid Build Coastguard Worker    TBD
29*8975f5c5SAndroid Build Coastguard Worker
30*8975f5c5SAndroid Build Coastguard WorkerDependencies
31*8975f5c5SAndroid Build Coastguard Worker
32*8975f5c5SAndroid Build Coastguard Worker    Written against the OpenGL 4.5 and OpenGL ES 3.2 specifications
33*8975f5c5SAndroid Build Coastguard Worker
34*8975f5c5SAndroid Build Coastguard Worker    GL_ANGLE_memory_object_flags requires GL_EXT_memory_object.
35*8975f5c5SAndroid Build Coastguard Worker
36*8975f5c5SAndroid Build Coastguard WorkerOverview
37*8975f5c5SAndroid Build Coastguard Worker
38*8975f5c5SAndroid Build Coastguard Worker    Building upon the OpenGL memory object framework defined in
39*8975f5c5SAndroid Build Coastguard Worker    EXT_external_objects, this extension introduces new Texture entry points
40*8975f5c5SAndroid Build Coastguard Worker    for specifying create and usage flags parameters.  These parameters match
41*8975f5c5SAndroid Build Coastguard Worker    an external Texture's corresponding Vulkan create and usage flags.  This
42*8975f5c5SAndroid Build Coastguard Worker    allows applications to drop usage flags that are detrimental to
43*8975f5c5SAndroid Build Coastguard Worker    performance, or add create flags as necessary.
44*8975f5c5SAndroid Build Coastguard Worker
45*8975f5c5SAndroid Build Coastguard Worker    Additionally, these entry points take the pointer to the chain of extension
46*8975f5c5SAndroid Build Coastguard Worker    structures appended to VkImageCreateInfo, so that the OpenGL implementation
47*8975f5c5SAndroid Build Coastguard Worker    can recreate the image identically.
48*8975f5c5SAndroid Build Coastguard Worker
49*8975f5c5SAndroid Build Coastguard WorkerNew Procedures and Functions
50*8975f5c5SAndroid Build Coastguard Worker
51*8975f5c5SAndroid Build Coastguard Worker    The following commands are added:
52*8975f5c5SAndroid Build Coastguard Worker
53*8975f5c5SAndroid Build Coastguard Worker        void TexStorageMemFlags2DANGLE(enum target,
54*8975f5c5SAndroid Build Coastguard Worker                                       sizei levels,
55*8975f5c5SAndroid Build Coastguard Worker                                       enum internalFormat,
56*8975f5c5SAndroid Build Coastguard Worker                                       sizei width,
57*8975f5c5SAndroid Build Coastguard Worker                                       sizei height,
58*8975f5c5SAndroid Build Coastguard Worker                                       uint memory,
59*8975f5c5SAndroid Build Coastguard Worker                                       uint64 offset,
60*8975f5c5SAndroid Build Coastguard Worker                                       bitfield createFlags,
61*8975f5c5SAndroid Build Coastguard Worker                                       bitfield usageFlags,
62*8975f5c5SAndroid Build Coastguard Worker                                       const void *imageCreateInfoPNext);
63*8975f5c5SAndroid Build Coastguard Worker
64*8975f5c5SAndroid Build Coastguard Worker        void TexStorageMemFlags2DMultisampleANGLE(enum target,
65*8975f5c5SAndroid Build Coastguard Worker                                                  sizei samples,
66*8975f5c5SAndroid Build Coastguard Worker                                                  enum internalFormat,
67*8975f5c5SAndroid Build Coastguard Worker                                                  sizei width,
68*8975f5c5SAndroid Build Coastguard Worker                                                  sizei height,
69*8975f5c5SAndroid Build Coastguard Worker                                                  boolean fixedSampleLocations,
70*8975f5c5SAndroid Build Coastguard Worker                                                  uint memory,
71*8975f5c5SAndroid Build Coastguard Worker                                                  uint64 offset,
72*8975f5c5SAndroid Build Coastguard Worker                                                  bitfield createFlags,
73*8975f5c5SAndroid Build Coastguard Worker                                                  bitfield usageFlags,
74*8975f5c5SAndroid Build Coastguard Worker                                                  const void *imageCreateInfoPNext);
75*8975f5c5SAndroid Build Coastguard Worker
76*8975f5c5SAndroid Build Coastguard Worker        void TexStorageMemFlags3DANGLE(enum target,
77*8975f5c5SAndroid Build Coastguard Worker                                       sizei levels,
78*8975f5c5SAndroid Build Coastguard Worker                                       enum internalFormat,
79*8975f5c5SAndroid Build Coastguard Worker                                       sizei width,
80*8975f5c5SAndroid Build Coastguard Worker                                       sizei height,
81*8975f5c5SAndroid Build Coastguard Worker                                       sizei depth,
82*8975f5c5SAndroid Build Coastguard Worker                                       uint memory,
83*8975f5c5SAndroid Build Coastguard Worker                                       uint64 offset,
84*8975f5c5SAndroid Build Coastguard Worker                                       bitfield createFlags,
85*8975f5c5SAndroid Build Coastguard Worker                                       bitfield usageFlags,
86*8975f5c5SAndroid Build Coastguard Worker                                       const void *imageCreateInfoPNext);
87*8975f5c5SAndroid Build Coastguard Worker
88*8975f5c5SAndroid Build Coastguard Worker        void TexStorageMemFlags3DMultisampleANGLE(enum target,
89*8975f5c5SAndroid Build Coastguard Worker                                                  sizei samples,
90*8975f5c5SAndroid Build Coastguard Worker                                                  enum internalFormat,
91*8975f5c5SAndroid Build Coastguard Worker                                                  sizei width,
92*8975f5c5SAndroid Build Coastguard Worker                                                  sizei height,
93*8975f5c5SAndroid Build Coastguard Worker                                                  sizei depth,
94*8975f5c5SAndroid Build Coastguard Worker                                                  boolean fixedSampleLocations,
95*8975f5c5SAndroid Build Coastguard Worker                                                  uint memory,
96*8975f5c5SAndroid Build Coastguard Worker                                                  uint64 offset,
97*8975f5c5SAndroid Build Coastguard Worker                                                  bitfield createFlags,
98*8975f5c5SAndroid Build Coastguard Worker                                                  bitfield usageFlags,
99*8975f5c5SAndroid Build Coastguard Worker                                                  const void *imageCreateInfoPNext);
100*8975f5c5SAndroid Build Coastguard Worker
101*8975f5c5SAndroid Build Coastguard Worker        [[ The following are added if direct state access is supported ]]
102*8975f5c5SAndroid Build Coastguard Worker
103*8975f5c5SAndroid Build Coastguard Worker        void TextureStorageMemFlags2DANGLE(uint texture,
104*8975f5c5SAndroid Build Coastguard Worker                                           sizei levels,
105*8975f5c5SAndroid Build Coastguard Worker                                           enum internalFormat,
106*8975f5c5SAndroid Build Coastguard Worker                                           sizei width,
107*8975f5c5SAndroid Build Coastguard Worker                                           sizei height,
108*8975f5c5SAndroid Build Coastguard Worker                                           uint memory,
109*8975f5c5SAndroid Build Coastguard Worker                                           uint64 offset,
110*8975f5c5SAndroid Build Coastguard Worker                                           bitfield createFlags,
111*8975f5c5SAndroid Build Coastguard Worker                                           bitfield usageFlags,
112*8975f5c5SAndroid Build Coastguard Worker                                           const void *imageCreateInfoPNext);
113*8975f5c5SAndroid Build Coastguard Worker
114*8975f5c5SAndroid Build Coastguard Worker        void TextureStorageMemFlags2DMultisampleANGLE(uint texture,
115*8975f5c5SAndroid Build Coastguard Worker                                                      sizei samples,
116*8975f5c5SAndroid Build Coastguard Worker                                                      enum internalFormat,
117*8975f5c5SAndroid Build Coastguard Worker                                                      sizei width,
118*8975f5c5SAndroid Build Coastguard Worker                                                      sizei height,
119*8975f5c5SAndroid Build Coastguard Worker                                                      boolean fixedSampleLocations,
120*8975f5c5SAndroid Build Coastguard Worker                                                      uint memory,
121*8975f5c5SAndroid Build Coastguard Worker                                                      uint64 offset,
122*8975f5c5SAndroid Build Coastguard Worker                                                      bitfield createFlags,
123*8975f5c5SAndroid Build Coastguard Worker                                                      bitfield usageFlags,
124*8975f5c5SAndroid Build Coastguard Worker                                                      const void *imageCreateInfoPNext);
125*8975f5c5SAndroid Build Coastguard Worker
126*8975f5c5SAndroid Build Coastguard Worker        void TextureStorageMemFlags3DANGLE(uint texture,
127*8975f5c5SAndroid Build Coastguard Worker                                           sizei levels,
128*8975f5c5SAndroid Build Coastguard Worker                                           enum internalFormat,
129*8975f5c5SAndroid Build Coastguard Worker                                           sizei width,
130*8975f5c5SAndroid Build Coastguard Worker                                           sizei height,
131*8975f5c5SAndroid Build Coastguard Worker                                           sizei depth,
132*8975f5c5SAndroid Build Coastguard Worker                                           uint memory,
133*8975f5c5SAndroid Build Coastguard Worker                                           uint64 offset,
134*8975f5c5SAndroid Build Coastguard Worker                                           bitfield createFlags,
135*8975f5c5SAndroid Build Coastguard Worker                                           bitfield usageFlags,
136*8975f5c5SAndroid Build Coastguard Worker                                           const void *imageCreateInfoPNext);
137*8975f5c5SAndroid Build Coastguard Worker
138*8975f5c5SAndroid Build Coastguard Worker        void TextureStorageMemFlags3DMultisampleANGLE(uint texture,
139*8975f5c5SAndroid Build Coastguard Worker                                                      sizei samples,
140*8975f5c5SAndroid Build Coastguard Worker                                                      enum internalFormat,
141*8975f5c5SAndroid Build Coastguard Worker                                                      sizei width,
142*8975f5c5SAndroid Build Coastguard Worker                                                      sizei height,
143*8975f5c5SAndroid Build Coastguard Worker                                                      sizei depth,
144*8975f5c5SAndroid Build Coastguard Worker                                                      boolean fixedSampleLocations,
145*8975f5c5SAndroid Build Coastguard Worker                                                      uint memory,
146*8975f5c5SAndroid Build Coastguard Worker                                                      uint64 offset,
147*8975f5c5SAndroid Build Coastguard Worker                                                      bitfield createFlags,
148*8975f5c5SAndroid Build Coastguard Worker                                                      bitfield usageFlags,
149*8975f5c5SAndroid Build Coastguard Worker                                                      const void *imageCreateInfoPNext);
150*8975f5c5SAndroid Build Coastguard Worker
151*8975f5c5SAndroid Build Coastguard Worker        [[ The following are available in OpenGL only ]]
152*8975f5c5SAndroid Build Coastguard Worker
153*8975f5c5SAndroid Build Coastguard Worker        void TexStorageMemFlags1DANGLE(enum target,
154*8975f5c5SAndroid Build Coastguard Worker                                       sizei levels,
155*8975f5c5SAndroid Build Coastguard Worker                                       enum internalFormat,
156*8975f5c5SAndroid Build Coastguard Worker                                       sizei width,
157*8975f5c5SAndroid Build Coastguard Worker                                       uint memory,
158*8975f5c5SAndroid Build Coastguard Worker                                       uint64 offset,
159*8975f5c5SAndroid Build Coastguard Worker                                       bitfield createFlags,
160*8975f5c5SAndroid Build Coastguard Worker                                       bitfield usageFlags,
161*8975f5c5SAndroid Build Coastguard Worker                                       const void *imageCreateInfoPNext);
162*8975f5c5SAndroid Build Coastguard Worker
163*8975f5c5SAndroid Build Coastguard Worker        [[ The following are availble in OpenGL only, and only when
164*8975f5c5SAndroid Build Coastguard Worker           direct state access is available ]]
165*8975f5c5SAndroid Build Coastguard Worker
166*8975f5c5SAndroid Build Coastguard Worker        void TextureStorageMemFlags1DANGLE(uint texture,
167*8975f5c5SAndroid Build Coastguard Worker                                           sizei levels,
168*8975f5c5SAndroid Build Coastguard Worker                                           enum internalFormat,
169*8975f5c5SAndroid Build Coastguard Worker                                           sizei width,
170*8975f5c5SAndroid Build Coastguard Worker                                           uint memory,
171*8975f5c5SAndroid Build Coastguard Worker                                           uint64 offset,
172*8975f5c5SAndroid Build Coastguard Worker                                           bitfield createFlags,
173*8975f5c5SAndroid Build Coastguard Worker                                           bitfield usageFlags,
174*8975f5c5SAndroid Build Coastguard Worker                                           const void *imageCreateInfoPNext);
175*8975f5c5SAndroid Build Coastguard Worker
176*8975f5c5SAndroid Build Coastguard WorkerNew Tokens
177*8975f5c5SAndroid Build Coastguard Worker
178*8975f5c5SAndroid Build Coastguard Worker    The following tokens are added:
179*8975f5c5SAndroid Build Coastguard Worker
180*8975f5c5SAndroid Build Coastguard Worker    Accepted by the <createFlags> parameter of TexStorageMemFlags*ANGLE() and
181*8975f5c5SAndroid Build Coastguard Worker    TextureStorageMemFlags*ANGLE().
182*8975f5c5SAndroid Build Coastguard Worker
183*8975f5c5SAndroid Build Coastguard Worker        CREATE_SPARSE_BINDING_BIT_ANGLE                    0x00000001
184*8975f5c5SAndroid Build Coastguard Worker        CREATE_SPARSE_RESIDENCY_BIT_ANGLE                  0x00000002
185*8975f5c5SAndroid Build Coastguard Worker        CREATE_SPARSE_ALIASED_BIT_ANGLE                    0x00000004
186*8975f5c5SAndroid Build Coastguard Worker        CREATE_MUTABLE_FORMAT_BIT_ANGLE                    0x00000008
187*8975f5c5SAndroid Build Coastguard Worker        CREATE_CUBE_COMPATIBLE_BIT_ANGLE                   0x00000010
188*8975f5c5SAndroid Build Coastguard Worker        CREATE_ALIAS_BIT_ANGLE                             0x00000400
189*8975f5c5SAndroid Build Coastguard Worker        CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_ANGLE       0x00000040
190*8975f5c5SAndroid Build Coastguard Worker        CREATE_2D_ARRAY_COMPATIBLE_BIT_ANGLE               0x00000020
191*8975f5c5SAndroid Build Coastguard Worker        CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT_ANGLE       0x00000080
192*8975f5c5SAndroid Build Coastguard Worker        CREATE_EXTENDED_USAGE_BIT_ANGLE                    0x00000100
193*8975f5c5SAndroid Build Coastguard Worker        CREATE_PROTECTED_BIT_ANGLE                         0x00000800
194*8975f5c5SAndroid Build Coastguard Worker        CREATE_DISJOINT_BIT_ANGLE                          0x00000200
195*8975f5c5SAndroid Build Coastguard Worker        CREATE_CORNER_SAMPLED_BIT_ANGLE                    0x00002000
196*8975f5c5SAndroid Build Coastguard Worker        CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_ANGLE 0x00001000
197*8975f5c5SAndroid Build Coastguard Worker        CREATE_SUBSAMPLED_BIT_ANGLE                        0x00004000
198*8975f5c5SAndroid Build Coastguard Worker
199*8975f5c5SAndroid Build Coastguard Worker    Accepted by the <usageFlags> parameter of TexStorageMemFlags*ANGLE() and
200*8975f5c5SAndroid Build Coastguard Worker    TextureStorageMemFlags*ANGLE().
201*8975f5c5SAndroid Build Coastguard Worker
202*8975f5c5SAndroid Build Coastguard Worker        USAGE_TRANSFER_SRC_BIT_ANGLE                       0x00000001
203*8975f5c5SAndroid Build Coastguard Worker        USAGE_TRANSFER_DST_BIT_ANGLE                       0x00000002
204*8975f5c5SAndroid Build Coastguard Worker        USAGE_SAMPLED_BIT_ANGLE                            0x00000004
205*8975f5c5SAndroid Build Coastguard Worker        USAGE_STORAGE_BIT_ANGLE                            0x00000008
206*8975f5c5SAndroid Build Coastguard Worker        USAGE_COLOR_ATTACHMENT_BIT_ANGLE                   0x00000010
207*8975f5c5SAndroid Build Coastguard Worker        USAGE_DEPTH_STENCIL_ATTACHMENT_BIT_ANGLE           0x00000020
208*8975f5c5SAndroid Build Coastguard Worker        USAGE_TRANSIENT_ATTACHMENT_BIT_ANGLE               0x00000040
209*8975f5c5SAndroid Build Coastguard Worker        USAGE_INPUT_ATTACHMENT_BIT_ANGLE                   0x00000080
210*8975f5c5SAndroid Build Coastguard Worker        USAGE_SHADING_RATE_IMAGE_BIT_ANGLE                 0x00000100
211*8975f5c5SAndroid Build Coastguard Worker        USAGE_FRAGMENT_DENSITY_MAP_BIT_ANGLE               0x00000200
212*8975f5c5SAndroid Build Coastguard Worker
213*8975f5c5SAndroid Build Coastguard WorkerAdditions to Chapter 8 of the OpenGL 4.5 Specification (Textures and
214*8975f5c5SAndroid Build Coastguard WorkerSamplers)
215*8975f5c5SAndroid Build Coastguard Worker
216*8975f5c5SAndroid Build Coastguard Worker    For each list of TexStorage* commands in the 1D, 2D, 3D,
217*8975f5c5SAndroid Build Coastguard Worker    2DMultisample, and 3DMultisample families, add the following
218*8975f5c5SAndroid Build Coastguard Worker    variants:
219*8975f5c5SAndroid Build Coastguard Worker
220*8975f5c5SAndroid Build Coastguard Worker        void TexStorageMemFlags*ANGLE(<existing parameters>,
221*8975f5c5SAndroid Build Coastguard Worker                                      uint memory,
222*8975f5c5SAndroid Build Coastguard Worker                                      uint64 offset,
223*8975f5c5SAndroid Build Coastguard Worker                                      bitfield createFlags,
224*8975f5c5SAndroid Build Coastguard Worker                                      bitfield usageFlags,
225*8975f5c5SAndroid Build Coastguard Worker                                      const void *imageCreateInfoPNext);
226*8975f5c5SAndroid Build Coastguard Worker
227*8975f5c5SAndroid Build Coastguard Worker        void TextureStorageMemFlags*ANGLE(<existing parameters>,
228*8975f5c5SAndroid Build Coastguard Worker                                          uint memory,
229*8975f5c5SAndroid Build Coastguard Worker                                          uint64 offset,
230*8975f5c5SAndroid Build Coastguard Worker                                          bitfield createFlags,
231*8975f5c5SAndroid Build Coastguard Worker                                          bitfield usageFlags,
232*8975f5c5SAndroid Build Coastguard Worker                                          const void *imageCreateInfoPNext);
233*8975f5c5SAndroid Build Coastguard Worker
234*8975f5c5SAndroid Build Coastguard Worker    For each of the TexStorageMemFlags*ANGLE commands, move the description from
235*8975f5c5SAndroid Build Coastguard Worker    the corresponding TexStorageMem*EXT from EXT_external_objects under that
236*8975f5c5SAndroid Build Coastguard Worker    command and add the following language:
237*8975f5c5SAndroid Build Coastguard Worker
238*8975f5c5SAndroid Build Coastguard Worker        "The implementation should apply the same semantics to the internal
239*8975f5c5SAndroid Build Coastguard Worker        storage of the texture based on <createFlags>, <usageFlags> and
240*8975f5c5SAndroid Build Coastguard Worker        <imageCreateInfoPNext> as the corresonding VkImageCreateFlags,
241*8975f5c5SAndroid Build Coastguard Worker        VkImageUsageFlags and chained structs to VkImageCreateInfo would have
242*8975f5c5SAndroid Build Coastguard Worker        on a Vulkan image respectively.  See tables 8.17 and 8.18 for the
243*8975f5c5SAndroid Build Coastguard Worker        mapping between the GL and Vulkan flags.  It is undefined behavior if
244*8975f5c5SAndroid Build Coastguard Worker        the application provides create flags, usage flags or chained structs
245*8975f5c5SAndroid Build Coastguard Worker        that are not identical to those used to create the Vulkan image."
246*8975f5c5SAndroid Build Coastguard Worker
247*8975f5c5SAndroid Build Coastguard Worker        Table 8.17: Create flags and corresponding Vulkan Image Create Flags
248*8975f5c5SAndroid Build Coastguard Worker
249*8975f5c5SAndroid Build Coastguard Worker        | Create Flag                                        | Equivalent Vulkan Create Flag                             |
250*8975f5c5SAndroid Build Coastguard Worker        +----------------------------------------------------+-----------------------------------------------------------+
251*8975f5c5SAndroid Build Coastguard Worker        | CREATE_SPARSE_BINDING_BIT_ANGLE                    | VK_IMAGE_CREATE_SPARSE_BINDING_BIT                        |
252*8975f5c5SAndroid Build Coastguard Worker        | CREATE_SPARSE_RESIDENCY_BIT_ANGLE                  | VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT                      |
253*8975f5c5SAndroid Build Coastguard Worker        | CREATE_SPARSE_ALIASED_BIT_ANGLE                    | VK_IMAGE_CREATE_SPARSE_ALIASED_BIT                        |
254*8975f5c5SAndroid Build Coastguard Worker        | CREATE_MUTABLE_FORMAT_BIT_ANGLE                    | VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT                        |
255*8975f5c5SAndroid Build Coastguard Worker        | CREATE_CUBE_COMPATIBLE_BIT_ANGLE                   | VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT                       |
256*8975f5c5SAndroid Build Coastguard Worker        | CREATE_ALIAS_BIT_ANGLE                             | VK_IMAGE_CREATE_ALIAS_BIT                                 |
257*8975f5c5SAndroid Build Coastguard Worker        | CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_ANGLE       | VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT           |
258*8975f5c5SAndroid Build Coastguard Worker        | CREATE_2D_ARRAY_COMPATIBLE_BIT_ANGLE               | VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT                   |
259*8975f5c5SAndroid Build Coastguard Worker        | CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT_ANGLE       | VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT           |
260*8975f5c5SAndroid Build Coastguard Worker        | CREATE_EXTENDED_USAGE_BIT_ANGLE                    | VK_IMAGE_CREATE_EXTENDED_USAGE_BIT                        |
261*8975f5c5SAndroid Build Coastguard Worker        | CREATE_PROTECTED_BIT_ANGLE                         | VK_IMAGE_CREATE_PROTECTED_BIT                             |
262*8975f5c5SAndroid Build Coastguard Worker        | CREATE_DISJOINT_BIT_ANGLE                          | VK_IMAGE_CREATE_DISJOINT_BIT                              |
263*8975f5c5SAndroid Build Coastguard Worker        | CREATE_CORNER_SAMPLED_BIT_ANGLE                    | VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV                     |
264*8975f5c5SAndroid Build Coastguard Worker        | CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_ANGLE | VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT |
265*8975f5c5SAndroid Build Coastguard Worker        | CREATE_SUBSAMPLED_BIT_ANGLE                        | VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT                        |
266*8975f5c5SAndroid Build Coastguard Worker        +----------------------------------------------------------------------------------------------------------------+
267*8975f5c5SAndroid Build Coastguard Worker
268*8975f5c5SAndroid Build Coastguard Worker        Table 8.18: Usage flags and corresponding Vulkan Image Usage Flags
269*8975f5c5SAndroid Build Coastguard Worker
270*8975f5c5SAndroid Build Coastguard Worker        | Usage Flag                               | Equivalent Vulkan Usage Flag                |
271*8975f5c5SAndroid Build Coastguard Worker        +------------------------------------------+---------------------------------------------+
272*8975f5c5SAndroid Build Coastguard Worker        | USAGE_TRANSFER_SRC_BIT_ANGLE             | VK_IMAGE_USAGE_TRANSFER_SRC_BIT             |
273*8975f5c5SAndroid Build Coastguard Worker        | USAGE_TRANSFER_DST_BIT_ANGLE             | VK_IMAGE_USAGE_TRANSFER_DST_BIT             |
274*8975f5c5SAndroid Build Coastguard Worker        | USAGE_SAMPLED_BIT_ANGLE                  | VK_IMAGE_USAGE_SAMPLED_BIT                  |
275*8975f5c5SAndroid Build Coastguard Worker        | USAGE_STORAGE_BIT_ANGLE                  | VK_IMAGE_USAGE_STORAGE_BIT                  |
276*8975f5c5SAndroid Build Coastguard Worker        | USAGE_COLOR_ATTACHMENT_BIT_ANGLE         | VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT         |
277*8975f5c5SAndroid Build Coastguard Worker        | USAGE_DEPTH_STENCIL_ATTACHMENT_BIT_ANGLE | VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT |
278*8975f5c5SAndroid Build Coastguard Worker        | USAGE_TRANSIENT_ATTACHMENT_BIT_ANGLE     | VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT     |
279*8975f5c5SAndroid Build Coastguard Worker        | USAGE_INPUT_ATTACHMENT_BIT_ANGLE         | VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT         |
280*8975f5c5SAndroid Build Coastguard Worker        | USAGE_SHADING_RATE_IMAGE_BIT_ANGLE       | VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV    |
281*8975f5c5SAndroid Build Coastguard Worker        | USAGE_FRAGMENT_DENSITY_MAP_BIT_ANGLE     | VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT |
282*8975f5c5SAndroid Build Coastguard Worker        +----------------------------------------------------------------------------------------+
283*8975f5c5SAndroid Build Coastguard Worker
284*8975f5c5SAndroid Build Coastguard Worker    Add the following errors for each of the TexStorageMemFlags*ANGLE commands:
285*8975f5c5SAndroid Build Coastguard Worker
286*8975f5c5SAndroid Build Coastguard Worker        "An INVALID_VALUE error is generated if <createFlags> has a bit set
287*8975f5c5SAndroid Build Coastguard Worker        other than those specified in table 8.17."
288*8975f5c5SAndroid Build Coastguard Worker
289*8975f5c5SAndroid Build Coastguard Worker        "An INVALID_VALUE error is generated if <usageFlags> has a bit set
290*8975f5c5SAndroid Build Coastguard Worker        other than those specified in table 8.18."
291*8975f5c5SAndroid Build Coastguard Worker
292*8975f5c5SAndroid Build Coastguard Worker    For each of the TexStorageMem*EXT commands, change the description of
293*8975f5c5SAndroid Build Coastguard Worker    TexStorageMem*EXT and TextureStorageMem*EXT as such:
294*8975f5c5SAndroid Build Coastguard Worker
295*8975f5c5SAndroid Build Coastguard Worker        "Calling TexStorageMem*EXT is equivalent to calling
296*8975f5c5SAndroid Build Coastguard Worker        TexStorageMemFlags*ANGLE with 0 as <createFlags>, all
297*8975f5c5SAndroid Build Coastguard Worker        Vulkan-supported usage flags as <usageFlags>, even if there are no
298*8975f5c5SAndroid Build Coastguard Worker        corresponding GL flags specified in this extension, and NULL as
299*8975f5c5SAndroid Build Coastguard Worker        <imageCreateInfoPNext>."
300*8975f5c5SAndroid Build Coastguard Worker
301*8975f5c5SAndroid Build Coastguard WorkerIssues
302*8975f5c5SAndroid Build Coastguard Worker
303*8975f5c5SAndroid Build Coastguard Worker    1)  Can the GL and Vulkan create and usage flag values diverge?
304*8975f5c5SAndroid Build Coastguard Worker
305*8975f5c5SAndroid Build Coastguard Worker        RESOLVED: No.  It is expected for the application to provide the flags
306*8975f5c5SAndroid Build Coastguard Worker        used to create the Vulkan image verbatim.
307*8975f5c5SAndroid Build Coastguard Worker
308*8975f5c5SAndroid Build Coastguard Worker    2)  What if Vulkan adds new create and usage flags?
309*8975f5c5SAndroid Build Coastguard Worker
310*8975f5c5SAndroid Build Coastguard Worker        RESOLVED: If the implementation is too old to be aware of those flags,
311*8975f5c5SAndroid Build Coastguard Worker        the functions from GL_EXT_memory_object must be used instead.  New flags
312*8975f5c5SAndroid Build Coastguard Worker        can be added through new extensions that build on this extension.
313*8975f5c5SAndroid Build Coastguard Worker
314*8975f5c5SAndroid Build Coastguard Worker    3)  Should the GL implementation apply the same validation as Vulkan based
315*8975f5c5SAndroid Build Coastguard Worker        on the create and usage flags?
316*8975f5c5SAndroid Build Coastguard Worker
317*8975f5c5SAndroid Build Coastguard Worker        RESOLVED: No.  The application has already created an image with these
318*8975f5c5SAndroid Build Coastguard Worker        flags in Vulkan, so the GL implementation can assume they are valid.
319*8975f5c5SAndroid Build Coastguard Worker        Validating this is expensive and unnecessary in almost all applications.
320*8975f5c5SAndroid Build Coastguard Worker
321*8975f5c5SAndroid Build Coastguard Worker    4)  How can extension structs applied to VkImageCreateInfo be communicated
322*8975f5c5SAndroid Build Coastguard Worker        to the GL implementation?
323*8975f5c5SAndroid Build Coastguard Worker
324*8975f5c5SAndroid Build Coastguard Worker        RESOLVED: The chain of structs itself is directly passed to the
325*8975f5c5SAndroid Build Coastguard Worker        implementation.
326*8975f5c5SAndroid Build Coastguard Worker
327*8975f5c5SAndroid Build Coastguard WorkerRevision History
328*8975f5c5SAndroid Build Coastguard Worker
329*8975f5c5SAndroid Build Coastguard Worker    Revision 2, 2021-11-10 (Shahbaz Youssefi)
330*8975f5c5SAndroid Build Coastguard Worker        - Added the imageCreateInfoPNext parameter.
331*8975f5c5SAndroid Build Coastguard Worker
332*8975f5c5SAndroid Build Coastguard Worker    Revision 1, 2020-08-03 (Shahbaz Youssefi)
333*8975f5c5SAndroid Build Coastguard Worker        - Initial draft based on EXT_external_objects.
334