From 76d346dce418aa8fa41a8493710e253888b7a20f Mon Sep 17 00:00:00 2001 From: Simon Ser Date: Thu, 4 May 2023 13:36:44 +0200 Subject: [PATCH] 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. --- render/vulkan/renderer.c | 5 ----- render/wlr_renderer.c | 30 +++++++++++++++--------------- 2 files changed, 15 insertions(+), 20 deletions(-) diff --git a/render/vulkan/renderer.c b/render/vulkan/renderer.c index 2adb18223..ddac8c029 100644 --- a/render/vulkan/renderer.c +++ b/render/vulkan/renderer.c @@ -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 diff --git a/render/wlr_renderer.c b/render/wlr_renderer.c index cfddca884..27feb2913 100644 --- a/render/wlr_renderer.c +++ b/render/wlr_renderer.c @@ -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);