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