aboutsummaryrefslogtreecommitdiffstats
path: root/src/compiler
diff options
context:
space:
mode:
Diffstat (limited to 'src/compiler')
-rw-r--r--src/compiler/nir/nir_gather_info.c3
-rw-r--r--src/compiler/shader_info.h1
2 files changed, 4 insertions, 0 deletions
diff --git a/src/compiler/nir/nir_gather_info.c b/src/compiler/nir/nir_gather_info.c
index 0a89c4b9b44..c301742dd7a 100644
--- a/src/compiler/nir/nir_gather_info.c
+++ b/src/compiler/nir/nir_gather_info.c
@@ -200,6 +200,8 @@ gather_intrinsic_info(nir_intrinsic_instr *instr, nir_shader *shader,
switch (instr->intrinsic) {
case nir_intrinsic_demote:
case nir_intrinsic_demote_if:
+ shader->info.fs.uses_demote = true;
+ /* fallthrough: quads with helper lanes only might be discarded entirely */
case nir_intrinsic_discard:
case nir_intrinsic_discard_if:
assert(shader->info.stage == MESA_SHADER_FRAGMENT);
@@ -389,6 +391,7 @@ nir_shader_gather_info(nir_shader *shader, nir_function_impl *entrypoint)
if (shader->info.stage == MESA_SHADER_FRAGMENT) {
shader->info.fs.uses_sample_qualifier = false;
shader->info.fs.uses_discard = false;
+ shader->info.fs.uses_demote = false;
shader->info.fs.needs_helper_invocations = false;
}
diff --git a/src/compiler/shader_info.h b/src/compiler/shader_info.h
index d13e51a47a6..4510ce33fb6 100644
--- a/src/compiler/shader_info.h
+++ b/src/compiler/shader_info.h
@@ -217,6 +217,7 @@ typedef struct shader_info {
struct {
bool uses_discard:1;
+ bool uses_demote:1;
/**
* True if this fragment shader requires helper invocations. This