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