summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJon Leech <oddhack@sonic.net>2017-10-20 17:18:37 -0700
committerJon Leech <oddhack@sonic.net>2017-10-20 17:18:37 -0700
commit5436521608c40f324b397693f5bb758d666e3f55 (patch)
tree189eab3cd6f885fb9501d79a9724640fbd63cc27
parent190c7c3d3860996ba4d1da790588a11ed0c927c1 (diff)
downloadvulkan-spec-5436521608c40f324b397693f5bb758d666e3f55.zip
vulkan-spec-5436521608c40f324b397693f5bb758d666e3f55.tar.xz
Change log for October 20, 2017 Vulkan 1.0.64 spec update:
* Bump API patch number and header version number to 64 for this update. Github Issues: * Add chapter name to the PDF page footer (public pull request 458). * Fix several mistaken references to the nonexistent etext:VK_DEVICE_LOST status to etext:VK_ERROR_DEVICE_LOST (public pull request 502). * Fix description of the tlink:PFN_vkDebugReportCallbackEXT debug report callback function pointer to match the validation layer behavior (public issue 534). * Document experimental KHX extensions and alternate vendor author IDs also ending in X in more detail in the <<extensions, Layers & Extensions>> appendix, the extensions section of the style guide, and the registry schema description document (public issues 536, 580). * Fix references to ptext:pDepthStencil to properly refer to pname:pDepthStencilState or pname:pRasterizationState as appropriate in the slink:VkGraphicsPipelineCreateInfo description (public issue 542). * Fix wrong parameter name in slink:VkPipelineMultisampleStateCreateInfo valid usage (public pull request 571). Internal Issues: * Update the style guide to describe how to write LaTeX math expressions in table cells (internal issue 908). * Define how framebuffer-local dependencies work between subpasses with the same or different numbers of samples, in the slink:VkSubpassDescription and <<synchronization-framebuffer-regions, Framebuffer Region Dependencies>> sections. This clarifies which samples in an input attachment you are allowed to access after a framebuffer-local dependency (internal issue 915). * Specify which storage classes can have an initializer in the <<spirvenv-module-validation, Validation Rules within a Module>> section (internal issue 1023). * Use "LOD" consistently for "level-of-detail", to eliminate spelling inconsistencies. The term is already standardized in the Glossary (internal issue 1027). Other Issues: * Fix false positives in Makefile dependencies when rules fail, by deleting partially-made targets. New Extensions: * `VK_AMD_shader_info`
-rw-r--r--doc/specs/vulkan/Makefile7
-rw-r--r--doc/specs/vulkan/README.adoc3
-rw-r--r--doc/specs/vulkan/appendices/VK_AMD_draw_indirect_count.txt3
-rw-r--r--doc/specs/vulkan/appendices/VK_AMD_gpu_shader_int16.txt3
-rw-r--r--doc/specs/vulkan/appendices/VK_AMD_mixed_attachment_samples.txt3
-rwxr-xr-xdoc/specs/vulkan/appendices/VK_AMD_negative_viewport_height.txt3
-rw-r--r--doc/specs/vulkan/appendices/VK_AMD_rasterization_order.txt3
-rw-r--r--doc/specs/vulkan/appendices/VK_AMD_shader_ballot.txt3
-rw-r--r--doc/specs/vulkan/appendices/VK_AMD_shader_explicit_vertex_parameter.txt3
-rw-r--r--doc/specs/vulkan/appendices/VK_AMD_shader_info.txt108
-rw-r--r--doc/specs/vulkan/appendices/VK_AMD_shader_trinary_minmax.txt3
-rw-r--r--doc/specs/vulkan/appendices/VK_AMD_texture_gather_bias_lod.txt3
-rw-r--r--doc/specs/vulkan/appendices/VK_EXT_sample_locations.txt3
-rw-r--r--doc/specs/vulkan/appendices/VK_KHR_swapchain.txt6
-rw-r--r--doc/specs/vulkan/appendices/credits.txt9
-rw-r--r--doc/specs/vulkan/appendices/extensions.txt10
-rw-r--r--doc/specs/vulkan/appendices/spirvenv.txt7
-rw-r--r--doc/specs/vulkan/chapters/VK_AMD_shader_info.txt120
-rw-r--r--doc/specs/vulkan/chapters/VK_EXT_debug_marker.txt2
-rw-r--r--doc/specs/vulkan/chapters/VK_EXT_debug_report.txt17
-rw-r--r--doc/specs/vulkan/chapters/cmdbuffers.txt2
-rw-r--r--doc/specs/vulkan/chapters/devsandqueues.txt2
-rw-r--r--doc/specs/vulkan/chapters/features.txt6
-rw-r--r--doc/specs/vulkan/chapters/introduction.txt21
-rw-r--r--doc/specs/vulkan/chapters/memory.txt3
-rw-r--r--doc/specs/vulkan/chapters/pipelines.txt12
-rw-r--r--doc/specs/vulkan/chapters/primsrast.txt4
-rw-r--r--doc/specs/vulkan/chapters/renderpass.txt7
-rw-r--r--doc/specs/vulkan/chapters/samplers.txt12
-rw-r--r--doc/specs/vulkan/chapters/shaders.txt8
-rw-r--r--doc/specs/vulkan/chapters/sparsemem.txt6
-rw-r--r--doc/specs/vulkan/chapters/synchronization.txt43
-rw-r--r--doc/specs/vulkan/chapters/textures.txt44
-rw-r--r--doc/specs/vulkan/chapters/vertexpostproc.txt2
-rw-r--r--doc/specs/vulkan/images/Makefile5
-rw-r--r--doc/specs/vulkan/reflib.py2
-rwxr-xr-xdoc/specs/vulkan/reflow.py2
-rw-r--r--doc/specs/vulkan/registry.txt5
-rw-r--r--doc/specs/vulkan/style/extensions.txt13
-rw-r--r--doc/specs/vulkan/style/writing.txt29
-rw-r--r--doc/specs/vulkan/styleguide.txt4
-rw-r--r--src/ext_loader/vulkan_ext.c27
-rw-r--r--src/spec/Makefile5
-rw-r--r--src/spec/vk.xml159
-rw-r--r--src/vulkan/vulkan.h50
45 files changed, 641 insertions, 151 deletions
diff --git a/doc/specs/vulkan/Makefile b/doc/specs/vulkan/Makefile
index 7129e00..06946f2 100644
--- a/doc/specs/vulkan/Makefile
+++ b/doc/specs/vulkan/Makefile
@@ -22,6 +22,11 @@
# asciidoc and generator script arguments $(EXTATTRIBS) and
# $(EXTOPTIONS).
+# If a recipe fails, delete its target file. Without this cleanup, the leftover
+# file from the failed recipe can falsely satisfy dependencies on subsequent
+# runs of `make`.
+.DELETE_ON_ERROR:
+
EXTS := $(sort VK_KHR_sampler_mirror_clamp_to_edge $(EXTENSIONS) $(DIFFEXTENSIONS))
EXTATTRIBS := $(foreach ext,$(EXTS),-a $(ext))
EXTOPTIONS := $(foreach ext,$(EXTS),-extension $(ext))
@@ -87,7 +92,7 @@ VERBOSE =
# $(EXTENSIONS))
# ADOCOPTS options for asciidoc->HTML5 output
NOTEOPTS = -a editing-notes -a implementation-guide
-SPECREVISION = 1.0.63
+SPECREVISION = 1.0.64
# Spell out RFC2822 format as not all date commands support -R
SPECDATE = $(shell echo `date -u "+%a, %d %b %Y %T %z"`)
diff --git a/doc/specs/vulkan/README.adoc b/doc/specs/vulkan/README.adoc
index 68731d9..6f7a444 100644
--- a/doc/specs/vulkan/README.adoc
+++ b/doc/specs/vulkan/README.adoc
@@ -538,8 +538,7 @@ echo 'eval "$(rbenv init -)"' >> .bashrc
# Install `ruby_build` plugin from https://github.com/rbenv/ruby-build
-git clone https://github.com/rbenv/ruby-build.git
-~/.rbenv/plugins/ruby-build
+git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build
# Install Ruby 2.3.3
# This takes in excess of 20 min. to build!
diff --git a/doc/specs/vulkan/appendices/VK_AMD_draw_indirect_count.txt b/doc/specs/vulkan/appendices/VK_AMD_draw_indirect_count.txt
index e256c97..7831771 100644
--- a/doc/specs/vulkan/appendices/VK_AMD_draw_indirect_count.txt
+++ b/doc/specs/vulkan/appendices/VK_AMD_draw_indirect_count.txt
@@ -5,8 +5,7 @@ include::meta/VK_AMD_draw_indirect_count.txt[]
*IP Status*::
No known IP claims.
*Contributors*::
- - Matthaeus G.
- Chajdas, AMD
+ - Matthaeus G. Chajdas, AMD
- Derrick Owens, AMD
- Graham Sellers, AMD
- Daniel Rakos, AMD
diff --git a/doc/specs/vulkan/appendices/VK_AMD_gpu_shader_int16.txt b/doc/specs/vulkan/appendices/VK_AMD_gpu_shader_int16.txt
index 8da7050..c78d237 100644
--- a/doc/specs/vulkan/appendices/VK_AMD_gpu_shader_int16.txt
+++ b/doc/specs/vulkan/appendices/VK_AMD_gpu_shader_int16.txt
@@ -11,8 +11,7 @@ include::meta/VK_AMD_gpu_shader_int16.txt[]
*Contributors*::
- Daniel Rakos, AMD
- Dominik Witczak, AMD
- - Matthaeus G.
- Chajdas, AMD
+ - Matthaeus G. Chajdas, AMD
- Rex Xu, AMD
- Timothy Lottes, AMD
- Zhi Cai, AMD
diff --git a/doc/specs/vulkan/appendices/VK_AMD_mixed_attachment_samples.txt b/doc/specs/vulkan/appendices/VK_AMD_mixed_attachment_samples.txt
index 23ad384..5a1213c 100644
--- a/doc/specs/vulkan/appendices/VK_AMD_mixed_attachment_samples.txt
+++ b/doc/specs/vulkan/appendices/VK_AMD_mixed_attachment_samples.txt
@@ -4,8 +4,7 @@ include::meta/VK_AMD_mixed_attachment_samples.txt[]
2017-07-24
*Contributors*::
- Mais Alnasser, AMD
- - Matthaeus G.
- Chajdas, AMD
+ - Matthaeus G. Chajdas, AMD
- Maciej Jesionowski, AMD
- Daniel Rakos, AMD
diff --git a/doc/specs/vulkan/appendices/VK_AMD_negative_viewport_height.txt b/doc/specs/vulkan/appendices/VK_AMD_negative_viewport_height.txt
index 4dcf770..b4b8c4a 100755
--- a/doc/specs/vulkan/appendices/VK_AMD_negative_viewport_height.txt
+++ b/doc/specs/vulkan/appendices/VK_AMD_negative_viewport_height.txt
@@ -5,8 +5,7 @@ include::meta/VK_AMD_negative_viewport_height.txt[]
*IP Status*::
No known IP claims.
*Contributors*::
- - Matthaeus G.
- Chajdas, AMD
+ - Matthaeus G. Chajdas, AMD
- Graham Sellers, AMD
- Baldur Karlsson
diff --git a/doc/specs/vulkan/appendices/VK_AMD_rasterization_order.txt b/doc/specs/vulkan/appendices/VK_AMD_rasterization_order.txt
index ef3ef6a..2078156 100644
--- a/doc/specs/vulkan/appendices/VK_AMD_rasterization_order.txt
+++ b/doc/specs/vulkan/appendices/VK_AMD_rasterization_order.txt
@@ -5,8 +5,7 @@ include::meta/VK_AMD_rasterization_order.txt[]
*IP Status*::
No known IP claims.
*Contributors*::
- - Matthaeus G.
- Chajdas, AMD
+ - Matthaeus G. Chajdas, AMD
- Jaakko Konttinen, AMD
- Daniel Rakos, AMD
- Graham Sellers, AMD
diff --git a/doc/specs/vulkan/appendices/VK_AMD_shader_ballot.txt b/doc/specs/vulkan/appendices/VK_AMD_shader_ballot.txt
index 20e9e5b..e901700 100644
--- a/doc/specs/vulkan/appendices/VK_AMD_shader_ballot.txt
+++ b/doc/specs/vulkan/appendices/VK_AMD_shader_ballot.txt
@@ -10,8 +10,7 @@ include::meta/VK_AMD_shader_ballot.txt[]
- Daniel Rakos, AMD
- Rex Xu, AMD
- Dominik Witczak, AMD
- - Matthäus G.
- Chajdas, AMD
+ - Matthäus G. Chajdas, AMD
This extension adds support for the following SPIR-V extension in Vulkan:
diff --git a/doc/specs/vulkan/appendices/VK_AMD_shader_explicit_vertex_parameter.txt b/doc/specs/vulkan/appendices/VK_AMD_shader_explicit_vertex_parameter.txt
index 65e2679..5cc331f 100644
--- a/doc/specs/vulkan/appendices/VK_AMD_shader_explicit_vertex_parameter.txt
+++ b/doc/specs/vulkan/appendices/VK_AMD_shader_explicit_vertex_parameter.txt
@@ -5,8 +5,7 @@ include::meta/VK_AMD_shader_explicit_vertex_parameter.txt[]
*IP Status*::
No known IP claims.
*Contributors*::
- - Matthaeus G.
- Chajdas, AMD
+ - Matthaeus G. Chajdas, AMD
- Qun Lin, AMD
- Daniel Rakos, AMD
- Graham Sellers, AMD
diff --git a/doc/specs/vulkan/appendices/VK_AMD_shader_info.txt b/doc/specs/vulkan/appendices/VK_AMD_shader_info.txt
new file mode 100644
index 0000000..efca3e4
--- /dev/null
+++ b/doc/specs/vulkan/appendices/VK_AMD_shader_info.txt
@@ -0,0 +1,108 @@
+include::meta/VK_AMD_shader_info.txt[]
+
+*Last Modified Date*::
+ 2017-10-09
+*IP Status*::
+ No known IP claims.
+*Contributors*::
+ - Jaakko Konttinen, AMD
+
+This extension adds a way to query certain information about a compiled
+shader which is part of a pipeline.
+This information may include shader disassembly, shader binary and various
+statistics about a shader's resource usage.
+
+While this extension provides a mechanism for extracting this information,
+the details regarding the contents or format of this information are not
+specified by this extension and may be provided by the vendor externally.
+
+Furthermore, all information types are optionally supported, and users
+should not assume every implementation supports querying every type of
+information.
+
+=== New Object Types
+
+None.
+
+=== New Enum Constants
+
+None.
+
+=== New Enums
+
+ * elink:VkShaderInfoTypeAMD
+
+=== New Structures
+
+ * slink:VkShaderStatisticsInfoAMD
+
+=== New Functions
+
+ * flink:vkGetShaderInfoAMD
+
+=== Examples
+
+This example extracts the register usage of a fragment shader within a
+particular graphics pipeline:
+
+[source,c++]
+----------------------------------------
+extern VkDevice device;
+extern VkPipeline gfxPipeline;
+
+PFN_vkGetShaderInfoAMD pfnGetShaderInfoAMD = (PFN_vkGetShaderInfoAMD)vkGetDeviceProcAddr(
+ device, "vkGetShaderInfoAMD");
+
+VkShaderStatisticsInfoAMD statistics = {};
+
+size_t dataSize = sizeof(statistics);
+
+if (pfnGetShaderInfoAMD(device,
+ gfxPipeline,
+ VK_SHADER_STAGE_FRAGMENT_BIT,
+ VK_SHADER_INFO_TYPE_STATISTICS_AMD,
+ &dataSize,
+ &statistics) == VK_SUCCESS)
+{
+ printf("VGPR usage: %d\n", statistics.resourceUsage.numUsedVgprs);
+ printf("SGPR usage: %d\n", statistics.resourceUsage.numUsedSgprs);
+}
+----------------------------------------
+
+The following example continues the previous example by subsequently
+attempting to query and print shader disassembly about the fragment shader:
+
+[source,c++]
+----------------------------------------
+// Query disassembly size (if available)
+if (pfnGetShaderInfoAMD(device,
+ gfxPipeline,
+ VK_SHADER_STAGE_FRAGMENT_BIT,
+ VK_SHADER_INFO_TYPE_DISASSEMBLY_AMD,
+ &dataSize,
+ nullptr) == VK_SUCCESS)
+{
+ printf("Fragment shader disassembly:\n");
+
+ void* disassembly = malloc(dataSize);
+
+ // Query disassembly and print
+ if (pfnGetShaderInfoAMD(device,
+ gfxPipeline,
+ VK_SHADER_STAGE_FRAGMENT_BIT,
+ VK_SHADER_INFO_TYPE_DISASSEMBLY_AMD,
+ &dataSize,
+ disassembly) == VK_SUCCESS)
+ {
+ printf((char*)disassembly);
+ }
+
+ free(disassembly);
+}
+----------------------------------------
+
+
+=== Version History
+
+ * Revision 1, 2017-10-09 (Jaakko Konttinen)
+ - Initial revision
diff --git a/doc/specs/vulkan/appendices/VK_AMD_shader_trinary_minmax.txt b/doc/specs/vulkan/appendices/VK_AMD_shader_trinary_minmax.txt
index c6acd16..47300d9 100644
--- a/doc/specs/vulkan/appendices/VK_AMD_shader_trinary_minmax.txt
+++ b/doc/specs/vulkan/appendices/VK_AMD_shader_trinary_minmax.txt
@@ -5,8 +5,7 @@ include::meta/VK_AMD_shader_trinary_minmax.txt[]
*IP Status*::
No known IP claims.
*Contributors*::
- - Matthaeus G.
- Chajdas, AMD
+ - Matthaeus G. Chajdas, AMD
- Qun Lin, AMD
- Daniel Rakos, AMD
- Graham Sellers, AMD
diff --git a/doc/specs/vulkan/appendices/VK_AMD_texture_gather_bias_lod.txt b/doc/specs/vulkan/appendices/VK_AMD_texture_gather_bias_lod.txt
index f5f4581..f2d9fb6 100644
--- a/doc/specs/vulkan/appendices/VK_AMD_texture_gather_bias_lod.txt
+++ b/doc/specs/vulkan/appendices/VK_AMD_texture_gather_bias_lod.txt
@@ -12,8 +12,7 @@ include::meta/VK_AMD_texture_gather_bias_lod.txt[]
- Dominik Witczak, AMD
- Daniel Rakos, AMD
- Graham Sellers, AMD
- - Matthaeus G.
- Chajdas, AMD
+ - Matthaeus G. Chajdas, AMD
- Qun Lin, AMD
- Rex Xu, AMD
- Timothy Lottes, AMD
diff --git a/doc/specs/vulkan/appendices/VK_EXT_sample_locations.txt b/doc/specs/vulkan/appendices/VK_EXT_sample_locations.txt
index 4b7b272..812a5e0 100644
--- a/doc/specs/vulkan/appendices/VK_EXT_sample_locations.txt
+++ b/doc/specs/vulkan/appendices/VK_EXT_sample_locations.txt
@@ -4,8 +4,7 @@ include::meta/VK_EXT_sample_locations.txt[]
2017-08-02
*Contributors*::
- Mais Alnasser, AMD
- - Matthaeus G.
- Chajdas, AMD
+ - Matthaeus G. Chajdas, AMD
- Maciej Jesionowski, AMD
- Daniel Rakos, AMD
- Slawomir Grajewski, Intel
diff --git a/doc/specs/vulkan/appendices/VK_KHR_swapchain.txt b/doc/specs/vulkan/appendices/VK_KHR_swapchain.txt
index d96edbf..88670ea 100644
--- a/doc/specs/vulkan/appendices/VK_KHR_swapchain.txt
+++ b/doc/specs/vulkan/appendices/VK_KHR_swapchain.txt
@@ -22,8 +22,7 @@ include::meta/VK_KHR_swapchain.txt[]
- Jeff Vigil, Qualcomm
- Chia-I Wu, LunarG
- Jason Ekstrand, Intel
- - Matthaeus G.
- Chajdas, AMD
+ - Matthaeus G. Chajdas, AMD
- Ray Smith, ARM
The +VK_KHR_swapchain+ extension is the device-level companion to the
@@ -708,8 +707,7 @@ https://github.com/KhronosGroup/Vulkan-LoaderAndValidationLayers/blob/master/dem
* Revision 51, 2015-09-01 (James Jones)
- Fix example code compilation errors.
- * Revision 52, 2015-09-08 (Matthaeus G.
- Chajdas)
+ * Revision 52, 2015-09-08 (Matthaeus G. Chajdas)
- Corrected a typo.
* Revision 53, 2015-09-10 (Alon Or-bach)
diff --git a/doc/specs/vulkan/appendices/credits.txt b/doc/specs/vulkan/appendices/credits.txt
index 3cb92ca..596548c 100644
--- a/doc/specs/vulkan/appendices/credits.txt
+++ b/doc/specs/vulkan/appendices/credits.txt
@@ -34,8 +34,7 @@ their name.
* Benj Lipchak
* Bill Hollings, The Brenwill Workshop
* Bill Licea-Kane, Qualcomm Technologies, Inc.
- * Brent E.
- Insko, Intel
+ * Brent E. Insko, Intel
* Brian Ellis, Qualcomm Technologies, Inc.
* Cass Everitt, Oculus VR
* Cemil Azizoglu, Canonical
@@ -121,16 +120,14 @@ their name.
* Patrick Doane, Blizzard Entertainment
* Peter Lohrmann, Valve
* Pierre Boudier, NVIDIA
- * Pierre-Loup A.
- Griffais, Valve
+ * Pierre-Loup A. Griffais, Valve
* Piers Daniell, NVIDIA (dynamic state, copy commands, memory types)
* Piotr Bialecki, Intel
* Prabindh Sundareson, Samsung Electronics
* Pyry Haulos, Google (Vulkan conformance test subcommittee chair)
* Ray Smith, ARM
* Rob Stepinski, Transgaming
- * Robert J.
- Simpson, Qualcomm Technologies, Inc.
+ * Robert J. Simpson, Qualcomm Technologies, Inc.
* Rolando Caloca Olivares, Epic Games
* Roy Ju, Mediatek
* Rufus Hamede, Imagination Technologies
diff --git a/doc/specs/vulkan/appendices/extensions.txt b/doc/specs/vulkan/appendices/extensions.txt
index 59549bf..b2560a2 100644
--- a/doc/specs/vulkan/appendices/extensions.txt
+++ b/doc/specs/vulkan/appendices/extensions.txt
@@ -54,6 +54,12 @@ result of feedback, and may: be withdrawn or replaced with stable `KHR` or
core functionality at any time.
Implementations of these extensions receive limited or no testing when
submitted to the Khronos conformance process.
+
+Some vendors may use an alternate author ID ending in `X` for some of their
+extensions.
+The exact meaning of such an author ID is defined by each vendor, and may
+not be equivalent to `KHX`, but it is likely to indicate a lesser degree of
+interface stability than a non-`X` extension from the same vendor.
====
// Extension appendix sections are included here, grouped by the author ID
@@ -383,6 +389,10 @@ ifdef::VK_AMD_shader_image_load_store_lod[]
include::VK_AMD_shader_image_load_store_lod.txt[]
endif::VK_AMD_shader_image_load_store_lod[]
+ifdef::VK_AMD_shader_info[]
+include::VK_AMD_shader_info.txt[]
+endif::VK_AMD_shader_info[]
+
ifdef::VK_AMD_shader_trinary_minmax[]
include::VK_AMD_shader_trinary_minmax.txt[]
endif::VK_AMD_shader_trinary_minmax[]
diff --git a/doc/specs/vulkan/appendices/spirvenv.txt b/doc/specs/vulkan/appendices/spirvenv.txt
index c96d57e..418991e 100644
--- a/doc/specs/vulkan/appendices/spirvenv.txt
+++ b/doc/specs/vulkan/appendices/spirvenv.txt
@@ -296,8 +296,11 @@ following rules:
ifdef::VK_KHR_storage_buffer_storage_class[]
** *StorageBuffer*
endif::VK_KHR_storage_buffer_storage_class[]
- * Variables declared in the *UniformConstant* storage class must: not have
- initializers.
+ * Any code:OpVariable with an code:Initializer operand must: have one of
+ the following as its code:Storage code:Class operand:
+ ** *Output*
+ ** *Private*
+ ** *Function*
* The code:OriginLowerLeft execution mode must: not be used; fragment
entry points must: declare code:OriginUpperLeft.
* The code:PixelCenterInteger execution mode must: not be used.
diff --git a/doc/specs/vulkan/chapters/VK_AMD_shader_info.txt b/doc/specs/vulkan/chapters/VK_AMD_shader_info.txt
new file mode 100644
index 0000000..ec1ccc9
--- /dev/null
+++ b/doc/specs/vulkan/chapters/VK_AMD_shader_info.txt
@@ -0,0 +1,120 @@
+// This section is included inside the Pipelines chapter (pipelines.txt)
+
+[[pipelines-shader-information]]
+== Pipeline Shader Information
+
+[open,refpage='vkGetShaderInfoAMD',desc='Get information about a shader in a pipeline',type='protos']
+--
+
+Information about a particular shader that has been compiled as part of a
+pipeline object can be extracted by calling:
+
+include::../api/protos/vkGetShaderInfoAMD.txt[]
+
+ * pname:device is the device that created pname:pipeline.
+ * pname:pipeline is the target of the query.
+ * pname:shaderStage identifies the particular shader within the pipeline
+ about which information is being queried.
+ * pname:infoType describes what kind of information is being queried.
+ * pname:pInfoSize is a pointer to a value related to the amount of data
+ the query returns, as described below.
+ * pname:pInfo is either NULL or a pointer to a buffer.
+
+If pname:pInfo is `NULL`, then the maximum size of the information that can:
+be retrieved about the shader, in bytes, is returned in pname:pInfoSize.
+Otherwise, pname:pInfoSize must: point to a variable set by the user to the
+size of the buffer, in bytes, pointed to by pname:pInfo, and on return the
+variable is overwritten with the amount of data actually written to
+pname:pInfo.
+
+If pname:pInfoSize is less than the maximum size that can: be retrieved by
+the pipeline cache, then at most pname:pInfoSize bytes will be written to
+pname:pInfo, and fname:vkGetShaderInfoAMD will return ename:VK_INCOMPLETE.
+
+Not all information is available for every shader and implementations may
+not support all kinds of information for any shader.
+When a certain type of information is unavailable, the function returns
+ename:VK_ERROR_FEATURE_NOT_PRESENT.
+
+If information is successfully and fully queried, the function will return
+ename:VK_SUCCESS.
+
+For ename:VK_SHADER_INFO_TYPE_STATISTICS_AMD, an instance of
+sname:VkShaderStatisticsInfoAMD will be written to the buffer pointed to by
+pname:pInfo.
+This structure will be populated with statistics regarding the physical
+device resources used by that shader along with other miscellaneous
+information and is described in further detail below.
+
+For ename:VK_SHADER_INFO_TYPE_DISASSEMBLY_AMD, pname:pInfo points to a UTF-8
+null-terminated string containing human-readable disassembly.
+The exact formatting and contents of the disassembly string are
+vendor-specific.
+
+The formatting and contents of all other types of information, including
+ename:VK_SHADER_INFO_TYPE_BINARY_AMD, are left to the vendor and are not
+further specified by this extension.
+
+include::../validity/protos/vkGetShaderInfoAMD.txt[]
+--
+
+[open,refpage='VkShaderStatisticsInfoAMD',desc='Statistical information about a particular shader within a pipeline',type='structs']
+--
+
+The sname:VkShaderStatisticsInfoAMD structure is defined as:
+
+include::../api/structs/VkShaderStatisticsInfoAMD.txt[]
+
+ * pname:shaderStageMask are the combination of logical shader stages
+ contained within this shader.
+ * pname:resourceUsage is an instance of slink:VkShaderResourceUsageAMD
+ describing internal physical device resources used by this shader.
+ * pname:numPhysicalVgprs is the maximum number of vector instruction
+ general-purpose registers (VGPRs) available to the physical device.
+ * pname:numPhysicalSgprs is the maximum number of scalar instruction
+ general-purpose registers (SGPRs) available to the physical device.
+ * pname:numAvailableVgprs is the maximum limit of VGPRs made available to
+ the shader compiler.
+ * pname:numAvailableSgprs is the maximum limit of SGPRs made available to
+ the shader compiler.
+ * pname:computeWorkGroupSize is the local workgroup size of this shader in
+ { X, Y, Z } dimensions.
+
+Some implementations may merge multiple logical shader stages together in a
+single shader.
+In such cases, pname:shaderStageMask will contain a bitmask of all of the
+stages that are active within that shader.
+Consequently, if specifying those stages as input to
+flink:vkGetShaderInfoAMD, the same output information may: be returned for
+all such shader stage queries.
+
+The number of available VGPRs and SGPRs (pname:numAvailableVgprs and
+pname:numAvailableSgprs respectively) are the shader-addressable subset of
+physical registers that is given as a limit to the compiler for register
+assignment.
+These values may: further be limited by implementations due to performance
+optimizations where register pressure is a bottleneck.
+
+include::../validity/structs/VkShaderStatisticsInfoAMD.txt[]
+--
+
+[open,refpage='VkShaderResourceUsageAMD',desc='Resource usage information about a particular shader within a pipeline',type='structs']
+--
+
+The sname:VkShaderResourceUsageAMD structure is defined as:
+
+include::../api/structs/VkShaderResourceUsageAMD.txt[]
+
+ * pname:numUsedVgprs is the number of vector instruction general purpose
+ registers used by this shader.
+ * pname:numUsedSgprs is the number of scalar instruction general purpose
+ registers used by this shader.
+ * pname:ldsSizePerLocalWorkGroup is the maximum local data store size per
+ work group in bytes.
+ * pname:ldsUsageSizeInBytes is the LDS usage size in bytes per work group
+ by this shader.
+ * pname:scratchMemUsageInBytes is the scratch memory usage in bytes by
+ this shader.
+
+include::../validity/structs/VkShaderResourceUsageAMD.txt[]
+--
diff --git a/doc/specs/vulkan/chapters/VK_EXT_debug_marker.txt b/doc/specs/vulkan/chapters/VK_EXT_debug_marker.txt
index ba1935d..b4b3f92 100644
--- a/doc/specs/vulkan/chapters/VK_EXT_debug_marker.txt
+++ b/doc/specs/vulkan/chapters/VK_EXT_debug_marker.txt
@@ -169,7 +169,7 @@ include::../api/structs/VkDebugMarkerMarkerInfoEXT.txt[]
* pname:pNext is `NULL` or a pointer to an extension-specific structure.
* pname:pMarkerName is a pointer to a null-terminated UTF-8 string that
contains the name of the marker.
- * pname:color is an optional RGBA color value that can be associated with
+ * pname:color is an optional: RGBA color value that can be associated with
the marker.
A particular implementation may: choose to ignore this color value.
The values contain RGBA values in order, in the range 0.0 to 1.0.
diff --git a/doc/specs/vulkan/chapters/VK_EXT_debug_report.txt b/doc/specs/vulkan/chapters/VK_EXT_debug_report.txt
index f2c454a..d6ae67a 100644
--- a/doc/specs/vulkan/chapters/VK_EXT_debug_report.txt
+++ b/doc/specs/vulkan/chapters/VK_EXT_debug_report.txt
@@ -129,7 +129,7 @@ include::../api/funcpointers/PFN_vkDebugReportCallbackEXT.txt[]
pname:object is undefined.
* pname:location is a component (layer, driver, loader) defined value that
indicates the _location_ of the trigger.
- This is an optional value.
+ This is an optional: value.
* pname:messageCode is a layer-defined value indicating what test
triggered this callback.
* pname:pLayerPrefix is a null-terminated string that is an abbreviation
@@ -143,17 +143,10 @@ include::../api/funcpointers/PFN_vkDebugReportCallbackEXT.txt[]
The callback must: not call fname:vkDestroyDebugReportCallbackEXT.
-The callback returns a basetype:VkBool32 that indicates to the calling layer
-the application's desire to abort the call.
-A value of ename:VK_TRUE indicates that the application wants to abort this
-call.
-If the application returns ename:VK_FALSE, the command must: not be aborted.
-Applications should: always return ename:VK_FALSE so that they see the same
-behavior with and without validation layers enabled.
-
-If the application returns ename:VK_TRUE from its callback and the Vulkan
-call being aborted returns a elink:VkResult, the layer will return
-ename:VK_ERROR_VALIDATION_FAILED_EXT.
+The callback returns a basetype:VkBool32, which is interpreted in a
+layer-specified manner.
+The application should: always return ename:VK_FALSE.
+The ename:VK_TRUE value is reserved for use in layer development.
.Valid Usage
****
diff --git a/doc/specs/vulkan/chapters/cmdbuffers.txt b/doc/specs/vulkan/chapters/cmdbuffers.txt
index f4bdf6f..9bfc398 100644
--- a/doc/specs/vulkan/chapters/cmdbuffers.txt
+++ b/doc/specs/vulkan/chapters/cmdbuffers.txt
@@ -784,7 +784,7 @@ include::../api/protos/vkQueueSubmit.txt[]
* pname:submitCount is the number of elements in the pname:pSubmits array.
* pname:pSubmits is a pointer to an array of slink:VkSubmitInfo
structures, each specifying a command buffer submission batch.
- * pname:fence is an optional handle to a fence to be signaled once all
+ * pname:fence is an optional: handle to a fence to be signaled once all
submitted command buffers have completed execution.
If pname:fence is not dlink:VK_NULL_HANDLE, it defines a
<<synchronization-fences-signaling, fence signal operation>>.
diff --git a/doc/specs/vulkan/chapters/devsandqueues.txt b/doc/specs/vulkan/chapters/devsandqueues.txt
index 91436fe..aba2e46 100644
--- a/doc/specs/vulkan/chapters/devsandqueues.txt
+++ b/doc/specs/vulkan/chapters/devsandqueues.txt
@@ -1248,7 +1248,7 @@ by the underlying physical device, including synchronization with semaphores
and fences.
Submission commands take as parameters a target queue, zero or more
-_batches_ of work, and an optional fence to signal upon completion.
+_batches_ of work, and an optional: fence to signal upon completion.
Each batch consists of three distinct parts:
. Zero or more semaphores to wait on before execution of the rest of the
diff --git a/doc/specs/vulkan/chapters/features.txt b/doc/specs/vulkan/chapters/features.txt
index e839578..18efa9c 100644
--- a/doc/specs/vulkan/chapters/features.txt
+++ b/doc/specs/vulkan/chapters/features.txt
@@ -649,8 +649,8 @@ additional supported properties of individual formats.
The feature requires at least one of the ptext:sparseResidency* features
to be supported.
* [[features-features-shaderResourceMinLod]] pname:shaderResourceMinLod
- indicates whether image operations that specify the minimum resource
- level-of-detail (LOD) are supported in shader code.
+ indicates whether image operations that specify the minimum resource LOD
+ are supported in shader code.
If this feature is not enabled, the code:MinLod image operand must: not
be used in shader code.
This also indicates whether shader modules can: declare the code:MinLod
@@ -1335,7 +1335,7 @@ different equations in the spec).
the maximum draw count that is supported for indirect draw calls.
See <<features-features-multiDrawIndirect,multiDrawIndirect>>.
* [[features-limits-maxSamplerLodBias]] pname:maxSamplerLodBias is the
- maximum absolute sampler level of detail bias.
+ maximum absolute sampler LOD bias.
The sum of the pname:mipLodBias member of the sname:VkSamplerCreateInfo
structure and the code:Bias operand of image sampling operations in
shader modules (or 0 if no code:Bias operand is provided to an image
diff --git a/doc/specs/vulkan/chapters/introduction.txt b/doc/specs/vulkan/chapters/introduction.txt
index 2b5e0bf..98d6757 100644
--- a/doc/specs/vulkan/chapters/introduction.txt
+++ b/doc/specs/vulkan/chapters/introduction.txt
@@ -192,8 +192,8 @@ which implementers of Vulkan must: comply.
_IEEE Standard for Floating-Point Arithmetic_, IEEE Std 754-2008,
http://dx.doi.org/10.1109/IEEESTD.2008.4610935, August, 2008.
-[[data-format]] A.
-Garrard, _Khronos Data Format Specification, version 1.2_,
+[[data-format]] A. Garrard, _Khronos Data Format Specification, version
+1.2_,
https://www.khronos.org/registry/dataformat/specs/1.2/dataformat.1.2.html,
September, 2017.
@@ -201,18 +201,15 @@ September, 2017.
// asciidoc error 'list item index: expected 2 got 10'. Apparently the 'A.'
// of the previous paragraph and the 'J.' of this one get misinterpreted.
-[[spirv-extended]] J.
-Kessenich, _SPIR-V Extended Instructions for GLSL, Version 1.00_,
-https://www.khronos.org/registry/spir-v/, February 10, 2016.
+[[spirv-extended]] J. Kessenich, _SPIR-V Extended Instructions for GLSL,
+Version 1.00_, https://www.khronos.org/registry/spir-v/, February 10, 2016.
-[[spirv-spec]] J.
-Kessenich and B.
-Ouriel, _The Khronos SPIR-V Specification, Version 1.00_,
-https://www.khronos.org/registry/spir-v/, February 10, 2016.
+[[spirv-spec]] J. Kessenich and B. Ouriel, _The Khronos SPIR-V
+Specification, Version 1.00_, https://www.khronos.org/registry/spir-v/,
+February 10, 2016.
-[[vulkan-styleguide]] J.
-Leech and T.
-Hector, _Vulkan Documentation and Extensions: Procedures and Conventions_,
+[[vulkan-styleguide]] J. Leech and T. Hector, _Vulkan Documentation and
+Extensions: Procedures and Conventions_,
https://www.khronos.org/registry/vulkan/, July 11, 2016
[[LoaderAndValidationLayers]]
diff --git a/doc/specs/vulkan/chapters/memory.txt b/doc/specs/vulkan/chapters/memory.txt
index 61a724e..e3d9802 100644
--- a/doc/specs/vulkan/chapters/memory.txt
+++ b/doc/specs/vulkan/chapters/memory.txt
@@ -557,8 +557,7 @@ easily selecting an appropriate memory type.
Given two memory types X and Y, the preorder defines [eq]#X {leq} Y# if:
* the memory property bits set for X are a strict subset of the memory
- property bits set for Y.
- Or,
+ property bits set for Y. Or,
* the memory property bits set for X are the same as the memory property
bits set for Y, and X uses a memory heap with greater or equal
performance (as determined in an implementation-specific manner).
diff --git a/doc/specs/vulkan/chapters/pipelines.txt b/doc/specs/vulkan/chapters/pipelines.txt
index d33f0ba..6e14a1a 100644
--- a/doc/specs/vulkan/chapters/pipelines.txt
+++ b/doc/specs/vulkan/chapters/pipelines.txt
@@ -650,15 +650,15 @@ endif::VK_KHR_maintenance2[]
If the depth bias clamping feature is not enabled, no element of the
pname:pDynamicStates member of pname:pDynamicState is
ename:VK_DYNAMIC_STATE_DEPTH_BIAS, and the pname:depthBiasEnable member
- of pname:pDepthStencil is ename:VK_TRUE, the pname:depthBiasClamp member
- of pname:pDepthStencil must: be `0.0`
+ of pname:pRasterizationState is ename:VK_TRUE, the pname:depthBiasClamp
+ member of pname:pRasterizationState must: be `0.0`
ifndef::VK_EXT_depth_range_unrestricted[]
* [[VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-00755]]
If no element of the pname:pDynamicStates member of pname:pDynamicState
is ename:VK_DYNAMIC_STATE_DEPTH_BOUNDS, and the
- pname:depthBoundsTestEnable member of pname:pDepthStencil is
+ pname:depthBoundsTestEnable member of pname:pDepthStencilState is
ename:VK_TRUE, the pname:minDepthBounds and pname:maxDepthBounds members
- of pname:pDepthStencil must: be between `0.0` and `1.0`, inclusive
+ of pname:pDepthStencilState must: be between `0.0` and `1.0`, inclusive
endif::VK_EXT_depth_range_unrestricted[]
ifdef::VK_EXT_sample_locations[]
* [[VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-01521]]
@@ -1635,3 +1635,7 @@ include::../api/enums/VkPipelineBindPoint.txt[]
pipeline.
--
+
+ifdef::VK_AMD_shader_info[]
+include::VK_AMD_shader_info.txt[]
+endif::VK_AMD_shader_info[]
diff --git a/doc/specs/vulkan/chapters/primsrast.txt b/doc/specs/vulkan/chapters/primsrast.txt
index 4d9d9e7..6cfe58a 100644
--- a/doc/specs/vulkan/chapters/primsrast.txt
+++ b/doc/specs/vulkan/chapters/primsrast.txt
@@ -147,8 +147,8 @@ include::../api/structs/VkPipelineMultisampleStateCreateInfo.txt[]
ifdef::VK_NV_framebuffer_mixed_samples[]
* [[VUID-VkPipelineMultisampleStateCreateInfo-rasterizationSamples-01415]]
If the subpass has any color attachments and pname:rasterizationSamples
- is greater than the number of color samples, then pname:sampleShadingEnable
- must: be ename:VK_FALSE
+ is greater than the number of color samples, then
+ pname:sampleShadingEnable must: be ename:VK_FALSE
endif::VK_NV_framebuffer_mixed_samples[]
****
diff --git a/doc/specs/vulkan/chapters/renderpass.txt b/doc/specs/vulkan/chapters/renderpass.txt
index 3879827..d92a07d 100644
--- a/doc/specs/vulkan/chapters/renderpass.txt
+++ b/doc/specs/vulkan/chapters/renderpass.txt
@@ -715,8 +715,8 @@ include::../api/structs/VkSubpassDescription.txt[]
* pname:inputAttachmentCount is the number of input attachments.
* pname:pInputAttachments is an array of slink:VkAttachmentReference
structures (defined below) that lists which of the render pass's
- attachments can: be read in the shader during the subpass, and what
- layout each attachment will be in during the subpass.
+ attachments can: be read in the fragment shader stage during the
+ subpass, and what layout each attachment will be in during the subpass.
Each element of the array corresponds to an input attachment unit number
in the shader, i.e. if the shader declares an input variable
`layout(input_attachment_index=X, set=Y, binding=Z)` then it uses the
@@ -724,6 +724,9 @@ include::../api/structs/VkSubpassDescription.txt[]
Input attachments must: also be bound to the pipeline with a descriptor
set, with the input attachment descriptor written in the location
(set=Y, binding=Z).
+ Fragment shaders can: use subpass input variables to access the contents
+ of an input attachment at the fragment's (x, y, layer) framebuffer
+ coordinates.
* pname:colorAttachmentCount is the number of color attachments.
* pname:pColorAttachments is an array of pname:colorAttachmentCount
slink:VkAttachmentReference structures that lists which of the render
diff --git a/doc/specs/vulkan/chapters/samplers.txt b/doc/specs/vulkan/chapters/samplers.txt
index 4efbbea..072968d 100644
--- a/doc/specs/vulkan/chapters/samplers.txt
+++ b/doc/specs/vulkan/chapters/samplers.txt
@@ -60,9 +60,10 @@ include::../api/structs/VkSamplerCreateInfo.txt[]
* pname:addressModeW is a elink:VkSamplerAddressMode value specifying the
addressing mode for outside [0..1] range for W coordinate.
* [[samplers-mipLodBias]] pname:mipLodBias is the bias to be added to
- mipmap LOD calculation and bias provided by image sampling functions in
- SPIR-V, as described in the <<textures-level-of-detail-operation,
- Level-of-Detail Operation>> section.
+ mipmap LOD (level-of-detail) calculation and bias provided by image
+ sampling functions in SPIR-V, as described in the
+ <<textures-level-of-detail-operation, Level-of-Detail Operation>>
+ section.
* [[samplers-maxAnisotropy]] pname:anisotropyEnable is ename:VK_TRUE to
enable anisotropic filtering, as described in the
<<textures-texel-anisotropic-filtering, Texel Anisotropic Filtering>>
@@ -76,9 +77,8 @@ include::../api/structs/VkSamplerCreateInfo.txt[]
function to apply to fetched data before filtering as described in the
<<textures-depth-compare-operation, Depth Compare Operation>> section.
* pname:minLod and pname:maxLod are the values used to clamp the computed
- level-of-detail value, as described in the
- <<textures-level-of-detail-operation, Level-of-Detail Operation>>
- section.
+ LOD value, as described in the <<textures-level-of-detail-operation,
+ Level-of-Detail Operation>> section.
pname:maxLod must: be greater than or equal to pname:minLod.
* pname:borderColor is a elink:VkBorderColor value specifying the
predefined border color to use.
diff --git a/doc/specs/vulkan/chapters/shaders.txt b/doc/specs/vulkan/chapters/shaders.txt
index d755247..b71c5e9 100644
--- a/doc/specs/vulkan/chapters/shaders.txt
+++ b/doc/specs/vulkan/chapters/shaders.txt
@@ -226,10 +226,10 @@ In particular, the following rules apply:
* The relative order of invocations of the same shader type are undefined.
A store issued by a shader when working on primitive B might complete
prior to a store for primitive A, even if primitive A is specified prior
- to primitive B.
- This applies even to fragment shaders; while fragment shader outputs are
- always written to the framebuffer in <<primrast-order, rasterization
- order>>, stores executed by fragment shader invocations are not.
+ to primitive B. This applies even to fragment shaders; while fragment
+ shader outputs are always written to the framebuffer in
+ <<primrast-order, rasterization order>>, stores executed by fragment
+ shader invocations are not.
* The relative order of invocations of different shader types is largely
undefined.
diff --git a/doc/specs/vulkan/chapters/sparsemem.txt b/doc/specs/vulkan/chapters/sparsemem.txt
index b24592e..917be5d 100644
--- a/doc/specs/vulkan/chapters/sparsemem.txt
+++ b/doc/specs/vulkan/chapters/sparsemem.txt
@@ -176,8 +176,8 @@ multiples of the corresponding dimensions of the sparse image block.
[NOTE]
.Note
====
-Applications can: use these types of images to control level-of-detail based
-on total memory consumption.
+Applications can: use these types of images to control LOD based on total
+memory consumption.
If memory pressure becomes an issue the application can: unbind and disable
specific mipmap levels of images without having to recreate resources or
modify pixel data of unaffected levels.
@@ -1474,7 +1474,7 @@ include::../api/protos/vkQueueBindSparse.txt[]
array.
* pname:pBindInfo is an array of slink:VkBindSparseInfo structures, each
specifying a sparse binding submission batch.
- * pname:fence is an optional handle to a fence to be signaled.
+ * pname:fence is an optional: handle to a fence to be signaled.
If pname:fence is not dlink:VK_NULL_HANDLE, it defines a
<<synchronization-fences-signaling, fence signal operation>>.
diff --git a/doc/specs/vulkan/chapters/synchronization.txt b/doc/specs/vulkan/chapters/synchronization.txt
index 143620e..939c45d 100644
--- a/doc/specs/vulkan/chapters/synchronization.txt
+++ b/doc/specs/vulkan/chapters/synchronization.txt
@@ -727,21 +727,51 @@ A _framebuffer region_ is a set of sample (x, y, layer, sample) coordinates
that is a subset of the entire framebuffer.
Both <<synchronization-dependencies-scopes, synchronization scopes>> of a
-framebuffer-local dependency include only operations on the same single
-framebuffer region.
-No ordering guarantees are made between framebuffer regions for a
+framebuffer-local dependency include only the operations performed within
+corresponding framebuffer regions (as defined below).
+No ordering guarantees are made between different framebuffer regions for a
framebuffer-local dependency.
Both <<synchronization-dependencies-scopes, synchronization scopes>> of a
framebuffer-global dependency include operations on all framebuffer-regions.
+If the first synchronization scope includes operations on pixels/fragments
+with N samples and the second synchronization scope includes operations on
+pixels/fragments with M samples, where N does not equal M, then a
+framebuffer region containing all samples at a given (x, y, layer)
+coordinate in the first synchronization scope corresponds to a region
+containing all samples at the same coordinate in the second synchronization
+scope.
+In other words, it is a pixel granularity dependency.
+If N equals M, then a framebuffer region containing a single (x, y, layer,
+sample) coordinate in the first synchronization scope corresponds to a
+region containing the same sample at the same coordinate in the second
+synchronization scope.
+In other words, it is a sample granularity dependency.
+
.Note
[NOTE]
====
Since fragment invocations are not specified to run in any particular
groupings, the size of a framebuffer region is implementation-dependent, not
-known to the application, and must: be assumed to be no larger than a single
-sample.
+known to the application, and must: be assumed to be no larger than
+specified above.
+====
+
+.Note
+[NOTE]
+====
+Practically, the pixel vs sample granularity dependency means that if an
+input attachment has a different number of samples than the pipeline's
+pname:rasterizationSamples, then a fragment can: access any sample in the
+input attachment's pixel even if it only uses framebuffer-local
+dependencies.
+If the input attachment has the same number of samples, then the fragment
+can: only access the covered samples in its input code:SampleMask (i.e. the
+fragment operations happen-after a framebuffer-local dependency for each
+sample the fragment covers).
+To access samples that are not covered, a framebuffer-global dependency is
+required.
====
If a synchronization command includes a pname:dependencyFlags parameter, and
@@ -1280,7 +1310,8 @@ of date.
If the device has been lost (see <<devsandqueues-lost-device,Lost Device>>),
fname:vkGetFenceStatus may: return any of the above status codes.
If the device has been lost and fname:vkGetFenceStatus is called repeatedly,
-it will eventually return either ename:VK_SUCCESS or ename:VK_ERROR_DEVICE_LOST.
+it will eventually return either ename:VK_SUCCESS or
+ename:VK_ERROR_DEVICE_LOST.
include::../validity/protos/vkGetFenceStatus.txt[]
--
diff --git a/doc/specs/vulkan/chapters/textures.txt b/doc/specs/vulkan/chapters/textures.txt
index 661a576..0f6748a 100644
--- a/doc/specs/vulkan/chapters/textures.txt
+++ b/doc/specs/vulkan/chapters/textures.txt
@@ -30,12 +30,12 @@ SPIR-V Image Instructions include the following functionality:
neighboring texels of the image, and <<textures-texel-filtering,filter>>
the texel values based on the state of the sampler.
** Instructions with code:ImplicitLod in the name
- <<textures-level-of-detail-operation,determine>> the level of detail
- used in the sampling operation based on the coordinates used in
- neighboring fragments.
+ <<textures-level-of-detail-operation,determine>> the LOD used in the
+ sampling operation based on the coordinates used in neighboring
+ fragments.
** Instructions with code:ExplicitLod in the name
- <<textures-level-of-detail-operation,determine>> the level of detail
- used in the sampling operation based on additional coordinates.
+ <<textures-level-of-detail-operation,determine>> the LOD used in the
+ sampling operation based on additional coordinates.
** Instructions with code:Proj in the name apply homogeneous
<<textures-projection,projection>> to the coordinates.
* code:OpImageFetch and code:OpImageSparseFetch return a single texel of
@@ -699,7 +699,7 @@ D & = 0.0 & \text{otherwise}
where, in the depth comparison:
- :: [eq]#D~ref~ = shaderOp.D~ref~# (from optional SPIR-V operand)
+ :: [eq]#D~ref~ = shaderOp.D~ref~# (from optional: SPIR-V operand)
:: [eq]#D# (texel depth value)
@@ -1369,7 +1369,7 @@ D_{\textit{ref}} & = \frac{D_{\textit{ref}}}{q}, & \text{if provided}
=== Derivative Image Operations
-Derivatives are used for level-of-detail selection.
+Derivatives are used for LOD selection.
These derivatives are either implicit (in an code:ImplicitLod image
instruction in a fragment shader) or explicit (provided explicitly by shader
to the image instruction in any shader).
@@ -1391,8 +1391,8 @@ That is:
Partial derivatives not defined above for certain image dimensionalities are
set to zero.
-For explicit level-of-detail image instructions, if the optional: SPIR-V
-operand [eq]#Grad# is provided, then the operand values are used for the
+For explicit LOD image instructions, if the optional: SPIR-V operand
+[eq]#Grad# is provided, then the operand values are used for the
derivatives.
The number of components present in each derivative for a given image
dimensionality matches the number of partial derivatives computed above.
@@ -1401,8 +1401,8 @@ If the optional: SPIR-V operand [eq]#Lod# is provided, then derivatives are
set to zero, the cube map derivative transformation is skipped, and the
scale factor operation is skipped.
Instead, the floating point scalar coordinate is directly assigned to
-[eq]#{lambda}~base~# as described in
-<<textures-level-of-detail-operation,Level-of-Detail Operation>>.
+[eq]#{lambda}~base~# as described in <<textures-level-of-detail-operation,
+Level-of-Detail Operation>>.
=== Cube Map Face Selection and Transformations
@@ -1563,12 +1563,12 @@ endif::editing-notes[]
=== Scale Factor Operation, Level-of-Detail Operation and Image Level(s) Selection
-Level-of-detail selection can: be either explicit (provided explicitly by
-the image instruction) or implicit (determined from a scale factor
-calculated from the derivatives).
-The implicit level of detail selected can: be queried using the SPIR-V
-instruction code:OpImageQueryLod, which gives access to the [eq]#{lambda}#'
-and [eq]#d~l~# values, defined below.
+LOD selection can: be either explicit (provided explicitly by the image
+instruction) or implicit (determined from a scale factor calculated from the
+derivatives).
+The implicit LOD selected can: be queried using the SPIR-V instruction
+code:OpImageQueryLod, which gives access to the [eq]#{lambda}#' and
+[eq]#d~l~# values, defined below.
[[textures-scale-factor]]
@@ -1700,14 +1700,14 @@ If [eq]#N > 1#, sampling is anisotropic.
[[textures-level-of-detail-operation]]
==== Level-of-Detail Operation
-The _level-of-detail_ parameter [eq]#{lambda}# is computed as follows:
+The LOD parameter [eq]#{lambda}# is computed as follows:
[latexmath]
++++++++++++++++++++++++
\begin{aligned}
\lambda_{base}(x,y) & =
\begin{cases}
- shaderOp.Lod & \text{(from optional SPIR-V operand)} \\
+ shaderOp.Lod & \text{(from optional: SPIR-V operand)} \\
\log_2 \left ( \frac{\rho_{max}}{N} \right ) & \text{otherwise}
\end{cases} \\
\lambda'(x,y) & = \lambda_{base} + \mathbin{clamp}(sampler.bias + shaderOp.bias,-maxSamplerLodBias,maxSamplerLodBias) \\
@@ -1729,13 +1729,13 @@ where:
sampler.bias & = mipLodBias & \text{(from sampler descriptor)} \\
shaderOp.bias & =
\begin{cases}
- Bias & \text{(from optional SPIR-V operand)} \\
+ Bias & \text{(from optional: SPIR-V operand)} \\
0 & \text{otherwise}
\end{cases} \\
sampler.lod_{min} & = minLod & \text{(from sampler descriptor)} \\
shaderOp.lod_{min} & =
\begin{cases}
- MinLod & \text{(from optional SPIR-V operand)} \\
+ MinLod & \text{(from optional: SPIR-V operand)} \\
0 & \text{otherwise}
\end{cases} \\
\\
@@ -1753,7 +1753,7 @@ feature <<features-limits-maxSamplerLodBias,pname:maxSamplerLodBias>>.
The image level(s) [eq]#d#, [eq]#d~hi~#, and [eq]#d~lo~# which texels are
read from are determined by an image-level parameter [eq]#d~l~#, which is
-computed based on the level-of-detail parameter, as follows:
+computed based on the LOD parameter, as follows:
[latexmath]
++++++++++++++++++++++++
diff --git a/doc/specs/vulkan/chapters/vertexpostproc.txt b/doc/specs/vulkan/chapters/vertexpostproc.txt
index b5ee8e2..962a791 100644
--- a/doc/specs/vulkan/chapters/vertexpostproc.txt
+++ b/doc/specs/vulkan/chapters/vertexpostproc.txt
@@ -46,7 +46,7 @@ ifdef::VK_NV_viewport_swizzle[]
[open,refpage='VkPipelineViewportSwizzleStateCreateInfoNV',desc='Structure specifying swizzle applied to primitive clip coordinates',type='structs']
--
-Each primitive sent to a given viewport has a swizzle and optional negation
+Each primitive sent to a given viewport has a swizzle and optional: negation
applied to its clip coordinates.
The swizzle that is applied depends on the viewport index, and is controlled
by the sname:VkPipelineViewportSwizzleStateCreateInfoNV pipeline state:
diff --git a/doc/specs/vulkan/images/Makefile b/doc/specs/vulkan/images/Makefile
index ee554f3..4dc3158 100644
--- a/doc/specs/vulkan/images/Makefile
+++ b/doc/specs/vulkan/images/Makefile
@@ -13,6 +13,11 @@
# the other way using inkscape just does not work - horrible drop
# shadows everywhere.
+# If a recipe fails, delete its target file. Without this cleanup, the leftover
+# file from the failed recipe can falsely satisfy dependencies on subsequent
+# runs of `make`.
+.DELETE_ON_ERROR:
+
#.SUFFIXES: .pdf .svg
#.svg.pdf: ; $(INKSCAPE) -f $< -A $@
diff --git a/doc/specs/vulkan/reflib.py b/doc/specs/vulkan/reflib.py
index 7ef1513..e781617 100644
--- a/doc/specs/vulkan/reflib.py
+++ b/doc/specs/vulkan/reflib.py
@@ -114,7 +114,7 @@ def isempty(s):
# pageInfo - information about a ref page relative to the file it's
# extracted from.
#
-# extractPage - True if page should not be extracted
+# extractPage - True if page should be extracted
# Warning - string warning if page is suboptimal or can't be generated
# embed - False or the name of the ref page this include is imbedded within
#
diff --git a/doc/specs/vulkan/reflow.py b/doc/specs/vulkan/reflow.py
index f1748e6..c44fbb6 100755
--- a/doc/specs/vulkan/reflow.py
+++ b/doc/specs/vulkan/reflow.py
@@ -91,7 +91,7 @@ beginBullet = re.compile('^ *([*-.]+|::) ')
# Text that (may) not end sentences
# A single letter followed by a period, typically a middle initial.
-endInitial = re.compile('^[[:upper:]]\.$')
+endInitial = re.compile('^[A-Z]\.$')
# An abbreviation, which doesn't (usually) end a line.
endAbbrev = re.compile('(e\.g|i\.e|c\.f)\.$', re.IGNORECASE)
diff --git a/doc/specs/vulkan/registry.txt b/doc/specs/vulkan/registry.txt
index 0154f2e..71b377f 100644
--- a/doc/specs/vulkan/registry.txt
+++ b/doc/specs/vulkan/registry.txt
@@ -993,7 +993,10 @@ be implemented against.
* attr:author - optional. The author name, such as a full company
name. If not present, this can be taken from the corresponding
tag:tag attribute. However, `EXT` and other multi-vendor extensions
- may not have a well-defined author or contact in the tag.
+ may not have a well-defined author or contact in the tag. This attribute
+ is not used in processing the XML. It is just metadata, mostly used to
+ track the original author of an extension (which may have since been
+ promoted to use a different author ID).
* attr:contact - optional. The contact who registered or is currently
responsible for extensions and layers using the tag, including
sufficient contact information to reach the contact such as
diff --git a/doc/specs/vulkan/style/extensions.txt b/doc/specs/vulkan/style/extensions.txt
index e5c6b85..6c590e2 100644
--- a/doc/specs/vulkan/style/extensions.txt
+++ b/doc/specs/vulkan/style/extensions.txt
@@ -117,6 +117,7 @@ The underscore (`_`) character is used as a delimiter between words.
Every character of the name must be in lower case.
+[[extensions-naming-author-IDs]]
=== Author IDs
Extension and layer names also contain an _author ID_, indicated by `AUTHOR`
@@ -139,8 +140,8 @@ FQDNs cannot be used for extensions, only for layers.
* The following are examples of extension and layer names, demonstrating
the above syntax:
** Extension names all use the base prefix `VK_`.
- ** Khronos-ratified extensions add the reserved author ID `KHR`, and will
- use the prefix `VK_KHR_`.
+ ** Khronos-ratified extensions add one of the reserved author IDs `KHR` or
+ `KHX`, and will use the prefix `VK_KHR_` or `VK_KHX_`, respectively.
** The following author IDs are reserved and must not be used:
*** `VK` - To avoid confusion with the top-level `VK_` prefix.
*** `VULKAN` - To avoid confusion with the name of the Vulkan API.
@@ -171,6 +172,14 @@ FQDNs cannot be used for extensions, only for layers.
The restriction that layer names must be valid C identifiers means that
some FQDNs cannot be used as part of layer names.
+[NOTE]
+.Note
+====
+The `KHX` author ID is used for _experimental_ extensions, as described in
+the "`Layers & Extensions`" appendix of the <<vulkan-spec,Vulkan API
+Specification>>.
+====
+
[source, c]
.Example
----
diff --git a/doc/specs/vulkan/style/writing.txt b/doc/specs/vulkan/style/writing.txt
index be2c468..fd6f117 100644
--- a/doc/specs/vulkan/style/writing.txt
+++ b/doc/specs/vulkan/style/writing.txt
@@ -156,7 +156,9 @@ of a structure as a "`color space`" value.
| Except if needed to disambiguate from surrounding terms
| flat shading | flatshading |
| GitHub | Github | Site's preferred spelling
-| LOD | lod | Acronym for "`Level Of Detail`"
+| LOD | lod +
+ level of detail +
+ level-of-detail| Acronym for "`Level of Detail`"
| mip level +
mip layer +
mip size +
@@ -454,6 +456,31 @@ V =
----
+[[writing-latexmath-in-table-cells]]
+=== LaTeX Math in Table Cells
+
+To use `[latexmath]` or `latexmath{cl}` constructs inside table cells, the
+cell separator must be `a|` instead of just `|`:
+
+[source,asciidoc]
+.Example Markup
+----
+.Advanced Blend Overlap Modes
+[width="80%",options="header"]
+|====
+| Overlap Mode | Weighting Equations
+| ename:VK_BLEND_OVERLAP_UNCORRELATED_EXT a|
+[latexmath]
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ \begin{aligned}
+ p_0(A_s,A_d) & = A_sA_d \\
+ p_1(A_s,A_d) & = A_s(1-A_d) \\
+ p_2(A_s,A_d) & = A_d(1-A_s) \\
+ \end{aligned}
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+----
+
+
[[writing-pNext-chain]]
== Describing Extension Structure Chains
diff --git a/doc/specs/vulkan/styleguide.txt b/doc/specs/vulkan/styleguide.txt
index 4f97826..aeca3c5 100644
--- a/doc/specs/vulkan/styleguide.txt
+++ b/doc/specs/vulkan/styleguide.txt
@@ -157,6 +157,10 @@ include::style/vuid.txt[]
= Revision History
+* 2017-10-15 - Describe how to write <<writing-latexmath-in-table-cells,
+ LaTeX Math in Table Cells>> (internal issue 908).
+* 2017-10-15 - Add more details of <<extensions-naming-author-IDs, `KHX`
+ extensions>> (public issues 536, 580)..
* 2017-09-10 - Add descriptions of <<writing-arrays, how to use `each` and
`any`>> to refer to properties of elments of arrays (internal issue 884).
* 2017-09-10 - Add <<extensions-interactions-parent, Valid Usage and
diff --git a/src/ext_loader/vulkan_ext.c b/src/ext_loader/vulkan_ext.c
index 4b66d73..509e531 100644
--- a/src/ext_loader/vulkan_ext.c
+++ b/src/ext_loader/vulkan_ext.c
@@ -1223,6 +1223,27 @@ void vkCmdDrawIndexedIndirectCountAMD(
}
#endif /* VK_AMD_draw_indirect_count */
+#ifdef VK_AMD_shader_info
+static PFN_vkGetShaderInfoAMD pfn_vkGetShaderInfoAMD;
+VkResult vkGetShaderInfoAMD(
+ VkDevice device,
+ VkPipeline pipeline,
+ VkShaderStageFlagBits shaderStage,
+ VkShaderInfoTypeAMD infoType,
+ size_t* pInfoSize,
+ void* pInfo)
+{
+ return pfn_vkGetShaderInfoAMD(
+ device,
+ pipeline,
+ shaderStage,
+ infoType,
+ pInfoSize,
+ pInfo
+ );
+}
+
+#endif /* VK_AMD_shader_info */
#ifdef VK_NV_external_memory_capabilities
static PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV pfn_vkGetPhysicalDeviceExternalImageFormatPropertiesNV;
VkResult vkGetPhysicalDeviceExternalImageFormatPropertiesNV(
@@ -2023,6 +2044,9 @@ void vkExtInitInstance(VkInstance instance)
pfn_vkCmdDrawIndirectCountAMD = (PFN_vkCmdDrawIndirectCountAMD)vkGetInstanceProcAddr(instance, "vkCmdDrawIndirectCountAMD");
pfn_vkCmdDrawIndexedIndirectCountAMD = (PFN_vkCmdDrawIndexedIndirectCountAMD)vkGetInstanceProcAddr(instance, "vkCmdDrawIndexedIndirectCountAMD");
#endif /* VK_AMD_draw_indirect_count */
+#ifdef VK_AMD_shader_info
+ pfn_vkGetShaderInfoAMD = (PFN_vkGetShaderInfoAMD)vkGetInstanceProcAddr(instance, "vkGetShaderInfoAMD");
+#endif /* VK_AMD_shader_info */
#ifdef VK_NV_external_memory_capabilities
pfn_vkGetPhysicalDeviceExternalImageFormatPropertiesNV = (PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV)vkGetInstanceProcAddr(instance, "vkGetPhysicalDeviceExternalImageFormatPropertiesNV");
#endif /* VK_NV_external_memory_capabilities */
@@ -2276,6 +2300,9 @@ void vkExtInitDevice(VkDevice device)
pfn_vkCmdDrawIndirectCountAMD = (PFN_vkCmdDrawIndirectCountAMD)vkGetDeviceProcAddr(device, "vkCmdDrawIndirectCountAMD");
pfn_vkCmdDrawIndexedIndirectCountAMD = (PFN_vkCmdDrawIndexedIndirectCountAMD)vkGetDeviceProcAddr(device, "vkCmdDrawIndexedIndirectCountAMD");
#endif /* VK_AMD_draw_indirect_count */
+#ifdef VK_AMD_shader_info
+ pfn_vkGetShaderInfoAMD = (PFN_vkGetShaderInfoAMD)vkGetDeviceProcAddr(device, "vkGetShaderInfoAMD");
+#endif /* VK_AMD_shader_info */
#ifdef VK_NV_external_memory_capabilities
pfn_vkGetPhysicalDeviceExternalImageFormatPropertiesNV = (PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV)vkGetDeviceProcAddr(device, "vkGetPhysicalDeviceExternalImageFormatPropertiesNV");
#endif /* VK_NV_external_memory_capabilities */
diff --git a/src/spec/Makefile b/src/spec/Makefile
index a8079d3..731dcae 100644
--- a/src/spec/Makefile
+++ b/src/spec/Makefile
@@ -12,6 +12,11 @@
# See the License for the specific language governing permissions and
# limitations under the License.
+# If a recipe fails, delete its target file. Without this cleanup, the leftover
+# file from the failed recipe can falsely satisfy dependencies on subsequent
+# runs of `make`.
+.DELETE_ON_ERROR:
+
# Generator scripts and options
# GENOPTS can be e.g. '-noprotect'
diff --git a/src/spec/vk.xml b/src/spec/vk.xml
index 88e0997..d2aba61 100644
--- a/src/spec/vk.xml
+++ b/src/spec/vk.xml
@@ -107,7 +107,7 @@ private version is maintained in the 1.0 branch of the member gitlab server.
<type category="define">// Vulkan 1.0 version number
#define <name>VK_API_VERSION_1_0</name> <type>VK_MAKE_VERSION</type>(1, 0, 0)// Patch version should always be set to 0</type>
<type category="define">// Version of this file
-#define <name>VK_HEADER_VERSION</name> 63</type>
+#define <name>VK_HEADER_VERSION</name> 64</type>
<type category="define">
#define <name>VK_DEFINE_HANDLE</name>(object) typedef struct object##_T* object;</type>
@@ -386,6 +386,7 @@ private version is maintained in the 1.0 branch of the member gitlab server.
<type name="VkPointClippingBehaviorKHR" category="enum"/>
<type name="VkCoverageModulationModeNV" category="enum"/>
<type name="VkValidationCacheHeaderVersionEXT" category="enum"/>
+ <type name="VkShaderInfoTypeAMD" category="enum"/>
<type name="VkQueueGlobalPriorityEXT" category="enum"/>
<comment>WSI extensions</comment>
@@ -1251,7 +1252,7 @@ private version is maintained in the 1.0 branch of the member gitlab server.
<member><type>VkBool32</type> <name>shaderInt64</name><comment>64-bit integers in shaders</comment></member>
<member><type>VkBool32</type> <name>shaderInt16</name><comment>16-bit integers in shaders</comment></member>
<member><type>VkBool32</type> <name>shaderResourceResidency</name><comment>shader can use texture operations that return resource residency information (requires sparseNonResident support)</comment></member>
- <member><type>VkBool32</type> <name>shaderResourceMinLod</name><comment>shader can use texture operations that specify minimum resource level of detail</comment></member>
+ <member><type>VkBool32</type> <name>shaderResourceMinLod</name><comment>shader can use texture operations that specify minimum resource LOD</comment></member>
<member><type>VkBool32</type> <name>sparseBinding</name><comment>Sparse resources support: Resource memory can be managed at opaque page level rather than object level</comment></member>
<member><type>VkBool32</type> <name>sparseResidencyBuffer</name><comment>Sparse resources support: GPU can access partially resident buffers </comment></member>
<member><type>VkBool32</type> <name>sparseResidencyImage2D</name><comment>Sparse resources support: GPU can access partially resident 2D (non-MSAA non-depth/stencil) images </comment></member>
@@ -1341,7 +1342,7 @@ private version is maintained in the 1.0 branch of the member gitlab server.
<member><type>uint32_t</type> <name>mipmapPrecisionBits</name><comment>number bits of precision for selecting mipmap weights</comment></member>
<member><type>uint32_t</type> <name>maxDrawIndexedIndexValue</name><comment>max index value for indexed draw calls (for 32-bit indices)</comment></member>
<member><type>uint32_t</type> <name>maxDrawIndirectCount</name><comment>max draw count for indirect draw calls</comment></member>
- <member><type>float</type> <name>maxSamplerLodBias</name><comment>max absolute sampler level of detail bias</comment></member>
+ <member><type>float</type> <name>maxSamplerLodBias</name><comment>max absolute sampler LOD bias</comment></member>
<member><type>float</type> <name>maxSamplerAnisotropy</name><comment>max degree of sampler anisotropy</comment></member>
<member><type>uint32_t</type> <name>maxViewports</name><comment>max number of active viewports</comment></member>
<member><type>uint32_t</type> <name>maxViewportDimensions</name>[2]<comment>max viewport dimensions (x,y)</comment></member>
@@ -2624,6 +2625,22 @@ private version is maintained in the 1.0 branch of the member gitlab server.
<member><type>int</type> <name>format</name></member>
<member><type>int</type> <name>usage</name></member>
</type>
+ <type category="struct" name="VkShaderResourceUsageAMD" returnedonly="true">
+ <member><type>uint32_t</type> <name>numUsedVgprs</name></member>
+ <member><type>uint32_t</type> <name>numUsedSgprs</name></member>
+ <member><type>uint32_t</type> <name>ldsSizePerLocalWorkGroup</name></member>
+ <member><type>size_t</type> <name>ldsUsageSizeInBytes</name></member>
+ <member><type>size_t</type> <name>scratchMemUsageInBytes</name></member>
+ </type>
+ <type category="struct" name="VkShaderStatisticsInfoAMD" returnedonly="true">
+ <member><type>VkShaderStageFlags</type> <name>shaderStageMask</name></member>
+ <member><type>VkShaderResourceUsageAMD</type> <name>resourceUsage</name></member>
+ <member><type>uint32_t</type> <name>numPhysicalVgprs</name></member>
+ <member><type>uint32_t</type> <name>numPhysicalSgprs</name></member>
+ <member><type>uint32_t</type> <name>numAvailableVgprs</name></member>
+ <member><type>uint32_t</type> <name>numAvailableSgprs</name></member>
+ <member><type>uint32_t</type> <name>computeWorkGroupSize</name>[3]</member>
+ </type>
<type category="struct" name="VkDeviceQueueGlobalPriorityCreateInfoEXT" structextends="VkDeviceQueueCreateInfo">
<member values="VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT"><type>VkStructureType</type> <name>sType</name></member>
<member>const <type>void</type>* <name>pNext</name></member> <!-- Pointer to next structure -->
@@ -3655,6 +3672,11 @@ private version is maintained in the 1.0 branch of the member gitlab server.
<enums name="VkValidationCacheHeaderVersionEXT" type="enum">
<enum value="1" name="VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT"/>
</enums>
+ <enums name="VkShaderInfoTypeAMD" type="enum">
+ <enum value="0" name="VK_SHADER_INFO_TYPE_STATISTICS_AMD"/>
+ <enum value="1" name="VK_SHADER_INFO_TYPE_BINARY_AMD"/>
+ <enum value="2" name="VK_SHADER_INFO_TYPE_DISASSEMBLY_AMD"/>
+ </enums>
<enums name="VkQueueGlobalPriorityEXT" type="enum">
<enum value="128" name="VK_QUEUE_GLOBAL_PRIORITY_LOW"/>
<enum value="256" name="VK_QUEUE_GLOBAL_PRIORITY_MEDIUM"/>
@@ -5403,6 +5425,15 @@ private version is maintained in the 1.0 branch of the member gitlab server.
<param><type>VkImage</type> <name>image</name></param>
<param><type>int</type>* <name>pNativeFenceFd</name></param>
</command>
+ <command successcodes="VK_SUCCESS,VK_INCOMPLETE" errorcodes="VK_ERROR_FEATURE_NOT_PRESENT,VK_ERROR_OUT_OF_HOST_MEMORY">
+ <proto><type>VkResult</type> <name>vkGetShaderInfoAMD</name></proto>
+ <param><type>VkDevice</type> <name>device</name></param>
+ <param><type>VkPipeline</type> <name>pipeline</name></param>
+ <param><type>VkShaderStageFlagBits</type> <name>shaderStage</name></param>
+ <param><type>VkShaderInfoTypeAMD</type> <name>infoType</name></param>
+ <param optional="false,true"><type>size_t</type>* <name>pInfoSize</name></param>
+ <param optional="true" len="pInfoSize"><type>void</type>* <name>pInfo</name></param>
+ </command>
</commands>
<feature api="vulkan" name="VK_VERSION_1_0" number="1.0" comment="Vulkan core API interface definitions">
@@ -5778,7 +5809,7 @@ private version is maintained in the 1.0 branch of the member gitlab server.
</extension>
<extension name="VK_EXT_debug_report" number="12" type="instance" author="GOOGLE" contact="Courtney Goeltzenleuchter @courtney" supported="vulkan">
<require>
- <enum value="8" name="VK_EXT_DEBUG_REPORT_SPEC_VERSION"/>
+ <enum value="9" name="VK_EXT_DEBUG_REPORT_SPEC_VERSION"/>
<enum value="&quot;VK_EXT_debug_report&quot;" name="VK_EXT_DEBUG_REPORT_EXTENSION_NAME"/>
<enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT"/>
<enum offset="1" dir="-" extends="VkResult" name="VK_ERROR_VALIDATION_FAILED_EXT"/>
@@ -6001,10 +6032,14 @@ private version is maintained in the 1.0 branch of the member gitlab server.
<type name="VkTextureLODGatherFormatPropertiesAMD"/>
</require>
</extension>
- <extension name="VK_AMD_extension_43" number="43" author="AMD" contact="Daniel Rakos @aqnuep" supported="disabled">
+ <extension name="VK_AMD_shader_info" number="43" author="AMD" contact="Jaakko Konttinen @jaakko" supported="vulkan" type="device">
<require>
- <enum value="0" name="VK_AMD_EXTENSION_43_SPEC_VERSION"/>
- <enum value="&quot;VK_AMD_extension_43&quot;" name="VK_AMD_EXTENSION_43_EXTENSION_NAME"/>
+ <enum value="1" name="VK_AMD_SHADER_INFO_SPEC_VERSION"/>
+ <enum value="&quot;VK_AMD_shader_info&quot;" name="VK_AMD_SHADER_INFO_EXTENSION_NAME"/>
+ <type name="VkShaderInfoTypeAMD"/>
+ <type name="VkShaderResourceUsageAMD"/>
+ <type name="VkShaderStatisticsInfoAMD"/>
+ <command name="vkGetShaderInfoAMD"/>
</require>
</extension>
<extension name="VK_AMD_extension_44" number="44" author="AMD" contact="Daniel Rakos @aqnuep" supported="disabled">
@@ -7359,40 +7394,40 @@ private version is maintained in the 1.0 branch of the member gitlab server.
<enum value="&quot;VK_EXT_extension_170&quot;" name="VK_EXT_EXTENSION_170_EXTENSION_NAME"/>
</require>
</extension>
- <extension name="VK_QCOM_extension_171" number="171" author="QCOM" contact="Bill Licea-Kane @billl" supported="disabled">
+ <extension name="VK_QCOM_extension_171" number="171" author="QCOM" contact="Bill Licea-Kane @billl" supported="disabled">
<require>
<enum value="0" name="VK_QCOM_extension_171_SPEC_VERSION"/>
<enum value="&quot;VK_QCOM_extension_171&quot;" name="VK_QCOM_extension_171_EXTENSION_NAME"/>
</require>
- </extension>
- <extension name="VK_QCOM_extension_172" number="172" author="QCOM" contact="Bill Licea-Kane @billl" supported="disabled">
+ </extension>
+ <extension name="VK_QCOM_extension_172" number="172" author="QCOM" contact="Bill Licea-Kane @billl" supported="disabled">
<require>
<enum value="0" name="VK_QCOM_extension_172_SPEC_VERSION"/>
<enum value="&quot;VK_QCOM_extension_172&quot;" name="VK_QCOM_extension_172_EXTENSION_NAME"/>
</require>
- </extension>
- <extension name="VK_QCOM_extension_173" number="173" author="QCOM" contact="Bill Licea-Kane @billl" supported="disabled">
+ </extension>
+ <extension name="VK_QCOM_extension_173" number="173" author="QCOM" contact="Bill Licea-Kane @billl" supported="disabled">
<require>
<enum value="0" name="VK_QCOM_extension_173_SPEC_VERSION"/>
<enum value="&quot;VK_QCOM_extension_173&quot;" name="VK_QCOM_extension_173_EXTENSION_NAME"/>
</require>
- </extension>
- <extension name="VK_QCOM_extension_174" number="174" author="QCOM" contact="Bill Licea-Kane @billl" supported="disabled">
+ </extension>
+ <extension name="VK_QCOM_extension_174" number="174" author="QCOM" contact="Bill Licea-Kane @billl" supported="disabled">
<require>
<enum value="0" name="VK_QCOM_extension_174_SPEC_VERSION"/>
<enum value="&quot;VK_QCOM_extension_174&quot;" name="VK_QCOM_extension_174_EXTENSION_NAME"/>
</require>
- </extension>
- <extension name="VK_EXT_global_priority" number="175" type="device" author="EXT" contact="Andres Rodriguez @lostgoat" supported="vulkan">
- <require>
- <enum value="1" name="VK_EXT_GLOBAL_PRIORITY_SPEC_VERSION"/>
- <enum value="&quot;VK_EXT_global_priority&quot;" name="VK_EXT_GLOBAL_PRIORITY_EXTENSION_NAME"/>
- <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT"/>
- <enum offset="1" dir="-" extends="VkResult" name="VK_ERROR_NOT_PERMITTED_EXT"/>
- <type name="VkDeviceQueueGlobalPriorityCreateInfoEXT"/>
- <type name="VkQueueGlobalPriorityEXT"/>
- </require>
- </extension>
+ </extension>
+ <extension name="VK_EXT_global_priority" number="175" type="device" author="EXT" contact="Andres Rodriguez @lostgoat" supported="vulkan">
+ <require>
+ <enum value="1" name="VK_EXT_GLOBAL_PRIORITY_SPEC_VERSION"/>
+ <enum value="&quot;VK_EXT_global_priority&quot;" name="VK_EXT_GLOBAL_PRIORITY_EXTENSION_NAME"/>
+ <enum offset="0" extends="VkStructureType" name="VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT"/>
+ <enum offset="1" dir="-" extends="VkResult" name="VK_ERROR_NOT_PERMITTED_EXT"/>
+ <type name="VkDeviceQueueGlobalPriorityCreateInfoEXT"/>
+ <type name="VkQueueGlobalPriorityEXT"/>
+ </require>
+ </extension>
<extension name="VK_EXT_extension_176" number="176" author="EXT" contact="Neil Henning @neil_henning" supported="disabled">
<require>
<enum value="0" name="VK_KHR_EXTENSION_176_SPEC_VERSION"/>
@@ -7405,11 +7440,83 @@ private version is maintained in the 1.0 branch of the member gitlab server.
<enum value="&quot;VK_KHR_extension_177&quot;" name="VK_KHR_EXTENSION_177_EXTENSION_NAME"/>
</require>
</extension>
- <extension name="VK_EXT_extension_178" number="178" author="EXT" contact="Alexander Galazin @debater" supported="disabled">
+ <extension name="VK_EXT_extension_178" number="178" author="EXT" contact="Alexander Galazin @debater" supported="disabled">
<require>
<enum value="0" name="VK_KHR_EXTENSION_178_SPEC_VERSION"/>
<enum value="&quot;VK_KHR_extension_178&quot;" name="VK_KHR_EXTENSION_178_EXTENSION_NAME"/>
</require>
</extension>
+ <extension name="VK_AMD_extension_179" number="179" author="AMD" contact="Daniel Rakos @aqnuep" supported="disabled">
+ <require>
+ <enum value="0" name="VK_KHR_EXTENSION_179_SPEC_VERSION"/>
+ <enum value="&quot;VK_AMD_extension_179&quot;" name="VK_KHR_EXTENSION_179_EXTENSION_NAME"/>
+ </require>
+ </extension>
+ <extension name="VK_AMD_extension_180" number="180" author="AMD" contact="Daniel Rakos @aqnuep" supported="disabled">
+ <require>
+ <enum value="0" name="VK_KHR_EXTENSION_180_SPEC_VERSION"/>
+ <enum value="&quot;VK_AMD_extension_180&quot;" name="VK_KHR_EXTENSION_180_EXTENSION_NAME"/>
+ </require>
+ </extension>
+ <extension name="VK_AMD_extension_181" number="181" author="AMD" contact="Daniel Rakos @aqnuep" supported="disabled">
+ <require>
+ <enum value="0" name="VK_KHR_EXTENSION_181_SPEC_VERSION"/>
+ <enum value="&quot;VK_AMD_extension_181&quot;" name="VK_KHR_EXTENSION_181_EXTENSION_NAME"/>
+ </require>
+ </extension>
+ <extension name="VK_AMD_extension_182" number="182" author="AMD" contact="Daniel Rakos @aqnuep" supported="disabled">
+ <require>
+ <enum value="0" name="VK_KHR_EXTENSION_182_SPEC_VERSION"/>
+ <enum value="&quot;VK_AMD_extension_182&quot;" name="VK_KHR_EXTENSION_182_EXTENSION_NAME"/>
+ </require>
+ </extension>
+ <extension name="VK_AMD_extension_183" number="183" author="AMD" contact="Daniel Rakos @aqnuep" supported="disabled">
+ <require>
+ <enum value="0" name="VK_KHR_EXTENSION_183_SPEC_VERSION"/>
+ <enum value="&quot;VK_AMD_extension_183&quot;" name="VK_KHR_EXTENSION_183_EXTENSION_NAME"/>
+ </require>
+ </extension>
+ <extension name="VK_AMD_extension_184" number="184" author="AMD" contact="Daniel Rakos @aqnuep" supported="disabled">
+ <require>
+ <enum value="0" name="VK_KHR_EXTENSION_184_SPEC_VERSION"/>
+ <enum value="&quot;VK_AMD_extension_184&quot;" name="VK_KHR_EXTENSION_184_EXTENSION_NAME"/>
+ </require>
+ </extension>
+ <extension name="VK_AMD_extension_185" number="185" author="AMD" contact="Daniel Rakos @aqnuep" supported="disabled">
+ <require>
+ <enum value="0" name="VK_KHR_EXTENSION_185_SPEC_VERSION"/>
+ <enum value="&quot;VK_AMD_extension_185&quot;" name="VK_KHR_EXTENSION_185_EXTENSION_NAME"/>
+ </require>
+ </extension>
+ <extension name="VK_AMD_extension_186" number="186" author="AMD" contact="Daniel Rakos @aqnuep" supported="disabled">
+ <require>
+ <enum value="0" name="VK_KHR_EXTENSION_186_SPEC_VERSION"/>
+ <enum value="&quot;VK_AMD_extension_186&quot;" name="VK_KHR_EXTENSION_186_EXTENSION_NAME"/>
+ </require>
+ </extension>
+ <extension name="VK_AMD_extension_187" number="187" author="AMD" contact="Daniel Rakos @aqnuep" supported="disabled">
+ <require>
+ <enum value="0" name="VK_KHR_EXTENSION_187_SPEC_VERSION"/>
+ <enum value="&quot;VK_AMD_extension_187&quot;" name="VK_KHR_EXTENSION_187_EXTENSION_NAME"/>
+ </require>
+ </extension>
+ <extension name="VK_AMD_extension_188" number="188" author="AMD" contact="Daniel Rakos @aqnuep" supported="disabled">
+ <require>
+ <enum value="0" name="VK_KHR_EXTENSION_188_SPEC_VERSION"/>
+ <enum value="&quot;VK_AMD_extension_188&quot;" name="VK_KHR_EXTENSION_188_EXTENSION_NAME"/>
+ </require>
+ </extension>
+ <extension name="VK_AMD_extension_189" number="189" author="AMD" contact="Daniel Rakos @aqnuep" supported="disabled">
+ <require>
+ <enum value="0" name="VK_KHR_EXTENSION_189_SPEC_VERSION"/>
+ <enum value="&quot;VK_AMD_extension_189&quot;" name="VK_KHR_EXTENSION_189_EXTENSION_NAME"/>
+ </require>
+ </extension>
+ <extension name="VK_AMD_extension_190" number="190" author="AMD" contact="Daniel Rakos @aqnuep" supported="disabled">
+ <require>
+ <enum value="0" name="VK_KHR_EXTENSION_190_SPEC_VERSION"/>
+ <enum value="&quot;VK_AMD_extension_190&quot;" name="VK_KHR_EXTENSION_190_EXTENSION_NAME"/>
+ </require>
+ </extension>
</extensions>
</registry>
diff --git a/src/vulkan/vulkan.h b/src/vulkan/vulkan.h
index e1398c6..048866c 100644
--- a/src/vulkan/vulkan.h
+++ b/src/vulkan/vulkan.h
@@ -43,7 +43,7 @@ extern "C" {
#define VK_VERSION_MINOR(version) (((uint32_t)(version) >> 12) & 0x3ff)
#define VK_VERSION_PATCH(version) ((uint32_t)(version) & 0xfff)
// Version of this file
-#define VK_HEADER_VERSION 63
+#define VK_HEADER_VERSION 64
#define VK_NULL_HANDLE 0
@@ -5194,7 +5194,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkBindImageMemory2KHR(
#define VK_EXT_debug_report 1
VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDebugReportCallbackEXT)
-#define VK_EXT_DEBUG_REPORT_SPEC_VERSION 8
+#define VK_EXT_DEBUG_REPORT_SPEC_VERSION 9
#define VK_EXT_DEBUG_REPORT_EXTENSION_NAME "VK_EXT_debug_report"
#define VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT
#define VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_EXT VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT
@@ -5488,6 +5488,52 @@ typedef struct VkTextureLODGatherFormatPropertiesAMD {
+#define VK_AMD_shader_info 1
+#define VK_AMD_SHADER_INFO_SPEC_VERSION 1
+#define VK_AMD_SHADER_INFO_EXTENSION_NAME "VK_AMD_shader_info"
+
+
+typedef enum VkShaderInfoTypeAMD {
+ VK_SHADER_INFO_TYPE_STATISTICS_AMD = 0,
+ VK_SHADER_INFO_TYPE_BINARY_AMD = 1,
+ VK_SHADER_INFO_TYPE_DISASSEMBLY_AMD = 2,
+ VK_SHADER_INFO_TYPE_BEGIN_RANGE_AMD = VK_SHADER_INFO_TYPE_STATISTICS_AMD,
+ VK_SHADER_INFO_TYPE_END_RANGE_AMD = VK_SHADER_INFO_TYPE_DISASSEMBLY_AMD,
+ VK_SHADER_INFO_TYPE_RANGE_SIZE_AMD = (VK_SHADER_INFO_TYPE_DISASSEMBLY_AMD - VK_SHADER_INFO_TYPE_STATISTICS_AMD + 1),
+ VK_SHADER_INFO_TYPE_MAX_ENUM_AMD = 0x7FFFFFFF
+} VkShaderInfoTypeAMD;
+
+typedef struct VkShaderResourceUsageAMD {
+ uint32_t numUsedVgprs;
+ uint32_t numUsedSgprs;
+ uint32_t ldsSizePerLocalWorkGroup;
+ size_t ldsUsageSizeInBytes;
+ size_t scratchMemUsageInBytes;
+} VkShaderResourceUsageAMD;
+
+typedef struct VkShaderStatisticsInfoAMD {
+ VkShaderStageFlags shaderStageMask;
+ VkShaderResourceUsageAMD resourceUsage;
+ uint32_t numPhysicalVgprs;
+ uint32_t numPhysicalSgprs;
+ uint32_t numAvailableVgprs;
+ uint32_t numAvailableSgprs;
+ uint32_t computeWorkGroupSize[3];
+} VkShaderStatisticsInfoAMD;
+
+
+typedef VkResult (VKAPI_PTR *PFN_vkGetShaderInfoAMD)(VkDevice device, VkPipeline pipeline, VkShaderStageFlagBits shaderStage, VkShaderInfoTypeAMD infoType, size_t* pInfoSize, void* pInfo);
+
+#ifndef VK_NO_PROTOTYPES
+VKAPI_ATTR VkResult VKAPI_CALL vkGetShaderInfoAMD(
+ VkDevice device,
+ VkPipeline pipeline,
+ VkShaderStageFlagBits shaderStage,
+ VkShaderInfoTypeAMD infoType,
+ size_t* pInfoSize,
+ void* pInfo);
+#endif
+
#define VK_AMD_shader_image_load_store_lod 1
#define VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_SPEC_VERSION 1
#define VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_EXTENSION_NAME "VK_AMD_shader_image_load_store_lod"