diff options
| author | Kenneth Graunke <kenneth@whitecape.org> | 2010-07-14 13:22:07 -0700 | 
|---|---|---|
| committer | Kenneth Graunke <kenneth@whitecape.org> | 2010-07-14 16:49:24 -0700 | 
| commit | 17a307d154489d718ab51a6272d2054868d782f6 (patch) | |
| tree | c1fa0490f5afcd031af6d44caf8a53f19e05f01d /src | |
| parent | 1fdcdb2dca97cdf4b8f4790aa66587ff3e89e526 (diff) | |
ast_function: Actually do type conversion on function arguments.
Diffstat (limited to 'src')
| -rw-r--r-- | src/glsl/ast_function.cpp | 11 | 
1 files changed, 8 insertions, 3 deletions
diff --git a/src/glsl/ast_function.cpp b/src/glsl/ast_function.cpp index 9315a92ecb..467722c868 100644 --- a/src/glsl/ast_function.cpp +++ b/src/glsl/ast_function.cpp @@ -31,6 +31,9 @@ inline unsigned min(unsigned a, unsigned b)     return (a < b) ? a : b;  } +static ir_rvalue * +convert_component(ir_rvalue *src, const glsl_type *desired_type); +  static unsigned  process_parameters(exec_list *instructions, exec_list *actual_parameters,  		   exec_list *parameters, @@ -93,13 +96,15 @@ process_call(exec_list *instructions, ir_function *f,  	    }  	 } +	 if (formal->type->is_numeric() || formal->type->is_boolean()) { +	    ir_rvalue *converted = convert_component(actual, formal->type); +	    actual->replace_with(converted); +	 } +  	 actual_iter.next();  	 formal_iter.next();        } -      /* FINISHME: The list of actual parameters needs to be modified to -       * FINISHME: include any necessary conversions. -       */        return new(ctx) ir_call(sig, actual_parameters);     } else {        /* FINISHME: Log a better error message here.  G++ will show the types  | 
