mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-06 02:20:11 +01:00
llvmpipe/interp: fix interpolating frag pos for sample shading
Reviewed-by: Roland Scheidegger <sroland@vmware.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5050>
This commit is contained in:
parent
c9690b7471
commit
6b7e03175d
1 changed files with 11 additions and 2 deletions
|
|
@ -289,13 +289,22 @@ attribs_update_simple(struct lp_build_interp_soa_context *bld,
|
|||
case LP_INTERP_LINEAR:
|
||||
if (attrib == 0 && chan == 0) {
|
||||
dadx = coeff_bld->one;
|
||||
if (bld->pos_offset) {
|
||||
if (sample_id) {
|
||||
LLVMValueRef x_val_idx = LLVMBuildMul(gallivm->builder, sample_id, lp_build_const_int32(gallivm, 2), "");
|
||||
x_val_idx = lp_build_array_get(gallivm, bld->sample_pos_array, x_val_idx);
|
||||
a = lp_build_broadcast_scalar(coeff_bld, x_val_idx);
|
||||
} else if (bld->pos_offset) {
|
||||
a = lp_build_const_vec(gallivm, coeff_bld->type, bld->pos_offset);
|
||||
}
|
||||
}
|
||||
else if (attrib == 0 && chan == 1) {
|
||||
dady = coeff_bld->one;
|
||||
if (bld->pos_offset) {
|
||||
if (sample_id) {
|
||||
LLVMValueRef y_val_idx = LLVMBuildMul(gallivm->builder, sample_id, lp_build_const_int32(gallivm, 2), "");
|
||||
y_val_idx = LLVMBuildAdd(gallivm->builder, y_val_idx, lp_build_const_int32(gallivm, 1), "");
|
||||
y_val_idx = lp_build_array_get(gallivm, bld->sample_pos_array, y_val_idx);
|
||||
a = lp_build_broadcast_scalar(coeff_bld, y_val_idx);
|
||||
} else if (bld->pos_offset) {
|
||||
a = lp_build_const_vec(gallivm, coeff_bld->type, bld->pos_offset);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue