summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJason Ekstrand <[email protected]>2016-02-18 11:44:26 -0800
committerJason Ekstrand <[email protected]>2016-02-18 11:44:26 -0800
commite0565f40ea7f1653318a3e33cfeb46dcdbfd28ae (patch)
tree984230504dba8b3f953a4ed115dd879ceef76b2c
parent79c0781f44af2a93473c68cf317bb6844f31cfc8 (diff)
anv/pipeline: Use nir's num_images for allocating image_params
-rw-r--r--src/intel/vulkan/anv_nir_apply_pipeline_layout.c5
-rw-r--r--src/intel/vulkan/anv_pipeline.c5
2 files changed, 6 insertions, 4 deletions
diff --git a/src/intel/vulkan/anv_nir_apply_pipeline_layout.c b/src/intel/vulkan/anv_nir_apply_pipeline_layout.c
index 4600872d1f6..4be630bcbe8 100644
--- a/src/intel/vulkan/anv_nir_apply_pipeline_layout.c
+++ b/src/intel/vulkan/anv_nir_apply_pipeline_layout.c
@@ -280,6 +280,7 @@ anv_nir_apply_pipeline_layout(struct anv_pipeline *pipeline,
struct anv_pipeline_bind_map map = {
.surface_count = 0,
.sampler_count = 0,
+ .image_count = 0,
};
for (uint32_t set = 0; set < layout->num_sets; set++) {
@@ -351,6 +352,7 @@ anv_nir_apply_pipeline_layout(struct anv_pipeline *pipeline,
}
if (map.image_count > 0) {
+ assert(map.image_count <= MAX_IMAGES);
nir_foreach_variable(var, &shader->uniforms) {
if (glsl_type_is_image(var->type) ||
(glsl_type_is_array(var->type) &&
@@ -369,7 +371,8 @@ anv_nir_apply_pipeline_layout(struct anv_pipeline *pipeline,
}
struct anv_push_constants *null_data = NULL;
- const gl_constant_value **param = prog_data->param + shader->num_uniforms;
+ const gl_constant_value **param =
+ prog_data->param + (shader->num_uniforms / 4);
const struct brw_image_param *image_param = null_data->images;
for (uint32_t i = 0; i < map.image_count; i++) {
setup_vec4_uniform_value(param + BRW_IMAGE_PARAM_SURFACE_IDX_OFFSET,
diff --git a/src/intel/vulkan/anv_pipeline.c b/src/intel/vulkan/anv_pipeline.c
index 2f1ce3956a9..27872d2769a 100644
--- a/src/intel/vulkan/anv_pipeline.c
+++ b/src/intel/vulkan/anv_pipeline.c
@@ -341,9 +341,8 @@ anv_pipeline_compile(struct anv_pipeline *pipeline,
if (pipeline->layout && pipeline->layout->stage[stage].has_dynamic_offsets)
prog_data->nr_params += MAX_DYNAMIC_BUFFERS * 2;
- if (pipeline->bindings[stage].image_count > 0)
- prog_data->nr_params += pipeline->bindings[stage].image_count *
- BRW_IMAGE_PARAM_SIZE;
+ if (nir->info.num_images > 0)
+ prog_data->nr_params += nir->info.num_images * BRW_IMAGE_PARAM_SIZE;
if (prog_data->nr_params > 0) {
/* XXX: I think we're leaking this */