mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 09:38:07 +02:00
zink: refcount the correct query pool
otherwise the pool is freed before the query and zink will
give the vulkan driver NULL query pool which can make it crash.
this was seen when running the following cases with
primitivesGeneratedQueryWithRasterizerDiscard and color write
features disabled:
dEQP-GL45.functional.tessellation.invariance.outer_triangle_set.triangles_fractional_odd_spacing
dEQP-GL45.functional.tessellation.invariance.outer_triangle_set.triangles_fractional_even_spacing
dEQP-GL45.functional.tessellation.invariance.outer_triangle_set.quads_equal_spacing
dEQP-GL45.functional.tessellation.invariance.outer_triangle_set.quads_fractional_odd_spacing
dEQP-GL45.functional.tessellation.invariance.outer_triangle_set.quads_fractional_even_spacing
dEQP-GL45.functional.tessellation.invariance.tess_coord_component_range.triangles_equal_spacing_ccw
dEQP-GL45.functional.tessellation.invariance.tess_coord_component_range.triangles_equal_spacing_ccw_point_mode
dEQP-GL45.functional.tessellation.invariance.tess_coord_component_range.triangles_equal_spacing_cw
dEQP-GL45.functional.tessellation.invariance.tess_coord_component_range.triangles_equal_spacing_cw_point_mode
dEQP-GL45.functional.tessellation.invariance.tess_coord_component_range.triangles_fractional_odd_spacing_ccw
dEQP-GL45.functional.tessellation.invariance.tess_coord_component_range.triangles_fractional_odd_spacing_ccw_point_mode
dEQP-GL45.functional.tessellation.invariance.tess_coord_component_range.triangles_fractional_odd_spacing_cw
dEQP-GL45.functional.tessellation.invariance.tess_coord_component_range.triangles_fractional_odd_spacing_cw_point_mode
dEQP-GL45.functional.tessellation.invariance.tess_coord_component_range.triangles_fractional_even_spacing_ccw
dEQP-GL45.functional.tessellation.invariance.tess_coord_component_range.triangles_fractional_even_spacing_ccw_point_mode
Fixes: e5d517f362 ("zink: rework query pool overflow")
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22575>
This commit is contained in:
parent
f6b5e128c1
commit
3291050cc1
1 changed files with 2 additions and 4 deletions
|
|
@ -468,8 +468,6 @@ query_pool_get_range(struct zink_context *ctx, struct zink_query *q)
|
|||
vkq->pool->refcount++;
|
||||
} else {
|
||||
struct zink_query_pool *pool = find_or_allocate_qp(ctx, q, pool_idx);
|
||||
pool->refcount++;
|
||||
pool->last_range++;
|
||||
if (pool->last_range == NUM_QUERIES) {
|
||||
list_del(&pool->list);
|
||||
pool = find_or_allocate_qp(ctx, q, pool_idx);
|
||||
|
|
@ -480,12 +478,12 @@ query_pool_get_range(struct zink_context *ctx, struct zink_query *q)
|
|||
return;
|
||||
}
|
||||
|
||||
pool->refcount++;
|
||||
vkq->refcount = 1;
|
||||
vkq->needs_reset = true;
|
||||
vkq->pool = pool;
|
||||
vkq->started = false;
|
||||
vkq->query_id = pool->last_range;
|
||||
|
||||
vkq->query_id = pool->last_range++;
|
||||
}
|
||||
unref_vk_query(ctx, start->vkq[i]);
|
||||
start->vkq[i] = vkq;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue