Construct an ir_constant from a scalar component of another ir_constant
This commit is contained in:
parent
565185cd8f
commit
989cfc432e
13
ir.cpp
13
ir.cpp
|
@ -227,6 +227,19 @@ ir_constant::ir_constant(bool b)
|
|||
this->value.b[0] = b;
|
||||
}
|
||||
|
||||
ir_constant::ir_constant(const ir_constant *c, unsigned i)
|
||||
{
|
||||
this->type = c->type->get_base_type();
|
||||
|
||||
switch (this->type->base_type) {
|
||||
case GLSL_TYPE_UINT: this->value.u[0] = c->value.u[i]; break;
|
||||
case GLSL_TYPE_INT: this->value.i[0] = c->value.i[i]; break;
|
||||
case GLSL_TYPE_FLOAT: this->value.f[0] = c->value.f[i]; break;
|
||||
case GLSL_TYPE_BOOL: this->value.b[0] = c->value.b[i]; break;
|
||||
default: assert(!"Should not get here."); break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
ir_dereference_variable::ir_dereference_variable(ir_variable *var)
|
||||
{
|
||||
|
|
12
ir.h
12
ir.h
|
@ -1026,6 +1026,18 @@ public:
|
|||
ir_constant(int i);
|
||||
ir_constant(float f);
|
||||
|
||||
/**
|
||||
* Construct an ir_constant from a scalar component of another ir_constant
|
||||
*
|
||||
* The new \c ir_constant inherits the type of the component from the
|
||||
* source constant.
|
||||
*
|
||||
* \note
|
||||
* In the case of a matrix constant, the new constant is a scalar, \b not
|
||||
* a vector.
|
||||
*/
|
||||
ir_constant(const ir_constant *c, unsigned i);
|
||||
|
||||
virtual ir_constant *as_constant()
|
||||
{
|
||||
return this;
|
||||
|
|
Loading…
Reference in New Issue