about summary refs log tree commit diff
diff options
context:
space:
mode:
authorBenjamin Saunders <ben.e.saunders@gmail.com>2017-04-01 12:28:59 -0700
committerBenjamin Saunders <ben.e.saunders@gmail.com>2017-04-01 12:28:59 -0700
commit201960922c52f01f2ede01020d2a1db5fcbeea1f (patch)
treee826d893b4fcb4af4db930f9dc5ddc5a8ffc4e40
parentd9b36c36c5e56c6e2e70f620313008c6ed2407a1 (diff)
downloadnixlib-201960922c52f01f2ede01020d2a1db5fcbeea1f.tar
nixlib-201960922c52f01f2ede01020d2a1db5fcbeea1f.tar.gz
nixlib-201960922c52f01f2ede01020d2a1db5fcbeea1f.tar.bz2
nixlib-201960922c52f01f2ede01020d2a1db5fcbeea1f.tar.lz
nixlib-201960922c52f01f2ede01020d2a1db5fcbeea1f.tar.xz
nixlib-201960922c52f01f2ede01020d2a1db5fcbeea1f.tar.zst
nixlib-201960922c52f01f2ede01020d2a1db5fcbeea1f.zip
vulkan-loader: 1.0.39.1 -> 1.0.42.2
-rw-r--r--pkgs/development/compilers/glslang/default.nix11
-rw-r--r--pkgs/development/compilers/glslang/install-headers.patch35
-rw-r--r--pkgs/development/libraries/vulkan-loader/default.nix7
-rw-r--r--pkgs/development/libraries/vulkan-loader/fallback-paths.patch52
-rw-r--r--pkgs/development/libraries/vulkan-loader/use-xdg-paths.patch322
-rw-r--r--pkgs/development/tools/spirv-tools/default.nix13
6 files changed, 15 insertions, 425 deletions
diff --git a/pkgs/development/compilers/glslang/default.nix b/pkgs/development/compilers/glslang/default.nix
index d2384598456d..20e156a72e43 100644
--- a/pkgs/development/compilers/glslang/default.nix
+++ b/pkgs/development/compilers/glslang/default.nix
@@ -2,19 +2,17 @@
 
 stdenv.mkDerivation rec {
   name = "glslang-git-${version}";
-  version = "2016-12-21";
+  version = "2017-03-29";
 
   # `vulkan-loader` requires a specific version of `glslang` as specified in
-  # `<vulkan-loader-repo>/glslang_revision`.
+  # `<vulkan-loader-repo>/external_revisions/glslang_revision`.
   src = fetchFromGitHub {
     owner = "KhronosGroup";
     repo = "glslang";
-    rev = "807a0d9e2f4e176f75d62ac3c179c81800ec2608";
-    sha256 = "02jckgihqhagm73glipb4c6ri5fr3pnbxb5vrznn2vppyfdfghbj";
+    rev = "714e58b2fc5a45714596e6aa2f6ac8f64260365c";
+    sha256 = "0ihnd0c4mr6ppbv9g7z1abrn8vx66simfzx5q48nqcpnywn35jxv";
   };
 
-  patches = [ ./install-headers.patch ];
-
   buildInputs = [ cmake bison ];
   enableParallelBuilding = true;
 
@@ -23,5 +21,6 @@ stdenv.mkDerivation rec {
     description = "Khronos reference front-end for GLSL and ESSL";
     license = licenses.asl20;
     platforms = platforms.linux;
+    maintainers = [ maintainers.ralith ];
   };
 }
diff --git a/pkgs/development/compilers/glslang/install-headers.patch b/pkgs/development/compilers/glslang/install-headers.patch
deleted file mode 100644
index 75f271309780..000000000000
--- a/pkgs/development/compilers/glslang/install-headers.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-diff --git a/SPIRV/CMakeLists.txt b/SPIRV/CMakeLists.txt
-index c538e84..6ece1ab 100755
---- a/SPIRV/CMakeLists.txt
-+++ b/SPIRV/CMakeLists.txt
-@@ -34,8 +34,9 @@ if(ENABLE_AMD_EXTENSIONS)
- endif(ENABLE_AMD_EXTENSIONS)
- 
- if(ENABLE_NV_EXTENSIONS)
--    set(HEADERS
--        GLSL.ext.NV.h)
-+    list(APPEND
-+         HEADERS
-+         GLSL.ext.NV.h)
- endif(ENABLE_NV_EXTENSIONS)
- 
- add_library(SPIRV STATIC ${SOURCES} ${HEADERS})
-@@ -51,3 +52,5 @@ endif(WIN32)
- 
- install(TARGETS SPIRV SPVRemapper
-         ARCHIVE DESTINATION lib)
-+
-+install(FILES ${HEADERS} ${SPVREMAP_HEADERS} DESTINATION include/SPIRV/)
-diff --git a/glslang/CMakeLists.txt b/glslang/CMakeLists.txt
-index 95d4bdd..e7fda90 100644
---- a/glslang/CMakeLists.txt
-+++ b/glslang/CMakeLists.txt
-@@ -93,3 +93,8 @@ endif(WIN32)
- 
- install(TARGETS glslang 
-         ARCHIVE DESTINATION lib)
-+
-+foreach(file ${HEADERS})
-+    get_filename_component(dir ${file} DIRECTORY)
-+    install(FILES ${file} DESTINATION include/glslang/${dir})
-+endforeach()
diff --git a/pkgs/development/libraries/vulkan-loader/default.nix b/pkgs/development/libraries/vulkan-loader/default.nix
index a1b9ee03f23a..4432c22bcd8c 100644
--- a/pkgs/development/libraries/vulkan-loader/default.nix
+++ b/pkgs/development/libraries/vulkan-loader/default.nix
@@ -3,12 +3,12 @@
   libXext, wayland, mesa_noglu }:
 
 let
-  version = "1.0.39.1";
+  version = "1.0.42.2";
   src = fetchFromGitHub {
     owner = "KhronosGroup";
     repo = "Vulkan-LoaderAndValidationLayers";
     rev = "sdk-${version}";
-    sha256 = "0y9zzrnjjjza2kkf5jfsdqhn98md6rsq0hb7jg62z2dipzky7zdp";
+    sha256 = "0na1ax2cgv6w29213mby56mndfsj3iizj3n5pbpy4s4p7ij9kdgn";
   };
 in
 
@@ -26,8 +26,6 @@ stdenv.mkDerivation rec {
     "-DFALLBACK_DATA_DIRS=${mesa_noglu.driverLink}/share:/usr/local/share:/usr/share"
   ];
 
-  patches = [ ./use-xdg-paths.patch ./fallback-paths.patch ];
-
   outputs = [ "out" "dev" "demos" ];
 
   preConfigure = ''
@@ -59,5 +57,6 @@ stdenv.mkDerivation rec {
     homepage    = "http://www.lunarg.com";
     platforms   = platforms.linux;
     license     = licenses.asl20;
+    maintainers = [ maintainers.ralith ];
   };
 }
diff --git a/pkgs/development/libraries/vulkan-loader/fallback-paths.patch b/pkgs/development/libraries/vulkan-loader/fallback-paths.patch
deleted file mode 100644
index d8d9fdd3f5f1..000000000000
--- a/pkgs/development/libraries/vulkan-loader/fallback-paths.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-commit a59b141559a8c1813da438b97e5f79eeb6cc7642
-Author: Benjamin Saunders <ben.e.saunders@gmail.com>
-Date:   Sun Feb 19 11:14:24 2017 -0800
-
-    loader: Configurable fallback search paths
-    
-    This makes it easier for non-FHS distributions to behave well when the loader
-    is used by a SUID process or in an otherwise unusual environment.
-
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index a43d264..d28b3f5 100644
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -16,6 +16,11 @@ set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
- find_package(PythonInterp 3 REQUIRED)
- 
- if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
-+    set(FALLBACK_CONFIG_DIRS "/etc/xdg" CACHE STRING
-+        "Search path to use when XDG_CONFIG_DIRS is unset or empty or the current process is SUID/SGID. Default is freedesktop compliant.")
-+    set(FALLBACK_DATA_DIRS "/usr/local/share:/usr/share" CACHE STRING
-+        "Search path to use when XDG_DATA_DIRS is unset or empty or the current process is SUID/SGID. Default is freedesktop compliant.")
-+
-     include(FindPkgConfig)
-     option(BUILD_WSI_XCB_SUPPORT "Build XCB WSI support" ON)
-     option(BUILD_WSI_XLIB_SUPPORT "Build Xlib WSI support" ON)
-@@ -285,7 +290,10 @@ run_vk_xml_generate(dispatch_table_generator.py vk_dispatch_table_helper.h)
- if(NOT WIN32)
-     include(GNUInstallDirs)
- 
-+    add_definitions(-DFALLBACK_CONFIG_DIRS="${FALLBACK_CONFIG_DIRS}")
-+    add_definitions(-DFALLBACK_DATA_DIRS="${FALLBACK_DATA_DIRS}")
-     add_definitions(-DSYSCONFDIR="${CMAKE_INSTALL_FULL_SYSCONFDIR}")
-+
-     # Make sure /etc is searched by the loader
-     if(NOT (CMAKE_INSTALL_FULL_SYSCONFDIR STREQUAL "/etc"))
-         add_definitions(-DEXTRASYSCONFDIR="/etc")
-diff --git a/loader/loader.c b/loader/loader.c
-index 81c37c4..83378eb 100644
---- a/loader/loader.c
-+++ b/loader/loader.c
-@@ -2644,9 +2644,9 @@ static VkResult loader_get_manifest_files(const struct loader_instance *inst, co
-         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";
-+            xdgconfdirs = FALLBACK_CONFIG_DIRS;
-         if (xdgdatadirs == NULL || xdgdatadirs[0] == '\0')
--            xdgdatadirs = "/usr/local/share:/usr/share";
-+            xdgdatadirs = FALLBACK_DATA_DIRS;
-         const size_t rel_size = strlen(relative_location);
-         // Leave space for trailing separators
-         loc_size += strlen(xdgconfdirs) + strlen(xdgdatadirs) + 2*rel_size + 2;
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
diff --git a/pkgs/development/tools/spirv-tools/default.nix b/pkgs/development/tools/spirv-tools/default.nix
index 9bc9bf9c0e41..bfd4b7370e0a 100644
--- a/pkgs/development/tools/spirv-tools/default.nix
+++ b/pkgs/development/tools/spirv-tools/default.nix
@@ -4,18 +4,18 @@ let
 
 spirv_sources = {
   # `vulkan-loader` requires a specific version of `spirv-tools` and `spirv-headers` as specified in
-  # `<vulkan-loader-repo>/spirv-tools_revision`.
+  # `<vulkan-loader-repo>/external_revisions/spirv-tools_revision`.
   tools = fetchFromGitHub {
     owner = "KhronosGroup";
     repo = "SPIRV-Tools";
-    rev = "37422e9dba1a3a8cb8028b779dd546d43add6ef8";
-    sha256 = "0sp2p4wg902clq0fr94vj19vyv43cq333jjxr0mjzay8dw2h4yzk";
+    rev = "7fe8a57a5bd72094e91f9f93e51dac2f2461dcb4";
+    sha256 = "0rh25y1k3m3f1nqs032lh3mng5qfw9kqn6xv9yzzm47i1i0b6hmr";
   };
   headers = fetchFromGitHub {
     owner = "KhronosGroup";
     repo = "SPIRV-Headers";
-    rev = "c470b68225a04965bf87d35e143ae92f831e8110";
-    sha256 = "18jgcpmm0ixp6314r5w144l3wayxjkmwqgx8dk5jgyw36dammkwd";
+    rev = "6c08995e6e7b94129e6086c78198c77111f2f262";
+    sha256 = "07m12wm9prib7hldj7pbc8vwnj0x6llgx4shzgy8x4xbhbafawws";
   };
 };
 
@@ -23,7 +23,7 @@ in
 
 stdenv.mkDerivation rec {
   name = "spirv-tools-${version}";
-  version = "2016-12-19";
+  version = "2017-03-23";
 
   src = spirv_sources.tools;
   patchPhase = ''ln -sv ${spirv_sources.headers} external/spirv-headers'';
@@ -40,5 +40,6 @@ stdenv.mkDerivation rec {
     description = "The SPIR-V Tools project provides an API and commands for processing SPIR-V modules";
     license = licenses.asl20;
     platforms = platforms.linux;
+    maintainers = [ maintainers.ralith ];
   };
 }