Mesa (master): turnip: set zmode to A6XX_EARLY_Z if FS forces early fragment test

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Fri Mar 12 20:34:52 UTC 2021


Module: Mesa
Branch: master
Commit: 914e7a7f73d1ff74054a2bf30277fef08a7a7d7f
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=914e7a7f73d1ff74054a2bf30277fef08a7a7d7f

Author: Danylo Piliaiev <dpiliaiev at igalia.com>
Date:   Fri Mar 12 20:30:31 2021 +0200

turnip: set zmode to A6XX_EARLY_Z if FS forces early fragment test

Specifying "early_fragment_tests" in fragment shader takes precedence
over our internal conditions.

Fixes test:
 dEQP-VK.fragment_operations.early_fragment.early_fragment_tests_stencil

Signed-off-by: Danylo Piliaiev <dpiliaiev at igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9569>

---

 src/freedreno/vulkan/tu_pipeline.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/src/freedreno/vulkan/tu_pipeline.c b/src/freedreno/vulkan/tu_pipeline.c
index 5ffc1f7aa6f..29ff0102950 100644
--- a/src/freedreno/vulkan/tu_pipeline.c
+++ b/src/freedreno/vulkan/tu_pipeline.c
@@ -1414,7 +1414,8 @@ tu6_emit_fs_outputs(struct tu_cs *cs,
 
    enum a6xx_ztest_mode zmode;
 
-   if (fs->no_earlyz || fs->has_kill || fs->writes_pos || fs->writes_stencilref || no_earlyz) {
+   if ((fs->shader && !fs->shader->nir->info.fs.early_fragment_tests) &&
+       (fs->no_earlyz || fs->has_kill || fs->writes_pos || fs->writes_stencilref || no_earlyz)) {
       zmode = A6XX_LATE_Z;
    } else {
       zmode = A6XX_EARLY_Z;



More information about the mesa-commit mailing list