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