summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTimothy Arceri <[email protected]>2019-06-28 10:35:11 +1000
committerTimothy Arceri <[email protected]>2019-07-19 09:25:47 +1000
commita59926b3ca7bd942566ec62dedef10b7f55b95a6 (patch)
treef0472c2042519444bff280250c1c0a81710c5271
parente38b93087638781ef83c9b3cc3bb424e448a5380 (diff)
nir/lower_clip: add create_clipdist_vars() helper
Reviewed-by: Kenneth Graunke <[email protected]>
-rw-r--r--src/compiler/nir/nir_lower_clip.c34
1 files changed, 18 insertions, 16 deletions
diff --git a/src/compiler/nir/nir_lower_clip.c b/src/compiler/nir/nir_lower_clip.c
index 1536f0a3451..ce7e0680eae 100644
--- a/src/compiler/nir/nir_lower_clip.c
+++ b/src/compiler/nir/nir_lower_clip.c
@@ -65,6 +65,20 @@ create_clipdist_var(nir_shader *shader, unsigned drvloc,
}
static void
+create_clipdist_vars(nir_shader *shader, nir_variable **io_vars,
+ unsigned ucp_enables, int *drvloc, bool output)
+{
+ if (ucp_enables & 0x0f)
+ io_vars[0] =
+ create_clipdist_var(shader, ++(*drvloc), output,
+ VARYING_SLOT_CLIP_DIST0);
+ if (ucp_enables & 0xf0)
+ io_vars[1] =
+ create_clipdist_var(shader, ++(*drvloc), output,
+ VARYING_SLOT_CLIP_DIST1);
+}
+
+static void
store_clipdist_output(nir_builder *b, nir_variable *out, nir_ssa_def **val)
{
nir_intrinsic_instr *store;
@@ -235,13 +249,8 @@ nir_lower_clip_vs(nir_shader *shader, unsigned ucp_enables, bool use_vars)
}
}
- /* insert CLIPDIST outputs: */
- if (ucp_enables & 0x0f)
- out[0] =
- create_clipdist_var(shader, ++maxloc, true, VARYING_SLOT_CLIP_DIST0);
- if (ucp_enables & 0xf0)
- out[1] =
- create_clipdist_var(shader, ++maxloc, true, VARYING_SLOT_CLIP_DIST1);
+ /* insert CLIPDIST outputs */
+ create_clipdist_vars(shader, out, ucp_enables, &maxloc, true);
for (int plane = 0; plane < MAX_CLIP_PLANES; plane++) {
if (ucp_enables & (1 << plane)) {
@@ -334,15 +343,8 @@ nir_lower_clip_fs(nir_shader *shader, unsigned ucp_enables)
/* The shader won't normally have CLIPDIST inputs, so we
* must add our own:
*/
- /* insert CLIPDIST outputs: */
- if (ucp_enables & 0x0f)
- in[0] =
- create_clipdist_var(shader, ++maxloc, false,
- VARYING_SLOT_CLIP_DIST0);
- if (ucp_enables & 0xf0)
- in[1] =
- create_clipdist_var(shader, ++maxloc, false,
- VARYING_SLOT_CLIP_DIST1);
+ /* insert CLIPDIST inputs */
+ create_clipdist_vars(shader, in, ucp_enables, &maxloc, false);
nir_foreach_function(function, shader) {
if (!strcmp(function->name, "main"))