pvr: add handling for retry error in pvr_srv_rgx_submit_transfer2()

The caller of pvr_srv_rgx_submit_transfer2() handles VK_NOT_READY, but
pvr_srv_rgx_submit_transfer2() would never return this error as it was missing
handling for retry errors returned by the
PVR_SRV_BRIDGE_RGXTQ_RGXSUBMITTRANSFER2 bridge call. This resulted in
pvr_srv_rgx_submit_transfer2() returning VK_ERROR_OUT_OF_DEVICE_MEMORY, which
was treated as a device lost error by callers further up the stack.

Fixes a hang seen with a release/debugoptimized build when running
KHR-GLES3.copy_tex_image_conversions.required.cubemap_negy_cubemap_negy as part
of a batch of tests.

Signed-off-by: Frank Binns <frank.binns@imgtec.com>
Acked-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/31679>
This commit is contained in:
Frank Binns
2024-07-24 13:42:44 +01:00
committed by Marge Bot
parent eb77cad906
commit a186e28476
@@ -1028,6 +1028,10 @@ VkResult pvr_srv_rgx_submit_transfer2(int fd,
&ret,
sizeof(ret));
if (result || ret.error != PVR_SRV_OK) {
/* There is no 'retry' VkResult, so treat it as VK_NOT_READY instead. */
if (result == PVR_SRV_ERROR_RETRY || ret.error == PVR_SRV_ERROR_RETRY)
return VK_NOT_READY;
return vk_bridge_err(VK_ERROR_OUT_OF_DEVICE_MEMORY,
"PVR_SRV_BRIDGE_RGXTQ_RGXSUBMITTRANSFER2",
ret);