diff --git a/graphics/mesa-devel/Makefile b/graphics/mesa-devel/Makefile index 7475c2ff61ce..4e9ae78da171 100644 --- a/graphics/mesa-devel/Makefile +++ b/graphics/mesa-devel/Makefile @@ -1,162 +1,166 @@ PORTNAME= mesa -DISTVERSION= 22.1-branchpoint-2850 -DISTVERSIONSUFFIX= -gcbcdcc412c9 +DISTVERSION= 22.1-branchpoint-3143 +DISTVERSIONSUFFIX= -gd301883aba5 CATEGORIES= graphics PKGNAMESUFFIX= -devel PATCH_SITES= https://github.com/${GH_ACCOUNT}/${GH_PROJECT}/commit/ PATCHFILES+= 700efacda59c.patch:-p1 PATCHFILES+= 50433886a3e3.patch:-p1 # https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6881 +PATCHFILES+= 4356e7185193.patch:-p1 # https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16987 +PATCHFILES+= b2a22acce617.patch:-p1 # https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16987 +PATCHFILES+= 19eb2c30bff0.patch:-p1 # https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16987 +PATCHFILES+= 43a5cfde5955.patch:-p1 # https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17070 MAINTAINER= jbeich@FreeBSD.org COMMENT= Bleeding edge Mesa drivers (OpenGL, Vulkan) LICENSE= MIT LICENSE_FILE= ${WRKSRC}/docs/license.rst ONLY_FOR_ARCHS= aarch64 amd64 i386 powerpc64 powerpc64le ONLY_FOR_ARCHS_REASON= Limited scope: no old drivers and no software rendering. \ See also https://mesamatrix.net/ BUILD_DEPENDS= ${PYTHON_PKGNAMEPREFIX}mako>0:textproc/py-mako@${PY_FLAVOR} LIB_DEPENDS= libdrm.so:graphics/libdrm \ libOpenGL.so:graphics/libglvnd \ libexpat.so:textproc/expat2 .if !exists(/usr/lib/libelf.so) # DragonFly doesn't install it yet LIB_DEPENDS+= libelf.so:devel/libelf .endif USES= bison cpe compiler:c++11-lib meson pkgconfig python:3.6+,build shebangfix CPE_VENDOR= mesa3d USE_GITHUB= yes GH_ACCOUNT= mesa3d USE_LDCONFIG= yes BINARY_ALIAS= python=${PYTHON_CMD} SHEBANG_FILES= src/vulkan/overlay-layer/${PORTNAME}-overlay-control.py MESON_ARGS= -Dgallium-omx=disabled \ -Dgallium-opencl=disabled \ -Dgallium-xa=disabled \ -Dgallium-xvmc=disabled \ -Dglvnd=true \ -Dplatforms=${PLATFORMS:O:[-1..1]:ts,} \ ${BINARY_ALIAS:D--native-file=binary_alias.ini} \ ${NULL} PLIST_SUB= ARCH=${ARCH:S/amd/x86_/} OPTIONS_DEFINE= LIBUNWIND LLVM LTO VAAPI VDPAU VKLAYERS WAYLAND X11 ZSTD OPTIONS_DEFAULT= LIBUNWIND LLVM LTO VAAPI VDPAU VKLAYERS WAYLAND X11 ZSTD OPTIONS_GROUP= GALLIUM VULKAN OPTIONS_GROUP_GALLIUM= crocus iris panfrost r600 radeonsi OPTIONS_GROUP_VULKAN= anv radv OPTIONS_EXCLUDE_DragonFly= LIBUNWIND anv OPTIONS_EXCLUDE_i386= LTO # anv: vkcube fails on vkCreateSwapchainKHR OPTIONS_EXCLUDE_powerpc64= ${"${/usr/bin/ld:L:tA}"==/usr/bin/ld.lld:?LTO:} # https://github.com/llvm/llvm-project/issues/46697 OPTIONS_EXCLUDE+= ${ARCH:Naarch64:C/.+/panfrost/} OPTIONS_EXCLUDE+= ${ARCH:Namd64:Ni386:Nx86_64:C/.+/anv crocus iris/} OPTIONS_EXCLUDE+= ${ARCH:Naarch64:Namd64:Ni386:Npowerpc64:Npowerpc64le:Nx86_64:C/.+/LIBUNWIND/} OPTIONS_EXCLUDE+= ${"${GL_DEFAULT:S/,/ /g:[-1]}"==${.CURDIR:T}:?COINST:} OPTIONS_SLAVE+= ${"${GL_DEFAULT:S/,/ /g:[-1]}"!=${.CURDIR:T}:?COINST:} OPTIONS_SUB= yes # Convert options to -D-drivers= .for i in ${OPTIONS_GROUP} MESON_ARGS+= -D${i:tl}-drivers=${${i}_DRIVERS:ts,} . for j in ${OPTIONS_GROUP_${i}} OPTIONS_DEFAULT+= ${j} ${j}_VARS+= ${i}_DRIVERS+=${j:S/anv/intel/:S/radv/amd/} . endfor .endfor GALLIUM_DESC= Unified OpenGL drivers crocus_DESC= Broadwater, Eaglelake, Ironlake, Sandybridge, Ivybridge, Haswell iris_DESC= Broadwell and newer panfrost_DESC= Midgard, Bifrost r600_DESC= R600, R700, Evergreen, Northern Islands (implies LLVM) radeonsi_DESC= Southern Islands and newer (implies LLVM) VULKAN_DESC= Vulkan drivers anv_DESC= Haswell and newer radv_DESC= Southern Islands and newer (implies LLVM) radv_BUILD_DEPENDS= glslangValidator:graphics/glslang COINST_DESC= Allow co-installation with another Mesa port COINST_MESON_ON= -Degl-lib-suffix=${PKGNAMESUFFIX} COINST_PLIST_SUB= SUFFIX=${PKGNAMESUFFIX} COINST_SUB_FILES= libmap.conf COINST_SUB_LIST= SUFFIX=${PKGNAMESUFFIX} COINST_PLIST_SUB_OFF= SUFFIX= LIBUNWIND_DESC= Use libunwind for stacktraces LIBUNWIND_LIB_DEPENDS= libunwind.so:devel/libunwind LIBUNWIND_MESON_ENABLED= libunwind LLVM_DESC= Build with LLVM support (see implies) LLVM_LIB_DEPENDS= libLLVM-${LLVM_DEFAULT:C/^([6-9])0/\1/:S/-devel/15git/}.so:devel/llvm${LLVM_DEFAULT} LLVM_MESON_ENABLED= llvm LLVM_BINARY_ALIAS= llvm-config=llvm-config${LLVM_DEFAULT} .for i in r600 radeonsi radv ${i}_IMPLIES+= LLVM .endfor LTO_MESON_TRUE= b_lto VAAPI_DESC= Hardware encoding/decoding (only r600, radeonsi) VAAPI_BUILD_DEPENDS= libva>0:multimedia/libva VAAPI_MESON_ENABLED= gallium-va VDPAU_DESC= Hardware decoding (only r600, radeonsi) (implies X11) VDPAU_BUILD_DEPENDS= libvdpau>0:multimedia/libvdpau VDPAU_MESON_ENABLED= gallium-vdpau VDPAU_IMPLIES= X11 VKLAYERS_DESC= Vulkan layers: ${VKLAYERS_MESON_ON:C/.*=//} (implies ${VKLAYERS_IMPLIES}) VKLAYERS_BUILD_DEPENDS= glslangValidator:graphics/glslang VKLAYERS_MESON_ON= -Dvulkan-layers=device-select,overlay VKLAYERS_IMPLIES= ${"${PORT_OPTIONS:Manv}":?anv:radv} # any from OPTIONS_GROUP_VULKAN WAYLAND_BUILD_DEPENDS= wayland-protocols>0:graphics/wayland-protocols WAYLAND_LIB_DEPENDS= libwayland-server.so:graphics/wayland WAYLAND_VARS= PLATFORMS+=wayland X11_USES= xorg X11_USE= XORG=x11,xcb,xdamage,xext,xfixes,xorgproto,xrandr,xshmfence,xxf86vm X11_VARS= PLATFORMS+=x11 X11_MESON_OFF= -Dglx=disabled ZSTD_DESC= Use ZSTD for shader cache ZSTD_LIB_DEPENDS= libzstd.so:archivers/zstd ZSTD_MESON_ENABLED= zstd .include # Ignore Mk/bsd.default-versions.mk but respect make.conf(5) .if !defined(DEFAULT_VERSIONS) || ! ${DEFAULT_VERSIONS:Mllvm*} LLVM_DEFAULT= 13 # bump if not latest release .endif post-extract: # Work around Meson lookup order e.g., llvm-config .if defined(BINARY_ALIAS) @${ECHO_CMD} '[binaries]' >${WRKSRC}/binary_alias.ini @for f in ${BINARY_ALIAS}; do \ ${ECHO_CMD} "$${f%%=*} = '$${f#*=}'"; \ done >>${WRKSRC}/binary_alias.ini .endif post-patch: # Extract (snapshot) version from the port instead of empty string @${REINPLACE_CMD} '/MESA_GIT_SHA1/s/""/" (git-${DISTVERSIONSUFFIX:C/.*-g//})"/' \ ${WRKSRC}/bin/git_sha1_gen.py post-patch-COINST-on: @${MV} ${WRKSRC}/src/amd/vulkan/00-radv-defaults.conf \ ${WRKSRC}/src/amd/vulkan/00-radv${PKGNAMESUFFIX}-defaults.conf @${MV} ${WRKSRC}/src/util/00-${PORTNAME}-defaults.conf \ ${WRKSRC}/src/util/00-${PKGBASE}-defaults.conf post-install-COINST-on: @${INSTALL_DATA} ${WRKDIR}/libmap.conf \ ${STAGEDIR}${PREFIX}/etc/libmap.d/${PKGBASE}.conf.sample .include diff --git a/graphics/mesa-devel/distinfo b/graphics/mesa-devel/distinfo index b8da83f90774..e8511432c152 100644 --- a/graphics/mesa-devel/distinfo +++ b/graphics/mesa-devel/distinfo @@ -1,7 +1,15 @@ -TIMESTAMP = 1654899254 -SHA256 (mesa3d-mesa-22.1-branchpoint-2850-gcbcdcc412c9_GH0.tar.gz) = ebdfbcd6a7a155c4d6ecd98117f2c9c82c5ed393630bd9916aa5bea2eff8dccc -SIZE (mesa3d-mesa-22.1-branchpoint-2850-gcbcdcc412c9_GH0.tar.gz) = 25119988 +TIMESTAMP = 1655339445 +SHA256 (mesa3d-mesa-22.1-branchpoint-3143-gd301883aba5_GH0.tar.gz) = 819a580b8fb8aacaf9a0f54d4e1230593b579fd2943793496a71732e190a9927 +SIZE (mesa3d-mesa-22.1-branchpoint-3143-gd301883aba5_GH0.tar.gz) = 25143515 SHA256 (700efacda59c.patch) = f034cfbe09edff0baba67e46e7e3812fdef73ff3cf3e579050c024c95234c8d5 SIZE (700efacda59c.patch) = 981 SHA256 (50433886a3e3.patch) = 15af265e9dbb5dec7514062cfa549d1c1053f567395d9d133611c2a5138da470 SIZE (50433886a3e3.patch) = 2008 +SHA256 (4356e7185193.patch) = 913b6fde30a0e00e1091da87b054dacc331de4c9d3c5a2281e1b6521b362a5c5 +SIZE (4356e7185193.patch) = 8392 +SHA256 (b2a22acce617.patch) = 9ec231cdcec3235164b0c0298d35e65225940878e75d9f972b05168dc44a01c6 +SIZE (b2a22acce617.patch) = 2425 +SHA256 (19eb2c30bff0.patch) = 238e1031e32bda8fa72bd649df857d775ffe5caec26c1d4428215cf65f564c2b +SIZE (19eb2c30bff0.patch) = 1217 +SHA256 (43a5cfde5955.patch) = 428a47e818c8f19139dbc76e4ee1f5f4b81a2e362e72e39c629936e5430bbcd6 +SIZE (43a5cfde5955.patch) = 1554 diff --git a/graphics/mesa-devel/files/patch-revert b/graphics/mesa-devel/files/patch-revert deleted file mode 100644 index 355b0a4af7fa..000000000000 --- a/graphics/mesa-devel/files/patch-revert +++ /dev/null @@ -1,419 +0,0 @@ -Revert https://gitlab.freedesktop.org/mesa/mesa/-/commit/30b57f10b36d -due to https://gitlab.freedesktop.org/mesa/mesa/-/issues/6653 - ---- src/vulkan/wsi/wsi_common.c.orig 2022-06-10 22:14:14 UTC -+++ src/vulkan/wsi/wsi_common.c -@@ -64,7 +64,6 @@ wsi_device_init(struct wsi_device *wsi, - wsi->sw = sw_device; - #define WSI_GET_CB(func) \ - PFN_vk##func func = (PFN_vk##func)proc_addr(pdevice, "vk" #func) -- WSI_GET_CB(GetPhysicalDeviceExternalSemaphoreProperties); - WSI_GET_CB(GetPhysicalDeviceProperties2); - WSI_GET_CB(GetPhysicalDeviceMemoryProperties); - WSI_GET_CB(GetPhysicalDeviceQueueFamilyProperties); -@@ -84,23 +83,6 @@ wsi_device_init(struct wsi_device *wsi, - GetPhysicalDeviceMemoryProperties(pdevice, &wsi->memory_props); - GetPhysicalDeviceQueueFamilyProperties(pdevice, &wsi->queue_family_count, NULL); - -- for (VkExternalSemaphoreHandleTypeFlags handle_type = 1; -- handle_type <= VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT; -- handle_type <<= 1) { -- const VkPhysicalDeviceExternalSemaphoreInfo esi = { -- .sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO, -- .handleType = handle_type, -- }; -- VkExternalSemaphoreProperties esp = { -- .sType = VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES, -- }; -- GetPhysicalDeviceExternalSemaphoreProperties(pdevice, &esi, &esp); -- -- if (esp.externalSemaphoreFeatures & -- VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT) -- wsi->semaphore_export_handle_types |= handle_type; -- } -- - list_inithead(&wsi->hotplug_fences); - - #define WSI_GET_CB(func) \ -@@ -134,7 +116,6 @@ wsi_device_init(struct wsi_device *wsi, - WSI_GET_CB(GetPhysicalDeviceFormatProperties); - WSI_GET_CB(GetPhysicalDeviceFormatProperties2KHR); - WSI_GET_CB(GetPhysicalDeviceImageFormatProperties2); -- WSI_GET_CB(GetSemaphoreFdKHR); - WSI_GET_CB(ResetFences); - WSI_GET_CB(QueueSubmit); - WSI_GET_CB(WaitForFences); -@@ -368,8 +349,6 @@ wsi_swapchain_finish(struct wsi_swapchain *chain) - - vk_free(&chain->alloc, chain->buffer_blit_semaphores); - } -- chain->wsi->DestroySemaphore(chain->device, chain->dma_buf_semaphore, -- &chain->alloc); - - int cmd_pools_count = chain->buffer_blit_queue != VK_NULL_HANDLE ? - 1 : chain->wsi->queue_family_count; -@@ -864,14 +843,6 @@ wsi_signal_semaphore_for_image(struct vk_device *devic - - vk_semaphore_reset_temporary(device, semaphore); - --#ifndef _WIN32 -- VkResult result = wsi_create_sync_for_dma_buf_wait(chain, image, -- VK_SYNC_FEATURE_GPU_WAIT, -- &semaphore->temporary); -- if (result != VK_ERROR_FEATURE_NOT_PRESENT) -- return result; --#endif -- - if (chain->wsi->signal_semaphore_with_memory) { - return device->create_sync_for_memory(device, image->memory, - false /* signal_memory */, -@@ -896,14 +867,6 @@ wsi_signal_fence_for_image(struct vk_device *device, - - vk_fence_reset_temporary(device, fence); - --#ifndef _WIN32 -- VkResult result = wsi_create_sync_for_dma_buf_wait(chain, image, -- VK_SYNC_FEATURE_CPU_WAIT, -- &fence->temporary); -- if (result != VK_ERROR_FEATURE_NOT_PRESENT) -- return result; --#endif -- - if (chain->wsi->signal_fence_with_memory) { - return device->create_sync_for_memory(device, image->memory, - false /* signal_memory */, -@@ -1073,49 +1036,15 @@ wsi_common_queue_present(const struct wsi_device *wsi, - - VkFence fence = swapchain->fences[image_index]; - -- bool has_signal_dma_buf = false; --#ifndef _WIN32 -- result = wsi_prepare_signal_dma_buf_from_semaphore(swapchain, image); -- if (result == VK_SUCCESS) { -- assert(submit_info.signalSemaphoreCount == 0); -- submit_info.signalSemaphoreCount = 1; -- submit_info.pSignalSemaphores = &swapchain->dma_buf_semaphore; -- has_signal_dma_buf = true; -- } else if (result == VK_ERROR_FEATURE_NOT_PRESENT) { -- result = VK_SUCCESS; -- has_signal_dma_buf = false; -- } else { -- goto fail_present; -- } --#endif -+ struct wsi_memory_signal_submit_info mem_signal = { -+ .sType = VK_STRUCTURE_TYPE_WSI_MEMORY_SIGNAL_SUBMIT_INFO_MESA, -+ .memory = image->memory, -+ }; -+ __vk_append_struct(&submit_info, &mem_signal); - -- struct wsi_memory_signal_submit_info mem_signal; -- if (!has_signal_dma_buf) { -- /* If we don't have dma-buf signaling, signal the memory object by -- * chaining wsi_memory_signal_submit_info into VkSubmitInfo. -- */ -- result = VK_SUCCESS; -- has_signal_dma_buf = false; -- mem_signal = (struct wsi_memory_signal_submit_info) { -- .sType = VK_STRUCTURE_TYPE_WSI_MEMORY_SIGNAL_SUBMIT_INFO_MESA, -- .memory = image->memory, -- }; -- __vk_append_struct(&submit_info, &mem_signal); -- } -- - result = wsi->QueueSubmit(submit_queue, 1, &submit_info, fence); - if (result != VK_SUCCESS) - goto fail_present; -- --#ifndef _WIN32 -- if (has_signal_dma_buf) { -- result = wsi_signal_dma_buf_from_semaphore(swapchain, image); -- if (result != VK_SUCCESS) -- goto fail_present; -- } --#else -- assert(!has_signal_dma_buf); --#endif - - if (wsi->sw) - wsi->WaitForFences(device, 1, &swapchain->fences[image_index], ---- src/vulkan/wsi/wsi_common.h.orig 2022-06-10 22:14:14 UTC -+++ src/vulkan/wsi/wsi_common.h -@@ -102,8 +102,6 @@ struct wsi_device { - - VkPhysicalDevicePCIBusInfoPropertiesEXT pci_bus_info; - -- VkExternalSemaphoreHandleTypeFlags semaphore_export_handle_types; -- - bool supports_modifiers; - uint32_t maxImageDimension2D; - VkPresentModeKHR override_present_mode; -@@ -211,7 +209,6 @@ struct wsi_device { - WSI_CB(GetPhysicalDeviceFormatProperties); - WSI_CB(GetPhysicalDeviceFormatProperties2KHR); - WSI_CB(GetPhysicalDeviceImageFormatProperties2); -- WSI_CB(GetSemaphoreFdKHR); - WSI_CB(ResetFences); - WSI_CB(QueueSubmit); - WSI_CB(WaitForFences); ---- src/vulkan/wsi/wsi_common_drm.c.orig 2022-06-10 22:14:14 UTC -+++ src/vulkan/wsi/wsi_common_drm.c -@@ -26,220 +26,15 @@ - #include "util/macros.h" - #include "util/os_file.h" - #include "util/xmlconfig.h" --#include "vk_device.h" - #include "vk_format.h" --#include "vk_physical_device.h" - #include "vk_util.h" - #include "drm-uapi/drm_fourcc.h" - --#include --#include --#include - #include - #include - #include - #include - #include -- --struct dma_buf_export_sync_file_wsi { -- __u32 flags; -- __s32 fd; --}; -- --struct dma_buf_import_sync_file_wsi { -- __u32 flags; -- __s32 fd; --}; -- --#define DMA_BUF_IOCTL_EXPORT_SYNC_FILE_WSI _IOWR(DMA_BUF_BASE, 2, struct dma_buf_export_sync_file_wsi) --#define DMA_BUF_IOCTL_IMPORT_SYNC_FILE_WSI _IOW(DMA_BUF_BASE, 3, struct dma_buf_import_sync_file_wsi) -- --static VkResult --wsi_dma_buf_export_sync_file(int dma_buf_fd, int *sync_file_fd) --{ -- /* Don't keep trying an IOCTL that doesn't exist. */ -- static bool no_dma_buf_sync_file = false; -- if (no_dma_buf_sync_file) -- return VK_ERROR_FEATURE_NOT_PRESENT; -- -- struct dma_buf_export_sync_file_wsi export = { -- .flags = DMA_BUF_SYNC_RW, -- .fd = -1, -- }; -- int ret = drmIoctl(dma_buf_fd, DMA_BUF_IOCTL_EXPORT_SYNC_FILE_WSI, &export); -- if (ret) { -- if (errno == ENOTTY) { -- no_dma_buf_sync_file = true; -- return VK_ERROR_FEATURE_NOT_PRESENT; -- } else { -- return VK_ERROR_OUT_OF_HOST_MEMORY; -- } -- } -- -- *sync_file_fd = export.fd; -- -- return VK_SUCCESS; --} -- --static VkResult --wsi_dma_buf_import_sync_file(int dma_buf_fd, int sync_file_fd) --{ -- /* Don't keep trying an IOCTL that doesn't exist. */ -- static bool no_dma_buf_sync_file = false; -- if (no_dma_buf_sync_file) -- return VK_ERROR_FEATURE_NOT_PRESENT; -- -- struct dma_buf_import_sync_file_wsi import = { -- .flags = DMA_BUF_SYNC_RW, -- .fd = sync_file_fd, -- }; -- int ret = drmIoctl(dma_buf_fd, DMA_BUF_IOCTL_IMPORT_SYNC_FILE_WSI, &import); -- if (ret) { -- if (errno == ENOTTY) { -- no_dma_buf_sync_file = true; -- return VK_ERROR_FEATURE_NOT_PRESENT; -- } else { -- return VK_ERROR_OUT_OF_HOST_MEMORY; -- } -- } -- -- return VK_SUCCESS; --} -- --static VkResult --prepare_signal_dma_buf_from_semaphore(struct wsi_swapchain *chain, -- const struct wsi_image *image) --{ -- VkResult result; -- -- if (!(chain->wsi->semaphore_export_handle_types & -- VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT)) -- return VK_ERROR_FEATURE_NOT_PRESENT; -- -- int sync_file_fd = -1; -- result = wsi_dma_buf_export_sync_file(image->dma_buf_fd, &sync_file_fd); -- if (result != VK_SUCCESS) -- return result; -- -- result = wsi_dma_buf_import_sync_file(image->dma_buf_fd, sync_file_fd); -- close(sync_file_fd); -- if (result != VK_SUCCESS) -- return result; -- -- /* If we got here, all our checks pass. Create the actual semaphore */ -- const VkExportSemaphoreCreateInfo export_info = { -- .sType = VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO, -- .handleTypes = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT, -- }; -- const VkSemaphoreCreateInfo semaphore_info = { -- .sType = VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO, -- .pNext = &export_info, -- }; -- result = chain->wsi->CreateSemaphore(chain->device, &semaphore_info, -- &chain->alloc, -- &chain->dma_buf_semaphore); -- if (result != VK_SUCCESS) -- return result; -- -- return VK_SUCCESS; --} -- --VkResult --wsi_prepare_signal_dma_buf_from_semaphore(struct wsi_swapchain *chain, -- const struct wsi_image *image) --{ -- VkResult result; -- -- /* We cache result - 1 in the swapchain */ -- if (unlikely(chain->signal_dma_buf_from_semaphore == 0)) { -- result = prepare_signal_dma_buf_from_semaphore(chain, image); -- assert(result <= 0); -- chain->signal_dma_buf_from_semaphore = (int)result - 1; -- } else { -- result = (VkResult)(chain->signal_dma_buf_from_semaphore + 1); -- } -- -- return result; --} -- --VkResult --wsi_signal_dma_buf_from_semaphore(const struct wsi_swapchain *chain, -- const struct wsi_image *image) --{ -- VkResult result; -- -- const VkSemaphoreGetFdInfoKHR get_fd_info = { -- .sType = VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR, -- .semaphore = chain->dma_buf_semaphore, -- .handleType = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT, -- }; -- int sync_file_fd = -1; -- result = chain->wsi->GetSemaphoreFdKHR(chain->device, &get_fd_info, -- &sync_file_fd); -- if (result != VK_SUCCESS) -- return result; -- -- result = wsi_dma_buf_import_sync_file(image->dma_buf_fd, sync_file_fd); -- close(sync_file_fd); -- return result; --} -- --static const struct vk_sync_type * --get_sync_file_sync_type(struct vk_device *device, -- enum vk_sync_features req_features) --{ -- for (const struct vk_sync_type *const *t = -- device->physical->supported_sync_types; *t; t++) { -- if (req_features & ~(*t)->features) -- continue; -- -- if ((*t)->import_sync_file != NULL) -- return *t; -- } -- -- return NULL; --} -- --VkResult --wsi_create_sync_for_dma_buf_wait(const struct wsi_swapchain *chain, -- const struct wsi_image *image, -- enum vk_sync_features req_features, -- struct vk_sync **sync_out) --{ -- VK_FROM_HANDLE(vk_device, device, chain->device); -- VkResult result; -- -- const struct vk_sync_type *sync_type = -- get_sync_file_sync_type(device, req_features); -- if (sync_type == NULL) -- return VK_ERROR_FEATURE_NOT_PRESENT; -- -- int sync_file_fd = -1; -- result = wsi_dma_buf_export_sync_file(image->dma_buf_fd, &sync_file_fd); -- if (result != VK_SUCCESS) -- return result; -- -- struct vk_sync *sync = NULL; -- result = vk_sync_create(device, sync_type, VK_SYNC_IS_SHAREABLE, 0, &sync); -- if (result != VK_SUCCESS) -- goto fail_close_sync_file; -- -- result = vk_sync_import_sync_file(device, sync, sync_file_fd); -- if (result != VK_SUCCESS) -- goto fail_destroy_sync; -- -- close(sync_file_fd); -- *sync_out = sync; -- -- return VK_SUCCESS; -- --fail_destroy_sync: -- vk_sync_destroy(device, sync); --fail_close_sync_file: -- close(sync_file_fd); -- -- return result; --} - - bool - wsi_common_drm_devices_equal(int fd_a, int fd_b) ---- src/vulkan/wsi/wsi_common_private.h.orig 2022-06-10 22:14:14 UTC -+++ src/vulkan/wsi/wsi_common_private.h -@@ -25,7 +25,6 @@ - - #include "wsi_common.h" - #include "vulkan/runtime/vk_object.h" --#include "vulkan/runtime/vk_sync.h" - - struct wsi_image; - struct wsi_swapchain; -@@ -98,9 +97,6 @@ struct wsi_swapchain { - VkSemaphore* buffer_blit_semaphores; - VkPresentModeKHR present_mode; - -- int signal_dma_buf_from_semaphore; -- VkSemaphore dma_buf_semaphore; -- - struct wsi_image_info image_info; - uint32_t image_count; - -@@ -197,17 +193,6 @@ wsi_destroy_image(const struct wsi_swapchain *chain, - wsi_destroy_image(const struct wsi_swapchain *chain, - struct wsi_image *image); - --VkResult --wsi_prepare_signal_dma_buf_from_semaphore(struct wsi_swapchain *chain, -- const struct wsi_image *image); --VkResult --wsi_signal_dma_buf_from_semaphore(const struct wsi_swapchain *chain, -- const struct wsi_image *image); --VkResult --wsi_create_sync_for_dma_buf_wait(const struct wsi_swapchain *chain, -- const struct wsi_image *image, -- enum vk_sync_features sync_features, -- struct vk_sync **sync_out); - - struct wsi_interface { - VkResult (*get_support)(VkIcdSurfaceBase *surface,