On 2 December 2013 11:39, Francisco Jerez <curroje...@riseup.net> wrote:
> + > +void > +backend_visitor::setup_image_uniform_values(const gl_uniform_storage > *storage) > +{ > + const unsigned stage = _mesa_program_target_to_index(prog->Target); > + > + for (unsigned i = 0; i < MAX2(storage->array_elements, 1); i++) { > + const unsigned image_idx = storage->image[stage].index + i; > + brw_image_param *param = &stage_prog_data->image_param[image_idx]; > + > + param->surface_idx = > + stage_prog_data->binding_table.image_start + image_idx; > + > + setup_vector_uniform_values(¶m->surface_idx, sizeof(uint32_t), > 1); > + setup_vector_uniform_values(param->offset, sizeof(uint32_t), 2); > + setup_vector_uniform_values(param->size, sizeof(uint32_t), 3); > + setup_vector_uniform_values(param->stride, sizeof(uint32_t), 4); > + setup_vector_uniform_values(param->tiling, sizeof(uint32_t), 3); > + setup_vector_uniform_values(param->swizzling, sizeof(uint32_t), 2); > + > + brw_mark_surface_used(stage_prog_data, param->surface_idx); > + } > +} > One additional thought: I'm concerned about the fact that the correctness of the code depends on the BRW_IMAGE_PARAM_* defines matching the order in which we call setup_vector_uniform_values() here. How difficult would it be to add some assertions to this codepath to make sure that the defines properly match the order in which the uniforms get emitted?
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev