summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKeith Packard <[email protected]>2018-06-26 16:01:45 -0700
committerKeith Packard <[email protected]>2018-06-27 10:02:18 -0700
commit60e6b6fa9651dcf94cf3f1405048f9ddbbd5dd48 (patch)
tree2e333883deb8f2985a2236fd4491f9c207ddcb5a
parent6bb046cd2952c7d862becf9960bfc48e4b8db0a4 (diff)
vulkan/wsi_common_display: Return SURFACE_LOST for fatal DRM errors
Instead of encouraging the client to re-create the swapchain and keep going with an OUT_OF_DATE error, tell the client that further use of the current surface will not succeed as the associated kernel objects are no longer valid. In particular, when a DRM lease is revoked, then the client needs to get another lease and create a new surface for that. Signed-off-by: Keith Packard <[email protected]> Reviewed-by: Jason Ekstrand <[email protected]>
-rw-r--r--src/vulkan/wsi/wsi_common_display.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/src/vulkan/wsi/wsi_common_display.c b/src/vulkan/wsi/wsi_common_display.c
index c36b87c18c3..4a2d88ff77e 100644
--- a/src/vulkan/wsi/wsi_common_display.c
+++ b/src/vulkan/wsi/wsi_common_display.c
@@ -1092,7 +1092,7 @@ wsi_display_acquire_next_image(struct wsi_swapchain *drv_chain,
ret = wsi_display_wait_for_event(wsi, timeout);
if (ret && ret != ETIMEDOUT) {
- result = VK_ERROR_OUT_OF_DATE_KHR;
+ result = VK_ERROR_SURFACE_LOST_KHR;
goto done;
}
}
@@ -1200,7 +1200,7 @@ wsi_display_setup_connector(wsi_display_connector *connector,
if (errno == ENOMEM)
result = VK_ERROR_OUT_OF_HOST_MEMORY;
else
- result = VK_ERROR_OUT_OF_DATE_KHR;
+ result = VK_ERROR_SURFACE_LOST_KHR;
goto bail;
}
@@ -1211,7 +1211,7 @@ wsi_display_setup_connector(wsi_display_connector *connector,
if (errno == ENOMEM)
result = VK_ERROR_OUT_OF_HOST_MEMORY;
else
- result = VK_ERROR_OUT_OF_DATE_KHR;
+ result = VK_ERROR_SURFACE_LOST_KHR;
goto bail_mode_res;
}
@@ -1220,7 +1220,7 @@ wsi_display_setup_connector(wsi_display_connector *connector,
connector->crtc_id = wsi_display_select_crtc(connector,
mode_res, drm_connector);
if (!connector->crtc_id) {
- result = VK_ERROR_OUT_OF_DATE_KHR;
+ result = VK_ERROR_SURFACE_LOST_KHR;
goto bail_connector;
}
}
@@ -1238,7 +1238,7 @@ wsi_display_setup_connector(wsi_display_connector *connector,
}
if (!drm_mode) {
- result = VK_ERROR_OUT_OF_DATE_KHR;
+ result = VK_ERROR_SURFACE_LOST_KHR;
goto bail_connector;
}
@@ -1425,7 +1425,7 @@ _wsi_display_queue_next(struct wsi_swapchain *drv_chain)
wsi_display_connector *connector = display_mode->connector;
if (wsi->fd < 0)
- return VK_ERROR_OUT_OF_DATE_KHR;
+ return VK_ERROR_SURFACE_LOST_KHR;
if (display_mode != connector->current_mode)
connector->active = false;
@@ -1497,7 +1497,7 @@ _wsi_display_queue_next(struct wsi_swapchain *drv_chain)
if (ret != -EACCES) {
connector->active = false;
image->state = WSI_IMAGE_IDLE;
- return VK_ERROR_OUT_OF_DATE_KHR;
+ return VK_ERROR_SURFACE_LOST_KHR;
}
/* Some other VT is currently active. Sit here waiting for