render: use Vulkan renderer by default if available

The Vulkan renderer has matured and is now ready for production.
Use it by default. If Vulkan is not supported, fall back to GLES2.
This commit is contained in:
Simon Ser 2023-05-04 13:36:44 +02:00
parent 403eac51c4
commit 76d346dce4
2 changed files with 15 additions and 20 deletions

View file

@ -2200,11 +2200,6 @@ error:
}
struct wlr_renderer *wlr_vk_renderer_create_with_drm_fd(int drm_fd) {
wlr_log(WLR_INFO, "The vulkan renderer is only experimental and "
"not expected to be ready for daily use");
wlr_log(WLR_INFO, "Run with VK_INSTANCE_LAYERS=VK_LAYER_KHRONOS_validation "
"to enable the validation layer");
// NOTE: we could add functionality to allow the compositor passing its
// name and version to this function. Just use dummies until then,
// shouldn't be relevant to the driver anyways

View file

@ -265,6 +265,21 @@ struct wlr_renderer *renderer_autocreate_with_drm_fd(int drm_fd) {
bool is_auto = strcmp(renderer_name, "auto") == 0;
struct wlr_renderer *renderer = NULL;
#if WLR_HAS_VULKAN_RENDERER
if (is_auto || strcmp(renderer_name, "vulkan") == 0) {
if (drm_fd < 0) {
log_creation_failure(is_auto, "Cannot create Vulkan renderer: no DRM FD available");
} else {
renderer = wlr_vk_renderer_create_with_drm_fd(drm_fd);
if (renderer) {
return renderer;
} else {
log_creation_failure(is_auto, "Failed to create a Vulkan renderer");
}
}
}
#endif
#if WLR_HAS_GLES2_RENDERER
if (is_auto || strcmp(renderer_name, "gles2") == 0) {
if (drm_fd < 0) {
@ -280,21 +295,6 @@ struct wlr_renderer *renderer_autocreate_with_drm_fd(int drm_fd) {
}
#endif
#if WLR_HAS_VULKAN_RENDERER
if (strcmp(renderer_name, "vulkan") == 0) {
if (drm_fd < 0) {
log_creation_failure(is_auto, "Cannot create Vulkan renderer: no DRM FD available");
} else {
renderer = wlr_vk_renderer_create_with_drm_fd(drm_fd);
if (renderer) {
return renderer;
} else {
log_creation_failure(is_auto, "Failed to create a Vulkan renderer");
}
}
}
#endif
bool has_render_node = false;
if (is_auto && drm_fd >= 0) {
char *render_node = drmGetRenderDeviceNameFromFd(drm_fd);