Mesa (main): nir: Add a new sample_pos_or_center system value
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Fri Dec 17 16:32:40 UTC 2021
Module: Mesa
Branch: main
Commit: e8acc5a7ea8168fce587c6728bb988e77516e64c
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=e8acc5a7ea8168fce587c6728bb988e77516e64c
Author: Jason Ekstrand <jason at jlekstrand.net>
Date: Thu Dec 2 14:11:21 2021 -0600
nir: Add a new sample_pos_or_center system value
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin at intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14198>
---
src/compiler/nir/nir.c | 4 ++++
src/compiler/nir/nir_divergence_analysis.c | 1 +
src/compiler/nir/nir_gather_info.c | 1 +
src/compiler/nir/nir_intrinsics.py | 3 +++
src/compiler/nir/nir_opt_peephole_select.c | 1 +
src/compiler/shader_enums.h | 1 +
6 files changed, 11 insertions(+)
diff --git a/src/compiler/nir/nir.c b/src/compiler/nir/nir.c
index d02f3d28da8..b8ddf57ea30 100644
--- a/src/compiler/nir/nir.c
+++ b/src/compiler/nir/nir.c
@@ -2369,6 +2369,8 @@ nir_intrinsic_from_system_value(gl_system_value val)
return nir_intrinsic_load_sample_id;
case SYSTEM_VALUE_SAMPLE_POS:
return nir_intrinsic_load_sample_pos;
+ case SYSTEM_VALUE_SAMPLE_POS_OR_CENTER:
+ return nir_intrinsic_load_sample_pos_or_center;
case SYSTEM_VALUE_SAMPLE_MASK_IN:
return nir_intrinsic_load_sample_mask_in;
case SYSTEM_VALUE_LOCAL_INVOCATION_ID:
@@ -2500,6 +2502,8 @@ nir_system_value_from_intrinsic(nir_intrinsic_op intrin)
return SYSTEM_VALUE_SAMPLE_ID;
case nir_intrinsic_load_sample_pos:
return SYSTEM_VALUE_SAMPLE_POS;
+ case nir_intrinsic_load_sample_pos_or_center:
+ return SYSTEM_VALUE_SAMPLE_POS_OR_CENTER;
case nir_intrinsic_load_sample_mask_in:
return SYSTEM_VALUE_SAMPLE_MASK_IN;
case nir_intrinsic_load_local_invocation_id:
diff --git a/src/compiler/nir/nir_divergence_analysis.c b/src/compiler/nir/nir_divergence_analysis.c
index 20bbd8f8ae4..58ed99ea2d5 100644
--- a/src/compiler/nir/nir_divergence_analysis.c
+++ b/src/compiler/nir/nir_divergence_analysis.c
@@ -390,6 +390,7 @@ visit_intrinsic(nir_shader *shader, nir_intrinsic_instr *instr)
case nir_intrinsic_load_line_coord:
case nir_intrinsic_load_frag_coord:
case nir_intrinsic_load_sample_pos:
+ case nir_intrinsic_load_sample_pos_or_center:
case nir_intrinsic_load_vertex_id_zero_base:
case nir_intrinsic_load_vertex_id:
case nir_intrinsic_load_instance_id:
diff --git a/src/compiler/nir/nir_gather_info.c b/src/compiler/nir/nir_gather_info.c
index bafc9a597ab..5463657cd31 100644
--- a/src/compiler/nir/nir_gather_info.c
+++ b/src/compiler/nir/nir_gather_info.c
@@ -629,6 +629,7 @@ gather_intrinsic_info(nir_intrinsic_instr *instr, nir_shader *shader,
case nir_intrinsic_load_front_face:
case nir_intrinsic_load_sample_id:
case nir_intrinsic_load_sample_pos:
+ case nir_intrinsic_load_sample_pos_or_center:
case nir_intrinsic_load_sample_mask_in:
case nir_intrinsic_load_helper_invocation:
case nir_intrinsic_load_tess_coord:
diff --git a/src/compiler/nir/nir_intrinsics.py b/src/compiler/nir/nir_intrinsics.py
index 43ec0446b69..ffc1c97bfdf 100644
--- a/src/compiler/nir/nir_intrinsics.py
+++ b/src/compiler/nir/nir_intrinsics.py
@@ -738,6 +738,9 @@ system_value("sample_id", 1)
# sample shading. See the lower_helper_invocation option.
system_value("sample_id_no_per_sample", 1)
system_value("sample_pos", 2)
+# sample_pos_or_center is like sample_pos but does not imply per-sample
+# shading. When per-sample dispatch is not enabled, it returns (0.5, 0.5).
+system_value("sample_pos_or_center", 2)
system_value("sample_mask_in", 1)
system_value("primitive_id", 1)
system_value("invocation_id", 1)
diff --git a/src/compiler/nir/nir_opt_peephole_select.c b/src/compiler/nir/nir_opt_peephole_select.c
index 9d7e4e4b3a4..fc0a32b2bc6 100644
--- a/src/compiler/nir/nir_opt_peephole_select.c
+++ b/src/compiler/nir/nir_opt_peephole_select.c
@@ -128,6 +128,7 @@ block_check_for_allowed_instrs(nir_block *block, unsigned *count,
case nir_intrinsic_load_layer_id:
case nir_intrinsic_load_frag_coord:
case nir_intrinsic_load_sample_pos:
+ case nir_intrinsic_load_sample_pos_or_center:
case nir_intrinsic_load_sample_id:
case nir_intrinsic_load_sample_mask_in:
case nir_intrinsic_load_vertex_id_zero_base:
diff --git a/src/compiler/shader_enums.h b/src/compiler/shader_enums.h
index a98d52743e4..3519a58c029 100644
--- a/src/compiler/shader_enums.h
+++ b/src/compiler/shader_enums.h
@@ -715,6 +715,7 @@ typedef enum
SYSTEM_VALUE_FRONT_FACE,
SYSTEM_VALUE_SAMPLE_ID,
SYSTEM_VALUE_SAMPLE_POS,
+ SYSTEM_VALUE_SAMPLE_POS_OR_CENTER,
SYSTEM_VALUE_SAMPLE_MASK_IN,
SYSTEM_VALUE_HELPER_INVOCATION,
SYSTEM_VALUE_COLOR0,
More information about the mesa-commit
mailing list