| /* |
| * Mesa 3-D graphics library |
| * |
| * Copyright (C) 1999-2008 Brian Paul All Rights Reserved. |
| * Copyright (C) 2009 VMware, Inc. All Rights Reserved. |
| * Copyright (C) 2018 Advanced Micro Devices, Inc. All Rights Reserved. |
| * |
| * Permission is hereby granted, free of charge, to any person obtaining a |
| * copy of this software and associated documentation files (the "Software"), |
| * to deal in the Software without restriction, including without limitation |
| * the rights to use, copy, modify, merge, publish, distribute, sublicense, |
| * and/or sell copies of the Software, and to permit persons to whom the |
| * Software is furnished to do so, subject to the following conditions: |
| * |
| * The above copyright notice and this permission notice shall be included |
| * in all copies or substantial portions of the Software. |
| * |
| * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS |
| * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
| * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL |
| * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR |
| * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, |
| * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR |
| * OTHER DEALINGS IN THE SOFTWARE. |
| */ |
| |
| /** |
| * \file menums.h |
| * Often used definitions and enums. |
| */ |
| |
| #ifndef MENUMS_H |
| #define MENUMS_H |
| |
| #include "util/macros.h" |
| |
| /** |
| * Enum for the OpenGL APIs we know about and may support. |
| * |
| * NOTE: This must match the api_enum table in |
| * src/mesa/main/get_hash_generator.py |
| */ |
| typedef enum |
| { |
| API_OPENGL_COMPAT, /* legacy / compatibility contexts */ |
| API_OPENGLES, |
| API_OPENGLES2, |
| API_OPENGL_CORE, |
| API_OPENGL_LAST = API_OPENGL_CORE |
| } gl_api; |
| |
| /** |
| * An index for each type of texture object. These correspond to the GL |
| * texture target enums, such as GL_TEXTURE_2D, GL_TEXTURE_CUBE_MAP, etc. |
| * Note: the order is from highest priority to lowest priority. |
| */ |
| typedef enum |
| { |
| TEXTURE_2D_MULTISAMPLE_INDEX, |
| TEXTURE_2D_MULTISAMPLE_ARRAY_INDEX, |
| TEXTURE_CUBE_ARRAY_INDEX, |
| TEXTURE_BUFFER_INDEX, |
| TEXTURE_2D_ARRAY_INDEX, |
| TEXTURE_1D_ARRAY_INDEX, |
| TEXTURE_EXTERNAL_INDEX, |
| TEXTURE_CUBE_INDEX, |
| TEXTURE_3D_INDEX, |
| TEXTURE_RECT_INDEX, |
| TEXTURE_2D_INDEX, |
| TEXTURE_1D_INDEX, |
| NUM_TEXTURE_TARGETS |
| } gl_texture_index; |
| |
| /** |
| * Remapped color logical operations |
| * |
| * With the exception of NVIDIA hardware, which consumes the OpenGL enumerants |
| * directly, everything wants this mapping of color logical operations. |
| * |
| * Fun fact: These values are just the bit-reverse of the low-nibble of the GL |
| * enumerant values (i.e., `GL_NOOP & 0x0f` is `b0101' while |
| * \c COLOR_LOGICOP_NOOP is `b1010`). |
| * |
| * Fun fact #2: These values are just an encoding of the operation as a table |
| * of bit values. The result of the logic op is: |
| * |
| * result_bit = (logic_op >> (2 * src_bit + dst_bit)) & 1 |
| * |
| * For the GL enums, the result is: |
| * |
| * result_bit = logic_op & (1 << (2 * src_bit + dst_bit)) |
| */ |
| enum PACKED gl_logicop_mode { |
| COLOR_LOGICOP_CLEAR = 0, |
| COLOR_LOGICOP_NOR = 1, |
| COLOR_LOGICOP_AND_INVERTED = 2, |
| COLOR_LOGICOP_COPY_INVERTED = 3, |
| COLOR_LOGICOP_AND_REVERSE = 4, |
| COLOR_LOGICOP_INVERT = 5, |
| COLOR_LOGICOP_XOR = 6, |
| COLOR_LOGICOP_NAND = 7, |
| COLOR_LOGICOP_AND = 8, |
| COLOR_LOGICOP_EQUIV = 9, |
| COLOR_LOGICOP_NOOP = 10, |
| COLOR_LOGICOP_OR_INVERTED = 11, |
| COLOR_LOGICOP_COPY = 12, |
| COLOR_LOGICOP_OR_REVERSE = 13, |
| COLOR_LOGICOP_OR = 14, |
| COLOR_LOGICOP_SET = 15 |
| }; |
| |
| /** |
| * Indexes for all renderbuffers |
| */ |
| typedef enum |
| { |
| /* the four standard color buffers */ |
| BUFFER_FRONT_LEFT, |
| BUFFER_BACK_LEFT, |
| BUFFER_FRONT_RIGHT, |
| BUFFER_BACK_RIGHT, |
| BUFFER_DEPTH, |
| BUFFER_STENCIL, |
| BUFFER_ACCUM, |
| /* optional aux buffer */ |
| BUFFER_AUX0, |
| /* generic renderbuffers */ |
| BUFFER_COLOR0, |
| BUFFER_COLOR1, |
| BUFFER_COLOR2, |
| BUFFER_COLOR3, |
| BUFFER_COLOR4, |
| BUFFER_COLOR5, |
| BUFFER_COLOR6, |
| BUFFER_COLOR7, |
| BUFFER_COUNT, |
| BUFFER_NONE = -1, |
| } gl_buffer_index; |
| |
| typedef enum |
| { |
| MAP_USER, |
| MAP_INTERNAL, |
| MAP_GLTHREAD, |
| MAP_COUNT |
| } gl_map_buffer_index; |
| |
| /** @{ |
| * |
| * These are a mapping of the GL_ARB_debug_output/GL_KHR_debug enums |
| * to small enums suitable for use as an array index. |
| */ |
| |
| enum mesa_debug_source |
| { |
| MESA_DEBUG_SOURCE_API, |
| MESA_DEBUG_SOURCE_WINDOW_SYSTEM, |
| MESA_DEBUG_SOURCE_SHADER_COMPILER, |
| MESA_DEBUG_SOURCE_THIRD_PARTY, |
| MESA_DEBUG_SOURCE_APPLICATION, |
| MESA_DEBUG_SOURCE_OTHER, |
| MESA_DEBUG_SOURCE_COUNT |
| }; |
| |
| enum mesa_debug_type |
| { |
| MESA_DEBUG_TYPE_ERROR, |
| MESA_DEBUG_TYPE_DEPRECATED, |
| MESA_DEBUG_TYPE_UNDEFINED, |
| MESA_DEBUG_TYPE_PORTABILITY, |
| MESA_DEBUG_TYPE_PERFORMANCE, |
| MESA_DEBUG_TYPE_OTHER, |
| MESA_DEBUG_TYPE_MARKER, |
| MESA_DEBUG_TYPE_PUSH_GROUP, |
| MESA_DEBUG_TYPE_POP_GROUP, |
| MESA_DEBUG_TYPE_COUNT |
| }; |
| |
| enum mesa_debug_severity |
| { |
| MESA_DEBUG_SEVERITY_LOW, |
| MESA_DEBUG_SEVERITY_MEDIUM, |
| MESA_DEBUG_SEVERITY_HIGH, |
| MESA_DEBUG_SEVERITY_NOTIFICATION, |
| MESA_DEBUG_SEVERITY_COUNT |
| }; |
| |
| /** @} */ |
| |
| #endif |