Mesa (main): radv: Use dispatch table for wsi_display.c
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Fri Dec 31 15:40:22 UTC 2021
Module: Mesa
Branch: main
Commit: 085f99b729bb91d52c612a391381c97edcadcbaa
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=085f99b729bb91d52c612a391381c97edcadcbaa
Author: Bas Nieuwenhuizen <bas at basnieuwenhuizen.nl>
Date: Sun Nov 28 20:13:39 2021 +0100
radv: Use dispatch table for wsi_display.c
Pretty sure this could be moved into WSI.
Reviewed-by: Jason Ekstrand <jason at jlekstrand.net>
Reviewed-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13974>
---
src/amd/vulkan/radv_wsi_display.c | 72 +++++++++++++++++++++------------------
1 file changed, 38 insertions(+), 34 deletions(-)
diff --git a/src/amd/vulkan/radv_wsi_display.c b/src/amd/vulkan/radv_wsi_display.c
index a84d82a8cfb..7a7a00548e2 100644
--- a/src/amd/vulkan/radv_wsi_display.c
+++ b/src/amd/vulkan/radv_wsi_display.c
@@ -51,33 +51,35 @@ radv_RegisterDeviceEventEXT(VkDevice _device, const VkDeviceEventInfoEXT *device
VkResult ret;
int fd;
- ret = radv_CreateFence(_device,
- &(VkFenceCreateInfo){
- .sType = VK_STRUCTURE_TYPE_FENCE_CREATE_INFO,
- .pNext =
- &(VkExportFenceCreateInfo){
- .sType = VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO,
- .handleTypes = VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT,
- },
- },
- allocator, _fence);
+ ret = device->vk.dispatch_table.CreateFence(
+ _device,
+ &(VkFenceCreateInfo){
+ .sType = VK_STRUCTURE_TYPE_FENCE_CREATE_INFO,
+ .pNext =
+ &(VkExportFenceCreateInfo){
+ .sType = VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO,
+ .handleTypes = VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT,
+ },
+ },
+ allocator, _fence);
if (ret != VK_SUCCESS)
return ret;
- RADV_FROM_HANDLE(radv_fence, fence, *_fence);
+ ret = device->vk.dispatch_table.GetFenceFdKHR(
+ _device,
+ &(VkFenceGetFdInfoKHR){.sType = VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR,
+ .handleType = VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT,
+ .fence = *_fence},
+ &fd);
- assert(fence->permanent.kind == RADV_FENCE_SYNCOBJ);
-
- if (device->ws->export_syncobj(device->ws, fence->permanent.syncobj, &fd)) {
- ret = VK_ERROR_OUT_OF_HOST_MEMORY;
- } else {
+ if (ret == VK_SUCCESS) {
ret = wsi_register_device_event(_device, &device->physical_device->wsi_device,
device_event_info, allocator, NULL, fd);
close(fd);
}
if (ret != VK_SUCCESS)
- radv_DestroyFence(_device, *_fence, allocator);
+ device->vk.dispatch_table.DestroyFence(_device, *_fence, allocator);
return ret;
}
@@ -91,33 +93,35 @@ radv_RegisterDisplayEventEXT(VkDevice _device, VkDisplayKHR display,
VkResult ret;
int fd;
- ret = radv_CreateFence(_device,
- &(VkFenceCreateInfo){
- .sType = VK_STRUCTURE_TYPE_FENCE_CREATE_INFO,
- .pNext =
- &(VkExportFenceCreateInfo){
- .sType = VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO,
- .handleTypes = VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT,
- },
- },
- allocator, _fence);
+ ret = device->vk.dispatch_table.CreateFence(
+ _device,
+ &(VkFenceCreateInfo){
+ .sType = VK_STRUCTURE_TYPE_FENCE_CREATE_INFO,
+ .pNext =
+ &(VkExportFenceCreateInfo){
+ .sType = VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO,
+ .handleTypes = VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT,
+ },
+ },
+ allocator, _fence);
if (ret != VK_SUCCESS)
return ret;
- RADV_FROM_HANDLE(radv_fence, fence, *_fence);
-
- assert(fence->permanent.kind == RADV_FENCE_SYNCOBJ);
+ ret = device->vk.dispatch_table.GetFenceFdKHR(
+ _device,
+ &(VkFenceGetFdInfoKHR){.sType = VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR,
+ .handleType = VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT,
+ .fence = *_fence},
+ &fd);
- if (device->ws->export_syncobj(device->ws, fence->permanent.syncobj, &fd)) {
- ret = VK_ERROR_OUT_OF_HOST_MEMORY;
- } else {
+ if (ret == VK_SUCCESS) {
ret = wsi_register_display_event(_device, &device->physical_device->wsi_device, display,
display_event_info, allocator, NULL, fd);
close(fd);
}
if (ret != VK_SUCCESS)
- radv_DestroyFence(_device, *_fence, allocator);
+ device->vk.dispatch_table.DestroyFence(_device, *_fence, allocator);
return ret;
}
More information about the mesa-commit
mailing list