* DEALINGS IN THE SOFTWARE.
*/
-#pragma once
#ifndef GLSL_LINK_VARYINGS_H
#define GLSL_LINK_VARYINGS_H
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);
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 {
private:
- bool is_double() const
+ bool is_64bit() const
{
switch (this->type) {
case GL_DOUBLE:
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;
enum {
none,
clip_distance,
+ cull_distance,
tess_level_outer,
tess_level_inner,
} lowered_builtin_array_variable;
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 */