Mesa (master): llvmpipe/fs: multisample depth/stencil bad ir generated
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Mon Aug 31 03:35:24 UTC 2020
Module: Mesa
Branch: master
Commit: dc6313b0982638ce985db7a0b6fc4dbc60cefa60
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=dc6313b0982638ce985db7a0b6fc4dbc60cefa60
Author: Dave Airlie <airlied at redhat.com>
Date: Fri Jun 19 16:57:16 2020 +1000
llvmpipe/fs: multisample depth/stencil bad ir generated
Need to update the z value after updating the pos at pixel
center, and later reupdate it again, so we can avoid some
LLVM IR values not being dominant issues.
Fixes:
dEQP-VK.renderpass.suballocation.multisample.s8_uint.samples_4
Reviewed-by: Roland Scheidegger <sroland at vmware.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6381>
---
src/gallium/drivers/llvmpipe/lp_state_fs.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/src/gallium/drivers/llvmpipe/lp_state_fs.c b/src/gallium/drivers/llvmpipe/lp_state_fs.c
index 804ed9214c6..c57f2d4e6ee 100644
--- a/src/gallium/drivers/llvmpipe/lp_state_fs.c
+++ b/src/gallium/drivers/llvmpipe/lp_state_fs.c
@@ -881,6 +881,7 @@ generate_fs_loop(struct gallivm_state *gallivm,
if (key->min_samples == 1) {
/* for multisample Z needs to be re interpolated at pixel center */
lp_build_interp_soa_update_pos_dyn(interp, gallivm, loop_state.counter, NULL);
+ z = interp->pos[2];
lp_build_mask_update(&mask, tmp_s_mask_or);
}
} else {
@@ -1119,6 +1120,11 @@ generate_fs_loop(struct gallivm_state *gallivm,
0);
if (pos0 != -1 && outputs[pos0][2]) {
z = LLVMBuildLoad(builder, outputs[pos0][2], "output.z");
+ } else {
+ if (key->multisample) {
+ lp_build_interp_soa_update_pos_dyn(interp, gallivm, loop_state.counter, key->multisample ? sample_loop_state.counter : NULL);
+ z = interp->pos[2];
+ }
}
/*
* Clamp according to ARB_depth_clamp semantics.
More information about the mesa-commit
mailing list