nir: Return progress from nir_lower_io().
[mesa.git] / src / compiler / glsl_types.h
index f607dd8bc378d8b176b2102f0d7de4d8db47d0c0..7709556fe0cdc989b505ae6770f02ca8a8849f55 100644 (file)
@@ -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 */
    }