1 // GENERATED FILE - DO NOT EDIT. 2 // Generated by gen_extensions.py using data from registry_xml.py and gl.xml 3 // 4 // Copyright 2021 The ANGLE Project Authors. All rights reserved. 5 // Use of this source code is governed by a BSD-style license that can be 6 // found in the LICENSE file. 7 // 8 // gles_extensions_autogen.h: GLES extension information. 9 10 #ifndef LIBANGLE_GLES_EXTENSIONS_AUTOGEN_H_ 11 #define LIBANGLE_GLES_EXTENSIONS_AUTOGEN_H_ 12 13 namespace gl 14 { 15 class TextureCapsMap; 16 17 struct Extensions 18 { 19 Extensions(); 20 Extensions(const Extensions &other); 21 22 Extensions &operator=(const Extensions &other); 23 24 // Generate a vector of supported extension strings 25 std::vector<std::string> getStrings() const; 26 27 // Set all texture related extension support based on the supported textures. 28 // Determines support for: 29 // GL_OES_packed_depth_stencil 30 // GL_OES_rgb8_rgba8 31 // GL_EXT_texture_format_BGRA8888 32 // GL_EXT_color_buffer_half_float, 33 // GL_OES_texture_half_float, GL_OES_texture_half_float_linear 34 // GL_OES_texture_float, GL_OES_texture_float_linear 35 // GL_EXT_texture_rg 36 // GL_EXT_texture_type_2_10_10_10_REV 37 // GL_EXT_texture_compression_dxt1, GL_ANGLE_texture_compression_dxt3, 38 // GL_ANGLE_texture_compression_dxt5 39 // GL_KHR_texture_compression_astc_ldr, GL_OES_texture_compression_astc. 40 // NOTE: GL_KHR_texture_compression_astc_hdr must be enabled separately. Support for the 41 // HDR profile cannot be determined from the format enums alone. 42 // GL_OES_compressed_ETC1_RGB8_texture 43 // GL_EXT_sRGB 44 // GL_ANGLE_depth_texture, GL_OES_depth32 45 // GL_EXT_color_buffer_float 46 // GL_EXT_texture_norm16 47 // GL_EXT_texture_compression_bptc 48 // GL_EXT_texture_compression_rgtc 49 void setTextureExtensionSupport(const TextureCapsMap &textureCaps); 50 51 // Helper functions copyImageAnyExtensions52 bool copyImageAny() const { return (copyImageEXT || copyImageOES); } depthTextureAnyExtensions53 bool depthTextureAny() const { return (depthTextureANGLE || depthTextureOES); } drawBuffersIndexedAnyExtensions54 bool drawBuffersIndexedAny() const { return (drawBuffersIndexedEXT || drawBuffersIndexedOES); } drawElementsBaseVertexAnyExtensions55 bool drawElementsBaseVertexAny() const 56 { 57 return (drawElementsBaseVertexEXT || drawElementsBaseVertexOES); 58 } framebufferBlitAnyExtensions59 bool framebufferBlitAny() const { return (framebufferBlitANGLE || framebufferBlitNV); } geometryShaderAnyExtensions60 bool geometryShaderAny() const { return (geometryShaderEXT || geometryShaderOES); } instancedArraysAnyExtensions61 bool instancedArraysAny() const { return (instancedArraysANGLE || instancedArraysEXT); } shaderIoBlocksAnyExtensions62 bool shaderIoBlocksAny() const { return (shaderIoBlocksEXT || shaderIoBlocksOES); } textureBorderClampAnyExtensions63 bool textureBorderClampAny() const { return (textureBorderClampEXT || textureBorderClampOES); } textureBufferAnyExtensions64 bool textureBufferAny() const { return (textureBufferEXT || textureBufferOES); } textureCubeMapArrayAnyExtensions65 bool textureCubeMapArrayAny() const 66 { 67 return (textureCubeMapArrayEXT || textureCubeMapArrayOES); 68 } 69 70 // GLES 2.0+ extensions 71 // -------------------- 72 73 // GL_KHR_blend_equation_advanced 74 bool blendEquationAdvancedKHR = false; 75 76 // GL_EXT_blend_func_extended 77 bool blendFuncExtendedEXT = false; 78 79 // GL_EXT_blend_minmax 80 bool blendMinmaxEXT = false; 81 82 // GL_EXT_buffer_storage 83 bool bufferStorageEXT = false; 84 85 // GL_EXT_clip_control 86 bool clipControlEXT = false; 87 88 // GL_EXT_clip_cull_distance 89 bool clipCullDistanceEXT = false; 90 91 // GL_APPLE_clip_distance 92 bool clipDistanceAPPLE = false; 93 94 // GL_EXT_color_buffer_float 95 bool colorBufferFloatEXT = false; 96 97 // GL_EXT_color_buffer_half_float 98 bool colorBufferHalfFloatEXT = false; 99 100 // GL_OES_compressed_EAC_R11_signed_texture 101 bool compressedEACR11SignedTextureOES = false; 102 103 // GL_OES_compressed_EAC_R11_unsigned_texture 104 bool compressedEACR11UnsignedTextureOES = false; 105 106 // GL_OES_compressed_EAC_RG11_signed_texture 107 bool compressedEACRG11SignedTextureOES = false; 108 109 // GL_OES_compressed_EAC_RG11_unsigned_texture 110 bool compressedEACRG11UnsignedTextureOES = false; 111 112 // GL_EXT_compressed_ETC1_RGB8_sub_texture 113 bool compressedETC1RGB8SubTextureEXT = false; 114 115 // GL_OES_compressed_ETC1_RGB8_texture 116 bool compressedETC1RGB8TextureOES = false; 117 118 // GL_OES_compressed_ETC2_punchthroughA_RGBA8_texture 119 bool compressedETC2PunchthroughARGBA8TextureOES = false; 120 121 // GL_OES_compressed_ETC2_punchthroughA_sRGB8_alpha_texture 122 bool compressedETC2PunchthroughASRGB8AlphaTextureOES = false; 123 124 // GL_OES_compressed_ETC2_RGB8_texture 125 bool compressedETC2RGB8TextureOES = false; 126 127 // GL_OES_compressed_ETC2_RGBA8_texture 128 bool compressedETC2RGBA8TextureOES = false; 129 130 // GL_OES_compressed_ETC2_sRGB8_alpha8_texture 131 bool compressedETC2SRGB8Alpha8TextureOES = false; 132 133 // GL_OES_compressed_ETC2_sRGB8_texture 134 bool compressedETC2SRGB8TextureOES = false; 135 136 // GL_EXT_copy_image 137 bool copyImageEXT = false; 138 139 // GL_OES_copy_image 140 bool copyImageOES = false; 141 142 // GL_KHR_debug 143 bool debugKHR = false; 144 145 // GL_EXT_debug_label 146 bool debugLabelEXT = false; 147 148 // GL_EXT_debug_marker 149 bool debugMarkerEXT = false; 150 151 // GL_OES_depth24 152 bool depth24OES = false; 153 154 // GL_OES_depth32 155 bool depth32OES = false; 156 157 // GL_NV_depth_buffer_float2 158 bool depthBufferFloat2NV = false; 159 160 // GL_ANGLE_depth_texture 161 bool depthTextureANGLE = false; 162 163 // GL_OES_depth_texture 164 bool depthTextureOES = false; 165 166 // GL_OES_depth_texture_cube_map 167 bool depthTextureCubeMapOES = false; 168 169 // GL_EXT_discard_framebuffer 170 bool discardFramebufferEXT = false; 171 172 // GL_EXT_disjoint_timer_query 173 bool disjointTimerQueryEXT = false; 174 175 // GL_EXT_draw_buffers 176 bool drawBuffersEXT = false; 177 178 // GL_EXT_draw_buffers_indexed 179 bool drawBuffersIndexedEXT = false; 180 181 // GL_OES_draw_buffers_indexed 182 bool drawBuffersIndexedOES = false; 183 184 // GL_EXT_draw_elements_base_vertex 185 bool drawElementsBaseVertexEXT = false; 186 187 // GL_OES_draw_elements_base_vertex 188 bool drawElementsBaseVertexOES = false; 189 190 // GL_OES_EGL_image 191 bool EGLImageOES = false; 192 193 // GL_EXT_EGL_image_array 194 bool EGLImageArrayEXT = false; 195 196 // GL_OES_EGL_image_external 197 bool EGLImageExternalOES = false; 198 199 // GL_OES_EGL_image_external_essl3 200 bool EGLImageExternalEssl3OES = false; 201 202 // GL_EXT_EGL_image_external_wrap_modes 203 bool EGLImageExternalWrapModesEXT = false; 204 205 // GL_EXT_EGL_image_storage 206 bool EGLImageStorageEXT = false; 207 208 // GL_NV_EGL_stream_consumer_external 209 bool EGLStreamConsumerExternalNV = false; 210 211 // GL_OES_EGL_sync 212 bool EGLSyncOES = false; 213 214 // GL_OES_element_index_uint 215 bool elementIndexUintOES = false; 216 217 // GL_EXT_external_buffer 218 bool externalBufferEXT = false; 219 220 // GL_OES_fbo_render_mipmap 221 bool fboRenderMipmapOES = false; 222 223 // GL_NV_fence 224 bool fenceNV = false; 225 226 // GL_EXT_float_blend 227 bool floatBlendEXT = false; 228 229 // GL_EXT_frag_depth 230 bool fragDepthEXT = false; 231 232 // GL_ANGLE_framebuffer_blit 233 bool framebufferBlitANGLE = false; 234 235 // GL_NV_framebuffer_blit 236 bool framebufferBlitNV = false; 237 238 // GL_EXT_geometry_shader 239 bool geometryShaderEXT = false; 240 241 // GL_OES_geometry_shader 242 bool geometryShaderOES = false; 243 244 // GL_OES_get_program_binary 245 bool getProgramBinaryOES = false; 246 247 // GL_EXT_gpu_shader5 248 bool gpuShader5EXT = false; 249 250 // GL_ANGLE_instanced_arrays 251 bool instancedArraysANGLE = false; 252 253 // GL_EXT_instanced_arrays 254 bool instancedArraysEXT = false; 255 256 // GL_OES_mapbuffer 257 bool mapbufferOES = false; 258 259 // GL_EXT_map_buffer_range 260 bool mapBufferRangeEXT = false; 261 262 // GL_EXT_memory_object 263 bool memoryObjectEXT = false; 264 265 // GL_EXT_memory_object_fd 266 bool memoryObjectFdEXT = false; 267 268 // GL_EXT_multi_draw_indirect 269 bool multiDrawIndirectEXT = false; 270 271 // GL_EXT_multisample_compatibility 272 bool multisampleCompatibilityEXT = false; 273 274 // GL_EXT_multisampled_render_to_texture 275 bool multisampledRenderToTextureEXT = false; 276 277 // GL_EXT_multisampled_render_to_texture2 278 bool multisampledRenderToTexture2EXT = false; 279 280 // GL_OVR_multiview 281 bool multiviewOVR = false; 282 283 // GL_OVR_multiview2 284 bool multiview2OVR = false; 285 286 // GL_KHR_no_error 287 bool noErrorKHR = false; 288 289 // GL_EXT_occlusion_query_boolean 290 bool occlusionQueryBooleanEXT = false; 291 292 // GL_OES_packed_depth_stencil 293 bool packedDepthStencilOES = false; 294 295 // GL_ANGLE_pack_reverse_row_order 296 bool packReverseRowOrderANGLE = false; 297 298 // GL_NV_pack_subimage 299 bool packSubimageNV = false; 300 301 // GL_KHR_parallel_shader_compile 302 bool parallelShaderCompileKHR = false; 303 304 // GL_NV_pixel_buffer_object 305 bool pixelBufferObjectNV = false; 306 307 // GL_EXT_primitive_bounding_box 308 bool primitiveBoundingBoxEXT = false; 309 310 // GL_EXT_protected_textures 311 bool protectedTexturesEXT = false; 312 313 // GL_EXT_pvrtc_sRGB 314 bool pvrtcSRGBEXT = false; 315 316 // GL_NV_read_depth 317 bool readDepthNV = false; 318 319 // GL_EXT_read_format_bgra 320 bool readFormatBgraEXT = false; 321 322 // GL_NV_read_stencil 323 bool readStencilNV = false; 324 325 // GL_OES_rgb8_rgba8 326 bool rgb8Rgba8OES = false; 327 328 // GL_KHR_robust_buffer_access_behavior 329 bool robustBufferAccessBehaviorKHR = false; 330 331 // GL_EXT_robustness 332 bool robustnessEXT = false; 333 334 // GL_NV_robustness_video_memory_purge 335 bool robustnessVideoMemoryPurgeNV = false; 336 337 // GL_OES_sample_shading 338 bool sampleShadingOES = false; 339 340 // GL_OES_sample_variables 341 bool sampleVariablesOES = false; 342 343 // GL_EXT_semaphore 344 bool semaphoreEXT = false; 345 346 // GL_EXT_semaphore_fd 347 bool semaphoreFdEXT = false; 348 349 // GL_EXT_separate_shader_objects 350 bool separateShaderObjectsEXT = false; 351 352 // GL_EXT_shader_framebuffer_fetch_non_coherent 353 bool shaderFramebufferFetchNonCoherentEXT = false; 354 355 // GL_OES_shader_image_atomic 356 bool shaderImageAtomicOES = false; 357 358 // GL_EXT_shader_io_blocks 359 bool shaderIoBlocksEXT = false; 360 361 // GL_OES_shader_io_blocks 362 bool shaderIoBlocksOES = false; 363 364 // GL_OES_shader_multisample_interpolation 365 bool shaderMultisampleInterpolationOES = false; 366 367 // GL_EXT_shader_non_constant_global_initializers 368 bool shaderNonConstantGlobalInitializersEXT = false; 369 370 // GL_NV_shader_noperspective_interpolation 371 bool shaderNoperspectiveInterpolationNV = false; 372 373 // GL_EXT_shader_texture_lod 374 bool shaderTextureLodEXT = false; 375 376 // GL_EXT_shadow_samplers 377 bool shadowSamplersEXT = false; 378 379 // GL_EXT_sRGB 380 bool sRGBEXT = false; 381 382 // GL_EXT_sRGB_write_control 383 bool sRGBWriteControlEXT = false; 384 385 // GL_OES_standard_derivatives 386 bool standardDerivativesOES = false; 387 388 // GL_OES_surfaceless_context 389 bool surfacelessContextOES = false; 390 391 // GL_ARB_sync 392 bool syncARB = false; 393 394 // GL_EXT_tessellation_shader 395 bool tessellationShaderEXT = false; 396 397 // GL_OES_texture_3D 398 bool texture3DOES = false; 399 400 // GL_EXT_texture_border_clamp 401 bool textureBorderClampEXT = false; 402 403 // GL_OES_texture_border_clamp 404 bool textureBorderClampOES = false; 405 406 // GL_EXT_texture_buffer 407 bool textureBufferEXT = false; 408 409 // GL_OES_texture_buffer 410 bool textureBufferOES = false; 411 412 // GL_OES_texture_compression_astc 413 bool textureCompressionAstcOES = false; 414 415 // GL_KHR_texture_compression_astc_hdr 416 bool textureCompressionAstcHdrKHR = false; 417 418 // GL_KHR_texture_compression_astc_ldr 419 bool textureCompressionAstcLdrKHR = false; 420 421 // GL_KHR_texture_compression_astc_sliced_3d 422 bool textureCompressionAstcSliced3dKHR = false; 423 424 // GL_EXT_texture_compression_bptc 425 bool textureCompressionBptcEXT = false; 426 427 // GL_EXT_texture_compression_dxt1 428 bool textureCompressionDxt1EXT = false; 429 430 // GL_IMG_texture_compression_pvrtc 431 bool textureCompressionPvrtcIMG = false; 432 433 // GL_IMG_texture_compression_pvrtc2 434 bool textureCompressionPvrtc2IMG = false; 435 436 // GL_EXT_texture_compression_rgtc 437 bool textureCompressionRgtcEXT = false; 438 439 // GL_EXT_texture_compression_s3tc 440 bool textureCompressionS3tcEXT = false; 441 442 // GL_EXT_texture_compression_s3tc_srgb 443 bool textureCompressionS3tcSrgbEXT = false; 444 445 // GL_EXT_texture_cube_map_array 446 bool textureCubeMapArrayEXT = false; 447 448 // GL_OES_texture_cube_map_array 449 bool textureCubeMapArrayOES = false; 450 451 // GL_EXT_texture_filter_anisotropic 452 bool textureFilterAnisotropicEXT = false; 453 454 // GL_OES_texture_float 455 bool textureFloatOES = false; 456 457 // GL_OES_texture_float_linear 458 bool textureFloatLinearOES = false; 459 460 // GL_EXT_texture_format_BGRA8888 461 bool textureFormatBGRA8888EXT = false; 462 463 // GL_EXT_texture_format_sRGB_override 464 bool textureFormatSRGBOverrideEXT = false; 465 466 // GL_OES_texture_half_float 467 bool textureHalfFloatOES = false; 468 469 // GL_OES_texture_half_float_linear 470 bool textureHalfFloatLinearOES = false; 471 472 // GL_EXT_texture_norm16 473 bool textureNorm16EXT = false; 474 475 // GL_OES_texture_npot 476 bool textureNpotOES = false; 477 478 // GL_EXT_texture_rg 479 bool textureRgEXT = false; 480 481 // GL_EXT_texture_sRGB_decode 482 bool textureSRGBDecodeEXT = false; 483 484 // GL_EXT_texture_sRGB_R8 485 bool textureSRGBR8EXT = false; 486 487 // GL_EXT_texture_sRGB_RG8 488 bool textureSRGBRG8EXT = false; 489 490 // GL_OES_texture_stencil8 491 bool textureStencil8OES = false; 492 493 // GL_EXT_texture_storage 494 bool textureStorageEXT = false; 495 496 // GL_OES_texture_storage_multisample_2d_array 497 bool textureStorageMultisample2dArrayOES = false; 498 499 // GL_EXT_texture_type_2_10_10_10_REV 500 bool textureType2101010REVEXT = false; 501 502 // GL_ANGLE_texture_usage 503 bool textureUsageANGLE = false; 504 505 // GL_ANGLE_translated_shader_source 506 bool translatedShaderSourceANGLE = false; 507 508 // GL_EXT_unpack_subimage 509 bool unpackSubimageEXT = false; 510 511 // GL_OES_vertex_array_object 512 bool vertexArrayObjectOES = false; 513 514 // GL_OES_vertex_half_float 515 bool vertexHalfFloatOES = false; 516 517 // GL_OES_vertex_type_10_10_10_2 518 bool vertexType1010102OES = false; 519 520 // GL_WEBGL_video_texture 521 bool videoTextureWEBGL = false; 522 523 // GL_EXT_YUV_target 524 bool YUVTargetEXT = false; 525 526 // ANGLE unofficial extensions 527 // --------------------------- 528 529 // GL_ANGLE_base_vertex_base_instance 530 bool baseVertexBaseInstanceANGLE = false; 531 532 // GL_ANGLE_base_vertex_base_instance_shader_builtin 533 bool baseVertexBaseInstanceShaderBuiltinANGLE = false; 534 535 // GL_CHROMIUM_bind_generates_resource 536 bool bindGeneratesResourceCHROMIUM = false; 537 538 // GL_CHROMIUM_bind_uniform_location 539 bool bindUniformLocationCHROMIUM = false; 540 541 // GL_ANGLE_client_arrays 542 bool clientArraysANGLE = false; 543 544 // GL_CHROMIUM_color_buffer_float_rgb 545 bool colorBufferFloatRgbCHROMIUM = false; 546 547 // GL_CHROMIUM_color_buffer_float_rgba 548 bool colorBufferFloatRgbaCHROMIUM = false; 549 550 // GL_ANGLE_compressed_texture_etc 551 bool compressedTextureEtcANGLE = false; 552 553 // GL_CHROMIUM_copy_compressed_texture 554 bool copyCompressedTextureCHROMIUM = false; 555 556 // GL_CHROMIUM_copy_texture 557 bool copyTextureCHROMIUM = false; 558 559 // GL_ANGLE_copy_texture_3d 560 bool copyTexture3dANGLE = false; 561 562 // GL_CHROMIUM_framebuffer_mixed_samples 563 bool framebufferMixedSamplesCHROMIUM = false; 564 565 // GL_ANGLE_framebuffer_multisample 566 bool framebufferMultisampleANGLE = false; 567 568 // GL_ANGLE_get_image 569 bool getImageANGLE = false; 570 571 // GL_ANGLE_get_serialized_context_string 572 bool getSerializedContextStringANGLE = false; 573 574 // GL_ANGLE_get_tex_level_parameter 575 bool getTexLevelParameterANGLE = false; 576 577 // GL_CHROMIUM_lose_context 578 bool loseContextCHROMIUM = false; 579 580 // GL_ANGLE_lossy_etc_decode 581 bool lossyEtcDecodeANGLE = false; 582 583 // GL_ANGLE_memory_object_flags 584 bool memoryObjectFlagsANGLE = false; 585 586 // GL_ANGLE_memory_object_fuchsia 587 bool memoryObjectFuchsiaANGLE = false; 588 589 // GL_ANGLE_memory_size 590 bool memorySizeANGLE = false; 591 592 // GL_ANGLE_multi_draw 593 bool multiDrawANGLE = false; 594 595 // GL_ANGLE_multiview_multisample 596 bool multiviewMultisampleANGLE = false; 597 598 // GL_ANGLE_program_binary 599 bool programBinaryANGLE = false; 600 601 // GL_ANGLE_program_cache_control 602 bool programCacheControlANGLE = false; 603 604 // GL_ANGLE_provoking_vertex 605 bool provokingVertexANGLE = false; 606 607 // GL_ANGLE_relaxed_vertex_attribute_type 608 bool relaxedVertexAttributeTypeANGLE = false; 609 610 // GL_ANGLE_request_extension 611 bool requestExtensionANGLE = false; 612 613 // GL_ANGLE_rgbx_internal_format 614 bool rgbxInternalFormatANGLE = false; 615 616 // GL_ANGLE_robust_client_memory 617 bool robustClientMemoryANGLE = false; 618 619 // GL_ANGLE_robust_fragment_shader_output 620 bool robustFragmentShaderOutputANGLE = false; 621 622 // GL_ANGLE_robust_resource_initialization 623 bool robustResourceInitializationANGLE = false; 624 625 // GL_ANGLE_semaphore_fuchsia 626 bool semaphoreFuchsiaANGLE = false; 627 628 // GL_CHROMIUM_sync_query 629 bool syncQueryCHROMIUM = false; 630 631 // GL_ANGLE_texture_compression_dxt3 632 bool textureCompressionDxt3ANGLE = false; 633 634 // GL_ANGLE_texture_compression_dxt5 635 bool textureCompressionDxt5ANGLE = false; 636 637 // GL_ANGLE_texture_external_update 638 bool textureExternalUpdateANGLE = false; 639 640 // GL_CHROMIUM_texture_filtering_hint 641 bool textureFilteringHintCHROMIUM = false; 642 643 // GL_ANGLE_texture_multisample 644 bool textureMultisampleANGLE = false; 645 646 // GL_ANGLE_texture_rectangle 647 bool textureRectangleANGLE = false; 648 649 // GL_ANGLE_vulkan_image 650 bool vulkanImageANGLE = false; 651 652 // GL_ANGLE_webgl_compatibility 653 bool webglCompatibilityANGLE = false; 654 655 // GL_ANGLE_yuv_internal_format 656 bool yuvInternalFormatANGLE = false; 657 658 // GLES 1.0 and 1.1 extensions 659 // --------------------------- 660 661 // GL_OES_draw_texture 662 bool drawTextureOES = false; 663 664 // GL_OES_framebuffer_object 665 bool framebufferObjectOES = false; 666 667 // GL_OES_matrix_palette 668 bool matrixPaletteOES = false; 669 670 // GL_OES_point_size_array 671 bool pointSizeArrayOES = false; 672 673 // GL_OES_point_sprite 674 bool pointSpriteOES = false; 675 676 // GL_OES_query_matrix 677 bool queryMatrixOES = false; 678 679 // GL_OES_texture_cube_map 680 bool textureCubeMapOES = false; 681 }; 682 } // namespace gl 683 684 #endif // LIBANGLE_GLES_EXTENSIONS_AUTOGEN_H_ 685