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