ANV_FROM_HANDLE(anv_device, device, _device);
ANV_FROM_HANDLE(anv_pipeline, pipeline, _pipeline);
+ for (unsigned s = 0; s < MESA_SHADER_STAGES; s++) {
+ free(pipeline->bindings[s].surface_to_descriptor);
+ free(pipeline->bindings[s].sampler_to_descriptor);
+ }
+
anv_reloc_list_finish(&pipeline->batch_relocs,
pAllocator ? pAllocator : &device->alloc);
if (pipeline->blend_state.map)
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 */
* - VS
* - GS
*/
- pipeline->urb.vs_start = push_constant_chunks;
- pipeline->urb.vs_size = vs_size;
- pipeline->urb.nr_vs_entries = nr_vs_entries;
+ pipeline->urb.start[MESA_SHADER_VERTEX] = push_constant_chunks;
+ pipeline->urb.size[MESA_SHADER_VERTEX] = vs_size;
+ pipeline->urb.entries[MESA_SHADER_VERTEX] = nr_vs_entries;
+
+ pipeline->urb.start[MESA_SHADER_GEOMETRY] = push_constant_chunks + vs_chunks;
+ pipeline->urb.size[MESA_SHADER_GEOMETRY] = gs_size;
+ pipeline->urb.entries[MESA_SHADER_GEOMETRY] = nr_gs_entries;
+
+ pipeline->urb.start[MESA_SHADER_TESS_CTRL] = push_constant_chunks;
+ pipeline->urb.size[MESA_SHADER_TESS_CTRL] = 1;
+ pipeline->urb.entries[MESA_SHADER_TESS_CTRL] = 0;
- pipeline->urb.gs_start = push_constant_chunks + vs_chunks;
- pipeline->urb.gs_size = gs_size;
- pipeline->urb.nr_gs_entries = nr_gs_entries;
+ pipeline->urb.start[MESA_SHADER_TESS_EVAL] = push_constant_chunks;
+ pipeline->urb.size[MESA_SHADER_TESS_EVAL] = 1;
+ pipeline->urb.entries[MESA_SHADER_TESS_EVAL] = 0;
}
static void