aboutsummaryrefslogtreecommitdiff
path: root/emulators
diff options
context:
space:
mode:
authorJan Beich <jbeich@FreeBSD.org>2021-03-07 02:06:51 +0000
committerJan Beich <jbeich@FreeBSD.org>2021-03-07 02:06:51 +0000
commitb8c1cb4ca5269441f4ba7d3828268f9099f702a9 (patch)
treeb8e9fc8a17348ef8b429e5c7d13687f5e352e608 /emulators
parenta684c3633026ac0f0bec491e2282f97d3e91590f (diff)
downloadports-b8c1cb4ca5269441f4ba7d3828268f9099f702a9.tar.gz
ports-b8c1cb4ca5269441f4ba7d3828268f9099f702a9.zip
emulators/rpcs3: unbreak Vulkan on Intel after r562625
ioctl(I915_GEM_USERPTR) failed. Try running as root but expect poor stability. F {RSX [0x000255c]} SIG: Thread terminated due to fatal error: Assertion Failed! Vulkan API call failed with unrecoverable error: Invalid external handle (VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR) (in file rpcs3/Emu/RSX/VK/vkutils/memory.cpp:224[:79], in function memory_block_host) (errno=1) (in file rpcs3/Emu/RSX/VK/vkutils/shared.cpp:103[:4], in function die_with_error) (errno=1)
Notes
Notes: svn path=/head/; revision=567534
Diffstat (limited to 'emulators')
-rw-r--r--emulators/rpcs3/Makefile1
-rw-r--r--emulators/rpcs3/files/patch-userptr15
2 files changed, 16 insertions, 0 deletions
diff --git a/emulators/rpcs3/Makefile b/emulators/rpcs3/Makefile
index a6089a5a2913..40b2a8df0477 100644
--- a/emulators/rpcs3/Makefile
+++ b/emulators/rpcs3/Makefile
@@ -4,6 +4,7 @@ PORTNAME= rpcs3
DISTVERSIONPREFIX= v
DISTVERSION= 0.0.15-11892 # git rev-list --count HEAD
DISTVERSIONSUFFIX= -g3ae7debc1
+PORTREVISION= 1
CATEGORIES= emulators
MAINTAINER= jbeich@FreeBSD.org
diff --git a/emulators/rpcs3/files/patch-userptr b/emulators/rpcs3/files/patch-userptr
new file mode 100644
index 000000000000..e090db6880d2
--- /dev/null
+++ b/emulators/rpcs3/files/patch-userptr
@@ -0,0 +1,15 @@
+VK_EXT_external_memory_host depends on userptr, so disable on Intel until
+https://github.com/FreeBSDDesktop/kms-drm/issues/197
+
+--- rpcs3/Emu/RSX/VK/VKDMA.cpp.orig 2021-02-28 23:32:23 UTC
++++ rpcs3/Emu/RSX/VK/VKDMA.cpp
+@@ -264,7 +264,8 @@ namespace vk
+ true;
+ #else
+ // Anything running on AMDGPU kernel driver will not work due to the check for fd-backed memory allocations
+- const bool allow_host_buffers = (vendor != driver_vendor::AMD && vendor != driver_vendor::RADV);
++ // Intel userptr on non-Linux may not work or require root
++ const bool allow_host_buffers = (vendor != driver_vendor::AMD && vendor != driver_vendor::RADV && vendor != driver_vendor::INTEL);
+ #endif
+ if (allow_host_buffers && g_render_device->get_external_memory_host_support())
+ {