From 69a079aee8f79104501faeb2a5092b643f956d33 Mon Sep 17 00:00:00 2001 From: Ian Romanick Date: Mon, 21 Jun 2010 11:42:02 -0700 Subject: ir_variable: Track the location of uniforms, varings, attributes, etc. --- ir.cpp | 1 + ir.h | 17 +++++++++++++++++ 2 files changed, 18 insertions(+) diff --git a/ir.cpp b/ir.cpp index 61589c3..08b2d88 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 04ecb58..a2fc2b7 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. */ -- cgit v1.2.3