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:
parent
190c7c3d38
commit
5436521608
|
@ -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"`)
|
||||
|
||||
|
|
|
@ -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!
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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:
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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[]
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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[]
|
||||
--
|
|
@ -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.
|
||||
|
|
|
@ -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
|
||||
****
|
||||
|
|
|
@ -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>>.
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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]]
|
||||
|
|
|
@ -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).
|
||||
|
|
|
@ -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[]
|
||||
|
|
|
@ -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[]
|
||||
|
||||
****
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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.
|
||||
|
||||
|
|
|
@ -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>>.
|
||||
|
||||
|
|
|
@ -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[]
|
||||
--
|
||||
|
|
|
@ -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]
|
||||
++++++++++++++++++++++++
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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 $@
|
||||
|
|
|
@ -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
|
||||
#
|
||||
|
|
|
@ -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)
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
----
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 */
|
||||
|
|
|
@ -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'
|
||||
|
||||
|
|
159
src/spec/vk.xml
159
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=""VK_EXT_debug_report"" 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=""VK_AMD_extension_43"" name="VK_AMD_EXTENSION_43_EXTENSION_NAME"/>
|
||||
<enum value="1" name="VK_AMD_SHADER_INFO_SPEC_VERSION"/>
|
||||
<enum value=""VK_AMD_shader_info"" 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=""VK_EXT_extension_170"" 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=""VK_QCOM_extension_171"" 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=""VK_QCOM_extension_172"" 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=""VK_QCOM_extension_173"" 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=""VK_QCOM_extension_174"" 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=""VK_EXT_global_priority"" 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=""VK_EXT_global_priority"" 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=""VK_KHR_extension_177"" 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=""VK_KHR_extension_178"" 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=""VK_AMD_extension_179"" 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=""VK_AMD_extension_180"" 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=""VK_AMD_extension_181"" 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=""VK_AMD_extension_182"" 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=""VK_AMD_extension_183"" 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=""VK_AMD_extension_184"" 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=""VK_AMD_extension_185"" 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=""VK_AMD_extension_186"" 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=""VK_AMD_extension_187"" 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=""VK_AMD_extension_188"" 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=""VK_AMD_extension_189"" 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=""VK_AMD_extension_190"" name="VK_KHR_EXTENSION_190_EXTENSION_NAME"/>
|
||||
</require>
|
||||
</extension>
|
||||
</extensions>
|
||||
</registry>
|
||||
|
|
|
@ -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"
|
||||
|
|
Loading…
Reference in New Issue