Mesa (master): anv/lower_push_constants: Stop treating scalar specially

Jason Ekstrand jekstrand at kemper.freedesktop.org
Wed Apr 20 16:20:28 UTC 2016


Module: Mesa
Branch: master
Commit: 35b758c378900b2c611050e782ca8100fbcc671d
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=35b758c378900b2c611050e782ca8100fbcc671d

Author: Jason Ekstrand <jason.ekstrand at intel.com>
Date:   Mon Apr 18 17:17:31 2016 -0700

anv/lower_push_constants: Stop treating scalar specially

All of the code that did something special based on vec4 vs. scalar is
bogus.  In the backend, everything is now in units of bytes and the vec4
backend can handle full std140 packing so we don't need to do anything
special anymore.

Signed-off-by: Jason Ekstrand <jason at jlekstrand.net>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=94998

---

 src/intel/vulkan/anv_nir.h                      |  2 +-
 src/intel/vulkan/anv_nir_lower_push_constants.c | 25 ++-----------------------
 src/intel/vulkan/anv_pipeline.c                 |  5 +----
 3 files changed, 4 insertions(+), 28 deletions(-)

diff --git a/src/intel/vulkan/anv_nir.h b/src/intel/vulkan/anv_nir.h
index 606fd1c..567de6c 100644
--- a/src/intel/vulkan/anv_nir.h
+++ b/src/intel/vulkan/anv_nir.h
@@ -30,7 +30,7 @@
 extern "C" {
 #endif
 
-void anv_nir_lower_push_constants(nir_shader *shader, bool is_scalar);
+void anv_nir_lower_push_constants(nir_shader *shader);
 
 void anv_nir_apply_dynamic_offsets(struct anv_pipeline *pipeline,
                                    nir_shader *shader,
diff --git a/src/intel/vulkan/anv_nir_lower_push_constants.c b/src/intel/vulkan/anv_nir_lower_push_constants.c
index 53cd3d7..44a1a3f 100644
--- a/src/intel/vulkan/anv_nir_lower_push_constants.c
+++ b/src/intel/vulkan/anv_nir_lower_push_constants.c
@@ -23,16 +23,9 @@
 
 #include "anv_nir.h"
 
-struct lower_push_constants_state {
-   nir_shader *shader;
-   bool is_scalar;
-};
-
 static bool
 lower_push_constants_block(nir_block *block, void *void_state)
 {
-   struct lower_push_constants_state *state = void_state;
-
    nir_foreach_instr(block, instr) {
       if (instr->type != nir_instr_type_intrinsic)
          continue;
@@ -43,9 +36,6 @@ lower_push_constants_block(nir_block *block, void *void_state)
       if (intrin->intrinsic != nir_intrinsic_load_push_constant)
          continue;
 
-      /* This wont work for vec4 stages. */
-      assert(state->is_scalar);
-
       assert(intrin->const_index[0] % 4 == 0);
       assert(intrin->const_index[1] == 128);
 
@@ -57,21 +47,10 @@ lower_push_constants_block(nir_block *block, void *void_state)
 }
 
 void
-anv_nir_lower_push_constants(nir_shader *shader, bool is_scalar)
+anv_nir_lower_push_constants(nir_shader *shader)
 {
-   struct lower_push_constants_state state = {
-      .shader = shader,
-      .is_scalar = is_scalar,
-   };
-
    nir_foreach_function(shader, function) {
       if (function->impl)
-         nir_foreach_block(function->impl, lower_push_constants_block, &state);
+         nir_foreach_block(function->impl, lower_push_constants_block, NULL);
    }
-
-   assert(shader->num_uniforms % 4 == 0);
-   if (is_scalar)
-      shader->num_uniforms /= 4;
-   else
-      shader->num_uniforms = DIV_ROUND_UP(shader->num_uniforms, 16);
 }
diff --git a/src/intel/vulkan/anv_pipeline.c b/src/intel/vulkan/anv_pipeline.c
index a215a37..007c58b 100644
--- a/src/intel/vulkan/anv_pipeline.c
+++ b/src/intel/vulkan/anv_pipeline.c
@@ -313,16 +313,13 @@ anv_pipeline_compile(struct anv_pipeline *pipeline,
                      struct brw_stage_prog_data *prog_data,
                      struct anv_pipeline_bind_map *map)
 {
-   const struct brw_compiler *compiler =
-      pipeline->device->instance->physicalDevice.compiler;
-
    nir_shader *nir = anv_shader_compile_to_nir(pipeline->device,
                                                module, entrypoint, stage,
                                                spec_info);
    if (nir == NULL)
       return NULL;
 
-   anv_nir_lower_push_constants(nir, compiler->scalar_stage[stage]);
+   anv_nir_lower_push_constants(nir);
 
    /* Figure out the number of parameters */
    prog_data->nr_params = 0;




More information about the mesa-commit mailing list