From: Jason Ekstrand Date: Thu, 18 Feb 2016 19:44:26 +0000 (-0800) Subject: anv/pipeline: Use nir's num_images for allocating image_params X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=e0565f40ea7f1653318a3e33cfeb46dcdbfd28ae;p=mesa.git anv/pipeline: Use nir's num_images for allocating image_params --- 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 */