summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJason Ekstrand <[email protected]>2017-08-21 17:41:28 -0700
committerJason Ekstrand <[email protected]>2017-08-24 16:34:29 -0700
commit95f533d922d3e628f56eec50c5680fca6f2cbb5e (patch)
tree5d4ad32fbf8493e4ac71b0fb62698ace431b710e
parent725741f10d5e8889115c5f25b7a1fafb7099d97c (diff)
anv,i965: Move CS shared lowering into anv
Right now, OpenGL uses the GLSL lowering for shared variables and anv uses NIR to lower them. For a long time, we've done this weird thing where we do the NIR lowering unconditionally and then add the SLM sizes from the two together. This works because one of them will always be 0 but it's a bit sketchy. Let's just move the NIR-based lowering into anv_pipeline and get rid of the sketch. Reviewed-by: Jordan Justen <[email protected]>
-rw-r--r--src/intel/compiler/brw_fs.cpp2
-rw-r--r--src/intel/vulkan/anv_pipeline.c5
2 files changed, 5 insertions, 2 deletions
diff --git a/src/intel/compiler/brw_fs.cpp b/src/intel/compiler/brw_fs.cpp
index f2596e38861..eb9b4c38909 100644
--- a/src/intel/compiler/brw_fs.cpp
+++ b/src/intel/compiler/brw_fs.cpp
@@ -6751,8 +6751,6 @@ brw_compile_cs(const struct brw_compiler *compiler, void *log_data,
{
nir_shader *shader = nir_shader_clone(mem_ctx, src_shader);
shader = brw_nir_apply_sampler_key(shader, compiler, &key->tex, true);
- brw_nir_lower_cs_shared(shader);
- prog_data->base.total_shared += shader->num_shared;
/* Now that we cloned the nir_shader, we can update num_uniforms based on
* the thread_local_id_index.
diff --git a/src/intel/vulkan/anv_pipeline.c b/src/intel/vulkan/anv_pipeline.c
index 6ae682fd8d0..279d76561a1 100644
--- a/src/intel/vulkan/anv_pipeline.c
+++ b/src/intel/vulkan/anv_pipeline.c
@@ -381,6 +381,11 @@ anv_pipeline_compile(struct anv_pipeline *pipeline,
if (stage != MESA_SHADER_COMPUTE)
NIR_PASS_V(nir, anv_nir_lower_multiview, pipeline->subpass->view_mask);
+ if (stage == MESA_SHADER_COMPUTE) {
+ NIR_PASS_V(nir, brw_nir_lower_cs_shared);
+ prog_data->total_shared = nir->num_shared;
+ }
+
nir_shader_gather_info(nir, nir_shader_get_entrypoint(nir));
/* Figure out the number of parameters */