#include <stdbool.h>
+/* Project-wide (GL and Vulkan) maximum. */
+#define MAX_DRAW_BUFFERS 8
+
#ifdef __cplusplus
extern "C" {
#endif
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:
#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)
#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))
/*@}*/
*/
/*@{*/
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,
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 */
/*@}*/
/**
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,
SYSTEM_VALUE_LOCAL_GROUP_SIZE,
SYSTEM_VALUE_GLOBAL_GROUP_SIZE,
SYSTEM_VALUE_WORK_DIM,
+ SYSTEM_VALUE_USER_DATA_AMD,
/*@}*/
/** Required for VK_KHR_device_group */
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;
INTERP_MODE_SMOOTH,
INTERP_MODE_FLAT,
INTERP_MODE_NOPERSPECTIVE,
+ INTERP_MODE_EXPLICIT,
INTERP_MODE_COUNT /**< Number of interpolation qualifiers */
};
* a lack of ACCESS_COHERENT and ACCESS_VOLATILE.
*/
ACCESS_CAN_REORDER = (1 << 6),
+
+ /** Use as little cache space as possible. */
+ ACCESS_STREAM_CACHE_POLICY = (1 << 7),
};
/**
*/
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
{
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,
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,
+};
+
#ifdef __cplusplus
} /* extern "C" */
#endif