about summary refs log tree commit diff
path: root/pkgs/development/libraries/vulkan-loader/use-xdg-paths.patch
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/development/libraries/vulkan-loader/use-xdg-paths.patch')
-rw-r--r--pkgs/development/libraries/vulkan-loader/use-xdg-paths.patch322
1 files changed, 0 insertions, 322 deletions
diff --git a/pkgs/development/libraries/vulkan-loader/use-xdg-paths.patch b/pkgs/development/libraries/vulkan-loader/use-xdg-paths.patch
deleted file mode 100644
index eb7869cd73c0..000000000000
--- a/pkgs/development/libraries/vulkan-loader/use-xdg-paths.patch
+++ /dev/null
@@ -1,322 +0,0 @@
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index 27ab6e5..e59256e 100644
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -256,17 +256,10 @@ if(NOT WIN32)
-     include(GNUInstallDirs)
- 
-     add_definitions(-DSYSCONFDIR="${CMAKE_INSTALL_FULL_SYSCONFDIR}")
--    add_definitions(-DDATADIR="${CMAKE_INSTALL_FULL_DATADIR}")
--
-     # Make sure /etc is searched by the loader
--    if (NOT (CMAKE_INSTALL_FULL_SYSCONFDIR STREQUAL "/etc"))
-+    if(NOT (CMAKE_INSTALL_FULL_SYSCONFDIR STREQUAL "/etc"))
-         add_definitions(-DEXTRASYSCONFDIR="/etc")
-     endif()
--
--    # Make sure /usr/share is searched by the loader
--    if (NOT (CMAKE_INSTALL_FULL_DATADIR STREQUAL "/usr/share"))
--        add_definitions(-DEXTRADATADIR="/usr/share")
--    endif()
- endif()
- 
- if(UNIX)
-diff --git a/loader/loader.c b/loader/loader.c
-index 24758f4..af7cc85 100644
---- a/loader/loader.c
-+++ b/loader/loader.c
-@@ -2909,7 +2909,7 @@ static VkResult
- loader_get_manifest_files(const struct loader_instance *inst,
-                           const char *env_override, const char *source_override,
-                           bool is_layer, bool warn_if_not_present,
--                          const char *location, const char *home_location,
-+                          const char *location, const char *relative_location,
-                           struct loader_manifest_files *out_files) {
-     const char * override = NULL;
-     char *override_getenv = NULL;
-@@ -2941,9 +2941,9 @@ loader_get_manifest_files(const struct loader_instance *inst,
-     }
- 
- #if !defined(_WIN32)
--    if (location == NULL && home_location == NULL) {
-+    if (location == NULL && relative_location == NULL) {
- #else
--    home_location = NULL;
-+    relative_location = NULL;
-     if (location == NULL) {
- #endif
-         loader_log(inst, VK_DEBUG_REPORT_ERROR_BIT_EXT, 0,
-@@ -2962,16 +2962,89 @@ loader_get_manifest_files(const struct loader_instance *inst,
-     // Make a copy of the input we are using so it is not modified
-     // Also handle getting the location(s) from registry on Windows
-     if (override == NULL) {
--        loc = loader_stack_alloc(strlen(location) + 1);
-+        size_t loc_size = strlen(location) + 1;
-+#if !defined(_WIN32)
-+        const char *xdgconfdirs = secure_getenv("XDG_CONFIG_DIRS");
-+        const char *xdgdatadirs = secure_getenv("XDG_DATA_DIRS");
-+        if (xdgconfdirs == NULL || xdgconfdirs[0] == '\0')
-+            xdgconfdirs = "/etc/xdg";
-+        if (xdgdatadirs == NULL || xdgdatadirs[0] == '\0')
-+            xdgdatadirs = "/usr/local/share:/usr/share";
-+        const size_t rel_size = strlen(relative_location);
-+        // Leave space for trailing separators
-+        loc_size += strlen(xdgconfdirs) + strlen(xdgdatadirs) + 2*rel_size + 2;
-+        for (const char *x = xdgconfdirs; *x; ++x)
-+            if (*x == PATH_SEPARATOR) loc_size += rel_size;
-+        for (const char *x = xdgdatadirs; *x; ++x)
-+            if (*x == PATH_SEPARATOR) loc_size += rel_size;
-+        loc_size += strlen(SYSCONFDIR) + rel_size + 1;
-+#ifdef EXTRASYSCONFDIR
-+        loc_size += strlen(EXTRASYSCONFDIR) + rel_size + 1;
-+#endif
-+#endif
-+        loc = loader_stack_alloc(loc_size);
-         if (loc == NULL) {
-             loader_log(inst, VK_DEBUG_REPORT_ERROR_BIT_EXT, 0,
-                        "loader_get_manifest_files: Failed to allocate "
-                        "%d bytes for manifest file location.",
--                       strlen(location));
-+                       loc_size);
-             res = VK_ERROR_OUT_OF_HOST_MEMORY;
-             goto out;
-         }
--        strcpy(loc, location);
-+        char *loc_write = loc;
-+#if !defined(_WIN32)
-+        const char *loc_read;
-+
-+        loc_read = &xdgconfdirs[0];
-+        for (const char *x = loc_read;; ++x) {
-+            if (*x == PATH_SEPARATOR || *x == '\0') {
-+                const size_t s = x - loc_read;
-+                memcpy(loc_write, loc_read, s);
-+                loc_write += s;
-+                memcpy(loc_write, relative_location, rel_size);
-+                loc_write += rel_size;
-+                *loc_write++ = PATH_SEPARATOR;
-+                if (*x == 0)
-+                    break;
-+                loc_read = ++x;
-+            }
-+        }
-+
-+        memcpy(loc_write, SYSCONFDIR, strlen(SYSCONFDIR));
-+        loc_write += strlen(SYSCONFDIR);
-+        memcpy(loc_write, relative_location, rel_size);
-+        loc_write += rel_size;
-+        *loc_write++ = PATH_SEPARATOR;
-+
-+#ifdef EXTRASYSCONFDIR
-+        memcpy(loc_write, EXTRASYSCONFDIR, strlen(EXTRASYSCONFDIR));
-+        loc_write += strlen(EXTRASYSCONFDIR);
-+        memcpy(loc_write, relative_location, rel_size);
-+        loc_write += rel_size;
-+        *loc_write++ = PATH_SEPARATOR;
-+#endif
-+
-+        loc_read = &xdgdatadirs[0];
-+        for (const char *x = loc_read;; ++x) {
-+            if (*x == PATH_SEPARATOR || *x == '\0') {
-+                const size_t s = x - loc_read;
-+                memcpy(loc_write, loc_read, s);
-+                loc_write += s;
-+                memcpy(loc_write, relative_location, rel_size);
-+                loc_write += rel_size;
-+                *loc_write++ = PATH_SEPARATOR;
-+                if (*x == 0)
-+                    break;
-+                loc_read = ++x;
-+            }
-+        }
-+        --loc_write;
-+        *loc_write = '\0';
-+#else
-+        memcpy(loc_write, location, loc_size);
-+        loc[loc_size-1] = '\0';
-+#endif
-+
- #if defined(_WIN32)
-         VkResult reg_result = loaderGetRegistryFiles(inst, loc, &reg);
-         if (VK_SUCCESS != reg_result || NULL == reg) {
-@@ -3122,14 +3195,14 @@ loader_get_manifest_files(const struct loader_instance *inst,
-         }
-         file = next_file;
- #if !defined(_WIN32)
--        if (home_location != NULL &&
-+        if (relative_location != NULL &&
-             (next_file == NULL || *next_file == '\0') && override == NULL) {
-             char *xdgdatahome = secure_getenv("XDG_DATA_HOME");
-             size_t len;
-             if (xdgdatahome != NULL) {
- 
-                 char *home_loc = loader_stack_alloc(strlen(xdgdatahome) + 2 +
--                                                    strlen(home_location));
-+                                                    strlen(relative_location));
-                 if (home_loc == NULL) {
-                     loader_log(inst, VK_DEBUG_REPORT_ERROR_BIT_EXT, 0,
-                                "loader_get_manifest_files: Failed to allocate "
-@@ -3139,15 +3212,15 @@ loader_get_manifest_files(const struct loader_instance *inst,
-                 }
-                 strcpy(home_loc, xdgdatahome);
-                 // Add directory separator if needed
--                if (home_location[0] != DIRECTORY_SYMBOL) {
-+                if (relative_location[0] != DIRECTORY_SYMBOL) {
-                     len = strlen(home_loc);
-                     home_loc[len] = DIRECTORY_SYMBOL;
-                     home_loc[len + 1] = '\0';
-                 }
--                strcat(home_loc, home_location);
-+                strcat(home_loc, relative_location);
-                 file = home_loc;
-                 next_file = loader_get_next_path(file);
--                home_location = NULL;
-+                relative_location = NULL;
- 
-                 loader_log(
-                     inst, VK_DEBUG_REPORT_DEBUG_BIT_EXT, 0,
-@@ -3160,7 +3233,7 @@ loader_get_manifest_files(const struct loader_instance *inst,
-                 char *home = secure_getenv("HOME");
-                 if (home != NULL) {
-                     char *home_loc = loader_stack_alloc(strlen(home) + 16 +
--                                                        strlen(home_location));
-+                                                        strlen(relative_location));
-                     if (home_loc == NULL) {
-                         loader_log(
-                             inst, VK_DEBUG_REPORT_ERROR_BIT_EXT, 0,
-@@ -3178,15 +3251,15 @@ loader_get_manifest_files(const struct loader_instance *inst,
-                     }
-                     strcat(home_loc, ".local/share");
- 
--                    if (home_location[0] != DIRECTORY_SYMBOL) {
-+                    if (relative_location[0] != DIRECTORY_SYMBOL) {
-                         len = strlen(home_loc);
-                         home_loc[len] = DIRECTORY_SYMBOL;
-                         home_loc[len + 1] = '\0';
-                     }
--                    strcat(home_loc, home_location);
-+                    strcat(home_loc, relative_location);
-                     file = home_loc;
-                     next_file = loader_get_next_path(file);
--                    home_location = NULL;
-+                    relative_location = NULL;
- 
-                     loader_log(
-                         inst, VK_DEBUG_REPORT_DEBUG_BIT_EXT, 0,
-@@ -3263,7 +3336,7 @@ VkResult loader_icd_scan(const struct loader_instance *inst,
-     // Get a list of manifest files for ICDs
-     res = loader_get_manifest_files(inst, "VK_ICD_FILENAMES", NULL, false, true,
-                                     DEFAULT_VK_DRIVERS_INFO,
--                                    HOME_VK_DRIVERS_INFO, &manifest_files);
-+                                    RELATIVE_VK_DRIVERS_INFO, &manifest_files);
-     if (VK_SUCCESS != res || manifest_files.count == 0) {
-         goto out;
-     }
-@@ -3490,7 +3563,7 @@ void loader_layer_scan(const struct loader_instance *inst,
-     if (VK_SUCCESS !=
-         loader_get_manifest_files(inst, LAYERS_PATH_ENV, LAYERS_SOURCE_PATH,
-                                   true, true, DEFAULT_VK_ELAYERS_INFO,
--                                  HOME_VK_ELAYERS_INFO, &manifest_files[0])) {
-+                                  RELATIVE_VK_ELAYERS_INFO, &manifest_files[0])) {
-         goto out;
-     }
- 
-@@ -3499,7 +3572,7 @@ void loader_layer_scan(const struct loader_instance *inst,
-     // overridden by LAYERS_PATH_ENV
-     if (VK_SUCCESS != loader_get_manifest_files(inst, NULL, NULL, true, false,
-                                                 DEFAULT_VK_ILAYERS_INFO,
--                                                HOME_VK_ILAYERS_INFO,
-+                                                RELATIVE_VK_ILAYERS_INFO,
-                                                 &manifest_files[1])) {
-         goto out;
-     }
-@@ -3569,7 +3642,7 @@ void loader_implicit_layer_scan(const struct loader_instance *inst,
-     // overridden by LAYERS_PATH_ENV
-     VkResult res = loader_get_manifest_files(
-         inst, NULL, NULL, true, false, DEFAULT_VK_ILAYERS_INFO,
--        HOME_VK_ILAYERS_INFO, &manifest_files);
-+        RELATIVE_VK_ILAYERS_INFO, &manifest_files);
-     if (VK_SUCCESS != res || manifest_files.count == 0) {
-         return;
-     }
-diff --git a/loader/vk_loader_platform.h b/loader/vk_loader_platform.h
-index dc4ac10..50a7966 100644
---- a/loader/vk_loader_platform.h
-+++ b/loader/vk_loader_platform.h
-@@ -57,47 +57,9 @@
- #define VULKAN_ILAYERCONF_DIR "implicit_layer.d"
- #define VULKAN_LAYER_DIR      "layer"
- 
--#if defined(EXTRASYSCONFDIR)
--#define EXTRA_DRIVERS_SYSCONFDIR_INFO ":"                                      \
--    EXTRASYSCONFDIR VULKAN_DIR VULKAN_ICDCONF_DIR
--#define EXTRA_ELAYERS_SYSCONFDIR_INFO ":"                                      \
--    EXTRASYSCONFDIR VULKAN_DIR VULKAN_ELAYERCONF_DIR
--#define EXTRA_ILAYERS_SYSCONFDIR_INFO ":"                                      \
--    EXTRASYSCONFDIR VULKAN_DIR VULKAN_ILAYERCONF_DIR
--#else
--#define EXTRA_DRIVERS_SYSCONFDIR_INFO
--#define EXTRA_ELAYERS_SYSCONFDIR_INFO
--#define EXTRA_ILAYERS_SYSCONFDIR_INFO
--#endif
--
--#if defined(EXTRADATADIR)
--#define EXTRA_DRIVERS_DATADIR_INFO ":"                                         \
--    EXTRADATADIR VULKAN_DIR VULKAN_ICDCONF_DIR
--#define EXTRA_ELAYERS_DATADIR_INFO ":"                                         \
--    EXTRADATADIR VULKAN_DIR VULKAN_ELAYERCONF_DIR
--#define EXTRA_ILAYERS_DATADIR_INFO ":"                                         \
--    EXTRADATADIR VULKAN_DIR VULKAN_ILAYERCONF_DIR
--#else
--#define EXTRA_DRIVERS_DATADIR_INFO
--#define EXTRA_ELAYERS_DATADIR_INFO
--#define EXTRA_ILAYERS_DATADIR_INFO
--#endif
--
--#define DEFAULT_VK_DRIVERS_INFO                                                \
--    SYSCONFDIR   VULKAN_DIR VULKAN_ICDCONF_DIR ":"                             \
--    DATADIR      VULKAN_DIR VULKAN_ICDCONF_DIR                                 \
--    EXTRA_DRIVERS_SYSCONFDIR_INFO                                              \
--    EXTRA_DRIVERS_DATADIR_INFO
--#define DEFAULT_VK_ELAYERS_INFO                                                \
--    SYSCONFDIR   VULKAN_DIR VULKAN_ELAYERCONF_DIR ":"                          \
--    DATADIR      VULKAN_DIR VULKAN_ELAYERCONF_DIR                              \
--    EXTRA_ELAYERS_SYSCONFDIR_INFO                                              \
--    EXTRA_ELAYERS_DATADIR_INFO
--#define DEFAULT_VK_ILAYERS_INFO                                                \
--    SYSCONFDIR   VULKAN_DIR VULKAN_ILAYERCONF_DIR ":"                          \
--    DATADIR      VULKAN_DIR VULKAN_ILAYERCONF_DIR                              \
--    EXTRA_ILAYERS_SYSCONFDIR_INFO                                              \
--    EXTRA_ILAYERS_DATADIR_INFO
-+#define DEFAULT_VK_DRIVERS_INFO ""
-+#define DEFAULT_VK_ELAYERS_INFO ""
-+#define DEFAULT_VK_ILAYERS_INFO ""
- 
- #define DEFAULT_VK_DRIVERS_PATH ""
- #if !defined(DEFAULT_VK_LAYERS_PATH)
-@@ -109,9 +71,9 @@
- #endif
- #define LAYERS_PATH_ENV "VK_LAYER_PATH"
- 
--#define HOME_VK_DRIVERS_INFO VULKAN_DIR VULKAN_ICDCONF_DIR
--#define HOME_VK_ELAYERS_INFO VULKAN_DIR VULKAN_ELAYERCONF_DIR
--#define HOME_VK_ILAYERS_INFO VULKAN_DIR VULKAN_ILAYERCONF_DIR
-+#define RELATIVE_VK_DRIVERS_INFO VULKAN_DIR VULKAN_ICDCONF_DIR
-+#define RELATIVE_VK_ELAYERS_INFO VULKAN_DIR VULKAN_ELAYERCONF_DIR
-+#define RELATIVE_VK_ILAYERS_INFO VULKAN_DIR VULKAN_ILAYERCONF_DIR
- 
- // C99:
- #define PRINTF_SIZE_T_SPECIFIER "%zu"
-@@ -251,9 +213,9 @@ loader_platform_thread_cond_broadcast(loader_platform_thread_cond *pCond) {
- #define LAYERS_SOURCE_PATH NULL
- #endif
- #define LAYERS_PATH_ENV "VK_LAYER_PATH"
--#define HOME_VK_DRIVERS_INFO ""
--#define HOME_VK_ELAYERS_INFO ""
--#define HOME_VK_ILAYERS_INFO ""
-+#define RELATIVE_VK_DRIVERS_INFO ""
-+#define RELATIVE_VK_ELAYERS_INFO ""
-+#define RELATIVE_VK_ILAYERS_INFO ""
- #define PRINTF_SIZE_T_SPECIFIER "%Iu"
- 
- // File IO