Mesa (main): broadcom/compiler: track passthrough Z writes

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Fri Dec 3 11:14:25 UTC 2021


Module: Mesa
Branch: main
Commit: a65c605365f80b656fae0fab01012124807d92aa
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=a65c605365f80b656fae0fab01012124807d92aa

Author: Iago Toral Quiroga <itoral at igalia.com>
Date:   Fri Dec  3 10:22:45 2021 +0100

broadcom/compiler: track passthrough Z writes

In some cases we need to make the shaders write the Z value produced
from rasterization (FEP). Track these instances because they are relevant
to early EZ setup.

Reviewed-by: Alejandro Piñeiro <apinheiro at igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14037>

---

 src/broadcom/compiler/nir_to_vir.c   | 1 +
 src/broadcom/compiler/v3d_compiler.h | 2 ++
 src/broadcom/compiler/vir.c          | 1 +
 3 files changed, 4 insertions(+)

diff --git a/src/broadcom/compiler/nir_to_vir.c b/src/broadcom/compiler/nir_to_vir.c
index 028c3805103..6e645204b79 100644
--- a/src/broadcom/compiler/nir_to_vir.c
+++ b/src/broadcom/compiler/nir_to_vir.c
@@ -1741,6 +1741,7 @@ emit_frag_end(struct v3d_compile *c)
                         /* Shader doesn't write to gl_FragDepth, take Z from
                          * FEP.
                          */
+                        c->writes_z_from_fep = true;
                         inst = vir_MOV_dest(c, tlbu_reg, vir_nop_reg());
 
                         if (c->devinfo->ver >= 42) {
diff --git a/src/broadcom/compiler/v3d_compiler.h b/src/broadcom/compiler/v3d_compiler.h
index d7b2fb886b0..dda88149d15 100644
--- a/src/broadcom/compiler/v3d_compiler.h
+++ b/src/broadcom/compiler/v3d_compiler.h
@@ -655,6 +655,7 @@ struct v3d_compile {
 
         bool uses_center_w;
         bool writes_z;
+        bool writes_z_from_fep;
         bool reads_z;
         bool uses_implicit_point_line_varyings;
 
@@ -968,6 +969,7 @@ struct v3d_fs_prog_data {
 
         uint8_t num_inputs;
         bool writes_z;
+        bool writes_z_from_fep;
         bool disable_ez;
         bool uses_center_w;
         bool uses_implicit_point_line_varyings;
diff --git a/src/broadcom/compiler/vir.c b/src/broadcom/compiler/vir.c
index 764000b9eba..eb2f380cb52 100644
--- a/src/broadcom/compiler/vir.c
+++ b/src/broadcom/compiler/vir.c
@@ -807,6 +807,7 @@ v3d_fs_set_prog_data(struct v3d_compile *c,
 {
         v3d_set_fs_prog_data_inputs(c, prog_data);
         prog_data->writes_z = c->writes_z;
+        prog_data->writes_z_from_fep = c->writes_z_from_fep;
         prog_data->disable_ez = !c->s->info.fs.early_fragment_tests;
         prog_data->uses_center_w = c->uses_center_w;
         prog_data->uses_implicit_point_line_varyings =



More information about the mesa-commit mailing list