aboutsummaryrefslogtreecommitdiff
path: root/loader/vk_loader_platform.h
diff options
context:
space:
mode:
authorJohn Drinkwater <john@nextraweb.com>2016-08-01 17:00:00 +0100
committerMark Young <marky@lunarg.com>2016-08-04 07:39:03 -0600
commit3e58ec2944344cdbd90ef54cb9e2a2e83dc061a6 (patch)
treedf0f6a9ea10902bb7e2c060f69c139ddfde10743 /loader/vk_loader_platform.h
parent7adce38b9fdc72d67105554235faecc2ef075be3 (diff)
downloadusermoji-3e58ec2944344cdbd90ef54cb9e2a2e83dc061a6.tar.xz
loader: support manifests in XDG locations
Some users set the environment variable XDG_DATA_HOME to relocate ~/.local/share/ to a more friendly location and so it is not wise to look solely at that location. This change adds basic support for that env var without changing the behaviour for typical users. If XDG_DATA_HOME is defined, the loader checks XDG_DATA_HOME/vulkan/..., if HOME is defined the loader will check HOME/.local/share/vulkan/..., and with neither it skips looking for user manifests. loader_get_manifest_files() now takes a relative location inside the config path eg `/vulkan/implicit_layer.d` and appends that onto the preferred location. vk_loader_platform.h Linux defines got minor adjustments to support this change, with an added bonus of being more readable. Change-Id: I44e8a99f2a984f94dc33cdda122e6c417d3a3653
Diffstat (limited to 'loader/vk_loader_platform.h')
-rw-r--r--loader/vk_loader_platform.h61
1 files changed, 21 insertions, 40 deletions
diff --git a/loader/vk_loader_platform.h b/loader/vk_loader_platform.h
index d1318539..3a026404 100644
--- a/loader/vk_loader_platform.h
+++ b/loader/vk_loader_platform.h
@@ -50,42 +50,23 @@
#define PATH_SEPERATOR ':'
#define DIRECTORY_SYMBOL '/'
-#define VULKAN_ICDCONF_DIR \
- "/" \
- "vulkan" \
- "/" \
- "icd.d"
-#define VULKAN_ICD_DIR \
- "/" \
- "vulkan" \
- "/" \
- "icd"
-#define VULKAN_ELAYERCONF_DIR \
- "/" \
- "vulkan" \
- "/" \
- "explicit_layer.d"
-#define VULKAN_ILAYERCONF_DIR \
- "/" \
- "vulkan" \
- "/" \
- "implicit_layer.d"
-#define VULKAN_LAYER_DIR \
- "/" \
- "vulkan" \
- "/" \
- "layer"
+#define VULKAN_DIR "/vulkan/"
+#define VULKAN_ICDCONF_DIR "icd.d"
+#define VULKAN_ICD_DIR "icd"
+#define VULKAN_ELAYERCONF_DIR "explicit_layer.d"
+#define VULKAN_ILAYERCONF_DIR "implicit_layer.d"
+#define VULKAN_LAYER_DIR "layer"
#if defined(LOCALPREFIX)
#define LOCAL_DRIVERS_INFO \
- LOCALPREFIX "/" SYSCONFDIR VULKAN_ICDCONF_DIR ":" LOCALPREFIX \
- "/" DATADIR VULKAN_ICDCONF_DIR ":"
+ LOCALPREFIX "/" SYSCONFDIR VULKAN_DIR VULKAN_ICDCONF_DIR ":" \
+ LOCALPREFIX "/" DATADIR VULKAN_DIR VULKAN_ICDCONF_DIR ":"
#define LOCAL_ELAYERS_INFO \
- LOCALPREFIX "/" SYSCONFDIR VULKAN_ELAYERCONF_DIR ":" LOCALPREFIX \
- "/" DATADIR VULKAN_ELAYERCONF_DIR ":"
+ LOCALPREFIX "/" SYSCONFDIR VULKAN_DIR VULKAN_ELAYERCONF_DIR ":" \
+ LOCALPREFIX "/" DATADIR VULKAN_DIR VULKAN_ELAYERCONF_DIR ":"
#define LOCAL_ILAYERS_INFO \
- LOCALPREFIX "/" SYSCONFDIR VULKAN_ILAYERCONF_DIR ":" LOCALPREFIX \
- "/" DATADIR VULKAN_ILAYERCONF_DIR ":"
+ LOCALPREFIX "/" SYSCONFDIR VULKAN_DIR VULKAN_ILAYERCONF_DIR ":" \
+ LOCALPREFIX "/" DATADIR VULKAN_DIR VULKAN_ILAYERCONF_DIR ":"
#else
#define LOCAL_DRIVERS_INFO
#define LOCAL_ELAYERS_INFO
@@ -94,25 +75,25 @@
#define DEFAULT_VK_DRIVERS_INFO \
LOCAL_DRIVERS_INFO \
- "/" SYSCONFDIR VULKAN_ICDCONF_DIR ":" \
- "/usr/" DATADIR VULKAN_ICDCONF_DIR
+ "/" SYSCONFDIR VULKAN_DIR VULKAN_ICDCONF_DIR ":" \
+ "/usr/" DATADIR VULKAN_DIR VULKAN_ICDCONF_DIR
#define DEFAULT_VK_DRIVERS_PATH ""
#define DEFAULT_VK_ELAYERS_INFO \
LOCAL_ELAYERS_INFO \
- "/" SYSCONFDIR VULKAN_ELAYERCONF_DIR ":" \
- "/usr/" DATADIR VULKAN_ELAYERCONF_DIR
+ "/" SYSCONFDIR VULKAN_DIR VULKAN_ELAYERCONF_DIR ":" \
+ "/usr/" DATADIR VULKAN_DIR VULKAN_ELAYERCONF_DIR
#define DEFAULT_VK_ILAYERS_INFO \
LOCAL_ILAYERS_INFO \
- "/" SYSCONFDIR VULKAN_ILAYERCONF_DIR ":" \
- "/usr/" DATADIR VULKAN_ILAYERCONF_DIR
+ "/" SYSCONFDIR VULKAN_DIR VULKAN_ILAYERCONF_DIR ":" \
+ "/usr/" DATADIR VULKAN_DIR VULKAN_ILAYERCONF_DIR
#define DEFAULT_VK_LAYERS_PATH ""
#if !defined(LAYERS_SOURCE_PATH)
#define LAYERS_SOURCE_PATH NULL
#endif
#define LAYERS_PATH_ENV "VK_LAYER_PATH"
-#define HOME_VK_DRIVERS_INFO "/.local/share" VULKAN_ICDCONF_DIR
-#define HOME_VK_ELAYERS_INFO "/.local/share" VULKAN_ELAYERCONF_DIR
-#define HOME_VK_ILAYERS_INFO "/.local/share" VULKAN_ILAYERCONF_DIR
+#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
// C99:
#define PRINTF_SIZE_T_SPECIFIER "%zu"