aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJon Ashburn <jon@lunarg.com>2015-11-18 16:46:48 -0700
committerJon Ashburn <jon@lunarg.com>2015-11-18 17:05:38 -0700
commit29f0d379f2dd656d33dd875ca50abb964eb29fe0 (patch)
tree86a11b17a7c09e91119fdba82ce15f71d84fa088
parent7dd84581607249f9dd6c30b1a511c3be946a73e7 (diff)
downloadusermoji-29f0d379f2dd656d33dd875ca50abb964eb29fe0.tar.xz
loader: Make version in layer JSON files consistent
bugzilla #15057 part two
-rw-r--r--layers/linux/api_dump.json6
-rw-r--r--layers/linux/basic.json8
-rw-r--r--layers/linux/device_limits.json8
-rw-r--r--layers/linux/draw_state.json8
-rw-r--r--layers/linux/generic.json6
-rw-r--r--layers/linux/image.json6
-rw-r--r--layers/linux/mem_tracker.json6
-rw-r--r--layers/linux/multi.json10
-rw-r--r--layers/linux/object_tracker.json6
-rw-r--r--layers/linux/param_checker.json6
-rw-r--r--layers/linux/screenshot.json6
-rw-r--r--layers/linux/shader_checker.json6
-rw-r--r--layers/linux/swapchain.json6
-rw-r--r--layers/linux/threading.json6
-rw-r--r--layers/windows/api_dump.json6
-rw-r--r--layers/windows/basic.json8
-rw-r--r--layers/windows/device_limits.json10
-rw-r--r--layers/windows/draw_state.json8
-rw-r--r--layers/windows/generic.json8
-rw-r--r--layers/windows/image.json6
-rw-r--r--layers/windows/mem_tracker.json6
-rw-r--r--layers/windows/multi.json10
-rw-r--r--layers/windows/object_tracker.json6
-rw-r--r--layers/windows/param_checker.json6
-rw-r--r--layers/windows/screenshot.json6
-rw-r--r--layers/windows/shader_checker.json6
-rw-r--r--layers/windows/swapchain.json6
-rw-r--r--layers/windows/threading.json6
-rw-r--r--loader/LinuxICDs.txt73
-rw-r--r--loader/WindowsICDs.txt56
-rw-r--r--loader/loader.c24
31 files changed, 177 insertions, 168 deletions
diff --git a/layers/linux/api_dump.json b/layers/linux/api_dump.json
index a8b84fde..66b349d1 100644
--- a/layers/linux/api_dump.json
+++ b/layers/linux/api_dump.json
@@ -1,11 +1,11 @@
{
- "file_format_version" : "0.9.0",
+ "file_format_version" : "1.0.0",
"layer" : {
"name": "APIDump",
"type": "GLOBAL",
"library_path": "./libVKLayerAPIDump.so",
- "abi_versions": "0.9.0",
- "implementation_version": "1.0.0",
+ "api_version": "0.210.0",
+ "implementation_version": "0",
"description": "LunarG debug layer"
}
}
diff --git a/layers/linux/basic.json b/layers/linux/basic.json
index f3de7883..0fa81d39 100644
--- a/layers/linux/basic.json
+++ b/layers/linux/basic.json
@@ -1,16 +1,16 @@
{
- "file_format_version" : "0.9.0",
+ "file_format_version" : "1.0.0",
"layer" : {
"name": "Basic",
"type": "GLOBAL",
"library_path": "./libVKLayerBasic.so",
- "abi_versions": "0.9.0",
- "implementation_version": "1.0.0",
+ "api_version": "0.210.0",
+ "implementation_version": "0",
"description": "LunarG Sample Layer",
"device_extensions": [
{
"name": "vkLayerExtension1",
- "version": "1.0.0"
+ "spec_version": "0"
}
]
}
diff --git a/layers/linux/device_limits.json b/layers/linux/device_limits.json
index aa2f2780..ddcdc849 100644
--- a/layers/linux/device_limits.json
+++ b/layers/linux/device_limits.json
@@ -1,16 +1,16 @@
{
- "file_format_version" : "0.9.0",
+ "file_format_version" : "1.0.0",
"layer" : {
"name": "DeviceLimits",
"type": "GLOBAL",
"library_path": "./libVKLayerDeviceLimits.so",
- "abi_versions": "0.9.0",
- "implementation_version": "1.0.0",
+ "api_version": "0.210.0",
+ "implementation_version": "0",
"description": "LunarG Validation Layer",
"device_extensions": [
{
"name": "DEBUG_MARKER",
- "version": "1.0.0"
+ "spec_version": "0"
}
]
}
diff --git a/layers/linux/draw_state.json b/layers/linux/draw_state.json
index bc76df9c..39d0bc5a 100644
--- a/layers/linux/draw_state.json
+++ b/layers/linux/draw_state.json
@@ -1,16 +1,16 @@
{
- "file_format_version" : "0.9.0",
+ "file_format_version" : "1.0.0",
"layer" : {
"name": "DrawState",
"type": "GLOBAL",
"library_path": "./libVKLayerDrawState.so",
- "abi_versions": "0.9.0",
- "implementation_version": "1.0.0",
+ "api_version": "0.210.0",
+ "implementation_version": "0",
"description": "LunarG Validation Layer",
"device_extensions": [
{
"name": "DEBUG_MARKER",
- "version": "1.0.0"
+ "spec_version": "0"
}
]
}
diff --git a/layers/linux/generic.json b/layers/linux/generic.json
index 4ade7794..823780f4 100644
--- a/layers/linux/generic.json
+++ b/layers/linux/generic.json
@@ -1,11 +1,11 @@
{
- "file_format_version" : "0.9.0",
+ "file_format_version" : "1.0.0",
"layer" : {
"name": "Generic",
"type": "GLOBAL",
"library_path": "./libVKLayerGeneric.so",
- "abi_versions": "0.9.0",
- "implementation_version": "1.0.0",
+ "api_version": "0.210.0",
+ "implementation_version": "0",
"description": "LunarG Sample Layer"
}
}
diff --git a/layers/linux/image.json b/layers/linux/image.json
index a0cb304a..d0c56a4f 100644
--- a/layers/linux/image.json
+++ b/layers/linux/image.json
@@ -1,11 +1,11 @@
{
- "file_format_version" : "0.9.0",
+ "file_format_version" : "1.0.0",
"layer" : {
"name": "Image",
"type": "GLOBAL",
"library_path": "./libVKLayerImage.so",
- "abi_versions": "0.9.0",
- "implementation_version": "1.0.0",
+ "api_version": "0.210.0",
+ "implementation_version": "0",
"description": "LunarG Validation Layer"
}
}
diff --git a/layers/linux/mem_tracker.json b/layers/linux/mem_tracker.json
index 8432956d..e444dfe6 100644
--- a/layers/linux/mem_tracker.json
+++ b/layers/linux/mem_tracker.json
@@ -1,11 +1,11 @@
{
- "file_format_version" : "0.9.0",
+ "file_format_version" : "1.0.0",
"layer" : {
"name": "MemTracker",
"type": "GLOBAL",
"library_path": "./libVKLayerMemTracker.so",
- "abi_versions": "0.9.0",
- "implementation_version": "1.0.0",
+ "api_version": "0.210.0",
+ "implementation_version": "0",
"description": "LunarG Validation Layer"
}
}
diff --git a/layers/linux/multi.json b/layers/linux/multi.json
index 5913bc14..30399335 100644
--- a/layers/linux/multi.json
+++ b/layers/linux/multi.json
@@ -1,11 +1,11 @@
{
- "file_format_version" : "0.9.0",
+ "file_format_version" : "1.0.0",
"layer" : {
"name": "multi1",
"type": "DEVICE",
"library_path": "./libVKLayerMulti.so",
- "abi_versions": "0.9.0",
- "implementation_version": "1.1.0",
+ "api_version": "0.210.0",
+ "implementation_version": "0",
"description": "LunarG Sample multiple layer per library",
"functions" : {
"vkGetDeviceProcAddr" : "multi1GetDeviceProcAddr"
@@ -15,8 +15,8 @@
"name": "multi2",
"type": "INSTANCE",
"library_path": "./libVKLayerMulti.so",
- "abi_versions": "0.9.0",
- "implementation_version": "1.1.0",
+ "api_version": "0.210.0",
+ "implementation_version": "0",
"description": "LunarG Sample multiple layer per library",
"functions" : {
"vkGetInstanceProcAddr" : "multi2GetInstanceProcAddr"
diff --git a/layers/linux/object_tracker.json b/layers/linux/object_tracker.json
index c67f94d8..e094d1c9 100644
--- a/layers/linux/object_tracker.json
+++ b/layers/linux/object_tracker.json
@@ -1,11 +1,11 @@
{
- "file_format_version" : "0.9.0",
+ "file_format_version" : "1.0.0",
"layer" : {
"name": "ObjectTracker",
"type": "GLOBAL",
"library_path": "./libVKLayerObjectTracker.so",
- "abi_versions": "0.9.0",
- "implementation_version": "1.0.0",
+ "api_version": "0.210.0",
+ "implementation_version": "0",
"description": "LunarG Validation Layer"
}
}
diff --git a/layers/linux/param_checker.json b/layers/linux/param_checker.json
index 639b7381..f83ebcdb 100644
--- a/layers/linux/param_checker.json
+++ b/layers/linux/param_checker.json
@@ -1,11 +1,11 @@
{
- "file_format_version" : "0.9.0",
+ "file_format_version" : "1.0.0",
"layer" : {
"name": "ParamChecker",
"type": "GLOBAL",
"library_path": "./libVKLayerParamChecker.so",
- "abi_versions": "0.9.0",
- "implementation_version": "1.0.0",
+ "api_version": "0.210.0",
+ "implementation_version": "0",
"description": "LunarG Validation Layer"
}
}
diff --git a/layers/linux/screenshot.json b/layers/linux/screenshot.json
index ddcbdbf5..cb98198d 100644
--- a/layers/linux/screenshot.json
+++ b/layers/linux/screenshot.json
@@ -1,11 +1,11 @@
{
- "file_format_version" : "0.9.0",
+ "file_format_version" : "1.0.0",
"layer" : {
"name": "ScreenShot",
"type": "GLOBAL",
"library_path": "./libVKLayerScreenShot.so",
- "abi_versions": "0.9.0",
- "implementation_version": "1.0.0",
+ "api_version": "0.210.0",
+ "implementation_version": "0",
"description": "LunarG image capture layer"
}
}
diff --git a/layers/linux/shader_checker.json b/layers/linux/shader_checker.json
index 4dc14d5a..58cd0345 100644
--- a/layers/linux/shader_checker.json
+++ b/layers/linux/shader_checker.json
@@ -1,11 +1,11 @@
{
- "file_format_version" : "0.9.0",
+ "file_format_version" : "1.0.0",
"layer" : {
"name": "ShaderChecker",
"type": "GLOBAL",
"library_path": "./libVKLayerShaderChecker.so",
- "abi_versions": "0.9.0",
- "implementation_version": "1.0.0",
+ "api_version": "0.210.0",
+ "implementation_version": "0",
"description": "LunarG Validation Layer"
}
}
diff --git a/layers/linux/swapchain.json b/layers/linux/swapchain.json
index 65a5a7f5..d333bf70 100644
--- a/layers/linux/swapchain.json
+++ b/layers/linux/swapchain.json
@@ -1,11 +1,11 @@
{
- "file_format_version" : "0.9.0",
+ "file_format_version" : "1.0.0",
"layer" : {
"name": "Swapchain",
"type": "GLOBAL",
"library_path": "./libVKLayerSwapchain.so",
- "abi_versions": "1.0.0",
- "implementation_version": "1.0.0",
+ "api_version": "0.210.0",
+ "implementation_version": "0",
"description": "LunarG Validation Layer"
}
}
diff --git a/layers/linux/threading.json b/layers/linux/threading.json
index d9f26121..cab7befe 100644
--- a/layers/linux/threading.json
+++ b/layers/linux/threading.json
@@ -1,11 +1,11 @@
{
- "file_format_version" : "0.9.0",
+ "file_format_version" : "1.0.0",
"layer" : {
"name": "Threading",
"type": "GLOBAL",
"library_path": "./libVKLayerThreading.so",
- "abi_versions": "0.9.0",
- "implementation_version": "1.0.0",
+ "api_version": "0.210.0",
+ "implementation_version": "0",
"description": "LunarG Validation Layer"
}
}
diff --git a/layers/windows/api_dump.json b/layers/windows/api_dump.json
index 0dcfcbdd..915d04ee 100644
--- a/layers/windows/api_dump.json
+++ b/layers/windows/api_dump.json
@@ -1,11 +1,11 @@
{
- "file_format_version" : "0.9.0",
+ "file_format_version" : "1.0.0",
"layer" : {
"name": "APIDump",
"type": "GLOBAL",
"library_path": ".\\VKLayerAPIDump.dll",
- "abi_versions": "0.9.0",
- "implementation_version": "1.0.0",
+ "api_version": "0.210.0",
+ "implementation_version": "0",
"description": "LunarG debug layer"
}
}
diff --git a/layers/windows/basic.json b/layers/windows/basic.json
index 30b3ebc5..deb928cb 100644
--- a/layers/windows/basic.json
+++ b/layers/windows/basic.json
@@ -1,16 +1,16 @@
{
- "file_format_version" : "0.9.0",
+ "file_format_version" : "1.0.0",
"layer" : {
"name": "Basic",
"type": "GLOBAL",
"library_path": ".\\VKLayerBasic.dll",
- "abi_versions": "0.9.0",
- "implementation_version": "1.0.0",
+ "api_version": "0.210.0",
+ "implementation_version": "0",
"description": "LunarG Sample Layer",
"device_extensions": [
{
"name": "vkLayerExtension1",
- "version": "1.0.0"
+ "spec_version": "0"
}
]
}
diff --git a/layers/windows/device_limits.json b/layers/windows/device_limits.json
index 505d05ea..2c7bfa88 100644
--- a/layers/windows/device_limits.json
+++ b/layers/windows/device_limits.json
@@ -1,16 +1,16 @@
{
- "file_format_version" : "0.9.0",
+ "file_format_version" : "1.0.0",
"layer" : {
"name": "DeviceLimits",
"type": "GLOBAL",
- "library_path": ".\\VKLayerDeviceLimits.dll",
- "abi_versions": "0.9.0",
- "implementation_version": "1.0.0",
+ "library_path": ".\\VKLayerDeviceLimits.",
+ "api_version": "0.210.0",
+ "implementation_version": "0",
"description": "LunarG Validation Layer",
"device_extensions": [
{
"name": "DEBUG_MARKER",
- "version": "1.0.0"
+ "spec_version": "0"
}
]
}
diff --git a/layers/windows/draw_state.json b/layers/windows/draw_state.json
index fcd1dcc3..0899f833 100644
--- a/layers/windows/draw_state.json
+++ b/layers/windows/draw_state.json
@@ -1,16 +1,16 @@
{
- "file_format_version" : "0.9.0",
+ "file_format_version" : "1.0.0",
"layer" : {
"name": "DrawState",
"type": "GLOBAL",
"library_path": ".\\VKLayerDrawState.dll",
- "abi_versions": "0.9.0",
- "implementation_version": "1.0.0",
+ "api_version": "0.210.0",
+ "implementation_version": "0",
"description": "LunarG Validation Layer",
"device_extensions": [
{
"name": "DEBUG_MARKER",
- "version": "1.0.0"
+ "spec_version": "0"
}
]
}
diff --git a/layers/windows/generic.json b/layers/windows/generic.json
index 0e450247..823780f4 100644
--- a/layers/windows/generic.json
+++ b/layers/windows/generic.json
@@ -1,11 +1,11 @@
{
- "file_format_version" : "0.9.0",
+ "file_format_version" : "1.0.0",
"layer" : {
"name": "Generic",
"type": "GLOBAL",
- "library_path": ".\\VKLayerGeneric.dll",
- "abi_versions": "0.9.0",
- "implementation_version": "1.0.0",
+ "library_path": "./libVKLayerGeneric.so",
+ "api_version": "0.210.0",
+ "implementation_version": "0",
"description": "LunarG Sample Layer"
}
}
diff --git a/layers/windows/image.json b/layers/windows/image.json
index 2315f569..f5c78b3b 100644
--- a/layers/windows/image.json
+++ b/layers/windows/image.json
@@ -1,11 +1,11 @@
{
- "file_format_version" : "0.9.0",
+ "file_format_version" : "1.0.0",
"layer" : {
"name": "Image",
"type": "GLOBAL",
"library_path": ".\\VKLayerImage.dll",
- "abi_versions": "0.9.0",
- "implementation_version": "1.0.0",
+ "api_version": "0.210.0",
+ "implementation_version": "0",
"description": "LunarG Validation Layer"
}
}
diff --git a/layers/windows/mem_tracker.json b/layers/windows/mem_tracker.json
index f53131e5..61875c22 100644
--- a/layers/windows/mem_tracker.json
+++ b/layers/windows/mem_tracker.json
@@ -1,11 +1,11 @@
{
- "file_format_version" : "0.9.0",
+ "file_format_version" : "1.0.0",
"layer" : {
"name": "MemTracker",
"type": "GLOBAL",
"library_path": ".\\VKLayerMemTracker.dll",
- "abi_versions": "0.9.0",
- "implementation_version": "1.0.0",
+ "api_version": "0.210.0",
+ "implementation_version": "0",
"description": "LunarG Validation Layer"
}
}
diff --git a/layers/windows/multi.json b/layers/windows/multi.json
index dc31ba41..83166109 100644
--- a/layers/windows/multi.json
+++ b/layers/windows/multi.json
@@ -1,11 +1,11 @@
{
- "file_format_version" : "0.9.0",
+ "file_format_version" : "1.0.0",
"layer" : {
"name": "multi1",
"type": "DEVICE",
"library_path": ".\\VKLayerMulti.dll",
- "abi_versions": "0.9.0",
- "implementation_version": "1.1.0",
+ "api_version": "0.210.0",
+ "implementation_version": "0",
"description": "LunarG Sample multiple layer per library",
"functions" : {
"vkGetDeviceProcAddr" : "multi1GetDeviceProcAddr"
@@ -15,8 +15,8 @@
"name": "multi2",
"type": "INSTANCE",
"library_path": ".\\VKLayerMulti.dll",
- "abi_versions": "0.9.0",
- "implementation_version": "1.1.0",
+ "api_version": "0.210.0",
+ "implementation_version": "0",
"description": "LunarG Sample multiple layer per library",
"functions" : {
"vkGetInstanceProcAddr" : "multi2GetInstanceProcAddr"
diff --git a/layers/windows/object_tracker.json b/layers/windows/object_tracker.json
index f60e1646..25c84aad 100644
--- a/layers/windows/object_tracker.json
+++ b/layers/windows/object_tracker.json
@@ -1,11 +1,11 @@
{
- "file_format_version" : "0.9.0",
+ "file_format_version" : "1.0.0",
"layer" : {
"name": "ObjectTracker",
"type": "GLOBAL",
"library_path": ".\\VKLayerObjectTracker.dll",
- "abi_versions": "0.9.0",
- "implementation_version": "1.0.0",
+ "api_version": "0.210.0",
+ "implementation_version": "0",
"description": "LunarG Validation Layer"
}
}
diff --git a/layers/windows/param_checker.json b/layers/windows/param_checker.json
index 15dc988e..6553f61f 100644
--- a/layers/windows/param_checker.json
+++ b/layers/windows/param_checker.json
@@ -1,11 +1,11 @@
{
- "file_format_version" : "0.9.0",
+ "file_format_version" : "1.0.0",
"layer" : {
"name": "ParamChecker",
"type": "GLOBAL",
"library_path": ".\\VKLayerParamChecker.dll",
- "abi_versions": "0.9.0",
- "implementation_version": "1.0.0",
+ "api_version": "0.210.0",
+ "implementation_version": "0",
"description": "LunarG Validation Layer"
}
}
diff --git a/layers/windows/screenshot.json b/layers/windows/screenshot.json
index a55ed769..2fa8c170 100644
--- a/layers/windows/screenshot.json
+++ b/layers/windows/screenshot.json
@@ -1,11 +1,11 @@
{
- "file_format_version" : "0.9.0",
+ "file_format_version" : "1.0.0",
"layer" : {
"name": "ScreenShot",
"type": "GLOBAL",
"library_path": ".\\VKLayerScreenShot.dll",
- "abi_versions": "0.9.0",
- "implementation_version": "1.0.0",
+ "api_version": "0.210.0",
+ "implementation_version": "0",
"description": "LunarG image capture layer"
}
}
diff --git a/layers/windows/shader_checker.json b/layers/windows/shader_checker.json
index d46a90b2..abefb069 100644
--- a/layers/windows/shader_checker.json
+++ b/layers/windows/shader_checker.json
@@ -1,11 +1,11 @@
{
- "file_format_version" : "0.9.0",
+ "file_format_version" : "1.0.0",
"layer" : {
"name": "ShaderChecker",
"type": "GLOBAL",
"library_path": ".\\VKLayerShaderChecker.dll",
- "abi_versions": "0.9.0",
- "implementation_version": "1.0.0",
+ "api_version": "0.210.0",
+ "implementation_version": "0",
"description": "LunarG Validation Layer"
}
}
diff --git a/layers/windows/swapchain.json b/layers/windows/swapchain.json
index 7ae89db5..dbba897b 100644
--- a/layers/windows/swapchain.json
+++ b/layers/windows/swapchain.json
@@ -1,11 +1,11 @@
{
- "file_format_version" : "0.9.0",
+ "file_format_version" : "1.0.0",
"layer" : {
"name": "Swapchain",
"type": "GLOBAL",
"library_path": ".\\VKLayerSwapchain.dll",
- "abi_versions": "1.0.0",
- "implementation_version": "1.0.0",
+ "api_version": "0.210.0",
+ "implementation_version": "0",
"description": "LunarG Validation Layer"
}
}
diff --git a/layers/windows/threading.json b/layers/windows/threading.json
index bf5b5795..2a7f7154 100644
--- a/layers/windows/threading.json
+++ b/layers/windows/threading.json
@@ -1,11 +1,11 @@
{
- "file_format_version" : "0.9.0",
+ "file_format_version" : "1.0.0",
"layer" : {
"name": "Threading",
"type": "GLOBAL",
"library_path": ".\\VKLayerThreading.dll",
- "abi_versions": "0.9.0",
- "implementation_version": "1.0.0",
+ "api_version": "0.210.0",
+ "implementation_version": "0",
"description": "LunarG Validation Layer"
}
}
diff --git a/loader/LinuxICDs.txt b/loader/LinuxICDs.txt
index 7c180603..5fe072e1 100644
--- a/loader/LinuxICDs.txt
+++ b/loader/LinuxICDs.txt
@@ -17,7 +17,7 @@ in the following Linux directories:
These directories will contain text information files (a.k.a. "manifest
files"), that use a JSON format (NOTE: The JSON in this version of the
-specification is for illustration purposes, and isn’t completely valid yet).
+specification is for illustration purposes, and isn't completely valid yet).
The Vulkan loader will open each info file to obtain the name or pathname of an
ICD shared library (".so") file. For example:
@@ -25,18 +25,21 @@ ICD shared library (".so") file. For example:
"file_format_version": "1.0.0",
"ICD": {
"library_path": "path to ICD library",
- "abi_versions": "1.0.0"
+ "api_version": "1.0.0"
}
}
-The "library_path" specifies either a filename, a relative pathname or a full
-pathname to an ICD shared library file, which the loader will attempt to load
-using dlopen(). If the layer is specified via a relative pathname, it is
-relative to the path of the info file. If the ICD is specified via a filename,
-the shared library lives in the system directory as defined by the Linux
-distribution, such that dlopen() will find the library. (e.g.
-"/usr/lib/x86_64-linux-gnu" on 64-bit Debian-based distributions, or
-"/usr/lib64" on 64-bit Red Hat-based systems).
+The "library_path" specifies either a filename, a relative pathname, or a full
+pathname to an ICD shared library file. If the ICD is specified via a
+filename, the loader will attempt to open that file as a shared object using
+dlopen(), and the file must be in a directory that dlopen is configured to look
+in (Note: various distributions are configured differently). A distribution is
+free to create Vulkan-specific system directories (e.g. ".../vulkan/icd"), but
+is not required to do so. If the ICD is specified via a relative pathname, it
+is relative to the path of the info file. Relative pathnames are those that do
+not start with, but do contain at least one directory separator (i.e. the '/'
+character). For example, "lib/vendora.so" and "./vendora.so" are examples of
+relative pathnames.
The "file_format_version" provides a major.minor.patch version number in case
the format of the text information file changes in the future. If the same ICD
@@ -44,9 +47,8 @@ shared library supports multiple, incompatible versions of text info file
format versions, it must have multiple text info files (all of which may point
to the same shared library).
-The "abi_versions" specifies a colon-separated list of major.minor.patch
-version numbers of the Vulkan ABI that the shared library (referenced by
-"library_path") support.
+The “api_version” specifies the major.minor.patch version number of the Vulkan
+API that the shared library (referenced by "library_path") was built with.
The "/usr/share/vulkan/icd.d" directory is for ICDs that are installed from
Linux-distribution-provided packages. The "/etc/vulkan/icd.d" directory is for
@@ -73,7 +75,7 @@ indicated by the ICD.library_path value.
IHV developers (and sometimes other developers) need to use special,
pre-production ICDs. In some cases, a pre-production ICD may be in an
installable package. In other cases, a pre-production ICD may simply be a
-shared library in the developer’s build tree. In this latter case, we want to
+shared library in the developer's build tree. In this latter case, we want to
allow developers to point to such an ICD without modifying the
properly-installed ICD(s) on their system.
@@ -156,12 +158,13 @@ information:
on both device and instance chains.
- (required) "library_path" - filename / full path / relative path to the text
file
-- (required) "abi_versions" – same as for ICDs.
-- (required) "implementation_version" – layer code version.
+- (required) "api_version" – same as for ICDs.
+- (required) "implementation_version" – layer version, a single number increasing with backward compatible changes.
- (required) "description" – informative decription of the layer.
-- (optional) extension and it's "name" - e.g."instance_extensions"{ DEBUG_REPORT }
-- (optional) extension "version" - extension version (formatted as
- major.minor.patch).
+- (optional) "device_extensions" or "instance_extensions" - array of extension information as follows
+- (optional) extension "name" - Vulkan registered name
+- (optional) extension "spec_version" - extension specification version, a single number, increasing with backward compatible changes.
+- (optional) extension "entrypoints" - array of device extension entrypoints; not used for instance extensions
- (sometimes required) "functions" - mapping list of function entry points. If
multiple layers exist within the same shared library (or if a layer is in the
same shared library as an ICD), this must be specified to allow each layer to
@@ -172,7 +175,7 @@ information:
- (optional for implicit layers) "enable_environment" requirement(s) -
environment variable and value required to enable an implicit layer. This
environment variable (which should vary with each "version" of the layer, as
- in "ENABLE_LAYER_FOO_1_0_0") must be set to the given value or else the
+ in "ENABLE_LAYER_FOO_1") must be set to the given value or else the
implicit layer is not loaded. This is for application environments
(e.g. Steam) which want to enable a layer(s) only for applications that they
launch, and allows for applications run outside of an application environment
@@ -183,7 +186,7 @@ information:
application can set this environment variable (before calling Vulkan
functions) in order to "blacklist" the layer. This environment variable
(which should vary with each "version" of the layer, as in
- "DISABLE_LAYER_FOO_1_0_0") must be set (not particularly to any value). If
+ "DISABLE_LAYER_FOO_1") must be set (not particularly to any value). If
both the "enable_environment" and "disable_environment" variables are set,
the implicit layer is disabled.
@@ -195,8 +198,8 @@ For example:
"name": "OverlayLayer",
"type": "DEVICE",
"library_path": "libvkOverlayLayer.so",
- "abi_versions" : "1.0.0:1.1.0",
- "implementation_version" : "0.9.3",
+ "api_version" : "1.0.0",
+ "implementation_version" : "2",
"description" : "LunarG HUD layer",
"functions": {
"vkGetInstanceProcAddr": "Overlaylayer_GetInstanceProcAddr",
@@ -205,35 +208,37 @@ For example:
"instance_extensions": [
{
"name": "DEBUG_REPORT",
- "version": "1.0.0"
+ "spec_version": "1"
},
{
"name": "DEBUG_X",
- "version": "1.0.0"
+ "spec_version": "3"
}
],
"device_extensions": [
{
"name": "DEBUG_MARKER",
- "version": "1.0.0"
+ "spec_version": "1",
+ "entrypoints": ["vkCmdDbgMarkerBegin", "vkCmdDbgMarkerEnd"]
}
],
"disable_environment": {
- "DISABLE_LAYER_OVERLAY_1_0_0": ""
+ "DISABLE_LAYER_OVERLAY_1": ""
}
}
}
The "library_path" specifies either a filename, a relative pathname, or a full
pathname to a layer shared library (".so") file, which the loader will attempt
-to load using dlopen(). If the layer is specified via a relative pathname, it
-is relative to the path of the info file (e.g. for cases when an application
+to load using dlopen(). If the layer is specified via a filename, the loader
+will attempt to open that file as a shared object using dlopen(), and the file
+must be in a directory that dlopen is configured to look in (Note: various
+distributions are configured differently). A distribution is free to create
+Vulkan-specific system directories (e.g. ".../vulkan/layers"), but is not
+required to do so. If the layer is specified via a relative pathname, it is
+relative to the path of the info file (e.g. for cases when an application
provides a layer that is in the same directory hierarchy as the rest of the
-application files). If the layer is specified via a filename, the shared
-library lives in the system directory as defined by the Linux distribution,
-such that dlopen() will find the library. (e.g.
-"/usr/lib/x86_64-linux-gnu" on 64-bit Debian-based distributions, or
-"/usr/lib64" on 64-bit Red Hat-based systems).
+application files).
There are no rules about the name of the text files (except the .json suffix).
There are no rules about the name of the layer shared library files.
diff --git a/loader/WindowsICDs.txt b/loader/WindowsICDs.txt
index 8da7a018..0eea1879 100644
--- a/loader/WindowsICDs.txt
+++ b/loader/WindowsICDs.txt
@@ -1,4 +1,4 @@
-This is a specification for how the Vulkan loader should identify Vulkan
+This is a specification for how the Vulkan loader should identify Vulkan
installable client drivers (ICDs) on MS Windows. This is designed for
production installation of Vulkan ICDs and layers. The design is shown first
for ICDs, and then the variation for layers will be discussed.
@@ -17,25 +17,28 @@ HKEY_LOCAL_MACHINE\SOFTWARE\Khronos\Vulkan\Drivers
For each value in this key which has DWORD data set to 0, the loader opens the
text information file (a.k.a. "manifest file"), that uses a JSON format (NOTE:
The JSON in this version of the specification is for illustration purposes, and
-isn’t completely valid yet), specified by the name of the value. Each name
+isn't completely valid yet), specified by the name of the value. Each name
must be a full pathname to the text info file. The Vulkan loader will open
each info file to obtain the name or pathname of an ICD shared library (".dll")
file. For example:
{
- "file_format_version" : "1.0.0",
+ "file_format_version": "1.0.0",
"ICD": {
"library_path": "path to ICD library",
- "abi_versions" : "1.0.0"
+ "api_version": "1.0.0"
}
}
The "library_path" specifies either a filename, a relative pathname, or a full
pathname to an ICD shared library file, which the loader will attempt to load
using LoadLibrary(). If the ICD is specified via a filename, the shared
-library lives in the system’s DLL search path (e.g. in the
+library lives in the system's DLL search path (e.g. in the
"C:\\Windows\\System32" folder). If the ICD is specified via a relative
-pathname, it is relative to the path of the info file.
+pathname, it is relative to the path of the info file. Relative pathnames are
+those that do not start with a drive specifier (e.g. "C:"), nor with a
+directory separator (i.e. the '\' character), but do contain at least one
+directory separator.
The "file_format_version" specifies a major.minor.patch version number in case
the format of the text information file changes in the future. If the same ICD
@@ -43,9 +46,8 @@ shared library supports multiple, incompatible versions of text info file
format versions, it must have multiple text info files (all of which may point
to the same shared library).
-The "abi_versions" specifies a colon-separated list of major.minor.patch
-version numbers of the Vulkan ABI that the shared library (referenced by
-"library_path") support.
+The “api_version” specifies the major.minor.patch version number of the Vulkan
+API that the shared library (referenced by "library_path") was built with.
There are no rules about the name of the text information files (except the
.json suffix). There are no rules about the name of the ICD shared library
@@ -75,7 +77,7 @@ indicated by the ICD.library_path value.
IHV developers (and sometimes other developers) need to use special,
pre-production ICDs. In some cases, a pre-production ICD may be in an
installable package. In other cases, a pre-production ICD may simply be a
-shared library in the developer’s build tree. In this latter case, we want to
+shared library in the developer's build tree. In this latter case, we want to
allow developers to point to such an ICD without modifying the
properly-installed ICD(s) on their system.
@@ -141,7 +143,7 @@ explicit is by which registry key its layer information file is referenced by.
The information file is in the JSON format and contains the following
information:
-- (required) "file_format_version" – same as for ICDs, except that the format
+- (required) "file_format_version" - same as for ICDs, except that the format
version can vary independently for ICDs and layers.
- (required) "name" - layer name
- (required) "type" - which layer chains should the layer be activated on.
@@ -149,12 +151,13 @@ information:
on both device and instance chains.
- (required) "library_path" - filename / full path / relative path to the text
file
-- (required) "abi_versions" – same as for ICDs.
-- (required) "implementation_version" – layer code version.
-- (required) "description" – informative decription of the layer.
-- (optional) extension and it's "name" - e.g."instance_extensions"{ DEBUG_REPORT}
-- (optional) extension and it's "version" - extension version (formatted as
- major.minor.patch).
+- (required) "api_version" - same as for ICDs.
+- (required) "implementation_version" - layer version, a single number increasing with backward compatible changes.
+- (required) "description" - informative decription of the layer.
+- (optional) "device_extensions" or "instance_extensions" - array of extension information as follows
+- (optional) extension "name" - Vulkan registered name
+- (optional) extension "spec_version" - extension specification version, a single number, increasing with backward compatible changes.
+- (optional) extension "entrypoints" - array of device extension entrypoints; not used for instance extensions
- (sometimes required) "functions" - mapping list of function entry points. If
multiple layers exist within the same shared library (or if a layer is in the
same shared library as an ICD), this must be specified to allow each layer to
@@ -165,7 +168,7 @@ information:
- (optional for implicit layers) "enable_environment" requirement(s) -
environment variable and value required to enable an implicit layer. This
environment variable (which should vary with each "version" of the layer, as
- in "ENABLE_LAYER_FOO_1_0_0") must be set to the given value or else the
+ in "ENABLE_LAYER_FOO_1") must be set to the given value or else the
implicit layer is not loaded. This is for application environments
(e.g. Steam) which want to enable a layer(s) only for applications that they
launch, and allows for applications run outside of an application environment
@@ -176,7 +179,7 @@ information:
application can set this environment variable (before calling Vulkan
functions) in order to "blacklist" the layer. This environment variable
(which should vary with each "version" of the layer, as in
- "DISABLE_LAYER_FOO_1_0_0") must be set (not particularly to any value). If
+ "DISABLE_LAYER_FOO_1") must be set (not particularly to any value). If
both the "enable_environment" and "disable_environment" variables are set,
the implicit layer is disabled.
@@ -188,8 +191,8 @@ For example:
"name": "OverlayLayer",
"type": "DEVICE",
"library_path": "vkOverlayLayer.dll",
- "abi_versions" : "1.0.0:1.1.0",
- "implementation_version" : "0.9.3",
+ "api_version" : "1.0.0",
+ "implementation_version" : "2",
"description" : "LunarG HUD layer",
"functions": {
"vkGetInstanceProcAddr": "OverlayLayer_GetInstanceProcAddr",
@@ -198,21 +201,22 @@ For example:
instance_extensions": [
{
"name": "DEBUG_REPORT",
- "version": "1.0.0"
+ "spec_version": "1"
},
{
"name": "DEBUG_X",
- "version": "1.0.0"
+ "spec_version": "3"
}
],
device_extensions": [
{
"name": "DEBUG_MARKER",
- "version": "1.0.0"
+ "spec_version": "1",
+ "entrypoints": ["vkCmdDbgMarkerBegin", "vkCmdDbgMarkerEnd"]
}
],
"disable_environment": {
- "DISABLE_LAYER_OVERLAY_1_0_0": ""
+ "DISABLE_LAYER_OVERLAY_1": ""
}
}
}
@@ -223,7 +227,7 @@ to load using LoadLibrary(). If the layer is specified via a relative
pathname, it is relative to the path of the info file (e.g. for cases when an
application provides a layer that is in the same folder hierarchy as the rest
of the application files). If the layer is specified via a filename, the
-shared library lives in the system’s DLL search path (e.g. in the
+shared library lives in the system's DLL search path (e.g. in the
"C:\\Windows\\System32" folder).
There are no rules about the name of the text files (except the .json suffix).
diff --git a/loader/loader.c b/loader/loader.c
index 7bbcf87a..6b991504 100644
--- a/loader/loader.c
+++ b/loader/loader.c
@@ -1467,7 +1467,7 @@ static void loader_add_layer_properties(const struct loader_instance *inst,
* (required) "name"
* (required) "type"
* (required) “library_path”
- * (required) “abi_versions”
+ * (required) “api_version”
* (required) “implementation_version”
* (required) “description”
* (required for implicit layers) “disable_environment”
@@ -1477,7 +1477,7 @@ static void loader_add_layer_properties(const struct loader_instance *inst,
cJSON *item, *layer_node, *ext_item;
char *temp;
- char *name, *type, *library_path, *abi_versions;
+ char *name, *type, *library_path, *api_version;
char *implementation_version, *description;
cJSON *disable_environment;
int i;
@@ -1489,8 +1489,8 @@ static void loader_add_layer_properties(const struct loader_instance *inst,
char *file_vers = cJSON_PrintUnformatted(item);
loader_log(VK_DBG_REPORT_INFO_BIT, 0, "Found manifest file %s, version %s",
filename, file_vers);
- if (strcmp(file_vers, "\"0.9.0\"") != 0)
- loader_log(VK_DBG_REPORT_WARN_BIT, 0, "Unexpected manifest file version (expected 0.9.0), may cause errors");
+ if (strcmp(file_vers, "\"1.0.0\"") != 0)
+ loader_log(VK_DBG_REPORT_WARN_BIT, 0, "Unexpected manifest file version (expected 1.0.0), may cause errors");
loader_tls_heap_free(file_vers);
layer_node = cJSON_GetObjectItem(json, "layer");
@@ -1523,7 +1523,7 @@ static void loader_add_layer_properties(const struct loader_instance *inst,
GET_JSON_ITEM(layer_node, name)
GET_JSON_ITEM(layer_node, type)
GET_JSON_ITEM(layer_node, library_path)
- GET_JSON_ITEM(layer_node, abi_versions)
+ GET_JSON_ITEM(layer_node, api_version)
GET_JSON_ITEM(layer_node, implementation_version)
GET_JSON_ITEM(layer_node, description)
if (is_implicit) {
@@ -1582,8 +1582,8 @@ static void loader_add_layer_properties(const struct loader_instance *inst,
// a filename which is assumed in a system directory
loader_get_fullpath(library_path, DEFAULT_VK_LAYERS_PATH, MAX_STRING_SIZE, fullpath);
}
- props->info.specVersion = loader_make_version(abi_versions);
- props->info.implementationVersion = loader_make_version(implementation_version);
+ props->info.specVersion = loader_make_version(api_version);
+ props->info.implementationVersion = atoi(implementation_version);
strncpy((char *) props->info.description, description, sizeof (props->info.description));
props->info.description[sizeof (props->info.description) - 1] = '\0';
if (is_implicit) {
@@ -1615,7 +1615,7 @@ static void loader_add_layer_properties(const struct loader_instance *inst,
}
cJSON *instance_extensions, *device_extensions, *functions, *enable_environment;
- char *vkGetInstanceProcAddr = NULL, *vkGetDeviceProcAddr = NULL, *version=NULL;
+ char *vkGetInstanceProcAddr = NULL, *vkGetDeviceProcAddr = NULL, *spec_version=NULL;
GET_JSON_OBJECT(layer_node, functions)
if (functions != NULL) {
GET_JSON_ITEM(functions, vkGetInstanceProcAddr)
@@ -1633,10 +1633,10 @@ static void loader_add_layer_properties(const struct loader_instance *inst,
for (i = 0; i < count; i++) {
ext_item = cJSON_GetArrayItem(instance_extensions, i);
GET_JSON_ITEM(ext_item, name)
- GET_JSON_ITEM(ext_item, version)
+ GET_JSON_ITEM(ext_item, spec_version)
strncpy(ext_prop.extensionName, name, sizeof (ext_prop.extensionName));
ext_prop.extensionName[sizeof (ext_prop.extensionName) - 1] = '\0';
- ext_prop.specVersion = loader_make_version(version);
+ ext_prop.specVersion = atoi(spec_version);
loader_add_to_ext_list(inst, &props->instance_extension_list, 1, &ext_prop);
}
}
@@ -1646,10 +1646,10 @@ static void loader_add_layer_properties(const struct loader_instance *inst,
for (i = 0; i < count; i++) {
ext_item = cJSON_GetArrayItem(device_extensions, i);
GET_JSON_ITEM(ext_item, name);
- GET_JSON_ITEM(ext_item, version);
+ GET_JSON_ITEM(ext_item, spec_version);
strncpy(ext_prop.extensionName, name, sizeof (ext_prop.extensionName));
ext_prop.extensionName[sizeof (ext_prop.extensionName) - 1] = '\0';
- ext_prop.specVersion = loader_make_version(version);
+ ext_prop.specVersion = atoi(spec_version);
loader_add_to_ext_list(inst, &props->device_extension_list, 1, &ext_prop);
}
}