| // | |
| // Copyright 2002 The ANGLE Project Authors. All rights reserved. | |
| // Use of this source code is governed by a BSD-style license that can be | |
| // found in the LICENSE file. | |
| // | |
| // ExtensionBehavior.h: Extension name enumeration and data structures for storing extension | |
| // behavior. | |
| #ifndef COMPILER_TRANSLATOR_EXTENSIONBEHAVIOR_H_ | |
| #define COMPILER_TRANSLATOR_EXTENSIONBEHAVIOR_H_ | |
| #include <map> | |
| namespace sh | |
| { | |
| enum class TExtension | |
| { | |
| UNDEFINED, // Special value used to indicate no extension. | |
| ARB_texture_rectangle, | |
| ANGLE_texture_multisample, | |
| ARM_shader_framebuffer_fetch, | |
| EXT_blend_func_extended, | |
| EXT_draw_buffers, | |
| EXT_frag_depth, | |
| EXT_geometry_shader, | |
| EXT_shader_framebuffer_fetch, | |
| EXT_shader_texture_lod, | |
| EXT_YUV_target, | |
| NV_EGL_stream_consumer_external, | |
| NV_shader_framebuffer_fetch, | |
| OES_EGL_image_external, | |
| OES_EGL_image_external_essl3, | |
| OES_standard_derivatives, | |
| OES_texture_storage_multisample_2d_array, | |
| OES_texture_3D, | |
| OVR_multiview, | |
| OVR_multiview2, | |
| ANGLE_multi_draw, | |
| ANGLE_base_vertex_base_instance | |
| }; | |
| enum TBehavior | |
| { | |
| EBhRequire, | |
| EBhEnable, | |
| EBhWarn, | |
| EBhDisable, | |
| EBhUndefined | |
| }; | |
| const char *GetExtensionNameString(TExtension extension); | |
| TExtension GetExtensionByName(const char *extension); | |
| const char *GetBehaviorString(TBehavior b); | |
| // Mapping between extension id and behavior. | |
| typedef std::map<TExtension, TBehavior> TExtensionBehavior; | |
| bool IsExtensionEnabled(const TExtensionBehavior &extBehavior, TExtension extension); | |
| } // namespace sh | |
| #endif // COMPILER_TRANSLATOR_EXTENSIONBEHAVIOR_H_ |