[Mesa-dev] [PATCH 1/5] Extend ir_constant::zero to handle more types.

Eric Anholt eric at anholt.net
Mon Apr 30 11:31:52 PDT 2012


On Fri, 27 Apr 2012 10:28:00 +0200, Olivier Galibert <galibert at pobox.com> wrote:
> Signed-off-by: Olivier Galibert <galibert at pobox.com>
> ---
>  src/glsl/ir.cpp |   17 ++++++++++++++++-
>  1 file changed, 16 insertions(+), 1 deletion(-)
> 
> diff --git a/src/glsl/ir.cpp b/src/glsl/ir.cpp
> index 1ba8751..fbbde20 100644
> --- a/src/glsl/ir.cpp
> +++ b/src/glsl/ir.cpp
> @@ -716,12 +716,27 @@ ir_constant::ir_constant(const struct glsl_type *type, exec_list *value_list)
>  ir_constant *
>  ir_constant::zero(void *mem_ctx, const glsl_type *type)
>  {
> -   assert(type->is_numeric() || type->is_boolean());
> +   assert(type->is_scalar() || type->is_vector() || type->is_matrix()
> +	  || type->is_record() || type->is_array());
>  
>     ir_constant *c = new(mem_ctx) ir_constant;
>     c->type = type;
>     memset(&c->value, 0, sizeof(c->value));
>  
> +   if (type->is_array()) {
> +      c->array_elements = ralloc_array(c, ir_constant *, type->length);
> +
> +      for(unsigned i = 0; i != type->length; i++)
> +	 c->array_elements[i] = ir_constant::zero(c, type->element_type());
> +   }
> +
> +   if (type->is_record()) {
> +      for(unsigned i = 0; i != type->length; i++) {

Our style would be "for (unsigned i = 0; i < type->length; i++) {"
(space between 'for' and '(', and < for length checks)
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 197 bytes
Desc: not available
URL: <http://lists.freedesktop.org/archives/mesa-dev/attachments/20120430/2d5fd7dc/attachment-0001.pgp>


More information about the mesa-dev mailing list