summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJason Ekstrand <[email protected]>2016-04-18 17:17:31 -0700
committerJason Ekstrand <[email protected]>2016-04-20 09:14:47 -0700
commit35b758c378900b2c611050e782ca8100fbcc671d (patch)
tree065bd58973e6cdca45aa5150dd149101fd170293
parent3bbe8a09eaf95548313db13b4e56dbdd35d2755e (diff)
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 <[email protected]> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=94998
-rw-r--r--src/intel/vulkan/anv_nir.h2
-rw-r--r--src/intel/vulkan/anv_nir_lower_push_constants.c25
-rw-r--r--src/intel/vulkan/anv_pipeline.c5
3 files changed, 4 insertions, 28 deletions
diff --git a/src/intel/vulkan/anv_nir.h b/src/intel/vulkan/anv_nir.h
index 606fd1c0565..567de6c2d08 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 53cd3d73793..44a1a3fde27 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 a215a377a96..007c58be436 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;