From 760c114b24fd679bb5c5d386c5935f53ef03e8e5 Mon Sep 17 00:00:00 2001 From: Brian Date: Tue, 20 Feb 2007 16:56:49 -0700 Subject: [PATCH] alloc IR_FIELD's Storage in codegen, like IR_ELEMENT --- src/mesa/shader/slang/slang_codegen.c | 4 ++++ src/mesa/shader/slang/slang_emit.c | 9 +++++---- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/mesa/shader/slang/slang_codegen.c b/src/mesa/shader/slang/slang_codegen.c index a23d4e1..789ab8a 100644 --- a/src/mesa/shader/slang/slang_codegen.c +++ b/src/mesa/shader/slang/slang_codegen.c @@ -2184,12 +2184,16 @@ _slang_gen_field(slang_assemble_ctx * A, slang_operation *oper) /* oper->children[0] is the base */ /* oper->a_id is the field name */ slang_ir_node *base, *n; + GLint size = 4; /* XXX fix? */ base = _slang_gen_operation(A, &oper->children[0]); n = new_node1(IR_FIELD, base); if (n) { n->Target = (char *) oper->a_id; + n->Store = _slang_new_ir_storage(base->Store->File, + base->Store->Index, + size); } return n; diff --git a/src/mesa/shader/slang/slang_emit.c b/src/mesa/shader/slang/slang_emit.c index 67cf9c3..c174f7b 100644 --- a/src/mesa/shader/slang/slang_emit.c +++ b/src/mesa/shader/slang/slang_emit.c @@ -1319,16 +1319,17 @@ emit_field(slang_var_table *vt, slang_ir_node *n, struct gl_program *prog) /* state variable sub-field */ GLint pos; GLuint swizzle; + assert(n->Children[0]->Opcode == IR_VAR); pos = _slang_lookup_statevar_field((char *) n->Children[0]->Var->a_name, n->Target, prog->Parameters, &swizzle); if (pos < 0) { RETURN_ERROR2("Undefined structure member", n->Target, 0); } - - n->Store = _slang_new_ir_storage(PROGRAM_STATE_VAR, pos, 4);/*XXX size*/ - if (n->Store) - n->Store->Swizzle = swizzle; + assert(n->Store); + assert(n->Store->File == PROGRAM_STATE_VAR); + n->Store->Index = pos; + n->Store->Swizzle = swizzle; } /* -- 2.7.4