diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/glsl/ir.cpp | 12 | ||||
| -rw-r--r-- | src/glsl/ir.h | 5 | 
2 files changed, 17 insertions, 0 deletions
| diff --git a/src/glsl/ir.cpp b/src/glsl/ir.cpp index c75d560c48..bb58d95624 100644 --- a/src/glsl/ir.cpp +++ b/src/glsl/ir.cpp @@ -326,6 +326,18 @@ 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()); + +   ir_constant *c = new(mem_ctx) ir_constant; +   c->type = type; +   memset(&c->value, 0, sizeof(c->value)); + +   return c; +} +  bool  ir_constant::get_bool_component(unsigned i) const  { diff --git a/src/glsl/ir.h b/src/glsl/ir.h index 202685d145..bee9f6a2de 100644 --- a/src/glsl/ir.h +++ b/src/glsl/ir.h @@ -1248,6 +1248,11 @@ public:      */     ir_constant(const ir_constant *c, unsigned i); +   /** +    * Return a new ir_constant of the specified type containing all zeros. +    */ +   static ir_constant *zero(void *mem_ctx, const glsl_type *type); +     virtual ir_constant *clone(struct hash_table *) const;     virtual ir_constant *constant_expression_value(); | 
