glsl: add a few missing int64 constant propagation cases
Fixes KHR-GL45.shader_ballot_tests.ShaderBallotAvailability, which causes some silly swizzles to appear, triggering this optimization to get hit. Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu> Reviewed-by: Dave Airlie <airlied@redhat.com> Cc: mesa-stable@lists.freedesktop.org
This commit is contained in:
@@ -732,6 +732,8 @@ ir_swizzle::constant_expression_value(void *mem_ctx,
|
|||||||
case GLSL_TYPE_FLOAT: data.f[i] = v->value.f[swiz_idx[i]]; break;
|
case GLSL_TYPE_FLOAT: data.f[i] = v->value.f[swiz_idx[i]]; break;
|
||||||
case GLSL_TYPE_BOOL: data.b[i] = v->value.b[swiz_idx[i]]; break;
|
case GLSL_TYPE_BOOL: data.b[i] = v->value.b[swiz_idx[i]]; break;
|
||||||
case GLSL_TYPE_DOUBLE:data.d[i] = v->value.d[swiz_idx[i]]; break;
|
case GLSL_TYPE_DOUBLE:data.d[i] = v->value.d[swiz_idx[i]]; break;
|
||||||
|
case GLSL_TYPE_UINT64:data.u64[i] = v->value.u64[swiz_idx[i]]; break;
|
||||||
|
case GLSL_TYPE_INT64: data.i64[i] = v->value.i64[swiz_idx[i]]; break;
|
||||||
default: assert(!"Should not get here."); break;
|
default: assert(!"Should not get here."); break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -238,6 +238,12 @@ ir_constant_propagation_visitor::constant_propagation(ir_rvalue **rvalue) {
|
|||||||
case GLSL_TYPE_BOOL:
|
case GLSL_TYPE_BOOL:
|
||||||
data.b[i] = found->constant->value.b[rhs_channel];
|
data.b[i] = found->constant->value.b[rhs_channel];
|
||||||
break;
|
break;
|
||||||
|
case GLSL_TYPE_UINT64:
|
||||||
|
data.u64[i] = found->constant->value.u64[rhs_channel];
|
||||||
|
break;
|
||||||
|
case GLSL_TYPE_INT64:
|
||||||
|
data.i64[i] = found->constant->value.i64[rhs_channel];
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
assert(!"not reached");
|
assert(!"not reached");
|
||||||
break;
|
break;
|
||||||
|
Reference in New Issue
Block a user