X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fcompiler%2Fglsl_types.h;h=7709556fe0cdc989b505ae6770f02ca8a8849f55;hb=abc8a702d0f01852f85705a87c9d624300c1efec;hp=f607dd8bc378d8b176b2102f0d7de4d8db47d0c0;hpb=5d83820a1d4f6b2390520d2335848d351db13fd7;p=mesa.git diff --git a/src/compiler/glsl_types.h b/src/compiler/glsl_types.h index f607dd8bc37..7709556fe0c 100644 --- a/src/compiler/glsl_types.h +++ b/src/compiler/glsl_types.h @@ -22,7 +22,6 @@ * DEALINGS IN THE SOFTWARE. */ -#pragma once #ifndef GLSL_TYPES_H #define GLSL_TYPES_H @@ -54,6 +53,8 @@ enum glsl_base_type { GLSL_TYPE_INT, GLSL_TYPE_FLOAT, GLSL_TYPE_DOUBLE, + GLSL_TYPE_UINT64, + GLSL_TYPE_INT64, GLSL_TYPE_BOOL, GLSL_TYPE_SAMPLER, GLSL_TYPE_IMAGE, @@ -69,7 +70,9 @@ enum glsl_base_type { static inline bool glsl_base_type_is_64bit(enum glsl_base_type type) { - return type == GLSL_TYPE_DOUBLE; + return type == GLSL_TYPE_DOUBLE || + type == GLSL_TYPE_UINT64 || + type == GLSL_TYPE_INT64; } enum glsl_sampler_dim { @@ -82,6 +85,7 @@ enum glsl_sampler_dim { GLSL_SAMPLER_DIM_EXTERNAL, GLSL_SAMPLER_DIM_MS, GLSL_SAMPLER_DIM_SUBPASS, /* for vulkan input attachments */ + GLSL_SAMPLER_DIM_SUBPASS_MS, /* for multisampled vulkan input attachments */ }; enum glsl_interface_packing { @@ -224,6 +228,8 @@ struct glsl_type { static const glsl_type *ivec(unsigned components); static const glsl_type *uvec(unsigned components); static const glsl_type *bvec(unsigned components); + static const glsl_type *i64vec(unsigned components); + static const glsl_type *u64vec(unsigned components); /**@}*/ /** @@ -461,7 +467,7 @@ struct glsl_type { */ bool is_numeric() const { - return (base_type >= GLSL_TYPE_UINT) && (base_type <= GLSL_TYPE_DOUBLE); + return (base_type >= GLSL_TYPE_UINT) && (base_type <= GLSL_TYPE_INT64); } /** @@ -473,8 +479,17 @@ struct glsl_type { } /** - * Query whether or not type is an integral type, or for struct, interface - * and array types, contains an integral type. + * Query whether or not a type is a 32-bit or 64-bit integer + */ + bool is_integer_32_64() const + { + return (base_type == GLSL_TYPE_UINT) || (base_type == GLSL_TYPE_INT) || + (base_type == GLSL_TYPE_UINT64) || (base_type == GLSL_TYPE_INT64); + } + + /** + * Query whether or not type is an integral type, or for struct and array + * types, contains an integral type. */ bool contains_integer() const; @@ -751,7 +766,7 @@ struct glsl_type { * * Note that this is often different than actual coordinate type used in * a texturing built-in function, since those pack additional values (such - * as the shadow comparitor or projector) into the coordinate type. + * as the shadow comparator or projector) into the coordinate type. */ int coordinate_components() const; @@ -955,10 +970,12 @@ struct glsl_struct_field { unsigned implicit_sized_array:1; #ifdef __cplusplus glsl_struct_field(const struct glsl_type *_type, const char *_name) - : type(_type), name(_name), location(-1), interpolation(0), centroid(0), + : type(_type), name(_name), location(-1), offset(0), xfb_buffer(0), + xfb_stride(0), interpolation(0), centroid(0), sample(0), matrix_layout(GLSL_MATRIX_LAYOUT_INHERITED), patch(0), precision(GLSL_PRECISION_NONE), image_read_only(0), image_write_only(0), - image_coherent(0), image_volatile(0), image_restrict(0) + image_coherent(0), image_volatile(0), image_restrict(0), + explicit_xfb_buffer(0), implicit_sized_array(0) { /* empty */ }