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