anv/pipeline: Use nir's num_images for allocating image_params

This commit is contained in:
Jason Ekstrand 2016-02-18 11:44:26 -08:00
parent 79c0781f44
commit e0565f40ea
2 changed files with 6 additions and 4 deletions

View File

@ -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,

View File

@ -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 */