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`
This commit is contained in:
Jon Leech 2017-10-20 17:18:37 -07:00
parent 190c7c3d38
commit 5436521608
45 changed files with 641 additions and 151 deletions

View File

@ -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"`)

View File

@ -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!

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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:

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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)

View File

@ -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

View File

@ -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[]

View File

@ -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.

View File

@ -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[]
--

View File

@ -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.

View File

@ -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
****

View File

@ -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>>.

View File

@ -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

View File

@ -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

View File

@ -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]]

View File

@ -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).

View File

@ -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[]

View File

@ -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[]
****

View File

@ -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

View File

@ -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.

View File

@ -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.

View File

@ -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>>.

View File

@ -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[]
--

View File

@ -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]
++++++++++++++++++++++++

View File

@ -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:

View File

@ -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 $@

View File

@ -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
#

View File

@ -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)

View File

@ -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

View File

@ -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
----

View File

@ -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

View File

@ -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

View File

@ -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 */

View File

@ -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'

View File

@ -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>

View File

@ -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"