summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthew Smith <matthew@gentoo.org>2022-02-21 07:26:52 +0000
committerMatthew Smith <matthew@gentoo.org>2022-02-21 07:26:52 +0000
commit7db7d4664334929e601561afe237980895811877 (patch)
treeb4e00459c392f7219dcbd227e9a70fe04bd1e16c /media-gfx/renderdoc
parentsys-devel/mold: add myself as a maintainer (diff)
downloadgentoo-7db7d4664334929e601561afe237980895811877.tar.gz
gentoo-7db7d4664334929e601561afe237980895811877.tar.bz2
gentoo-7db7d4664334929e601561afe237980895811877.zip
media-gfx/renderdoc: backport feature test patch
Signed-off-by: Matthew Smith <matthew@gentoo.org>
Diffstat (limited to 'media-gfx/renderdoc')
-rw-r--r--media-gfx/renderdoc/files/renderdoc-1.18-check-api-ver.patch50
-rw-r--r--media-gfx/renderdoc/renderdoc-1.18-r1.ebuild (renamed from media-gfx/renderdoc/renderdoc-1.18.ebuild)4
2 files changed, 54 insertions, 0 deletions
diff --git a/media-gfx/renderdoc/files/renderdoc-1.18-check-api-ver.patch b/media-gfx/renderdoc/files/renderdoc-1.18-check-api-ver.patch
new file mode 100644
index 000000000000..a6af5645d14b
--- /dev/null
+++ b/media-gfx/renderdoc/files/renderdoc-1.18-check-api-ver.patch
@@ -0,0 +1,50 @@
+From 3d49524da4a28ecc1ee1a9b3f9ec455fc0263c81 Mon Sep 17 00:00:00 2001
+From: baldurk <baldurk@baldurk.org>
+Date: Mon, 31 Jan 2022 19:28:08 +0000
+Subject: [PATCH] Don't enable functionality not supported by the current
+ physical device
+
+---
+ .../driver/vulkan/wrappers/vk_device_funcs.cpp | 14 ++++++++------
+ 1 file changed, 8 insertions(+), 6 deletions(-)
+
+diff --git a/renderdoc/driver/vulkan/wrappers/vk_device_funcs.cpp b/renderdoc/driver/vulkan/wrappers/vk_device_funcs.cpp
+index 4d342e0123..a40c52d6ef 100644
+--- a/renderdoc/driver/vulkan/wrappers/vk_device_funcs.cpp
++++ b/renderdoc/driver/vulkan/wrappers/vk_device_funcs.cpp
+@@ -3171,7 +3171,7 @@ bool WrappedVulkan::Serialise_vkCreateDevice(SerialiserType &ser, VkPhysicalDevi
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_KHR,
+ };
+
+- if(physProps.apiVersion >= VK_MAKE_VERSION(1, 2, 0))
++ if(RDCMIN(m_EnabledExtensions.vulkanVersion, physProps.apiVersion) >= VK_MAKE_VERSION(1, 2, 0))
+ {
+ VkPhysicalDeviceVulkan12Features avail12Features = {
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES,
+@@ -3376,11 +3376,13 @@ bool WrappedVulkan::Serialise_vkCreateDevice(SerialiserType &ser, VkPhysicalDevi
+
+ CheckDeviceExts();
+
++ uint32_t effectiveApiVersion = RDCMIN(m_EnabledExtensions.vulkanVersion, physProps.apiVersion);
++
+ #undef CheckExt
+-#define CheckExt(name, ver) \
+- if(!strcmp(createInfo.ppEnabledExtensionNames[i], "VK_" #name) || physProps.apiVersion >= ver) \
+- { \
+- m_EnabledExtensions.ext_##name = true; \
++#define CheckExt(name, ver) \
++ if(!strcmp(createInfo.ppEnabledExtensionNames[i], "VK_" #name) || effectiveApiVersion >= ver) \
++ { \
++ m_EnabledExtensions.ext_##name = true; \
+ }
+
+ for(uint32_t i = 0; i < createInfo.enabledExtensionCount; i++)
+@@ -3391,7 +3393,7 @@ bool WrappedVulkan::Serialise_vkCreateDevice(SerialiserType &ser, VkPhysicalDevi
+ // for cases where a promoted extension isn't supported as the extension itself, manually
+ // disable them when the feature bit is false.
+
+- if(physProps.apiVersion >= VK_MAKE_VERSION(1, 2, 0))
++ if(effectiveApiVersion >= VK_MAKE_VERSION(1, 2, 0))
+ {
+ if(supportedExtensions.find(VK_KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME) ==
+ supportedExtensions.end() &&
diff --git a/media-gfx/renderdoc/renderdoc-1.18.ebuild b/media-gfx/renderdoc/renderdoc-1.18-r1.ebuild
index 38a71320c453..aca43a4ec9e9 100644
--- a/media-gfx/renderdoc/renderdoc-1.18.ebuild
+++ b/media-gfx/renderdoc/renderdoc-1.18-r1.ebuild
@@ -99,6 +99,10 @@ PATCHES=(
"${FILESDIR}"/${PN}-1.18-system-glslang.patch
"${FILESDIR}"/${PN}-1.18-system-compress.patch
+
+ # Check physical device API version and supported extensions. Fixes
+ # segfault on some GPU/driver combinations. Will be in release 1.19
+ "${FILESDIR}"/${PN}-1.18-check-api-ver.patch
)
DOCS=( util/LINUX_DIST_README )