aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Schürmann <[email protected]>2019-04-03 17:29:20 +0200
committerConnor Abbott <[email protected]>2019-07-08 14:02:50 +0200
commitc31f470066b7534d6bff03674aed78bb3bf7408b (patch)
tree21026e0fd7660a1dd8d702910dccd0781a953e4c
parent1d327689f9156745ce8bf387b99b02c41a7e67e8 (diff)
anv,nir: Move lower_input_attachments pass from ANV to NIR.
Reviewed-by: Connor Abbott <[email protected]> Reviewed-by: Bas Nieuwenhuizen <[email protected]>
-rw-r--r--src/compiler/Makefile.sources1
-rw-r--r--src/compiler/nir/meson.build1
-rw-r--r--src/compiler/nir/nir.h2
-rw-r--r--src/compiler/nir/nir_lower_input_attachments.c (renamed from src/intel/vulkan/anv_nir_lower_input_attachments.c)20
-rw-r--r--src/intel/Makefile.sources1
-rw-r--r--src/intel/vulkan/anv_nir.h2
-rw-r--r--src/intel/vulkan/anv_pipeline.c2
-rw-r--r--src/intel/vulkan/meson.build1
8 files changed, 18 insertions, 12 deletions
diff --git a/src/compiler/Makefile.sources b/src/compiler/Makefile.sources
index 213c04840e7..552a7d64fea 100644
--- a/src/compiler/Makefile.sources
+++ b/src/compiler/Makefile.sources
@@ -256,6 +256,7 @@ NIR_FILES = \
nir/nir_lower_locals_to_regs.c \
nir/nir_lower_idiv.c \
nir/nir_lower_indirect_derefs.c \
+ nir/nir_lower_input_attachments.c \
nir/nir_lower_int64.c \
nir/nir_lower_interpolation.c \
nir/nir_lower_int_to_float.c \
diff --git a/src/compiler/nir/meson.build b/src/compiler/nir/meson.build
index 75dbd2809d0..01ddcdf0ea0 100644
--- a/src/compiler/nir/meson.build
+++ b/src/compiler/nir/meson.build
@@ -134,6 +134,7 @@ files_libnir = files(
'nir_lower_locals_to_regs.c',
'nir_lower_idiv.c',
'nir_lower_indirect_derefs.c',
+ 'nir_lower_input_attachments.c',
'nir_lower_int64.c',
'nir_lower_interpolation.c',
'nir_lower_int_to_float.c',
diff --git a/src/compiler/nir/nir.h b/src/compiler/nir/nir.h
index 700174ca02a..ffb6908073b 100644
--- a/src/compiler/nir/nir.h
+++ b/src/compiler/nir/nir.h
@@ -3494,6 +3494,8 @@ bool nir_lower_non_uniform_access(nir_shader *shader,
bool nir_lower_idiv(nir_shader *shader);
+bool nir_lower_input_attachments(nir_shader *shader);
+
bool nir_lower_clip_vs(nir_shader *shader, unsigned ucp_enables, bool use_vars);
bool nir_lower_clip_fs(nir_shader *shader, unsigned ucp_enables);
bool nir_lower_clip_cull_distance_arrays(nir_shader *nir);
diff --git a/src/intel/vulkan/anv_nir_lower_input_attachments.c b/src/compiler/nir/nir_lower_input_attachments.c
index 9c6f9f434d7..25473eab558 100644
--- a/src/intel/vulkan/anv_nir_lower_input_attachments.c
+++ b/src/compiler/nir/nir_lower_input_attachments.c
@@ -21,8 +21,8 @@
* IN THE SOFTWARE.
*/
-#include "anv_nir.h"
-#include "nir/nir_builder.h"
+#include "nir.h"
+#include "nir_builder.h"
static nir_ssa_def *
load_frag_coord(nir_builder *b)
@@ -47,7 +47,7 @@ load_frag_coord(nir_builder *b)
return nir_load_var(b, pos);
}
-static void
+static bool
try_lower_input_load(nir_function_impl *impl, nir_intrinsic_instr *load)
{
nir_deref_instr *deref = nir_src_as_deref(load->src[0]);
@@ -56,7 +56,7 @@ try_lower_input_load(nir_function_impl *impl, nir_intrinsic_instr *load)
enum glsl_sampler_dim image_dim = glsl_get_sampler_dim(deref->type);
if (image_dim != GLSL_SAMPLER_DIM_SUBPASS &&
image_dim != GLSL_SAMPLER_DIM_SUBPASS_MS)
- return;
+ return false;
const bool multisampled = (image_dim == GLSL_SAMPLER_DIM_SUBPASS_MS);
@@ -75,6 +75,7 @@ try_lower_input_load(nir_function_impl *impl, nir_intrinsic_instr *load)
nir_tex_instr *tex = nir_tex_instr_create(b.shader, 3 + multisampled);
tex->op = nir_texop_txf;
+ tex->sampler_dim = image_dim;
switch (glsl_get_sampler_result_type(deref->type)) {
case GLSL_TYPE_FLOAT:
@@ -116,12 +117,15 @@ try_lower_input_load(nir_function_impl *impl, nir_intrinsic_instr *load)
nir_ssa_def_rewrite_uses(&load->dest.ssa,
nir_src_for_ssa(&tex->dest.ssa));
+
+ return true;
}
-void
-anv_nir_lower_input_attachments(nir_shader *shader)
+bool
+nir_lower_input_attachments(nir_shader *shader)
{
assert(shader->info.stage == MESA_SHADER_FRAGMENT);
+ bool progress = false;
nir_foreach_function(function, shader) {
if (!function->impl)
@@ -137,8 +141,10 @@ anv_nir_lower_input_attachments(nir_shader *shader)
if (load->intrinsic != nir_intrinsic_image_deref_load)
continue;
- try_lower_input_load(function->impl, load);
+ progress |= try_lower_input_load(function->impl, load);
}
}
}
+
+ return progress;
}
diff --git a/src/intel/Makefile.sources b/src/intel/Makefile.sources
index 7a44b72f449..86d900a0bac 100644
--- a/src/intel/Makefile.sources
+++ b/src/intel/Makefile.sources
@@ -245,7 +245,6 @@ VULKAN_FILES := \
vulkan/anv_nir.h \
vulkan/anv_nir_add_base_work_group_id.c \
vulkan/anv_nir_apply_pipeline_layout.c \
- vulkan/anv_nir_lower_input_attachments.c \
vulkan/anv_nir_lower_multiview.c \
vulkan/anv_nir_lower_push_constants.c \
vulkan/anv_nir_lower_ycbcr_textures.c \
diff --git a/src/intel/vulkan/anv_nir.h b/src/intel/vulkan/anv_nir.h
index c132264b299..844e5b0bfd4 100644
--- a/src/intel/vulkan/anv_nir.h
+++ b/src/intel/vulkan/anv_nir.h
@@ -31,8 +31,6 @@
extern "C" {
#endif
-void anv_nir_lower_input_attachments(nir_shader *shader);
-
void anv_nir_lower_push_constants(nir_shader *shader);
bool anv_nir_lower_multiview(nir_shader *shader, uint32_t view_mask);
diff --git a/src/intel/vulkan/anv_pipeline.c b/src/intel/vulkan/anv_pipeline.c
index ea01b2f04f9..8fa02aedfa1 100644
--- a/src/intel/vulkan/anv_pipeline.c
+++ b/src/intel/vulkan/anv_pipeline.c
@@ -607,7 +607,7 @@ anv_pipeline_lower_nir(struct anv_pipeline *pipeline,
if (nir->info.stage == MESA_SHADER_FRAGMENT) {
NIR_PASS_V(nir, nir_lower_wpos_center, pipeline->sample_shading_enable);
- NIR_PASS_V(nir, anv_nir_lower_input_attachments);
+ NIR_PASS_V(nir, nir_lower_input_attachments);
}
NIR_PASS_V(nir, anv_nir_lower_ycbcr_textures, layout);
diff --git a/src/intel/vulkan/meson.build b/src/intel/vulkan/meson.build
index 7fe660983d9..6aa35f3ab3a 100644
--- a/src/intel/vulkan/meson.build
+++ b/src/intel/vulkan/meson.build
@@ -126,7 +126,6 @@ libanv_files = files(
'anv_nir.h',
'anv_nir_add_base_work_group_id.c',
'anv_nir_apply_pipeline_layout.c',
- 'anv_nir_lower_input_attachments.c',
'anv_nir_lower_multiview.c',
'anv_nir_lower_push_constants.c',
'anv_nir_lower_ycbcr_textures.c',