Mesa (main): turnip: add support for dirconf
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Mon Oct 18 18:07:58 UTC 2021
Module: Mesa
Branch: main
Commit: fd31989ecb4b1cca52a2eaa386770e93198f11bc
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=fd31989ecb4b1cca52a2eaa386770e93198f11bc
Author: Danylo Piliaiev <dpiliaiev at igalia.com>
Date: Thu Oct 14 18:16:54 2021 +0300
turnip: add support for dirconf
Signed-off-by: Danylo Piliaiev <dpiliaiev at igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13367>
---
src/freedreno/vulkan/tu_device.c | 29 +++++++++++++++++++++++++++++
src/freedreno/vulkan/tu_private.h | 4 ++++
src/freedreno/vulkan/tu_wsi.c | 3 ++-
3 files changed, 35 insertions(+), 1 deletion(-)
diff --git a/src/freedreno/vulkan/tu_device.c b/src/freedreno/vulkan/tu_device.c
index 5a89e54faf9..fddfce140d7 100644
--- a/src/freedreno/vulkan/tu_device.c
+++ b/src/freedreno/vulkan/tu_device.c
@@ -38,6 +38,7 @@
#include "util/debug.h"
#include "util/disk_cache.h"
+#include "util/driconf.h"
#include "util/u_atomic.h"
#include "vk_format.h"
#include "vk_util.h"
@@ -328,6 +329,29 @@ tu_get_debug_option_name(int id)
return tu_debug_options[id].string;
}
+static const driOptionDescription tu_dri_options[] = {
+ DRI_CONF_SECTION_PERFORMANCE
+ DRI_CONF_VK_X11_OVERRIDE_MIN_IMAGE_COUNT(0)
+ DRI_CONF_VK_X11_STRICT_IMAGE_COUNT(false)
+ DRI_CONF_VK_X11_ENSURE_MIN_IMAGE_COUNT(false)
+ DRI_CONF_VK_XWAYLAND_WAIT_READY(true)
+ DRI_CONF_SECTION_END
+
+ DRI_CONF_SECTION_DEBUG
+ DRI_CONF_VK_WSI_FORCE_BGRA8_UNORM_FIRST(false)
+ DRI_CONF_SECTION_END
+};
+
+static void
+tu_init_dri_options(struct tu_instance *instance)
+{
+ driParseOptionInfo(&instance->available_dri_options, tu_dri_options,
+ ARRAY_SIZE(tu_dri_options));
+ driParseConfigFiles(&instance->dri_options, &instance->available_dri_options, 0, "turnip", NULL, NULL,
+ instance->vk.app_info.app_name, instance->vk.app_info.app_version,
+ instance->vk.app_info.engine_name, instance->vk.app_info.engine_version);
+}
+
VKAPI_ATTR VkResult VKAPI_CALL
tu_CreateInstance(const VkInstanceCreateInfo *pCreateInfo,
const VkAllocationCallbacks *pAllocator,
@@ -380,6 +404,8 @@ tu_CreateInstance(const VkInstanceCreateInfo *pCreateInfo,
VG(VALGRIND_CREATE_MEMPOOL(instance, 0, false));
+ tu_init_dri_options(instance);
+
*pInstance = tu_instance_to_handle(instance);
#ifdef HAVE_PERFETTO
@@ -404,6 +430,9 @@ tu_DestroyInstance(VkInstance _instance,
VG(VALGRIND_DESTROY_MEMPOOL(instance));
+ driDestroyOptionCache(&instance->dri_options);
+ driDestroyOptionInfo(&instance->available_dri_options);
+
vk_instance_finish(&instance->vk);
vk_free(&instance->vk.alloc, instance);
}
diff --git a/src/freedreno/vulkan/tu_private.h b/src/freedreno/vulkan/tu_private.h
index f8ea52e03ee..dcfba82e8f5 100644
--- a/src/freedreno/vulkan/tu_private.h
+++ b/src/freedreno/vulkan/tu_private.h
@@ -53,6 +53,7 @@
#include "util/macros.h"
#include "util/u_atomic.h"
#include "util/u_dynarray.h"
+#include "util/xmlconfig.h"
#include "util/perf/u_trace.h"
#include "vk_alloc.h"
#include "vk_debug_report.h"
@@ -248,6 +249,9 @@ struct tu_instance
int physical_device_count;
struct tu_physical_device physical_devices[TU_MAX_DRM_DEVICES];
+ struct driOptionCache dri_options;
+ struct driOptionCache available_dri_options;
+
enum tu_debug_flags debug_flags;
};
diff --git a/src/freedreno/vulkan/tu_wsi.c b/src/freedreno/vulkan/tu_wsi.c
index 932ab4195c9..e7b0440f746 100644
--- a/src/freedreno/vulkan/tu_wsi.c
+++ b/src/freedreno/vulkan/tu_wsi.c
@@ -45,7 +45,8 @@ tu_wsi_init(struct tu_physical_device *physical_device)
tu_physical_device_to_handle(physical_device),
tu_wsi_proc_addr,
&physical_device->instance->vk.alloc,
- physical_device->master_fd, NULL,
+ physical_device->master_fd,
+ &physical_device->instance->dri_options,
false);
if (result != VK_SUCCESS)
return result;
More information about the mesa-commit
mailing list