ir_to_mesa: Handle constant matrices.
authorEric Anholt <eric@anholt.net>
Thu, 3 Jun 2010 23:31:14 +0000 (16:31 -0700)
committerEric Anholt <eric@anholt.net>
Thu, 24 Jun 2010 22:05:21 +0000 (15:05 -0700)
There's not much to it since we're not actually storing constant data yet.

ir_to_mesa.cpp

index afb5ad0e46809a0bddcf0df9d631c8f987131179..2ec2b11f03e022a97b637adf82fc3a1dafb80249 100644 (file)
@@ -943,8 +943,6 @@ ir_to_mesa_visitor::visit(ir_constant *ir)
 {
    ir_to_mesa_src_reg src_reg;
 
-   assert(!ir->type->is_matrix());
-
    assert(ir->type->base_type == GLSL_TYPE_FLOAT ||
          ir->type->base_type == GLSL_TYPE_UINT ||
          ir->type->base_type == GLSL_TYPE_INT ||
@@ -957,11 +955,13 @@ ir_to_mesa_visitor::visit(ir_constant *ir)
    /* FINISHME: Do something with the constant values for now.
     */
    src_reg.file = PROGRAM_CONSTANT;
-   src_reg.index = this->next_constant++;
+   src_reg.index = this->next_constant;
    src_reg.swizzle = SWIZZLE_NOOP;
    src_reg.reladdr = false;
    src_reg.negate = 0;
 
+   this->next_constant += type_size(ir->type);
+
    this->result = src_reg;
 }