Merge branch '1.0' into 1.0-VK_KHR_wayland_surface
This commit is contained in:
commit
ccfaa663ce
|
@ -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.
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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._
|
||||
|
|
|
@ -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]]
|
||||
|
|
|
@ -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::
|
||||
|
@ -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::
|
||||
|
||||
|
@ -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::
|
||||
|
@ -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::
|
||||
|
||||
|
@ -1109,24 +1109,24 @@ 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
|
||||
|
@ -1134,15 +1134,15 @@ 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
|
||||
|
@ -1150,10 +1150,10 @@ 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::
|
||||
|
@ -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.
|
||||
|
|
|
@ -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[]
|
||||
|
||||
|
|
|
@ -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[]
|
||||
|
|
|
@ -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[]
|
||||
|
|
|
@ -1358,7 +1358,7 @@ class ValidityOutputGenerator(OutputGenerator):
|
|||
#
|
||||
# Get the parent of a handle object
|
||||
def getHandleParent(self, typename):
|
||||
types = self.registry.findall("types/type")
|
||||
types = self.registry.tree.findall("types/type")
|
||||
for elem in types:
|
||||
if (elem.find("name") is not None and elem.find('name').text == typename) or elem.attrib.get('name') == typename:
|
||||
return elem.attrib.get('parent')
|
||||
|
@ -1366,7 +1366,7 @@ class ValidityOutputGenerator(OutputGenerator):
|
|||
#
|
||||
# Check if a parent object is dispatchable or not
|
||||
def isHandleTypeDispatchable(self, handlename):
|
||||
handle = self.registry.find("types/type/[name='" + handlename + "'][@category='handle']")
|
||||
handle = self.registry.tree.find("types/type/[name='" + handlename + "'][@category='handle']")
|
||||
if handle is not None and handle.find('type').text == 'VK_DEFINE_HANDLE':
|
||||
return True
|
||||
else:
|
||||
|
@ -1399,7 +1399,7 @@ class ValidityOutputGenerator(OutputGenerator):
|
|||
#
|
||||
# Get the category of a type
|
||||
def getTypeCategory(self, typename):
|
||||
types = self.registry.findall("types/type")
|
||||
types = self.registry.tree.findall("types/type")
|
||||
for elem in types:
|
||||
if (elem.find("name") is not None and elem.find('name').text == typename) or elem.attrib.get('name') == typename:
|
||||
return elem.attrib.get('category')
|
||||
|
@ -1607,7 +1607,7 @@ class ValidityOutputGenerator(OutputGenerator):
|
|||
# Try to do check if a structure is always considered valid (i.e. there's no rules to its acceptance)
|
||||
def isStructAlwaysValid(self, structname):
|
||||
|
||||
struct = self.registry.find("types/type[@name='" + structname + "']")
|
||||
struct = self.registry.tree.find("types/type[@name='" + structname + "']")
|
||||
|
||||
params = struct.findall('member')
|
||||
validity = struct.find('validity')
|
||||
|
@ -1651,7 +1651,7 @@ class ValidityOutputGenerator(OutputGenerator):
|
|||
asciidoc += self.makeAsciiDocLineForParameter(param, params, '')
|
||||
elif typecategory == 'bitmask':
|
||||
bitsname = paramtype.text.replace('Flags', 'FlagBits')
|
||||
if self.registry.find("enums[@name='" + bitsname + "']") is None:
|
||||
if self.registry.tree.find("enums[@name='" + bitsname + "']") is None:
|
||||
asciidoc += '* '
|
||||
asciidoc += self.makeParameterName(paramname.text)
|
||||
asciidoc += ' must: be `0`'
|
||||
|
@ -1747,12 +1747,26 @@ class ValidityOutputGenerator(OutputGenerator):
|
|||
validextensionstructs = param.attrib.get('validextensionstructs')
|
||||
asciidoc += ' must: be `NULL`'
|
||||
if validextensionstructs is not None:
|
||||
extensionstructs = ['slink:' + x for x in validextensionstructs.split(',')]
|
||||
asciidoc += ', or a pointer to a valid instance of '
|
||||
if len(extensionstructs) == 1:
|
||||
asciidoc += validextensionstructs
|
||||
else:
|
||||
asciidoc += (', ').join(extensionstructs[:-1]) + ' or ' + extensionstructs[-1]
|
||||
extensionstructs = []
|
||||
# Check each structure name and skip it if not required by the
|
||||
# generator. This allows tagging extension structs in the XML
|
||||
# that are only included in validity when needed for the spec
|
||||
# being targeted.
|
||||
for struct in validextensionstructs.split(','):
|
||||
# Unpleasantly breaks encapsulation. Should be a method in the registry class
|
||||
type = self.registry.lookupElementInfo(struct, self.registry.typedict)
|
||||
if (type == None):
|
||||
self.logMsg('warn', 'makeStructureExtensionPointer: struct', struct, 'is in a validextensionstructs= attribute but is not in the registry')
|
||||
elif (type.required):
|
||||
extensionstructs.append('slink:' + struct)
|
||||
else:
|
||||
self.logMsg('diag', 'makeStructureExtensionPointer: struct', struct, 'IS NOT required')
|
||||
if len(extensionstructs) > 0:
|
||||
asciidoc += ', or a pointer to a valid instance of '
|
||||
if len(extensionstructs) == 1:
|
||||
asciidoc += extensionstructs[0]
|
||||
else:
|
||||
asciidoc += (', ').join(extensionstructs[:-1]) + ' or ' + extensionstructs[-1]
|
||||
|
||||
asciidoc += '\n'
|
||||
|
||||
|
|
|
@ -217,7 +217,7 @@ class Registry:
|
|||
def setGenerator(self, gen):
|
||||
"""Specify output generator object. None restores the default generator"""
|
||||
self.gen = gen
|
||||
self.gen.setRegistry(self.tree)
|
||||
self.gen.setRegistry(self)
|
||||
|
||||
# addElementInfo - add information about an element to the
|
||||
# corresponding dictionary
|
||||
|
|
|
@ -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> 13</type>
|
||||
#define <name>VK_HEADER_VERSION</name> 14</type>
|
||||
|
||||
<type category="define">
|
||||
#define <name>VK_DEFINE_HANDLE</name>(object) typedef struct object##_T* object;</type>
|
||||
|
@ -1106,7 +1106,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
|
|||
<type category="struct" name="VkDescriptorSetAllocateInfo">
|
||||
<member><type>VkStructureType</type> <name>sType</name></member> <!-- Must be VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO -->
|
||||
<member>const <type>void</type>* <name>pNext</name></member> <!-- Pointer to next structure -->
|
||||
<member><type>VkDescriptorPool</type> <name>descriptorPool</name></member>
|
||||
<member><type>VkDescriptorPool</type> <name>descriptorPool</name></member>
|
||||
<member><type>uint32_t</type> <name>descriptorSetCount</name></member>
|
||||
<member len="descriptorSetCount">const <type>VkDescriptorSetLayout</type>* <name>pSetLayouts</name></member>
|
||||
<validity>
|
||||
|
@ -1486,7 +1486,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
|
|||
<type category="struct" name="VkCommandPoolCreateInfo">
|
||||
<member><type>VkStructureType</type> <name>sType</name></member> <!-- Must be VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO -->
|
||||
<member>const <type>void</type>* <name>pNext</name></member> <!-- Pointer to next structure -->
|
||||
<member optional="true"><type>VkCommandPoolCreateFlags</type> <name>flags</name></member> <!-- Command pool creation flags -->
|
||||
<member optional="true"><type>VkCommandPoolCreateFlags</type> <name>flags</name></member> <!-- Command pool creation flags -->
|
||||
<member><type>uint32_t</type> <name>queueFamilyIndex</name></member>
|
||||
<validity>
|
||||
<usage>pname:queueFamilyIndex must: be the index of a queue family available in the calling command's pname:device parameter</usage>
|
||||
|
@ -1495,9 +1495,12 @@ maintained in the master branch of the Khronos Vulkan Github project.
|
|||
<type category="struct" name="VkCommandBufferAllocateInfo">
|
||||
<member><type>VkStructureType</type> <name>sType</name></member> <!-- Must be VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO -->
|
||||
<member>const <type>void</type>* <name>pNext</name></member> <!-- Pointer to next structure -->
|
||||
<member><type>VkCommandPool</type> <name>commandPool</name></member>
|
||||
<member><type>VkCommandBufferLevel</type> <name>level</name></member>
|
||||
<member><type>VkCommandPool</type> <name>commandPool</name></member>
|
||||
<member><type>VkCommandBufferLevel</type> <name>level</name></member>
|
||||
<member><type>uint32_t</type> <name>commandBufferCount</name></member>
|
||||
<validity>
|
||||
<usage>pname:commandBufferCount must: be greater than `0`</usage>
|
||||
</validity>
|
||||
</type>
|
||||
<type category="struct" name="VkCommandBufferInheritanceInfo">
|
||||
<member><type>VkStructureType</type> <name>sType</name></member> <!-- Must be VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO -->
|
||||
|
@ -4486,12 +4489,12 @@ maintained in the master branch of the Khronos Vulkan Github project.
|
|||
<usage>Any given element of pname:pCommandBuffers must: be in the executable state</usage>
|
||||
<usage>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</usage>
|
||||
<usage>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</usage>
|
||||
<usage>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</usage>
|
||||
<usage>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</usage>
|
||||
<usage>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>></usage>
|
||||
<usage>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</usage>
|
||||
<usage>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</usage>
|
||||
<usage>If the <<features-features-inheritedQueries,inherited queries>> feature is not enabled, pname:commandBuffer mustnot: have any queries <<queries-operation-active,active>></usage>
|
||||
<usage>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</usage>
|
||||
<usage>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</usage>
|
||||
<usage>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</usage>
|
||||
<usage>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</usage>
|
||||
<usage>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</usage>
|
||||
<usage>Any given element of pname:pCommandBuffers mustnot: begin any query types that are <<queries-operation-active,active>> in pname:commandBuffer</usage>
|
||||
</validity>
|
||||
|
|
|
@ -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 13
|
||||
#define VK_HEADER_VERSION 14
|
||||
|
||||
|
||||
#define VK_NULL_HANDLE 0
|
||||
|
|
Loading…
Reference in New Issue