nir: Return progress from nir_lower_io().
[mesa.git] / src / compiler / glsl / link_varyings.h
index 9ea79f04fa8d07b444e6e0c478aef0a4713e9a19..4e1f6d2e42adf9f57c94a59b0618d6fe4ed6eb08 100644 (file)
@@ -21,7 +21,6 @@
  * DEALINGS IN THE SOFTWARE.
  */
 
-#pragma once
 #ifndef GLSL_LINK_VARYINGS_H
 #define GLSL_LINK_VARYINGS_H
 
@@ -98,8 +97,8 @@ public:
    unsigned get_num_outputs() const;
    bool store(struct gl_context *ctx, struct gl_shader_program *prog,
               struct gl_transform_feedback_info *info, unsigned buffer,
-              const unsigned max_outputs, bool *explicit_stride,
-              bool has_xfb_qualifiers) const;
+              unsigned buffer_index, const unsigned max_outputs,
+              bool *explicit_stride, bool has_xfb_qualifiers) const;
    const tfeedback_candidate *find_candidate(gl_shader_program *prog,
                                              hash_table *tfeedback_candidates);
 
@@ -151,7 +150,7 @@ public:
          return this->size;
       else
          return this->vector_elements * this->matrix_columns * this->size *
-            (this->is_double() ? 2 : 1);
+            (this->is_64bit() ? 2 : 1);
    }
 
    unsigned get_location() const {
@@ -160,7 +159,7 @@ public:
 
 private:
 
-   bool is_double() const
+   bool is_64bit() const
    {
       switch (this->type) {
       case GL_DOUBLE:
@@ -176,6 +175,14 @@ private:
       case GL_DOUBLE_MAT4:
       case GL_DOUBLE_MAT4x2:
       case GL_DOUBLE_MAT4x3:
+      case GL_INT64_ARB:
+      case GL_INT64_VEC2_ARB:
+      case GL_INT64_VEC3_ARB:
+      case GL_INT64_VEC4_ARB:
+      case GL_UNSIGNED_INT64_ARB:
+      case GL_UNSIGNED_INT64_VEC2_ARB:
+      case GL_UNSIGNED_INT64_VEC3_ARB:
+      case GL_UNSIGNED_INT64_VEC4_ARB:
          return true;
       default:
          return false;
@@ -210,6 +217,7 @@ private:
    enum {
       none,
       clip_distance,
+      cull_distance,
       tess_level_outer,
       tess_level_inner,
    } lowered_builtin_array_variable;
@@ -287,48 +295,13 @@ private:
    unsigned stream_id;
 };
 
-
-void
-cross_validate_outputs_to_inputs(struct gl_shader_program *prog,
-                                gl_shader *producer, gl_shader *consumer);
-
 bool
-parse_tfeedback_decls(struct gl_context *ctx, struct gl_shader_program *prog,
-                      const void *mem_ctx, unsigned num_names,
-                      char **varying_names, tfeedback_decl *decls);
-
-bool
-process_xfb_layout_qualifiers(void *mem_ctx, const gl_shader *sh,
-                              unsigned *num_tfeedback_decls,
-                              char ***varying_names);
+link_varyings(struct gl_shader_program *prog, unsigned first, unsigned last,
+              struct gl_context *ctx, void *mem_ctx);
 
 void
-remove_unused_shader_inputs_and_outputs(bool is_separate_shader_object,
-                                        gl_shader *sh,
-                                        enum ir_variable_mode mode);
-
-bool
-store_tfeedback_info(struct gl_context *ctx, struct gl_shader_program *prog,
-                     unsigned num_tfeedback_decls,
-                     tfeedback_decl *tfeedback_decls,
-                     bool has_xfb_qualifiers);
-
-bool
-assign_varying_locations(struct gl_context *ctx,
-                        void *mem_ctx,
-                        struct gl_shader_program *prog,
-                        gl_shader *producer, gl_shader *consumer,
-                         unsigned num_tfeedback_decls,
-                         tfeedback_decl *tfeedback_decls);
-
-bool
-check_against_output_limit(struct gl_context *ctx,
-                           struct gl_shader_program *prog,
-                           gl_shader *producer);
-
-bool
-check_against_input_limit(struct gl_context *ctx,
-                          struct gl_shader_program *prog,
-                          gl_shader *consumer);
+cross_validate_outputs_to_inputs(struct gl_shader_program *prog,
+                                 gl_linked_shader *producer,
+                                 gl_linked_shader *consumer);
 
 #endif /* GLSL_LINK_VARYINGS_H */