anv,i965: Move CS shared lowering into anv
authorJason Ekstrand <jason.ekstrand@intel.com>
Tue, 22 Aug 2017 00:41:28 +0000 (17:41 -0700)
committerJason Ekstrand <jason.ekstrand@intel.com>
Thu, 24 Aug 2017 23:34:29 +0000 (16:34 -0700)
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 <jordan.l.justen@intel.com>
src/intel/compiler/brw_fs.cpp
src/intel/vulkan/anv_pipeline.c

index f2596e388617675d06025a6b0d5949f0fcb9b5bf..eb9b4c38909dc1edfd24f122aa8f4a392c56575d 100644 (file)
@@ -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.
index 6ae682fd8d0bd230a7f01adaf2ff6fbba1e2bbb1..279d76561a10d869e37a35d3bf5f652e563ae44d 100644 (file)
@@ -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 */