Merge branch '1.0' into 1.0-VK_KHR_wayland_surface
This commit is contained in:
commit
4f3c5d5f9e
|
@ -33,8 +33,8 @@ Status
|
|||
|
||||
Version
|
||||
|
||||
Last Modified Date: 10-Feb-2016
|
||||
Revision: 25
|
||||
Last Modified Date: 28-Feb-2016
|
||||
Revision: 27
|
||||
|
||||
Number
|
||||
|
||||
|
@ -82,6 +82,7 @@ Overview
|
|||
* gl_FragColor will no longer indicate an implicit broadcast
|
||||
* arrays of opaque uniforms take only one binding number for
|
||||
the entire object, not one per array element
|
||||
* the default origin is origin_upper_left instead of origin_lower_left
|
||||
|
||||
Each of these is discussed in more detail below.
|
||||
|
||||
|
@ -699,9 +700,26 @@ Changes to Chapter 4 of the OpenGL Shading Language Specification
|
|||
|
||||
(Making all stages have the same rule that dvec3 takes two locations...)
|
||||
|
||||
Change section 4.4.1.3 "Fragment Shader Inputs" from
|
||||
|
||||
"By default, gl_FragCoord assumes a lower-left origin for window
|
||||
coordinates ... For example, the (x, y) location (0.5, 0.5) is
|
||||
returned for the lowerleft-most pixel in a window. The origin can be
|
||||
changed by redeclaring gl_FragCoord with the
|
||||
origin_upper_left identifier."
|
||||
|
||||
To
|
||||
|
||||
"The gl_FragCoord built-in variable assumes an upper-left origin for
|
||||
window coordinates ... For example, the (x, y) location (0.5, 0.5) is
|
||||
returned for the upper-left-most pixel in a window. The origin can be
|
||||
explicitly set by redeclaring gl_FragCoord with the origin_upper_left
|
||||
identifier. It is a compile-time error to change it to
|
||||
origin_lower_left."
|
||||
|
||||
Add to the end of section 4.4.3 Uniform Variable Layout Qualifiers:
|
||||
|
||||
The /push_constant/ identifier is used to declare an entire block, and
|
||||
"The /push_constant/ identifier is used to declare an entire block, and
|
||||
represents a set of "push constants", as defined by the API. It is a
|
||||
compile-time error to apply this to anything other than a uniform block
|
||||
declaration. The values in the block will be initialized through the
|
||||
|
@ -712,22 +730,22 @@ Changes to Chapter 4 of the OpenGL Shading Language Specification
|
|||
push-constant array can only be indexed with dynamically uniform indexes.
|
||||
Uniform blocks declared with push_constant use different resources
|
||||
than those without; and are accounted for separately. See the API
|
||||
specification for more detail.
|
||||
specification for more detail."
|
||||
|
||||
After the paragraphs about binding ("The binding identifier..."), add
|
||||
|
||||
The /set/ identifier specifies the descriptor set this object belongs to.
|
||||
"The /set/ identifier specifies the descriptor set this object belongs to.
|
||||
It is a compile-time error to apply to just a qualifier or a member of a
|
||||
block. Any uniform or shader storage block declared without a /set/
|
||||
identifier is assigned to descriptor set 0. Similarly, any sampler,
|
||||
texture, or subpass input type declared as a uniform, but without a
|
||||
/set/ identifier is also assigned to descriptor set 0.
|
||||
|
||||
If applied to an object declared as an array, all elements of the array
|
||||
"If applied to an object declared as an array, all elements of the array
|
||||
belong to the specified /set/.
|
||||
|
||||
It is a compile-time error for either the /set/ or /binding/ value
|
||||
to exceed a front-end-configuration supplied maximum value.
|
||||
"It is a compile-time error for either the /set/ or /binding/ value
|
||||
to exceed a front-end-configuration supplied maximum value."
|
||||
|
||||
Change section 4.4.6 Opaque-Uniform Layout Qualifiers:
|
||||
|
||||
|
@ -802,6 +820,11 @@ Changes to Chapter 4 of the OpenGL Shading Language Specification
|
|||
int d[aSize + pad]; // different type than a, b, or c
|
||||
int e[aSize + 2]; // different type than a, b, c, or d
|
||||
|
||||
"Types containing arrays sized with a specialization constant cannot be
|
||||
compared, assigned as aggregates, or used in initializers. They can,
|
||||
however, be passed as arguments to functions having formal parameters of
|
||||
the same type.
|
||||
|
||||
"Arrays inside a block may be sized with a specialization constant, but
|
||||
the block will have a static layout. Changing the specialized size will
|
||||
not re-layout the block. In the absence of explicit offsets, the layout
|
||||
|
@ -1129,6 +1152,8 @@ Revision History
|
|||
|
||||
Rev. Date Author Changes
|
||||
---- ----------- ------- --------------------------------------------
|
||||
27 28-Feb-2016 JohnK Make the default by origin_upper_left
|
||||
26 17-Feb-2016 JohnK Expand specialized array semantics
|
||||
25 10-Feb-2016 JohnK Incorporate resolutions from the face to face
|
||||
24 28-Jan-2016 JohnK Update the resolutions from the face to face
|
||||
23 6-Jan-2016 Piers Remove support for gl_VertexID and
|
||||
|
|
|
@ -126,7 +126,7 @@ INCLUDES := $(wildcard protos/*.txt structs/*.txt flags/*.txt enums/*.txt funcpo
|
|||
COMMONDOCS := $(CHAPTERS) $(INCLUDES)
|
||||
# A generate included file with the spec version, date, and git commit
|
||||
SPECVERSION = specversion.txt
|
||||
SPECREVISION = 1.0.4
|
||||
SPECREVISION = 1.0.5
|
||||
SPECREMARK =
|
||||
|
||||
# Spec targets
|
||||
|
|
|
@ -423,7 +423,7 @@ Mip Tail Region::
|
|||
and opaquely.
|
||||
|
||||
Non-Dispatchable Handle::
|
||||
A handle of an integer handle type. Handle values maynot: be unique,
|
||||
A handle of an integer handle type. Handle values may: not be unique,
|
||||
even for two objects of the same type.
|
||||
|
||||
Normalized::
|
||||
|
|
|
@ -145,7 +145,7 @@ instructions:
|
|||
- Any denormalized value input into a shader or potentially generated by
|
||||
any instruction in a shader may: be flushed to 0.
|
||||
- The rounding mode cannot: be set and is undefined.
|
||||
- NaNs maynot: be generated. Instructions that operate on a NaN maynot:
|
||||
- NaNs may: not be generated. Instructions that operate on a NaN may: not
|
||||
result in a NaN.
|
||||
- Support for signaling NaNs is optional: and exceptions are never raised.
|
||||
|
||||
|
|
|
@ -36,7 +36,7 @@ otherwise the behavior of executing that command buffer is undefined.
|
|||
Unless otherwise specified, and without explicit synchronization, the
|
||||
various commands submitted to a queue via command buffers may: execute in
|
||||
arbitrary order relative to each other, and/or concurrently. Also, the
|
||||
memory side-effects of those commands maynot: be directly visible to other
|
||||
memory side-effects of those commands may: not be directly visible to other
|
||||
commands without memory barriers. This is true within a command buffer, and
|
||||
across command buffers submitted to a given queue. See
|
||||
<<synchronization-events>>, <<synchronization-pipeline-barriers>> and
|
||||
|
|
|
@ -1168,10 +1168,13 @@ include::../validity/structs/VkDescriptorSetAllocateInfo.txt[]
|
|||
When a descriptor set is allocated, the initial state is largely
|
||||
uninitialized and all descriptors are undefined. However,
|
||||
the descriptor set can: be bound
|
||||
in a command buffer without causing errors or exceptions. Entries must: be
|
||||
populated before they are accessed by a pipeline, but leaving uninitialized
|
||||
entries that are not accessed by a pipeline will produce well-defined
|
||||
results. This means applications need not populate unused entries with dummy
|
||||
in a command buffer without causing errors or exceptions. All entries that
|
||||
are statically used by a pipeline in a drawing or dispatching command must:
|
||||
have been populated before the descriptor set is bound for use by that command.
|
||||
Entries that are not statically used by a pipeline can: have uninitialized
|
||||
descriptors or descriptors of resources that have been destroyed, and executing
|
||||
a draw or dispatch with such a descriptor set bound does not cause undefined
|
||||
behavior. This means applications need not populate unused entries with dummy
|
||||
descriptors.
|
||||
|
||||
Allocated descriptor sets are freed by calling:
|
||||
|
@ -1353,7 +1356,7 @@ sname:VkWriteDescriptorSet structure must: have identical
|
|||
pname:descriptorType and pname:stageFlags, and must: all either use
|
||||
immutable samplers or must: all not use immutable samplers.
|
||||
|
||||
Each element in the pname:pDescriptorCopies array in a
|
||||
Each element in the pname:pDescriptorCopies array is a
|
||||
sname:VkCopyDescriptorSet structure describing an operation copying
|
||||
descriptors between sets. The definition of sname:VkCopyDescriptorSet is:
|
||||
|
||||
|
|
|
@ -36,7 +36,10 @@ return the variable is overwritten with the number of structures actually
|
|||
written to pname:pPhysicalDevices. If the value of
|
||||
pname:pPhysicalDeviceCount is less than the number of physical devices
|
||||
available, at most pname:pPhysicalDeviceCount structures will be
|
||||
written.
|
||||
written. If pname:pPhysicalDeviceCount is smaller than the number of
|
||||
physical devices available, ename:VK_INCOMPLETE will be returned instead of
|
||||
ename:VK_SUCCESS, to indicate that not all the available physical devices
|
||||
were returned.
|
||||
|
||||
include::../validity/protos/vkEnumeratePhysicalDevices.txt[]
|
||||
|
||||
|
@ -69,8 +72,8 @@ The members of sname:VkPhysicalDeviceProperties have the following meanings:
|
|||
devices available from the vendor.
|
||||
* pname:deviceType is a elink:VkPhysicalDeviceType specifying the type of
|
||||
device.
|
||||
* pname:deviceName is a pointer to a null-terminated UTF-8 string
|
||||
containing the name of the device.
|
||||
* pname:deviceName is a null-terminated UTF-8 string containing the name
|
||||
of the device.
|
||||
* pname:pipelineCacheUUID is an array of size ename:VK_UUID_SIZE,
|
||||
containing 8-bit values that represent a universally unique identifier
|
||||
for the device.
|
||||
|
@ -202,6 +205,17 @@ operations, at least one queue family of at least one physical device
|
|||
exposed by the implementation must: support both graphics and compute
|
||||
operations.
|
||||
|
||||
[NOTE]
|
||||
.Note
|
||||
====
|
||||
All commands that are allowed on a queue that supports transfer operations
|
||||
are also allowed on a queue that supports either graphics or compute
|
||||
operations thus if the capabilities of a queue family include
|
||||
ename:VK_QUEUE_GRAPHICS_BIT or ename:VK_QUEUE_COMPUTE_BIT then
|
||||
reporting the ename:VK_QUEUE_TRANSFER_BIT capability separately for that
|
||||
queue family is optional:.
|
||||
====
|
||||
|
||||
include::../validity/structs/VkQueueFamilyProperties.txt[]
|
||||
|
||||
For further details see <<devsandqueues-queues,Queues>>.
|
||||
|
@ -408,7 +422,8 @@ error is largely informational and intended only to inform the user that
|
|||
their hardware has probably developed a fault or become physically
|
||||
disconnected, and should: be investigated further. In many cases, physical
|
||||
device loss may: cause other more serious issues such as the operating
|
||||
system crashing; in which case it maynot: be reported via the {apiname} API.
|
||||
system crashing; in which case it may: not be reported via the {apiname}
|
||||
API.
|
||||
====
|
||||
|
||||
[NOTE]
|
||||
|
|
|
@ -73,8 +73,8 @@ pname:pProperties. If the value of 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 properties were
|
||||
returned.
|
||||
ename:VK_SUCCESS, to indicate that not all the available layer properties
|
||||
were returned.
|
||||
|
||||
The definition of sname:VkLayerProperties is:
|
||||
|
||||
|
@ -111,7 +111,7 @@ Extensions may: define new {apiname} commands, structures, and enumerants.
|
|||
For compilation purposes, the interfaces defined by registered extensions,
|
||||
including new structures and enumerants as well as function pointer types
|
||||
for new commands, are defined in the Khronos-supplied +vulkan.h+ together
|
||||
with the core API. However, commands defined by extensions maynot: be
|
||||
with the core API. However, commands defined by extensions may: not be
|
||||
available for static linking - in which case function pointers to these
|
||||
commands should: be queried at runtime as described in
|
||||
<<initialization-functionpointers>>. Extensions may: be provided by layers
|
||||
|
|
|
@ -1453,7 +1453,7 @@ the same whether or not the feature is enabled.
|
|||
* 128.
|
||||
--
|
||||
+
|
||||
It maynot: be possible to reach this limit in every stage.
|
||||
It may: not be possible to reach this limit in every stage.
|
||||
|
||||
3::
|
||||
Maximum image attachment size or maximum display size
|
||||
|
@ -3060,9 +3060,18 @@ ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT::
|
|||
pname:magFilter or pname:minFilter set to ename:VK_FILTER_LINEAR,
|
||||
or pname:mipmapMode set to ename:VK_SAMPLER_MIPMAP_MODE_LINEAR. This bit
|
||||
must: only be exposed for formats that also support the
|
||||
ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT. If the format being
|
||||
queried is a depth/stencil format, this only indicates that the
|
||||
depth aspect is linearly filterable.
|
||||
ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT.
|
||||
+
|
||||
If the format being queried is a depth/stencil format, this bit only indicates
|
||||
that the depth aspect (not the stencil aspect) supports linear filtering,
|
||||
and that linear filtering of the depth aspect is supported whether depth
|
||||
compare is enabled in the sampler or not. If this bit is not present,
|
||||
linear filtering with depth compare disabled is unsupported and linear
|
||||
filtering with depth compare enabled is supported, but may: compute the
|
||||
filtered value in an implementation-dependent manner which differs from
|
||||
the normal rules of linear filtering. The resulting value must: be in the
|
||||
range latexmath:[$[0,1\]$] and should: be proportional to, or a weighted
|
||||
average of, the number of comparison passes or failures.
|
||||
|
||||
The pname:bufferFeatures member of the sname:VkFormatProperties structure
|
||||
describes what features are supported by buffers.
|
||||
|
|
|
@ -216,7 +216,7 @@ a dispatchable type must: have a unique handle value during its lifetime.
|
|||
_Non-dispatchable_ handle types are a 64-bit integer type whose meaning is
|
||||
implementation-dependent, and may: encode object information directly in the
|
||||
handle rather than pointing to a software structure. Objects of a
|
||||
non-dispatchable type maynot: have unique handle values within a type or
|
||||
non-dispatchable type may: not have unique handle values within a type or
|
||||
across types. If handle values are not unique, then destroying one such
|
||||
handle mustnot: cause identical handles of other types to become invalid,
|
||||
and mustnot: cause identical handles of the same type to become invalid if
|
||||
|
|
|
@ -67,7 +67,7 @@ it.
|
|||
endif::editing-notes[]
|
||||
|
||||
In order to support systems with multiple {apiname} implementations
|
||||
comprising heterogenous collections of hardware and software, the function
|
||||
comprising heterogeneous collections of hardware and software, the function
|
||||
pointers returned by fname:vkGetInstanceProcAddr may: point to dispatch
|
||||
code, which calls a different real implementation for different
|
||||
sname:VkDevice objects (and objects created from them). The overhead of this
|
||||
|
|
|
@ -636,8 +636,8 @@ out according to the following rules.
|
|||
** a column-major matrix has a base alignment equal to the base
|
||||
alignment of the matrix column type
|
||||
+
|
||||
* Any code:ArrayStride or code:MatrixStride decoration must equal the base
|
||||
alignment of the array or matrix from above.
|
||||
* Any code:ArrayStride or code:MatrixStride decoration must: be an integer
|
||||
multiple of the base alignment of the array or matrix from above.
|
||||
|
||||
[NOTE]
|
||||
.Note
|
||||
|
@ -754,8 +754,7 @@ code:FragDepth, a shader must: declare the code:DepthReplacing execution
|
|||
mode. If a shader declares the code:DepthReplacing execution mode and there
|
||||
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. That is, if the fragment shader enables depth
|
||||
replacing, then it must: always write it.
|
||||
that take that path.
|
||||
+
|
||||
The code:FragDepth decoration is only supported in fragment shaders.
|
||||
+
|
||||
|
|
|
@ -183,7 +183,7 @@ August, 2008.
|
|||
[[Khronos Data Format Specification]]:: A. Garrard, _Khronos Data Format
|
||||
Specification, version 1.1_,
|
||||
https://www.khronos.org/registry/dataformat/specs/1.1/dataformat.1.1.html,
|
||||
February 16, 2015.
|
||||
February 26, 2016.
|
||||
|
||||
[[Khronos SPIR-V Extended Instructions for GLSL Specification]]:: J.
|
||||
Kessenich, _SPIR-V Extended Instructions for GLSL, Version 1.00_,
|
||||
|
|
|
@ -262,6 +262,8 @@ If pname:pfnAllocation or pname:pfnReallocation fail, the implementation
|
|||
may: fail object creation and/or generate an
|
||||
ename:VK_ERROR_OUT_OF_HOST_MEMORY error, as appropriate.
|
||||
|
||||
Allocation callbacks mustnot: call any {apiname} commands.
|
||||
|
||||
The following sets of rules define when an implementation is permitted to
|
||||
call the allocator callbacks.
|
||||
|
||||
|
@ -559,7 +561,7 @@ buffers queued for execution. The memory can: remain bound to images or
|
|||
buffers at the time the memory object is freed, but any further use of them
|
||||
(on host or device) for anything other than destroying those objects will
|
||||
result in undefined behavior. If there are still any bound images or
|
||||
buffers, the memory maynot: be immediately released by the implementation,
|
||||
buffers, the memory may: not be immediately released by the implementation,
|
||||
but must: be released by the time all bound images and buffers have been
|
||||
destroyed. Once memory is released, it is returned to the heap from which it
|
||||
was allocated.
|
||||
|
@ -567,6 +569,8 @@ was allocated.
|
|||
How memory objects are bound to Images and Buffers is described in detail in
|
||||
the <<resources-association, Resource Memory Association>> section.
|
||||
|
||||
If a memory object is mapped at the time it is freed, it is implicitly
|
||||
unmapped.
|
||||
|
||||
[[memory-device-hostaccess]]
|
||||
=== Host Access to Device Memory Objects
|
||||
|
@ -614,14 +618,14 @@ endif::editing-notes[]
|
|||
fname:vkMapMemory does not check whether the device memory is currently in
|
||||
use before returning the host-accessible pointer. The application
|
||||
must: guarantee that any previously submitted command that writes to this
|
||||
sub-range has completed before the host reads from or writes to that
|
||||
sub-range, and that any previously submitted command that reads from that
|
||||
sub-range has completed before the host writes to that region (see
|
||||
range has completed before the host reads from or writes to that
|
||||
range, and that any previously submitted command that reads from that
|
||||
range has completed before the host writes to that region (see
|
||||
<<synchronization-fences-devicewrites, here>>
|
||||
for details on fulfilling such a guarantee). If the device memory was
|
||||
allocated without the ename:VK_MEMORY_PROPERTY_HOST_COHERENT_BIT set,
|
||||
these guarantees must: be made for an extended sub-range: the application
|
||||
must: round down the start of the sub-range to the previous multiple of
|
||||
these guarantees must: be made for an extended range: the application
|
||||
must: round down the start of the range to the nearest multiple of
|
||||
sname:VkPhysicalDeviceLimits::pname:nonCoherentAtomSize, and round the end
|
||||
of the range up to the nearest multiple of
|
||||
sname:VkPhysicalDeviceLimits::pname:nonCoherentAtomSize.
|
||||
|
|
|
@ -493,7 +493,7 @@ 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 is
|
||||
subsequent run. The contents and size of the pipeline cache objects are
|
||||
managed by the implementation. Applications can: control the amount of data
|
||||
retrieved from a pipeline cache object.
|
||||
|
||||
|
@ -565,8 +565,8 @@ include::../validity/protos/vkMergePipelineCaches.txt[]
|
|||
.Note
|
||||
====
|
||||
The details of the merge operation are implementation dependent, but
|
||||
implementations are recommended: to merge the contents of the specified
|
||||
pipelines and prune duplicate entries.
|
||||
implementations should: merge the contents of the specified pipelines and
|
||||
prune duplicate entries.
|
||||
====
|
||||
|
||||
Data can: be retrieved from a pipeline cache object using the command:
|
||||
|
@ -631,10 +631,14 @@ The first four bytes encode the length of the entire pipeline header, in
|
|||
bytes. This value includes all fields in the header including the pipeline
|
||||
cache version field and the size of the length field.
|
||||
|
||||
The next four bytes encode the pipeline cache version.
|
||||
This field is a elink:VkPipelineCacheHeaderVersion value.
|
||||
A consumer of the pipeline cache should use this value to interpret the
|
||||
remainder of the cache header.
|
||||
The next four bytes encode the pipeline cache version. This field is
|
||||
interpreted as an elink:VkPipelineCacheHeaderVersion value, and must:
|
||||
have one of the following values:
|
||||
|
||||
include::../enums/VkPipelineCacheHeaderVersion.txt[]
|
||||
|
||||
A consumer of the pipeline cache should use the cache version to interpret
|
||||
the remainder of the cache header.
|
||||
|
||||
If the value of pname:dataSize is less than what is necessary to store this
|
||||
header, nothing will be written to pname:pData and zero will be written to
|
||||
|
@ -787,8 +791,6 @@ Now to specialize the above via the specialization constants mechanism:
|
|||
|
||||
[source,{basebackend@docbook:c++:cpp}]
|
||||
---------------------------------------------------
|
||||
VkSpecializationMapEntry entries[2];
|
||||
|
||||
const VkSpecializationMapEntry entries[] =
|
||||
{
|
||||
{
|
||||
|
|
|
@ -87,9 +87,9 @@ as follows:
|
|||
is generated based on the value of the alpha component of the fragment's
|
||||
first color output as specified in the <<fragops-covg,Multisample
|
||||
Coverage>> section.
|
||||
* pname:alphaToOneEnable controls whether the value of the alpha component of
|
||||
the fragment's first color output is replaced with one as described in
|
||||
<<fragops-covg,Multisample Coverage>>.
|
||||
* pname:alphaToOneEnable controls whether the value of the alpha component
|
||||
of the fragment's first color output is replaced with one as described
|
||||
in <<fragops-covg,Multisample Coverage>>.
|
||||
|
||||
include::../validity/structs/VkPipelineMultisampleStateCreateInfo.txt[]
|
||||
|
||||
|
|
|
@ -270,7 +270,7 @@ results for that query. In this case, fname:vkGetQueryPoolResults is
|
|||
guaranteed to succeed and return ename:VK_SUCCESS if the queries
|
||||
become available in a finite time (i.e. if they have been issued and not
|
||||
reset). If queries will never finish (e.g. due to being reset but not
|
||||
issued), then fname:vkGetQueryPoolResults maynot: return in finite time.
|
||||
issued), then fname:vkGetQueryPoolResults may: not return in finite time.
|
||||
|
||||
[[queries-wait-bit-not-set]]
|
||||
If ename:VK_QUERY_RESULT_WAIT_BIT and ename:VK_QUERY_RESULT_PARTIAL_BIT
|
||||
|
@ -410,9 +410,9 @@ include::../validity/protos/vkCmdCopyQueryPoolResults.txt[]
|
|||
|
||||
[[queries-operation-undefined]]
|
||||
Rendering operations such as clears, MSAA resolves, attachment load/store
|
||||
operations, and blits may: or maynot: count towards the results of queries.
|
||||
This behavior is implementation-dependent and may: vary depending on the
|
||||
path used within an implementation. For example, some implementations have
|
||||
operations, and blits may: count towards the results of queries. This
|
||||
behavior is implementation-dependent and may: vary depending on the path
|
||||
used within an implementation. For example, some implementations have
|
||||
several types of clears, some of which may: include vertices and some not.
|
||||
|
||||
|
||||
|
@ -490,14 +490,13 @@ These bits have the following meanings:
|
|||
|
||||
* If ename:VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT is set,
|
||||
queries managed by the pool will count the number of vertices processed
|
||||
by the <<drawing,input assembly>> stage. Vertices
|
||||
corresponding to incomplete primitives may: or maynot: contribute to the
|
||||
count.
|
||||
by the <<drawing,input assembly>> stage. Vertices corresponding to
|
||||
incomplete primitives may: contribute to the count.
|
||||
* If ename:VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT is
|
||||
set, queries managed by the pool will count the number of primitives
|
||||
processed by the <<drawing,input assembly>> stage. If
|
||||
primitive restart is enabled, restarting the primitive topology has no
|
||||
effect on the count. Incomplete primitives may: or maynot: be counted.
|
||||
processed by the <<drawing,input assembly>> stage. If primitive restart
|
||||
is enabled, restarting the primitive topology has no effect on the
|
||||
count. Incomplete primitives may: be counted.
|
||||
* If ename:VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT is
|
||||
set, queries managed by the pool will count the number of vertex shader
|
||||
invocations. This counter's value is incremented each time a vertex
|
||||
|
@ -571,7 +570,7 @@ multiple times, affecting some of the counts.
|
|||
If a pipeline has pname:rasterizerDiscardEnable enabled, implementations
|
||||
may: discard primitives after the final vertex processing stage. As a
|
||||
result, if pname:rasterizerDiscardEnable is enabled, the clipping input and
|
||||
output primitives counters maynot: be incremented.
|
||||
output primitives counters may: not be incremented.
|
||||
|
||||
When a pipeline statistics query finishes, the result for that query is
|
||||
marked as available. The application can: copy the result to a
|
||||
|
|
|
@ -196,7 +196,7 @@ pname:storeOp apply only to the depth data, while pname:stencilLoadOp and
|
|||
pname:stencilStoreOp define how the stencil data is handled.
|
||||
|
||||
[[renderpass-precision]]
|
||||
During a renderpass instance, input/color attachments with color formats
|
||||
During a render pass instance, input/color attachments with color formats
|
||||
that have a component size of 8, 16, or 32 bits must: be represented in the
|
||||
attachment's format throughout the instance. Attachments with other
|
||||
floating- or fixed-point color formats, or with depth components may: be
|
||||
|
@ -357,7 +357,7 @@ The sname:VkSubpassDependency structure is defined as:
|
|||
|
||||
include::../structs/VkSubpassDependency.txt[]
|
||||
|
||||
* pname:srcSubpass and pname:dstSubpass are the subpass indexes of the
|
||||
* pname:srcSubpass and pname:dstSubpass are the subpass indices of the
|
||||
producer and consumer subpasses, respectively. pname:srcSubpass and
|
||||
pname:dstSubpass can: also have the special value
|
||||
ename:VK_SUBPASS_EXTERNAL. The source subpass must: always be a lower
|
||||
|
@ -770,9 +770,9 @@ restricted to the pixels whose x and y coordinates fall within the render
|
|||
area on all attachments. The render area extends to all layers of
|
||||
pname:framebuffer. The application must: ensure (using scissor if necessary)
|
||||
that all rendering is contained within the render area, otherwise the pixels
|
||||
outside of the render area become undefined and shader side effects may: or
|
||||
maynot: occur for fragments outside the render area. The render area must:
|
||||
be contained within the framebuffer dimensions.
|
||||
outside of the render area become undefined and shader side effects may:
|
||||
occur for fragments outside the render area. The render area must: be
|
||||
contained within the framebuffer dimensions.
|
||||
|
||||
[NOTE]
|
||||
.Note
|
||||
|
@ -823,7 +823,7 @@ include::../protos/vkCmdNextSubpass.txt[]
|
|||
|
||||
include::../validity/protos/vkCmdNextSubpass.txt[]
|
||||
|
||||
The subpasses indices for a render pass begin at zero when
|
||||
The subpass index for a render pass begins at zero when
|
||||
fname:vkCmdBeginRenderPass is recorded, and increments each time
|
||||
fname:vkCmdNextSubpass is recorded.
|
||||
|
||||
|
|
|
@ -286,7 +286,7 @@ flink:vkGetPhysicalDeviceImageFormatProperties command.
|
|||
Images created with pname:tiling equal to ename:VK_IMAGE_TILING_LINEAR have
|
||||
further restrictions on their limits and capabilities compared to images
|
||||
created with pname:tiling equal to ename:VK_IMAGE_TILING_OPTIMAL. Creation
|
||||
of images with tiling ename:VK_IMAGE_TILING_LINEAR maynot: be supported
|
||||
of images with tiling ename:VK_IMAGE_TILING_LINEAR may: not be supported
|
||||
unless other parameters meet all of the constraints:
|
||||
|
||||
* pname:imageType is ename:VK_IMAGE_TYPE_2D
|
||||
|
@ -1017,14 +1017,14 @@ optimal image resources must be placed in adjacent memory locations for
|
|||
simultaneous usage. Two resources which do not satisfy this granularity
|
||||
requirement are said to <<resources-memory-aliasing,alias>>. Linear image
|
||||
resource are images created with ename:VK_IMAGE_TILING_LINEAR and optimal
|
||||
linear resources are those created with ename:VK_IMAGE_TILING_OPTIMAL.
|
||||
image resources are those created with ename:VK_IMAGE_TILING_OPTIMAL.
|
||||
pname:bufferImageGranularity is specified in bytes, and must: be a power of
|
||||
two. Implementations which do not require such an additional granularity
|
||||
may: report a value of one.
|
||||
|
||||
Given resourceA at the lower memory offset and resourceB at the higher
|
||||
memory offset, where one of the resources is a buffer and the other is an
|
||||
image, and the following:
|
||||
memory offset, where one of the resources is a buffer or a linear image
|
||||
and the other is an optimal image, and the following:
|
||||
|
||||
resourceA.end = resourceA.memoryOffset + resourceA.size - 1
|
||||
resourceA.endPage = resourceA.end & ~(bufferImageGranularity-1)
|
||||
|
@ -1039,8 +1039,9 @@ That is, the end of the first resource (A) and the beginning of the second
|
|||
resource (B) must: be on separate ``pages'' of size
|
||||
pname:bufferImageGranularity. pname:bufferImageGranularity may: be
|
||||
different than the physical page size of the memory heap. This
|
||||
restriction is only needed for adjacent image and buffer memory locations
|
||||
which will be used simultaneously. Adjacent buffers' or adjacent images'
|
||||
restriction is only needed when a buffer or a linear image is at adjacent
|
||||
memory location with an optimal image and both will be used simultaneously.
|
||||
Adjacent buffers' or adjacent images'
|
||||
memory ranges can: be closer than pname:bufferImageGranularity, provided
|
||||
they meet the pname:alignment requirement for the objects in question.
|
||||
|
||||
|
|
|
@ -147,18 +147,21 @@ will complete its writes in finite time.
|
|||
====
|
||||
|
||||
Stores issued to different memory locations within a single shader
|
||||
invocation maynot: be visible to other invocations in the order they were
|
||||
performed. The OpMemoryBarrier instruction can: be used to provide stronger
|
||||
ordering of reads and writes performed by a single invocation.
|
||||
OpMemoryBarrier guarantees that any memory transactions issued by the shader
|
||||
invocation prior to the instruction complete prior to the memory
|
||||
invocation may: not be visible to other invocations in the order they were
|
||||
performed. The code:OpMemoryBarrier instruction can: be used to provide
|
||||
stronger ordering of reads and writes performed by a single invocation.
|
||||
code:OpMemoryBarrier guarantees that any memory transactions issued by the
|
||||
shader invocation prior to the instruction complete prior to the memory
|
||||
transactions issued after the instruction. Memory barriers are needed for
|
||||
algorithms that require multiple invocations to access the same memory and
|
||||
require the operations to be performed in a partially-defined relative
|
||||
order. For example, if one shader invocation does a series of writes,
|
||||
followed by an OpMemoryBarrier instruction, followed by another write, then
|
||||
another invocation that sees the results of the final write will also see
|
||||
the previous writes. Without the memory barrier, the final write may: be
|
||||
followed by an code:OpMemoryBarrier instruction, followed by another write,
|
||||
then the results of the series of writes before the barrier become visible to
|
||||
other shader invocations at a time earlier or equal to when the results of
|
||||
the final write become visible to those invocations. In practice it means
|
||||
that another invocation that sees the results of the final write would also
|
||||
see the previous writes. Without the memory barrier, the final write may: be
|
||||
visible before the previous writes.
|
||||
|
||||
The built-in atomic memory transaction instructions can: be used to read and
|
||||
|
@ -308,7 +311,7 @@ executed.
|
|||
Fragment shaders are invoked as the result of rasterization in a graphics
|
||||
pipeline. Each fragment shader invocation operates on a single fragment and
|
||||
its associated data. With few exceptions, fragment shaders do not have
|
||||
access to any data associated with other fragments and is considered to
|
||||
access to any data associated with other fragments and are considered to
|
||||
execute in isolation of fragment shader invocations associated with other
|
||||
fragments.
|
||||
|
||||
|
@ -316,15 +319,15 @@ fragments.
|
|||
[[shaders-fragment-execution]]
|
||||
=== Fragment Shader Execution
|
||||
|
||||
For each fragment generated by rasterization, a fragment shader may: or
|
||||
maynot: be invoked. A fragment shader mustnot: be invoked if the
|
||||
<<fragops-early,Early Per-Fragment Tests>> cause it to have no coverage.
|
||||
For each fragment generated by rasterization, a fragment shader may: be
|
||||
invoked. A fragment shader mustnot: be invoked if the <<fragops-early,Early
|
||||
Per-Fragment Tests>> cause it to have no coverage.
|
||||
|
||||
Furthermore, if it is determined that a fragment generated as the result of
|
||||
rasterizing a first primitive will have its outputs entirely overwritten by
|
||||
a fragment generated as the result of rasterizing a second primitive in the
|
||||
same subpass, and the fragment shader used for the fragment has no other
|
||||
side effects, then the fragment shader maynot: be executed for the fragment
|
||||
side effects, then the fragment shader may: not be executed for the fragment
|
||||
from the first primitive.
|
||||
|
||||
Relative ordering of execution of different fragment shader invocations is
|
||||
|
|
|
@ -493,7 +493,7 @@ Not faulting on access to unbound pages is not enough to support
|
|||
pname:sparseResidencyNonResidentStrict. An implementation must: also
|
||||
guarantee that reads after writes to unbound regions of the resource always
|
||||
return data for the read as if the memory contains zeros. Depending on the
|
||||
cache implementation of the hardware this maynot: always be possible.
|
||||
cache implementation of the hardware this may: not always be possible.
|
||||
|
||||
Hardware that does not fault, but does not guarantee correct read values
|
||||
will not require dummy pages, but also mustnot: support
|
||||
|
|
|
@ -107,8 +107,8 @@ which is one of:
|
|||
* ename:VK_SUCCESS indicates that the fence is signaled.
|
||||
* ename:VK_NOT_READY indicates that the fence is unsignaled.
|
||||
|
||||
To reset the status of one or more fences to the unsignaled state, so that
|
||||
they can: be reused after a queue submission completes, use the command:
|
||||
To reset the status of one or more fences to the unsignaled state, use the
|
||||
command:
|
||||
|
||||
include::../protos/vkResetFences.txt[]
|
||||
|
||||
|
@ -119,6 +119,9 @@ include::../protos/vkResetFences.txt[]
|
|||
|
||||
include::../validity/protos/vkResetFences.txt[]
|
||||
|
||||
If a fence is already in the unsignaled state, then resetting it has no
|
||||
effect.
|
||||
|
||||
To cause the host to wait until any one or all of a group of fences
|
||||
is signaled, use the command:
|
||||
|
||||
|
@ -299,7 +302,7 @@ When a queue signals or waits upon a semaphore, certain
|
|||
<<synchronization-implicit-ordering,implicit ordering guarantees>> are
|
||||
provided.
|
||||
|
||||
Semaphore operations maynot: make the side effects of commands visible to
|
||||
Semaphore operations may: not make the side effects of commands visible to
|
||||
the host.
|
||||
|
||||
|
||||
|
@ -372,7 +375,8 @@ with the following return codes:
|
|||
|
||||
The state of an event can: be updated by the host. The state of the event is
|
||||
immediately changed, and subsequent calls to fname:vkGetEventStatus will
|
||||
return the new state.
|
||||
return the new state. If an event is already in the requested state, then
|
||||
updating it to the same state has no effect.
|
||||
|
||||
To set the state of an event to signaled from the host, call:
|
||||
|
||||
|
@ -463,10 +467,10 @@ fname:vkCmdSetEvent to become signaled. Logically, it has three phases:
|
|||
<<synchronization-memory-barriers>>).
|
||||
. Resume execution of pipeline stages specified by pname:dstStageMask
|
||||
|
||||
Implementations maynot: execute commands in a pipelined manner,
|
||||
so fname:vkCmdWaitEvents maynot: observe the results of a subsequent
|
||||
fname:vkCmdSetEvent or fname:vkCmdResetEvent command, even if the stages
|
||||
in pname:dstStageMask occur after the stages in pname:srcStageMask.
|
||||
Implementations may: not execute commands in a pipelined manner, so
|
||||
fname:vkCmdWaitEvents may: not observe the results of a subsequent
|
||||
fname:vkCmdSetEvent or fname:vkCmdResetEvent command, even if the stages in
|
||||
pname:dstStageMask occur after the stages in pname:srcStageMask.
|
||||
|
||||
Commands that update the state of events in different pipeline stages
|
||||
may: execute out of order, unless the ordering is enforced by execution
|
||||
|
@ -480,9 +484,9 @@ events. For example, an event should: only be reset if no
|
|||
fname:vkCmdWaitEvents command is executing that waits upon that event.
|
||||
====
|
||||
|
||||
An act of setting or resetting an event in one queue maynot: affect or be
|
||||
visible to other queues. For cross-queue synchronization, semaphores
|
||||
can: be used.
|
||||
An act of setting or resetting an event in one queue may: not affect or be
|
||||
visible to other queues. For cross-queue synchronization, semaphores can: be
|
||||
used.
|
||||
|
||||
|
||||
[[synchronization-execution-and-memory-dependencies]]
|
||||
|
|
|
@ -224,10 +224,13 @@ A preliminary shared exponent latexmath:[$exp'$] is computed:
|
|||
[latexmath]
|
||||
+++++++++++++++++++
|
||||
\begin{align*}
|
||||
exp' = \max(-B-1,
|
||||
\left \lfloor
|
||||
\log_2(max_{clamped}+1+B)
|
||||
\right \rfloor)
|
||||
exp' =
|
||||
\begin{cases}
|
||||
\left \lfloor \log_2(max_{clamped}) \right \rfloor + (B+1)
|
||||
& \textrm{for } max_{clamped} > 2^{-(B+1)} \\
|
||||
0
|
||||
& \textrm{for } max_{clamped} \leq 2^{-(B+1)}
|
||||
\end{cases}
|
||||
\end{align*}
|
||||
+++++++++++++++++++
|
||||
|
||||
|
@ -1251,7 +1254,7 @@ follows:
|
|||
shaderOp.Lod & \textrm{(from optional SPIR-V operand)} \\
|
||||
\log_2 \left ( \frac{\rho_{max}}{N} \right ) & \textrm{otherwise}
|
||||
\end{cases} \\
|
||||
\lambda'(x,y) & = \lambda_{base} + \operatorname{clamp}(sampler.bias + shaderOp.bias) \\
|
||||
\lambda'(x,y) & = \lambda_{base} + \operatorname{clamp}(sampler.bias + shaderOp.bias,-maxSamplerLodBias,maxSamplerLodBias) \\
|
||||
\lambda & =
|
||||
\begin{cases}
|
||||
lod_{max}, & \lambda' > lod_{max} \\
|
||||
|
@ -1285,6 +1288,10 @@ lod_{max} & = maxLod & \textrm{(from sampler descriptor)}
|
|||
\end{align*}
|
||||
++++++++++++++++++++++++
|
||||
|
||||
and latexmath:[$maxSamplerLodBias$] is the value of the
|
||||
slink:VkPhysicalDeviceLimits feature
|
||||
<<features-limits-maxSamplerLodBias,pname:maxSamplerLodBias>>.
|
||||
|
||||
|
||||
==== Image Level(s) Selection
|
||||
|
||||
|
|
|
@ -14,7 +14,7 @@ typedef enum VkShaderStageFlagBits {
|
|||
VK_SHADER_STAGE_GEOMETRY_BIT = 0x00000008,
|
||||
VK_SHADER_STAGE_FRAGMENT_BIT = 0x00000010,
|
||||
VK_SHADER_STAGE_COMPUTE_BIT = 0x00000020,
|
||||
VK_SHADER_STAGE_ALL_GRAPHICS = 0x1F,
|
||||
VK_SHADER_STAGE_ALL_GRAPHICS = 0x0000001F,
|
||||
VK_SHADER_STAGE_ALL = 0x7FFFFFFF,
|
||||
} VkShaderStageFlagBits;
|
||||
------------------------------------------------------------------------------
|
||||
|
|
|
@ -21,18 +21,23 @@
|
|||
INKSCAPE ?= inkscape
|
||||
|
||||
# PDFs to regenerate from SVGs - everything except pipeline.pdf
|
||||
SVGEXCLUDES = pipeline.svg vulkantexture0.svg
|
||||
SVGEXCLUDES = pipeline.svg tstripadj.svg vulkantexture0.svg
|
||||
SVGSRC = $(filter-out $(SVGEXCLUDES),$(wildcard [A-Za-z]*.svg))
|
||||
PDFDST = $(SVGSRC:%.svg=%.pdf)
|
||||
SVGDST = pipeline.svg
|
||||
PDFDST = $(SVGSRC:%.svg=%.pdf) tstripadj.pdf
|
||||
SVGDST = pipeline.svg tstripadj.svg
|
||||
|
||||
all: $(PDFDST) $(SVGDST)
|
||||
|
||||
$(PDFDST): %.pdf: %.svg
|
||||
$(INKSCAPE) -f $< -A $@
|
||||
|
||||
# This came from PowerPoint originally (I think)
|
||||
pipeline.svg: pipeline.pdf
|
||||
$(INKSCAPE) -f $< -l $@
|
||||
|
||||
# This doesn't render properly in Firefox/IE 11 due to Inkscape markup.
|
||||
tstripadj.svg: Source/tstripadj.svg
|
||||
$(INKSCAPE) -f $< -l $@
|
||||
|
||||
clean:
|
||||
-rm -f $(PDFDST) $(SVGDST)
|
||||
|
|
File diff suppressed because it is too large
Load Diff
After Width: | Height: | Size: 34 KiB |
Binary file not shown.
|
@ -1,5 +1,5 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created by diasvg.py -->
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
|
@ -7,15 +7,10 @@
|
|||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
version="1.1"
|
||||
width="109.04823"
|
||||
height="87.048225"
|
||||
viewBox="-108.050 3.950 -13.183 76.817"
|
||||
id="svg2"
|
||||
version="1.1"
|
||||
inkscape:version="0.48.5 r10040"
|
||||
sodipodi:docname="new.svg">
|
||||
id="svg2">
|
||||
<metadata
|
||||
id="metadata272">
|
||||
<rdf:RDF>
|
||||
|
@ -24,55 +19,23 @@
|
|||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
<dc:title />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<defs
|
||||
id="defs270" />
|
||||
<sodipodi:namedview
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1"
|
||||
objecttolerance="10"
|
||||
gridtolerance="10"
|
||||
guidetolerance="10"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:window-width="1092"
|
||||
inkscape:window-height="1015"
|
||||
id="namedview268"
|
||||
showgrid="false"
|
||||
units="cm"
|
||||
fit-margin-top="0.2"
|
||||
fit-margin-left="0.2"
|
||||
fit-margin-bottom="0.2"
|
||||
fit-margin-right="0.2"
|
||||
inkscape:zoom="8.5833578"
|
||||
inkscape:cx="54.524117"
|
||||
inkscape:cy="43.524113"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="0"
|
||||
inkscape:current-layer="svg2" />
|
||||
<ellipse
|
||||
cx="-44.617001"
|
||||
cy="65.383003"
|
||||
rx="1.383"
|
||||
ry="1.383"
|
||||
transform="translate(115.14911,3.1491142)"
|
||||
id="ellipse4"
|
||||
sodipodi:cx="-44.617001"
|
||||
sodipodi:cy="65.383003"
|
||||
sodipodi:rx="1.383"
|
||||
sodipodi:ry="1.383"
|
||||
style="fill:none;stroke:#000000;stroke-width:0.1"
|
||||
transform="translate(115.14911,3.1491142)" />
|
||||
style="fill:none;stroke:#000000;stroke-width:0.1" />
|
||||
<text
|
||||
x="70.532112"
|
||||
y="68.998741"
|
||||
font-size="1.69"
|
||||
font-style="normal"
|
||||
font-weight="400"
|
||||
id="text6"
|
||||
style="font-size:1.69000006px;font-style:normal;font-weight:400;text-anchor:middle;fill:#000000;font-family:sans">0</text>
|
||||
<ellipse
|
||||
|
@ -80,19 +43,12 @@
|
|||
cy="55.382999"
|
||||
rx="1.383"
|
||||
ry="1.383"
|
||||
transform="translate(115.14911,3.1491142)"
|
||||
id="ellipse8"
|
||||
sodipodi:cx="-44.617001"
|
||||
sodipodi:cy="55.382999"
|
||||
sodipodi:rx="1.383"
|
||||
sodipodi:ry="1.383"
|
||||
style="fill:none;stroke:#000000;stroke-width:0.1"
|
||||
transform="translate(115.14911,3.1491142)" />
|
||||
style="fill:none;stroke:#000000;stroke-width:0.1" />
|
||||
<text
|
||||
x="70.532112"
|
||||
y="58.998737"
|
||||
font-size="1.69"
|
||||
font-style="normal"
|
||||
font-weight="400"
|
||||
id="text10"
|
||||
style="font-size:1.69000006px;font-style:normal;font-weight:400;text-anchor:middle;fill:#000000;font-family:sans">2</text>
|
||||
<ellipse
|
||||
|
@ -100,19 +56,12 @@
|
|||
cy="55.382999"
|
||||
rx="1.383"
|
||||
ry="1.383"
|
||||
transform="translate(115.14911,3.1491142)"
|
||||
id="ellipse12"
|
||||
sodipodi:cx="-54.617001"
|
||||
sodipodi:cy="55.382999"
|
||||
sodipodi:rx="1.383"
|
||||
sodipodi:ry="1.383"
|
||||
style="fill:none;stroke:#000000;stroke-width:0.1"
|
||||
transform="translate(115.14911,3.1491142)" />
|
||||
style="fill:none;stroke:#000000;stroke-width:0.1" />
|
||||
<text
|
||||
x="60.532112"
|
||||
y="58.998737"
|
||||
font-size="1.69"
|
||||
font-style="normal"
|
||||
font-weight="400"
|
||||
id="text14"
|
||||
style="font-size:1.69000006px;font-style:normal;font-weight:400;text-anchor:middle;fill:#000000;font-family:sans">1</text>
|
||||
<ellipse
|
||||
|
@ -120,19 +69,12 @@
|
|||
cy="45.382999"
|
||||
rx="1.383"
|
||||
ry="1.383"
|
||||
transform="translate(115.14911,3.1491142)"
|
||||
id="ellipse16"
|
||||
sodipodi:cx="-44.617001"
|
||||
sodipodi:cy="45.382999"
|
||||
sodipodi:rx="1.383"
|
||||
sodipodi:ry="1.383"
|
||||
style="fill:none;stroke:#000000;stroke-width:0.1"
|
||||
transform="translate(115.14911,3.1491142)" />
|
||||
style="fill:none;stroke:#000000;stroke-width:0.1" />
|
||||
<text
|
||||
x="70.532112"
|
||||
y="48.998737"
|
||||
font-size="1.69"
|
||||
font-style="normal"
|
||||
font-weight="400"
|
||||
id="text18"
|
||||
style="font-size:1.69000006px;font-style:normal;font-weight:400;text-anchor:middle;fill:#000000;font-family:sans">5</text>
|
||||
<ellipse
|
||||
|
@ -140,19 +82,12 @@
|
|||
cy="75.383003"
|
||||
rx="1.383"
|
||||
ry="1.383"
|
||||
transform="translate(115.14911,3.1491142)"
|
||||
id="ellipse20"
|
||||
sodipodi:cx="-34.617001"
|
||||
sodipodi:cy="75.383003"
|
||||
sodipodi:rx="1.383"
|
||||
sodipodi:ry="1.383"
|
||||
style="fill:none;stroke:#000000;stroke-width:0.1"
|
||||
transform="translate(115.14911,3.1491142)" />
|
||||
style="fill:none;stroke:#000000;stroke-width:0.1" />
|
||||
<text
|
||||
x="80.532112"
|
||||
y="78.998741"
|
||||
font-size="1.69"
|
||||
font-style="normal"
|
||||
font-weight="400"
|
||||
id="text22"
|
||||
style="font-size:1.69000006px;font-style:normal;font-weight:400;text-anchor:middle;fill:#000000;font-family:sans">3</text>
|
||||
<ellipse
|
||||
|
@ -160,19 +95,12 @@
|
|||
cy="75.383003"
|
||||
rx="1.383"
|
||||
ry="1.383"
|
||||
transform="translate(115.14911,3.1491142)"
|
||||
id="ellipse24"
|
||||
sodipodi:cx="-24.617001"
|
||||
sodipodi:cy="75.383003"
|
||||
sodipodi:rx="1.383"
|
||||
sodipodi:ry="1.383"
|
||||
style="fill:none;stroke:#000000;stroke-width:0.1"
|
||||
transform="translate(115.14911,3.1491142)" />
|
||||
style="fill:none;stroke:#000000;stroke-width:0.1" />
|
||||
<text
|
||||
x="90.532112"
|
||||
y="78.998741"
|
||||
font-size="1.69"
|
||||
font-style="normal"
|
||||
font-weight="400"
|
||||
id="text26"
|
||||
style="font-size:1.69000006px;font-style:normal;font-weight:400;text-anchor:middle;fill:#000000;font-family:sans">7</text>
|
||||
<ellipse
|
||||
|
@ -180,19 +108,12 @@
|
|||
cy="65.383003"
|
||||
rx="1.383"
|
||||
ry="1.383"
|
||||
transform="translate(115.14911,3.1491142)"
|
||||
id="ellipse28"
|
||||
sodipodi:cx="-34.617001"
|
||||
sodipodi:cy="65.383003"
|
||||
sodipodi:rx="1.383"
|
||||
sodipodi:ry="1.383"
|
||||
style="fill:none;stroke:#000000;stroke-width:0.1"
|
||||
transform="translate(115.14911,3.1491142)" />
|
||||
style="fill:none;stroke:#000000;stroke-width:0.1" />
|
||||
<text
|
||||
x="80.532112"
|
||||
y="68.998741"
|
||||
font-size="1.69"
|
||||
font-style="normal"
|
||||
font-weight="400"
|
||||
id="text30"
|
||||
style="font-size:1.69000006px;font-style:normal;font-weight:400;text-anchor:middle;fill:#000000;font-family:sans">4</text>
|
||||
<ellipse
|
||||
|
@ -200,19 +121,12 @@
|
|||
cy="55.382999"
|
||||
rx="1.383"
|
||||
ry="1.383"
|
||||
transform="translate(115.14911,3.1491142)"
|
||||
id="ellipse32"
|
||||
sodipodi:cx="-34.617001"
|
||||
sodipodi:cy="55.382999"
|
||||
sodipodi:rx="1.383"
|
||||
sodipodi:ry="1.383"
|
||||
style="fill:none;stroke:#000000;stroke-width:0.1"
|
||||
transform="translate(115.14911,3.1491142)" />
|
||||
style="fill:none;stroke:#000000;stroke-width:0.1" />
|
||||
<text
|
||||
x="80.532112"
|
||||
y="58.998737"
|
||||
font-size="1.69"
|
||||
font-style="normal"
|
||||
font-weight="400"
|
||||
id="text34"
|
||||
style="font-size:1.69000006px;font-style:normal;font-weight:400;text-anchor:middle;fill:#000000;font-family:sans">6</text>
|
||||
<ellipse
|
||||
|
@ -220,19 +134,12 @@
|
|||
cy="45.382999"
|
||||
rx="1.383"
|
||||
ry="1.383"
|
||||
transform="translate(115.14911,3.1491142)"
|
||||
id="ellipse36"
|
||||
sodipodi:cx="-34.617001"
|
||||
sodipodi:cy="45.382999"
|
||||
sodipodi:rx="1.383"
|
||||
sodipodi:ry="1.383"
|
||||
style="fill:none;stroke:#000000;stroke-width:0.1"
|
||||
transform="translate(115.14911,3.1491142)" />
|
||||
style="fill:none;stroke:#000000;stroke-width:0.1" />
|
||||
<text
|
||||
x="80.532112"
|
||||
y="48.998737"
|
||||
font-size="1.69"
|
||||
font-style="normal"
|
||||
font-weight="400"
|
||||
id="text38"
|
||||
style="font-size:1.69000006px;font-style:normal;font-weight:400;text-anchor:middle;fill:#000000;font-family:sans">9</text>
|
||||
<ellipse
|
||||
|
@ -240,19 +147,12 @@
|
|||
cy="65.383003"
|
||||
rx="1.383"
|
||||
ry="1.383"
|
||||
transform="translate(115.14911,3.1491142)"
|
||||
id="ellipse40"
|
||||
sodipodi:cx="-24.617001"
|
||||
sodipodi:cy="65.383003"
|
||||
sodipodi:rx="1.383"
|
||||
sodipodi:ry="1.383"
|
||||
style="fill:none;stroke:#000000;stroke-width:0.1"
|
||||
transform="translate(115.14911,3.1491142)" />
|
||||
style="fill:none;stroke:#000000;stroke-width:0.1" />
|
||||
<text
|
||||
x="90.532112"
|
||||
y="68.998741"
|
||||
font-size="1.69"
|
||||
font-style="normal"
|
||||
font-weight="400"
|
||||
id="text42"
|
||||
style="font-size:1.69000006px;font-style:normal;font-weight:400;text-anchor:middle;fill:#000000;font-family:sans">8</text>
|
||||
<ellipse
|
||||
|
@ -260,19 +160,12 @@
|
|||
cy="55.382999"
|
||||
rx="1.383"
|
||||
ry="1.383"
|
||||
transform="translate(115.14911,3.1491142)"
|
||||
id="ellipse44"
|
||||
sodipodi:cx="-24.617001"
|
||||
sodipodi:cy="55.382999"
|
||||
sodipodi:rx="1.383"
|
||||
sodipodi:ry="1.383"
|
||||
style="fill:none;stroke:#000000;stroke-width:0.1"
|
||||
transform="translate(115.14911,3.1491142)" />
|
||||
style="fill:none;stroke:#000000;stroke-width:0.1" />
|
||||
<text
|
||||
x="90.532112"
|
||||
y="58.998737"
|
||||
font-size="1.69"
|
||||
font-style="normal"
|
||||
font-weight="400"
|
||||
id="text46"
|
||||
style="font-size:1.69000006px;font-style:normal;font-weight:400;text-anchor:middle;fill:#000000;font-family:sans">10</text>
|
||||
<ellipse
|
||||
|
@ -280,19 +173,12 @@
|
|||
cy="65.383003"
|
||||
rx="1.383"
|
||||
ry="1.383"
|
||||
transform="translate(115.14911,3.1491142)"
|
||||
id="ellipse48"
|
||||
sodipodi:cx="-14.617"
|
||||
sodipodi:cy="65.383003"
|
||||
sodipodi:rx="1.383"
|
||||
sodipodi:ry="1.383"
|
||||
style="fill:none;stroke:#000000;stroke-width:0.1"
|
||||
transform="translate(115.14911,3.1491142)" />
|
||||
style="fill:none;stroke:#000000;stroke-width:0.1" />
|
||||
<text
|
||||
x="100.53211"
|
||||
y="68.998741"
|
||||
font-size="1.69"
|
||||
font-style="normal"
|
||||
font-weight="400"
|
||||
id="text50"
|
||||
style="font-size:1.69000006px;font-style:normal;font-weight:400;text-anchor:middle;fill:#000000;font-family:sans">11</text>
|
||||
<polyline
|
||||
|
@ -405,19 +291,12 @@
|
|||
cy="65.383003"
|
||||
rx="1.383"
|
||||
ry="1.383"
|
||||
transform="translate(115.14911,3.1491142)"
|
||||
id="ellipse94"
|
||||
sodipodi:cx="-96.616997"
|
||||
sodipodi:cy="65.383003"
|
||||
sodipodi:rx="1.383"
|
||||
sodipodi:ry="1.383"
|
||||
style="fill:none;stroke:#000000;stroke-width:0.1"
|
||||
transform="translate(115.14911,3.1491142)" />
|
||||
style="fill:none;stroke:#000000;stroke-width:0.1" />
|
||||
<text
|
||||
x="18.532118"
|
||||
y="68.998741"
|
||||
font-size="1.69"
|
||||
font-style="normal"
|
||||
font-weight="400"
|
||||
id="text96"
|
||||
style="font-size:1.69000006px;font-style:normal;font-weight:400;text-anchor:middle;fill:#000000;font-family:sans">0</text>
|
||||
<ellipse
|
||||
|
@ -425,19 +304,12 @@
|
|||
cy="55.382999"
|
||||
rx="1.383"
|
||||
ry="1.383"
|
||||
transform="translate(115.14911,3.1491142)"
|
||||
id="ellipse98"
|
||||
sodipodi:cx="-96.616997"
|
||||
sodipodi:cy="55.382999"
|
||||
sodipodi:rx="1.383"
|
||||
sodipodi:ry="1.383"
|
||||
style="fill:none;stroke:#000000;stroke-width:0.1"
|
||||
transform="translate(115.14911,3.1491142)" />
|
||||
style="fill:none;stroke:#000000;stroke-width:0.1" />
|
||||
<text
|
||||
x="18.532118"
|
||||
y="58.998737"
|
||||
font-size="1.69"
|
||||
font-style="normal"
|
||||
font-weight="400"
|
||||
id="text100"
|
||||
style="font-size:1.69000006px;font-style:normal;font-weight:400;text-anchor:middle;fill:#000000;font-family:sans">2</text>
|
||||
<ellipse
|
||||
|
@ -445,19 +317,12 @@
|
|||
cy="55.382999"
|
||||
rx="1.383"
|
||||
ry="1.383"
|
||||
transform="translate(115.14911,3.1491142)"
|
||||
id="ellipse102"
|
||||
sodipodi:cx="-106.617"
|
||||
sodipodi:cy="55.382999"
|
||||
sodipodi:rx="1.383"
|
||||
sodipodi:ry="1.383"
|
||||
style="fill:none;stroke:#000000;stroke-width:0.1"
|
||||
transform="translate(115.14911,3.1491142)" />
|
||||
style="fill:none;stroke:#000000;stroke-width:0.1" />
|
||||
<text
|
||||
x="8.5321178"
|
||||
y="58.998737"
|
||||
font-size="1.69"
|
||||
font-style="normal"
|
||||
font-weight="400"
|
||||
id="text104"
|
||||
style="font-size:1.69000006px;font-style:normal;font-weight:400;text-anchor:middle;fill:#000000;font-family:sans">1</text>
|
||||
<ellipse
|
||||
|
@ -465,19 +330,12 @@
|
|||
cy="45.382999"
|
||||
rx="1.383"
|
||||
ry="1.383"
|
||||
transform="translate(115.14911,3.1491142)"
|
||||
id="ellipse106"
|
||||
sodipodi:cx="-96.616997"
|
||||
sodipodi:cy="45.382999"
|
||||
sodipodi:rx="1.383"
|
||||
sodipodi:ry="1.383"
|
||||
style="fill:none;stroke:#000000;stroke-width:0.1"
|
||||
transform="translate(115.14911,3.1491142)" />
|
||||
style="fill:none;stroke:#000000;stroke-width:0.1" />
|
||||
<text
|
||||
x="18.532118"
|
||||
y="48.998737"
|
||||
font-size="1.69"
|
||||
font-style="normal"
|
||||
font-weight="400"
|
||||
id="text108"
|
||||
style="font-size:1.69000006px;font-style:normal;font-weight:400;text-anchor:middle;fill:#000000;font-family:sans">5</text>
|
||||
<ellipse
|
||||
|
@ -485,19 +343,12 @@
|
|||
cy="75.383003"
|
||||
rx="1.383"
|
||||
ry="1.383"
|
||||
transform="translate(115.14911,3.1491142)"
|
||||
id="ellipse110"
|
||||
sodipodi:cx="-86.616997"
|
||||
sodipodi:cy="75.383003"
|
||||
sodipodi:rx="1.383"
|
||||
sodipodi:ry="1.383"
|
||||
style="fill:none;stroke:#000000;stroke-width:0.1"
|
||||
transform="translate(115.14911,3.1491142)" />
|
||||
style="fill:none;stroke:#000000;stroke-width:0.1" />
|
||||
<text
|
||||
x="28.532118"
|
||||
y="78.998741"
|
||||
font-size="1.69"
|
||||
font-style="normal"
|
||||
font-weight="400"
|
||||
id="text112"
|
||||
style="font-size:1.69000006px;font-style:normal;font-weight:400;text-anchor:middle;fill:#000000;font-family:sans">3</text>
|
||||
<ellipse
|
||||
|
@ -505,19 +356,12 @@
|
|||
cy="75.383003"
|
||||
rx="1.383"
|
||||
ry="1.383"
|
||||
transform="translate(115.14911,3.1491142)"
|
||||
id="ellipse114"
|
||||
sodipodi:cx="-76.616997"
|
||||
sodipodi:cy="75.383003"
|
||||
sodipodi:rx="1.383"
|
||||
sodipodi:ry="1.383"
|
||||
style="fill:none;stroke:#000000;stroke-width:0.1"
|
||||
transform="translate(115.14911,3.1491142)" />
|
||||
style="fill:none;stroke:#000000;stroke-width:0.1" />
|
||||
<text
|
||||
x="38.532116"
|
||||
y="78.998741"
|
||||
font-size="1.69"
|
||||
font-style="normal"
|
||||
font-weight="400"
|
||||
id="text116"
|
||||
style="font-size:1.69000006px;font-style:normal;font-weight:400;text-anchor:middle;fill:#000000;font-family:sans">7</text>
|
||||
<ellipse
|
||||
|
@ -525,19 +369,12 @@
|
|||
cy="65.383003"
|
||||
rx="1.383"
|
||||
ry="1.383"
|
||||
transform="translate(115.14911,3.1491142)"
|
||||
id="ellipse118"
|
||||
sodipodi:cx="-86.616997"
|
||||
sodipodi:cy="65.383003"
|
||||
sodipodi:rx="1.383"
|
||||
sodipodi:ry="1.383"
|
||||
style="fill:none;stroke:#000000;stroke-width:0.1"
|
||||
transform="translate(115.14911,3.1491142)" />
|
||||
style="fill:none;stroke:#000000;stroke-width:0.1" />
|
||||
<text
|
||||
x="28.532118"
|
||||
y="68.998741"
|
||||
font-size="1.69"
|
||||
font-style="normal"
|
||||
font-weight="400"
|
||||
id="text120"
|
||||
style="font-size:1.69000006px;font-style:normal;font-weight:400;text-anchor:middle;fill:#000000;font-family:sans">4</text>
|
||||
<ellipse
|
||||
|
@ -545,19 +382,12 @@
|
|||
cy="55.382999"
|
||||
rx="1.383"
|
||||
ry="1.383"
|
||||
transform="translate(115.14911,3.1491142)"
|
||||
id="ellipse122"
|
||||
sodipodi:cx="-86.616997"
|
||||
sodipodi:cy="55.382999"
|
||||
sodipodi:rx="1.383"
|
||||
sodipodi:ry="1.383"
|
||||
style="fill:none;stroke:#000000;stroke-width:0.1"
|
||||
transform="translate(115.14911,3.1491142)" />
|
||||
style="fill:none;stroke:#000000;stroke-width:0.1" />
|
||||
<text
|
||||
x="28.532118"
|
||||
y="58.998737"
|
||||
font-size="1.69"
|
||||
font-style="normal"
|
||||
font-weight="400"
|
||||
id="text124"
|
||||
style="font-size:1.69000006px;font-style:normal;font-weight:400;text-anchor:middle;fill:#000000;font-family:sans">6</text>
|
||||
<ellipse
|
||||
|
@ -565,19 +395,12 @@
|
|||
cy="65.383003"
|
||||
rx="1.383"
|
||||
ry="1.383"
|
||||
transform="translate(115.14911,3.1491142)"
|
||||
id="ellipse126"
|
||||
sodipodi:cx="-76.616997"
|
||||
sodipodi:cy="65.383003"
|
||||
sodipodi:rx="1.383"
|
||||
sodipodi:ry="1.383"
|
||||
style="fill:none;stroke:#000000;stroke-width:0.1"
|
||||
transform="translate(115.14911,3.1491142)" />
|
||||
style="fill:none;stroke:#000000;stroke-width:0.1" />
|
||||
<text
|
||||
x="38.532116"
|
||||
y="68.998741"
|
||||
font-size="1.69"
|
||||
font-style="normal"
|
||||
font-weight="400"
|
||||
id="text128"
|
||||
style="font-size:1.69000006px;font-style:normal;font-weight:400;text-anchor:middle;fill:#000000;font-family:sans">8</text>
|
||||
<ellipse
|
||||
|
@ -585,19 +408,12 @@
|
|||
cy="55.382999"
|
||||
rx="1.383"
|
||||
ry="1.383"
|
||||
transform="translate(115.14911,3.1491142)"
|
||||
id="ellipse130"
|
||||
sodipodi:cx="-76.616997"
|
||||
sodipodi:cy="55.382999"
|
||||
sodipodi:rx="1.383"
|
||||
sodipodi:ry="1.383"
|
||||
style="fill:none;stroke:#000000;stroke-width:0.1"
|
||||
transform="translate(115.14911,3.1491142)" />
|
||||
style="fill:none;stroke:#000000;stroke-width:0.1" />
|
||||
<text
|
||||
x="38.532116"
|
||||
y="58.998737"
|
||||
font-size="1.69"
|
||||
font-style="normal"
|
||||
font-weight="400"
|
||||
id="text132"
|
||||
style="font-size:1.69000006px;font-style:normal;font-weight:400;text-anchor:middle;fill:#000000;font-family:sans">9</text>
|
||||
<polyline
|
||||
|
@ -690,19 +506,12 @@
|
|||
cy="25.382999"
|
||||
rx="1.383"
|
||||
ry="1.383"
|
||||
transform="translate(115.14911,3.1491142)"
|
||||
id="ellipse168"
|
||||
sodipodi:cx="-44.617001"
|
||||
sodipodi:cy="25.382999"
|
||||
sodipodi:rx="1.383"
|
||||
sodipodi:ry="1.383"
|
||||
style="fill:none;stroke:#000000;stroke-width:0.1"
|
||||
transform="translate(115.14911,3.1491142)" />
|
||||
style="fill:none;stroke:#000000;stroke-width:0.1" />
|
||||
<text
|
||||
x="70.532112"
|
||||
y="28.998739"
|
||||
font-size="1.69"
|
||||
font-style="normal"
|
||||
font-weight="400"
|
||||
id="text170"
|
||||
style="font-size:1.69000006px;font-style:normal;font-weight:400;text-anchor:middle;fill:#000000;font-family:sans">0</text>
|
||||
<ellipse
|
||||
|
@ -710,19 +519,12 @@
|
|||
cy="15.383"
|
||||
rx="1.383"
|
||||
ry="1.383"
|
||||
transform="translate(115.14911,3.1491142)"
|
||||
id="ellipse172"
|
||||
sodipodi:cx="-44.617001"
|
||||
sodipodi:cy="15.383"
|
||||
sodipodi:rx="1.383"
|
||||
sodipodi:ry="1.383"
|
||||
style="fill:none;stroke:#000000;stroke-width:0.1"
|
||||
transform="translate(115.14911,3.1491142)" />
|
||||
style="fill:none;stroke:#000000;stroke-width:0.1" />
|
||||
<text
|
||||
x="70.532112"
|
||||
y="18.998739"
|
||||
font-size="1.69"
|
||||
font-style="normal"
|
||||
font-weight="400"
|
||||
id="text174"
|
||||
style="font-size:1.69000006px;font-style:normal;font-weight:400;text-anchor:middle;fill:#000000;font-family:sans">2</text>
|
||||
<ellipse
|
||||
|
@ -730,19 +532,12 @@
|
|||
cy="15.383"
|
||||
rx="1.383"
|
||||
ry="1.383"
|
||||
transform="translate(115.14911,3.1491142)"
|
||||
id="ellipse176"
|
||||
sodipodi:cx="-54.617001"
|
||||
sodipodi:cy="15.383"
|
||||
sodipodi:rx="1.383"
|
||||
sodipodi:ry="1.383"
|
||||
style="fill:none;stroke:#000000;stroke-width:0.1"
|
||||
transform="translate(115.14911,3.1491142)" />
|
||||
style="fill:none;stroke:#000000;stroke-width:0.1" />
|
||||
<text
|
||||
x="60.532112"
|
||||
y="18.998739"
|
||||
font-size="1.69"
|
||||
font-style="normal"
|
||||
font-weight="400"
|
||||
id="text178"
|
||||
style="font-size:1.69000006px;font-style:normal;font-weight:400;text-anchor:middle;fill:#000000;font-family:sans">1</text>
|
||||
<ellipse
|
||||
|
@ -750,19 +545,12 @@
|
|||
cy="5.3829999"
|
||||
rx="1.383"
|
||||
ry="1.383"
|
||||
transform="translate(115.14911,3.1491142)"
|
||||
id="ellipse180"
|
||||
sodipodi:cx="-44.617001"
|
||||
sodipodi:cy="5.3829999"
|
||||
sodipodi:rx="1.383"
|
||||
sodipodi:ry="1.383"
|
||||
style="fill:none;stroke:#000000;stroke-width:0.1"
|
||||
transform="translate(115.14911,3.1491142)" />
|
||||
style="fill:none;stroke:#000000;stroke-width:0.1" />
|
||||
<text
|
||||
x="70.532112"
|
||||
y="8.9987392"
|
||||
font-size="1.69"
|
||||
font-style="normal"
|
||||
font-weight="400"
|
||||
id="text182"
|
||||
style="font-size:1.69000006px;font-style:normal;font-weight:400;text-anchor:middle;fill:#000000;font-family:sans">5</text>
|
||||
<ellipse
|
||||
|
@ -770,19 +558,12 @@
|
|||
cy="35.382999"
|
||||
rx="1.383"
|
||||
ry="1.383"
|
||||
transform="translate(115.14911,3.1491142)"
|
||||
id="ellipse184"
|
||||
sodipodi:cx="-34.617001"
|
||||
sodipodi:cy="35.382999"
|
||||
sodipodi:rx="1.383"
|
||||
sodipodi:ry="1.383"
|
||||
style="fill:none;stroke:#000000;stroke-width:0.1"
|
||||
transform="translate(115.14911,3.1491142)" />
|
||||
style="fill:none;stroke:#000000;stroke-width:0.1" />
|
||||
<text
|
||||
x="80.532112"
|
||||
y="38.998737"
|
||||
font-size="1.69"
|
||||
font-style="normal"
|
||||
font-weight="400"
|
||||
id="text186"
|
||||
style="font-size:1.69000006px;font-style:normal;font-weight:400;text-anchor:middle;fill:#000000;font-family:sans">3</text>
|
||||
<ellipse
|
||||
|
@ -790,19 +571,12 @@
|
|||
cy="25.382999"
|
||||
rx="1.383"
|
||||
ry="1.383"
|
||||
transform="translate(115.14911,3.1491142)"
|
||||
id="ellipse188"
|
||||
sodipodi:cx="-34.617001"
|
||||
sodipodi:cy="25.382999"
|
||||
sodipodi:rx="1.383"
|
||||
sodipodi:ry="1.383"
|
||||
style="fill:none;stroke:#000000;stroke-width:0.1"
|
||||
transform="translate(115.14911,3.1491142)" />
|
||||
style="fill:none;stroke:#000000;stroke-width:0.1" />
|
||||
<text
|
||||
x="80.532112"
|
||||
y="28.998739"
|
||||
font-size="1.69"
|
||||
font-style="normal"
|
||||
font-weight="400"
|
||||
id="text190"
|
||||
style="font-size:1.69000006px;font-style:normal;font-weight:400;text-anchor:middle;fill:#000000;font-family:sans">4</text>
|
||||
<ellipse
|
||||
|
@ -810,19 +584,12 @@
|
|||
cy="15.383"
|
||||
rx="1.383"
|
||||
ry="1.383"
|
||||
transform="translate(115.14911,3.1491142)"
|
||||
id="ellipse192"
|
||||
sodipodi:cx="-34.617001"
|
||||
sodipodi:cy="15.383"
|
||||
sodipodi:rx="1.383"
|
||||
sodipodi:ry="1.383"
|
||||
style="fill:none;stroke:#000000;stroke-width:0.1"
|
||||
transform="translate(115.14911,3.1491142)" />
|
||||
style="fill:none;stroke:#000000;stroke-width:0.1" />
|
||||
<text
|
||||
x="80.532112"
|
||||
y="18.998739"
|
||||
font-size="1.69"
|
||||
font-style="normal"
|
||||
font-weight="400"
|
||||
id="text194"
|
||||
style="font-size:1.69000006px;font-style:normal;font-weight:400;text-anchor:middle;fill:#000000;font-family:sans">6</text>
|
||||
<ellipse
|
||||
|
@ -830,19 +597,12 @@
|
|||
cy="25.382999"
|
||||
rx="1.383"
|
||||
ry="1.383"
|
||||
transform="translate(115.14911,3.1491142)"
|
||||
id="ellipse196"
|
||||
sodipodi:cx="-24.617001"
|
||||
sodipodi:cy="25.382999"
|
||||
sodipodi:rx="1.383"
|
||||
sodipodi:ry="1.383"
|
||||
style="fill:none;stroke:#000000;stroke-width:0.1"
|
||||
transform="translate(115.14911,3.1491142)" />
|
||||
style="fill:none;stroke:#000000;stroke-width:0.1" />
|
||||
<text
|
||||
x="90.532112"
|
||||
y="28.998739"
|
||||
font-size="1.69"
|
||||
font-style="normal"
|
||||
font-weight="400"
|
||||
id="text198"
|
||||
style="font-size:1.69000006px;font-style:normal;font-weight:400;text-anchor:middle;fill:#000000;font-family:sans">7</text>
|
||||
<polyline
|
||||
|
@ -915,19 +675,12 @@
|
|||
cy="25.382999"
|
||||
rx="1.383"
|
||||
ry="1.383"
|
||||
transform="translate(115.14911,3.1491142)"
|
||||
id="ellipse226"
|
||||
sodipodi:cx="-96.616997"
|
||||
sodipodi:cy="25.382999"
|
||||
sodipodi:rx="1.383"
|
||||
sodipodi:ry="1.383"
|
||||
style="fill:none;stroke:#000000;stroke-width:0.1"
|
||||
transform="translate(115.14911,3.1491142)" />
|
||||
style="fill:none;stroke:#000000;stroke-width:0.1" />
|
||||
<text
|
||||
x="18.532118"
|
||||
y="28.998739"
|
||||
font-size="1.69"
|
||||
font-style="normal"
|
||||
font-weight="400"
|
||||
id="text228"
|
||||
style="font-size:1.69000006px;font-style:normal;font-weight:400;text-anchor:middle;fill:#000000;font-family:sans">0</text>
|
||||
<ellipse
|
||||
|
@ -935,19 +688,12 @@
|
|||
cy="15.383"
|
||||
rx="1.383"
|
||||
ry="1.383"
|
||||
transform="translate(115.14911,3.1491142)"
|
||||
id="ellipse230"
|
||||
sodipodi:cx="-96.616997"
|
||||
sodipodi:cy="15.383"
|
||||
sodipodi:rx="1.383"
|
||||
sodipodi:ry="1.383"
|
||||
style="fill:none;stroke:#000000;stroke-width:0.1"
|
||||
transform="translate(115.14911,3.1491142)" />
|
||||
style="fill:none;stroke:#000000;stroke-width:0.1" />
|
||||
<text
|
||||
x="18.532118"
|
||||
y="18.998739"
|
||||
font-size="1.69"
|
||||
font-style="normal"
|
||||
font-weight="400"
|
||||
id="text232"
|
||||
style="font-size:1.69000006px;font-style:normal;font-weight:400;text-anchor:middle;fill:#000000;font-family:sans">2</text>
|
||||
<ellipse
|
||||
|
@ -955,19 +701,12 @@
|
|||
cy="15.383"
|
||||
rx="1.383"
|
||||
ry="1.383"
|
||||
transform="translate(115.14911,3.1491142)"
|
||||
id="ellipse234"
|
||||
sodipodi:cx="-106.617"
|
||||
sodipodi:cy="15.383"
|
||||
sodipodi:rx="1.383"
|
||||
sodipodi:ry="1.383"
|
||||
style="fill:none;stroke:#000000;stroke-width:0.1"
|
||||
transform="translate(115.14911,3.1491142)" />
|
||||
style="fill:none;stroke:#000000;stroke-width:0.1" />
|
||||
<text
|
||||
x="8.5321178"
|
||||
y="18.998739"
|
||||
font-size="1.69"
|
||||
font-style="normal"
|
||||
font-weight="400"
|
||||
id="text236"
|
||||
style="font-size:1.69000006px;font-style:normal;font-weight:400;text-anchor:middle;fill:#000000;font-family:sans">1</text>
|
||||
<ellipse
|
||||
|
@ -975,19 +714,12 @@
|
|||
cy="35.382999"
|
||||
rx="1.383"
|
||||
ry="1.383"
|
||||
transform="translate(115.14911,3.1491142)"
|
||||
id="ellipse238"
|
||||
sodipodi:cx="-86.616997"
|
||||
sodipodi:cy="35.382999"
|
||||
sodipodi:rx="1.383"
|
||||
sodipodi:ry="1.383"
|
||||
style="fill:none;stroke:#000000;stroke-width:0.1"
|
||||
transform="translate(115.14911,3.1491142)" />
|
||||
style="fill:none;stroke:#000000;stroke-width:0.1" />
|
||||
<text
|
||||
x="28.532118"
|
||||
y="38.998737"
|
||||
font-size="1.69"
|
||||
font-style="normal"
|
||||
font-weight="400"
|
||||
id="text240"
|
||||
style="font-size:1.69000006px;font-style:normal;font-weight:400;text-anchor:middle;fill:#000000;font-family:sans">3</text>
|
||||
<ellipse
|
||||
|
@ -995,19 +727,12 @@
|
|||
cy="25.382999"
|
||||
rx="1.383"
|
||||
ry="1.383"
|
||||
transform="translate(115.14911,3.1491142)"
|
||||
id="ellipse242"
|
||||
sodipodi:cx="-86.616997"
|
||||
sodipodi:cy="25.382999"
|
||||
sodipodi:rx="1.383"
|
||||
sodipodi:ry="1.383"
|
||||
style="fill:none;stroke:#000000;stroke-width:0.1"
|
||||
transform="translate(115.14911,3.1491142)" />
|
||||
style="fill:none;stroke:#000000;stroke-width:0.1" />
|
||||
<text
|
||||
x="28.532118"
|
||||
y="28.998739"
|
||||
font-size="1.69"
|
||||
font-style="normal"
|
||||
font-weight="400"
|
||||
id="text244"
|
||||
style="font-size:1.69000006px;font-style:normal;font-weight:400;text-anchor:middle;fill:#000000;font-family:sans">4</text>
|
||||
<ellipse
|
||||
|
@ -1015,19 +740,12 @@
|
|||
cy="15.383"
|
||||
rx="1.383"
|
||||
ry="1.383"
|
||||
transform="translate(115.14911,3.1491142)"
|
||||
id="ellipse246"
|
||||
sodipodi:cx="-86.616997"
|
||||
sodipodi:cy="15.383"
|
||||
sodipodi:rx="1.383"
|
||||
sodipodi:ry="1.383"
|
||||
style="fill:none;stroke:#000000;stroke-width:0.1"
|
||||
transform="translate(115.14911,3.1491142)" />
|
||||
style="fill:none;stroke:#000000;stroke-width:0.1" />
|
||||
<text
|
||||
x="28.532118"
|
||||
y="18.998739"
|
||||
font-size="1.69"
|
||||
font-style="normal"
|
||||
font-weight="400"
|
||||
id="text248"
|
||||
style="font-size:1.69000006px;font-style:normal;font-weight:400;text-anchor:middle;fill:#000000;font-family:sans">5</text>
|
||||
<polyline
|
||||
|
|
Before Width: | Height: | Size: 34 KiB After Width: | Height: | Size: 26 KiB |
|
@ -14,23 +14,22 @@ include::../flags/VkMemoryPropertyFlags.txt[]
|
|||
Constants
|
||||
---------
|
||||
|
||||
ename:VK_MEMORY_PROPERTY_DEVICE_ONLY::
|
||||
Unless any other flag is used to enable other uses this constant
|
||||
identifies memory that's only accessible by the device.
|
||||
ename:VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT::
|
||||
Identifies a memory pool that is the most efficient for device access.
|
||||
|
||||
ename:VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT::
|
||||
Identifies a memory pool that can be mapped into host memory address
|
||||
space and thus is accessible by the host.
|
||||
|
||||
ename:VK_MEMORY_PROPERTY_HOST_NON_COHERENT_BIT::
|
||||
Identifies a memory pool where accesses beteen the host and the
|
||||
coherency domain are not conherent. Memory with this property needs
|
||||
ename:VK_MEMORY_PROPERTY_HOST_COHERENT_BIT::
|
||||
Identifies a memory pool where accesses between the host and the
|
||||
coherency domain are coherent. Memory without this property requires
|
||||
explicit use of flink:vkFlushMappedMemoryRanges after host writes to
|
||||
this type of memory, and use of flink:vkInvalidateMappedMemoryRanges
|
||||
before host reads from that memory.
|
||||
|
||||
ename:VK_MEMORY_PROPERTY_HOST_UNCACHED_BIT::
|
||||
Identifies memory that is not cached by the host.
|
||||
ename:VK_MEMORY_PROPERTY_HOST_CACHED_BIT::
|
||||
Identifies memory that is cached by the host.
|
||||
|
||||
ename:VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT::
|
||||
Identifies memory where an object's backing may be provided lazily
|
||||
|
|
|
@ -58,20 +58,22 @@ pname:propertyFlags member of the slink:VkMemoryType structure is defined as fol
|
|||
|
||||
include::../enums/VkMemoryPropertyFlagBits.txt[]
|
||||
|
||||
* ename:VK_MEMORY_PROPERTY_DEVICE_ONLY represents the case where no bits are set and signifies
|
||||
that the memory is private to the device.
|
||||
* ename:VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT signifies that the memory is the
|
||||
most efficient type for device access (e.g. local device memory).
|
||||
|
||||
* ename:VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT indicates that memory with this property is visible
|
||||
to the host. That is, a valid host address may be obtained and allocations from this memory
|
||||
type may be mapped.
|
||||
|
||||
* ename:VK_MEMORY_PROPERTY_HOST_NON_COHERENT_BIT indicates that accesses to mapped memory of this
|
||||
type is not coherent with accesses to the same memory by the device. Such access must be marhsalled
|
||||
using calls to flink:vkFlushMappedMemoryRanges or by unmapping the memory.
|
||||
* ename:VK_MEMORY_PROPERTY_HOST_COHERENT_BIT indicates that accesses to
|
||||
mapped memory of this type is coherent with accesses to the same memory
|
||||
by the device. Such access do not need to be marshalled using calls to
|
||||
flink:vkFlushMappedMemoryRanges or by unmapping the memory.
|
||||
|
||||
* ename:VK_MEMORY_PROPERTY_HOST_UNCACHED_BIT indicates that data stored in memory of this type is not
|
||||
cached by the host and as such, it is likely that reads from such regions by the host will
|
||||
be suboptimal.
|
||||
* ename:VK_MEMORY_PROPERTY_HOST_CACHED_BIT indicates that data stored in
|
||||
memory of this type is cached by the host and as such, it is likely that
|
||||
reads from such regions by the host will be faster than reads from uncached
|
||||
memory.
|
||||
|
||||
* ename:VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT indicates that allocations from this type of memory
|
||||
may be made on an as-needed basis. In general, allocations from this type of memory will almost
|
||||
|
|
|
@ -376,7 +376,6 @@ table:
|
|||
| can{cl} | can:
|
||||
| cannot{cl} | cannot:
|
||||
| may{cl} | may:
|
||||
| maynot{cl} | maynot:
|
||||
| must{cl} | must:
|
||||
| mustnot{cl} | mustnot:
|
||||
| optional{cl} | optional:
|
||||
|
@ -388,10 +387,10 @@ table:
|
|||
|=====
|
||||
|
||||
Because asciidoc macro names cannot contain spaces, macros which correspond
|
||||
to multiple words (maynot{cl}, mustnot{cl}, and shouldnot{cl}) drop those
|
||||
spaces. Also note that the macros are lower-case only, so language should be
|
||||
written such that these terms do not appear at the beginning of a sentence
|
||||
(if really necessary, additional capitalized macros could be added).
|
||||
to multiple words (mustnot{cl}, and shouldnot{cl}) drop those spaces. Also
|
||||
note that the macros are lower-case only, so language should be written such
|
||||
that these terms do not appear at the beginning of a sentence (if really
|
||||
necessary, additional capitalized macros could be added).
|
||||
|
||||
|
||||
==== Optional Behavior
|
||||
|
@ -402,6 +401,9 @@ conformance, use the terms _may:_ or _optional:_ to describe it.
|
|||
If a described usage pattern by the application is allowed but
|
||||
not necessary, use the term _can:_ to describe it.
|
||||
|
||||
If language flows more logically using the term "may not", use the term
|
||||
_may: not_ to describe it.
|
||||
|
||||
|
||||
==== Optional Functionality
|
||||
|
||||
|
@ -543,8 +545,11 @@ existing API Specification.
|
|||
| Combined format implicit in the name.
|
||||
| device | GPU
|
||||
| Implementations on non-GPU devices are possible.
|
||||
| heterogeneous | heterogenous | More common
|
||||
| homogeneous | homogenous | More common
|
||||
| host endianness | platform endianness |
|
||||
| implementation| system |
|
||||
| indices | indexes | More common
|
||||
| it is | it's | In general, avoid contractions.
|
||||
| member | field |
|
||||
| pname:parameter are/is
|
||||
|
@ -942,6 +947,7 @@ for this structure:
|
|||
|
||||
= Revision History
|
||||
|
||||
* February 26, 2016 - Replace use of the "maynot{cl}" macro with "may{cl} not".
|
||||
* February 16, 2016 - Place asciidoc conversion post-release.
|
||||
* February 9, 2016 - Added quotation mark convention.
|
||||
* February 1, 2016 - add the Oxford Comma section and issue resolution.
|
||||
|
|
|
@ -20,7 +20,7 @@ endif::doctype-manpage[]
|
|||
* If pname:buffer was created with the ename:VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT, pname:memoryOffset must: be a multiple of the value of sname:VkPhysicalDeviceLimits::pname:minUniformBufferOffsetAlignment
|
||||
* If pname:buffer was created with the ename:VK_BUFFER_USAGE_STORAGE_BUFFER_BIT, pname:memoryOffset must: be a multiple of the value of sname:VkPhysicalDeviceLimits::pname:minStorageBufferOffsetAlignment
|
||||
* pname:memory must: have been allocated using one of the memory types allowed in the pname:memoryTypeBits member of the sname:VkMemoryRequirements structure returned from a call to fname:vkGetBufferMemoryRequirements with pname:buffer
|
||||
* The sum of pname:memoryOffset and the size of pname:buffer must: be less than or equal to the size of pname:memory
|
||||
* The size of pname:buffer must: be less than or equal to the size of pname:memory minus pname:memoryOffset
|
||||
* pname:memoryOffset must: be an integer multiple of the pname:alignment member of the sname:VkMemoryRequirements structure returned from a call to fname:vkGetBufferMemoryRequirements with pname:buffer
|
||||
ifndef::doctype-manpage[]
|
||||
********************************************************************************
|
||||
|
|
|
@ -18,7 +18,7 @@ endif::doctype-manpage[]
|
|||
* pname:memoryOffset must: be less than the size of pname:memory
|
||||
* pname:memory must: have been allocated using one of the memory types allowed in the pname:memoryTypeBits member of the sname:VkMemoryRequirements structure returned from a call to fname:vkGetImageMemoryRequirements with pname:image
|
||||
* pname:memoryOffset must: be an integer multiple of the pname:alignment member of the sname:VkMemoryRequirements structure returned from a call to fname:vkGetImageMemoryRequirements with pname:image
|
||||
* pname:memory must: have storage from pname:memoryOffset onwards equal to or greater than the pname:size member of the sname:VkMemoryRequirements structure returned from a call to fname:vkGetImageMemoryRequirements with pname:image
|
||||
* The pname:size member of the sname:VkMemoryRequirements structure returned from a call to fname:vkGetImageMemoryRequirements with pname:image must: be less than or equal to the size of pname:memory minus pname:memoryOffset
|
||||
ifndef::doctype-manpage[]
|
||||
********************************************************************************
|
||||
endif::doctype-manpage[]
|
||||
|
|
|
@ -16,8 +16,11 @@ endif::doctype-manpage[]
|
|||
* This command must: only be called outside of a render pass instance
|
||||
* The value of pname:regionCount must: be greater than `0`
|
||||
* Each of pname:commandBuffer, pname:srcBuffer and pname:dstBuffer must: have been created, allocated or retrieved from the same sname:VkDevice
|
||||
* The sum of the pname:srcOffset and pname:copySize members of a given element of pname:pRegions must: be less than or equal to the size of pname:srcBuffer
|
||||
* The sum of the pname:dstOffset and pname:copySize members of a given element of pname:pRegions must: be less than or equal to the size of pname:dstBuffer
|
||||
* The pname:copySize member of a given element of pname:pRegions must: be greater than `0`
|
||||
* The pname:srcOffset member of a given element of pname:pRegions must: be less than the size of pname:srcBuffer
|
||||
* The pname:dstOffset member of a given element of pname:pRegions must: be less than the size of pname:dstBuffer
|
||||
* The pname:copySize member of a given element of pname:pRegions must: be less than or equal to the size of pname:srcBuffer minus pname:srcOffset
|
||||
* The pname:copySize member of a given element of pname:pRegions must: be less than or equal to the size of pname:dstBuffer minus pname:dstOffset
|
||||
* The union of the source regions, and the union of the destination regions, specified by the elements of pname:pRegions, mustnot: overlap in memory
|
||||
* pname:srcBuffer must: have been created with ename:VK_BUFFER_USAGE_TRANSFER_SRC_BIT usage flag
|
||||
* pname:dstBuffer must: have been created with ename:VK_BUFFER_USAGE_TRANSFER_DST_BIT usage flag
|
||||
|
|
|
@ -15,6 +15,7 @@ endif::doctype-manpage[]
|
|||
* The sname:VkCommandPool that pname:commandBuffer was allocated from must: support graphics or compute operations
|
||||
* This command must: only be called outside of a render pass instance
|
||||
* Each of pname:commandBuffer, pname:queryPool and pname:dstBuffer must: have been created, allocated or retrieved from the same sname:VkDevice
|
||||
* pname:dstOffset must: be less than the size of pname:dstBuffer
|
||||
* pname:firstQuery must: be less than the number of queries in pname:queryPool
|
||||
* The sum of pname:firstQuery and pname:queryCount must: be less than or equal to the number of queries in pname:queryPool
|
||||
* If ename:VK_QUERY_RESULT_64_BIT is not set in pname:flags then pname:dstOffset and pname:stride must be multiples of `4`
|
||||
|
|
|
@ -13,10 +13,12 @@ endif::doctype-manpage[]
|
|||
* The sname:VkCommandPool that pname:commandBuffer was allocated from must: support graphics or compute operations
|
||||
* This command must: only be called outside of a render pass instance
|
||||
* Each of pname:commandBuffer and pname:dstBuffer must: have been created, allocated or retrieved from the same sname:VkDevice
|
||||
* If pname:size is not equal to ename:VK_WHOLE_SIZE, the sum of pname:dstOffset and pname:size must: be less than or equal to the size of pname:dstBuffer
|
||||
* pname:dstBuffer must: have been created with ename:VK_BUFFER_USAGE_TRANSFER_DST_BIT usage flag
|
||||
* pname:size must: be greater than `0`
|
||||
* pname:dstOffset must: be less than the size of pname:dstBuffer
|
||||
* pname:dstOffset must: be a multiple of `4`
|
||||
* If pname:size is not equal to ename:VK_WHOLE_SIZE, pname:size must: be less than or equal to the size of pname:dstBuffer minus pname:dstOffset
|
||||
* If pname:size is not equal to ename:VK_WHOLE_SIZE, pname:size must: be a multiple of `4`
|
||||
* pname:dstBuffer must: have been created with ename:VK_BUFFER_USAGE_TRANSFER_DST_BIT usage flag
|
||||
ifndef::doctype-manpage[]
|
||||
********************************************************************************
|
||||
endif::doctype-manpage[]
|
||||
|
|
|
@ -19,6 +19,8 @@ endif::doctype-manpage[]
|
|||
* pname:stageFlags must: match exactly the shader stages used in pname:layout for the range specified by pname:offset and pname:size
|
||||
* pname:offset must: be a multiple of `4`
|
||||
* pname:size must: be a multiple of `4`
|
||||
* pname:offset must: be less than the value of sname:VkPhysicalDeviceLimits::pname:maxPushConstantsSize
|
||||
* pname:size must: be less than or equal to the value of sname:VkPhysicalDeviceLimits::pname:maxPushConstantsSize minus pname:offset
|
||||
ifndef::doctype-manpage[]
|
||||
********************************************************************************
|
||||
endif::doctype-manpage[]
|
||||
|
|
|
@ -14,10 +14,11 @@ endif::doctype-manpage[]
|
|||
* The sname:VkCommandPool that pname:commandBuffer was allocated from must: support transfer, graphics or compute operations
|
||||
* This command must: only be called outside of a render pass instance
|
||||
* Each of pname:commandBuffer and pname:dstBuffer must: have been created, allocated or retrieved from the same sname:VkDevice
|
||||
* The sum of pname:dstOffset and pname:dataSize must: be less than or equal to the size of pname:dstBuffer
|
||||
* The value of pname:dataSize must: be greater than `0`
|
||||
* The value of pname:dstOffset must: be less than the size of pname:dstBuffer
|
||||
* The value of pname:dataSize must: be less than or equal to the size of pname:dstBuffer minus pname:dstOffset
|
||||
* pname:dstBuffer must: have been created with ename:VK_BUFFER_USAGE_TRANSFER_DST_BIT usage flag
|
||||
* The value of pname:dstOffset must: be a multiple of `4`
|
||||
* The value of pname:dataSize must: be greater than `0`
|
||||
* The value of pname:dataSize must: be less than or equal to `65536`
|
||||
* The value of pname:dataSize must: be a multiple of `4`
|
||||
ifndef::doctype-manpage[]
|
||||
|
|
|
@ -29,6 +29,7 @@ ifdef::doctype-manpage[]
|
|||
On success, this command returns::
|
||||
endif::doctype-manpage[]
|
||||
* ename:VK_SUCCESS
|
||||
* ename:VK_INCOMPLETE
|
||||
ifndef::doctype-manpage[]
|
||||
<<fundamentals-errorcodes,Failure>>::
|
||||
endif::doctype-manpage[]
|
||||
|
|
|
@ -10,7 +10,6 @@ endif::doctype-manpage[]
|
|||
* pname:device must: be a valid sname:VkDevice handle
|
||||
* pname:pMemoryRanges must: be a pointer to an array of pname:memoryRangeCount valid sname:VkMappedMemoryRange structures
|
||||
* The value of pname:memoryRangeCount must: be greater than `0`
|
||||
* The memory ranges specified by pname:pMemoryRanges must: all currently be mapped
|
||||
ifndef::doctype-manpage[]
|
||||
********************************************************************************
|
||||
endif::doctype-manpage[]
|
||||
|
|
|
@ -9,7 +9,7 @@ Valid Usage
|
|||
endif::doctype-manpage[]
|
||||
* pname:device must: be a valid sname:VkDevice handle
|
||||
* pname:pQueue must: be a pointer to a sname:VkQueue handle
|
||||
* pname:queueFamilyIndex must: be one of the queue family indexes specified when pname:device was created, via the sname:VkDeviceQueueCreateInfo structure
|
||||
* pname:queueFamilyIndex must: be one of the queue family indices specified when pname:device was created, via the sname:VkDeviceQueueCreateInfo structure
|
||||
* pname:queueIndex must: be less than the number of queues created for the specified queue family index when pname:device was created, via the pname:queueCount member of the sname:VkDeviceQueueCreateInfo structure
|
||||
ifndef::doctype-manpage[]
|
||||
********************************************************************************
|
||||
|
|
|
@ -10,7 +10,6 @@ endif::doctype-manpage[]
|
|||
* pname:device must: be a valid sname:VkDevice handle
|
||||
* pname:pMemoryRanges must: be a pointer to an array of pname:memoryRangeCount valid sname:VkMappedMemoryRange structures
|
||||
* The value of pname:memoryRangeCount must: be greater than `0`
|
||||
* The memory ranges specified by pname:pMemoryRanges must: all currently be mapped
|
||||
ifndef::doctype-manpage[]
|
||||
********************************************************************************
|
||||
endif::doctype-manpage[]
|
||||
|
|
|
@ -15,7 +15,8 @@ endif::doctype-manpage[]
|
|||
* Each of pname:device and pname:memory must: have been created, allocated or retrieved from the same sname:VkPhysicalDevice
|
||||
* pname:memory mustnot: currently be mapped
|
||||
* pname:offset must: be less than the size of pname:memory
|
||||
* If pname:size is not equal to ename:VK_WHOLE_SIZE, the sum of pname:offset and pname:size must: be less than or equal to the pname:size of the pname:memory
|
||||
* pname:size must: be greater than `0`
|
||||
* If pname:size is not equal to ename:VK_WHOLE_SIZE, pname:size must: be less than or equal to the size of the pname:memory minus pname:offset
|
||||
* pname:memory must: have been created with a memory type that reports ename:VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT
|
||||
ifndef::doctype-manpage[]
|
||||
********************************************************************************
|
||||
|
|
|
@ -13,7 +13,8 @@ endif::doctype-manpage[]
|
|||
* pname:dstAccessMask must: be a valid combination of elink:VkAccessFlagBits values
|
||||
* pname:buffer must: be a valid sname:VkBuffer handle
|
||||
* The value of pname:offset must: be less than the size of pname:buffer
|
||||
* The sum of pname:offset and pname:size must: be less than or equal to than the size of pname:buffer
|
||||
* The value of pname:size must: be greater than `0`
|
||||
* If pname:size is not equal to ename:VK_WHOLE_SIZE, pname:size must: be less than or equal to than the size of pname:buffer minus pname:offset
|
||||
* If pname:buffer was created with a sharing mode of ename:VK_SHARING_MODE_CONCURRENT, pname:srcQueueFamilyIndex and pname:dstQueueFamilyIndex must: both be ename:VK_QUEUE_FAMILY_IGNORED
|
||||
* If pname:buffer was created with a sharing mode of ename:VK_SHARING_MODE_EXCLUSIVE, pname:srcQueueFamilyIndex and pname:dstQueueFamilyIndex must: either both be ename:VK_QUEUE_FAMILY_IGNORED, or both be a valid queue family (see <<devsandqueues-queueprops>>)
|
||||
* If pname:buffer was created with a sharing mode of ename:VK_SHARING_MODE_EXCLUSIVE, and pname:srcQueueFamilyIndex and pname:dstQueueFamilyIndex are valid queue families, at least one of them must: be the same as the family of the queue that will execute this barrier
|
||||
|
|
|
@ -12,9 +12,10 @@ endif::doctype-manpage[]
|
|||
* pname:flags must: be `0`
|
||||
* pname:buffer must: be a valid sname:VkBuffer handle
|
||||
* pname:format must: be a valid elink:VkFormat value
|
||||
* The value of pname:offset must: be less than the size of pname:buffer
|
||||
* The value of pname:offset must: be a multiple of sname:VkPhysicalDeviceLimits::pname:minTexelBufferOffsetAlignment
|
||||
* The value of pname:range must: be greater than `0`
|
||||
* If pname:range is not equal to ename:VK_WHOLE_SIZE, the sum of pname:offset and pname:range must: be less than or equal to the size of pname:buffer
|
||||
* If pname:range is not equal to ename:VK_WHOLE_SIZE, pname:range must: be less than or equal to the size of pname:buffer minus pname:offset
|
||||
* If pname:range is not equal to ename:VK_WHOLE_SIZE, the value of pname:range must: be a multiple of the element size of pname:format
|
||||
* The value of pname:range, divided by the size of an element of pname:format, must: be less than or equal to the value of sname:VkPhysicalDeviceLimits::pname:maxTexelBufferElements
|
||||
* pname:buffer must: have been created with a pname:usage value containing at least one of ename:VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT or ename:VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT
|
||||
|
|
|
@ -16,6 +16,7 @@ endif::doctype-manpage[]
|
|||
* The sum of pname:srcArrayElement and pname:descriptorCount must: be less than or equal to the number of array elements in the descriptor set binding specified by pname:srcBinding, and all applicable consecutive bindings, as described by <<descriptorsets-updates-consecutive>>
|
||||
* pname:dstBinding must: be a valid binding within pname:dstSet
|
||||
* The sum of pname:dstArrayElement and pname:descriptorCount must: be less than or equal to the number of array elements in the descriptor set binding specified by pname:dstBinding, and all applicable consecutive bindings, as described by <<descriptorsets-updates-consecutive>>
|
||||
* If pname:srcSet is equal to pname:dstSet, then the source and destination ranges of descriptors mustnot: overlap, where the ranges may: include array elements from consecutive bindings as described by <<descriptorsets-updates-consecutive>>
|
||||
ifndef::doctype-manpage[]
|
||||
********************************************************************************
|
||||
endif::doctype-manpage[]
|
||||
|
|
|
@ -8,7 +8,9 @@ Valid Usage
|
|||
-----------
|
||||
endif::doctype-manpage[]
|
||||
* pname:buffer must: be a valid sname:VkBuffer handle
|
||||
* If pname:range is not equal to ename:VK_WHOLE_SIZE, the sum of pname:offset and pname:range must: be less than or equal to the size of pname:buffer
|
||||
* pname:offset must: be less than the size of pname:buffer
|
||||
* The value of pname:range must: be greater than `0`
|
||||
* If pname:range is not equal to ename:VK_WHOLE_SIZE, pname:range must: be less than or equal to the size of pname:buffer minus pname:offset
|
||||
ifndef::doctype-manpage[]
|
||||
********************************************************************************
|
||||
endif::doctype-manpage[]
|
||||
|
|
|
@ -14,6 +14,7 @@ endif::doctype-manpage[]
|
|||
* The value of pname:descriptorSetCount must: be greater than `0`
|
||||
* Each of pname:descriptorPool and the elements of pname:pSetLayouts must: have been created, allocated or retrieved from the same sname:VkDevice
|
||||
* The value of pname:descriptorSetCount mustnot: be greater than the number of sets that are currently available for allocation in pname:descriptorPool
|
||||
* pname:descriptorPool must: have enough free descriptor capacity remaining to allocate the descriptor sets of the specified layouts
|
||||
ifndef::doctype-manpage[]
|
||||
********************************************************************************
|
||||
endif::doctype-manpage[]
|
||||
|
|
|
@ -24,7 +24,6 @@ endif::doctype-manpage[]
|
|||
* If pname:flags contains the ename:VK_PIPELINE_CREATE_DERIVATIVE_BIT flag, and pname:basePipelineHandle is not sname:VK_NULL_HANDLE, pname:basePipelineIndex must: be `-1`
|
||||
* If pname:flags contains the ename:VK_PIPELINE_CREATE_DERIVATIVE_BIT flag, and pname:basePipelineHandle is not sname:VK_NULL_HANDLE, pname:basePipelineHandle must: be a valid sname:VkPipeline handle
|
||||
* If pname:flags contains the ename:VK_PIPELINE_CREATE_DERIVATIVE_BIT flag, and pname:basePipelineHandle is not sname:VK_NULL_HANDLE, it must: be a valid handle to a graphics sname:VkPipeline
|
||||
* pname:stageCount must: be greater than or equal to `1`
|
||||
* The pname:stage member of each element of pname:pStages must: be unique
|
||||
* The pname:stage member of one element of pname:pStages must: be ename:VK_SHADER_STAGE_VERTEX_BIT
|
||||
* The pname:stage member of any given element of pname:pStages mustnot: be ename:VK_SHADER_STAGE_COMPUTE_BIT
|
||||
|
|
|
@ -11,9 +11,10 @@ endif::doctype-manpage[]
|
|||
* pname:pNext must: be `NULL`
|
||||
* pname:memory must: be a valid sname:VkDeviceMemory handle
|
||||
* pname:memory must: currently be mapped
|
||||
* pname:offset must: be less than the size of the currently mapped range of pname:memory
|
||||
* If pname:size is not equal to ename:VK_WHOLE_SIZE, the sum of pname:offset and pname:size must: be less than or equal to the size of the currently mapped range of pname:memory
|
||||
* pname:offset and pname:size must: each be a multiple of sname:VkPhysicalDeviceLimits::pname:nonCoherentAtomSize
|
||||
* If pname:size is not equal to ename:VK_WHOLE_SIZE, pname:offset and pname:size must: specify a range contained within the currently mapped range of pname:memory
|
||||
* If pname:size is equal to ename:VK_WHOLE_SIZE, pname:offset must: be within the currently mapped range of pname:memory
|
||||
* pname:offset must: be a multiple of sname:VkPhysicalDeviceLimits::pname:nonCoherentAtomSize
|
||||
* If pname:size is not equal to ename:VK_WHOLE_SIZE, pname:size must: be a multiple of sname:VkPhysicalDeviceLimits::pname:nonCoherentAtomSize
|
||||
ifndef::doctype-manpage[]
|
||||
********************************************************************************
|
||||
endif::doctype-manpage[]
|
||||
|
|
|
@ -9,9 +9,10 @@ Valid Usage
|
|||
endif::doctype-manpage[]
|
||||
* pname:stageFlags must: be a valid combination of elink:VkShaderStageFlagBits values
|
||||
* pname:stageFlags mustnot: be `0`
|
||||
* The sum of pname:offset and pname:size must: be less than or equal to the value of sname:VkPhysicalDeviceLimits::pname:maxPushConstantsSize
|
||||
* The value of pname:offset must: be less than the value of sname:VkPhysicalDeviceLimits::pname:maxPushConstantsSize
|
||||
* The value of pname:size must: be greater than `0`
|
||||
* The value of pname:size must: be a multiple of `4`
|
||||
* The value of pname:size must: be less than or equal to the value of sname:VkPhysicalDeviceLimits::pname:maxPushConstantsSize minus pname:offset
|
||||
ifndef::doctype-manpage[]
|
||||
********************************************************************************
|
||||
endif::doctype-manpage[]
|
||||
|
|
|
@ -11,10 +11,11 @@ endif::doctype-manpage[]
|
|||
* pname:flags must: be a valid combination of elink:VkSparseMemoryBindFlagBits values
|
||||
* If pname:memory is not sname:VK_NULL_HANDLE, pname:memory and pname:memoryOffset must: match the memory requirements of the resource, as described in section <<resources-association>>
|
||||
* If pname:memory is not sname:VK_NULL_HANDLE, pname:memory mustnot: have been created with a memory type that reports ename:VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT bit set
|
||||
* pname:size must: be greater than `0`
|
||||
* pname:resourceOffset must: be less than the size of the resource
|
||||
* The sum of pname:resourceOffset and pname:size must: be less than or equal to the size of the resource
|
||||
* pname:size must: be less than or equal to the size of the resource minus pname:resourceOffset
|
||||
* pname:memoryOffset must: be less than the size of pname:memory
|
||||
* The sum of pname:memoryOffset and pname:size must: be less than or equal to the size of pname:memory
|
||||
* pname:size must: be less than or equal to the size of pname:memory minus pname:memoryOffset
|
||||
ifndef::doctype-manpage[]
|
||||
********************************************************************************
|
||||
endif::doctype-manpage[]
|
||||
|
|
|
@ -10,7 +10,7 @@ endif::doctype-manpage[]
|
|||
* If pname:mapEntryCount is not `0`, pname:pMapEntries must: be a pointer to an array of pname:mapEntryCount sname:VkSpecializationMapEntry structures
|
||||
* If pname:dataSize is not `0`, pname:pData must: be a pointer to an array of pname:dataSize bytes
|
||||
* The pname:offset member of any given element of pname:pMapEntries must: be less than pname:dataSize
|
||||
* The sum of the pname:offset and pname:size members of any given element of pname:pMapEntries must: be less than or equal to pname:dataSize
|
||||
* For any given element of pname:pMapEntries, pname:size must be less than or equal to pname:dataSize minus pname:offset
|
||||
ifndef::doctype-manpage[]
|
||||
********************************************************************************
|
||||
endif::doctype-manpage[]
|
||||
|
|
|
@ -8,6 +8,7 @@ Valid Usage
|
|||
-----------
|
||||
endif::doctype-manpage[]
|
||||
* pname:format must: be a valid elink:VkFormat value
|
||||
* pname:location must: be less than sname:VkPhysicalDeviceLimits::pname:maxVertexInputAttributes
|
||||
* pname:binding must: be less than sname:VkPhysicalDeviceLimits::pname:maxVertexInputBindings
|
||||
* pname:offset must: be less than or equal to sname:VkPhysicalDeviceLimits::pname:maxVertexInputAttributeOffset
|
||||
* pname:format must: be allowed as a vertex buffer format, as specified by the ename:VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT flag in sname:VkFormatProperties::pname:bufferFeatures returned by fname:vkGetPhysicalDeviceFormatProperties
|
||||
|
|
|
@ -8,7 +8,7 @@ Valid Usage
|
|||
-----------
|
||||
endif::doctype-manpage[]
|
||||
* pname:inputRate must: be a valid elink:VkVertexInputRate value
|
||||
* pname:binding must: be less than or equal to sname:VkPhysicalDeviceLimits::pname:maxVertexInputBindings
|
||||
* pname:binding must: be less than sname:VkPhysicalDeviceLimits::pname:maxVertexInputBindings
|
||||
* pname:stride must: be less than or equal to sname:VkPhysicalDeviceLimits::pname:maxVertexInputBindingStride
|
||||
ifndef::doctype-manpage[]
|
||||
********************************************************************************
|
||||
|
|
|
@ -47,9 +47,9 @@ consts['VK_SUBOPTIMAL_KHR'] = 'VkResult'
|
|||
consts['VK_ERROR_OUT_OF_DATE_KHR'] = 'VkResult'
|
||||
consts['VK_ERROR_INCOMPATIBLE_DISPLAY_KHR'] = 'VkResult'
|
||||
consts['VK_ERROR_VALIDATION_FAILED_EXT'] = 'VkResult'
|
||||
consts['VK_NV_EXTENSION_0_ERROR'] = 'VkResult'
|
||||
consts['VK_ERROR_INVALID_SHADER_NV'] = 'VkResult'
|
||||
consts['VK_NV_EXTENSION_1_ERROR'] = 'VkResult'
|
||||
enums['VkResult'] = ['VK_SUCCESS', 'VK_NOT_READY', 'VK_TIMEOUT', 'VK_EVENT_SET', 'VK_EVENT_RESET', 'VK_INCOMPLETE', 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INITIALIZATION_FAILED', 'VK_ERROR_DEVICE_LOST', 'VK_ERROR_MEMORY_MAP_FAILED', 'VK_ERROR_LAYER_NOT_PRESENT', 'VK_ERROR_EXTENSION_NOT_PRESENT', 'VK_ERROR_FEATURE_NOT_PRESENT', 'VK_ERROR_INCOMPATIBLE_DRIVER', 'VK_ERROR_TOO_MANY_OBJECTS', 'VK_ERROR_FORMAT_NOT_SUPPORTED', 'VK_ERROR_SURFACE_LOST_KHR', 'VK_ERROR_NATIVE_WINDOW_IN_USE_KHR', 'VK_SUBOPTIMAL_KHR', 'VK_ERROR_OUT_OF_DATE_KHR', 'VK_ERROR_INCOMPATIBLE_DISPLAY_KHR', 'VK_ERROR_VALIDATION_FAILED_EXT', 'VK_NV_EXTENSION_0_ERROR', 'VK_NV_EXTENSION_1_ERROR']
|
||||
enums['VkResult'] = ['VK_SUCCESS', 'VK_NOT_READY', 'VK_TIMEOUT', 'VK_EVENT_SET', 'VK_EVENT_RESET', 'VK_INCOMPLETE', 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY', 'VK_ERROR_INITIALIZATION_FAILED', 'VK_ERROR_DEVICE_LOST', 'VK_ERROR_MEMORY_MAP_FAILED', 'VK_ERROR_LAYER_NOT_PRESENT', 'VK_ERROR_EXTENSION_NOT_PRESENT', 'VK_ERROR_FEATURE_NOT_PRESENT', 'VK_ERROR_INCOMPATIBLE_DRIVER', 'VK_ERROR_TOO_MANY_OBJECTS', 'VK_ERROR_FORMAT_NOT_SUPPORTED', 'VK_ERROR_SURFACE_LOST_KHR', 'VK_ERROR_NATIVE_WINDOW_IN_USE_KHR', 'VK_SUBOPTIMAL_KHR', 'VK_ERROR_OUT_OF_DATE_KHR', 'VK_ERROR_INCOMPATIBLE_DISPLAY_KHR', 'VK_ERROR_VALIDATION_FAILED_EXT', 'VK_ERROR_INVALID_SHADER_NV', 'VK_NV_EXTENSION_1_ERROR']
|
||||
consts['VK_STRUCTURE_TYPE_APPLICATION_INFO'] = 'VkStructureType'
|
||||
consts['VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO'] = 'VkStructureType'
|
||||
consts['VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO'] = 'VkStructureType'
|
||||
|
|
|
@ -9,21 +9,21 @@
|
|||
related documents. It is updated by hand periodically by Jon Leech. </p>
|
||||
|
||||
<ul>
|
||||
<li> The <a href="core/styleguide.html">Vulkan Style Guide</a> is a work
|
||||
<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> <b> Core API Specifications </b>
|
||||
<ul>
|
||||
<li> <a href="core/xhtml/vkspec.html">Single document</a> (XHTML from 'a2x') </li>
|
||||
<li> <a href="core/pdf/vkspec.pdf"> Vulkan API spec (PDF)</a> </li>
|
||||
<!-- <li> <a href="core/vkspec.chunked/index.html">Chunked HTML</a> (may be out of date or not present) </li> -->
|
||||
<li> <a href="1.0/xhtml/vkspec.html">Single document</a> (XHTML from 'a2x') </li>
|
||||
<li> <a href="1.0/pdf/vkspec.pdf"> Vulkan API spec (PDF)</a> </li>
|
||||
<!-- <li> <a href="1.0/vkspec.chunked/index.html">Chunked HTML</a> (may be out of date or not present) </li> -->
|
||||
</ul>
|
||||
</li>
|
||||
<li> <b> Core+WSI API Specifications </b>
|
||||
<ul>
|
||||
<li> <a href="wsi/xhtml/vkspec.html">Single document</a> (XHTML from 'a2x') </li>
|
||||
<li> <a href="wsi/pdf/vkspec.pdf"> Vulkan API spec (PDF)</a> </li>
|
||||
<!-- <li> <a href="wsi/vkspec.chunked/index.html">Chunked HTML</a> (may be out of date or not present) </li> -->
|
||||
<li> <a href="1.0-wsi_extensions/xhtml/vkspec.html">Single document</a> (XHTML from 'a2x') </li>
|
||||
<li> <a href="1.0-wsi_extensions/pdf/vkspec.pdf"> Vulkan API spec (PDF)</a> </li>
|
||||
<!-- <li> <a href="1.0-wsi_extensions/vkspec.chunked/index.html">Chunked HTML</a> (may be out of date or not present) </li> -->
|
||||
</ul>
|
||||
</li>
|
||||
<li> <b> Khronos Data Format 1.1 Specification </b>
|
||||
|
@ -34,27 +34,27 @@
|
|||
</li>
|
||||
<li> <b> Validator script output (Core API only)</b>
|
||||
<ul>
|
||||
<li> <a href="core/checks/notInSpec.txt">List of commands, structs, etc. not included in API spec</a></li>
|
||||
<li> <a href="core/checks/specErrs.txt">Validator script output for API specification</a>
|
||||
<li> <a href="core/checks/manErrs.txt">Validator script output for man pages</a>
|
||||
<li> <a href="1.0/checks/notInSpec.txt">List of commands, structs, etc. not included in API spec</a></li>
|
||||
<li> <a href="1.0/checks/specErrs.txt">Validator script output for API specification</a>
|
||||
<li> <a href="1.0/checks/manErrs.txt">Validator script output for man pages</a>
|
||||
</ul>
|
||||
</li>
|
||||
<li> <b> Reference pages (Core API only)</b>
|
||||
<ul>
|
||||
<li> <a href="core/apispec.html">Vulkan ref pages</a> (HTML, single document) </li>
|
||||
<li> <a href="core/apispec.pdf">Vulkan ref pages</a> (PDF, single document) </li>
|
||||
<li> <a href="core/man/html/">Vulkan ref pages</a> (HTML, separate files) </li>
|
||||
<li> <a href="core/man/3/">Vulkan ref pages</a> (nroff / Unix man page markup, separate files) </li>
|
||||
<li> <a href="1.0/apispec.html">Vulkan ref pages</a> (HTML, single document) </li>
|
||||
<li> <a href="1.0/apispec.pdf">Vulkan ref pages</a> (PDF, single document) </li>
|
||||
<li> <a href="1.0/man/html/">Vulkan ref pages</a> (HTML, separate files) </li>
|
||||
<li> <a href="1.0/man/3/">Vulkan ref pages</a> (nroff / Unix man page markup, separate files) </li>
|
||||
</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="core/html/vkspec.html">Single document</a> (HTML from
|
||||
'asciibook') </li>
|
||||
<li> Core+WSI API <a href="wsi/html/vkspec.html">Single
|
||||
document</a> (HTML from 'asciibook') </li>
|
||||
<li> Core API <a href="1.0/html/vkspec.html">Single document</a> (HTML from
|
||||
'asciibook') </li>
|
||||
<li> Core+WSI API <a href="1.0-wsi_extensions/html/vkspec.html">Single
|
||||
document</a> (HTML from 'asciibook') </li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
|
|
|
@ -97,7 +97,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
|
|||
<type category="define">#define <name>VK_VERSION_PATCH</name>(version) ((uint32_t)(version) & 0xfff)</type>
|
||||
|
||||
<type category="define">// Vulkan API version supported by this file
|
||||
#define <name>VK_API_VERSION</name> <type>VK_MAKE_VERSION</type>(1, 0, 4)</type>
|
||||
#define <name>VK_API_VERSION</name> <type>VK_MAKE_VERSION</type>(1, 0, 5)</type>
|
||||
|
||||
|
||||
<type category="define">
|
||||
|
@ -573,13 +573,14 @@ maintained in the master branch of the Khronos Vulkan Github project.
|
|||
<member><type>VkStructureType</type> <name>sType</name></member> <!-- Must be VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE -->
|
||||
<member>const <type>void</type>* <name>pNext</name></member> <!-- Pointer to next structure -->
|
||||
<member><type>VkDeviceMemory</type> <name>memory</name></member> <!-- Mapped memory object -->
|
||||
<member><type>VkDeviceSize</type> <name>offset</name></member> <!-- Offset within the mapped memory the range starts from -->
|
||||
<member><type>VkDeviceSize</type> <name>size</name></member> <!-- Size of the range within the mapped memory -->
|
||||
<member><type>VkDeviceSize</type> <name>offset</name></member> <!-- Offset within the memory object where the range starts -->
|
||||
<member><type>VkDeviceSize</type> <name>size</name></member> <!-- Size of the range within the memory object -->
|
||||
<validity>
|
||||
<usage>pname:memory must: currently be mapped</usage>
|
||||
<usage>pname:offset must: be less than the size of the currently mapped range of pname:memory</usage>
|
||||
<usage>If pname:size is not equal to ename:VK_WHOLE_SIZE, the sum of pname:offset and pname:size must: be less than or equal to the size of the currently mapped range of pname:memory</usage>
|
||||
<usage>pname:offset and pname:size must: each be a multiple of sname:VkPhysicalDeviceLimits::pname:nonCoherentAtomSize</usage>
|
||||
<usage>If pname:size is not equal to ename:VK_WHOLE_SIZE, pname:offset and pname:size must: specify a range contained within the currently mapped range of pname:memory</usage>
|
||||
<usage>If pname:size is equal to ename:VK_WHOLE_SIZE, pname:offset must: be within the currently mapped range of pname:memory</usage>
|
||||
<usage>pname:offset must: be a multiple of sname:VkPhysicalDeviceLimits::pname:nonCoherentAtomSize</usage>
|
||||
<usage>If pname:size is not equal to ename:VK_WHOLE_SIZE, pname:size must: be a multiple of sname:VkPhysicalDeviceLimits::pname:nonCoherentAtomSize</usage>
|
||||
</validity>
|
||||
</type>
|
||||
<type category="struct" name="VkFormatProperties" returnedonly="true">
|
||||
|
@ -599,7 +600,9 @@ maintained in the master branch of the Khronos Vulkan Github project.
|
|||
<member><type>VkDeviceSize</type> <name>offset</name></member> <!-- Base offset from buffer start in bytes to update in the descriptor set. -->
|
||||
<member><type>VkDeviceSize</type> <name>range</name></member> <!-- Size in bytes of the buffer resource for this descriptor update. -->
|
||||
<validity>
|
||||
<usage>If pname:range is not equal to ename:VK_WHOLE_SIZE, the sum of pname:offset and pname:range must: be less than or equal to the size of pname:buffer</usage>
|
||||
<usage>pname:offset must: be less than the size of pname:buffer</usage>
|
||||
<usage>The value of pname:range must: be greater than `0`</usage>
|
||||
<usage>If pname:range is not equal to ename:VK_WHOLE_SIZE, pname:range must: be less than or equal to the size of pname:buffer minus pname:offset</usage>
|
||||
</validity>
|
||||
</type>
|
||||
<type category="struct" name="VkDescriptorImageInfo">
|
||||
|
@ -653,6 +656,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
|
|||
<usage>The sum of pname:srcArrayElement and pname:descriptorCount must: be less than or equal to the number of array elements in the descriptor set binding specified by pname:srcBinding, and all applicable consecutive bindings, as described by <<descriptorsets-updates-consecutive>></usage>
|
||||
<usage>pname:dstBinding must: be a valid binding within pname:dstSet</usage>
|
||||
<usage>The sum of pname:dstArrayElement and pname:descriptorCount must: be less than or equal to the number of array elements in the descriptor set binding specified by pname:dstBinding, and all applicable consecutive bindings, as described by <<descriptorsets-updates-consecutive>></usage>
|
||||
<usage>If pname:srcSet is equal to pname:dstSet, then the source and destination ranges of descriptors mustnot: overlap, where the ranges may: include array elements from consecutive bindings as described by <<descriptorsets-updates-consecutive>></usage>
|
||||
</validity>
|
||||
</type>
|
||||
<type category="struct" name="VkBufferCreateInfo">
|
||||
|
@ -683,9 +687,10 @@ maintained in the master branch of the Khronos Vulkan Github project.
|
|||
<member><type>VkDeviceSize</type> <name>offset</name></member> <!-- Specified in bytes -->
|
||||
<member><type>VkDeviceSize</type> <name>range</name></member> <!-- View size specified in bytes -->
|
||||
<validity>
|
||||
<usage>The value of pname:offset must: be less than the size of pname:buffer</usage>
|
||||
<usage>The value of pname:offset must: be a multiple of sname:VkPhysicalDeviceLimits::pname:minTexelBufferOffsetAlignment</usage>
|
||||
<usage>The value of pname:range must: be greater than `0`</usage>
|
||||
<usage>If pname:range is not equal to ename:VK_WHOLE_SIZE, the sum of pname:offset and pname:range must: be less than or equal to the size of pname:buffer</usage>
|
||||
<usage>If pname:range is not equal to ename:VK_WHOLE_SIZE, pname:range must: be less than or equal to the size of pname:buffer minus pname:offset</usage>
|
||||
<usage>If pname:range is not equal to ename:VK_WHOLE_SIZE, the value of pname:range must: be a multiple of the element size of pname:format</usage>
|
||||
<usage>The value of pname:range, divided by the size of an element of pname:format, must: be less than or equal to the value of sname:VkPhysicalDeviceLimits::pname:maxTexelBufferElements</usage>
|
||||
<usage>pname:buffer must: have been created with a pname:usage value containing at least one of ename:VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT or ename:VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT</usage>
|
||||
|
@ -743,7 +748,8 @@ maintained in the master branch of the Khronos Vulkan Github project.
|
|||
<member><type>VkDeviceSize</type> <name>size</name></member> <!-- Amount of bytes to sync -->
|
||||
<validity>
|
||||
<usage>The value of pname:offset must: be less than the size of pname:buffer</usage>
|
||||
<usage>The sum of pname:offset and pname:size must: be less than or equal to than the size of pname:buffer</usage>
|
||||
<usage>The value of pname:size must: be greater than `0`</usage>
|
||||
<usage>If pname:size is not equal to ename:VK_WHOLE_SIZE, pname:size must: be less than or equal to than the size of pname:buffer minus pname:offset</usage>
|
||||
<usage>If pname:buffer was created with a sharing mode of ename:VK_SHARING_MODE_CONCURRENT, pname:srcQueueFamilyIndex and pname:dstQueueFamilyIndex must: both be ename:VK_QUEUE_FAMILY_IGNORED</usage>
|
||||
<usage>If pname:buffer was created with a sharing mode of ename:VK_SHARING_MODE_EXCLUSIVE, pname:srcQueueFamilyIndex and pname:dstQueueFamilyIndex must: either both be ename:VK_QUEUE_FAMILY_IGNORED, or both be a valid queue family (see <<devsandqueues-queueprops>>)</usage>
|
||||
<usage>If pname:buffer was created with a sharing mode of ename:VK_SHARING_MODE_EXCLUSIVE, and pname:srcQueueFamilyIndex and pname:dstQueueFamilyIndex are valid queue families, at least one of them must: be the same as the family of the queue that will execute this barrier</usage>
|
||||
|
@ -839,7 +845,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
|
|||
<usage>If pname:flags contains ename:VK_IMAGE_CREATE_SPARSE_ALIASED_BIT, it must: also contain at least one of ename:VK_IMAGE_CREATE_SPARSE_BINDING_BIT or ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</usage>
|
||||
</validity>
|
||||
</type>
|
||||
<type category="struct" name="VkSubresourceLayout">
|
||||
<type category="struct" name="VkSubresourceLayout" returnedonly="true">
|
||||
<member><type>VkDeviceSize</type> <name>offset</name></member> <!-- Specified in bytes -->
|
||||
<member><type>VkDeviceSize</type> <name>size</name></member> <!-- Specified in bytes -->
|
||||
<member><type>VkDeviceSize</type> <name>rowPitch</name></member> <!-- Specified in bytes -->
|
||||
|
@ -889,10 +895,11 @@ maintained in the master branch of the Khronos Vulkan Github project.
|
|||
<validity>
|
||||
<usage>If pname:memory is not sname:VK_NULL_HANDLE, pname:memory and pname:memoryOffset must: match the memory requirements of the resource, as described in section <<resources-association>></usage>
|
||||
<usage>If pname:memory is not sname:VK_NULL_HANDLE, pname:memory mustnot: have been created with a memory type that reports ename:VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT bit set</usage>
|
||||
<usage>pname:size must: be greater than `0`</usage>
|
||||
<usage>pname:resourceOffset must: be less than the size of the resource</usage>
|
||||
<usage>The sum of pname:resourceOffset and pname:size must: be less than or equal to the size of the resource</usage>
|
||||
<usage>pname:size must: be less than or equal to the size of the resource minus pname:resourceOffset</usage>
|
||||
<usage>pname:memoryOffset must: be less than the size of pname:memory</usage>
|
||||
<usage>The sum of pname:memoryOffset and pname:size must: be less than or equal to the size of pname:memory</usage>
|
||||
<usage>pname:size must: be less than or equal to the size of pname:memory minus pname:memoryOffset</usage>
|
||||
</validity>
|
||||
</type>
|
||||
<type category="struct" name="VkSparseImageMemoryBind">
|
||||
|
@ -1095,6 +1102,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
|
|||
<member len="descriptorSetCount">const <type>VkDescriptorSetLayout</type>* <name>pSetLayouts</name></member>
|
||||
<validity>
|
||||
<usage>The value of pname:descriptorSetCount mustnot: be greater than the number of sets that are currently available for allocation in pname:descriptorPool</usage>
|
||||
<usage>pname:descriptorPool must: have enough free descriptor capacity remaining to allocate the descriptor sets of the specified layouts</usage>
|
||||
</validity>
|
||||
</type>
|
||||
<type category="struct" name="VkSpecializationMapEntry">
|
||||
|
@ -1109,7 +1117,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
|
|||
<member len="dataSize">const <type>void</type>* <name>pData</name></member> <!-- Pointer to SpecConstant data -->
|
||||
<validity>
|
||||
<usage>The pname:offset member of any given element of pname:pMapEntries must: be less than pname:dataSize</usage>
|
||||
<usage>The sum of the pname:offset and pname:size members of any given element of pname:pMapEntries must: be less than or equal to pname:dataSize</usage>
|
||||
<usage>For any given element of pname:pMapEntries, pname:size must be less than or equal to pname:dataSize minus pname:offset</usage>
|
||||
</validity>
|
||||
</type>
|
||||
<type category="struct" name="VkPipelineShaderStageCreateInfo">
|
||||
|
@ -1163,7 +1171,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
|
|||
<member><type>uint32_t</type> <name>stride</name></member> <!-- Distance between vertices in bytes (0 = no advancement) -->
|
||||
<member><type>VkVertexInputRate</type> <name>inputRate</name></member> <!-- The rate at which the vertex data is consumed -->
|
||||
<validity>
|
||||
<usage>pname:binding must: be less than or equal to sname:VkPhysicalDeviceLimits::pname:maxVertexInputBindings</usage>
|
||||
<usage>pname:binding must: be less than sname:VkPhysicalDeviceLimits::pname:maxVertexInputBindings</usage>
|
||||
<usage>pname:stride must: be less than or equal to sname:VkPhysicalDeviceLimits::pname:maxVertexInputBindingStride</usage>
|
||||
</validity>
|
||||
</type>
|
||||
|
@ -1173,6 +1181,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
|
|||
<member><type>VkFormat</type> <name>format</name></member> <!-- format of source data -->
|
||||
<member><type>uint32_t</type> <name>offset</name></member> <!-- Offset of first element in bytes from base of vertex -->
|
||||
<validity>
|
||||
<usage>pname:location must: be less than sname:VkPhysicalDeviceLimits::pname:maxVertexInputAttributes</usage>
|
||||
<usage>pname:binding must: be less than sname:VkPhysicalDeviceLimits::pname:maxVertexInputBindings</usage>
|
||||
<usage>pname:offset must: be less than or equal to sname:VkPhysicalDeviceLimits::pname:maxVertexInputAttributeOffset</usage>
|
||||
<usage>pname:format must: be allowed as a vertex buffer format, as specified by the ename:VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT flag in sname:VkFormatProperties::pname:bufferFeatures returned by fname:vkGetPhysicalDeviceFormatProperties</usage>
|
||||
|
@ -1357,7 +1366,6 @@ maintained in the master branch of the Khronos Vulkan Github project.
|
|||
<usage>If pname:flags contains the ename:VK_PIPELINE_CREATE_DERIVATIVE_BIT flag, and pname:basePipelineHandle is not sname:VK_NULL_HANDLE, pname:basePipelineIndex must: be `-1`</usage>
|
||||
<usage>If pname:flags contains the ename:VK_PIPELINE_CREATE_DERIVATIVE_BIT flag, and pname:basePipelineHandle is not sname:VK_NULL_HANDLE, pname:basePipelineHandle must: be a valid sname:VkPipeline handle</usage>
|
||||
<usage>If pname:flags contains the ename:VK_PIPELINE_CREATE_DERIVATIVE_BIT flag, and pname:basePipelineHandle is not sname:VK_NULL_HANDLE, it must: be a valid handle to a graphics sname:VkPipeline</usage>
|
||||
<usage>pname:stageCount must: be greater than or equal to `1`</usage>
|
||||
<usage>The pname:stage member of each element of pname:pStages must: be unique</usage>
|
||||
<usage>The pname:stage member of one element of pname:pStages must: be ename:VK_SHADER_STAGE_VERTEX_BIT</usage>
|
||||
<usage>The pname:stage member of any given element of pname:pStages mustnot: be ename:VK_SHADER_STAGE_COMPUTE_BIT</usage>
|
||||
|
@ -1409,9 +1417,10 @@ maintained in the master branch of the Khronos Vulkan Github project.
|
|||
<member><type>uint32_t</type> <name>offset</name></member> <!-- Start of the range, in bytes -->
|
||||
<member><type>uint32_t</type> <name>size</name></member> <!-- Size of the range, in bytes -->
|
||||
<validity>
|
||||
<usage>The sum of pname:offset and pname:size must: be less than or equal to the value of sname:VkPhysicalDeviceLimits::pname:maxPushConstantsSize</usage>
|
||||
<usage>The value of pname:offset must: be less than the value of sname:VkPhysicalDeviceLimits::pname:maxPushConstantsSize</usage>
|
||||
<usage>The value of pname:size must: be greater than `0`</usage>
|
||||
<usage>The value of pname:size must: be a multiple of `4`</usage>
|
||||
<usage>The value of pname:size must: be less than or equal to the value of sname:VkPhysicalDeviceLimits::pname:maxPushConstantsSize minus pname:offset</usage>
|
||||
</validity>
|
||||
</type>
|
||||
<type category="struct" name="VkPipelineLayoutCreateInfo">
|
||||
|
@ -2698,7 +2707,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
|
|||
<enum bitpos="3" name="VK_SHADER_STAGE_GEOMETRY_BIT"/>
|
||||
<enum bitpos="4" name="VK_SHADER_STAGE_FRAGMENT_BIT"/>
|
||||
<enum bitpos="5" name="VK_SHADER_STAGE_COMPUTE_BIT"/>
|
||||
<enum value="0x1F" name="VK_SHADER_STAGE_ALL_GRAPHICS"/>
|
||||
<enum value="0x0000001F" name="VK_SHADER_STAGE_ALL_GRAPHICS"/>
|
||||
<enum value="0x7FFFFFFF" name="VK_SHADER_STAGE_ALL"/>
|
||||
</enums>
|
||||
<enums name="VkImageUsageFlagBits" type="bitmask">
|
||||
|
@ -2934,7 +2943,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
|
|||
<usage>If no sname:VkAllocationCallbacks were provided when pname:instance was created, pname:pAllocator must: be `NULL`</usage>
|
||||
</validity>
|
||||
</command>
|
||||
<command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_INITIALIZATION_FAILED">
|
||||
<command successcodes="VK_SUCCESS,VK_INCOMPLETE" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY,VK_ERROR_INITIALIZATION_FAILED">
|
||||
<proto><type>VkResult</type> <name>vkEnumeratePhysicalDevices</name></proto>
|
||||
<param><type>VkInstance</type> <name>instance</name></param>
|
||||
<param optional="false,true"><type>uint32_t</type>* <name>pPhysicalDeviceCount</name></param>
|
||||
|
@ -3048,7 +3057,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
|
|||
<param><type>uint32_t</type> <name>queueIndex</name></param>
|
||||
<param><type>VkQueue</type>* <name>pQueue</name></param>
|
||||
<validity>
|
||||
<usage>pname:queueFamilyIndex must: be one of the queue family indexes specified when pname:device was created, via the sname:VkDeviceQueueCreateInfo structure</usage>
|
||||
<usage>pname:queueFamilyIndex must: be one of the queue family indices specified when pname:device was created, via the sname:VkDeviceQueueCreateInfo structure</usage>
|
||||
<usage>pname:queueIndex must: be less than the number of queues created for the specified queue family index when pname:device was created, via the pname:queueCount member of the sname:VkDeviceQueueCreateInfo structure</usage>
|
||||
</validity>
|
||||
</command>
|
||||
|
@ -3104,7 +3113,8 @@ maintained in the master branch of the Khronos Vulkan Github project.
|
|||
<validity>
|
||||
<usage>pname:memory mustnot: currently be mapped</usage>
|
||||
<usage>pname:offset must: be less than the size of pname:memory</usage>
|
||||
<usage>If pname:size is not equal to ename:VK_WHOLE_SIZE, the sum of pname:offset and pname:size must: be less than or equal to the pname:size of the pname:memory</usage>
|
||||
<usage>pname:size must: be greater than `0`</usage>
|
||||
<usage>If pname:size is not equal to ename:VK_WHOLE_SIZE, pname:size must: be less than or equal to the size of the pname:memory minus pname:offset</usage>
|
||||
<usage>pname:memory must: have been created with a memory type that reports ename:VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT</usage>
|
||||
</validity>
|
||||
</command>
|
||||
|
@ -3121,18 +3131,12 @@ maintained in the master branch of the Khronos Vulkan Github project.
|
|||
<param><type>VkDevice</type> <name>device</name></param>
|
||||
<param><type>uint32_t</type> <name>memoryRangeCount</name></param>
|
||||
<param len="memoryRangeCount">const <type>VkMappedMemoryRange</type>* <name>pMemoryRanges</name></param>
|
||||
<validity>
|
||||
<usage>The memory ranges specified by pname:pMemoryRanges must: all currently be mapped</usage>
|
||||
</validity>
|
||||
</command>
|
||||
<command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_OUT_OF_HOST_MEMORY,VK_ERROR_OUT_OF_DEVICE_MEMORY">
|
||||
<proto><type>VkResult</type> <name>vkInvalidateMappedMemoryRanges</name></proto>
|
||||
<param><type>VkDevice</type> <name>device</name></param>
|
||||
<param><type>uint32_t</type> <name>memoryRangeCount</name></param>
|
||||
<param len="memoryRangeCount">const <type>VkMappedMemoryRange</type>* <name>pMemoryRanges</name></param>
|
||||
<validity>
|
||||
<usage>The memory ranges specified by pname:pMemoryRanges must: all currently be mapped</usage>
|
||||
</validity>
|
||||
</command>
|
||||
<command>
|
||||
<proto><type>void</type> <name>vkGetDeviceMemoryCommitment</name></proto>
|
||||
|
@ -3163,7 +3167,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
|
|||
<usage>If pname:buffer was created with the ename:VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT, pname:memoryOffset must: be a multiple of the value of sname:VkPhysicalDeviceLimits::pname:minUniformBufferOffsetAlignment</usage>
|
||||
<usage>If pname:buffer was created with the ename:VK_BUFFER_USAGE_STORAGE_BUFFER_BIT, pname:memoryOffset must: be a multiple of the value of sname:VkPhysicalDeviceLimits::pname:minStorageBufferOffsetAlignment</usage>
|
||||
<usage>pname:memory must: have been allocated using one of the memory types allowed in the pname:memoryTypeBits member of the sname:VkMemoryRequirements structure returned from a call to fname:vkGetBufferMemoryRequirements with pname:buffer</usage>
|
||||
<usage>The sum of pname:memoryOffset and the size of pname:buffer must: be less than or equal to the size of pname:memory</usage>
|
||||
<usage>The size of pname:buffer must: be less than or equal to the size of pname:memory minus pname:memoryOffset</usage>
|
||||
<usage>pname:memoryOffset must: be an integer multiple of the pname:alignment member of the sname:VkMemoryRequirements structure returned from a call to fname:vkGetBufferMemoryRequirements with pname:buffer</usage>
|
||||
</validity>
|
||||
</command>
|
||||
|
@ -3185,7 +3189,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
|
|||
<usage>pname:memoryOffset must: be less than the size of pname:memory</usage>
|
||||
<usage>pname:memory must: have been allocated using one of the memory types allowed in the pname:memoryTypeBits member of the sname:VkMemoryRequirements structure returned from a call to fname:vkGetImageMemoryRequirements with pname:image</usage>
|
||||
<usage>pname:memoryOffset must: be an integer multiple of the pname:alignment member of the sname:VkMemoryRequirements structure returned from a call to fname:vkGetImageMemoryRequirements with pname:image</usage>
|
||||
<usage>pname:memory must: have storage from pname:memoryOffset onwards equal to or greater than the pname:size member of the sname:VkMemoryRequirements structure returned from a call to fname:vkGetImageMemoryRequirements with pname:image</usage>
|
||||
<usage>The pname:size member of the sname:VkMemoryRequirements structure returned from a call to fname:vkGetImageMemoryRequirements with pname:image must: be less than or equal to the size of pname:memory minus pname:memoryOffset</usage>
|
||||
</validity>
|
||||
</command>
|
||||
<command>
|
||||
|
@ -4047,8 +4051,11 @@ maintained in the master branch of the Khronos Vulkan Github project.
|
|||
<param><type>uint32_t</type> <name>regionCount</name></param>
|
||||
<param len="regionCount">const <type>VkBufferCopy</type>* <name>pRegions</name></param>
|
||||
<validity>
|
||||
<usage>The sum of the pname:srcOffset and pname:copySize members of a given element of pname:pRegions must: be less than or equal to the size of pname:srcBuffer</usage>
|
||||
<usage>The sum of the pname:dstOffset and pname:copySize members of a given element of pname:pRegions must: be less than or equal to the size of pname:dstBuffer</usage>
|
||||
<usage>The pname:copySize member of a given element of pname:pRegions must: be greater than `0`</usage>
|
||||
<usage>The pname:srcOffset member of a given element of pname:pRegions must: be less than the size of pname:srcBuffer</usage>
|
||||
<usage>The pname:dstOffset member of a given element of pname:pRegions must: be less than the size of pname:dstBuffer</usage>
|
||||
<usage>The pname:copySize member of a given element of pname:pRegions must: be less than or equal to the size of pname:srcBuffer minus pname:srcOffset</usage>
|
||||
<usage>The pname:copySize member of a given element of pname:pRegions must: be less than or equal to the size of pname:dstBuffer minus pname:dstOffset</usage>
|
||||
<usage>The union of the source regions, and the union of the destination regions, specified by the elements of pname:pRegions, mustnot: overlap in memory</usage>
|
||||
<usage>pname:srcBuffer must: have been created with ename:VK_BUFFER_USAGE_TRANSFER_SRC_BIT usage flag</usage>
|
||||
<usage>pname:dstBuffer must: have been created with ename:VK_BUFFER_USAGE_TRANSFER_DST_BIT usage flag</usage>
|
||||
|
@ -4152,10 +4159,11 @@ maintained in the master branch of the Khronos Vulkan Github project.
|
|||
<param><type>VkDeviceSize</type> <name>dataSize</name></param>
|
||||
<param len="latexmath:[$dataSize \over 4$]">const <type>uint32_t</type>* <name>pData</name></param>
|
||||
<validity>
|
||||
<usage>The sum of pname:dstOffset and pname:dataSize must: be less than or equal to the size of pname:dstBuffer</usage>
|
||||
<usage>The value of pname:dataSize must: be greater than `0`</usage>
|
||||
<usage>The value of pname:dstOffset must: be less than the size of pname:dstBuffer</usage>
|
||||
<usage>The value of pname:dataSize must: be less than or equal to the size of pname:dstBuffer minus pname:dstOffset</usage>
|
||||
<usage>pname:dstBuffer must: have been created with ename:VK_BUFFER_USAGE_TRANSFER_DST_BIT usage flag</usage>
|
||||
<usage>The value of pname:dstOffset must: be a multiple of `4`</usage>
|
||||
<usage>The value of pname:dataSize must: be greater than `0`</usage>
|
||||
<usage>The value of pname:dataSize must: be less than or equal to `65536`</usage>
|
||||
<usage>The value of pname:dataSize must: be a multiple of `4`</usage>
|
||||
</validity>
|
||||
|
@ -4168,10 +4176,12 @@ maintained in the master branch of the Khronos Vulkan Github project.
|
|||
<param><type>VkDeviceSize</type> <name>size</name></param>
|
||||
<param><type>uint32_t</type> <name>data</name></param>
|
||||
<validity>
|
||||
<usage>If pname:size is not equal to ename:VK_WHOLE_SIZE, the sum of pname:dstOffset and pname:size must: be less than or equal to the size of pname:dstBuffer</usage>
|
||||
<usage>pname:dstBuffer must: have been created with ename:VK_BUFFER_USAGE_TRANSFER_DST_BIT usage flag</usage>
|
||||
<usage>pname:size must: be greater than `0`</usage>
|
||||
<usage>pname:dstOffset must: be less than the size of pname:dstBuffer</usage>
|
||||
<usage>pname:dstOffset must: be a multiple of `4`</usage>
|
||||
<usage>If pname:size is not equal to ename:VK_WHOLE_SIZE, pname:size must: be less than or equal to the size of pname:dstBuffer minus pname:dstOffset</usage>
|
||||
<usage>If pname:size is not equal to ename:VK_WHOLE_SIZE, pname:size must: be a multiple of `4`</usage>
|
||||
<usage>pname:dstBuffer must: have been created with ename:VK_BUFFER_USAGE_TRANSFER_DST_BIT usage flag</usage>
|
||||
</validity>
|
||||
</command>
|
||||
<command queues="graphics,compute" renderpass="outside" cmdbufferlevel="primary,secondary">
|
||||
|
@ -4363,6 +4373,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
|
|||
<param><type>VkDeviceSize</type> <name>stride</name></param>
|
||||
<param optional="true"><type>VkQueryResultFlags</type> <name>flags</name></param>
|
||||
<validity>
|
||||
<usage>pname:dstOffset must: be less than the size of pname:dstBuffer</usage>
|
||||
<usage>pname:firstQuery must: be less than the number of queries in pname:queryPool</usage>
|
||||
<usage>The sum of pname:firstQuery and pname:queryCount must: be less than or equal to the number of queries in pname:queryPool</usage>
|
||||
<usage>If ename:VK_QUERY_RESULT_64_BIT is not set in pname:flags then pname:dstOffset and pname:stride must be multiples of `4`</usage>
|
||||
|
@ -4383,6 +4394,8 @@ maintained in the master branch of the Khronos Vulkan Github project.
|
|||
<usage>pname:stageFlags must: match exactly the shader stages used in pname:layout for the range specified by pname:offset and pname:size</usage>
|
||||
<usage>pname:offset must: be a multiple of `4`</usage>
|
||||
<usage>pname:size must: be a multiple of `4`</usage>
|
||||
<usage>pname:offset must: be less than the value of sname:VkPhysicalDeviceLimits::pname:maxPushConstantsSize</usage>
|
||||
<usage>pname:size must: be less than or equal to the value of sname:VkPhysicalDeviceLimits::pname:maxPushConstantsSize minus pname:offset</usage>
|
||||
</validity>
|
||||
</command>
|
||||
<command queues="graphics" renderpass="outside" cmdbufferlevel="primary">
|
||||
|
@ -4670,7 +4683,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
|
|||
<usage>pname:queueFamilyIndex must: be less than the value of pname:pQueueFamilyPropertyCount returned by fname:vkGetPhysicalDeviceQueueFamilyProperties for the given pname:physicalDevice</usage>
|
||||
</validity>
|
||||
</command>
|
||||
<command>
|
||||
<command successcodes="VK_SUCCESS">
|
||||
<proto><type>VkResult</type> <name>vkCreateDebugReportCallbackEXT</name></proto>
|
||||
<param><type>VkInstance</type> <name>instance</name></param>
|
||||
<param>const <type>VkDebugReportCallbackCreateInfoEXT</type>* <name>pCreateInfo</name></param>
|
||||
|
@ -5088,11 +5101,11 @@ maintained in the master branch of the Khronos Vulkan Github project.
|
|||
<command name="vkDebugReportMessageEXT"/>
|
||||
</require>
|
||||
</extension>
|
||||
<extension name="VK_NV_extension_0" number="13" author="NVIDIA" contact="Piers Daniell @pdaniell" supported="disabled">
|
||||
<extension name="VK_NV_glsl_shader" number="13" author="NVIDIA" contact="Piers Daniell @pdaniell" supported="vulkan">
|
||||
<require>
|
||||
<enum value="0" name="VK_NV_EXTENSION_0_SPEC_VERSION"/>
|
||||
<enum value=""VK_NV_extension_0"" name="VK_NV_EXTENSION_0_EXTENSION_NAME"/>
|
||||
<enum offset="0" dir="-" extends="VkResult" name="VK_NV_EXTENSION_0_ERROR"/>
|
||||
<enum value="1" name="VK_NV_GLSL_SHADER_SPEC_VERSION"/>
|
||||
<enum value=""VK_NV_glsl_shader"" name="VK_NV_GLSL_SHADER_EXTENSION_NAME"/>
|
||||
<enum offset="0" dir="-" extends="VkResult" name="VK_ERROR_INVALID_SHADER_NV"/>
|
||||
</require>
|
||||
</extension>
|
||||
<extension name="VK_NV_extension_1" number="14" author="NVIDIA" contact="Piers Daniell @pdaniell" supported="disabled">
|
||||
|
|
|
@ -41,7 +41,7 @@ extern "C" {
|
|||
(((major) << 22) | ((minor) << 12) | (patch))
|
||||
|
||||
// Vulkan API version supported by this file
|
||||
#define VK_API_VERSION VK_MAKE_VERSION(1, 0, 4)
|
||||
#define VK_API_VERSION VK_MAKE_VERSION(1, 0, 5)
|
||||
|
||||
#define VK_VERSION_MAJOR(version) ((uint32_t)(version) >> 22)
|
||||
#define VK_VERSION_MINOR(version) (((uint32_t)(version) >> 12) & 0x3ff)
|
||||
|
@ -142,6 +142,7 @@ typedef enum VkResult {
|
|||
VK_ERROR_OUT_OF_DATE_KHR = -1000001004,
|
||||
VK_ERROR_INCOMPATIBLE_DISPLAY_KHR = -1000003001,
|
||||
VK_ERROR_VALIDATION_FAILED_EXT = -1000011001,
|
||||
VK_ERROR_INVALID_SHADER_NV = -1000012000,
|
||||
VK_RESULT_BEGIN_RANGE = VK_ERROR_FORMAT_NOT_SUPPORTED,
|
||||
VK_RESULT_END_RANGE = VK_INCOMPLETE,
|
||||
VK_RESULT_RANGE_SIZE = (VK_INCOMPLETE - VK_ERROR_FORMAT_NOT_SUPPORTED + 1),
|
||||
|
@ -979,7 +980,7 @@ typedef enum VkShaderStageFlagBits {
|
|||
VK_SHADER_STAGE_GEOMETRY_BIT = 0x00000008,
|
||||
VK_SHADER_STAGE_FRAGMENT_BIT = 0x00000010,
|
||||
VK_SHADER_STAGE_COMPUTE_BIT = 0x00000020,
|
||||
VK_SHADER_STAGE_ALL_GRAPHICS = 0x1F,
|
||||
VK_SHADER_STAGE_ALL_GRAPHICS = 0x0000001F,
|
||||
VK_SHADER_STAGE_ALL = 0x7FFFFFFF,
|
||||
} VkShaderStageFlagBits;
|
||||
typedef VkFlags VkPipelineVertexInputStateCreateFlags;
|
||||
|
@ -3774,6 +3775,11 @@ VKAPI_ATTR void VKAPI_CALL vkDebugReportMessageEXT(
|
|||
const char* pMessage);
|
||||
#endif
|
||||
|
||||
#define VK_NV_glsl_shader 1
|
||||
#define VK_NV_GLSL_SHADER_SPEC_VERSION 1
|
||||
#define VK_NV_GLSL_SHADER_EXTENSION_NAME "VK_NV_glsl_shader"
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
|
Loading…
Reference in New Issue