Kaynağa Gözat

iris: Properly unreference extra VBOs for draw parameters

bound_vertex_buffers doesn't include extra draw parameters buffers.
Tracking this correctly is kind of complicated, and iris_destroy_state
isn't exactly in a hot path, so just loop over all VBO bindings.

Fixes: 4122665dd9 (iris: Enable ARB_shader_draw_parameters support)
Reported-by: Sergii Romantsov <sergii.romantsov@globallogic.com>
(cherry picked from commit face221283)
tags/mesa-19.2.2
Kenneth Graunke 6 yıl önce
ebeveyn
işleme
aa89c0a2bd
1 değiştirilmiş dosya ile 3 ekleme ve 3 silme
  1. 3
    3
      src/gallium/drivers/iris/iris_state.c

+ 3
- 3
src/gallium/drivers/iris/iris_state.c Dosyayı Görüntüle

@@ -5845,11 +5845,11 @@ iris_destroy_state(struct iris_context *ice)
pipe_resource_reference(&ice->draw.draw_params_res, NULL);
pipe_resource_reference(&ice->draw.derived_draw_params_res, NULL);

uint64_t bound_vbs = ice->state.bound_vertex_buffers;
while (bound_vbs) {
const int i = u_bit_scan64(&bound_vbs);
/* Loop over all VBOs, including ones for draw parameters */
for (unsigned i = 0; i < ARRAY_SIZE(genx->vertex_buffers); i++) {
pipe_resource_reference(&genx->vertex_buffers[i].resource, NULL);
}

free(ice->state.genx);

for (int i = 0; i < 4; i++) {

Loading…
İptal
Kaydet