zink: handle swapchain handoffs around makecurrent
when a new resource is created for an extant swapchain, the existing acquire (if any) should be transferred to the resource to ensure expected behavior this should be enough to fix piglit's glx-make-current Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22431>
This commit is contained in:

committed by
Marge Bot

parent
5db5218044
commit
7704773619
@@ -115,7 +115,6 @@ glx@glx_ext_import_context@query context info,Fail
|
|||||||
glx@glx-buffer-age,Fail
|
glx@glx-buffer-age,Fail
|
||||||
glx@glx-buffer-age vblank_mode=0,Fail
|
glx@glx-buffer-age vblank_mode=0,Fail
|
||||||
|
|
||||||
glx@glx-make-current,Fail
|
|
||||||
glx@glx-multi-window-single-context,Crash
|
glx@glx-multi-window-single-context,Crash
|
||||||
glx@glx-swap-pixmap-bad,Fail
|
glx@glx-swap-pixmap-bad,Fail
|
||||||
glx@glx-tfp,Crash
|
glx@glx-tfp,Crash
|
||||||
|
@@ -10,7 +10,6 @@ KHR-GL46.shader_ballot_tests.ShaderBallotFunctionRead
|
|||||||
|
|
||||||
# ignores copied from the old runner script
|
# ignores copied from the old runner script
|
||||||
spec@arb_map_buffer_alignment@arb_map_buffer_alignment-map-invalidate-range
|
spec@arb_map_buffer_alignment@arb_map_buffer_alignment-map-invalidate-range
|
||||||
glx@glx-make-current
|
|
||||||
spec@arb_timer_query.*
|
spec@arb_timer_query.*
|
||||||
spec@arb_sample_shading@builtin-gl-sample-mask
|
spec@arb_sample_shading@builtin-gl-sample-mask
|
||||||
spec@glsl-1.30@execution@tex-miplevel-selection.*
|
spec@glsl-1.30@execution@tex-miplevel-selection.*
|
||||||
|
@@ -22,7 +22,6 @@ glx@glx_ext_import_context@imported context has same context id,Fail
|
|||||||
glx@glx_ext_import_context@make current- multi process,Fail
|
glx@glx_ext_import_context@make current- multi process,Fail
|
||||||
glx@glx_ext_import_context@make current- single process,Fail
|
glx@glx_ext_import_context@make current- single process,Fail
|
||||||
glx@glx_ext_import_context@query context info,Fail
|
glx@glx_ext_import_context@query context info,Fail
|
||||||
glx@glx-make-current,Fail
|
|
||||||
glx@glx-swap-pixmap-bad,Fail
|
glx@glx-swap-pixmap-bad,Fail
|
||||||
|
|
||||||
# #6322
|
# #6322
|
||||||
|
@@ -22,7 +22,6 @@ glx@glx_ext_import_context@imported context has same context id,Fail
|
|||||||
glx@glx_ext_import_context@make current- multi process,Fail
|
glx@glx_ext_import_context@make current- multi process,Fail
|
||||||
glx@glx_ext_import_context@make current- single process,Fail
|
glx@glx_ext_import_context@make current- single process,Fail
|
||||||
glx@glx_ext_import_context@query context info,Fail
|
glx@glx_ext_import_context@query context info,Fail
|
||||||
glx@glx-make-current,Fail
|
|
||||||
glx@glx-swap-pixmap-bad,Fail
|
glx@glx-swap-pixmap-bad,Fail
|
||||||
|
|
||||||
# #6322
|
# #6322
|
||||||
|
@@ -1257,6 +1257,17 @@ resource_create(struct pipe_screen *pscreen,
|
|||||||
FREE_CL(res);
|
FREE_CL(res);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
struct kopper_displaytarget *cdt = res->obj->dt;
|
||||||
|
if (cdt->swapchain->num_acquires) {
|
||||||
|
/* this should be a reused swapchain after a MakeCurrent dance that deleted the original resource */
|
||||||
|
for (unsigned i = 0; i < cdt->swapchain->num_images; i++) {
|
||||||
|
if (!cdt->swapchain->images[i].acquired)
|
||||||
|
continue;
|
||||||
|
res->obj->dt_idx = i;
|
||||||
|
res->obj->image = cdt->swapchain->images[i].image;
|
||||||
|
res->layout = cdt->swapchain->images[i].layout;
|
||||||
|
}
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
/* frontbuffer */
|
/* frontbuffer */
|
||||||
struct zink_resource *back = (void*)loader_private;
|
struct zink_resource *back = (void*)loader_private;
|
||||||
|
Reference in New Issue
Block a user