mesa: Branch 'glsl-compiler-1' - 2 commits
Brian Paul
brianp at kemper.freedesktop.org
Thu Feb 22 18:00:54 UTC 2007
src/mesa/shader/slang/slang_codegen.c | 105 +++++++------------------
src/mesa/shader/slang/slang_compile.c | 1
src/mesa/shader/slang/slang_compile_variable.c | 3
src/mesa/shader/slang/slang_compile_variable.h | 2
4 files changed, 30 insertions(+), 81 deletions(-)
New commits:
diff-tree 2eeaae6cbcc6d5b1d85ab7e9b681b59568fb8600 (from 50040573d7b4a34eb919016c5fe85aeaca9e9065)
Author: Brian <brian at yutani.localnet.net>
Date: Thu Feb 22 11:00:10 2007 -0700
get rid of some unused slang_variable fields
diff --git a/src/mesa/shader/slang/slang_codegen.c b/src/mesa/shader/slang/slang_codegen.c
index 20491a6..31e08df 100644
--- a/src/mesa/shader/slang/slang_codegen.c
+++ b/src/mesa/shader/slang/slang_codegen.c
@@ -143,7 +143,7 @@ _slang_sizeof_type_specifier(const slang
* \param var the variable to associate with the IR node
*/
static void
-slang_attach_storage(slang_ir_node *n, slang_variable *var)
+_slang_attach_storage(slang_ir_node *n, slang_variable *var)
{
assert(n);
assert(var);
@@ -579,8 +579,7 @@ new_var(slang_assemble_ctx *A, slang_ope
n = new_node0(IR_VAR);
if (n) {
- var->used = GL_TRUE;
- slang_attach_storage(n, var);
+ _slang_attach_storage(n, var);
}
return n;
}
@@ -646,8 +645,6 @@ slang_resolve_variable(slang_operation *
oper->var = _slang_locate_variable(oper->locals,
(const slang_atom) oper->a_id,
GL_TRUE);
- if (oper->var)
- oper->var->used = GL_TRUE;
}
}
@@ -1600,7 +1597,7 @@ _slang_gen_var_decl(slang_assemble_ctx *
assert(!is_sampler_type(&var->type));
n = new_node0(IR_VAR_DECL);
if (n) {
- slang_attach_storage(n, var);
+ _slang_attach_storage(n, var);
assert(var->aux);
assert(n->Store == var->aux);
diff --git a/src/mesa/shader/slang/slang_compile.c b/src/mesa/shader/slang/slang_compile.c
index 86699b7..a1cae5d 100644
--- a/src/mesa/shader/slang/slang_compile.c
+++ b/src/mesa/shader/slang/slang_compile.c
@@ -1629,7 +1629,6 @@ parse_init_declarator(slang_parse_ctx *
}
/* copy the declarator qualifier type, parse the identifier */
- var->global = C->global_scope;
var->type.qualifier = type->qualifier;
var->a_name = parse_identifier(C);
if (var->a_name == SLANG_ATOM_NULL)
diff --git a/src/mesa/shader/slang/slang_compile_variable.c b/src/mesa/shader/slang/slang_compile_variable.c
index 450ae16..09ca736 100644
--- a/src/mesa/shader/slang/slang_compile_variable.c
+++ b/src/mesa/shader/slang/slang_compile_variable.c
@@ -256,9 +256,7 @@ slang_variable_construct(slang_variable
var->initializer = NULL;
var->address = ~0;
var->size = 0;
- var->global = GL_FALSE;
var->isTemp = GL_FALSE;
- var->used = GL_FALSE;
var->aux = NULL;
return 1;
}
@@ -307,7 +305,6 @@ slang_variable_copy(slang_variable * x,
}
z.address = y->address;
z.size = y->size;
- z.global = y->global;
slang_variable_destruct(x);
*x = z;
return 1;
diff --git a/src/mesa/shader/slang/slang_compile_variable.h b/src/mesa/shader/slang/slang_compile_variable.h
index d12cfd7..d3691f0 100644
--- a/src/mesa/shader/slang/slang_compile_variable.h
+++ b/src/mesa/shader/slang/slang_compile_variable.h
@@ -79,8 +79,6 @@ typedef struct slang_variable_
struct slang_operation_ *initializer; /**< Optional initializer code */
GLuint address; /**< Storage location */
GLuint size; /**< Variable's size in bytes */
- GLboolean global; /**< A global var? */
- GLboolean used; /**< Ever referenced by code? */
GLboolean isTemp; /**< a named temporary (__resultTmp) */
void *aux; /**< Used during code gen */
} slang_variable;
diff-tree 50040573d7b4a34eb919016c5fe85aeaca9e9065 (from b618ac8c0b6d8ebd8af6c6d44d368f6b033acae8)
Author: Brian <brian at yutani.localnet.net>
Date: Thu Feb 22 10:56:41 2007 -0700
Replace slang_allocate_storage() with simpler _slang_attach_storage()
diff --git a/src/mesa/shader/slang/slang_codegen.c b/src/mesa/shader/slang/slang_codegen.c
index 405b418..20491a6 100644
--- a/src/mesa/shader/slang/slang_codegen.c
+++ b/src/mesa/shader/slang/slang_codegen.c
@@ -52,31 +52,6 @@ static slang_ir_node *
_slang_gen_operation(slang_assemble_ctx * A, slang_operation *oper);
-
-
-/**
- * Lookup a named constant and allocate storage for the parameter in
- * the given parameter list.
- * \param swizzleOut returns swizzle mask for accessing the constant
- * \return position of the constant in the paramList.
- */
-static GLint
-slang_lookup_constant(const char *name,
- struct gl_program_parameter_list *paramList,
- GLuint *swizzleOut)
-{
- GLint value = _slang_lookup_constant(name);
- if (value >= 0) {
- /* XXX named constant! */
- GLfloat fvalue = (GLfloat) value;
- GLint pos;
- pos = _mesa_add_unnamed_constant(paramList, &fvalue, 1, swizzleOut);
- return pos;
- }
- return -1;
-}
-
-
static GLboolean
is_sampler_type(const slang_fully_specified_type *t)
{
@@ -161,19 +136,24 @@ _slang_sizeof_type_specifier(const slang
/**
- * Allocate storage info for an IR node (n->Store).
- * If n is an IR_VAR_DECL, allocate a temporary for the variable.
- * Otherwise, if n is an IR_VAR, check if it's a uniform or constant
- * that needs to have storage allocated.
+ * Establish the binding between a slang_ir_node and a slang_variable.
+ * Then, allocate/attach a slang_ir_storage object to the IR node if needed.
+ * The IR node must be a IR_VAR or IR_VAR_DECL node.
+ * \param n the IR node
+ * \param var the variable to associate with the IR node
*/
static void
-slang_allocate_storage(slang_assemble_ctx *A, slang_ir_node *n)
+slang_attach_storage(slang_ir_node *n, slang_variable *var)
{
- assert(A->vartable);
assert(n);
+ assert(var);
+ assert(n->Opcode == IR_VAR || n->Opcode == IR_VAR_DECL);
+ assert(!n->Var || n->Var == var);
+
+ n->Var = var;
if (!n->Store) {
- /* allocate storage info for this node */
+ /* need to setup storage */
if (n->Var && n->Var->aux) {
/* node storage info = var storage info */
n->Store = (slang_ir_storage *) n->Var->aux;
@@ -186,35 +166,6 @@ slang_allocate_storage(slang_assemble_ct
assert(n->Var->aux);
}
}
-
- if (n->Opcode == IR_VAR_DECL) {
- /* variable declaration */
- assert(n->Var);
- assert(!is_sampler_type(&n->Var->type));
- n->Store->File = PROGRAM_TEMPORARY;
- n->Store->Size = _slang_sizeof_type_specifier(&n->Var->type.specifier);
- assert(n->Store->Size > 0);
- return;
- }
- else {
- assert(n->Opcode == IR_VAR);
- assert(n->Var);
-
- if (n->Store->Index < 0) {
- const char *varName = (char *) n->Var->a_name;
- struct gl_program *prog = A->program;
- assert(prog);
-
- if (n->Store->File == PROGRAM_CONSTANT) {
- /* XXX compile-time constants should be converted to literals */
- GLint i = slang_lookup_constant(varName, prog->Parameters,
- &n->Store->Swizzle);
- assert(i >= 0);
- assert(n->Store->Size == 1);
- n->Store->Index = i;
- }
- }
- }
}
@@ -619,15 +570,18 @@ new_if(slang_ir_node *cond, slang_ir_nod
static slang_ir_node *
new_var(slang_assemble_ctx *A, slang_operation *oper, slang_atom name)
{
- slang_variable *v = _slang_locate_variable(oper->locals, name, GL_TRUE);
- slang_ir_node *n = new_node0(IR_VAR);
- if (!v)
+ slang_ir_node *n;
+ slang_variable *var = _slang_locate_variable(oper->locals, name, GL_TRUE);
+ if (!var)
return NULL;
- assert(!oper->var || oper->var == v);
- v->used = GL_TRUE;
- n->Var = v;
- slang_allocate_storage(A, n);
+ assert(!oper->var || oper->var == var);
+
+ n = new_node0(IR_VAR);
+ if (n) {
+ var->used = GL_TRUE;
+ slang_attach_storage(n, var);
+ }
return n;
}
@@ -1643,15 +1597,19 @@ static slang_ir_node *
_slang_gen_var_decl(slang_assemble_ctx *A, slang_variable *var)
{
slang_ir_node *n;
+ assert(!is_sampler_type(&var->type));
n = new_node0(IR_VAR_DECL);
if (n) {
- n->Var = var;
- slang_allocate_storage(A, n);
+ slang_attach_storage(n, var);
+
+ assert(var->aux);
+ assert(n->Store == var->aux);
assert(n->Store);
assert(n->Store->Index < 0);
+
+ n->Store->File = PROGRAM_TEMPORARY;
+ n->Store->Size = _slang_sizeof_type_specifier(&n->Var->type.specifier);
assert(n->Store->Size > 0);
- assert(var->aux);
- assert(n->Store == var->aux);
}
return n;
}
@@ -2564,7 +2522,7 @@ _slang_gen_operation(slang_assemble_ctx
abort();
return new_node0(IR_NOP);
}
- abort();
+
return NULL;
}
More information about the mesa-commit
mailing list