From: Ian Romanick Date: Mon, 21 Jun 2010 18:42:02 +0000 (-0700) Subject: ir_variable: Track the location of uniforms, varings, attributes, etc. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=69a079aee8f79104501faeb2a5092b643f956d33;p=mesa.git ir_variable: Track the location of uniforms, varings, attributes, etc. --- diff --git a/ir.cpp b/ir.cpp index 61589c3ff20..08b2d888816 100644 --- a/ir.cpp +++ b/ir.cpp @@ -731,6 +731,7 @@ ir_variable::ir_variable(const struct glsl_type *type, const char *name) { this->type = type; this->name = name; + this->location = -1; this->constant_value = NULL; if (type && type->base_type == GLSL_TYPE_SAMPLER) diff --git a/ir.h b/ir.h index 04ecb582e48..a2fc2b769c0 100644 --- a/ir.h +++ b/ir.h @@ -217,6 +217,23 @@ public: */ unsigned array_lvalue:1; + /** + * Storage location of the base of this variable + * + * The precise meaning of this field depends on the nature of the variable. + * + * - Vertex shader input: one of the values from \c gl_vert_attrib. + * - Vertex shader output: one of the values from \c gl_vert_result. + * - Fragment shader input: one of the values from \c gl_frag_attrib. + * - Fragment shader output: one of the values from \c gl_frag_result. + * - Uniforms: Per-stage uniform slot number. + * - Other: This field is not currently used. + * + * If the variable is a uniform, shader input, or shader output, and the + * slot has not been assigned, the value will be -1. + */ + int location; + /** * Emit a warning if this variable is accessed. */