compiler/types: Use a typedef for glsl_type

Most of the code now will see `const glsl_type *` instead of
`const struct glsl_type *`.

Acked-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26708>
This commit is contained in:
Caio Oliveira 2023-12-14 23:15:18 -08:00
parent 550fdc2026
commit 6fccacda1e
2 changed files with 429 additions and 429 deletions

File diff suppressed because it is too large Load diff

View file

@ -35,12 +35,12 @@
#include "util/format/u_format.h"
#include "util/macros.h"
struct glsl_type;
#ifdef __cplusplus
extern "C" {
#endif
typedef struct glsl_type glsl_type;
typedef struct glsl_struct_field glsl_struct_field;
struct _mesa_glsl_parse_state;
struct glsl_symbol_table;
@ -53,11 +53,11 @@ glsl_type_singleton_decref(void);
extern void
_mesa_glsl_initialize_types(struct _mesa_glsl_parse_state *state);
void encode_type_to_blob(struct blob *blob, const struct glsl_type *type);
void encode_type_to_blob(struct blob *blob, const glsl_type *type);
const struct glsl_type *decode_type_from_blob(struct blob_reader *blob);
const glsl_type *decode_type_from_blob(struct blob_reader *blob);
typedef void (*glsl_type_size_align_func)(const struct glsl_type *type,
typedef void (*glsl_type_size_align_func)(const glsl_type *type,
unsigned *size, unsigned *alignment);
enum glsl_base_type {
@ -299,7 +299,7 @@ struct glsl_cmat_description {
uint8_t use; /* enum glsl_cmat_use */
};
const char *glsl_get_type_name(const struct glsl_type *type);
const char *glsl_get_type_name(const glsl_type *type);
struct glsl_type {
uint32_t gl_type;
@ -372,15 +372,15 @@ struct glsl_type {
* Subtype of composite data types.
*/
union {
const struct glsl_type *array; /**< Type of array elements. */
const struct glsl_struct_field *structure; /**< List of struct fields. */
const glsl_type *array; /**< Type of array elements. */
const glsl_struct_field *structure; /**< List of struct fields. */
} fields;
};
#include "builtin_types.h"
struct glsl_struct_field {
const struct glsl_type *type;
const glsl_type *type;
const char *name;
/**
@ -485,7 +485,7 @@ struct glsl_struct_field {
type(_type), name(_name), location(-1), component(-1), offset(-1), \
xfb_buffer(0), xfb_stride(0), image_format(PIPE_FORMAT_NONE), flags(0) \
glsl_struct_field(const struct glsl_type *_type,
glsl_struct_field(const glsl_type *_type,
int _precision,
const char *_name)
: DEFAULT_CONSTRUCTORS(_type, _name)
@ -494,7 +494,7 @@ struct glsl_struct_field {
precision = _precision;
}
glsl_struct_field(const struct glsl_type *_type, const char *_name)
glsl_struct_field(const glsl_type *_type, const char *_name)
: DEFAULT_CONSTRUCTORS(_type, _name)
{
matrix_layout = GLSL_MATRIX_LAYOUT_INHERITED;
@ -511,62 +511,62 @@ struct glsl_struct_field {
#endif
};
static inline enum glsl_base_type glsl_get_base_type(const struct glsl_type *t) { return t->base_type; }
static inline enum glsl_base_type glsl_get_base_type(const glsl_type *t) { return t->base_type; }
static inline unsigned
glsl_get_bit_size(const struct glsl_type *t)
glsl_get_bit_size(const glsl_type *t)
{
return glsl_base_type_get_bit_size(glsl_get_base_type(t));
}
static inline bool glsl_type_is_boolean(const struct glsl_type *t) { return t->base_type == GLSL_TYPE_BOOL; }
static inline bool glsl_type_is_sampler(const struct glsl_type *t) { return t->base_type == GLSL_TYPE_SAMPLER; }
static inline bool glsl_type_is_texture(const struct glsl_type *t) { return t->base_type == GLSL_TYPE_TEXTURE; }
static inline bool glsl_type_is_image(const struct glsl_type *t) { return t->base_type == GLSL_TYPE_IMAGE; }
static inline bool glsl_type_is_atomic_uint(const struct glsl_type *t) { return t->base_type == GLSL_TYPE_ATOMIC_UINT; }
static inline bool glsl_type_is_struct(const struct glsl_type *t) { return t->base_type == GLSL_TYPE_STRUCT; }
static inline bool glsl_type_is_interface(const struct glsl_type *t) { return t->base_type == GLSL_TYPE_INTERFACE; }
static inline bool glsl_type_is_array(const struct glsl_type *t) { return t->base_type == GLSL_TYPE_ARRAY; }
static inline bool glsl_type_is_cmat(const struct glsl_type *t) { return t->base_type == GLSL_TYPE_COOPERATIVE_MATRIX; }
static inline bool glsl_type_is_void(const struct glsl_type *t) { return t->base_type == GLSL_TYPE_VOID; }
static inline bool glsl_type_is_subroutine(const struct glsl_type *t) { return t->base_type == GLSL_TYPE_SUBROUTINE; }
static inline bool glsl_type_is_error(const struct glsl_type *t) { return t->base_type == GLSL_TYPE_ERROR; }
static inline bool glsl_type_is_double(const struct glsl_type *t) { return t->base_type == GLSL_TYPE_DOUBLE; }
static inline bool glsl_type_is_float(const struct glsl_type *t) { return t->base_type == GLSL_TYPE_FLOAT; }
static inline bool glsl_type_is_boolean(const glsl_type *t) { return t->base_type == GLSL_TYPE_BOOL; }
static inline bool glsl_type_is_sampler(const glsl_type *t) { return t->base_type == GLSL_TYPE_SAMPLER; }
static inline bool glsl_type_is_texture(const glsl_type *t) { return t->base_type == GLSL_TYPE_TEXTURE; }
static inline bool glsl_type_is_image(const glsl_type *t) { return t->base_type == GLSL_TYPE_IMAGE; }
static inline bool glsl_type_is_atomic_uint(const glsl_type *t) { return t->base_type == GLSL_TYPE_ATOMIC_UINT; }
static inline bool glsl_type_is_struct(const glsl_type *t) { return t->base_type == GLSL_TYPE_STRUCT; }
static inline bool glsl_type_is_interface(const glsl_type *t) { return t->base_type == GLSL_TYPE_INTERFACE; }
static inline bool glsl_type_is_array(const glsl_type *t) { return t->base_type == GLSL_TYPE_ARRAY; }
static inline bool glsl_type_is_cmat(const glsl_type *t) { return t->base_type == GLSL_TYPE_COOPERATIVE_MATRIX; }
static inline bool glsl_type_is_void(const glsl_type *t) { return t->base_type == GLSL_TYPE_VOID; }
static inline bool glsl_type_is_subroutine(const glsl_type *t) { return t->base_type == GLSL_TYPE_SUBROUTINE; }
static inline bool glsl_type_is_error(const glsl_type *t) { return t->base_type == GLSL_TYPE_ERROR; }
static inline bool glsl_type_is_double(const glsl_type *t) { return t->base_type == GLSL_TYPE_DOUBLE; }
static inline bool glsl_type_is_float(const glsl_type *t) { return t->base_type == GLSL_TYPE_FLOAT; }
static inline bool
glsl_type_is_numeric(const struct glsl_type *t)
glsl_type_is_numeric(const glsl_type *t)
{
return t->base_type >= GLSL_TYPE_UINT &&
t->base_type <= GLSL_TYPE_INT64;
}
static inline bool
glsl_type_is_integer(const struct glsl_type *t)
glsl_type_is_integer(const glsl_type *t)
{
return glsl_base_type_is_integer(t->base_type);
}
static inline bool
glsl_type_is_struct_or_ifc(const struct glsl_type *t)
glsl_type_is_struct_or_ifc(const glsl_type *t)
{
return glsl_type_is_struct(t) || glsl_type_is_interface(t);
}
static inline bool
glsl_type_is_packed(const struct glsl_type *t)
glsl_type_is_packed(const glsl_type *t)
{
return t->packed;
}
static inline bool
glsl_type_is_16bit(const struct glsl_type *t)
glsl_type_is_16bit(const glsl_type *t)
{
return glsl_base_type_is_16bit(t->base_type);
}
static inline bool
glsl_type_is_32bit(const struct glsl_type *t)
glsl_type_is_32bit(const glsl_type *t)
{
return t->base_type == GLSL_TYPE_UINT ||
t->base_type == GLSL_TYPE_INT ||
@ -574,67 +574,67 @@ glsl_type_is_32bit(const struct glsl_type *t)
}
static inline bool
glsl_type_is_64bit(const struct glsl_type *t)
glsl_type_is_64bit(const glsl_type *t)
{
return glsl_base_type_is_64bit(t->base_type);
}
static inline bool
glsl_type_is_integer_16(const struct glsl_type *t)
glsl_type_is_integer_16(const glsl_type *t)
{
return t->base_type == GLSL_TYPE_UINT16 || t->base_type == GLSL_TYPE_INT16;
}
static inline bool
glsl_type_is_integer_32(const struct glsl_type *t)
glsl_type_is_integer_32(const glsl_type *t)
{
return t->base_type == GLSL_TYPE_UINT || t->base_type == GLSL_TYPE_INT;
}
static inline bool
glsl_type_is_integer_64(const struct glsl_type *t)
glsl_type_is_integer_64(const glsl_type *t)
{
return t->base_type == GLSL_TYPE_UINT64 || t->base_type == GLSL_TYPE_INT64;
}
static inline bool
glsl_type_is_integer_32_64(const struct glsl_type *t)
glsl_type_is_integer_32_64(const glsl_type *t)
{
return glsl_type_is_integer_32(t) || glsl_type_is_integer_64(t);
}
static inline bool
glsl_type_is_integer_16_32(const struct glsl_type *t)
glsl_type_is_integer_16_32(const glsl_type *t)
{
return glsl_type_is_integer_16(t) || glsl_type_is_integer_32(t);
}
static inline bool
glsl_type_is_integer_16_32_64(const struct glsl_type *t)
glsl_type_is_integer_16_32_64(const glsl_type *t)
{
return glsl_type_is_integer_16(t) || glsl_type_is_integer_32(t) || glsl_type_is_integer_64(t);
}
static inline bool
glsl_type_is_float_16_32(const struct glsl_type *t)
glsl_type_is_float_16_32(const glsl_type *t)
{
return t->base_type == GLSL_TYPE_FLOAT16 || glsl_type_is_float(t);
}
static inline bool
glsl_type_is_float_16_32_64(const struct glsl_type *t)
glsl_type_is_float_16_32_64(const glsl_type *t)
{
return t->base_type == GLSL_TYPE_FLOAT16 || glsl_type_is_float(t) || glsl_type_is_double(t);
}
static inline bool
glsl_type_is_float_32_64(const struct glsl_type *t)
glsl_type_is_float_32_64(const glsl_type *t)
{
return glsl_type_is_float(t) || glsl_type_is_double(t);
}
static inline bool
glsl_type_is_int_16_32_64(const struct glsl_type *t)
glsl_type_is_int_16_32_64(const glsl_type *t)
{
return t->base_type == GLSL_TYPE_INT16 ||
t->base_type == GLSL_TYPE_INT ||
@ -642,7 +642,7 @@ glsl_type_is_int_16_32_64(const struct glsl_type *t)
}
static inline bool
glsl_type_is_uint_16_32_64(const struct glsl_type *t)
glsl_type_is_uint_16_32_64(const glsl_type *t)
{
return t->base_type == GLSL_TYPE_UINT16 ||
t->base_type == GLSL_TYPE_UINT ||
@ -650,66 +650,66 @@ glsl_type_is_uint_16_32_64(const struct glsl_type *t)
}
static inline bool
glsl_type_is_int_16_32(const struct glsl_type *t)
glsl_type_is_int_16_32(const glsl_type *t)
{
return t->base_type == GLSL_TYPE_INT ||
t->base_type == GLSL_TYPE_INT16;
}
static inline bool
glsl_type_is_uint_16_32(const struct glsl_type *t)
glsl_type_is_uint_16_32(const glsl_type *t)
{
return t->base_type == GLSL_TYPE_UINT ||
t->base_type == GLSL_TYPE_UINT16;
}
static inline bool
glsl_type_is_unsized_array(const struct glsl_type *t)
glsl_type_is_unsized_array(const glsl_type *t)
{
return glsl_type_is_array(t) && t->length == 0;
}
static inline bool
glsl_type_is_array_of_arrays(const struct glsl_type *t)
glsl_type_is_array_of_arrays(const glsl_type *t)
{
return glsl_type_is_array(t) && glsl_type_is_array(t->fields.array);
}
static inline bool
glsl_type_is_bare_sampler(const struct glsl_type *t)
glsl_type_is_bare_sampler(const glsl_type *t)
{
return glsl_type_is_sampler(t) && t->sampled_type == GLSL_TYPE_VOID;
}
bool glsl_type_is_vector(const struct glsl_type *t);
bool glsl_type_is_scalar(const struct glsl_type *t);
bool glsl_type_is_vector_or_scalar(const struct glsl_type *t);
bool glsl_type_is_matrix(const struct glsl_type *t);
bool glsl_type_is_array_or_matrix(const struct glsl_type *t);
bool glsl_type_is_vector(const glsl_type *t);
bool glsl_type_is_scalar(const glsl_type *t);
bool glsl_type_is_vector_or_scalar(const glsl_type *t);
bool glsl_type_is_matrix(const glsl_type *t);
bool glsl_type_is_array_or_matrix(const glsl_type *t);
/**
* Query whether a 64-bit type takes two slots.
*/
bool glsl_type_is_dual_slot(const struct glsl_type *t);
bool glsl_type_is_dual_slot(const glsl_type *t);
bool glsl_type_is_leaf(const struct glsl_type *type);
bool glsl_type_is_leaf(const glsl_type *type);
static inline bool
glsl_matrix_type_is_row_major(const struct glsl_type *t)
glsl_matrix_type_is_row_major(const glsl_type *t)
{
assert((glsl_type_is_matrix(t) && t->explicit_stride) || glsl_type_is_interface(t));
return t->interface_row_major;
}
static inline bool
glsl_sampler_type_is_shadow(const struct glsl_type *t)
glsl_sampler_type_is_shadow(const glsl_type *t)
{
assert(glsl_type_is_sampler(t));
return t->sampler_shadow;
}
static inline bool
glsl_sampler_type_is_array(const struct glsl_type *t)
glsl_sampler_type_is_array(const glsl_type *t)
{
assert(glsl_type_is_sampler(t) ||
glsl_type_is_texture(t) ||
@ -718,7 +718,7 @@ glsl_sampler_type_is_array(const struct glsl_type *t)
}
static inline bool
glsl_struct_type_is_packed(const struct glsl_type *t)
glsl_struct_type_is_packed(const glsl_type *t)
{
assert(glsl_type_is_struct(t));
return t->packed;
@ -727,7 +727,7 @@ glsl_struct_type_is_packed(const struct glsl_type *t)
/**
* Gets the "bare" type without any decorations or layout information.
*/
const struct glsl_type *glsl_get_bare_type(const struct glsl_type *t);
const glsl_type *glsl_get_bare_type(const glsl_type *t);
/**
* Get the basic scalar type which this type aggregates.
@ -738,7 +738,7 @@ const struct glsl_type *glsl_get_bare_type(const struct glsl_type *t);
* returns the struct type. For samplers and arrays of samplers, this
* function returns the sampler type.
*/
const struct glsl_type *glsl_get_scalar_type(const struct glsl_type *t);
const glsl_type *glsl_get_scalar_type(const glsl_type *t);
/**
* For numeric and boolean derived types returns the basic scalar type
@ -748,12 +748,12 @@ const struct glsl_type *glsl_get_scalar_type(const struct glsl_type *t);
* all other types, including arrays of numeric or boolean types, the
* error type is returned.
*/
const struct glsl_type *glsl_get_base_glsl_type(const struct glsl_type *t);
const glsl_type *glsl_get_base_glsl_type(const glsl_type *t);
unsigned glsl_get_length(const struct glsl_type *t);
unsigned glsl_get_length(const glsl_type *t);
static inline unsigned
glsl_get_vector_elements(const struct glsl_type *t)
glsl_get_vector_elements(const glsl_type *t)
{
return t->vector_elements;
}
@ -762,19 +762,19 @@ glsl_get_vector_elements(const struct glsl_type *t)
* Query the total number of scalars that make up a scalar, vector or matrix
*/
static inline unsigned
glsl_get_components(const struct glsl_type *t)
glsl_get_components(const glsl_type *t)
{
return t->vector_elements * t->matrix_columns;
}
static inline unsigned
glsl_get_matrix_columns(const struct glsl_type *t)
glsl_get_matrix_columns(const glsl_type *t)
{
return t->matrix_columns;
}
const struct glsl_type *glsl_type_wrap_in_arrays(const struct glsl_type *t,
const struct glsl_type *arrays);
const glsl_type *glsl_type_wrap_in_arrays(const glsl_type *t,
const glsl_type *arrays);
/**
* Query the number of elements in an array type
@ -785,7 +785,7 @@ const struct glsl_type *glsl_type_wrap_in_arrays(const struct glsl_type *t,
* zero is returned.
*/
static inline int
glsl_array_size(const struct glsl_type *t)
glsl_array_size(const glsl_type *t)
{
return glsl_type_is_array(t) ? t->length : -1;
}
@ -794,9 +794,9 @@ glsl_array_size(const struct glsl_type *t)
* Return the total number of elements in an array including the elements
* in arrays of arrays.
*/
unsigned glsl_get_aoa_size(const struct glsl_type *t);
unsigned glsl_get_aoa_size(const glsl_type *t);
const struct glsl_type *glsl_get_array_element(const struct glsl_type *t);
const glsl_type *glsl_get_array_element(const glsl_type *t);
/**
* Get the type stripped of any arrays
@ -805,36 +805,36 @@ const struct glsl_type *glsl_get_array_element(const struct glsl_type *t);
* Pointer to the type of elements of the first non-array type for array
* types, or pointer to itself for non-array types.
*/
const struct glsl_type *glsl_without_array(const struct glsl_type *t);
const glsl_type *glsl_without_array(const glsl_type *t);
const struct glsl_type *glsl_without_array_or_matrix(const struct glsl_type *t);
const struct glsl_type *glsl_type_wrap_in_arrays(const struct glsl_type *t,
const struct glsl_type *arrays);
const glsl_type *glsl_without_array_or_matrix(const glsl_type *t);
const glsl_type *glsl_type_wrap_in_arrays(const glsl_type *t,
const glsl_type *arrays);
const struct glsl_type *glsl_get_cmat_element(const struct glsl_type *t);
const struct glsl_cmat_description *glsl_get_cmat_description(const struct glsl_type *t);
const glsl_type *glsl_get_cmat_element(const glsl_type *t);
const struct glsl_cmat_description *glsl_get_cmat_description(const glsl_type *t);
/**
* Return the amount of atomic counter storage required for a type.
*/
unsigned glsl_atomic_size(const struct glsl_type *type);
unsigned glsl_atomic_size(const glsl_type *type);
/**
* Type A contains type B if A is B or A is a composite type (struct,
* interface, array) that has an element that contains B.
*/
bool glsl_type_contains_64bit(const struct glsl_type *t);
bool glsl_type_contains_image(const struct glsl_type *t);
bool glsl_contains_atomic(const struct glsl_type *t);
bool glsl_contains_double(const struct glsl_type *t);
bool glsl_contains_integer(const struct glsl_type *t);
bool glsl_contains_opaque(const struct glsl_type *t);
bool glsl_contains_sampler(const struct glsl_type *t);
bool glsl_contains_array(const struct glsl_type *t);
bool glsl_contains_subroutine(const struct glsl_type *t);
bool glsl_type_contains_64bit(const glsl_type *t);
bool glsl_type_contains_image(const glsl_type *t);
bool glsl_contains_atomic(const glsl_type *t);
bool glsl_contains_double(const glsl_type *t);
bool glsl_contains_integer(const glsl_type *t);
bool glsl_contains_opaque(const glsl_type *t);
bool glsl_contains_sampler(const glsl_type *t);
bool glsl_contains_array(const glsl_type *t);
bool glsl_contains_subroutine(const glsl_type *t);
static inline enum glsl_sampler_dim
glsl_get_sampler_dim(const struct glsl_type *t)
glsl_get_sampler_dim(const glsl_type *t)
{
assert(glsl_type_is_sampler(t) ||
glsl_type_is_texture(t) ||
@ -843,7 +843,7 @@ glsl_get_sampler_dim(const struct glsl_type *t)
}
static inline enum glsl_base_type
glsl_get_sampler_result_type(const struct glsl_type *t)
glsl_get_sampler_result_type(const glsl_type *t)
{
assert(glsl_type_is_sampler(t) ||
glsl_type_is_texture(t) ||
@ -862,7 +862,7 @@ glsl_get_sampler_result_type(const struct glsl_type *t)
* a texturing built-in function, since those pack additional values (such
* as the shadow comparator or projector) into the coordinate type.
*/
int glsl_get_sampler_coordinate_components(const struct glsl_type *t);
int glsl_get_sampler_coordinate_components(const glsl_type *t);
/**
* Compares whether this type matches another type without taking into
@ -871,7 +871,7 @@ int glsl_get_sampler_coordinate_components(const struct glsl_type *t);
* This is applied recursively so that structures containing structure
* members can also ignore the precision.
*/
bool glsl_type_compare_no_precision(const struct glsl_type *a, const struct glsl_type *b);
bool glsl_type_compare_no_precision(const glsl_type *a, const glsl_type *b);
/**
* Compare a record type against another record type.
@ -883,12 +883,12 @@ bool glsl_type_compare_no_precision(const struct glsl_type *a, const struct glsl
* The option to not match locations is to deal with places where the
* same struct is defined in a block which has a location set on it.
*/
bool glsl_record_compare(const struct glsl_type *a, const struct glsl_type *b,
bool glsl_record_compare(const glsl_type *a, const glsl_type *b,
bool match_name, bool match_locations,
bool match_precision);
const struct glsl_type *glsl_get_struct_field(const struct glsl_type *t, unsigned index);
const struct glsl_struct_field *glsl_get_struct_field_data(const struct glsl_type *t, unsigned index);
const glsl_type *glsl_get_struct_field(const glsl_type *t, unsigned index);
const glsl_struct_field *glsl_get_struct_field_data(const glsl_type *t, unsigned index);
/**
* Calculate offset between the base location of the struct in
@ -896,12 +896,12 @@ const struct glsl_struct_field *glsl_get_struct_field_data(const struct glsl_typ
* For the initial call, length is the index of the member to find the
* offset for.
*/
unsigned glsl_get_struct_location_offset(const struct glsl_type *t, unsigned length);
unsigned glsl_get_struct_location_offset(const glsl_type *t, unsigned length);
/**
* Get the location of a field within a record type
*/
int glsl_get_field_index(const struct glsl_type *t, const char *name);
int glsl_get_field_index(const glsl_type *t, const char *name);
/**
* Get the type of a structure field
@ -910,46 +910,46 @@ int glsl_get_field_index(const struct glsl_type *t, const char *name);
* Pointer to the type of the named field. If the type is not a structure
* or the named field does not exist, \c &glsl_type_builtin_error is returned.
*/
const struct glsl_type *glsl_get_field_type(const struct glsl_type *t, const char *name);
const glsl_type *glsl_get_field_type(const glsl_type *t, const char *name);
static inline int
glsl_get_struct_field_offset(const struct glsl_type *t, unsigned index)
glsl_get_struct_field_offset(const glsl_type *t, unsigned index)
{
return t->fields.structure[index].offset;
}
static inline const char *
glsl_get_struct_elem_name(const struct glsl_type *t, unsigned index)
glsl_get_struct_elem_name(const glsl_type *t, unsigned index)
{
return t->fields.structure[index].name;
}
static inline const struct glsl_type *glsl_void_type(void) { return &glsl_type_builtin_void; }
static inline const struct glsl_type *glsl_float_type(void) { return &glsl_type_builtin_float; }
static inline const struct glsl_type *glsl_float16_t_type(void) { return &glsl_type_builtin_float16_t; }
static inline const struct glsl_type *glsl_double_type(void) { return &glsl_type_builtin_double; }
static inline const struct glsl_type *glsl_vec2_type(void) { return &glsl_type_builtin_vec2; }
static inline const struct glsl_type *glsl_dvec2_type(void) { return &glsl_type_builtin_ivec2; }
static inline const struct glsl_type *glsl_uvec2_type(void) { return &glsl_type_builtin_uvec2; }
static inline const struct glsl_type *glsl_ivec2_type(void) { return &glsl_type_builtin_ivec2; }
static inline const struct glsl_type *glsl_bvec2_type(void) { return &glsl_type_builtin_bvec2; }
static inline const struct glsl_type *glsl_vec4_type(void) { return &glsl_type_builtin_vec4; }
static inline const struct glsl_type *glsl_dvec4_type(void) { return &glsl_type_builtin_ivec4; }
static inline const struct glsl_type *glsl_uvec4_type(void) { return &glsl_type_builtin_uvec4; }
static inline const struct glsl_type *glsl_ivec4_type(void) { return &glsl_type_builtin_ivec4; }
static inline const struct glsl_type *glsl_bvec4_type(void) { return &glsl_type_builtin_bvec4; }
static inline const struct glsl_type *glsl_int_type(void) { return &glsl_type_builtin_int; }
static inline const struct glsl_type *glsl_uint_type(void) { return &glsl_type_builtin_uint; }
static inline const struct glsl_type *glsl_int64_t_type(void) { return &glsl_type_builtin_int64_t; }
static inline const struct glsl_type *glsl_uint64_t_type(void) { return &glsl_type_builtin_uint64_t; }
static inline const struct glsl_type *glsl_int16_t_type(void) { return &glsl_type_builtin_int16_t; }
static inline const struct glsl_type *glsl_uint16_t_type(void) { return &glsl_type_builtin_uint16_t; }
static inline const struct glsl_type *glsl_int8_t_type(void) { return &glsl_type_builtin_int8_t; }
static inline const struct glsl_type *glsl_uint8_t_type(void) { return &glsl_type_builtin_uint8_t; }
static inline const struct glsl_type *glsl_bool_type(void) { return &glsl_type_builtin_bool; }
static inline const struct glsl_type *glsl_atomic_uint_type(void) { return &glsl_type_builtin_atomic_uint; }
static inline const glsl_type *glsl_void_type(void) { return &glsl_type_builtin_void; }
static inline const glsl_type *glsl_float_type(void) { return &glsl_type_builtin_float; }
static inline const glsl_type *glsl_float16_t_type(void) { return &glsl_type_builtin_float16_t; }
static inline const glsl_type *glsl_double_type(void) { return &glsl_type_builtin_double; }
static inline const glsl_type *glsl_vec2_type(void) { return &glsl_type_builtin_vec2; }
static inline const glsl_type *glsl_dvec2_type(void) { return &glsl_type_builtin_ivec2; }
static inline const glsl_type *glsl_uvec2_type(void) { return &glsl_type_builtin_uvec2; }
static inline const glsl_type *glsl_ivec2_type(void) { return &glsl_type_builtin_ivec2; }
static inline const glsl_type *glsl_bvec2_type(void) { return &glsl_type_builtin_bvec2; }
static inline const glsl_type *glsl_vec4_type(void) { return &glsl_type_builtin_vec4; }
static inline const glsl_type *glsl_dvec4_type(void) { return &glsl_type_builtin_ivec4; }
static inline const glsl_type *glsl_uvec4_type(void) { return &glsl_type_builtin_uvec4; }
static inline const glsl_type *glsl_ivec4_type(void) { return &glsl_type_builtin_ivec4; }
static inline const glsl_type *glsl_bvec4_type(void) { return &glsl_type_builtin_bvec4; }
static inline const glsl_type *glsl_int_type(void) { return &glsl_type_builtin_int; }
static inline const glsl_type *glsl_uint_type(void) { return &glsl_type_builtin_uint; }
static inline const glsl_type *glsl_int64_t_type(void) { return &glsl_type_builtin_int64_t; }
static inline const glsl_type *glsl_uint64_t_type(void) { return &glsl_type_builtin_uint64_t; }
static inline const glsl_type *glsl_int16_t_type(void) { return &glsl_type_builtin_int16_t; }
static inline const glsl_type *glsl_uint16_t_type(void) { return &glsl_type_builtin_uint16_t; }
static inline const glsl_type *glsl_int8_t_type(void) { return &glsl_type_builtin_int8_t; }
static inline const glsl_type *glsl_uint8_t_type(void) { return &glsl_type_builtin_uint8_t; }
static inline const glsl_type *glsl_bool_type(void) { return &glsl_type_builtin_bool; }
static inline const glsl_type *glsl_atomic_uint_type(void) { return &glsl_type_builtin_atomic_uint; }
static inline const struct glsl_type *
static inline const glsl_type *
glsl_floatN_t_type(unsigned bit_size)
{
switch (bit_size) {
@ -961,7 +961,7 @@ glsl_floatN_t_type(unsigned bit_size)
}
}
static inline const struct glsl_type *
static inline const glsl_type *
glsl_intN_t_type(unsigned bit_size)
{
switch (bit_size) {
@ -974,7 +974,7 @@ glsl_intN_t_type(unsigned bit_size)
}
}
static inline const struct glsl_type *
static inline const glsl_type *
glsl_uintN_t_type(unsigned bit_size)
{
switch (bit_size) {
@ -987,65 +987,65 @@ glsl_uintN_t_type(unsigned bit_size)
}
}
const struct glsl_type *glsl_vec_type(unsigned components);
const struct glsl_type *glsl_f16vec_type(unsigned components);
const struct glsl_type *glsl_dvec_type(unsigned components);
const struct glsl_type *glsl_ivec_type(unsigned components);
const struct glsl_type *glsl_uvec_type(unsigned components);
const struct glsl_type *glsl_bvec_type(unsigned components);
const struct glsl_type *glsl_i64vec_type(unsigned components);
const struct glsl_type *glsl_u64vec_type(unsigned components);
const struct glsl_type *glsl_i16vec_type(unsigned components);
const struct glsl_type *glsl_u16vec_type(unsigned components);
const struct glsl_type *glsl_i8vec_type(unsigned components);
const struct glsl_type *glsl_u8vec_type(unsigned components);
const glsl_type *glsl_vec_type(unsigned components);
const glsl_type *glsl_f16vec_type(unsigned components);
const glsl_type *glsl_dvec_type(unsigned components);
const glsl_type *glsl_ivec_type(unsigned components);
const glsl_type *glsl_uvec_type(unsigned components);
const glsl_type *glsl_bvec_type(unsigned components);
const glsl_type *glsl_i64vec_type(unsigned components);
const glsl_type *glsl_u64vec_type(unsigned components);
const glsl_type *glsl_i16vec_type(unsigned components);
const glsl_type *glsl_u16vec_type(unsigned components);
const glsl_type *glsl_i8vec_type(unsigned components);
const glsl_type *glsl_u8vec_type(unsigned components);
const struct glsl_type *glsl_simple_explicit_type(unsigned base_type, unsigned rows,
const glsl_type *glsl_simple_explicit_type(unsigned base_type, unsigned rows,
unsigned columns,
unsigned explicit_stride,
bool row_major,
unsigned explicit_alignment);
static inline const struct glsl_type *
static inline const glsl_type *
glsl_simple_type(unsigned base_type, unsigned rows, unsigned columns)
{
return glsl_simple_explicit_type(base_type, rows, columns, 0, false, 0);
}
const struct glsl_type *glsl_sampler_type(enum glsl_sampler_dim dim,
const glsl_type *glsl_sampler_type(enum glsl_sampler_dim dim,
bool shadow,
bool array,
enum glsl_base_type type);
const struct glsl_type *glsl_bare_sampler_type(void);
const struct glsl_type *glsl_bare_shadow_sampler_type(void);
const struct glsl_type *glsl_texture_type(enum glsl_sampler_dim dim,
const glsl_type *glsl_bare_sampler_type(void);
const glsl_type *glsl_bare_shadow_sampler_type(void);
const glsl_type *glsl_texture_type(enum glsl_sampler_dim dim,
bool array,
enum glsl_base_type type);
const struct glsl_type *glsl_image_type(enum glsl_sampler_dim dim,
const glsl_type *glsl_image_type(enum glsl_sampler_dim dim,
bool array, enum glsl_base_type type);
const struct glsl_type *glsl_array_type(const struct glsl_type *element,
const glsl_type *glsl_array_type(const glsl_type *element,
unsigned array_size,
unsigned explicit_stride);
const struct glsl_type *glsl_cmat_type(const struct glsl_cmat_description *desc);
const struct glsl_type *glsl_struct_type_with_explicit_alignment(const struct glsl_struct_field *fields,
const glsl_type *glsl_cmat_type(const struct glsl_cmat_description *desc);
const glsl_type *glsl_struct_type_with_explicit_alignment(const glsl_struct_field *fields,
unsigned num_fields,
const char *name,
bool packed,
unsigned explicit_alignment);
static inline const struct glsl_type *
glsl_struct_type(const struct glsl_struct_field *fields, unsigned num_fields,
static inline const glsl_type *
glsl_struct_type(const glsl_struct_field *fields, unsigned num_fields,
const char *name, bool packed)
{
return glsl_struct_type_with_explicit_alignment(fields, num_fields, name, packed, 0);
}
const struct glsl_type *glsl_interface_type(const struct glsl_struct_field *fields,
const glsl_type *glsl_interface_type(const glsl_struct_field *fields,
unsigned num_fields,
enum glsl_interface_packing packing,
bool row_major,
const char *block_name);
const struct glsl_type *glsl_subroutine_type(const char *subroutine_name);
const glsl_type *glsl_subroutine_type(const char *subroutine_name);
/**
* Query the full type of a matrix row
@ -1054,7 +1054,7 @@ const struct glsl_type *glsl_subroutine_type(const char *subroutine_name);
* If the type is not a matrix, \c glsl_type::error_type is returned.
* Otherwise a type matching the rows of the matrix is returned.
*/
const struct glsl_type *glsl_get_row_type(const struct glsl_type *t);
const glsl_type *glsl_get_row_type(const glsl_type *t);
/**
* Query the full type of a matrix column
@ -1063,7 +1063,7 @@ const struct glsl_type *glsl_get_row_type(const struct glsl_type *t);
* If the type is not a matrix, \c glsl_type::error_type is returned.
* Otherwise a type matching the columns of the matrix is returned.
*/
const struct glsl_type *glsl_get_column_type(const struct glsl_type *t);
const glsl_type *glsl_get_column_type(const glsl_type *t);
/** Returns an explicitly laid out type given a type and size/align func
*
@ -1082,57 +1082,57 @@ const struct glsl_type *glsl_get_column_type(const struct glsl_type *t);
* or SSBO layout because they do not add the extra array and substructure
* alignment that is required by std140 and std430.
*/
const struct glsl_type *glsl_get_explicit_type_for_size_align(const struct glsl_type *type,
const glsl_type *glsl_get_explicit_type_for_size_align(const glsl_type *type,
glsl_type_size_align_func type_info,
unsigned *size, unsigned *align);
const struct glsl_type *glsl_type_replace_vec3_with_vec4(const struct glsl_type *type);
const glsl_type *glsl_type_replace_vec3_with_vec4(const glsl_type *type);
/**
* Gets the float16 version of this type.
*/
const struct glsl_type *glsl_float16_type(const struct glsl_type *t);
const glsl_type *glsl_float16_type(const glsl_type *t);
/**
* Gets the int16 version of this type.
*/
const struct glsl_type *glsl_int16_type(const struct glsl_type *t);
const glsl_type *glsl_int16_type(const glsl_type *t);
/**
* Gets the uint16 version of this type.
*/
const struct glsl_type *glsl_uint16_type(const struct glsl_type *t);
const glsl_type *glsl_uint16_type(const glsl_type *t);
const struct glsl_type *glsl_type_to_16bit(const struct glsl_type *old_type);
const glsl_type *glsl_type_to_16bit(const glsl_type *old_type);
static inline const struct glsl_type *
static inline const glsl_type *
glsl_scalar_type(enum glsl_base_type base_type)
{
return glsl_simple_type(base_type, 1, 1);
}
static inline const struct glsl_type *
static inline const glsl_type *
glsl_vector_type(enum glsl_base_type base_type, unsigned components)
{
const struct glsl_type *t = glsl_simple_type(base_type, components, 1);
const glsl_type *t = glsl_simple_type(base_type, components, 1);
assert(t != &glsl_type_builtin_error);
return t;
}
static inline const struct glsl_type *
static inline const glsl_type *
glsl_matrix_type(enum glsl_base_type base_type,
unsigned rows, unsigned columns)
{
const struct glsl_type *t = glsl_simple_type(base_type, rows, columns);
const glsl_type *t = glsl_simple_type(base_type, rows, columns);
assert(t != &glsl_type_builtin_error);
return t;
}
static inline const struct glsl_type *
glsl_explicit_matrix_type(const struct glsl_type *mat, unsigned stride,
static inline const glsl_type *
glsl_explicit_matrix_type(const glsl_type *mat, unsigned stride,
bool row_major) {
assert(stride > 0);
const struct glsl_type *t = glsl_simple_explicit_type(mat->base_type,
const glsl_type *t = glsl_simple_explicit_type(mat->base_type,
mat->vector_elements,
mat->matrix_columns,
stride, row_major, 0);
@ -1141,15 +1141,15 @@ glsl_explicit_matrix_type(const struct glsl_type *mat, unsigned stride,
}
static inline const struct glsl_type *
glsl_transposed_type(const struct glsl_type *t)
static inline const glsl_type *
glsl_transposed_type(const glsl_type *t)
{
assert(glsl_type_is_matrix(t));
return glsl_simple_type(t->base_type, t->matrix_columns, t->vector_elements);
}
static inline const struct glsl_type *
glsl_texture_type_to_sampler(const struct glsl_type *t, bool is_shadow)
static inline const glsl_type *
glsl_texture_type_to_sampler(const glsl_type *t, bool is_shadow)
{
assert(glsl_type_is_texture(t));
return glsl_sampler_type((enum glsl_sampler_dim)t->sampler_dimensionality,
@ -1157,8 +1157,8 @@ glsl_texture_type_to_sampler(const struct glsl_type *t, bool is_shadow)
(enum glsl_base_type)t->sampled_type);
}
static inline const struct glsl_type *
glsl_sampler_type_to_texture(const struct glsl_type *t)
static inline const glsl_type *
glsl_sampler_type_to_texture(const glsl_type *t)
{
assert(glsl_type_is_sampler(t) && !glsl_type_is_bare_sampler(t));
return glsl_texture_type((enum glsl_sampler_dim)t->sampler_dimensionality,
@ -1166,17 +1166,17 @@ glsl_sampler_type_to_texture(const struct glsl_type *t)
(enum glsl_base_type)t->sampled_type);
}
const struct glsl_type *glsl_replace_vector_type(const struct glsl_type *t, unsigned components);
const struct glsl_type *glsl_channel_type(const struct glsl_type *t);
const glsl_type *glsl_replace_vector_type(const glsl_type *t, unsigned components);
const glsl_type *glsl_channel_type(const glsl_type *t);
/**
* Get the type resulting from a multiplication of \p type_a * \p type_b
*/
const struct glsl_type *glsl_get_mul_type(const struct glsl_type *type_a, const struct glsl_type *type_b);
const glsl_type *glsl_get_mul_type(const glsl_type *type_a, const glsl_type *type_b);
unsigned glsl_type_get_sampler_count(const struct glsl_type *t);
unsigned glsl_type_get_texture_count(const struct glsl_type *t);
unsigned glsl_type_get_image_count(const struct glsl_type *t);
unsigned glsl_type_get_sampler_count(const glsl_type *t);
unsigned glsl_type_get_texture_count(const glsl_type *t);
unsigned glsl_type_get_image_count(const glsl_type *t);
/**
* Calculate the number of vec4 slots required to hold this type.
@ -1185,7 +1185,7 @@ unsigned glsl_type_get_image_count(const struct glsl_type *t);
* count_attribute_slots() (vertex inputs and varyings) but also for
* gallium's !PIPE_CAP_PACKED_UNIFORMS case.
*/
unsigned glsl_count_vec4_slots(const struct glsl_type *t, bool is_gl_vertex_input, bool is_bindless);
unsigned glsl_count_vec4_slots(const glsl_type *t, bool is_gl_vertex_input, bool is_bindless);
/**
* Calculate the number of vec4 slots required to hold this type.
@ -1193,7 +1193,7 @@ unsigned glsl_count_vec4_slots(const struct glsl_type *t, bool is_gl_vertex_inpu
* This is the underlying recursive type_size function for
* gallium's PIPE_CAP_PACKED_UNIFORMS case.
*/
unsigned glsl_count_dword_slots(const struct glsl_type *t, bool is_bindless);
unsigned glsl_count_dword_slots(const glsl_type *t, bool is_bindless);
/**
* Calculate the number of components slots required to hold this type
@ -1201,15 +1201,15 @@ unsigned glsl_count_dword_slots(const struct glsl_type *t, bool is_bindless);
* This is used to determine how many uniform or varying locations a type
* might occupy.
*/
unsigned glsl_get_component_slots(const struct glsl_type *t);
unsigned glsl_get_component_slots(const glsl_type *t);
unsigned glsl_get_component_slots_aligned(const struct glsl_type *t, unsigned offset);
unsigned glsl_get_component_slots_aligned(const glsl_type *t, unsigned offset);
/**
* Used to count the number of varyings contained in the type ignoring
* innermost array elements.
*/
unsigned glsl_varying_count(const struct glsl_type *t);
unsigned glsl_varying_count(const glsl_type *t);
/**
* Calculate the number of unique values from glGetUniformLocation for the
@ -1218,7 +1218,7 @@ unsigned glsl_varying_count(const struct glsl_type *t);
* This is used to allocate slots in the UniformRemapTable, the amount of
* locations may not match with actual used storage space by the driver.
*/
unsigned glsl_type_uniform_locations(const struct glsl_type *t);
unsigned glsl_type_uniform_locations(const glsl_type *t);
/**
* Calculate the number of attribute slots required to hold this type
@ -1236,7 +1236,7 @@ unsigned glsl_type_uniform_locations(const struct glsl_type *t);
* false.
*/
static inline unsigned
glsl_count_attribute_slots(const struct glsl_type *t, bool is_gl_vertex_input)
glsl_count_attribute_slots(const glsl_type *t, bool is_gl_vertex_input)
{
return glsl_count_vec4_slots(t, is_gl_vertex_input, true);
}
@ -1244,24 +1244,24 @@ glsl_count_attribute_slots(const struct glsl_type *t, bool is_gl_vertex_input)
/**
* Size in bytes of this type in OpenCL memory
*/
unsigned glsl_get_cl_size(const struct glsl_type *t);
unsigned glsl_get_cl_size(const glsl_type *t);
/**
* Alignment in bytes of the start of this type in OpenCL memory.
*/
unsigned glsl_get_cl_alignment(const struct glsl_type *t);
unsigned glsl_get_cl_alignment(const glsl_type *t);
void glsl_get_cl_type_size_align(const struct glsl_type *t,
void glsl_get_cl_type_size_align(const glsl_type *t,
unsigned *size, unsigned *align);
/**
* Get the type interface packing used internally. For shared and packing
* layouts this is implementation defined.
*/
enum glsl_interface_packing glsl_get_internal_ifc_packing(const struct glsl_type *t, bool std430_supported);
enum glsl_interface_packing glsl_get_internal_ifc_packing(const glsl_type *t, bool std430_supported);
static inline enum glsl_interface_packing
glsl_get_ifc_packing(const struct glsl_type *t)
glsl_get_ifc_packing(const glsl_type *t)
{
return (enum glsl_interface_packing)t->interface_packing;
}
@ -1270,33 +1270,33 @@ glsl_get_ifc_packing(const struct glsl_type *t)
* Alignment in bytes of the start of this type in a std140 uniform
* block.
*/
unsigned glsl_get_std140_base_alignment(const struct glsl_type *t, bool row_major);
unsigned glsl_get_std140_base_alignment(const glsl_type *t, bool row_major);
/** Size in bytes of this type in a std140 uniform block.
*
* Note that this is not GL_UNIFORM_SIZE (which is the number of
* elements in the array)
*/
unsigned glsl_get_std140_size(const struct glsl_type *t, bool row_major);
unsigned glsl_get_std140_size(const glsl_type *t, bool row_major);
/**
* Calculate array stride in bytes of this type in a std430 shader storage
* block.
*/
unsigned glsl_get_std430_array_stride(const struct glsl_type *t, bool row_major);
unsigned glsl_get_std430_array_stride(const glsl_type *t, bool row_major);
/**
* Alignment in bytes of the start of this type in a std430 shader
* storage block.
*/
unsigned glsl_get_std430_base_alignment(const struct glsl_type *t, bool row_major);
unsigned glsl_get_std430_base_alignment(const glsl_type *t, bool row_major);
/**
* Size in bytes of this type in a std430 shader storage block.
*
* Note that this is not GL_BUFFER_SIZE
*/
unsigned glsl_get_std430_size(const struct glsl_type *t, bool row_major);
unsigned glsl_get_std430_size(const glsl_type *t, bool row_major);
/**
* Size in bytes of this type based on its explicit data.
@ -1309,16 +1309,16 @@ unsigned glsl_get_std430_size(const struct glsl_type *t, bool row_major);
* values are set, so only with SPIR-V shaders. Should not be used with
* GLSL shaders.
*/
unsigned glsl_get_explicit_size(const struct glsl_type *t, bool align_to_stride);
unsigned glsl_get_explicit_size(const glsl_type *t, bool align_to_stride);
static inline unsigned
glsl_get_explicit_stride(const struct glsl_type *t)
glsl_get_explicit_stride(const glsl_type *t)
{
return t->explicit_stride;
}
static inline unsigned
glsl_get_explicit_alignment(const struct glsl_type *t)
glsl_get_explicit_alignment(const glsl_type *t)
{
return t->explicit_alignment;
}
@ -1326,18 +1326,18 @@ glsl_get_explicit_alignment(const struct glsl_type *t)
/**
* Gets an explicitly laid out type with the std140 layout.
*/
const struct glsl_type *glsl_get_explicit_std140_type(const struct glsl_type *t, bool row_major);
const glsl_type *glsl_get_explicit_std140_type(const glsl_type *t, bool row_major);
/**
* Gets an explicitly laid out type with the std430 layout.
*/
const struct glsl_type *glsl_get_explicit_std430_type(const struct glsl_type *t, bool row_major);
const glsl_type *glsl_get_explicit_std430_type(const glsl_type *t, bool row_major);
/**
* Gets an explicitly laid out interface type.
*/
static inline const struct glsl_type *
glsl_get_explicit_interface_type(const struct glsl_type *t, bool supports_std430)
static inline const glsl_type *
glsl_get_explicit_interface_type(const glsl_type *t, bool supports_std430)
{
enum glsl_interface_packing packing = glsl_get_internal_ifc_packing(t, supports_std430);
if (packing == GLSL_INTERFACE_PACKING_STD140) {
@ -1348,8 +1348,8 @@ glsl_get_explicit_interface_type(const struct glsl_type *t, bool supports_std430
}
}
void glsl_get_natural_size_align_bytes(const struct glsl_type *t, unsigned *size, unsigned *align);
void glsl_get_vec4_size_align_bytes(const struct glsl_type *type, unsigned *size, unsigned *align);
void glsl_get_natural_size_align_bytes(const glsl_type *t, unsigned *size, unsigned *align);
void glsl_get_vec4_size_align_bytes(const glsl_type *type, unsigned *size, unsigned *align);
#ifdef __cplusplus
} /* extern "C" */