Browse Source

glsl: fix partial marking for fp64 types.

This doubles the element width for the types that are greater
than 2 elements wide.

Reviewed-by: Timothy Arceri <timothy.arceri@collabora.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
tags/11.2-branchpoint
Dave Airlie 10 years ago
parent
commit
64cfacf319
1 changed files with 7 additions and 0 deletions
  1. 7
    0
      src/glsl/ir_set_program_inouts.cpp

+ 7
- 0
src/glsl/ir_set_program_inouts.cpp View File

@@ -301,6 +301,13 @@ ir_set_program_inouts_visitor::try_mark_partial_variable(ir_variable *var,
return false;
}

/* double element width for double types that takes two slots */
if (this->shader_stage != MESA_SHADER_VERTEX ||
var->data.mode != ir_var_shader_in) {
if (type->without_array()->is_dual_slot_double())
elem_width *= 2;
}

mark(this->prog, var, index_as_constant->value.u[0] * elem_width,
elem_width, this->shader_stage);
return true;

Loading…
Cancel
Save