Change log for May 13, 2016 Vulkan 1.0.13 spec update:
* Bump API patch number and header version number to 13 for this update. Github Issues: * Improve the description of ename:VK_PRESENT_MODE_FIFO_RELAXED_KHR in the VK_KHR_surface extension (public issue 174). * Clarify use of etext:*_SIMULTANEOUS_USE_BIT for secondary command buffers (public issue 182). * Fix typos in VK_KHR_wayland_surface extension where code:wl_device was used instead of code:wl_display (public issue 193). * Replaced {apiname} with ``Vulkan'' in XML validity statements (public issue 199). * Fix dead links for WSI handle types (public issue 200). *** N.b. this needs to be done in WSI branches as well *** * Use "signaled" instead of "signalled" spelling everywhere (public issue 201). *** N.b. this needs to be done in WSI branches as well *** * Move readme.pdf target directory for XML schema documentation into the target generation directory, instead of leaving it checked into the spec source tree (public issue 203). *** N.b. need to add generated PDF to registry index/1.0 page * Fix duplicate 'which which' typo in description of elink:VkCommandPoolResetFlagBits (public issue 204). * Move the <<Programmable Primitive Shading>> section up one level, out of the <<drawing-primitive-topologies,Primitive Topologies>> section (public issue 209). Internal Issues: * Clarify in the <<pipelines-cache,Pipeline Cache>> section that implementations should not manage the size of pipeline cache (internal issue 192). * Deprecate the concept of device layers and associated commands (internal issue 255). * Remove ename:VK_INCOMPLETE from the list of possible result codes of flink:vkGetPhysicalDeviceSurfaceCapabilitiesKHR (internal issue 314). * Add missing std140/std430 rule: the base alignment of a member following a structure is a multiple of the structure's base alignment (internal issue 321). * Fixes naming of the single elink:VkColorSpaceKHR enum from ename:VK_COLORSPACE_SRGB_NONLINEAR_KHR to ename:VK_COLOR_SPACE_SRGB_NONLINEAR_KHR in XML/header and the VK_KHR_swapchain and VK_KHR_surface extensions to match the style of the typename (space and color are two words, not one) (internal issue 322). * Make it clear that code:LocalInvocationID should only be applied to an input variable and normalize the language describing code:LocalInvocationID to the language for other compute shader variables in the <<interfaces-builtin-variables,Built-in Variables>> section, and add normative language (internal issue 323). * Clarify in the <<fundamentals-returncodes,Return Codes>> section that the result pointer may be modified for specific commands, even if a runtime error is returned (internal issue 324).
This commit is contained in:
parent
648049f625
commit
2656f45933
|
@ -580,3 +580,63 @@ Other Commits:
|
|||
* Replace the {apiname} macro with hardcoded "Vulkan", now that we've
|
||||
committed to that name.
|
||||
* Add the VK_AMD_rasterization_order extension to vk.xml.
|
||||
|
||||
-----------------------------------------------------
|
||||
|
||||
Change log for May 13, 2016 Vulkan 1.0.13 spec update:
|
||||
|
||||
* Bump API patch number and header version number to 13 for this
|
||||
update.
|
||||
|
||||
Github Issues:
|
||||
|
||||
* Improve the description of ename:VK_PRESENT_MODE_FIFO_RELAXED_KHR in the
|
||||
VK_KHR_surface extension (public issue 174).
|
||||
* Clarify use of etext:*_SIMULTANEOUS_USE_BIT for secondary command
|
||||
buffers (public issue 182).
|
||||
* Fix typos in VK_KHR_wayland_surface extension where code:wl_device was
|
||||
used instead of code:wl_display (public issue 193).
|
||||
* Replaced {apiname} with ``Vulkan'' in XML validity statements (public
|
||||
issue 199).
|
||||
* Fix dead links for WSI handle types (public issue 200).
|
||||
* Use "signaled" instead of "signalled" spelling everywhere (public issue
|
||||
201).
|
||||
* Move readme.pdf target directory for XML schema documentation into the
|
||||
target generation directory, instead of leaving it checked into the spec
|
||||
source tree (public issue 203).
|
||||
* Fix duplicate 'which which' typo in description of
|
||||
elink:VkCommandPoolResetFlagBits (public issue 204).
|
||||
* Move the <<Programmable Primitive Shading>> section up one level, out of
|
||||
the <<drawing-primitive-topologies,Primitive Topologies>> section
|
||||
(public issue 209).
|
||||
|
||||
Internal Issues:
|
||||
|
||||
* Clarify in the <<pipelines-cache,Pipeline Cache>> section that
|
||||
implementations should not manage the size of pipeline cache (internal
|
||||
issue 192).
|
||||
* Deprecate the concept of device layers and associated commands (internal
|
||||
issue 255).
|
||||
* Remove ename:VK_INCOMPLETE from the list of possible result codes of
|
||||
flink:vkGetPhysicalDeviceSurfaceCapabilitiesKHR (internal issue 314).
|
||||
* Add missing std140/std430 rule: the base alignment of a member following
|
||||
a structure is a multiple of the structure's base alignment (internal
|
||||
issue 321).
|
||||
* Fixes naming of the single elink:VkColorSpaceKHR enum from
|
||||
ename:VK_COLORSPACE_SRGB_NONLINEAR_KHR to
|
||||
ename:VK_COLOR_SPACE_SRGB_NONLINEAR_KHR in XML/header and the
|
||||
VK_KHR_swapchain and VK_KHR_surface extensions to match the style of the
|
||||
typename (space and color are two words, not one) (internal issue 322).
|
||||
* Make it clear that code:LocalInvocationID should only be applied to an
|
||||
input variable and normalize the language describing
|
||||
code:LocalInvocationID to the language for other compute shader
|
||||
variables in the <<interfaces-builtin-variables,Built-in Variables>>
|
||||
section, and add normative language (internal issue 323).
|
||||
* Clarify in the <<fundamentals-returncodes,Return Codes>> section that
|
||||
the result pointer may be modified for specific commands, even if a
|
||||
runtime error is returned (internal issue 324).
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -43,7 +43,7 @@ ECHO:=echo
|
|||
# XHTMLDIR - 'xhtml' target
|
||||
# PDFDIR - 'pdf' target
|
||||
# CHECKDIR - 'allchecks' target
|
||||
OUTDIR :=../../../out/1.0
|
||||
OUTDIR := ../../../out/1.0
|
||||
HTMLDIR := $(OUTDIR)/html
|
||||
XHTMLDIR := $(OUTDIR)/xhtml
|
||||
PDFDIR := $(OUTDIR)/pdf
|
||||
|
@ -125,7 +125,7 @@ INCLUDES := $(wildcard protos/*.txt structs/*.txt flags/*.txt enums/*.txt funcpo
|
|||
COMMONDOCS := $(CHAPTERS) $(INCLUDES)
|
||||
# A generated included file with the spec version, date, and git commit
|
||||
SPECVERSION = specversion.txt
|
||||
SPECREVISION = 1.0.12
|
||||
SPECREVISION = 1.0.13
|
||||
SPECREMARK =
|
||||
|
||||
# Spec targets
|
||||
|
|
|
@ -245,7 +245,7 @@ Explicitly-Enabled Layer::
|
|||
list in flink:vkCreateInstance or flink:vkCreateDevice.
|
||||
|
||||
Event::
|
||||
A synchronization primitive that is signalled when execution of previous
|
||||
A synchronization primitive that is signaled when execution of previous
|
||||
commands complete through a specified set of pipeline stages. Events can
|
||||
be waited on by the device and polled by the host. Represented by a
|
||||
sname:VkEvent object.
|
||||
|
|
|
@ -33,8 +33,7 @@ git checkout master
|
|||
|
||||
echo "**** AUTOGENERATING HEADERS AND SPEC INCLUDE FILES ****"
|
||||
cd $xml
|
||||
make clobber
|
||||
make full_install
|
||||
make OUTDIR=$outdir clobber full_install
|
||||
|
||||
echo "**** CLEANING SPEC ****"
|
||||
cd $spec
|
||||
|
|
|
@ -136,7 +136,7 @@ command buffers allocated from the command pool back to the command pool.
|
|||
All command buffers that have been allocated from the command pool are put
|
||||
in the initial state.
|
||||
|
||||
pname:flags is a bitmask controlling the operation. Bits which which can: be
|
||||
pname:flags is a bitmask controlling the operation. Bits which can: be
|
||||
set include:
|
||||
|
||||
include::../enums/VkCommandPoolResetFlagBits.txt[]
|
||||
|
@ -336,7 +336,8 @@ fname:vkCmdExecuteCommands) until the final time that primary buffer's
|
|||
submission to a queue completes. If, after the primary buffer completes, the
|
||||
secondary command buffer is recorded to execute on a different primary
|
||||
buffer, the first primary buffer mustnot: be resubmitted until after it is
|
||||
reset with flink:vkResetCommandBuffer.
|
||||
reset with flink:vkResetCommandBuffer unless the secondary command buffer
|
||||
was recorded with ename:VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT.
|
||||
|
||||
If ename:VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT is not set on a
|
||||
secondary command buffer, that command buffer mustnot: be used more than
|
||||
|
@ -428,7 +429,7 @@ Each call to fname:vkQueueSubmit submits zero or more _batches_ of work to
|
|||
the queue for execution. pname:submitCount is used to specify the number of
|
||||
batches to submit. Each batch includes zero or more semaphores to wait upon,
|
||||
and a corresponding set of stages that will wait for the semaphore to be
|
||||
signalled before executing any work, followed by a number of command buffers
|
||||
signaled before executing any work, followed by a number of command buffers
|
||||
that will be executed, and finally, zero or more semaphores that will be
|
||||
signaled after command buffer execution completes. Each batch is represented
|
||||
as an instance of the slink:VkSubmitInfo structure stored in an array, the
|
||||
|
|
|
@ -330,11 +330,9 @@ include::../structs/VkDeviceCreateInfo.txt[]
|
|||
requested to be created along with the logical device. Refer to the
|
||||
<<devsandqueues-queue-creation,Queue Creation>> section below for
|
||||
further details.
|
||||
* pname:enabledLayerCount is the number of device layers to enable.
|
||||
* pname:ppEnabledLayerNames is a pointer to an array of
|
||||
pname:enabledLayerCount null-terminated UTF-8 strings containing the
|
||||
names of layers to enable for the created device. See the
|
||||
<<extended-functionality-layers,Layers>> section for further details.
|
||||
* pname:enabledLayerCount is deprecated and ignored.
|
||||
* pname:ppEnabledLayerNames is deprecated and ignored. See
|
||||
<<extended-functionality-device-layer-deprecation,Device Layer Deprecation>>.
|
||||
* pname:enabledExtensionCount is the number of device extensions to
|
||||
enable.
|
||||
* pname:ppEnabledExtensionNames is a pointer to an array of
|
||||
|
|
|
@ -340,7 +340,7 @@ The order of vertices in such a primitive is significant during
|
|||
<<shaders-fragment,fragment shading>>.
|
||||
|
||||
|
||||
=== Programmable Primitive Shading
|
||||
== Programmable Primitive Shading
|
||||
|
||||
Once primitives are assembled, they proceed to the vertex shading stage of
|
||||
the pipeline. If the draw includes multiple instances, then the set of
|
||||
|
|
|
@ -7,17 +7,23 @@
|
|||
Additional functionality may: be provided by layers or extensions. A layer
|
||||
cannot: add or modify Vulkan commands, while an extension may: do so.
|
||||
|
||||
There are two kinds of layers and extensions, instance and device. Instance
|
||||
layers and extensions are general purpose and do not depend on a specific
|
||||
device. Device layers and extensions operate on specific devices, and
|
||||
require a valid sname:VkDevice to be used. Instance extensions usually
|
||||
affect the operation of the API as a whole, whereas device layers and
|
||||
extensions tend to be hardware-specific. Examples of these might be:
|
||||
The set of layers to enable is specified when creating an instance, and those
|
||||
layers are able to intercept any Vulkan command dispatched to that instance
|
||||
or any of its child objects.
|
||||
|
||||
* Whole API validation is an example of a good instance layer.
|
||||
Extensions can operate at either the instance or device scope. Enabled instance
|
||||
extensions are able to affect the operation of the instance and any of its
|
||||
child objects, while device extensions may: only be available on a subset of
|
||||
physical devices, must be individually enabled per-device, and only affect the
|
||||
operation of the devices where they are enabled.
|
||||
|
||||
Examples of these might be:
|
||||
|
||||
* Whole API validation is an example of a layer.
|
||||
* Debug capabilities might make a good instance extension.
|
||||
* A layer that provides hardware-specific performance telemetry and
|
||||
analysis could be a device layer.
|
||||
analysis could be a layer that is only active for devices created from
|
||||
compatible physical devices.
|
||||
* Functions to allow an application to use additional hardware features
|
||||
beyond the core would be a good candidate for a device extension.
|
||||
|
||||
|
@ -32,7 +38,7 @@ allowed ranges. Instead, a validation layer would do those checks and flag
|
|||
issues. This avoids a performance penalty during production use of the
|
||||
application because those layers would not be enabled in production.
|
||||
|
||||
To query the available instance layers, call:
|
||||
To query the available layers, call:
|
||||
|
||||
include::../protos/vkEnumerateInstanceLayerProperties.txt[]
|
||||
|
||||
|
@ -43,38 +49,16 @@ include::../protos/vkEnumerateInstanceLayerProperties.txt[]
|
|||
|
||||
include::../validity/protos/vkEnumerateInstanceLayerProperties.txt[]
|
||||
|
||||
To enable a instance layer, the name of the layer should be added to the
|
||||
pname:ppEnabledLayerNames member of slink:VkInstanceCreateInfo when creating
|
||||
a sname:VkInstance.
|
||||
|
||||
To query the layers available to a given physical device, call:
|
||||
|
||||
include::../protos/vkEnumerateDeviceLayerProperties.txt[]
|
||||
|
||||
* pname:physicalDevice is the physical device that will be queried.
|
||||
* pname:pPropertyCount is a pointer to an integer related to the number of
|
||||
layer properties available or queried, as described below.
|
||||
* pname:pProperties is either `NULL` or a pointer to an array of
|
||||
slink:VkLayerProperties structures.
|
||||
|
||||
include::../validity/protos/vkEnumerateDeviceLayerProperties.txt[]
|
||||
|
||||
To enable a device layer, the name of the layer should be added to the
|
||||
pname:ppEnabledLayerNames member of slink:VkDeviceCreateInfo when creating
|
||||
a sname:VkDevice.
|
||||
|
||||
For both flink:vkEnumerateInstanceLayerProperties and
|
||||
flink:vkEnumerateDeviceLayerProperties, if pname:pProperties is `NULL`, then
|
||||
the number of layer properties available is returned in pname:pPropertyCount.
|
||||
Otherwise, pname:pPropertyCount must: point to a variable set by the user to
|
||||
the number of elements in the pname:pProperties array, and on return the
|
||||
variable is overwritten with the number of structures actually written to
|
||||
pname:pProperties. If pname:pPropertyCount is less than the
|
||||
number of layer properties available, at most pname:pPropertyCount
|
||||
structures will be written. If pname:pPropertyCount is smaller than the
|
||||
number of layers available, ename:VK_INCOMPLETE will be returned instead of
|
||||
ename:VK_SUCCESS, to indicate that not all the available layer properties
|
||||
were returned.
|
||||
If pname:pProperties is `NULL`, then the number of layer properties available
|
||||
is returned in pname:pPropertyCount. Otherwise, pname:pPropertyCount must:
|
||||
point to a variable set by the user to the number of elements in the
|
||||
pname:pProperties array, and on return the variable is overwritten with the
|
||||
number of structures actually written to pname:pProperties. If
|
||||
pname:pPropertyCount is less than the number of layer properties available, at
|
||||
most pname:pPropertyCount structures will be written. If pname:pPropertyCount
|
||||
is smaller than the number of layers available, ename:VK_INCOMPLETE will be
|
||||
returned instead of ename:VK_SUCCESS, to indicate that not all the available
|
||||
layer properties were returned.
|
||||
|
||||
The sname:VkLayerProperties structure is defined as:
|
||||
|
||||
|
@ -82,9 +66,8 @@ include::../structs/VkLayerProperties.txt[]
|
|||
|
||||
* pname:layerName is a null-terminated UTF-8 string specifying the name of
|
||||
the layer. Use this name in the pname:ppEnabledLayerNames array passed
|
||||
in the slink:VkInstanceCreateInfo and slink:VkDeviceCreateInfo
|
||||
structures passed to flink:vkCreateInstance and flink:vkCreateDevice,
|
||||
respectively, to enable this layer for an instance or device.
|
||||
in the slink:VkInstanceCreateInfo structure to enable this layer for an
|
||||
instance.
|
||||
* pname:specVersion is the Vulkan version the layer was written to,
|
||||
encoded as described in the <<fundamentals-versionnum,API Version
|
||||
Numbers and Semantics>> section.
|
||||
|
@ -95,16 +78,82 @@ include::../structs/VkLayerProperties.txt[]
|
|||
|
||||
include::../validity/structs/VkLayerProperties.txt[]
|
||||
|
||||
To enable a layer, the name of the layer should be added to the
|
||||
pname:ppEnabledLayerNames member of slink:VkInstanceCreateInfo when creating
|
||||
a sname:VkInstance.
|
||||
|
||||
Loader implementations may: provide mechanisms outside the Vulkan API for
|
||||
enabling specific layers. Layers enabled through such a mechanism are
|
||||
_implicitly enabled_, while layers enabled by including the layer name in
|
||||
the pname:ppEnabledLayerNames member of slink:VkDeviceCreateInfo are
|
||||
the pname:ppEnabledLayerNames member of slink:VkInstanceCreateInfo are
|
||||
_explicitly enabled_. Except where otherwise specified, implicitly enabled
|
||||
and explicitly enabled layers differ only in the way they are enabled.
|
||||
Explicitly enabling a layer that is implicitly enabled has no additional
|
||||
effect.
|
||||
|
||||
|
||||
[[extended-functionality-device-layer-deprecation]]
|
||||
=== Device Layer Deprecation
|
||||
|
||||
Previous versions of this specification distinguished between instance and
|
||||
device layers. Instance layers were only able to intercept commands that
|
||||
operate on sname:VkInstance and sname:VkPhysicalDevice, except they were not
|
||||
able to intercept flink:vkCreateDevice. Device layers were enabled for
|
||||
individual devices when they were created, and could only intercept commands
|
||||
operating on that device or its child objects.
|
||||
|
||||
Device-only layers are now deprecated, and this specification no longer
|
||||
distinguishes between instance and device layers. Layers are enabled during
|
||||
instance creation, and are able to intercept all commands operating on that
|
||||
instance or any of its child objects. At the time of deprecation there were no
|
||||
known device-only layers and no compelling reason to create one.
|
||||
|
||||
In order to maintain compatibility with implementations released prior to
|
||||
device-layer deprecation, applications should: still enumerate and enable
|
||||
device layers. The behavior of fname:vkEnumerateDeviceLayerProperties and
|
||||
valid usage of the pname:ppEnabledLayerNames member of sname:VkDeviceCreateInfo
|
||||
maximizes compatibility with applications written to work with the previous
|
||||
requirements.
|
||||
|
||||
Device layers can: be enumerated by calling:
|
||||
|
||||
include::../protos/vkEnumerateDeviceLayerProperties.txt[]
|
||||
|
||||
* pname:pPropertyCount is a pointer to an integer related to the number of
|
||||
layer properties available or queried.
|
||||
* pname:pProperties is either `NULL` or a pointer to an array of
|
||||
slink:VkLayerProperties structures.
|
||||
|
||||
include::../validity/protos/vkEnumerateDeviceLayerProperties.txt[]
|
||||
|
||||
If pname:pProperties is `NULL`, then the number of layer properties available
|
||||
is returned in pname:pPropertyCount. Otherwise, pname:pPropertyCount must:
|
||||
point to a variable set by the user to the number of elements in the
|
||||
pname:pProperties array, and on return the variable is overwritten with the
|
||||
number of structures actually written to pname:pProperties. If
|
||||
pname:pPropertyCount is less than the number of layer properties available, at
|
||||
most pname:pPropertyCount structures will be written. If pname:pPropertyCount
|
||||
is smaller than the number of layers available, ename:VK_INCOMPLETE will be
|
||||
returned instead of ename:VK_SUCCESS, to indicate that not all the available
|
||||
layer properties were returned.
|
||||
|
||||
The list of layers enumerated by fname:vkEnumerateDeviceLayerProperties must:
|
||||
be exactly the sequence of layers enabled for the instance. The members of
|
||||
sname:VkLayerProperties for each enumerated layer must: be the same as the
|
||||
properties when the layer was enumerated by
|
||||
fname:vkEnumerateInstanceLayerProperties.
|
||||
|
||||
The pname:ppEnabledLayerNames and pname:enabledLayerCount members of
|
||||
sname:VkDeviceCreateInfo are deprecated and their values must: be ignored by
|
||||
implementations. However, for compatibility, only an empty list of layers or a
|
||||
list that exactly matches the sequence enabled at instance creation time are
|
||||
valid, and validation layers should: issue diagnostics for other cases.
|
||||
|
||||
Regardless of the enabled layer list provided in sname:VkDeviceCreateInfo, the
|
||||
sequence of layers active for a device will be exactly the sequence of layers
|
||||
enabled when the parent instance was created.
|
||||
|
||||
|
||||
[[extended-functionality-extensions]]
|
||||
== Extensions
|
||||
|
||||
|
@ -123,7 +172,7 @@ To query the available instance extensions, call:
|
|||
include::../protos/vkEnumerateInstanceExtensionProperties.txt[]
|
||||
|
||||
* pname:pLayerName is either `NULL` or a pointer to a null-terminated
|
||||
UTF-8 string naming the instance layer to retrieve extensions from.
|
||||
UTF-8 string naming the layer to retrieve extensions from.
|
||||
* pname:pPropertyCount is a pointer to an integer related to the number of
|
||||
extension properties available or queried, as described below.
|
||||
* pname:pProperties is either `NULL` or a pointer to an array of
|
||||
|
@ -136,7 +185,7 @@ implementation or by implicitly enabled layers are returned.
|
|||
When pname:pLayerName is the name of a layer, the instance extensions
|
||||
provided by that layer are returned.
|
||||
|
||||
To enable a instance extension, the name of the extension should be added to
|
||||
To enable an instance extension, the name of the extension should be added to
|
||||
the pname:ppEnabledExtensionNames member of slink:VkInstanceCreateInfo when
|
||||
creating a sname:VkInstance.
|
||||
|
||||
|
@ -146,7 +195,7 @@ include::../protos/vkEnumerateDeviceExtensionProperties.txt[]
|
|||
|
||||
* pname:physicalDevice is the physical device that will be queried.
|
||||
* pname:pLayerName is either `NULL` or a pointer to a null-terminated
|
||||
UTF-8 string naming the device layer to retrieve extensions from.
|
||||
UTF-8 string naming the layer to retrieve extensions from.
|
||||
* pname:pPropertyCount is a pointer to an integer related to the number of
|
||||
extension properties available or queried, as described below.
|
||||
* pname:pProperties is either `NULL` or a pointer to an array of
|
||||
|
@ -159,10 +208,6 @@ implementation or by implicitly enabled layers are returned.
|
|||
When pname:pLayerName is the name of a layer, the device extensions
|
||||
provided by that layer are returned.
|
||||
|
||||
To enable a device layer, the name of the layer should be added to the
|
||||
pname:ppEnabledExtensionNames member of slink:VkDeviceCreateInfo when
|
||||
creating a sname:VkDevice.
|
||||
|
||||
For both flink:vkEnumerateInstanceExtensionProperties and
|
||||
flink:vkEnumerateDeviceExtensionProperties, if pname:pProperties is `NULL`,
|
||||
then the number of extensions properties available is returned in
|
||||
|
|
|
@ -691,7 +691,7 @@ include::../enums/VkResult.txt[]
|
|||
A requested format is not supported on this device.
|
||||
|
||||
If a command returns a run time error, it will leave any result pointers
|
||||
unmodified.
|
||||
unmodified, unless other behavior is explicitly defined in the specification.
|
||||
|
||||
Out of memory errors do not damage any currently existing Vulkan objects.
|
||||
Objects that have already been successfully created can: still be used by
|
||||
|
|
|
@ -643,6 +643,11 @@ out according to the following rules.
|
|||
+
|
||||
* Any code:ArrayStride or code:MatrixStride decoration must: be an integer
|
||||
multiple of the base alignment of the array or matrix from above.
|
||||
+
|
||||
* The code:Offset Decoration of a member immediately following a structure or
|
||||
an array must: be greater than or equal to the next multiple of the base
|
||||
alignment of that structure or array.
|
||||
|
||||
|
||||
[NOTE]
|
||||
.Note
|
||||
|
@ -742,7 +747,7 @@ The z component of code:FragCoord is the interpolated depth value of the
|
|||
primitive, and the w component is the interpolated
|
||||
latexmath:[$\frac{1}{w}$].
|
||||
+
|
||||
The code:FragCoord decoration is only supported in fragment shaders. The
|
||||
The code:FragCoord decoration must: be used only within fragment shaders. The
|
||||
code:Centroid interpolation decoration is ignored on code:FragCoord.
|
||||
+
|
||||
code:FragCoord must: be declared as a four-component vector of 32-bit
|
||||
|
@ -760,7 +765,7 @@ is an execution path through the shader that does not set code:FragDepth,
|
|||
then the fragment's depth value is undefined for executions of the shader
|
||||
that take that path.
|
||||
+
|
||||
The code:FragDepth decoration is only supported in fragment shaders.
|
||||
The code:FragDepth decoration must: be used only within fragment shaders.
|
||||
+
|
||||
code:FragDepth must: be declared as a scalar 32-bit floating-point value.
|
||||
|
||||
|
@ -797,7 +802,8 @@ workgroup. The value in this variable is equal to the index of the local
|
|||
workgroup multiplied by the size of the local workgroup plus
|
||||
code:LocalInvocationID.
|
||||
+
|
||||
The code:GlobalInvocationID decoration is only supported in compute shaders.
|
||||
The code:GlobalInvocationID decoration must: be used only within compute
|
||||
shaders.
|
||||
+
|
||||
code:GlobalInvocationID must: be declared as a three-component vector of
|
||||
32-bit integers.
|
||||
|
@ -810,7 +816,8 @@ the shader that is produced to satisfy internal requirements such as the
|
|||
generation of derivatives.
|
||||
+
|
||||
--
|
||||
The code:HelperInvocation decoration is only supported in fragment shaders.
|
||||
The code:HelperInvocation decoration must: be used only within fragment
|
||||
shaders.
|
||||
|
||||
code:HelperInvocation must: be declared as a scalar 32-bit integer.
|
||||
|
||||
|
@ -877,26 +884,34 @@ vertices of a given primitive. When used in a fragment shader, an input
|
|||
variable decorated with code:Layer contains the layer index of the primitive
|
||||
that the fragment invocation belongs to.
|
||||
+
|
||||
The code:Layer decoration is only supported in geometry and fragment
|
||||
The code:Layer decoration must: be used only within geometry and fragment
|
||||
shaders.
|
||||
+
|
||||
code:Layer must: be declared as a scalar 32-bit integer.
|
||||
|
||||
code:LocalInvocationID::
|
||||
|
||||
This variable contains the location of the current compute shader invocation
|
||||
within the local workgroup. The range of possible values for each component
|
||||
of LocalInvocationID range from zero through the size of the workgroup in that
|
||||
dimension minus one. If the size of the workgroup in a particular dimension is
|
||||
one, then LocalInvocationID in that dimension will be zero. That is, if the
|
||||
workgroup is effectively two-dimensional, then code:LocalInvocationID.z will
|
||||
be zero, and if the workgroup is one-dimensional, then both
|
||||
The code:LocalInvocationID decoration can: be applied to a code:uvec3 input
|
||||
variable in a compute shader, in which case it will contain the location of the
|
||||
current compute shader invocation within the local workgroup. The possible
|
||||
values for each component of code:LocalInvocationID range from zero through to
|
||||
the size of the workgroup in that dimension minus one.
|
||||
+
|
||||
The code:LocalInvocationID decoration must: be used only within compute
|
||||
shaders.
|
||||
+
|
||||
code:LocalInvocationID must: be declared as a three-component vector of 32-bit
|
||||
integers.
|
||||
|
||||
[NOTE]
|
||||
.Note
|
||||
====
|
||||
If the size of the workgroup in a particular dimension is one, then the
|
||||
code:LocalInvocationID in that dimension will be zero. If the workgroup is
|
||||
effectively two-dimensional, then code:LocalInvocationID.z will be zero.
|
||||
If the workgroup is effectively one-dimensional, then both
|
||||
code:LocalInvocationID.y and code:LocalInvocationID.z will be zero.
|
||||
+
|
||||
The code:LocalInvocationID decoration is only supported in compute shaders.
|
||||
+
|
||||
code:LocalInvocationID must: be declared as a three-component vector of
|
||||
32-bit integers.
|
||||
====
|
||||
|
||||
code:NumWorkGroups::
|
||||
|
||||
|
@ -907,7 +922,7 @@ to. It reflects the values passed to a call to flink:vkCmdDispatch or
|
|||
through the structure consumed by the execution of
|
||||
flink:vkCmdDispatchIndirect.
|
||||
+
|
||||
The code:NumWorkGroups decoration is only supported in compute shaders.
|
||||
The code:NumWorkGroups decoration must: be used only within compute shaders.
|
||||
+
|
||||
code:NumWorkGroups must: be declared as a three-component vector of 32-bit
|
||||
integers.
|
||||
|
@ -923,7 +938,7 @@ If a specialization constant or a constant is decorated with the
|
|||
code:WorkgroupSize decoration, this must: take precedence over any execution
|
||||
mode set for code:LocalSize.
|
||||
+
|
||||
The code:WorkgroupSize decoration is only supported in compute shaders.
|
||||
The code:WorkgroupSize decoration must: be used only within compute shaders.
|
||||
+
|
||||
code:WorkgroupSize must: be declared as a three-component vector of 32-bit
|
||||
integers.
|
||||
|
@ -936,8 +951,8 @@ vertices in the input patch being processed by the shader. A single
|
|||
tessellation control or evaluation shader can: read patches of differing
|
||||
sizes, so the code:PatchVertices variable may: differ between patches.
|
||||
+
|
||||
The code:PatchVertices decoration is only supported in tessellation control
|
||||
and evaluation shaders.
|
||||
The code:PatchVertices decoration must: be used only within tessellation
|
||||
control and evaluation shaders.
|
||||
+
|
||||
code:PatchVertices must: be declared as scalar 32-bit integer.
|
||||
|
||||
|
@ -951,7 +966,7 @@ Point Rasterization>>. If the primitive the fragment shader invocation
|
|||
belongs to is not a point, then code:PointCoord is undefined.
|
||||
+
|
||||
--
|
||||
The code:PointCoord decoration is only supported in fragment shaders.
|
||||
The code:PointCoord decoration must: be used only within fragment shaders.
|
||||
|
||||
code:PointCoord must: be declared as two-component vector of 32-bit
|
||||
floating-point values.
|
||||
|
@ -1076,7 +1091,7 @@ shader entry point's interface does not include an output variable decorated
|
|||
with code:SampleMask, the sample mask has no effect on the processing of a
|
||||
fragment.
|
||||
+
|
||||
The code:SampleMask decoration is only supported in fragment shaders.
|
||||
The code:SampleMask decoration must: be used only within fragment shaders.
|
||||
+
|
||||
code:SampleMask must: be declared as an array of 32-bit integers.
|
||||
|
||||
|
@ -1089,7 +1104,7 @@ fragment shader entry point's interface includes an input variable decorated
|
|||
with code:SamplePosition, per-sample shading is enabled for draws that use
|
||||
that fragment shader.
|
||||
+
|
||||
The code:SamplePosition decoration is only supported in fragment shaders.
|
||||
The code:SamplePosition decoration must: be used only within fragment shaders.
|
||||
+
|
||||
code:SamplePosition must: be declared as a two-component vector of
|
||||
floating-point values.
|
||||
|
@ -1103,7 +1118,7 @@ and w are in the range latexmath:[$[0,1\]$] and vary linearly across the
|
|||
primitive being subdivided. For the tessellation modes of code:Quads or
|
||||
code:IsoLines, the third component is always zero.
|
||||
+
|
||||
The code:TessellationCoord decoration is only available to tessellation
|
||||
The code:TessellationCoord decoration must: be used only within tessellation
|
||||
evaluation shaders.
|
||||
+
|
||||
code:TessellationCoord must: be declared as three-component vector of 32-bit
|
||||
|
@ -1119,7 +1134,7 @@ tessellation evaluation shaders. When applied to an input variable in a
|
|||
tessellation evaluation shader, the shader can: read the value written by
|
||||
the tessellation control shader.
|
||||
+
|
||||
The code:TessellationLevelOuter decoration is not available outside
|
||||
The code:TessellationLevelOuter decoration must: be used only within
|
||||
tessellation control and evaluation shaders.
|
||||
+
|
||||
code:TessellationLevelOuter must: be declared as an array of size two,
|
||||
|
@ -1135,7 +1150,7 @@ tessellation evaluation shaders. When applied to an input variable in a
|
|||
tessellation evaluation shader, the shader can: read the value written by
|
||||
the tessellation control shader.
|
||||
+
|
||||
The code:TessellationLevelInner decoration is not available outside
|
||||
The code:TessellationLevelInner decoration must: be used only within
|
||||
tessellation control and evaluation shaders.
|
||||
+
|
||||
code:TessellationLevelInner must: be declared as an array of size four,
|
||||
|
@ -1156,8 +1171,7 @@ consumed by flink:vkCmdDrawIndexedIndirect.
|
|||
+
|
||||
code:VertexIndex starts at the same starting value for each instance.
|
||||
+
|
||||
The code:VertexIndex decoration mustnot: be used in any shader stage other
|
||||
than vertex.
|
||||
The code:VertexIndex decoration must: be used only within vertex shaders.
|
||||
+
|
||||
code:VertexIndex must: be declared as a 32-bit integer.
|
||||
|
||||
|
@ -1176,8 +1190,8 @@ in a fragment shader, an input variable decorated with code:ViewportIndex
|
|||
contains the viewport index of the primitive that the fragment invocation
|
||||
belongs to.
|
||||
+
|
||||
The code:ViewportIndex decoration is only supported in geometry and fragment
|
||||
shaders.
|
||||
The code:ViewportIndex decoration must: be used only within geometry and
|
||||
fragment shaders.
|
||||
+
|
||||
code:ViewportIndex must: be declared as a 32-bit integer.
|
||||
|
||||
|
@ -1190,7 +1204,7 @@ Each component ranges from zero to the values of the parameters passed into
|
|||
flink:vkCmdDispatch or read from the sname:VkDispatchIndirectCommand
|
||||
structure read through a call to flink:vkCmdDispatchIndirect.
|
||||
+
|
||||
The code:WorkGroupID decoration is only supported in compute shaders.
|
||||
The code:WorkGroupID decoration must: be used only within compute shaders.
|
||||
+
|
||||
code:WorkGroupID must: be declared as a three-component vector of 32-bit
|
||||
integers.
|
||||
|
|
|
@ -493,8 +493,9 @@ pipelines is achieved by passing the same pipeline cache object when
|
|||
creating multiple related pipelines. Reuse across runs of an application is
|
||||
achieved by retrieving pipeline cache contents in one run of an application,
|
||||
saving the contents, and using them to preinitialize a pipeline cache on a
|
||||
subsequent run. The contents and size of the pipeline cache objects are
|
||||
managed by the implementation. Applications can: control the amount of data
|
||||
subsequent run. The contents of the pipeline cache objects are
|
||||
managed by the implementation. Applications can: manage the host memory
|
||||
consumed by a pipeline cache object and control the amount of data
|
||||
retrieved from a pipeline cache object.
|
||||
|
||||
Pipeline cache objects are created by calling:
|
||||
|
@ -511,6 +512,16 @@ include::../protos/vkCreatePipelineCache.txt[]
|
|||
* pname:pPipelineCache is a pointer to a sname:VkPipelineCache handle in
|
||||
which the resulting pipeline cache object is returned.
|
||||
|
||||
[NOTE]
|
||||
.Note
|
||||
====
|
||||
Applications can: track and manage the total host memory size of a pipeline
|
||||
cache object using the pname:pAllocator. Applications can: limit the amount
|
||||
of data retrieved from a pipeline cache object in fname:vkGetPipeineCacheData.
|
||||
Implementations shouldnot: internally limit the total number of entries added to a
|
||||
pipeline cache object or the total host memory consumed.
|
||||
====
|
||||
|
||||
include::../validity/protos/vkCreatePipelineCache.txt[]
|
||||
|
||||
The sname:VkPipelineCacheCreateInfo structure is defined as:
|
||||
|
|
|
@ -18,7 +18,9 @@ from datetime import *
|
|||
# branch = branch or commit or tag name
|
||||
# label = textual label to apply
|
||||
# outdir = directory to generate specs in
|
||||
def buildRelease(branch,label,outdir,targets):
|
||||
# xmlTargets = targets to build in src/spec/
|
||||
# specTargets = targets to build in doc/specs/vulkan/
|
||||
def buildRelease(branch,label,outdir,xmlTargets,specTargets):
|
||||
global root, xml, spec
|
||||
|
||||
print('echo Info: Generating branch=' + branch,
|
||||
|
@ -26,10 +28,6 @@ def buildRelease(branch,label,outdir,targets):
|
|||
'outdir=' + outdir)
|
||||
print('git checkout', branch)
|
||||
|
||||
print('echo Info: Generating headers and spec include files')
|
||||
print('cd', xml)
|
||||
print('make clobber full_install')
|
||||
|
||||
print('echo Info: Cleaning spec in', outdir)
|
||||
print('cd', spec)
|
||||
print('rm -rf',
|
||||
|
@ -40,9 +38,15 @@ def buildRelease(branch,label,outdir,targets):
|
|||
outdir + '/vkspec.html',
|
||||
'specversion.txt')
|
||||
|
||||
print('echo Info: Generating headers and spec include files')
|
||||
print('cd', xml)
|
||||
print('make OUTDIR=' + outdir, xmlTargets)
|
||||
|
||||
print('echo Info: Generating spec')
|
||||
print('cd', spec)
|
||||
print('make specversion.txt')
|
||||
print('make -j 4 OUTDIR=' + outdir, ' NOTEOPTS="-a implementation-guide"', targets)
|
||||
print('make -j 4 OUTDIR=' + outdir, ' NOTEOPTS="-a implementation-guide"',
|
||||
specTargets)
|
||||
print('rm', outdir + '/pdf/vkspec.xml')
|
||||
|
||||
# Main
|
||||
|
@ -68,11 +72,15 @@ wsibranch = '1.0-wsi_extensions'
|
|||
now = datetime.today().strftime('%Y%m%d')
|
||||
|
||||
# Generate specs
|
||||
coretargets='xhtml pdf styleguide manhtml manpdf manhtmlpages'
|
||||
buildRelease(corebranch, corebranch, outdir + corebranch, coretargets)
|
||||
coreXmlTargets='clobber full_install pdf_install'
|
||||
coreSpecTargets='xhtml pdf styleguide manhtml manpdf manhtmlpages'
|
||||
buildRelease(corebranch, corebranch, outdir + corebranch,
|
||||
coreXmlTargets, coreSpecTargets)
|
||||
|
||||
wsitargets='xhtml pdf'
|
||||
buildRelease(wsibranch, wsibranch, outdir + wsibranch, wsitargets)
|
||||
wsiXmlTargets='clobber full_install'
|
||||
wsiSpecTargets='xhtml pdf'
|
||||
buildRelease(wsibranch, wsibranch, outdir + wsibranch,
|
||||
wsiXmlTargets, wsiSpecTargets)
|
||||
|
||||
print('echo Info: post-generation cleanup')
|
||||
|
||||
|
@ -80,8 +88,9 @@ print('git checkout ' + corebranch)
|
|||
|
||||
print('echo To tag the spec branches, execute these commands:')
|
||||
print('echo git checkout', corebranch)
|
||||
print('echo git tag -a -m \\"Tag core API specification for', now, 'release\\"', 'v1.0-core-' + now)
|
||||
print('echo git tag -a -m \\"Tag core API specification for', now,
|
||||
'release\\"', 'v1.0-core-' + now)
|
||||
|
||||
print('echo git checkout', wsibranch)
|
||||
print('echo git tag -a -m \\"Tag core+WSI API specification for', now, 'release\\"', 'v1.0-core+wsi-' + now)
|
||||
print('echo git push --tags')
|
||||
print('echo git tag -a -m \\"Tag core+WSI API specification for', now,
|
||||
'release\\"', 'v1.0-core+wsi-' + now)
|
||||
|
|
|
@ -43,13 +43,13 @@ Description
|
|||
-----------
|
||||
|
||||
fname:vkCmdWaitEvents waits for a number of event objects to become
|
||||
signalled and inserts a set of memory barriers into the command buffer
|
||||
signaled and inserts a set of memory barriers into the command buffer
|
||||
specified by pname:commandBuffer.
|
||||
|
||||
fname:vkCmdWaitEvents waits for each of the pname:eventCount event object
|
||||
specified by pname:pEvents to become signalled. The point at which each is
|
||||
signalled must have been specified in the command that caused the object to
|
||||
become signalled (either fname:vkSetEvent or fname:vkCmdSetEvent) and must
|
||||
specified by pname:pEvents to become signaled. The point at which each is
|
||||
signaled must have been specified in the command that caused the object to
|
||||
become signaled (either fname:vkSetEvent or fname:vkCmdSetEvent) and must
|
||||
also have the corresponding bit set in pname:srcStageMask.
|
||||
|
||||
The pname:ppMemoryBarriers parameter is a pointer to an array of pname:memoryBarrierCount
|
||||
|
|
|
@ -641,6 +641,16 @@ write that it ``contains one or more bits''. A counter example is that it is oka
|
|||
to write ``For non-stereoscopic-3D applications, this value is 1.''
|
||||
|
||||
|
||||
=== Use American Spelling Conventions
|
||||
|
||||
In case of conflict, use American rather than British spelling
|
||||
conventions. For example:
|
||||
|
||||
*Correct:* color, signaled.
|
||||
|
||||
*Incorrect:* colour, signalled.
|
||||
|
||||
|
||||
[[writingstyle-describing]]
|
||||
== Describing Commands and Parameters
|
||||
|
||||
|
@ -963,6 +973,9 @@ for this structure:
|
|||
|
||||
= Revision History
|
||||
|
||||
* May 1, 2016 - Include feedback from public Github issues 120 and 190. Use
|
||||
consistent conventions for defining structures. Use American rather than
|
||||
British spelling conventions.
|
||||
* March 12, 2016 - Recommend against "the value of".
|
||||
* February 26, 2016 - Replace use of the "maynot{cl}" macro with "may{cl} not".
|
||||
* February 16, 2016 - Place asciidoc conversion post-release.
|
||||
|
|
|
@ -11,7 +11,7 @@ endif::doctype-manpage[]
|
|||
* If pname:pLayerName is not `NULL`, pname:pLayerName must: be a null-terminated string
|
||||
* pname:pPropertyCount must: be a pointer to a basetype:uint32_t value
|
||||
* If the value referenced by pname:pPropertyCount is not `0`, and pname:pProperties is not `NULL`, pname:pProperties must: be a pointer to an array of pname:pPropertyCount sname:VkExtensionProperties structures
|
||||
* If pname:pLayerName is not `NULL`, it must: be the name of a device layer returned by flink:vkEnumerateDeviceLayerProperties
|
||||
* If pname:pLayerName is not `NULL`, it must: be the name of a layer returned by flink:vkEnumerateDeviceLayerProperties
|
||||
ifndef::doctype-manpage[]
|
||||
********************************************************************************
|
||||
endif::doctype-manpage[]
|
||||
|
|
|
@ -10,7 +10,7 @@ endif::doctype-manpage[]
|
|||
* If pname:pLayerName is not `NULL`, pname:pLayerName must: be a null-terminated string
|
||||
* pname:pPropertyCount must: be a pointer to a basetype:uint32_t value
|
||||
* If the value referenced by pname:pPropertyCount is not `0`, and pname:pProperties is not `NULL`, pname:pProperties must: be a pointer to an array of pname:pPropertyCount sname:VkExtensionProperties structures
|
||||
* If pname:pLayerName is not `NULL`, it must: be the name of an instance layer returned by flink:vkEnumerateInstanceLayerProperties
|
||||
* If pname:pLayerName is not `NULL`, it must: be the name of a layer returned by flink:vkEnumerateInstanceLayerProperties
|
||||
ifndef::doctype-manpage[]
|
||||
********************************************************************************
|
||||
endif::doctype-manpage[]
|
||||
|
|
|
@ -12,7 +12,7 @@ endif::doctype-manpage[]
|
|||
* If pname:fence is not sname:VK_NULL_HANDLE, pname:fence must: be a valid sname:VkFence handle
|
||||
* The pname:queue must: support sparse binding operations
|
||||
* Each of pname:queue and pname:fence that are valid handles must: have been created, allocated or retrieved from the same sname:VkDevice
|
||||
* pname:fence must: be unsignalled
|
||||
* pname:fence must: be unsignaled
|
||||
* pname:fence mustnot: be associated with any other queue command that has not yet completed execution on that queue
|
||||
ifndef::doctype-manpage[]
|
||||
********************************************************************************
|
||||
|
|
|
@ -11,7 +11,7 @@ endif::doctype-manpage[]
|
|||
* If pname:submitCount is not `0`, pname:pSubmits must: be a pointer to an array of pname:submitCount valid sname:VkSubmitInfo structures
|
||||
* If pname:fence is not sname:VK_NULL_HANDLE, pname:fence must: be a valid sname:VkFence handle
|
||||
* Each of pname:queue and pname:fence that are valid handles must: have been created, allocated or retrieved from the same sname:VkDevice
|
||||
* If pname:fence is not sname:VK_NULL_HANDLE, pname:fence must: be unsignalled
|
||||
* If pname:fence is not sname:VK_NULL_HANDLE, pname:fence must: be unsignaled
|
||||
* If pname:fence is not sname:VK_NULL_HANDLE, pname:fence mustnot: be associated with any other queue command that has not yet completed execution on that queue
|
||||
ifndef::doctype-manpage[]
|
||||
********************************************************************************
|
||||
|
|
|
@ -15,7 +15,7 @@ endif::doctype-manpage[]
|
|||
* If pname:enabledExtensionCount is not `0`, pname:ppEnabledExtensionNames must: be a pointer to an array of pname:enabledExtensionCount null-terminated strings
|
||||
* If pname:pEnabledFeatures is not `NULL`, pname:pEnabledFeatures must: be a pointer to a valid sname:VkPhysicalDeviceFeatures structure
|
||||
* pname:queueCreateInfoCount must: be greater than `0`
|
||||
* Any given element of pname:ppEnabledLayerNames must: be the name of a layer present on the system, exactly matching a string returned in the sname:VkLayerProperties structure by fname:vkEnumerateDeviceLayerProperties
|
||||
* pname:ppEnabledLayerNames must: either be sname:NULL or contain the same sequence of layer names that was enabled when creating the parent instance
|
||||
* Any given element of pname:ppEnabledExtensionNames must: be the name of an extension present on the system, exactly matching a string returned in the sname:VkExtensionProperties structure by fname:vkEnumerateDeviceExtensionProperties
|
||||
* If an extension listed in pname:ppEnabledExtensionNames is provided as part of a layer, then both the layer and extension must: be enabled to enable that extension
|
||||
* The pname:queueFamilyIndex member of any given element of pname:pQueueCreateInfos must: be unique within pname:pQueueCreateInfos
|
||||
|
|
|
@ -15,7 +15,7 @@ endif::doctype-manpage[]
|
|||
* If pname:commandBufferCount is not `0`, pname:pCommandBuffers must: be a pointer to an array of pname:commandBufferCount valid sname:VkCommandBuffer handles
|
||||
* If pname:signalSemaphoreCount is not `0`, pname:pSignalSemaphores must: be a pointer to an array of pname:signalSemaphoreCount valid sname:VkSemaphore handles
|
||||
* Each of the elements of pname:pWaitSemaphores, the elements of pname:pCommandBuffers and the elements of pname:pSignalSemaphores that are valid handles must: have been created, allocated or retrieved from the same sname:VkDevice
|
||||
* Any given element of pname:pSignalSemaphores must: currently be unsignalled
|
||||
* Any given element of pname:pSignalSemaphores must: currently be unsignaled
|
||||
* Any given element of pname:pCommandBuffers must: either have been recorded with the ename:VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT, or not currently be executing on the device
|
||||
* Any given element of pname:pCommandBuffers must: be in the executable state
|
||||
* If any given element of pname:pCommandBuffers contains commands that execute secondary command buffers, those secondary command buffers must: have been recorded with the ename:VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT, or not currently be executing on the device
|
||||
|
|
|
@ -9,9 +9,11 @@
|
|||
related documents. It is updated by hand periodically by Jon Leech. </p>
|
||||
|
||||
<ul>
|
||||
<li> The <a href="1.0/styleguide.html">Vulkan Style Guide</a> is a work
|
||||
in progress (but significantly complete) document, useful when
|
||||
writing and modifying Specification and reference page language.
|
||||
<li> The <a href="1.0/styleguide.html">Vulkan Style Guide</a> is a work in
|
||||
progress (but significantly complete) document, useful when writing
|
||||
and modifying Specification and reference page language. </li>
|
||||
<li> The <a href="1.0/readme.pdf">XML Registry README</a> describes the
|
||||
schema and some use cases for <tt>vk.xml</tt>. </li>
|
||||
<li> <b> Core API Specifications </b>
|
||||
<ul>
|
||||
<li> <a href="1.0/xhtml/vkspec.html">Single document</a> (XHTML from 'a2x') </li>
|
||||
|
@ -48,13 +50,13 @@
|
|||
</ul>
|
||||
</li>
|
||||
<li> <b> The following targets are for internal use only and are probably
|
||||
not included in, or if included, not up to date in the sandbox
|
||||
</b> </li>
|
||||
not included in, or if included, not up to date in the sandbox
|
||||
</b> </li>
|
||||
<ul>
|
||||
<li> Core API <a href="1.0/html/vkspec.html">Single document</a> (HTML from
|
||||
'asciibook') </li>
|
||||
'asciibook') </li>
|
||||
<li> Core+WSI API <a href="1.0-wsi_extensions/html/vkspec.html">Single
|
||||
document</a> (HTML from 'asciibook') </li>
|
||||
document</a> (HTML from 'asciibook') </li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
|
|
|
@ -19,6 +19,7 @@ PYTHON ?= python3
|
|||
PYFILES = genheaders.py reg.py
|
||||
GENOPTS =
|
||||
GENHEADERS = genheaders.py $(GENOPTS)
|
||||
OUTDIR = ../../out/1.0
|
||||
|
||||
# Generate all outputs for Vulkan, including headers and (soon) Asciidoc
|
||||
# frameworks. Targets:
|
||||
|
@ -39,7 +40,7 @@ DOCROOT = ../../doc/specs/vulkan
|
|||
DOCPYSRC = $(DOCROOT)/vkapi.py
|
||||
DOCVALIDITY = validity
|
||||
DOCHOSTSYNCTABLE = hostsynctable
|
||||
XMLDOC = readme.pdf
|
||||
XMLDOC = $(OUTDIR)/readme.pdf
|
||||
|
||||
# Could add $(XMLDOC) to default, but that requires a LaTeX install.
|
||||
# Could regenerate vk.json automatically but the generator script isn't
|
||||
|
@ -50,6 +51,8 @@ default install: $(HEADERS)
|
|||
|
||||
full_install: default $(DOCINCLUDES) $(DOCPYSRC) $(DOCVALIDITY) $(DOCHOSTSYNCTABLE)
|
||||
|
||||
pdf_install: $(OUTDIR)/readme.pdf
|
||||
|
||||
################################################
|
||||
|
||||
# Python and XML files on which vulkan.h depends
|
||||
|
@ -97,12 +100,13 @@ vk.json: tojson.py vk.xml
|
|||
################################################
|
||||
|
||||
# Documentation targets
|
||||
readme.pdf: readme.tex Makefile
|
||||
$(OUTDIR)/readme.pdf: readme.tex Makefile
|
||||
touch readme.ind
|
||||
pdflatex readme.tex
|
||||
pdflatex readme.tex
|
||||
makeindex readme.idx
|
||||
pdflatex readme.tex
|
||||
mv readme.pdf $@
|
||||
|
||||
################################################
|
||||
|
||||
|
@ -128,6 +132,7 @@ clean:
|
|||
# (installed header & asciidoc includes)
|
||||
clobber: clean
|
||||
-rm -f $(HEADERS) $(DOCINCLUDES)
|
||||
-rm -f $(OUTDIR)/readme.pdf
|
||||
-rm -f $(DOCROOT)/vkapi.py
|
||||
-rm -f $(DOCROOT)/structs/*.txt $(DOCROOT)/protos/*.txt
|
||||
-rm -f $(DOCROOT)/enums/*.txt $(DOCROOT)/flags/*.txt
|
||||
|
|
5285
src/spec/readme.pdf
5285
src/spec/readme.pdf
File diff suppressed because it is too large
Load Diff
|
@ -101,7 +101,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
|
|||
<type category="define">// Vulkan 1.0 version number
|
||||
#define <name>VK_API_VERSION_1_0</name> <type>VK_MAKE_VERSION</type>(1, 0, 0)</type> <!-- The patch version here should never be set to anything other than 0 -->
|
||||
<type category="define">// Version of this file
|
||||
#define <name>VK_HEADER_VERSION</name> 12</type>
|
||||
#define <name>VK_HEADER_VERSION</name> 13</type>
|
||||
|
||||
<type category="define">
|
||||
#define <name>VK_DEFINE_HANDLE</name>(object) typedef struct object##_T* object;</type>
|
||||
|
@ -505,7 +505,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
|
|||
<member len="enabledExtensionCount,null-terminated">const <type>char</type>* const* <name>ppEnabledExtensionNames</name></member>
|
||||
<member optional="true">const <type>VkPhysicalDeviceFeatures</type>* <name>pEnabledFeatures</name></member>
|
||||
<validity>
|
||||
<usage>Any given element of pname:ppEnabledLayerNames must: be the name of a layer present on the system, exactly matching a string returned in the sname:VkLayerProperties structure by fname:vkEnumerateDeviceLayerProperties</usage>
|
||||
<usage>pname:ppEnabledLayerNames must: either be sname:NULL or contain the same sequence of layer names that was enabled when creating the parent instance</usage>
|
||||
<usage>Any given element of pname:ppEnabledExtensionNames must: be the name of an extension present on the system, exactly matching a string returned in the sname:VkExtensionProperties structure by fname:vkEnumerateDeviceExtensionProperties</usage>
|
||||
<usage>If an extension listed in pname:ppEnabledExtensionNames is provided as part of a layer, then both the layer and extension must: be enabled to enable that extension</usage>
|
||||
<usage>The pname:queueFamilyIndex member of any given element of pname:pQueueCreateInfos must: be unique within pname:pQueueCreateInfos</usage>
|
||||
|
@ -1926,7 +1926,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
|
|||
<member optional="true"><type>uint32_t</type> <name>signalSemaphoreCount</name></member>
|
||||
<member len="signalSemaphoreCount">const <type>VkSemaphore</type>* <name>pSignalSemaphores</name></member>
|
||||
<validity>
|
||||
<usage>Any given element of pname:pSignalSemaphores must: currently be unsignalled</usage>
|
||||
<usage>Any given element of pname:pSignalSemaphores must: currently be unsignaled</usage>
|
||||
<usage>Any given element of pname:pCommandBuffers must: either have been recorded with the ename:VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT, or not currently be executing on the device</usage>
|
||||
<usage>Any given element of pname:pCommandBuffers must: be in the executable state</usage>
|
||||
<usage>If any given element of pname:pCommandBuffers contains commands that execute secondary command buffers, those secondary command buffers must: have been recorded with the ename:VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT, or not currently be executing on the device</usage>
|
||||
|
@ -2095,7 +2095,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
|
|||
<member optional="true"><type>VkSwapchainKHR</type> <name>oldSwapchain</name></member> <!-- Existing swap chain to replace, if any -->
|
||||
<validity>
|
||||
<usage>pname:surface must: be a surface that is supported by the device as determined using fname:vkGetPhysicalDeviceSurfaceSupportKHR</usage>
|
||||
<usage>The native window referred to by pname:surface mustnot: already be associated with a swapchain other than pname:oldSwapchain, or with a non-{apiname} graphics API surface</usage>
|
||||
<usage>The native window referred to by pname:surface mustnot: already be associated with a swapchain other than pname:oldSwapchain, or with a non-Vulkan graphics API surface</usage>
|
||||
<usage>pname:minImageCount must: be greater than or equal to the value returned in the pname:minImageCount member of the sname:VkSurfaceCapabilitiesKHR structure returned by fname:vkGetPhysicalDeviceSurfaceCapabilitiesKHR for the surface</usage>
|
||||
<usage>pname:minImageCount must: be less than or equal to the value returned in the pname:maxImageCount member of the sname:VkSurfaceCapabilitiesKHR structure returned by fname:vkGetPhysicalDeviceSurfaceCapabilitiesKHR for the surface if the returned pname:maxImageCount is not zero</usage>
|
||||
<usage>pname:imageFormat and pname:imageColorspace must: match the pname:format and pname:colorSpace members, respectively, of one of the sname:VkSurfaceFormatKHR structures returned by fname:vkGetPhysicalDeviceSurfaceFormatsKHR for the surface</usage>
|
||||
|
@ -2657,7 +2657,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
|
|||
<enum value="1" name="VK_NOT_READY" comment="A fence or query has not yet completed"/>
|
||||
<enum value="2" name="VK_TIMEOUT" comment="A wait operation has not completed in the specified time"/>
|
||||
<enum value="3" name="VK_EVENT_SET" comment="An event is signaled"/>
|
||||
<enum value="4" name="VK_EVENT_RESET" comment="An event is unsignalled"/>
|
||||
<enum value="4" name="VK_EVENT_RESET" comment="An event is unsignaled"/>
|
||||
<enum value="5" name="VK_INCOMPLETE" comment="A return array was too small for the result"/>
|
||||
<!-- Error codes (negative values) -->
|
||||
<enum value="-1" name="VK_ERROR_OUT_OF_HOST_MEMORY" comment="A host memory allocation has failed"/>
|
||||
|
@ -2894,7 +2894,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
|
|||
<enum value="3" name="VK_PRESENT_MODE_FIFO_RELAXED_KHR"/>
|
||||
</enums>
|
||||
<enums name="VkColorSpaceKHR" type="enum">
|
||||
<enum value="0" name="VK_COLORSPACE_SRGB_NONLINEAR_KHR"/>
|
||||
<enum value="0" name="VK_COLOR_SPACE_SRGB_NONLINEAR_KHR"/>
|
||||
</enums>
|
||||
<enums name="VkDisplayPlaneAlphaFlagBitsKHR" type="bitmask">
|
||||
<enum bitpos="0" name="VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR"/>
|
||||
|
@ -3072,7 +3072,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
|
|||
<param optional="false,true"><type>uint32_t</type>* <name>pPropertyCount</name></param>
|
||||
<param optional="true" len="pPropertyCount"><type>VkExtensionProperties</type>* <name>pProperties</name></param>
|
||||
<validity>
|
||||
<usage>If pname:pLayerName is not `NULL`, it must: be the name of an instance layer returned by flink:vkEnumerateInstanceLayerProperties</usage>
|
||||
<usage>If pname:pLayerName is not `NULL`, it must: be the name of a layer returned by flink:vkEnumerateInstanceLayerProperties</usage>
|
||||
</validity>
|
||||
</command>
|
||||
<command successcodes="VK_SUCCESS,VK_INCOMPLETE" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
|
||||
|
@ -3088,7 +3088,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
|
|||
<param optional="false,true"><type>uint32_t</type>* <name>pPropertyCount</name></param>
|
||||
<param optional="true" len="pPropertyCount"><type>VkExtensionProperties</type>* <name>pProperties</name></param>
|
||||
<validity>
|
||||
<usage>If pname:pLayerName is not `NULL`, it must: be the name of a device layer returned by flink:vkEnumerateDeviceLayerProperties</usage>
|
||||
<usage>If pname:pLayerName is not `NULL`, it must: be the name of a layer returned by flink:vkEnumerateDeviceLayerProperties</usage>
|
||||
</validity>
|
||||
</command>
|
||||
<command>
|
||||
|
@ -3109,7 +3109,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
|
|||
<param len="submitCount" externsync="pSubmits[].pWaitSemaphores[],pSubmits[].pSignalSemaphores[]">const <type>VkSubmitInfo</type>* <name>pSubmits</name></param>
|
||||
<param optional="true" externsync="true"><type>VkFence</type> <name>fence</name></param>
|
||||
<validity>
|
||||
<usage>If pname:fence is not sname:VK_NULL_HANDLE, pname:fence must: be unsignalled</usage>
|
||||
<usage>If pname:fence is not sname:VK_NULL_HANDLE, pname:fence must: be unsignaled</usage>
|
||||
<usage>If pname:fence is not sname:VK_NULL_HANDLE, pname:fence mustnot: be associated with any other queue command that has not yet completed execution on that queue</usage>
|
||||
</validity>
|
||||
</command>
|
||||
|
@ -3265,7 +3265,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
|
|||
<param len="bindInfoCount" externsync="pBindInfo[].pWaitSemaphores[],pBindInfo[].pSignalSemaphores[],pBindInfo[].pBufferBinds[].buffer,pBindInfo[].pImageOpaqueBinds[].image,pBindInfo[].pImageBinds[].image">const <type>VkBindSparseInfo</type>* <name>pBindInfo</name></param>
|
||||
<param optional="true" externsync="true"><type>VkFence</type> <name>fence</name></param>
|
||||
<validity>
|
||||
<usage>pname:fence must: be unsignalled</usage>
|
||||
<usage>pname:fence must: be unsignaled</usage>
|
||||
<usage>pname:fence mustnot: be associated with any other queue command that has not yet completed execution on that queue</usage>
|
||||
</validity>
|
||||
</command>
|
||||
|
@ -4599,7 +4599,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
|
|||
<usage>pname:queueFamilyIndex must: be less than pname:pQueueFamilyPropertyCount returned by fname:vkGetPhysicalDeviceQueueFamilyProperties for the given pname:physicalDevice</usage>
|
||||
</validity>
|
||||
</command>
|
||||
<command successcodes="VK_SUCCESS,VK_INCOMPLETE" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_SURFACE_LOST_KHR">
|
||||
<command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_SURFACE_LOST_KHR">
|
||||
<proto><type>VkResult</type> <name>vkGetPhysicalDeviceSurfaceCapabilitiesKHR</name></proto>
|
||||
<param><type>VkPhysicalDevice</type> <name>physicalDevice</name></param>
|
||||
<param><type>VkSurfaceKHR</type> <name>surface</name></param>
|
||||
|
@ -4653,8 +4653,8 @@ maintained in the master branch of the Khronos Vulkan Github project.
|
|||
<param optional="true" externsync="true"><type>VkFence</type> <name>fence</name></param>
|
||||
<param><type>uint32_t</type>* <name>pImageIndex</name></param>
|
||||
<validity>
|
||||
<usage>If pname:semaphore is not sname:VK_NULL_HANDLE it must: be unsignalled</usage>
|
||||
<usage>If pname:fence is not sname:VK_NULL_HANDLE it must: be unsignalled and mustnot: be associated with any other queue command that has not yet completed execution on that queue</usage>
|
||||
<usage>If pname:semaphore is not sname:VK_NULL_HANDLE it must: be unsignaled</usage>
|
||||
<usage>If pname:fence is not sname:VK_NULL_HANDLE it must: be unsignaled and mustnot: be associated with any other queue command that has not yet completed execution on that queue</usage>
|
||||
</validity>
|
||||
</command>
|
||||
<command successcodes="VK_SUCCESS,VK_SUBOPTIMAL_KHR" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_DEVICE_LOST,VK_ERROR_OUT_OF_DATE_KHR,VK_ERROR_SURFACE_LOST_KHR">
|
||||
|
@ -4761,7 +4761,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
|
|||
<usage>pname:instance must: be a valid sname:VkInstance handle</usage>
|
||||
<usage>pname:flags must: be a combination of one or more of sname:VkDebugReportFlagBitsEXT</usage>
|
||||
<usage>pname:objType must: be one of sname:VkDebugReportObjectTypeEXT, ename:VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT if pname:object is `NULL`</usage>
|
||||
<usage>pname:object may: be a {apiname} object</usage>
|
||||
<usage>pname:object may: be a Vulkan object</usage>
|
||||
<usage>pname:pLayerPrefix must: be a `NULL` terminated string.</usage>
|
||||
<usage>pname:pMsg must: be a `NULL` terminated string.</usage>
|
||||
</validity>
|
||||
|
@ -5043,6 +5043,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
|
|||
<enum value=""VK_KHR_surface"" name="VK_KHR_SURFACE_EXTENSION_NAME"/>
|
||||
<enum offset="0" dir="-" extends="VkResult" name="VK_ERROR_SURFACE_LOST_KHR"/>
|
||||
<enum offset="1" dir="-" extends="VkResult" name="VK_ERROR_NATIVE_WINDOW_IN_USE_KHR"/>
|
||||
<enum value="VK_COLOR_SPACE_SRGB_NONLINEAR_KHR" name="VK_COLORSPACE_SRGB_NONLINEAR_KHR"/>
|
||||
<command name="vkDestroySurfaceKHR"/>
|
||||
<command name="vkGetPhysicalDeviceSurfaceSupportKHR"/>
|
||||
<command name="vkGetPhysicalDeviceSurfaceCapabilitiesKHR"/>
|
||||
|
|
|
@ -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 12
|
||||
#define VK_HEADER_VERSION 13
|
||||
|
||||
|
||||
#define VK_NULL_HANDLE 0
|
||||
|
@ -3172,13 +3172,14 @@ VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSurfaceKHR)
|
|||
|
||||
#define VK_KHR_SURFACE_SPEC_VERSION 25
|
||||
#define VK_KHR_SURFACE_EXTENSION_NAME "VK_KHR_surface"
|
||||
#define VK_COLORSPACE_SRGB_NONLINEAR_KHR VK_COLOR_SPACE_SRGB_NONLINEAR_KHR
|
||||
|
||||
|
||||
typedef enum VkColorSpaceKHR {
|
||||
VK_COLORSPACE_SRGB_NONLINEAR_KHR = 0,
|
||||
VK_COLOR_SPACE_BEGIN_RANGE_KHR = VK_COLORSPACE_SRGB_NONLINEAR_KHR,
|
||||
VK_COLOR_SPACE_END_RANGE_KHR = VK_COLORSPACE_SRGB_NONLINEAR_KHR,
|
||||
VK_COLOR_SPACE_RANGE_SIZE_KHR = (VK_COLORSPACE_SRGB_NONLINEAR_KHR - VK_COLORSPACE_SRGB_NONLINEAR_KHR + 1),
|
||||
VK_COLOR_SPACE_SRGB_NONLINEAR_KHR = 0,
|
||||
VK_COLOR_SPACE_BEGIN_RANGE_KHR = VK_COLOR_SPACE_SRGB_NONLINEAR_KHR,
|
||||
VK_COLOR_SPACE_END_RANGE_KHR = VK_COLOR_SPACE_SRGB_NONLINEAR_KHR,
|
||||
VK_COLOR_SPACE_RANGE_SIZE_KHR = (VK_COLOR_SPACE_SRGB_NONLINEAR_KHR - VK_COLOR_SPACE_SRGB_NONLINEAR_KHR + 1),
|
||||
VK_COLOR_SPACE_MAX_ENUM_KHR = 0x7FFFFFFF
|
||||
} VkColorSpaceKHR;
|
||||
|
||||
|
|
Loading…
Reference in New Issue