X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fglsl%2Flink_varyings.h;h=afc16a8baa7123bfe7ad9a09e4d67f3807ea73ed;hb=5105f9a7ae66001537e8dbf6acf40faf736430e5;hp=7f7be353b6d95f378a483706363d4baf06507ded;hpb=b3d8b4c0b423539f17c13713673cfeb6d66ff7ed;p=mesa.git diff --git a/src/glsl/link_varyings.h b/src/glsl/link_varyings.h index 7f7be353b6d..afc16a8baa7 100644 --- a/src/glsl/link_varyings.h +++ b/src/glsl/link_varyings.h @@ -91,8 +91,7 @@ struct tfeedback_candidate class tfeedback_decl { public: - void init(struct gl_context *ctx, struct gl_shader_program *prog, - const void *mem_ctx, const char *input); + void init(struct gl_context *ctx, const void *mem_ctx, const char *input); static bool is_same(const tfeedback_decl &x, const tfeedback_decl &y); bool assign_location(struct gl_context *ctx, struct gl_shader_program *prog); @@ -113,6 +112,16 @@ public: return !this->next_buffer_separator && !this->skip_components; } + const char *name() const + { + return this->orig_name; + } + + unsigned get_stream_id() const + { + return this->stream_id; + } + /** * The total number of varying components taken up by this variable. Only * valid if assign_location() has been called. @@ -211,10 +220,17 @@ private: * data structure that was found. Otherwise NULL. */ const tfeedback_candidate *matched_candidate; + + /** + * StreamId assigned to this varying (defaults to 0). Can only be set to + * values other than 0 in geometry shaders that use the stream layout + * modifier. Accepted values must be in the range [0, MAX_VERTEX_STREAMS-1]. + */ + unsigned stream_id; }; -bool +void cross_validate_outputs_to_inputs(struct gl_shader_program *prog, gl_shader *producer, gl_shader *consumer); @@ -234,11 +250,17 @@ assign_varying_locations(struct gl_context *ctx, struct gl_shader_program *prog, gl_shader *producer, gl_shader *consumer, unsigned num_tfeedback_decls, - tfeedback_decl *tfeedback_decls); + tfeedback_decl *tfeedback_decls, + unsigned gs_input_vertices); + +bool +check_against_output_limit(struct gl_context *ctx, + struct gl_shader_program *prog, + gl_shader *producer); bool -check_against_varying_limit(struct gl_context *ctx, - struct gl_shader_program *prog, - gl_shader *consumer); +check_against_input_limit(struct gl_context *ctx, + struct gl_shader_program *prog, + gl_shader *consumer); #endif /* GLSL_LINK_VARYINGS_H */