blob: d0a1dc487401d177b48414262fa91a3bfbe95354 [file] [log] [blame]
/*
* 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