mirror of
https://gitlab.freedesktop.org/wlroots/wlroots.git
synced 2026-04-18 06:47:31 -04:00
Merge branch 'default-vk' into 'master'
Draft: render: use Vulkan renderer by default if available See merge request wlroots/wlroots!4103
This commit is contained in:
commit
2b5cd18c75
2 changed files with 15 additions and 20 deletions
|
|
@ -2791,11 +2791,6 @@ error:
|
||||||
}
|
}
|
||||||
|
|
||||||
struct wlr_renderer *wlr_vk_renderer_create_with_drm_fd(int drm_fd) {
|
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
|
// NOTE: we could add functionality to allow the compositor passing its
|
||||||
// name and version to this function. Just use dummies until then,
|
// name and version to this function. Just use dummies until then,
|
||||||
// shouldn't be relevant to the driver anyways
|
// shouldn't be relevant to the driver anyways
|
||||||
|
|
|
||||||
|
|
@ -265,6 +265,21 @@ struct wlr_renderer *renderer_autocreate_with_drm_fd(int drm_fd) {
|
||||||
bool is_auto = strcmp(renderer_name, "auto") == 0;
|
bool is_auto = strcmp(renderer_name, "auto") == 0;
|
||||||
struct wlr_renderer *renderer = NULL;
|
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 WLR_HAS_GLES2_RENDERER
|
||||||
if (is_auto || strcmp(renderer_name, "gles2") == 0) {
|
if (is_auto || strcmp(renderer_name, "gles2") == 0) {
|
||||||
if (drm_fd < 0) {
|
if (drm_fd < 0) {
|
||||||
|
|
@ -280,21 +295,6 @@ struct wlr_renderer *renderer_autocreate_with_drm_fd(int drm_fd) {
|
||||||
}
|
}
|
||||||
#endif
|
#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;
|
bool has_render_node = false;
|
||||||
if (is_auto && drm_fd >= 0) {
|
if (is_auto && drm_fd >= 0) {
|
||||||
char *render_node = drmGetRenderDeviceNameFromFd(drm_fd);
|
char *render_node = drmGetRenderDeviceNameFromFd(drm_fd);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue