• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 //
2 // Copyright 2002 The ANGLE Project Authors. All rights reserved.
3 // Use of this source code is governed by a BSD-style license that can be
4 // found in the LICENSE file.
5 //
6 // ExtensionBehavior.h: Extension name enumeration and data structures for storing extension
7 // behavior.
8 
9 #ifndef COMPILER_TRANSLATOR_EXTENSIONBEHAVIOR_H_
10 #define COMPILER_TRANSLATOR_EXTENSIONBEHAVIOR_H_
11 
12 #include <cstdint>
13 #include <map>
14 
15 namespace sh
16 {
17 
18 enum class TExtension : uint8_t
19 {
20     UNDEFINED,  // Special value used to indicate no extension.
21 
22     ANDROID_extension_pack_es31a,
23     ANGLE_base_vertex_base_instance_shader_builtin,
24     ANGLE_clip_cull_distance,
25     ANGLE_multi_draw,
26     ANGLE_shader_pixel_local_storage,
27     ANGLE_texture_multisample,
28     APPLE_clip_distance,
29     ARB_fragment_shader_interlock,
30     ARB_texture_rectangle,
31     ARM_shader_framebuffer_fetch,
32     EXT_YUV_target,
33     EXT_blend_func_extended,
34     EXT_clip_cull_distance,
35     EXT_conservative_depth,
36     EXT_draw_buffers,
37     EXT_frag_depth,
38     EXT_geometry_shader,
39     EXT_gpu_shader5,
40     EXT_primitive_bounding_box,
41     EXT_separate_shader_objects,
42     EXT_shader_framebuffer_fetch,
43     EXT_shader_framebuffer_fetch_non_coherent,
44     EXT_shader_io_blocks,
45     EXT_shader_non_constant_global_initializers,
46     EXT_shader_texture_lod,
47     EXT_shadow_samplers,
48     EXT_tessellation_shader,
49     EXT_texture_buffer,
50     EXT_texture_cube_map_array,
51     INTEL_fragment_shader_ordering,
52     KHR_blend_equation_advanced,
53     NV_EGL_stream_consumer_external,
54     NV_fragment_shader_interlock,
55     NV_shader_framebuffer_fetch,
56     NV_shader_noperspective_interpolation,
57     OES_EGL_image_external,
58     OES_EGL_image_external_essl3,
59     OES_geometry_shader,
60     OES_primitive_bounding_box,
61     OES_sample_variables,
62     OES_shader_image_atomic,
63     OES_shader_io_blocks,
64     OES_shader_multisample_interpolation,
65     OES_standard_derivatives,
66     OES_texture_3D,
67     OES_texture_buffer,
68     OES_texture_cube_map_array,
69     OES_texture_storage_multisample_2d_array,
70     OVR_multiview,
71     OVR_multiview2,
72     WEBGL_video_texture,
73 };
74 
75 enum TBehavior : uint8_t
76 {
77     EBhRequire,
78     EBhEnable,
79     EBhWarn,
80     EBhDisable,
81     EBhUndefined
82 };
83 
84 const char *GetExtensionNameString(TExtension extension);
85 TExtension GetExtensionByName(const char *extension);
86 bool CheckExtensionVersion(TExtension extension, int version);
87 
88 const char *GetBehaviorString(TBehavior b);
89 
90 // Mapping between extension id and behavior.
91 typedef std::map<TExtension, TBehavior> TExtensionBehavior;
92 
93 bool IsExtensionEnabled(const TExtensionBehavior &extBehavior, TExtension extension);
94 
95 }  // namespace sh
96 
97 #endif  // COMPILER_TRANSLATOR_EXTENSIONBEHAVIOR_H_
98