summaryrefslogtreecommitdiff
path: root/src/mesa/shader/slang/slang_storage.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/mesa/shader/slang/slang_storage.c')
-rw-r--r--src/mesa/shader/slang/slang_storage.c23
1 files changed, 9 insertions, 14 deletions
diff --git a/src/mesa/shader/slang/slang_storage.c b/src/mesa/shader/slang/slang_storage.c
index 2654ee0404..4afee2ccc7 100644
--- a/src/mesa/shader/slang/slang_storage.c
+++ b/src/mesa/shader/slang/slang_storage.c
@@ -130,13 +130,13 @@ static GLboolean aggregate_variables (slang_storage_aggregate *agg, slang_variab
for (i = 0; i < vars->num_variables; i++)
if (!_slang_aggregate_variable (agg, &vars->variables[i].type.specifier,
- vars->variables[i].array_size, funcs, structs, globals, mach, file, atoms))
+ vars->variables[i].array_len, funcs, structs, globals, mach, file, atoms))
return GL_FALSE;
return GL_TRUE;
}
-static GLboolean eval_array_size (slang_assembly_file *file, slang_machine *pmach,
- slang_assembly_name_space *space, slang_operation *array_size, GLuint *plength,
+GLboolean _slang_evaluate_int (slang_assembly_file *file, slang_machine *pmach,
+ slang_assembly_name_space *space, slang_operation *array_size, GLuint *pint,
slang_atom_pool *atoms)
{
slang_assembly_file_restore_point point;
@@ -166,7 +166,7 @@ static GLboolean eval_array_size (slang_assembly_file *file, slang_machine *pmac
return GL_FALSE;
/* insert the actual expression */
- if (!_slang_assemble_operation_ (&A, array_size, slang_ref_forbid))
+ if (!_slang_assemble_operation (&A, array_size, slang_ref_forbid))
return GL_FALSE;
if (!slang_assembly_file_push (file, slang_asm_exit))
return GL_FALSE;
@@ -176,8 +176,7 @@ static GLboolean eval_array_size (slang_assembly_file *file, slang_machine *pmac
return GL_FALSE;
/* the evaluated expression is on top of the stack */
- *plength = (GLuint) mach.mem[mach.sp + SLANG_MACHINE_GLOBAL_SIZE]._float;
- /* TODO: check if 0 < arr->length <= 65535 */
+ *pint = (GLuint) mach.mem[mach.sp + SLANG_MACHINE_GLOBAL_SIZE]._float;
/* restore the old assembly */
if (!slang_assembly_file_restore_point_load (file, &point))
@@ -187,7 +186,7 @@ static GLboolean eval_array_size (slang_assembly_file *file, slang_machine *pmac
}
GLboolean _slang_aggregate_variable (slang_storage_aggregate *agg, slang_type_specifier *spec,
- slang_operation *array_size, slang_function_scope *funcs, slang_struct_scope *structs,
+ GLuint array_len, slang_function_scope *funcs, slang_struct_scope *structs,
slang_variable_scope *vars, slang_machine *mach, slang_assembly_file *file,
slang_atom_pool *atoms)
{
@@ -236,7 +235,6 @@ GLboolean _slang_aggregate_variable (slang_storage_aggregate *agg, slang_type_sp
case slang_spec_array:
{
slang_storage_array *arr;
- slang_assembly_name_space space;
arr = slang_storage_aggregate_push_new (agg);
if (arr == NULL)
@@ -251,14 +249,11 @@ GLboolean _slang_aggregate_variable (slang_storage_aggregate *agg, slang_type_sp
arr->aggregate = NULL;
return GL_FALSE;
}
- if (!_slang_aggregate_variable (arr->aggregate, spec->_array, NULL, funcs, structs,
+ if (!_slang_aggregate_variable (arr->aggregate, spec->_array, 0, funcs, structs,
vars, mach, file, atoms))
return GL_FALSE;
- space.funcs = funcs;
- space.structs = structs;
- space.vars = vars;
- if (!eval_array_size (file, mach, &space, array_size, &arr->length, atoms))
- return GL_FALSE;
+ arr->length = array_len;
+ /* TODO: check if 0 < arr->length <= 65535 */
}
return GL_TRUE;
default: