llvmpipe: Fix half-pixel sample offset with AF

Simply adding -0.5 will cause a noticeable offset for low sample counts.

Reviewed-by: Aleksi Sapon <aleksi.sapon@autodesk.com>
Acked-by: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/32935>
This commit is contained in:
Konstantin Seurer 2025-01-07 21:20:42 +01:00 committed by Marge Bot
parent f3b8d7da46
commit 3f7564d86b
2 changed files with 7 additions and 5 deletions

View file

@ -2266,6 +2266,8 @@ lp_build_sample_aniso(struct lp_build_sample_context *bld,
LLVMValueRef float_N = lp_build_int_to_float(coord_bld, N);
LLVMValueRef rcp_N = lp_build_rcp(coord_bld, float_N);
LLVMValueRef base_k = LLVMBuildFMul(builder, float_N, lp_build_const_vec(gallivm, coord_bld->type, -0.5), "");
base_k = lp_build_add(coord_bld, base_k, lp_build_const_vec(gallivm, coord_bld->type, 0.5));
struct lp_build_for_loop_state loop_state;
lp_build_for_loop_begin(&loop_state, gallivm, lp_build_const_int32(gallivm, 0),
@ -2275,8 +2277,8 @@ lp_build_sample_aniso(struct lp_build_sample_context *bld,
k = lp_build_broadcast_scalar(int_coord_bld, k);
LLVMValueRef float_k = lp_build_int_to_float(coord_bld, k);
float_k = lp_build_add(coord_bld, float_k, base_k);
float_k = lp_build_mul(coord_bld, float_k, rcp_N);
float_k = lp_build_add(coord_bld, float_k, lp_build_const_vec(gallivm, coord_bld->type, -0.5));
LLVMValueRef u_offset = lp_build_mul(coord_bld, float_k, dudk);
LLVMValueRef v_offset = lp_build_mul(coord_bld, float_k, dvdk);

View file

@ -6,7 +6,7 @@ traces-db:
traces:
0ad/0ad-v2.trace:
gl-vmware-llvmpipe:
checksum: 296d9d77d7f412b73f2114670dced22b
checksum: 2e34a2503078cedc246e6cafe2cd00fe
bgfx/01-cubes.rdc:
gl-vmware-llvmpipe:
checksum: a453a832e0e07132bb2c92c3fed7df18
@ -108,13 +108,13 @@ traces:
checksum: f8eba0fec6e3e0af9cb09844bc73bdc8
gputest/furmark-v2.trace:
gl-vmware-llvmpipe:
checksum: 214c2ebbe5e3b6a52bb9e6cb4575cc96
checksum: c5474253bc3cdb7a84e97c69ab0c46be
gputest/triangle-v2.trace:
gl-vmware-llvmpipe:
checksum: 7812de00011a3a059892e36cea19c696
humus/Portals-v2.trace:
gl-vmware-llvmpipe:
checksum: 68355026d723f9f7afa3a0f70b3b3c8f
checksum: d08302b6d2a573af6c4621357d45060d
jvgs/jvgs-d27fb67-v2.trace:
gl-vmware-llvmpipe:
checksum: 43b89627364b4cabbab84931aef4ce5e
@ -158,4 +158,4 @@ traces:
label: [unsupported]
warzone2100/warzone2100-default.trace:
gl-vmware-llvmpipe:
checksum: 8acdc244844d1e46ca04b73c3ff3f834
checksum: b46a96aca3f20e40f47651d54e03c7f5