mirror of
https://gitlab.freedesktop.org/wlroots/wlroots.git
synced 2026-04-17 06:46:39 -04:00
render: use dev_t when creating renderer
We don't actually need to open a DRM node here. We just need a way to reference a DRM node. A dev_t is better suited for this.
This commit is contained in:
parent
986a2d9f66
commit
03c344de59
9 changed files with 86 additions and 79 deletions
|
|
@ -2193,7 +2193,7 @@ error:
|
|||
return NULL;
|
||||
}
|
||||
|
||||
struct wlr_renderer *wlr_vk_renderer_create_with_drm_fd(int drm_fd) {
|
||||
struct wlr_renderer *wlr_vk_renderer_create_with_drm_dev_id(dev_t dev_id) {
|
||||
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 "
|
||||
|
|
@ -2205,7 +2205,7 @@ struct wlr_renderer *wlr_vk_renderer_create_with_drm_fd(int drm_fd) {
|
|||
return NULL;
|
||||
}
|
||||
|
||||
VkPhysicalDevice phdev = vulkan_find_drm_phdev(ini, drm_fd);
|
||||
VkPhysicalDevice phdev = vulkan_find_drm_phdev(ini, dev_id);
|
||||
if (!phdev) {
|
||||
// We rather fail here than doing some guesswork
|
||||
wlr_log(WLR_ERROR, "Could not match drm and vulkan device");
|
||||
|
|
|
|||
|
|
@ -255,7 +255,7 @@ static void log_phdev(const VkPhysicalDeviceProperties *props) {
|
|||
wlr_log(WLR_INFO, " Driver version: %u.%u.%u", dv_major, dv_minor, dv_patch);
|
||||
}
|
||||
|
||||
VkPhysicalDevice vulkan_find_drm_phdev(struct wlr_vk_instance *ini, int drm_fd) {
|
||||
VkPhysicalDevice vulkan_find_drm_phdev(struct wlr_vk_instance *ini, dev_t devid) {
|
||||
VkResult res;
|
||||
uint32_t num_phdevs;
|
||||
|
||||
|
|
@ -272,12 +272,6 @@ VkPhysicalDevice vulkan_find_drm_phdev(struct wlr_vk_instance *ini, int drm_fd)
|
|||
return VK_NULL_HANDLE;
|
||||
}
|
||||
|
||||
struct stat drm_stat = {0};
|
||||
if (fstat(drm_fd, &drm_stat) != 0) {
|
||||
wlr_log_errno(WLR_ERROR, "fstat failed");
|
||||
return VK_NULL_HANDLE;
|
||||
}
|
||||
|
||||
for (uint32_t i = 0; i < num_phdevs; ++i) {
|
||||
VkPhysicalDevice phdev = phdevs[i];
|
||||
|
||||
|
|
@ -352,8 +346,7 @@ VkPhysicalDevice vulkan_find_drm_phdev(struct wlr_vk_instance *ini, int drm_fd)
|
|||
|
||||
dev_t primary_devid = makedev(drm_props.primaryMajor, drm_props.primaryMinor);
|
||||
dev_t render_devid = makedev(drm_props.renderMajor, drm_props.renderMinor);
|
||||
if (primary_devid == drm_stat.st_rdev ||
|
||||
render_devid == drm_stat.st_rdev) {
|
||||
if (primary_devid == devid || render_devid == devid) {
|
||||
wlr_log(WLR_INFO, "Found matching Vulkan physical device: %s",
|
||||
phdev_props.deviceName);
|
||||
return phdev;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue