mirror of
https://gitlab.freedesktop.org/wlroots/wlroots.git
synced 2026-04-17 06:46:39 -04:00
render: replace wlr_renderer_get_drm_fd() with drm_dev_id
wlr_renderer_get_drm_fd() forces the renderer to open the DRM node and keep the FD around for no good reason. Instead, use dev_t to refer to a DRM device. This also removes footguns related to FD ownership.
This commit is contained in:
parent
ebef710746
commit
986a2d9f66
13 changed files with 91 additions and 146 deletions
|
|
@ -1294,11 +1294,6 @@ destroy_image:
|
|||
return false;
|
||||
}
|
||||
|
||||
static int vulkan_get_drm_fd(struct wlr_renderer *wlr_renderer) {
|
||||
struct wlr_vk_renderer *renderer = vulkan_get_renderer(wlr_renderer);
|
||||
return renderer->dev->drm_fd;
|
||||
}
|
||||
|
||||
static struct wlr_render_pass *vulkan_begin_buffer_pass(struct wlr_renderer *wlr_renderer,
|
||||
struct wlr_buffer *buffer, const struct wlr_buffer_pass_options *options) {
|
||||
struct wlr_vk_renderer *renderer = vulkan_get_renderer(wlr_renderer);
|
||||
|
|
@ -1322,7 +1317,6 @@ static const struct wlr_renderer_impl renderer_impl = {
|
|||
.get_texture_formats = vulkan_get_texture_formats,
|
||||
.get_render_formats = vulkan_get_render_formats,
|
||||
.destroy = vulkan_destroy,
|
||||
.get_drm_fd = vulkan_get_drm_fd,
|
||||
.texture_from_buffer = vulkan_texture_from_buffer,
|
||||
.begin_buffer_pass = vulkan_begin_buffer_pass,
|
||||
};
|
||||
|
|
@ -2156,6 +2150,10 @@ struct wlr_renderer *vulkan_renderer_create_for_device(struct wlr_vk_device *dev
|
|||
wl_list_init(&renderer->render_buffers);
|
||||
wl_list_init(&renderer->pipeline_layouts);
|
||||
|
||||
if (vulkan_get_phdev_drm_dev_id(dev->phdev, &renderer->drm_dev_id)) {
|
||||
renderer->wlr_renderer.drm_dev_id = &renderer->drm_dev_id;
|
||||
}
|
||||
|
||||
if (!init_static_render_data(renderer)) {
|
||||
goto error;
|
||||
}
|
||||
|
|
@ -2221,15 +2219,6 @@ struct wlr_renderer *wlr_vk_renderer_create_with_drm_fd(int drm_fd) {
|
|||
return NULL;
|
||||
}
|
||||
|
||||
// Do not use the drm_fd that was passed in: we should prefer the render
|
||||
// node even if a primary node was provided
|
||||
dev->drm_fd = vulkan_open_phdev_drm_fd(phdev);
|
||||
if (dev->drm_fd < 0) {
|
||||
vulkan_device_destroy(dev);
|
||||
vulkan_instance_destroy(ini);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return vulkan_renderer_create_for_device(dev);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue