Skip to content

Commit

Permalink
Change log for May 20, 2016 Vulkan 1.0.14 spec update:
Browse files Browse the repository at this point in the history
  * Bump API patch number and header version number to 14 for this
    update.

Github Issues:

  * Fix validity language for sname:VkCommandBufferAllocateInfo to
    impose range limits on pname:commandBufferCount (public issue 178).
  * Fix validity language for flink:vkCmdExecuteCommands to refer to the
    correct structure names (public issue 179).
  * Fix two copy-and-paste errors in the WSI queries, where the wrong
    term was used for what was being returned (public issue 206).
  * Add a note in the documentation of
    flink:vkGetPhysicalDeviceSurfaceFormatsKHR, about what it means if
    ename:VK_FORMAT_UNDEFINED is returned (public issue 207).

Internal Issues:

  * Clarify the usage and correct the name for the bitmask referenced in
    <<queries-pipestats,Pipeline Statistics Queries>> (internal issue
    334).

Other Commits:

  * Fix the names of decorations listed in the
    <<interfaces-builtin-variables,Built-in Variables>> section such
    that they match the SPIR-V specification.
  • Loading branch information
oddhack committed May 19, 2016
1 parent 2656f45 commit b3d4802
Show file tree
Hide file tree
Showing 12 changed files with 135 additions and 89 deletions.
26 changes: 26 additions & 0 deletions ChangeLog.txt
Expand Up @@ -636,7 +636,33 @@ Internal Issues:
the result pointer may be modified for specific commands, even if a
runtime error is returned (internal issue 324).

-----------------------------------------------------

Change log for May 20, 2016 Vulkan 1.0.14 spec update:

* Bump API patch number and header version number to 14 for this
update.

Github Issues:

* Fix validity language for sname:VkCommandBufferAllocateInfo to
impose range limits on pname:commandBufferCount (public issue 178).
* Fix validity language for flink:vkCmdExecuteCommands to refer to the
correct structure names (public issue 179).
* Fix two copy-and-paste errors in the WSI queries, where the wrong
term was used for what was being returned (public issue 206).
* Add a note in the documentation of
flink:vkGetPhysicalDeviceSurfaceFormatsKHR, about what it means if
ename:VK_FORMAT_UNDEFINED is returned (public issue 207).

Internal Issues:

* Clarify the usage and correct the name for the bitmask referenced in
<<queries-pipestats,Pipeline Statistics Queries>> (internal issue
334).

Other Commits:

* Fix the names of decorations listed in the
<<interfaces-builtin-variables,Built-in Variables>> section such
that they match the SPIR-V specification.
2 changes: 1 addition & 1 deletion doc/specs/vulkan/Makefile
Expand Up @@ -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.13
SPECREVISION = 1.0.14
SPECREMARK =

# Spec targets
Expand Down
4 changes: 2 additions & 2 deletions doc/specs/vulkan/appendices/invariance.txt
Expand Up @@ -200,9 +200,9 @@ of the subdivided primitive._
connecting an inner and outer edge depends only on the inner and outer
tessellation levels corresponding to that edge and the spacing decorations._

*Rule 8* _The value of all defined components of_ code:TessellationCoord
*Rule 8* _The value of all defined components of_ code:TessCoord
_will be in the range [0, 1]. Additionally, for any defined component x of_
code:TessellationCoord, _the results of computing 1.0-x in a tessellation
code:TessCoord, _the results of computing 1.0-x in a tessellation
evaluation shader will be exact. If any floating-point values in the range
[0, 1] fail to satisfy this property, such values mustnot: be used as
tessellation coordinate components._
2 changes: 1 addition & 1 deletion doc/specs/vulkan/chapters/geometry.txt
Expand Up @@ -131,7 +131,7 @@ literal.
In this mode, the geometry shader will execute latexmath:[$n$] times for
each input primitive, where latexmath:[$n$] is the number of invocations
specified in the code:OpExecutionMode instruction. The instance number is
available to each invocation as a built-in input using code:InvocationID.
available to each invocation as a built-in input using code:InvocationId.


[[geometry-ordering]]
Expand Down
112 changes: 56 additions & 56 deletions doc/specs/vulkan/chapters/interfaces.txt
Expand Up @@ -794,18 +794,18 @@ constant zero.
====
--

code:GlobalInvocationID::
code:GlobalInvocationId::

An input variable decorated with code:GlobalInvocationID will contain the
An input variable decorated with code:GlobalInvocationId will contain the
location of the current compute shader invocation within the global
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.
code:LocalInvocationId.
+
The code:GlobalInvocationID decoration must: be used only within compute
The code:GlobalInvocationId decoration must: be used only within compute
shaders.
+
code:GlobalInvocationID must: be declared as a three-component vector of
code:GlobalInvocationId must: be declared as a three-component vector of
32-bit integers.

code:HelperInvocation::
Expand Down Expand Up @@ -839,22 +839,22 @@ constant zero.
====
--

code:InvocationID::
code:InvocationId::

In a geometry shader, an input variable decorated with the code:InvocationID
In a geometry shader, an input variable decorated with the code:InvocationId
decoration contains the index of the current shader invocation, which ranges
from zero to the number of <<geometry-invocations,instances>> declared in
the shader minus one. If the instance count of the geometry shader is one or
is not specified, then code:InvocationID will be zero.
is not specified, then code:InvocationId will be zero.
+
In tessellation control shaders, and input variable decorated with the
code:InvocationID decoration contains the index of the output patch vertex
code:InvocationId decoration contains the index of the output patch vertex
assigned to the tessellation control shader invocation.
+
The code:InvocationID decoration mustnot: be used in vertex, tessellation
The code:InvocationId decoration mustnot: be used in vertex, tessellation
evaluation, fragment, or compute shaders.
+
code:InvocationID must: be declared as a scalar 32-bit integer.
code:InvocationId must: be declared as a scalar 32-bit integer.

code:InstanceIndex::

Expand Down Expand Up @@ -889,42 +889,42 @@ shaders.
+
code:Layer must: be declared as a scalar 32-bit integer.

code:LocalInvocationID::
code:LocalInvocationId::

The code:LocalInvocationID decoration can: be applied to a code:uvec3 input
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
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
The code:LocalInvocationId decoration must: be used only within compute
shaders.
+
code:LocalInvocationID must: be declared as a three-component vector of 32-bit
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.
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.
code:LocalInvocationId.y and code:LocalInvocationId.z will be zero.
====

code:NumWorkGroups::
code:NumWorkgroups::

The code:NumWorkGroups decoration can: be applied to a code:uvec3 input
The code:NumWorkgroups decoration can: be applied to a code:uvec3 input
variable in a compute shader, in which case it will contain the number of
local workgroups that are part of the dispatch that the invocation belongs
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 must: be used only within 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
code:NumWorkgroups must: be declared as a three-component vector of 32-bit
integers.

code:WorkgroupSize::
Expand Down Expand Up @@ -1013,48 +1013,48 @@ shaders and mustnot: be used in fragment or compute shaders.
code:Position must: be declared as a four-component vector of 32-bit
floating-point values.

code:PrimitiveID::
code:PrimitiveId::

When the code:PrimitiveID decoration is applied to an input variable in the
When the code:PrimitiveId decoration is applied to an input variable in the
tessellation control or tessellation evaluation shader, it will be filled
with the index of the patch within the current set of rendering primitives
that corresponds to the shader invocation.
+
When the code:PrimitiveID decoration is applied to an input variable in the
When the code:PrimitiveId decoration is applied to an input variable in the
geometry shader, it will be filled with the number of primitives presented
as input to the geometry shader since the current set of rendering
primitives was started. When code:PrimitiveID is applied to an output in the
primitives was started. When code:PrimitiveId is applied to an output in the
geometry shader, the resulting value is seen as an input to the fragment
shader.
+
When code:PrimitiveID is applied to an input in the fragment shader, it will
When code:PrimitiveId is applied to an input in the fragment shader, it will
be filled with the primitive index written by the geometry shader if a
geometry shader is present, or with the value that would have been presented
as input to the geometry shader had it been present. If a geometry shader is
present and the fragment shader reads from an input variable decorated with
code:PrimitiveID, then the geometry shader must: write to an output variable
decorated with code:PrimitiveID in all execution paths; otherwise the
code:PrimitiveID input in the fragment shader is undefined.
code:PrimitiveId, then the geometry shader must: write to an output variable
decorated with code:PrimitiveId in all execution paths; otherwise the
code:PrimitiveId input in the fragment shader is undefined.
+
The code:PrimitiveID decoration mustnot: be used in vertex or compute
shaders. code:PrimitiveID mustnot: be used on output variables in
The code:PrimitiveId decoration mustnot: be used in vertex or compute
shaders. code:PrimitiveId mustnot: be used on output variables in
tessellation control, tessellation evaluation, or fragment shaders.
+
code:PrimitiveID must: be declared as scalar 32-bit integer.
code:PrimitiveId must: be declared as scalar 32-bit integer.

code:SampleID::
code:SampleId::

The code:SampleID decoration can: be applied to an integer input variable in
The code:SampleId decoration can: be applied to an integer input variable in
the fragment shader. This variable will contain the zero-based index of the
sample the invocation corresponds to. code:SampleID ranges from
sample the invocation corresponds to. code:SampleId ranges from
zero to the number of samples in the framebuffer minus one. If a fragment
shader entry point's interface includes an input variable decorated with
code:SampleID, per-sample shading is enabled for draws that use that
code:SampleId, per-sample shading is enabled for draws that use that
fragment shader.
+
code:SampleID is not available in shader stages other than fragment.
code:SampleId is not available in shader stages other than fragment.
+
code:SampleID must: be declared as a scalar 32-bit integer.
code:SampleId must: be declared as a scalar 32-bit integer.

code:SampleMask::

Expand Down Expand Up @@ -1109,51 +1109,51 @@ 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.

code:TessellationCoord::
code:TessCoord::

The code:TessellationCoord is applied to an input variable in tessellation
The code:TessCoord is applied to an input variable in tessellation
evaluation shaders and specifies the three-dimensional (u,v,w) barycentric
coordinate of the tessellated vertex within the patch. u, v,
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 must: be used only within tessellation
The code:TessCoord decoration must: be used only within tessellation
evaluation shaders.
+
code:TessellationCoord must: be declared as three-component vector of 32-bit
code:TessCoord must: be declared as three-component vector of 32-bit
floating-point values.

code:TessellationLevelOuter::
code:TessLevelOuter::

The code:TessellationLevelOuter decoration is used in tessellation control
The code:TessLevelOuter decoration is used in tessellation control
shaders to decorate an output variable to contain the outer tessellation
factor for the resulting patch. This value is used by the tessellator
to control primitive tessellation and can: be read by
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 must: be used only within
The code:TessLevelOuter decoration must: be used only within
tessellation control and evaluation shaders.
+
code:TessellationLevelOuter must: be declared as an array of size two,
code:TessLevelOuter must: be declared as an array of size two,
containing 32-bit floating-point values.

code:TessellationLevelInner::
code:TessLevelInner::

The code:TessellationLevelInner decoration is used in tessellation control
The code:TessLevelInner decoration is used in tessellation control
shaders to decorate an output variable to contain the inner tessellation
factor for the resulting patch. This value is used by the tessellator to
control primitive tessellation and can: be read by
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 must: be used only within
The code:TessLevelInner decoration must: be used only within
tessellation control and evaluation shaders.
+
code:TessellationLevelInner must: be declared as an array of size four,
code:TessLevelInner must: be declared as an array of size four,
containing 32-bit floating-point values.

code:VertexIndex::
Expand Down Expand Up @@ -1195,16 +1195,16 @@ fragment shaders.
+
code:ViewportIndex must: be declared as a 32-bit integer.

code:WorkgroupID::
code:WorkgroupId::

The code:WorkgroupID built-in decoration can: be applied to an input
The code:WorkgroupId built-in decoration can: be applied to an input
variable in the compute shader. It will contain a three dimensional integer
index of the global workgroup that the current invocation is a member of.
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 must: be used only within 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
code:WorkgroupId must: be declared as a three-component vector of 32-bit
integers.
8 changes: 5 additions & 3 deletions doc/specs/vulkan/chapters/queries.txt
Expand Up @@ -478,10 +478,12 @@ undefined after the query has finished. At least one statistic counter
relevant to the operations supported on the recording command buffer
must: be enabled.

pname:pipelineStatisticsQuery is a bitmask indicating different
possible pipeline statistics.
The pipeline statistic counters are individually enabled for query pools with
sname:VkQueryPoolCreateInfo::pname:pipelineStatistics, and for secondary command
buffers with sname:VkCommandBufferInheritanceInfo::pname:pipelineStatistics.

Valid bits in pname:pipelineStatistics include:

Valid bits in pname:flags include:

include::../enums/VkQueryPipelineStatisticFlagBits.txt[]

Expand Down
8 changes: 4 additions & 4 deletions doc/specs/vulkan/validity/protos/vkCmdExecuteCommands.txt
Expand Up @@ -21,12 +21,12 @@ endif::doctype-manpage[]
* Any given element of pname:pCommandBuffers must: be in the executable state
* If fname:vkCmdExecuteCommands is being called within a render pass instance, that render pass instance must: have been begun with the pname:contents parameter of fname:vkCmdBeginRenderPass set to ename:VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS
* If fname:vkCmdExecuteCommands is being called within a render pass instance, any given element of pname:pCommandBuffers must: have been recorded with the ename:VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT
* If fname:vkCmdExecuteCommands is being called within a render pass instance, any given element of pname:pCommandBuffers must: have been recorded with the pname:subpass member of the pname:inheritanceInfo structure set to the index of the subpass which the given command buffer will be executed in
* If fname:vkCmdExecuteCommands is being called within a render pass instance, any given element of pname:pCommandBuffers must: have been recorded with sname:VkCommandBufferInheritanceInfo::pname:subpass set to the index of the subpass which the given command buffer will be executed in
* If fname:vkCmdExecuteCommands is being called within a render pass instance, any given element of pname:pCommandBuffers must: have been recorded with a render pass that is compatible with the current render pass - see <<renderpass-compatibility>>
* If fname:vkCmdExecuteCommands is being called within a render pass instance, and any given element of pname:pCommandBuffers was recorded with the pname:framebuffer member of the sname:VkCommandBufferInheritanceInfo structure not equal to sname:VK_NULL_HANDLE, that sname:VkFramebuffer must: be compatible with the sname:VkFramebuffer used in the current render pass instance
* If fname:vkCmdExecuteCommands is being called within a render pass instance, and any given element of pname:pCommandBuffers was recorded with sname:VkCommandBufferInheritanceInfo::pname:framebuffer not equal to sname:VK_NULL_HANDLE, that sname:VkFramebuffer must: be compatible with the sname:VkFramebuffer used in the current render pass instance
* If the <<features-features-inheritedQueries,inherited queries>> feature is not enabled, pname:commandBuffer mustnot: have any queries <<queries-operation-active,active>>
* If pname:commandBuffer has a ename:VK_QUERY_TYPE_OCCLUSION query <<queries-operation-active,active>>, then each element of pname:pCommandBuffers must: have been recorded with sname:VkCommandBufferBeginInfo::pname:occlusionQueryEnable set to ename:VK_TRUE
* If pname:commandBuffer has a ename:VK_QUERY_TYPE_OCCLUSION query <<queries-operation-active,active>>, then each element of pname:pCommandBuffers must: have been recorded with sname:VkCommandBufferBeginInfo::pname:queryFlags having all bits set that are set for the query
* If pname:commandBuffer has a ename:VK_QUERY_TYPE_OCCLUSION query <<queries-operation-active,active>>, then each element of pname:pCommandBuffers must: have been recorded with sname:VkCommandBufferInheritanceInfo::pname:occlusionQueryEnable set to ename:VK_TRUE
* If pname:commandBuffer has a ename:VK_QUERY_TYPE_OCCLUSION query <<queries-operation-active,active>>, then each element of pname:pCommandBuffers must: have been recorded with sname:VkCommandBufferInheritanceInfo::pname:queryFlags having all bits set that are set for the query
* If pname:commandBuffer has a ename:VK_QUERY_TYPE_PIPELINE_STATISTICS query <<queries-operation-active,active>>, then each element of pname:pCommandBuffers must: have been recorded with sname:VkCommandBufferInheritanceInfo::pname:pipelineStatistics having all bits set that are set in the sname:VkQueryPool the query uses
* Any given element of pname:pCommandBuffers mustnot: begin any query types that are <<queries-operation-active,active>> in pname:commandBuffer
ifndef::doctype-manpage[]
Expand Down
Expand Up @@ -11,6 +11,7 @@ endif::doctype-manpage[]
* pname:pNext must: be `NULL`
* pname:commandPool must: be a valid sname:VkCommandPool handle
* pname:level must: be a valid elink:VkCommandBufferLevel value
* pname:commandBufferCount must: be greater than `0`
ifndef::doctype-manpage[]
********************************************************************************
endif::doctype-manpage[]
Expand Down

0 comments on commit b3d4802

Please sign in to comment.