X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fcompiler%2Fshader_enums.h;h=9a04487e268bbd30f0b90ce680bd6bdcb05051e8;hb=e7fbec0e090be3e796f7a38819fb99bbc1744787;hp=20e62da5b11d220aee369a1ddc32c44a2657b1be;hpb=1b881852bcc61f20ca46a27e29f4503b93f443be;p=mesa.git diff --git a/src/compiler/shader_enums.h b/src/compiler/shader_enums.h index 20e62da5b11..9a04487e268 100644 --- a/src/compiler/shader_enums.h +++ b/src/compiler/shader_enums.h @@ -28,6 +28,9 @@ #include +/* Project-wide (GL and Vulkan) maximum. */ +#define MAX_DRAW_BUFFERS 8 + #ifdef __cplusplus extern "C" { #endif @@ -258,6 +261,7 @@ typedef enum VARYING_SLOT_BOUNDING_BOX0, /* Only appears as TCS output. */ VARYING_SLOT_BOUNDING_BOX1, /* Only appears as TCS output. */ VARYING_SLOT_VIEW_INDEX, + VARYING_SLOT_VIEWPORT_MASK, /* Does not appear in FS */ VARYING_SLOT_VAR0, /* First generic varying slot */ /* the remaining are simply for the benefit of gl_varying_slot_name() * and not to be construed as an upper bound: @@ -325,6 +329,10 @@ const char *gl_varying_slot_name(gl_varying_slot slot); #define VARYING_BIT_PSIZ BITFIELD64_BIT(VARYING_SLOT_PSIZ) #define VARYING_BIT_BFC0 BITFIELD64_BIT(VARYING_SLOT_BFC0) #define VARYING_BIT_BFC1 BITFIELD64_BIT(VARYING_SLOT_BFC1) +#define VARYING_BITS_COLOR (VARYING_BIT_COL0 | \ + VARYING_BIT_COL1 | \ + VARYING_BIT_BFC0 | \ + VARYING_BIT_BFC1) #define VARYING_BIT_EDGE BITFIELD64_BIT(VARYING_SLOT_EDGE) #define VARYING_BIT_CLIP_VERTEX BITFIELD64_BIT(VARYING_SLOT_CLIP_VERTEX) #define VARYING_BIT_CLIP_DIST0 BITFIELD64_BIT(VARYING_SLOT_CLIP_DIST0) @@ -340,6 +348,7 @@ const char *gl_varying_slot_name(gl_varying_slot slot); #define VARYING_BIT_TESS_LEVEL_INNER BITFIELD64_BIT(VARYING_SLOT_TESS_LEVEL_INNER) #define VARYING_BIT_BOUNDING_BOX0 BITFIELD64_BIT(VARYING_SLOT_BOUNDING_BOX0) #define VARYING_BIT_BOUNDING_BOX1 BITFIELD64_BIT(VARYING_SLOT_BOUNDING_BOX1) +#define VARYING_BIT_VIEWPORT_MASK BITFIELD64_BIT(VARYING_SLOT_VIEWPORT_MASK) #define VARYING_BIT_VAR(V) BITFIELD64_BIT(VARYING_SLOT_VAR0 + (V)) /*@}*/ @@ -576,6 +585,7 @@ typedef enum /*@{*/ SYSTEM_VALUE_FRAG_COORD, SYSTEM_VALUE_POINT_COORD, + SYSTEM_VALUE_LINE_COORD, /**< Coord along axis perpendicular to line */ SYSTEM_VALUE_FRONT_FACE, SYSTEM_VALUE_SAMPLE_ID, SYSTEM_VALUE_SAMPLE_POS, @@ -594,6 +604,8 @@ typedef enum SYSTEM_VALUE_PRIMITIVE_ID, SYSTEM_VALUE_TESS_LEVEL_OUTER, /**< TES input */ SYSTEM_VALUE_TESS_LEVEL_INNER, /**< TES input */ + SYSTEM_VALUE_TESS_LEVEL_OUTER_DEFAULT, /**< TCS input for passthru TCS */ + SYSTEM_VALUE_TESS_LEVEL_INNER_DEFAULT, /**< TCS input for passthru TCS */ /*@}*/ /** @@ -603,6 +615,7 @@ typedef enum SYSTEM_VALUE_LOCAL_INVOCATION_ID, SYSTEM_VALUE_LOCAL_INVOCATION_INDEX, SYSTEM_VALUE_GLOBAL_INVOCATION_ID, + SYSTEM_VALUE_BASE_GLOBAL_INVOCATION_ID, SYSTEM_VALUE_GLOBAL_INVOCATION_INDEX, SYSTEM_VALUE_WORK_GROUP_ID, SYSTEM_VALUE_NUM_WORK_GROUPS, @@ -625,16 +638,28 @@ typedef enum SYSTEM_VALUE_VERTEX_CNT, /** - * Driver internal varying-coords, used for varying-fetch instructions. - * Not externally visible. + * Required for AMD_shader_explicit_vertex_parameter and also used for + * varying-fetch instructions. * * The _SIZE value is "primitive size", used to scale i/j in primitive * space to pixel space. */ - SYSTEM_VALUE_BARYCENTRIC_PIXEL, - SYSTEM_VALUE_BARYCENTRIC_SAMPLE, - SYSTEM_VALUE_BARYCENTRIC_CENTROID, - SYSTEM_VALUE_BARYCENTRIC_SIZE, + SYSTEM_VALUE_BARYCENTRIC_PERSP_PIXEL, + SYSTEM_VALUE_BARYCENTRIC_PERSP_SAMPLE, + SYSTEM_VALUE_BARYCENTRIC_PERSP_CENTROID, + SYSTEM_VALUE_BARYCENTRIC_PERSP_SIZE, + SYSTEM_VALUE_BARYCENTRIC_LINEAR_PIXEL, + SYSTEM_VALUE_BARYCENTRIC_LINEAR_CENTROID, + SYSTEM_VALUE_BARYCENTRIC_LINEAR_SAMPLE, + SYSTEM_VALUE_BARYCENTRIC_PULL_MODEL, + + /** + * IR3 specific geometry shader and tesselation control shader system + * values that packs invocation id, thread id and vertex id. Having this + * as a nir level system value lets us do the unpacking in nir. + */ + SYSTEM_VALUE_GS_HEADER_IR3, + SYSTEM_VALUE_TCS_HEADER_IR3, SYSTEM_VALUE_MAX /**< Number of values */ } gl_system_value; @@ -654,6 +679,8 @@ enum glsl_interp_mode INTERP_MODE_SMOOTH, INTERP_MODE_FLAT, INTERP_MODE_NOPERSPECTIVE, + INTERP_MODE_EXPLICIT, + INTERP_MODE_COLOR, /**< glShadeModel determines the interp mode */ INTERP_MODE_COUNT /**< Number of interpolation qualifiers */ }; @@ -747,25 +774,22 @@ enum gl_access_qualifier */ enum gl_advanced_blend_mode { - BLEND_NONE = 0x0000, - - BLEND_MULTIPLY = 0x0001, - BLEND_SCREEN = 0x0002, - BLEND_OVERLAY = 0x0004, - BLEND_DARKEN = 0x0008, - BLEND_LIGHTEN = 0x0010, - BLEND_COLORDODGE = 0x0020, - BLEND_COLORBURN = 0x0040, - BLEND_HARDLIGHT = 0x0080, - BLEND_SOFTLIGHT = 0x0100, - BLEND_DIFFERENCE = 0x0200, - BLEND_EXCLUSION = 0x0400, - BLEND_HSL_HUE = 0x0800, - BLEND_HSL_SATURATION = 0x1000, - BLEND_HSL_COLOR = 0x2000, - BLEND_HSL_LUMINOSITY = 0x4000, - - BLEND_ALL = 0x7fff, + BLEND_NONE = 0, + BLEND_MULTIPLY, + BLEND_SCREEN, + BLEND_OVERLAY, + BLEND_DARKEN, + BLEND_LIGHTEN, + BLEND_COLORDODGE, + BLEND_COLORBURN, + BLEND_HARDLIGHT, + BLEND_SOFTLIGHT, + BLEND_DIFFERENCE, + BLEND_EXCLUSION, + BLEND_HSL_HUE, + BLEND_HSL_SATURATION, + BLEND_HSL_COLOR, + BLEND_HSL_LUMINOSITY, }; enum blend_func @@ -781,8 +805,10 @@ enum blend_factor { BLEND_FACTOR_ZERO, BLEND_FACTOR_SRC_COLOR, + BLEND_FACTOR_SRC1_COLOR, BLEND_FACTOR_DST_COLOR, BLEND_FACTOR_SRC_ALPHA, + BLEND_FACTOR_SRC1_ALPHA, BLEND_FACTOR_DST_ALPHA, BLEND_FACTOR_CONSTANT_COLOR, BLEND_FACTOR_CONSTANT_ALPHA, @@ -855,6 +881,43 @@ enum gl_derivative_group { DERIVATIVE_GROUP_LINEAR, }; +enum float_controls +{ + FLOAT_CONTROLS_DEFAULT_FLOAT_CONTROL_MODE = 0x0000, + FLOAT_CONTROLS_DENORM_PRESERVE_FP16 = 0x0001, + FLOAT_CONTROLS_DENORM_PRESERVE_FP32 = 0x0002, + FLOAT_CONTROLS_DENORM_PRESERVE_FP64 = 0x0004, + FLOAT_CONTROLS_DENORM_FLUSH_TO_ZERO_FP16 = 0x0008, + FLOAT_CONTROLS_DENORM_FLUSH_TO_ZERO_FP32 = 0x0010, + FLOAT_CONTROLS_DENORM_FLUSH_TO_ZERO_FP64 = 0x0020, + FLOAT_CONTROLS_SIGNED_ZERO_INF_NAN_PRESERVE_FP16 = 0x0040, + FLOAT_CONTROLS_SIGNED_ZERO_INF_NAN_PRESERVE_FP32 = 0x0080, + FLOAT_CONTROLS_SIGNED_ZERO_INF_NAN_PRESERVE_FP64 = 0x0100, + FLOAT_CONTROLS_ROUNDING_MODE_RTE_FP16 = 0x0200, + FLOAT_CONTROLS_ROUNDING_MODE_RTE_FP32 = 0x0400, + FLOAT_CONTROLS_ROUNDING_MODE_RTE_FP64 = 0x0800, + FLOAT_CONTROLS_ROUNDING_MODE_RTZ_FP16 = 0x1000, + FLOAT_CONTROLS_ROUNDING_MODE_RTZ_FP32 = 0x2000, + FLOAT_CONTROLS_ROUNDING_MODE_RTZ_FP64 = 0x4000, +}; + +/** +* Enums to describe sampler properties used by OpenCL's inline constant samplers. +* These values match the meanings described in the SPIR-V spec. +*/ +enum cl_sampler_addressing_mode { + SAMPLER_ADDRESSING_MODE_NONE = 0, + SAMPLER_ADDRESSING_MODE_CLAMP_TO_EDGE = 1, + SAMPLER_ADDRESSING_MODE_CLAMP = 2, + SAMPLER_ADDRESSING_MODE_REPEAT = 3, + SAMPLER_ADDRESSING_MODE_REPEAT_MIRRORED = 4, +}; + +enum cl_sampler_filter_mode { + SAMPLER_FILTER_MODE_NEAREST = 0, + SAMPLER_FILTER_MODE_LINEAR = 1, +}; + #ifdef __cplusplus } /* extern "C" */ #endif