summaryrefslogtreecommitdiffstats
path: root/src/video_core/vulkan_common/vulkan_wrapper.cpp
diff options
context:
space:
mode:
authorReinUsesLisp <reinuseslisp@airmail.cc>2021-01-17 00:29:09 +0100
committerReinUsesLisp <reinuseslisp@airmail.cc>2021-02-13 06:16:21 +0100
commit16f97ded2183c5ef089e97b12409642b1e67ecc7 (patch)
tree553d1e31698491135418c493d600a2c636d17e41 /src/video_core/vulkan_common/vulkan_wrapper.cpp
parentvulkan_instance: Initialize Vulkan instance in a separate thread (diff)
downloadyuzu-16f97ded2183c5ef089e97b12409642b1e67ecc7.tar
yuzu-16f97ded2183c5ef089e97b12409642b1e67ecc7.tar.gz
yuzu-16f97ded2183c5ef089e97b12409642b1e67ecc7.tar.bz2
yuzu-16f97ded2183c5ef089e97b12409642b1e67ecc7.tar.lz
yuzu-16f97ded2183c5ef089e97b12409642b1e67ecc7.tar.xz
yuzu-16f97ded2183c5ef089e97b12409642b1e67ecc7.tar.zst
yuzu-16f97ded2183c5ef089e97b12409642b1e67ecc7.zip
Diffstat (limited to '')
-rw-r--r--src/video_core/vulkan_common/vulkan_wrapper.cpp30
1 files changed, 30 insertions, 0 deletions
diff --git a/src/video_core/vulkan_common/vulkan_wrapper.cpp b/src/video_core/vulkan_common/vulkan_wrapper.cpp
index 5e15ad607..d39bbdc70 100644
--- a/src/video_core/vulkan_common/vulkan_wrapper.cpp
+++ b/src/video_core/vulkan_common/vulkan_wrapper.cpp
@@ -173,6 +173,10 @@ void Load(VkDevice device, DeviceDispatch& dld) noexcept {
X(vkGetEventStatus);
X(vkGetFenceStatus);
X(vkGetImageMemoryRequirements);
+ X(vkGetMemoryFdKHR);
+#ifdef _WIN32
+ X(vkGetMemoryWin32HandleKHR);
+#endif
X(vkGetQueryPoolResults);
X(vkGetSemaphoreCounterValueKHR);
X(vkMapMemory);
@@ -505,6 +509,32 @@ void ImageView::SetObjectNameEXT(const char* name) const {
SetObjectName(dld, owner, handle, VK_OBJECT_TYPE_IMAGE_VIEW, name);
}
+int DeviceMemory::GetMemoryFdKHR() const {
+ const VkMemoryGetFdInfoKHR get_fd_info{
+ .sType = VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR,
+ .pNext = nullptr,
+ .memory = handle,
+ .handleType = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR,
+ };
+ int fd;
+ Check(dld->vkGetMemoryFdKHR(owner, &get_fd_info, &fd));
+ return fd;
+}
+
+#ifdef _WIN32
+HANDLE DeviceMemory::GetMemoryWin32HandleKHR() const {
+ const VkMemoryGetWin32HandleInfoKHR get_win32_handle_info{
+ .sType = VK_STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR,
+ .pNext = nullptr,
+ .memory = handle,
+ .handleType = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR,
+ };
+ HANDLE win32_handle;
+ Check(dld->vkGetMemoryWin32HandleKHR(owner, &get_win32_handle_info, &win32_handle));
+ return win32_handle;
+}
+#endif
+
void DeviceMemory::SetObjectNameEXT(const char* name) const {
SetObjectName(dld, owner, handle, VK_OBJECT_TYPE_DEVICE_MEMORY, name);
}