mesa: add ARB_texture_buffer_range glTextureBufferRangeEXT function
[mesa.git] / src / mesa / main / menums.h
1 /*
2 * Mesa 3-D graphics library
3 *
4 * Copyright (C) 1999-2008 Brian Paul All Rights Reserved.
5 * Copyright (C) 2009 VMware, Inc. All Rights Reserved.
6 * Copyright (C) 2018 Advanced Micro Devices, Inc. All Rights Reserved.
7 *
8 * Permission is hereby granted, free of charge, to any person obtaining a
9 * copy of this software and associated documentation files (the "Software"),
10 * to deal in the Software without restriction, including without limitation
11 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
12 * and/or sell copies of the Software, and to permit persons to whom the
13 * Software is furnished to do so, subject to the following conditions:
14 *
15 * The above copyright notice and this permission notice shall be included
16 * in all copies or substantial portions of the Software.
17 *
18 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
19 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
21 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
22 * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
23 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
24 * OTHER DEALINGS IN THE SOFTWARE.
25 */
26
27 /**
28 * \file menums.h
29 * Often used definitions and enums.
30 */
31
32 #ifndef MENUMS_H
33 #define MENUMS_H
34
35 #include "util/macros.h"
36
37 /**
38 * Enum for the OpenGL APIs we know about and may support.
39 *
40 * NOTE: This must match the api_enum table in
41 * src/mesa/main/get_hash_generator.py
42 */
43 typedef enum
44 {
45 API_OPENGL_COMPAT, /* legacy / compatibility contexts */
46 API_OPENGLES,
47 API_OPENGLES2,
48 API_OPENGL_CORE,
49 API_OPENGL_LAST = API_OPENGL_CORE
50 } gl_api;
51
52 /**
53 * An index for each type of texture object. These correspond to the GL
54 * texture target enums, such as GL_TEXTURE_2D, GL_TEXTURE_CUBE_MAP, etc.
55 * Note: the order is from highest priority to lowest priority.
56 */
57 typedef enum
58 {
59 TEXTURE_2D_MULTISAMPLE_INDEX,
60 TEXTURE_2D_MULTISAMPLE_ARRAY_INDEX,
61 TEXTURE_CUBE_ARRAY_INDEX,
62 TEXTURE_BUFFER_INDEX,
63 TEXTURE_2D_ARRAY_INDEX,
64 TEXTURE_1D_ARRAY_INDEX,
65 TEXTURE_EXTERNAL_INDEX,
66 TEXTURE_CUBE_INDEX,
67 TEXTURE_3D_INDEX,
68 TEXTURE_RECT_INDEX,
69 TEXTURE_2D_INDEX,
70 TEXTURE_1D_INDEX,
71 NUM_TEXTURE_TARGETS
72 } gl_texture_index;
73
74 /**
75 * Remapped color logical operations
76 *
77 * With the exception of NVIDIA hardware, which consumes the OpenGL enumerants
78 * directly, everything wants this mapping of color logical operations.
79 *
80 * Fun fact: These values are just the bit-reverse of the low-nibble of the GL
81 * enumerant values (i.e., `GL_NOOP & 0x0f` is `b0101' while
82 * \c COLOR_LOGICOP_NOOP is `b1010`).
83 *
84 * Fun fact #2: These values are just an encoding of the operation as a table
85 * of bit values. The result of the logic op is:
86 *
87 * result_bit = (logic_op >> (2 * src_bit + dst_bit)) & 1
88 *
89 * For the GL enums, the result is:
90 *
91 * result_bit = logic_op & (1 << (2 * src_bit + dst_bit))
92 */
93 enum PACKED gl_logicop_mode {
94 COLOR_LOGICOP_CLEAR = 0,
95 COLOR_LOGICOP_NOR = 1,
96 COLOR_LOGICOP_AND_INVERTED = 2,
97 COLOR_LOGICOP_COPY_INVERTED = 3,
98 COLOR_LOGICOP_AND_REVERSE = 4,
99 COLOR_LOGICOP_INVERT = 5,
100 COLOR_LOGICOP_XOR = 6,
101 COLOR_LOGICOP_NAND = 7,
102 COLOR_LOGICOP_AND = 8,
103 COLOR_LOGICOP_EQUIV = 9,
104 COLOR_LOGICOP_NOOP = 10,
105 COLOR_LOGICOP_OR_INVERTED = 11,
106 COLOR_LOGICOP_COPY = 12,
107 COLOR_LOGICOP_OR_REVERSE = 13,
108 COLOR_LOGICOP_OR = 14,
109 COLOR_LOGICOP_SET = 15
110 };
111
112 /**
113 * Indexes for all renderbuffers
114 */
115 typedef enum
116 {
117 /* the four standard color buffers */
118 BUFFER_FRONT_LEFT,
119 BUFFER_BACK_LEFT,
120 BUFFER_FRONT_RIGHT,
121 BUFFER_BACK_RIGHT,
122 BUFFER_DEPTH,
123 BUFFER_STENCIL,
124 BUFFER_ACCUM,
125 /* optional aux buffer */
126 BUFFER_AUX0,
127 /* generic renderbuffers */
128 BUFFER_COLOR0,
129 BUFFER_COLOR1,
130 BUFFER_COLOR2,
131 BUFFER_COLOR3,
132 BUFFER_COLOR4,
133 BUFFER_COLOR5,
134 BUFFER_COLOR6,
135 BUFFER_COLOR7,
136 BUFFER_COUNT,
137 BUFFER_NONE = -1,
138 } gl_buffer_index;
139
140 typedef enum
141 {
142 MAP_USER,
143 MAP_INTERNAL,
144 MAP_COUNT
145 } gl_map_buffer_index;
146
147 /** @{
148 *
149 * These are a mapping of the GL_ARB_debug_output/GL_KHR_debug enums
150 * to small enums suitable for use as an array index.
151 */
152
153 enum mesa_debug_source
154 {
155 MESA_DEBUG_SOURCE_API,
156 MESA_DEBUG_SOURCE_WINDOW_SYSTEM,
157 MESA_DEBUG_SOURCE_SHADER_COMPILER,
158 MESA_DEBUG_SOURCE_THIRD_PARTY,
159 MESA_DEBUG_SOURCE_APPLICATION,
160 MESA_DEBUG_SOURCE_OTHER,
161 MESA_DEBUG_SOURCE_COUNT
162 };
163
164 enum mesa_debug_type
165 {
166 MESA_DEBUG_TYPE_ERROR,
167 MESA_DEBUG_TYPE_DEPRECATED,
168 MESA_DEBUG_TYPE_UNDEFINED,
169 MESA_DEBUG_TYPE_PORTABILITY,
170 MESA_DEBUG_TYPE_PERFORMANCE,
171 MESA_DEBUG_TYPE_OTHER,
172 MESA_DEBUG_TYPE_MARKER,
173 MESA_DEBUG_TYPE_PUSH_GROUP,
174 MESA_DEBUG_TYPE_POP_GROUP,
175 MESA_DEBUG_TYPE_COUNT
176 };
177
178 enum mesa_debug_severity
179 {
180 MESA_DEBUG_SEVERITY_LOW,
181 MESA_DEBUG_SEVERITY_MEDIUM,
182 MESA_DEBUG_SEVERITY_HIGH,
183 MESA_DEBUG_SEVERITY_NOTIFICATION,
184 MESA_DEBUG_SEVERITY_COUNT
185 };
186
187 /** @} */
188
189 #endif