Change log for April 15, 2016 Vulkan 1.0.10 spec update:

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

Github Issues:

  * Slightly tweak the <<memory-allocation,Host Memory>> allocator language
    so that an application wrapping the standard C alloc/free/realloc
    functions is still correct - the previous language was too strong with
    regards to freeing memory. Also made certain scenarios clearer - an
    implementation may now continue without error if an allocation failed
    and it is able to continue correctly (public issue 21).
  * Require that etext:VK_*_CREATE_SPARSE_BINDING_BIT is set when the
    corresponding etext:VK_*_CREATE_SPARSE_RESIDENCY_BIT is used, in the
    <<sparsememory-miptail,Mip Tail Regions>> section and related commands
    flink:vkCreateBuffer and flink:vkCreateImage (public issue 84).
  * Update the <<features,Features, Limits, and Formats>> chapter to clarify
    interactions between optional features and dynamic state for the
    pname:depthBiasClamp and pname:wideLines features (public issue 89).
  * Describe the code:WorkgroupSize builtin in the
    <<interfaces-builtin-variables,Built-In Variables>> section, and update
    the <<compute-shaders,Compute Shaders>> section to further clarify how
    to set the number of workgroups to execute in a compute shader (public
    issue 145).
  * Use the term *image subresource* everywhere instead of *subresource*,
    except for the special case of *host-accessible subresource*, which may
    be either an image subresource or buffer range (public issue 120)
  * Add a note to the <<features,Features, Limits, and Formats>> section
    about extensibility of structures (Public issue 165).
  * Fix return code flink:vkAcquireNextImageKHR when the timeout parameter
    is 0 to ename:VK_NOT_READY instead of ename:VK_TIMEOUT (public issue
    170).
  * Fix typo in slink:VkLayerProperties::pname:apiVersion field (public
    issue 172).

Internal Issues:

  * Fix a few minor internally-detected typos.
  * Minor formatting tweaks to pseudocode in the <<resources,Resource
    Creation>> chapter (internal issue 179).
  * Fix typo in the definition of point sampling for
    elink:VkCullModeFlagBits (internal issue 268).
This commit is contained in:
Jon Leech 2016-04-14 01:58:49 -07:00
parent 5d10fc3089
commit 3b32b240f6
36 changed files with 454 additions and 303 deletions

View File

@ -87,12 +87,12 @@ Github Issues:
* Fix typos in chapters 7-9 (public issue 14).
* Clarify the example demonstrating the behavior of
code:OpMemoryBarrier in the
&lt;&lt;shaders-execution-memory-ordering,shader memory acces
<<shaders-execution-memory-ordering,shader memory acces
ordering>> section (public issue 16).
* Specify that freeing mapped memory implicitly unmaps the memory in
the description of flink:vkFreeMemory (public issue 17).
* Forbid allocation callbacks from calling into the API in the
&lt;&lt;memory-allocation,memory allocation>> section (public issue
<<memory-allocation,memory allocation>> section (public issue
20).
* Add missing validity rules about size being greater than 0 and
offset being less than size of object. Fix
@ -102,21 +102,21 @@ Github Issues:
descriptors in flink:VkCopyDescriptorSet (public issue 32).
* Clarify that array and matrix stride has to be a multiple of the
base alignment of the array or matrix in the
&lt;&lt;interfaces-resources-layout,Offset and Stride Assignment>>
<<interfaces-resources-layout,Offset and Stride Assignment>>
section (public issue 38).
* Correct parenthesis floor nesting error in equation for
&lt;&lt;textures-RGB-sexp,RGB to shared exponent conversion>>.
<<textures-RGB-sexp,RGB to shared exponent conversion>>.
Clarify case of when exp' is forced to 0, avoiding log2(0) undefined
problem (public issue 40).
* Remove redundant statement from the code:FragDepth description in
the &lt;&lt;interfaces-builtin-variables,Built-In Variables>>
the <<interfaces-builtin-variables,Built-In Variables>>
section (public issue 47).
* Define the clamping of the
&lt;&lt;textures-level-of-detail-operation,bias added to the scale
<<textures-level-of-detail-operation,bias added to the scale
factor>> by linking to the slink:VkPhysicalDevice feature
pname:maxSamplerLodBias (public issue 64).
* Fix typo "optimal linear resources" and clarify the set of resources
&lt;&lt;features-limits-bufferImageGranularity,the
<<features-limits-bufferImageGranularity,the
pname:bufferImageGranularity resource>> applies to (public issue
67).
* Replace 'descriptor accessed by a pipeline' language for
@ -165,13 +165,13 @@ Github Issues:
* Various minor editorial fixes (public issue 33).
* Clarify locations for block members in the
&lt;&lt;interfaces-iointerfaces-locations,Location Assignment>>
<<interfaces-iointerfaces-locations,Location Assignment>>
section (public issue 45).
* Editorial fixes for &lt;&lt;commandbuffer-allocation,Command Buffer
* Editorial fixes for <<commandbuffer-allocation,Command Buffer
Allocation>> section (public issues 54, 59).
* Clarify behavior of depth test in the &lt;&lt;fragops-depth,Depth
* Clarify behavior of depth test in the <<fragops-depth,Depth
Test&gt;&gt; section (public issues 80, 81).
* Remove discussion of return codes from
@ -183,7 +183,7 @@ Github Issues:
pname:drawCount of 0, as well as 1, when the multiDrawIndirect
feature is not supported (public issue 88).
* Remove confusing wording in the &lt;&lt;features-limits,Limits>>
* Remove confusing wording in the <<features-limits,Limits>>
section describing the slink:VkPhysicalDeviceLimits
pname:minTexelBufferOffsetAlignment,
pname:minUniformBufferOffsetAlignment, and
@ -220,12 +220,12 @@ Github Issues:
implicitly enabled layers (public issue 101).
* Miscellaneous editorial fixes. Include the Vulkan spec patch number
in the PDF title. Fix label on &lt;&lt;fig-non-strict-lines,Non
in the PDF title. Fix label on <<fig-non-strict-lines,Non
strict lines>> diagram. Use more easily distinguished symbols in
tables in the &lt;&lt;features-required-format-support,Required
tables in the <<features-required-format-support,Required
Format Support>> section. Don't require FQDNs used as layer names be
encoded in lower case if not possible, in the
&lt;&lt;extensions-naming-conventions, Extension and Layer Naming
<<extensions-naming-conventions, Extension and Layer Naming
Conventions>> section (public issues 101, 119, 121).
Internal Issues:
@ -453,3 +453,49 @@ Internal Issues:
to state that user-defined variable interface must match too (internal
issue 250).
-----------------------------------------------------
Change log for April 15, 2016 Vulkan 1.0.10 spec update:
* Bump API patch number and header version number to 10 for this
update.
Github Issues:
* Slightly tweak the <<memory-allocation,Host Memory>> allocator language
so that an application wrapping the standard C alloc/free/realloc
functions is still correct - the previous language was too strong with
regards to freeing memory. Also made certain scenarios clearer - an
implementation may now continue without error if an allocation failed
and it is able to continue correctly (public issue 21).
* Require that etext:VK_*_CREATE_SPARSE_BINDING_BIT is set when the
corresponding etext:VK_*_CREATE_SPARSE_RESIDENCY_BIT is used, in the
<<sparsememory-miptail,Mip Tail Regions>> section and related commands
flink:vkCreateBuffer and flink:vkCreateImage (public issue 84).
* Update the <<features,Features, Limits, and Formats>> chapter to clarify
interactions between optional features and dynamic state for the
pname:depthBiasClamp and pname:wideLines features (public issue 89).
* Describe the code:WorkgroupSize builtin in the
<<interfaces-builtin-variables,Built-In Variables>> section, and update
the <<compute-shaders,Compute Shaders>> section to further clarify how
to set the number of workgroups to execute in a compute shader (public
issue 145).
* Use the term *image subresource* everywhere instead of *subresource*,
except for the special case of *host-accessible subresource*, which may
be either an image subresource or buffer range (public issue 120)
* Add a note to the <<features,Features, Limits, and Formats>> section
about extensibility of structures (Public issue 165).
* Fix return code flink:vkAcquireNextImageKHR when the timeout parameter
is 0 to ename:VK_NOT_READY instead of ename:VK_TIMEOUT (public issue
170).
* Fix typo in slink:VkLayerProperties::pname:apiVersion field (public
issue 172).
Internal Issues:
* Fix a few minor internally-detected typos.
* Minor formatting tweaks to pseudocode in the <<resources,Resource
Creation>> chapter (internal issue 179).
* Fix typo in the definition of point sampling for
elink:VkCullModeFlagBits (internal issue 268).

View File

@ -126,7 +126,7 @@ INCLUDES := $(wildcard protos/*.txt structs/*.txt flags/*.txt enums/*.txt funcpo
COMMONDOCS := $(CHAPTERS) $(INCLUDES)
# A generated included file with the spec version, date, and git commit
SPECVERSION = specversion.txt
SPECREVISION = 1.0.9
SPECREVISION = 1.0.10
SPECREMARK =
# Spec targets

View File

@ -356,9 +356,9 @@ Image Subresource Range::
layers.
Image View::
An object that represents a subresource range of a specific image, and
state that controls how the contents are interpreted. Represented by a
sname:VkImageView object.
An object that represents an image subresource range of a specific
image, and state that controls how the contents are interpreted.
Represented by a sname:VkImageView object.
Immutable Sampler::
A sampler descriptor provided at descriptor set layout creation time,
@ -465,7 +465,7 @@ Normalized Device Coordinates::
Overlapped Range (Aliased Range)::
The aliased range of a device memory allocation that intersects a given
subresource of an image or range of a buffer.
image subresource of an image or range of a buffer.
Packed Format::
A format whose components are stored as a single data element in memory,

View File

@ -26,12 +26,12 @@ include::../protos/vkCmdClearColorImage.txt[]
* pname:pColor is a pointer to a slink:VkClearColorValue structure that
contains the values the image subresource ranges will be cleared to (see
<<clears-values>> below).
* pname:rangeCount is the number of subresource range structures in
* pname:rangeCount is the number of image subresource range structures in
pname:pRanges.
* pname:pRanges points to an array of slink:VkImageSubresourceRange
structures that describe a range of mipmap levels, array layers, and
aspects to be cleared, as described in <<resources-image-views,Image
Views>>. The pname:aspectMask of all subresource ranges must: only
Views>>. The pname:aspectMask of all image subresource ranges must: only
include ename:VK_IMAGE_ASPECT_COLOR_BIT.
Each specified range in pname:pRanges is cleared to the value specified by
@ -52,18 +52,18 @@ include::../protos/vkCmdClearDepthStencilImage.txt[]
* pname:pDepthStencil is a pointer to a slink:VkClearDepthStencilValue
structure that contains the values the depth and stencil image
subresource ranges will be cleared to (see <<clears-values>> below).
* pname:rangeCount is the number of subresource range structures in
* pname:rangeCount is the number of image subresource range structures in
pname:pRanges.
* pname:pRanges points to an array of slink:VkImageSubresourceRange
structures that describe a range of mipmap levels, array layers, and
aspects to be cleared, as described in <<resources-image-views,Image
Views>>. The pname:aspectMask of each subresource range in pname:pRanges
can: include ename:VK_IMAGE_ASPECT_DEPTH_BIT if the image format has a
depth component, and ename:VK_IMAGE_ASPECT_STENCIL_BIT if the image
format has a stencil component. pname:pDepthStencil is a pointer to a
sname:VkClearDepthStencilValue structure that contains the values the
image subresource ranges will be cleared to (see <<clears-values>>
below).
Views>>. The pname:aspectMask of each image subresource range in
pname:pRanges can: include ename:VK_IMAGE_ASPECT_DEPTH_BIT if the image
format has a depth component, and ename:VK_IMAGE_ASPECT_STENCIL_BIT if
the image format has a stencil component. pname:pDepthStencil is a
pointer to a sname:VkClearDepthStencilValue structure that contains the
values the image subresource ranges will be cleared to (see
<<clears-values>> below).
include::../validity/protos/vkCmdClearDepthStencilImage.txt[]

View File

@ -122,8 +122,9 @@ Each element of pname:pRegions is a structure defined as:
include::../structs/VkImageCopy.txt[]
* pname:srcSubresource and pname:dstSubresource are
slink:VkImageSubresourceLayers structures specifying the subresources of
the images used for the source and destination image data, respectively.
slink:VkImageSubresourceLayers structures specifying the image
subresources of the images used for the source and destination image
data, respectively.
* pname:srcOffset and pname:dstOffset select the initial x, y, and z
offsets in texels of the sub-regions of the source and destination image
data.
@ -191,21 +192,21 @@ this rule which is required: to handle compressed images created with
dimensions that are not a multiple of the compressed texel block dimensions.
If the pname:srcImage is compressed and if pname:extent.width is not a
multiple of the compressed texel block width then (pname:extent.width +
pname:srcOffset.x) must: equal the subresource width, if pname:extent.height
is not a multiple of the compressed texel block height then
(pname:extent.height + pname:srcOffset.y) must: equal the subresource height
and if pname:extent.depth is not a multiple of the compressed texel block
depth then (pname:extent.depth + pname:srcOffset.z) must: equal the
subresource depth. Similarily if the pname:dstImage is compressed and if
pname:extent.width is not a multiple of the compressed texel block width then
(pname:extent.width + pname:dstOffset.x) must: equal the subresource width, if
pname:srcOffset.x) must: equal the image subresource width, if
pname:extent.height is not a multiple of the compressed texel block height
then (pname:extent.height + pname:dstOffset.y) must: equal the subresource
height and if pname:extent.depth is not a multiple of the compressed texel
block depth then (pname:extent.depth + pname:dstOffset.z) must: equal the
subresource depth. This allows the last compressed texel block of the image
in each non-multiple dimension to be included as a source or destination of
the copy.
then (pname:extent.height + pname:srcOffset.y) must: equal the image
subresource height and if pname:extent.depth is not a multiple of the
compressed texel block depth then (pname:extent.depth + pname:srcOffset.z)
must: equal the image subresource depth. Similarily if the pname:dstImage is
compressed and if pname:extent.width is not a multiple of the compressed
texel block width then (pname:extent.width + pname:dstOffset.x) must: equal
the image subresource width, if pname:extent.height is not a multiple of the
compressed texel block height then (pname:extent.height + pname:dstOffset.y)
must: equal the image subresource height and if pname:extent.depth is not a
multiple of the compressed texel block depth then (pname:extent.depth +
pname:dstOffset.z) must: equal the image subresource depth. This allows the
last compressed texel block of the image in each non-multiple dimension to
be included as a source or destination of the copy.
fname:vkCmdCopyImage can: be used to copy image data between multisample
images, but both images must: have the same number of samples.
@ -266,8 +267,8 @@ include::../structs/VkBufferImageCopy.txt[]
buffer memory is considered to be tightly packed according to the
pname:imageExtent.
* pname:imageSubresource is an slink:VkImageSubresourceLayers used to
specify the specific subresources of the image used for the source or
destination image data.
specify the specific image subresources of the image used for the source
or destination image data.
* pname:imageOffset selects the initial x, y, z offsets in texels of the
sub-region of the source or destination image data.
* pname:imageExtent is the size in texels of the image to copy in
@ -366,14 +367,14 @@ this rule which is required: to handle compressed images created with
dimensions that are not a multiple of the compressed texel block dimensions.
If pname:imageExtent.width is not a multiple of the compressed texel block
width then (pname:imageExtent.width + pname:imageOffset.x) must: equal the
subresource width, if pname:imageExtent.height is not a multiple of the
compressed texel block height then (pname:imageExtent.height +
pname:imageOffset.y) must: equal the subresource height and if
pname:imageExtent.depth is not a multiple of the compressed texel block depth
then (pname:imageExtent.depth + pname:imageOffset.z) must: equal the
subresource depth. This allows the last compressed texel block of the image
in each non-multiple dimension to be included as a source or destination of
the copy.
image subresource width, if pname:imageExtent.height is not a multiple of
the compressed texel block height then (pname:imageExtent.height +
pname:imageOffset.y) must: equal the image subresource height and if
pname:imageExtent.depth is not a multiple of the compressed texel block
depth then (pname:imageExtent.depth + pname:imageOffset.z) must: equal the
image subresource depth. This allows the last compressed texel block of the
image in each non-multiple dimension to be included as a source or
destination of the copy.
[[copies-imagescaling]]
@ -495,9 +496,9 @@ Each element of pname:pRegions is a structure defined as:
include::../structs/VkImageResolve.txt[]
* pname:srcSubresource and pname:dstSubresource are
slink:VkImageSubresourceLayers structures specifying the subresources of
the images used for the source and destination image data, respectively.
Resolve of depth/stencil images is not supported.
slink:VkImageSubresourceLayers structures specifying the image
subresources of the images used for the source and destination image
data, respectively. Resolve of depth/stencil images is not supported.
* pname:srcOffset and pname:dstOffset select the initial x, y, and z
offsets in texels of the sub-regions of the source and destination image
data.

View File

@ -85,7 +85,7 @@ include::../structs/VkLayerProperties.txt[]
in the slink:VkInstanceCreateInfo and slink:VkDeviceCreateInfo
structures passed to flink:vkCreateInstance and flink:vkCreateDevice,
respectively, to enable this layer for an instance or device.
* pname:apiVersion is the {apiname} version the layer was written to,
* pname:specVersion is the {apiname} version the layer was written to,
encoded as described in the <<fundamentals-versionnum,API Version
Numbers and Semantics>> section.
* pname:implementationVersion is the version of this layer. It is an

View File

@ -14,6 +14,17 @@ across implementations. A minimum set of format features are guaranteed, but
others must: be explicitly queried before use to ensure they are supported
by the implementation.
[NOTE]
.Note on extensibility
====
The features and limits are reported via basic structures (that is
slink:VkPhysicalDeviceFeatures and slink:VkPhysicalDeviceLimits).
It is expected that when new features or limits are added in a future
{apiname} version, new structure(s) and entry point(s) will be added as
necessary to query these. New functionality added by
<<extended-functionality-extensions,extensions>> is not expected to
modify the core feature and limit structures.
====
[[features-features]]
== Features
@ -169,8 +180,10 @@ following features:
* [[features-features-depthBiasClamp]] pname:depthBiasClamp indicates
whether depth bias clamping is supported. If this feature is not
enabled, the pname:depthBiasClamp member of the
sname:VkPipelineRasterizationStateCreateInfo structure must: be set to
0.0.
sname:VkPipelineRasterizationStateCreateInfo structure must: be set
to 0.0 unless the VK_DYNAMIC_STATE_DEPTH_BIAS dynamic state is enabled,
and the pname:depthBiasClamp parameter to fname:vkCmdSetDepthBias must:
be set to 0.0.
* [[features-features-fillModeNonSolid]] pname:fillModeNonSolid indicates
whether point and wireframe fill modes are supported. If this feature is
not enabled, the ename:VK_POLYGON_MODE_POINT and
@ -186,8 +199,10 @@ following features:
* [[features-features-wideLines]] pname:wideLines indicates whether lines
with width other than 1.0 are supported. If this feature is not enabled,
the pname:lineWidth member of the
sname:VkPipelineRasterizationStateCreateInfo structure must: be set to
1.0. When this feature is supported, the range and granularity of
sname:VkPipelineRasterizationStateCreateInfo structure must: be set
to 1.0 unless the VK_DYNAMIC_STATE_LINE_WIDTH dynamic state is enabled,
and the pname:lineWidth parameter to fname:vkCmdSetLineWidth must: be set
to 1.0. When this feature is supported, the range and granularity of
supported line widths are indicated by the pname:lineWidthRange and
pname:lineWidthGranularity members of the sname:VkPhysicalDeviceLimits
structure, respectively.
@ -904,13 +919,15 @@ properties of the physical device:
pname:maxComputeWorkGroupInvocations is the maximum total number of
compute shader invocations in a single local workgroup. The product of
the X, Y, and Z sizes as specified by the code:LocalSize execution mode
in shader modules must: be less than or equal to this limit.
in shader modules and by the object decorated by the code:WorkgroupSize
decoration must: be less than or equal to this limit.
* [[features-limits-maxComputeWorkGroupSize]]
pname:maxComputeWorkGroupSize[3] is the maximum size of a local compute
workgroup, per dimension. These three values represent the maximum
local workgroup size in the X, Y, and Z dimensions, respectively. The
pname:x, pname:y, and pname:z sizes specified by the code:LocalSize
execution mode in shader modules must: be less than or equal to the
execution mode and by the object decorated by the code:WorkgroupSize
decoration in shader modules must: be less than or equal to the
corresponding limit.
* [[features-limits-subPixelPrecisionBits]] pname:subPixelPrecisionBits is
the number of bits of subpixel precision in framebuffer coordinates
@ -3669,9 +3686,9 @@ include::../structs/VkImageFormatProperties.txt[]
depth and stencil component, both the depth and stencil limits must: be
satisfied.
* pname:maxResourceSize is the maximum total image size in bytes,
inclusive of all subresources. Implementations may: have an address
space limit on total size of a resource, which is advertised by this
property. pname:maxResourceSize must: be at least 2^31^.
inclusive of all image subresources. Implementations may: have an
address space limit on total size of a resource, which is advertised by
this property. pname:maxResourceSize must: be at least 2^31^.
[NOTE]
.Note

View File

@ -888,12 +888,11 @@ code:LocalInvocationID::
This variable contains the location of the current compute shader invocation
within the local workgroup. The range of possible values for each component
of LocalInvocationID range from zero through the size of the workgroup (as
defined by code:LocalSize) in that dimension minus one. If the size of the
workgroup in a particular dimension is one, then
LocalInvocationID in that dimension will be zero. That is, if the workgroup
is effectively two-dimensional, then pname:LocalInvocationID.z will be zero,
and if the workgroup is one-dimensional, then both
of LocalInvocationID range from zero through the size of the workgroup in that
dimension minus one. If the size of the workgroup in a particular dimension is
one, then LocalInvocationID in that dimension will be zero. That is, if the
workgroup is effectively two-dimensional, then pname:LocalInvocationID.z will
be zero, and if the workgroup is one-dimensional, then both
pname:LocalInvocationID.y and pname:LocalInvocationID.z will be zero.
+
The code:LocalInvocationID decoration is only supported in compute shaders.
@ -915,6 +914,22 @@ The code:NumWorkGroups decoration is only supported in compute shaders.
code:NumWorkGroups must: be declared as a three-component vector of 32-bit
integers.
code:WorkgroupSize::
The code:WorkgroupSize decoration can: be applied to declare an object
representing the dimensions of a local workgroup in a compute shader. If this
is done, it must: be applied to a code:uvec3 specialization constant or a
code:uvec3 constant.
+
If a specialization constant or a constant is decorated with the
code:WorkgroupSize decoration, this must: take precedence over any execution
mode set for code:LocalSize.
+
The code:WorkgroupSize decoration is only supported in compute shaders.
+
code:WorkgroupSize must: be declared as a three-component vector of 32-bit
integers.
code:PatchVertices::
An input variable decorated with code:PatchVertices in the tessellation

View File

@ -52,13 +52,6 @@ include::../structs/VkAllocationCallbacks.txt[]
include::../validity/structs/VkAllocationCallbacks.txt[]
An allocator indicates an error condition by returning `NULL` from
pname:pfnAllocation or pname:pfnReallocation. If this occurs, the
implementation should: treat it as a run time error and should: report
ename:VK_ERROR_OUT_OF_HOST_MEMORY at the appropriate time for the
command in which the condition was detected, as described in
<<fundamentals-returncodes>>.
The type of pname:pfnAllocation is:
include::../funcpointers/PFN_vkAllocationFunction.txt[]
@ -73,10 +66,37 @@ include::../funcpointers/PFN_vkAllocationFunction.txt[]
specifying the scope of the lifetime of the allocation, as described
<<memory-host-allocation-scope,here>>.
pname:pfnAllocation must: either return `NULL` (in case of allocation
failure or if pname:size is zero) or a valid pointer to a memory allocation
containing at least pname:size bytes, and with the pointer value being a
multiple of pname:alignment.
[[vkAllocationFunction_return_rules]]
If pname:pfnAllocation is unable to allocate the requested memory,
it must: return `NULL`. If the allocation was successful, it must: return a
valid pointer to memory allocation containing at least pname:size bytes, and
with the pointer value being a multiple of pname:alignment.
[NOTE]
====
Correct Vulkan operation cannot be assumed if the application doesn't
follow these rules.
For example, pname:pfnAllocation (or pname:pfnReallocation) could cause
termination of running Vulkan instance(s) on a failed allocation for
debugging purposes, either directly or indirectly. In these circumstances,
it cannot be assumed that any part of any affected VkInstance objects are
going to operate correctly (even flink:vkDestroyInstance), and the
application must ensure it cleans up properly via other means (e.g.
process termination).
====
If pname:pfnAllocation returns `NULL`, and if the implementation is unable
to continue correct processing of the current command without the requested
allocation, it must: treat this as a run-time error, and generate
ename:VK_ERROR_OUT_OF_HOST_MEMORY at the appropriate time for the command
in which the condition was detected, as described in
<<fundamentals-errorcodes, Return Codes>>.
If the implementation is able to continue correct processing of the current
command without the requested allocation, then it may: do so, and must:
not generate ename:VK_ERROR_OUT_OF_HOST_MEMORY as a result of this failed
allocation.
The type of pname:pfnReallocation is:
@ -94,21 +114,31 @@ include::../funcpointers/PFN_vkReallocationFunction.txt[]
specifying the scope of the lifetime of the allocation, as described
<<memory-host-allocation-scope,here>>.
pname:pfnReallocation must: alter the size of the allocation
pname:pOriginal, either by shrinking or growing it, to accommodate the new
pname:size.
pname:pfnReallocation must: return an allocation with enough space for
pname:size bytes, and the contents of the original allocation from bytes
zero to latexmath:[$\min(\textrm{original size, new size})-1$] must: be
preserved in the returned allocation. If pname:size is larger than the old
size, the contents of the additional space are undefined. If satisfying
these requirements involves creating a new allocation, then the old
allocation should: be freed.
If pname:pOriginal is `NULL`, then pname:pfnReallocation must: behave
similarly to tlink:PFN_vkAllocationFunction. If pname:size is zero, then
pname:pfnReallocation must: behave similarly to tlink:PFN_vkFreeFunction.
The contents of the original allocation from bytes zero to
latexmath:[$\min(\textrm{original size, new size})-1$] must: be
preserved in the new allocation. If the new allocation is larger than the
old allocation, then the contents of the additional space are undefined.
If pname:pOriginal is non-`NULL`, pname:alignment must: be equal to the
originally requested alignment. If satisfying these requirements involves
creating a new allocation, then the old allocation must: be freed. If this
function fails, it must: return `NULL` and not free the old allocation.
equivalently to a call to tlink:PFN_vkAllocationFunction with the same
parameter values (without pname:pOriginal).
If pname:size is zero, then pname:pfnReallocation must: behave
equivalently to a call to tlink:PFN_vkFreeFunction with the same
pname:pUserData parameter value, and pname:pMemory equal to pname:pOriginal.
If pname:pOriginal is non-`NULL`, the implementation must: ensure that
pname:alignment is equal to the pname:alignment used to originally allocate
pname:pOriginal.
If this function fails and pname:pOriginal is non-`NULL` the application
must: not free the old allocation.
pname:pfnReallocation must: follow the same <<vkAllocationFunction_return_rules,
rules for return values as tname:PFN_vkAllocationFunction>>.
The type of pname:pfnFree is:
@ -121,8 +151,8 @@ include::../funcpointers/PFN_vkFreeFunction.txt[]
pname:pMemory may: be `NULL`, which the callback must: handle safely. If
pname:pMemory is non-`NULL`, it must: be a pointer previously allocated by
pname:pfnAllocation or pname:pfnReallocation and must: be freed by the
function.
pname:pfnAllocation or pname:pfnReallocation. The application should: free
this memory.
The type of pname:pfnInternalAllocation is:
@ -246,7 +276,7 @@ If an allocator is provided to a ftext:vkCreate* command, a _compatible_
allocator must: be provided to the corresponding ftext:vkDestroy* command.
Two sname:VkAllocationCallbacks structures are compatible if memory created
with pname:pfnAllocation or pname:pfnReallocation in each can: be freed with
pname:pfnReallocation or pname:pfnFree in the other. An allocator mustnot:
pname:pfnReallocation or pname:pfnFree in the other. An allocator must: not
be provided to a ftext:vkDestroy* command if an allocator was not provided
to the corresponding ftext:vkCreate* command.
@ -262,7 +292,7 @@ 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.
Allocation callbacks must: not call any {apiname} commands.
The following sets of rules define when an implementation is permitted to
call the allocator callbacks.
@ -431,7 +461,7 @@ include::../enums/VkMemoryPropertyFlagBits.txt[]
memory is always host coherent.
** if pname:propertyFlags has the
ename:VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT bit set, the memory type
only allows device access to the memory. Memory types mustnot: have
only allows device access to the memory. Memory types must: not have
both ename:VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT and
ename:VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT set. Additionally,
the object's backing memory may: be provided by the implementation

View File

@ -537,7 +537,7 @@ latexmath:[$c$] are determined by:
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
where latexmath:[$A(lmn)$] denotes the area in framebuffer coordinates of
the triangle with vertices latexmath:[$l$], latexmath:[$n$], and
the triangle with vertices latexmath:[$l$], latexmath:[$m$], and
latexmath:[$n$].
Denote an associated datum at latexmath:[$p_a$], latexmath:[$p_b$], or

View File

@ -227,7 +227,7 @@ multiple ways:
* Multiple attachments being assigned the same image view as part of
framebuffer creation.
* Attachments using distinct image views that correspond to the same
* Attachments using distinct image views that correspond to the same image
subresource of an image.
* Attachments using views of distinct image subresources which are bound
to overlapping memory.

View File

@ -111,11 +111,14 @@ These bitfields have the following meanings:
* ename:VK_BUFFER_CREATE_SPARSE_BINDING_BIT indicates that the buffer will
be backed using sparse memory binding.
* ename:VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT indicates that the buffer
can: be partially backed using sparse memory binding.
can: be partially backed using sparse memory binding. Buffers
created with this flag must: also be created with the
ename:VK_BUFFER_CREATE_SPARSE_BINDING_BIT flag.
* ename:VK_BUFFER_CREATE_SPARSE_ALIASED_BIT indicates that the buffer will
be backed using sparse memory binding with memory ranges that might also
simultaneously be backing another buffer (or another portion of the same
buffer).
buffer). Buffers created with this flag must: also be created
with the ename:VK_BUFFER_CREATE_SPARSE_BINDING_BIT flag.
See <<sparsememory-sparseresourcefeatures,Sparse Resource Features>> and
<<features-features,Physical Device Features>> for details of the sparse
@ -273,7 +276,7 @@ out in memory in row-major order, possibly with some padding on each row).
access this image (ignored if pname:sharingMode is not
ename:VK_SHARING_MODE_CONCURRENT).
* pname:initialLayout selects the initial elink:VkImageLayout state of all
subresources of the image. See <<resources-image-layouts,Image
image subresources of the image. See <<resources-image-layouts,Image
Layouts>>. pname:initialLayout must: be ename:VK_IMAGE_LAYOUT_UNDEFINED
or ename:VK_IMAGE_LAYOUT_PREINITIALIZED.
@ -352,18 +355,20 @@ These bitfields have the following meanings:
* ename:VK_IMAGE_CREATE_SPARSE_BINDING_BIT indicates that the image will
be backed using sparse memory binding.
* ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT indicates that the image can:
be partially backed using sparse memory binding.
be partially backed using sparse memory binding. Images created with
this flag must: also be created with the
ename:VK_IMAGE_CREATE_SPARSE_BINDING_BIT flag.
* ename:VK_IMAGE_CREATE_SPARSE_ALIASED_BIT indicates that the image will
be backed using sparse memory binding with memory ranges that might also
simultaneously be backing another image (or another portion of the same
image). Sparse images created with this flag must: also be created with
the ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT.
image). Images created with this flag must: also be created with the
ename:VK_IMAGE_CREATE_SPARSE_BINDING_BIT flag
If any of these three bits are set,
ename:VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT mustnot: also be set.
See <<sparsememory-sparseresourcefeatures,Sparse Resource Features>> and
<<sparsememory-physicalfeatures,Sparse Physical Device Featuers>> for
<<sparsememory-physicalfeatures,Sparse Physical Device Features>> for
more details.
* ename:VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT indicates that the image can:
@ -373,15 +378,15 @@ more details.
be used to create a slink:VkImageView of type
ename:VK_IMAGE_VIEW_TYPE_CUBE or ename:VK_IMAGE_VIEW_TYPE_CUBE_ARRAY.
The layout of a subresource (mipLevel/arrayLayer) of an image created with
linear tiling is queried by calling:
The layout of an image subresource (mipLevel/arrayLayer) of an image created
with linear tiling is queried by calling:
include::../protos/vkGetImageSubresourceLayout.txt[]
* pname:device is the logical device that owns the image.
* pname:image is the image whose layout is being queried.
* pname:pSubresource is a pointer to a slink:VkImageSubresource structure
selecting a specific image for the subresource.
selecting a specific image for the image subresource.
* pname:pLayout points to a slink:VkSubresourceLayout structure in which
the layout is returned.
@ -398,15 +403,15 @@ include::../structs/VkImageSubresource.txt[]
include::../validity/structs/VkImageSubresource.txt[]
Information about the layout of the subresource is returned in a
Information about the layout of the image subresource is returned in a
sname:VkSubresourceLayout structure:
include::../structs/VkSubresourceLayout.txt[]
* pname:offset is the byte offset from the start of the image where the
subresource begins.
* pname:size is the size in bytes of the subresource. pname:size includes
any extra memory that is required based on pname:rowPitch.
image subresource begins.
* pname:size is the size in bytes of the image subresource. pname:size
includes any extra memory that is required based on pname:rowPitch.
* pname:rowPitch describes the number of bytes between each row of texels
in an image.
* pname:arrayPitch describes the number of bytes between each array layer
@ -417,15 +422,15 @@ include::../structs/VkSubresourceLayout.txt[]
include::../validity/structs/VkSubresourceLayout.txt[]
For images created with linear tiling, pname:rowPitch, pname:arrayPitch and
pname:depthPitch describe the layout of the subresource in linear memory.
For uncompressed formats, pname:rowPitch is the number of bytes between
texels with the same x coordinate in adjacent rows (y coordinates differ by
one). pname:arrayPitch is the number of bytes between texels with the same x
and y coordinate in adjacent array layers of the image (array layer values
differ by one). pname:depthPitch is the number of bytes between texels with
the same x and y coordinate in adjacent slices of a 3D image (z coordinates
differ by one). Expressed as an addressing formula, the starting byte of a
texel in the subresource has address:
pname:depthPitch describe the layout of the image subresource in linear
memory. For uncompressed formats, pname:rowPitch is the number of bytes
between texels with the same x coordinate in adjacent rows (y coordinates
differ by one). pname:arrayPitch is the number of bytes between texels with
the same x and y coordinate in adjacent array layers of the image (array
layer values differ by one). pname:depthPitch is the number of bytes between
texels with the same x and y coordinate in adjacent slices of a 3D image (z
coordinates differ by one). Expressed as an addressing formula, the starting
byte of a texel in the image subresource has address:
[source,c]
---------------------------------------------------
@ -443,7 +448,6 @@ adjacent slices of a 3D image.
---------------------------------------------------
// (x,y,z,layer) are in compressed texel block coordinates
address(x,y,z,layer) = layer*arrayPitch + z*depthPitch + y*rowPitch + x*compressedTexelBlockByteSize + offset;
---------------------------------------------------
pname:arrayPitch is undefined for images that were not created as arrays.
@ -453,11 +457,11 @@ For color formats, the pname:aspectMask member of sname:VkImageSubresource
must: be ename:VK_IMAGE_ASPECT_COLOR_BIT. For depth/stencil formats,
pname:aspect must: be either ename:VK_IMAGE_ASPECT_DEPTH_BIT or
ename:VK_IMAGE_ASPECT_STENCIL_BIT. On implementations that store depth and
stencil aspects separately, querying each of these subresource layouts will
return a different pname:offset and pname:size representing the region of
memory used for that aspect. On implementations that store depth and stencil
aspects interleaved, the same pname:offset and pname:size are returned and
represent the interleaved memory allocation.
stencil aspects separately, querying each of these image subresource layouts
will return a different pname:offset and pname:size representing the region
of memory used for that aspect. On implementations that store depth and
stencil aspects interleaved, the same pname:offset and pname:size are
returned and represent the interleaved memory allocation.
To destroy an image, call:
@ -476,18 +480,19 @@ include::../validity/protos/vkDestroyImage.txt[]
Images are stored in implementation-dependent opaque layouts in memory.
Implementations may: support several opaque layouts, and the layout used at
any given time is determined by the elink:VkImageLayout state of the
any given time is determined by the elink:VkImageLayout state of the image
subresource. Each layout has limitations on what kinds of operations are
supported for subresources using the layout. Applications have control over
which layout each image subresource uses, and can: transition an image
supported for image subresources using the layout. Applications have control
over which layout each image subresource uses, and can: transition an image
subresource from one layout to another. Transitions can: happen with an
image memory barrier, included as part of a fname:vkCmdPipelineBarrier or a
fname:vkCmdWaitEvents command buffer command (see
<<synchronization-image-memory-barrier>>), or as part of a subpass
dependency within a render pass (see sname:VkSubpassDependency). The image
layout state is per-subresource, and separate subresources of the same image
can: be in different layouts at the same time with one exception - depth and
stencil aspects of a given subresource must: always be in the same layout.
layout state is per-image subresource, and separate image subresources of
the same image can: be in different layouts at the same time with one
exception - depth and stencil aspects of a given image subresource must:
always be in the same layout.
[NOTE]
.Note
@ -497,13 +502,13 @@ memory. For example, an image with a layout of
ename:VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL may: provide optimal
performance for use as a color attachment, but be unsupported for use in
transfer commands. Applications can: transition an image subresource from
one layout to another in order to achieve optimal performance when the
one layout to another in order to achieve optimal performance when the image
subresource is used for multiple kinds of operations. After initialization,
applications need not use any layout other than the general layout, though
this may: produce suboptimal performance on some implementations.
====
Upon creation, all subresources of an image are initially in the same
Upon creation, all image subresources of an image are initially in the same
layout, where that layout is selected by the
sname:VkImageCreateInfo::pname:initialLayout member. The pname:initialLayout
must: be either ename:VK_IMAGE_LAYOUT_UNDEFINED or
@ -514,13 +519,14 @@ from this layout will preserve that data. If it is
ename:VK_IMAGE_LAYOUT_UNDEFINED, then the contents of the data are
considered to be undefined, and the transition away from this layout is not
guaranteed to preserve that data. For either of these initial layouts, any
subresources must: be transitioned to another layout before they are
image subresources must: be transitioned to another layout before they are
accessed by the device.
Host access to image memory is only well-defined for images created with
ename:VK_IMAGE_TILING_LINEAR tiling and for subresources of those images
which are currently in either the ename:VK_IMAGE_LAYOUT_PREINITIALIZED or
ename:VK_IMAGE_LAYOUT_GENERAL layout.
ename:VK_IMAGE_TILING_LINEAR tiling and for image subresources of those
images which are currently in either the
ename:VK_IMAGE_LAYOUT_PREINITIALIZED or ename:VK_IMAGE_LAYOUT_GENERAL
layout.
The set of image layouts consists of:
@ -545,32 +551,32 @@ The type(s) of device access supported by each layout are:
* ename:VK_IMAGE_LAYOUT_GENERAL: Supports all types of device access.
* ename:VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL: must: only be used as a
color or resolve attachment in a sname:VkFramebuffer. This layout is
valid only for subresources of images created with the
valid only for image subresources of images created with the
ename:VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT usage bit enabled.
* ename:VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL: must: only be
used as a depth/stencil attachment in a sname:VkFramebuffer. This layout
is valid only for subresources of images created with the
is valid only for image subresources of images created with the
ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT usage bit enabled.
* ename:VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL: must: only be
used as a read-only depth/stencil attachment in a sname:VkFramebuffer
and/or as a read-only image in a shader (which can: be read as a sampled
image, combined image/sampler and/or input attachment). This layout is
valid only for subresources of images created with the
valid only for image subresources of images created with the
ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT usage bit enabled.
* ename:VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL: must: only be used as a
read-only image in a shader (which can: be read as a sampled image,
combined image/sampler and/or input attachment). This layout is valid
only for subresources of images created with the
only for image subresources of images created with the
ename:VK_IMAGE_USAGE_SAMPLED_BIT or
ename:VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT usage bit enabled.
* ename:VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL: must: only be used as a
source image of a transfer command (see the definition of
<<synchronization-transfer,ename:VK_PIPELINE_STAGE_TRANSFER_BIT>>).
This layout is valid only for subresources of images created with the
ename:VK_IMAGE_USAGE_TRANSFER_SRC_BIT usage bit enabled.
This layout is valid only for image subresources of images created with
the ename:VK_IMAGE_USAGE_TRANSFER_SRC_BIT usage bit enabled.
* ename:VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL: must: only be used as a
destination image of a transfer command. This layout is valid only for
subresources of images created with the
image subresources of images created with the
ename:VK_IMAGE_USAGE_TRANSFER_DST_BIT usage bit enabled.
For each mechanism of accessing an image in the API, there is a parameter or
@ -586,12 +592,12 @@ subresources that are accessed must: all match the layout specified via the
API controlling those accesses.
The image layout of each image subresource must: be well-defined at each
point in the subresource's lifetime. This means that when performing a
layout transition on the subresource, the old layout value must: either
equal the current layout of the subresource (at the time the transition
executes), or else be ename:VK_IMAGE_LAYOUT_UNDEFINED (implying that the
contents of the subresource need not be preserved). The new layout used in a
transition mustnot: be ename:VK_IMAGE_LAYOUT_UNDEFINED or
point in the image subresource's lifetime. This means that when performing a
layout transition on the image subresource, the old layout value must:
either equal the current layout of the image subresource (at the time the
transition executes), or else be ename:VK_IMAGE_LAYOUT_UNDEFINED (implying
that the contents of the image subresource need not be preserved). The new
layout used in a transition mustnot: be ename:VK_IMAGE_LAYOUT_UNDEFINED or
ename:VK_IMAGE_LAYOUT_PREINITIALIZED.
@ -756,8 +762,6 @@ baseArrayLayer = 0 +
arrayLayers = 1
|========================================
The pname:subresourceRange member is of type sname:VkImageSubresourceRange
and is defined as:
@ -775,11 +779,12 @@ include::../structs/VkImageSubresourceRange.txt[]
include::../validity/structs/VkImageSubresourceRange.txt[]
The number of mip-map levels and array layers must: be a subset of the
subresources in the image. If an application wants to use all mip-levels or
layers in an image after the pname:baseMipLevel or pname:baseArrayLayer, it
can: set pname:levelCount and pname:layerCount to the special values
ename:VK_REMAINING_MIP_LEVELS and ename:VK_REMAINING_ARRAY_LAYERS without
knowing the exact number of mip-levels or layers.
image subresources in the image. If an application wants to use all
mip-levels or layers in an image after the pname:baseMipLevel or
pname:baseArrayLayer, it can: set pname:levelCount and pname:layerCount to
the special values ename:VK_REMAINING_MIP_LEVELS and
ename:VK_REMAINING_ARRAY_LAYERS without knowing the exact number of
mip-levels or layers.
For cube and cube array image views, the layers of the image view starting
at pname:baseArrayLayer correspond to faces in the order +X, -X, +Y, -Y, +Z,
@ -810,8 +815,8 @@ imageView is used for depth reads (i.e. using a floating-point sampler or
input attachment in the shader) or stencil reads (i.e. using an unsigned
integer sampler or input attachment in the shader). When an imageView of a
depth/stencil image is used as a depth/stencil framebuffer attachment, the
pname:aspectMask is ignored and both depth and stencil subresources are
used.
pname:aspectMask is ignored and both depth and stencil image subresources
are used.
The pname:components member is defined as follows:
@ -1038,14 +1043,20 @@ memory offset in the same sname:VkDeviceMemory object, 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)
resourceB.start = resourceB.memoryOffset
resourceB.startPage = resourceB.start & ~(bufferImageGranularity-1)
[source,c]
---------------------------------------------------
resourceA.end = resourceA.memoryOffset + resourceA.size - 1
resourceA.endPage = resourceA.end & ~(bufferImageGranularity-1)
resourceB.start = resourceB.memoryOffset
resourceB.startPage = resourceB.start & ~(bufferImageGranularity-1)
---------------------------------------------------
The following property must: hold:
resourceA.endPage < resourceB.startPage
[source,c]
---------------------------------------------------
resourceA.endPage < resourceB.startPage
---------------------------------------------------
That is, the end of the first resource (A) and the beginning of the second
resource (B) must: be on separate ``pages'' of size
@ -1071,10 +1082,10 @@ they can: be accessed from queues. The supported sharing modes are:
include::../enums/VkSharingMode.txt[]
* ename:VK_SHARING_MODE_EXCLUSIVE specifies that access to any range or
subresource of the object will be exclusive to a single queue family at
a time.
image subresource of the object will be exclusive to a single queue
family at a time.
* ename:VK_SHARING_MODE_CONCURRENT specifies that concurrent access to any
range or subresource of the object from multiple queue families is
range or image subresource of the object from multiple queue families is
supported.
[NOTE]
@ -1084,13 +1095,13 @@ ename:VK_SHARING_MODE_CONCURRENT may: result in lower performance access to
the buffer or image than ename:VK_SHARING_MODE_EXCLUSIVE.
====
Ranges of buffers and subresources of image objects created using
Ranges of buffers and image subresources of image objects created using
ename:VK_SHARING_MODE_EXCLUSIVE must: only be accessed by queues in the same
queue family at any given time. In order for a different queue family to be
able to interpret the memory contents of a range or subresource, the
application must: transfer exclusive ownership of the range or subresource
between the source and destination queue families with the following
sequence of operations:
able to interpret the memory contents of a range or image subresource, the
application must: transfer exclusive ownership of the range or image
subresource between the source and destination queue families with the
following sequence of operations:
1. Release exclusive ownership from the source queue family to the
destination queue family.
@ -1099,8 +1110,8 @@ sequence of operations:
3. Acquire exclusive ownership for the destination queue family from the
source queue family.
To release exclusive ownership of a range of a buffer or subresource of an
image object, the application must: execute a buffer or image memory
To release exclusive ownership of a range of a buffer or image subresource
of an image object, the application must: execute a buffer or image memory
barrier, respectively (see slink:VkBufferMemoryBarrier and
slink:VkImageMemoryBarrier) on a queue from the source queue family. The
pname:srcQueueFamilyIndex parameter of the barrier must: be set to the
@ -1119,14 +1130,15 @@ ename:VK_IMAGE_LAYOUT_UNDEFINED or ename:VK_IMAGE_LAYOUT_PREINITIALIZED
before being used on the first queue. This layout transition can: either be
accomplished by an image memory barrier or by use in a render pass instance.
Once a queue family has used a range or subresource of an
Once a queue family has used a range or image subresource of an
ename:VK_SHARING_MODE_EXCLUSIVE resource, its contents are undefined to
other queue families unless ownership is transferred. The contents may: also
become undefined for other reasons, e.g. as a result of writes to an image
subresource that aliases the same memory. A queue family can: take ownership
of a range or subresource without an ownership transfer in the same way as
for a resource that was just created, however doing so means any contents
written by other queue families or via incompatible aliases are undefined.
of a range or image subresource without an ownership transfer in the same
way as for a resource that was just created, however doing so means any
contents written by other queue families or via incompatible aliases are
undefined.
[[resources-memory-aliasing]]
@ -1152,14 +1164,15 @@ time.
====
When an opaque, non-ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT image is
bound to an aliased range, all subresources of the image _overlap_ the
range. When a linear image is bound to an aliased range, the subresources
that (according to the image's advertised layout) include bytes from the
aliased range overlap the range. When a
ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT image has sparse image blocks bound
to an aliased range, only subresources including those sparse image blocks
overlap the range, and when the memory bound to the image's miptail overlaps
an aliased range all subresources in the miptail overlap the range.
bound to an aliased range, all image subresources of the image _overlap_ the
range. When a linear image is bound to an aliased range, the image
subresources that (according to the image's advertised layout) include bytes
from the aliased range overlap the range. When a
ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT image has sparse image blocks
bound to an aliased range, only image subresources including those sparse
image blocks overlap the range, and when the memory bound to the image's
miptail overlaps an aliased range all image subresources in the miptail
overlap the range.
Buffers, and linear image subresources in either the
ename:VK_IMAGE_LAYOUT_PREINITIALIZED or ename:VK_IMAGE_LAYOUT_GENERAL
@ -1182,22 +1195,22 @@ scheme. If the first alias is not host-accessible, then the bytes affected
are those overlapped by the image subresources that were written. If the
second alias is a host-accessible subresource, the affected bytes become
undefined. If the second alias is a not host-accessible, all sparse image
blocks (for sparse partially-resident images) or all subresources (for
blocks (for sparse partially-resident images) or all image subresources (for
non-sparse image and fully resident sparse images) that overlap the affected
bytes become undefined.
If any subresources are made undefined due to writes to an alias, then each
of those subresources must: have its layout transitioned from
If any image subresources are made undefined due to writes to an alias, then
each of those image subresources must: have its layout transitioned from
ename:VK_IMAGE_LAYOUT_UNDEFINED to a valid layout before it is used, or from
ename:VK_IMAGE_LAYOUT_PREINITIALIZED if the memory has been written by the
host. If any sparse blocks of a sparse image have been made undefined, then
only the subresources containing them must: be transitioned.
only the image subresources containing them must: be transitioned.
Use of an overlapping range by two aliases must: be separated by a memory
dependency using the appropriate access types if at least one of those uses
performs writes, whether the aliases interpret memory consistently or not.
If buffer or image memory barriers are used, the scope of the barrier must:
contain the entire range and/or set of subresources that overlap.
contain the entire range and/or set of image subresources that overlap.
If two aliasing image views are used in the same framebuffer, then the
render pass must: declare the attachments using the

View File

@ -373,12 +373,11 @@ and processed by the compute shader in the current compute pipeline. A
workgroup is a collection of shader invocations that execute the same
shader, potentially in parallel. Compute shaders execute in _global
workgroups_ which are divided into a number of _local workgroups_ with a size
that can: be set by assigning a value to the code:LocalSize execution mode
either in the shader code or via
<<pipelines-specialization-constants,Specialization Constants>>. An
invocation within a local workgroup can: share data with other members of
the local workgroup through shared variables and issue memory and control
flow barriers to synchronize with other members of the local workgroup.
that can: be set by assigning a value to the code:LocalSize execution mode or
via an object decorated by the code:WorkgroupSize decoration. An invocation
within a local workgroup can: share data with other members of the local
workgroup through shared variables and issue memory and control flow barriers
to synchronize with other members of the local workgroup.
[[shaders-interpolation-decorations]]

View File

@ -50,8 +50,8 @@ feature enables specified in slink:VkPhysicalDeviceFeatures.
formats that non-sparse usage supports, and supports both
ename:VK_IMAGE_TILING_OPTIMAL and ename:VK_IMAGE_TILING_LINEAR tiling.
* _Sparse Residency_ builds on the pname:sparseBinding feature. It
includes the following capabilities:
* _Sparse Residency_ builds on (and requires) the pname:sparseBinding
feature. It includes the following capabilities:
** Resources do not have to be completely bound to memory before use on
the device.
@ -161,10 +161,10 @@ sname:VkImage objects created with the
ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT bit allow specific rectangular
regions of the image called sparse image blocks to be bound to specific
ranges of memory. This allows the application to manage residency at either
subresource or sparse image block granularity. Each subresource (outside of
the <<sparsememory-miptail,mip tail>>) starts on a sparse block boundary and
has dimensions that are integer multiples of the corresponding dimensions of
the sparse image block.
image subresource or sparse image block granularity. Each image subresource
(outside of the <<sparsememory-miptail,mip tail>>) starts on a sparse block
boundary and has dimensions that are integer multiples of the corresponding
dimensions of the sparse image block.
[NOTE]
.Note
@ -229,14 +229,16 @@ endif::implementation-guide[]
[[sparsememory-miptail]]
=== Mip Tail Regions
Sparse images created using ename:VK_IMAGE_CREATE_SPARSE_BINDING_BIT have no
specific mapping of image region or subresource to memory offset defined, so
the entire image can: be thought of as a linear opaque address region.
However, images created with ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT do
have a prescribed sparse image block layout, and hence each subresource must:
start on a sparse block boundary. Within each array layer, the set of
mip-levels that have a smaller size than the sparse block size in bytes are
grouped together into a _mip tail region_.
Sparse images created using ename:VK_IMAGE_CREATE_SPARSE_BINDING_BIT
(without also using ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT) have no
specific mapping of image region or image subresource to memory offset
defined, so the entire image can: be thought of as a linear opaque address
region. However, images created with
ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT do have a prescribed sparse image
block layout, and hence each image subresource must: start on a sparse block
boundary. Within each array layer, the set of mip-levels that have a smaller
size than the sparse block size in bytes are grouped together into a _mip
tail region_.
If the ename:VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT flag is present in
the pname:flags member of sname:VkSparseImageFormatProperties, for the
@ -817,11 +819,11 @@ and flink:vkCreateImage for details of the resource creation APIs.
.Note
====
Specifying ename:VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT or
ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT implies specifying
ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT requires specifying
ename:VK_BUFFER_CREATE_SPARSE_BINDING_BIT or
ename:VK_IMAGE_CREATE_SPARSE_BINDING_BIT, respectively, as well. This means
that resources created with either (or both) flag(s) can: be used with the
sparse binding command (fname:vkQueueBindSparse).
that resources must: be created with the appropriate etext:*_SPARSE_BINDING_BIT
to be used with the sparse binding command (fname:vkQueueBindSparse).
====
@ -888,8 +890,8 @@ include::../structs/VkSparseImageMemoryRequirements.txt[]
pname:formatProperties.imageGranularity values do not match the
standard sparse image block dimension corresponding to the image's
pixel format.
* pname:imageMipTailFirstLod is the first mip level at which subresources
are included in the mip tail region.
* pname:imageMipTailFirstLod is the first mip level at which image
subresources are included in the mip tail region.
* pname:imageMipTailSize is the memory size (in bytes) of the mip tail
region. If pname:formatProperties.flags contains
ename:VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT, this is the size of the
@ -1084,8 +1086,7 @@ the binding range must: be within the range
latexmath:[$[0, {\mathit{VkMemoryRequirements}::\mathit{size}})$].
Memory is bound to sname:VkBuffer objects created with the
ename:VK_BUFFER_CREATE_SPARSE_BINDING_BIT or
ename:VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT flags using the following
ename:VK_BUFFER_CREATE_SPARSE_BINDING_BIT flag using the following
structure:
include::../structs/VkSparseBufferMemoryBindInfo.txt[]
@ -1099,8 +1100,7 @@ include::../structs/VkSparseBufferMemoryBindInfo.txt[]
include::../validity/structs/VkSparseBufferMemoryBindInfo.txt[]
Memory is bound to opaque regions of sname:VkImage objects created with the
ename:VK_IMAGE_CREATE_SPARSE_BINDING_BIT or
ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT flags using the following
ename:VK_IMAGE_CREATE_SPARSE_BINDING_BIT flag using the following
structure:
include::../structs/VkSparseImageOpaqueMemoryBindInfo.txt[]
@ -1160,14 +1160,14 @@ Where sname:VkSparseImageMemoryBind is defined as follows:
include::../structs/VkSparseImageMemoryBind.txt[]
* pname:subresource is the aspectMask and region of interest in the image.
* pname:offset are the coordinates of the first texel within the
* pname:offset are the coordinates of the first texel within the image
subresource to bind.
* pname:extent is the size in texels of the region within the subresource
to bind. The extent must: be a multiple of the sparse image block
dimensions, except when binding sparse image blocks along the edge of a
subresource it can: instead be such that any coordinate of
* pname:extent is the size in texels of the region within the image
subresource to bind. The extent must: be a multiple of the sparse image
block dimensions, except when binding sparse image blocks along the edge
of a image subresource it can: instead be such that any coordinate of
latexmath:[$\mathit{offset} + \mathit{extent}$] equals the corresponding
dimensions of the subresource.
dimensions of the image subresource.
* pname:memory is the sname:VkDeviceMemory object that the sparse image
blocks of the image are bound to. If pname:memory is sname:VK_NULL_HANDLE,
the sparse image blocks are unbound.

View File

@ -606,11 +606,11 @@ all resources owned by the device.
<<synchronization-buffer-memory-barrier,Buffer>> and
<<synchronization-image-memory-barrier,image memory barriers>> apply to the
buffer range(s) or image subresource(s) included in the command. For
accesses to a byte of a buffer or subresource of an image to be synchronized
between two sets of commands, the byte or subresource must: be included in
both the first and second halves of the dependencies described above, but
need not be included in each step of the execution dependency chain between
them.
accesses to a byte of a buffer or image subresource of an image to be
synchronized between two sets of commands, the byte or image subresource
must: be included in both the first and second halves of the dependencies
described above, but need not be included in each step of the execution
dependency chain between them.
An execution dependency chain is _by-region_ if all stages in all
dependencies in the chain are framebuffer-space pipeline stages, and if the
@ -725,7 +725,7 @@ subset of the bits of the corresponding mask in that self-dependency. If the
self-dependency has ename:VK_DEPENDENCY_BY_REGION_BIT set, then so must: the
pipeline barrier. Pipeline barriers within a render pass instance can: only
be types sname:VkMemoryBarrier or sname:VkImageMemoryBarrier. If a
sname:VkImageMemoryBarrier is used, the image and subresource range
sname:VkImageMemoryBarrier is used, the image and image subresource range
specified in the barrier must: be a subset of one of the image views used by
the framebuffer in the current subpass. Additionally, pname:oldLayout must:
be equal to pname:newLayout, and both the pname:srcQueueFamilyIndex and
@ -1083,14 +1083,14 @@ include::../validity/structs/VkBufferMemoryBarrier.txt[]
The image memory barrier type is specified with an instance of the
sname:VkImageMemoryBarrier structure. This type of barrier only applies to
memory accesses involving a specific subresource range of the specified
image object. That is, a memory dependency formed from a image memory
barrier is
memory accesses involving a specific image subresource range of the
specified image object. That is, a memory dependency formed from a image
memory barrier is
<<synchronization-execution-and-memory-dependencies-types,scoped>> to the
specified subresources of the image. It is also used to perform a layout
transition for an image subresource range, or to transfer ownership of an
image subresource range from one queue family to another as described in the
<<resources-sharing,Resource Sharing>> section.
specified image subresources of the image. It is also used to perform a
layout transition for an image subresource range, or to transfer ownership
of an image subresource range from one queue family to another as described
in the <<resources-sharing,Resource Sharing>> section.
sname:VkImageMemoryBarrier has the following definition:
@ -1119,8 +1119,8 @@ The members of sname:VkImageMemoryBarrier have the following meanings:
the barrier.
* pname:subresourceRange describes an area of the backing memory for
pname:image (see <<resources-image-views>> for the description of
sname:VkImageSubresourceRange), as well as the set of subresources whose
image layouts are modified.
sname:VkImageSubresourceRange), as well as the set of image subresources
whose image layouts are modified.
include::../validity/structs/VkImageMemoryBarrier.txt[]

View File

@ -1238,7 +1238,7 @@ An implementation may: round latexmath:[$N$] up to the nearest supported
sampling rate.
If latexmath:[$N=1$], sampling is isotropic. If latexmath:[$N>1$], sampling
is anistropic.
is anisotropic.
[[textures-level-of-detail-operation]]
@ -1414,9 +1414,9 @@ l & = \operatorname{clamp}( \operatorname{RNE}(a), 0, layerCount - 1 ) + baseArr
\end{align*}
++++++++++++++++++++++++
where pname:layerCount is the number of layers in the subresource range of
the image view, pname:baseArrayLayer is the first layer from the subresource
range, and where:
where pname:layerCount is the number of layers in the image subresource
range of the image view, pname:baseArrayLayer is the first layer from the
subresource range, and where:
[latexmath]
++++++++++++++++++++++++

View File

@ -20,18 +20,22 @@ pname:image::
A handle to the image about which to retrieve information.
pname:pSubresource::
A pointer to a structure describing the subresource.
A pointer to a structure describing the image subresource.
pname:pLayout::
A pointer to a structure that will receive information about the subresource.
A pointer to a structure that will receive information about the image
subresource.
Description
-----------
fname:vkGetImageSubresourceLayout returns information about the memory layout of a subresource of an image.
pname:device is a handle to the device that owns pname:image, which is the image about which to retrieve
information. A description of the subresource is passsed to the command through an instance of the slink:VkImageSubresource
structure, the address of which is passed in pname:pSubresource. The definition of slink:VkImageSubresource is:
fname:vkGetImageSubresourceLayout returns information about the memory
layout of a image subresource of an image. pname:device is a handle to the
device that owns pname:image, which is the image about which to retrieve
information. A description of the image subresource is passsed to the
command through an instance of the slink:VkImageSubresource structure, the
address of which is passed in pname:pSubresource. The definition of
slink:VkImageSubresource is:
include::../structs/VkImageSubresource.txt[]

View File

@ -37,7 +37,7 @@ pname:pImageFormatProperties::
Description
-----------
fname:vkGetPhysicalDeviceImageFormatProperties queries the physical device specified in pnane:physicalDevice
fname:vkGetPhysicalDeviceImageFormatProperties queries the physical device specified in pname:physicalDevice
about its support for images as if they had been created using the remaining parameters to the command.
These parameters, pname:format, pname:type, pname:tiling and pname:usage have the same meanings as they do
in the slink:VkImageCreateInfo structure, the definition of which is:

View File

@ -128,7 +128,7 @@ slink:VkSparseImageMemoryBind is:
include::../structs/VkSparseImageMemoryBind.txt[]
The pname:subresource member of slink:VkSparseImageMemoryBind specifies the
subresource within the image to bind memory to. The pname:offset and
image subresource within the image to bind memory to. The pname:offset and
pname:extent members specify the region within the image subresource
to bind memory to. pname:offset and pname:extent are instances of the
slink:VkOffset3D and slink:VkExtent3D structures, respectively, and are

View File

@ -548,6 +548,8 @@ existing API Specification.
| heterogeneous | heterogenous | More common
| homogeneous | homogenous | More common
| host endianness | platform endianness |
| image subresource | subresource
| Except when referring to *host-accessible subresources*
| implementation| system |
| indices | indexes | More common
| it is | it's | In general, avoid contractions.
@ -596,7 +598,7 @@ allowed, each choice still must: have well-defined behavior.
| allowed, could, generally, might, probably, perhaps
| And all other such terms of choice. Use _may:_ or _can:_
depending on the context.
| may: or maynot: | Just use _may:_.
| may: or may: not | Just use _may:_.
|=====

View File

@ -24,11 +24,11 @@ endif::doctype-manpage[]
* The union of all source regions, and the union of all destination regions, specified by the elements of pname:pRegions, mustnot: overlap in memory
* pname:srcImage must: use a format that supports ename:VK_FORMAT_FEATURE_BLIT_SRC_BIT, which is indicated by sname:VkFormatProperties::pname:linearTilingFeatures (for linear tiled images) or sname:VkFormatProperties::pname:optimalTilingFeatures (for optimally tiled images) - as returned by fname:vkGetPhysicalDeviceFormatProperties
* pname:srcImage must: have been created with ename:VK_IMAGE_USAGE_TRANSFER_SRC_BIT usage flag
* pname:srcImageLayout must: specify the layout of the subresources of pname:srcImage specified in pname:pRegions at the time this command is executed on a sname:VkDevice
* pname:srcImageLayout must: specify the layout of the image subresources of pname:srcImage specified in pname:pRegions at the time this command is executed on a sname:VkDevice
* pname:srcImageLayout must: be either of ename:VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL or ename:VK_IMAGE_LAYOUT_GENERAL
* pname:dstImage must: use a format that supports ename:VK_FORMAT_FEATURE_BLIT_DST_BIT, which is indicated by sname:VkFormatProperties::pname:linearTilingFeatures (for linear tiled images) or sname:VkFormatProperties::pname:optimalTilingFeatures (for optimally tiled images) - as returned by fname:vkGetPhysicalDeviceFormatProperties
* pname:dstImage must: have been created with ename:VK_IMAGE_USAGE_TRANSFER_DST_BIT usage flag
* pname:dstImageLayout must: specify the layout of the subresources of pname:dstImage specified in pname:pRegions at the time this command is executed on a sname:VkDevice
* pname:dstImageLayout must: specify the layout of the image subresources of pname:dstImage specified in pname:pRegions at the time this command is executed on a sname:VkDevice
* pname:dstImageLayout must: be either of ename:VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL or ename:VK_IMAGE_LAYOUT_GENERAL
* The sample count of pname:srcImage and pname:dstImage must: both be equal to ename:VK_SAMPLE_COUNT_1_BIT
* If either of pname:srcImage or pname:dstImage was created with a signed integer elink:VkFormat, the other must: also have been created with a signed integer elink:VkFormat

View File

@ -18,9 +18,9 @@ endif::doctype-manpage[]
* pname:rangeCount must: be greater than `0`
* Each of pname:commandBuffer and pname:image must: have been created, allocated or retrieved from the same sname:VkDevice
* pname:image must: have been created with ename:VK_IMAGE_USAGE_TRANSFER_DST_BIT usage flag
* pname:imageLayout must: specify the layout of the subresource ranges of pname:image specified in pname:pRanges at the time this command is executed on a sname:VkDevice
* pname:imageLayout must: specify the layout of the image subresource ranges of pname:image specified in pname:pRanges at the time this command is executed on a sname:VkDevice
* pname:imageLayout must: be either of ename:VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL or ename:VK_IMAGE_LAYOUT_GENERAL
* The image range of any given element of pname:pRanges must: be a subresource range that is contained within pname:image
* The image range of any given element of pname:pRanges must: be a image subresource range that is contained within pname:image
ifndef::doctype-manpage[]
********************************************************************************
endif::doctype-manpage[]

View File

@ -18,9 +18,9 @@ endif::doctype-manpage[]
* pname:rangeCount must: be greater than `0`
* Each of pname:commandBuffer and pname:image must: have been created, allocated or retrieved from the same sname:VkDevice
* pname:image must: have been created with ename:VK_IMAGE_USAGE_TRANSFER_DST_BIT usage flag
* pname:imageLayout must: specify the layout of the subresource ranges of pname:image specified in pname:pRanges at the time this command is executed on a sname:VkDevice
* pname:imageLayout must: specify the layout of the image subresource ranges of pname:image specified in pname:pRanges at the time this command is executed on a sname:VkDevice
* pname:imageLayout must: be either of ename:VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL or ename:VK_IMAGE_LAYOUT_GENERAL
* The image range of any given element of pname:pRanges must: be a subresource range that is contained within pname:image
* The image range of any given element of pname:pRanges must: be a image subresource range that is contained within pname:image
ifndef::doctype-manpage[]
********************************************************************************
endif::doctype-manpage[]

View File

@ -23,7 +23,7 @@ endif::doctype-manpage[]
* pname:srcBuffer must: have been created with ename:VK_BUFFER_USAGE_TRANSFER_SRC_BIT usage flag
* pname:dstImage must: have been created with ename:VK_IMAGE_USAGE_TRANSFER_DST_BIT usage flag
* pname:dstImage must: have a sample count equal to ename:VK_SAMPLE_COUNT_1_BIT
* pname:dstImageLayout must: specify the layout of the subresources of pname:dstImage specified in pname:pRegions at the time this command is executed on a sname:VkDevice
* pname:dstImageLayout must: specify the layout of the image subresources of pname:dstImage specified in pname:pRegions at the time this command is executed on a sname:VkDevice
* pname:dstImageLayout must: be either of ename:VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL or ename:VK_IMAGE_LAYOUT_GENERAL
ifndef::doctype-manpage[]
********************************************************************************

View File

@ -22,10 +22,10 @@ endif::doctype-manpage[]
* The destination region specified by a given element of pname:pRegions must: be a region that is contained within pname:dstImage
* The union of all source regions, and the union of all destination regions, specified by the elements of pname:pRegions, mustnot: overlap in memory
* pname:srcImage must: have been created with ename:VK_IMAGE_USAGE_TRANSFER_SRC_BIT usage flag
* pname:srcImageLayout must: specify the layout of the subresources of pname:srcImage specified in pname:pRegions at the time this command is executed on a sname:VkDevice
* pname:srcImageLayout must: specify the layout of the image subresources of pname:srcImage specified in pname:pRegions at the time this command is executed on a sname:VkDevice
* pname:srcImageLayout must: be either of ename:VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL or ename:VK_IMAGE_LAYOUT_GENERAL
* pname:dstImage must: have been created with ename:VK_IMAGE_USAGE_TRANSFER_DST_BIT usage flag
* pname:dstImageLayout must: specify the layout of the subresources of pname:dstImage specified in pname:pRegions at the time this command is executed on a sname:VkDevice
* pname:dstImageLayout must: specify the layout of the image subresources of pname:dstImage specified in pname:pRegions at the time this command is executed on a sname:VkDevice
* pname:dstImageLayout must: be either of ename:VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL or ename:VK_IMAGE_LAYOUT_GENERAL
* The elink:VkFormat of each of pname:srcImage and pname:dstImage must: be compatible, as defined <<copies-images-format-compatibility, below>>
* The sample count of pname:srcImage and pname:dstImage must: match

View File

@ -22,7 +22,7 @@ endif::doctype-manpage[]
* The union of all source regions, and the union of all destination regions, specified by the elements of pname:pRegions, mustnot: overlap in memory
* pname:srcImage must: have been created with ename:VK_IMAGE_USAGE_TRANSFER_SRC_BIT usage flag
* pname:srcImage must: have a sample count equal to ename:VK_SAMPLE_COUNT_1_BIT
* pname:srcImageLayout must: specify the layout of the subresources of pname:srcImage specified in pname:pRegions at the time this command is executed on a sname:VkDevice
* pname:srcImageLayout must: specify the layout of the image subresources of pname:srcImage specified in pname:pRegions at the time this command is executed on a sname:VkDevice
* pname:srcImageLayout must: be either of ename:VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL or ename:VK_IMAGE_LAYOUT_GENERAL
* pname:dstBuffer must: have been created with ename:VK_BUFFER_USAGE_TRANSFER_DST_BIT usage flag
ifndef::doctype-manpage[]

View File

@ -23,9 +23,9 @@ endif::doctype-manpage[]
* The union of all source regions, and the union of all destination regions, specified by the elements of pname:pRegions, mustnot: overlap in memory
* pname:srcImage must: have a sample count equal to any valid sample count value other than ename:VK_SAMPLE_COUNT_1_BIT
* pname:dstImage must: have a sample count equal to ename:VK_SAMPLE_COUNT_1_BIT
* pname:srcImageLayout must: specify the layout of the subresources of pname:srcImage specified in pname:pRegions at the time this command is executed on a sname:VkDevice
* pname:srcImageLayout must: specify the layout of the image subresources of pname:srcImage specified in pname:pRegions at the time this command is executed on a sname:VkDevice
* pname:srcImageLayout must: be either of ename:VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL or ename:VK_IMAGE_LAYOUT_GENERAL
* pname:dstImageLayout must: specify the layout of the subresources of pname:dstImage specified in pname:pRegions at the time this command is executed on a sname:VkDevice
* pname:dstImageLayout must: specify the layout of the image subresources of pname:dstImage specified in pname:pRegions at the time this command is executed on a sname:VkDevice
* pname:dstImageLayout must: be either of ename:VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL or ename:VK_IMAGE_LAYOUT_GENERAL
* If pname:dstImage was created with pname:tiling equal to ename:VK_IMAGE_TILING_LINEAR, pname:dstImage must: have been created with a pname:format that supports being a color attachment, as specified by the ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures returned by fname:vkGetPhysicalDeviceFormatProperties
* If pname:dstImage was created with pname:tiling equal to ename:VK_IMAGE_TILING_OPTIMAL, pname:dstImage must: have been created with a pname:format that supports being a color attachment, as specified by the ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT flag in sname:VkFormatProperties::pname:optimalTilingFeatures returned by fname:vkGetPhysicalDeviceFormatProperties

View File

@ -11,7 +11,7 @@ endif::doctype-manpage[]
* pname:pCreateInfo must: be a pointer to a valid sname:VkBufferCreateInfo structure
* If pname:pAllocator is not `NULL`, pname:pAllocator must: be a pointer to a valid sname:VkAllocationCallbacks structure
* pname:pBuffer must: be a pointer to a sname:VkBuffer handle
* If the pname:flags member of pname:pCreateInfo includes ename:VK_BUFFER_CREATE_SPARSE_BINDING_BIT or ename:VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT, creating this sname:VkBuffer mustnot: cause the total required sparse memory for all currently valid sparse resources on the device to exceed sname:VkPhysicalDeviceLimits::pname:sparseAddressSpaceSize
* If the pname:flags member of pname:pCreateInfo includes ename:VK_BUFFER_CREATE_SPARSE_BINDING_BIT, creating this sname:VkBuffer mustnot: cause the total required sparse memory for all currently valid sparse resources on the device to exceed sname:VkPhysicalDeviceLimits::pname:sparseAddressSpaceSize
ifndef::doctype-manpage[]
********************************************************************************
endif::doctype-manpage[]

View File

@ -11,7 +11,7 @@ endif::doctype-manpage[]
* pname:pCreateInfo must: be a pointer to a valid sname:VkImageCreateInfo structure
* If pname:pAllocator is not `NULL`, pname:pAllocator must: be a pointer to a valid sname:VkAllocationCallbacks structure
* pname:pImage must: be a pointer to a sname:VkImage handle
* If the pname:flags member of pname:pCreateInfo includes ename:VK_IMAGE_CREATE_SPARSE_BINDING_BIT or ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT, creating this sname:VkImage mustnot: cause the total required sparse memory for all currently valid sparse resources on the device to exceed sname:VkPhysicalDeviceLimits::pname:sparseAddressSpaceSize
* If the pname:flags member of pname:pCreateInfo includes ename:VK_IMAGE_CREATE_SPARSE_BINDING_BIT, creating this sname:VkImage mustnot: cause the total required sparse memory for all currently valid sparse resources on the device to exceed sname:VkPhysicalDeviceLimits::pname:sparseAddressSpaceSize
ifndef::doctype-manpage[]
********************************************************************************
endif::doctype-manpage[]

View File

@ -19,7 +19,7 @@ endif::doctype-manpage[]
* If the <<features-features-sparseBinding,sparse bindings>> feature is not enabled, pname:flags mustnot: contain ename:VK_BUFFER_CREATE_SPARSE_BINDING_BIT
* If the <<features-features-sparseResidencyBuffer,sparse buffer residency>> feature is not enabled, pname:flags mustnot: contain ename:VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT
* If the <<features-features-sparseResidencyAliased,sparse aliased residency>> feature is not enabled, pname:flags mustnot: contain ename:VK_BUFFER_CREATE_SPARSE_ALIASED_BIT
* If pname:flags contains ename:VK_BUFFER_CREATE_SPARSE_ALIASED_BIT, it must: also contain at least one of ename:VK_BUFFER_CREATE_SPARSE_BINDING_BIT or ename:VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT
* If pname:flags contains ename:VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT or ename:VK_BUFFER_CREATE_SPARSE_ALIASED_BIT, it must: also contain ename:VK_BUFFER_CREATE_SPARSE_BINDING_BIT
ifndef::doctype-manpage[]
********************************************************************************
endif::doctype-manpage[]

View File

@ -63,7 +63,7 @@ endif::doctype-manpage[]
* If pname:tiling is ename:VK_IMAGE_TILING_OPTIMAL, and sname:VkFormatProperties::pname:optimalTilingFeatures (as returned by fname:vkGetPhysicalDeviceFormatProperties with the same value of pname:format) does not include ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT, pname:usage mustnot: contain ename:VK_IMAGE_USAGE_STORAGE_BIT
* If pname:tiling is ename:VK_IMAGE_TILING_OPTIMAL, and sname:VkFormatProperties::pname:optimalTilingFeatures (as returned by fname:vkGetPhysicalDeviceFormatProperties with the same value of pname:format) does not include ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT, pname:usage mustnot: contain ename:VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT
* If pname:tiling is ename:VK_IMAGE_TILING_OPTIMAL, and sname:VkFormatProperties::pname:optimalTilingFeatures (as returned by fname:vkGetPhysicalDeviceFormatProperties with the same value of pname:format) does not include ename:VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT, pname:usage mustnot: contain ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT
* 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
* If pname:flags contains ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT or ename:VK_IMAGE_CREATE_SPARSE_ALIASED_BIT, it must: also contain ename:VK_IMAGE_CREATE_SPARSE_BINDING_BIT
ifndef::doctype-manpage[]
********************************************************************************
endif::doctype-manpage[]

View File

@ -20,7 +20,7 @@ endif::doctype-manpage[]
* If pname:image 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:image 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:image 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
* pname:subresourceRange must: be a valid subresource range for the image (see <<resources-image-views>>)
* pname:subresourceRange must: be a valid image subresource range for the image (see <<resources-image-views>>)
* If pname:image has a depth/stencil format with both depth and stencil components, then pname:aspectMask member of pname:subresourceRange must: include both ename:VK_IMAGE_ASPECT_DEPTH_BIT and ename:VK_IMAGE_ASPECT_STENCIL_BIT
* If either pname:oldLayout or pname:newLayout is ename:VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL then pname:image must: have been created with ename:VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT set
* If either pname:oldLayout or pname:newLayout is ename:VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL then pname:image must: have been created with ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT set

View File

@ -28,7 +28,7 @@ endif::doctype-manpage[]
* If pname:image was created with ename:VK_IMAGE_TILING_OPTIMAL and pname:usage containing ename:VK_IMAGE_USAGE_STORAGE_BIT, pname:format must: be supported for storage images, as specified by the ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT flag in sname:VkFormatProperties::pname:optimalTilingFeatures returned by fname:vkGetPhysicalDeviceFormatProperties
* If pname:image was created with ename:VK_IMAGE_TILING_OPTIMAL and pname:usage containing ename:VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT, pname:format must: be supported for color attachments, as specified by the ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT flag in sname:VkFormatProperties::pname:optimalTilingFeatures returned by fname:vkGetPhysicalDeviceFormatProperties
* If pname:image was created with ename:VK_IMAGE_TILING_OPTIMAL and pname:usage containing ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT, pname:format must: be supported for depth/stencil attachments, as specified by the ename:VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT flag in sname:VkFormatProperties::pname:optimalTilingFeatures returned by fname:vkGetPhysicalDeviceFormatProperties
* pname:subresourceRange must: be a valid subresource range for pname:image (see <<resources-image-views>>)
* pname:subresourceRange must: be a valid image subresource range for pname:image (see <<resources-image-views>>)
* If pname:image was created with the ename:VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT flag, pname:format must: be compatible with the pname:format used to create pname:image, as defined in <<features-formats-compatibility-classes,Format Compatibility Classes>>
* If pname:image was not created with the ename:VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT flag, pname:format must: be identical to the pname:format used to create pname:image
* pname:subResourceRange and pname:viewType must: be compatible with the image, as described in the <<resources-image-views-compatibility,table below>>

View File

@ -12,7 +12,7 @@ endif::doctype-manpage[]
* pname:flags must: be a valid combination of elink:VkSparseMemoryBindFlagBits values
* If the <<features-features-sparseResidencyAliased,sparse aliased residency>> feature is not enabled, and if any other resources are bound to ranges of pname:memory, the range of pname:memory being bound mustnot: overlap with those bound ranges
* pname:memory and pname:memoryOffset must: match the memory requirements of the calling command's pname:image, as described in section <<resources-association>>
* pname:subresource must: be a valid subresource for pname:image (see <<resources-image-views>>)
* pname:subresource must: be a valid image subresource for pname:image (see <<resources-image-views>>)
* pname:offset.x must: be a multiple of the sparse image block width (sname:VkSparseImageFormatProperties::pname:imageGranularity.width) of the image
* pname:extent.width must: either be a multiple of the sparse image block width of the image, or else pname:extent.width + pname:offset.x must: equal the width of the image subresource
* pname:offset.y must: be a multiple of the sparse image block height (sname:VkSparseImageFormatProperties::pname:imageGranularity.height) of the image

View File

@ -101,7 +101,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
<type category="define">// Vulkan 1.0 version number
#define <name>VK_API_VERSION_1_0</name> <type>VK_MAKE_VERSION</type>(1, 0, 0)</type> <!-- The patch version here should never be set to anything other than 0 -->
<type category="define">// Version of this file
#define <name>VK_HEADER_VERSION</name> 9</type>
#define <name>VK_HEADER_VERSION</name> 10</type>
<type category="define">
#define <name>VK_DEFINE_HANDLE</name>(object) typedef struct object##_T* object;</type>
@ -678,7 +678,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
<usage>If the &lt;&lt;features-features-sparseBinding,sparse bindings&gt;&gt; feature is not enabled, pname:flags mustnot: contain ename:VK_BUFFER_CREATE_SPARSE_BINDING_BIT</usage>
<usage>If the &lt;&lt;features-features-sparseResidencyBuffer,sparse buffer residency&gt;&gt; feature is not enabled, pname:flags mustnot: contain ename:VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</usage>
<usage>If the &lt;&lt;features-features-sparseResidencyAliased,sparse aliased residency&gt;&gt; feature is not enabled, pname:flags mustnot: contain ename:VK_BUFFER_CREATE_SPARSE_ALIASED_BIT</usage>
<usage>If pname:flags contains ename:VK_BUFFER_CREATE_SPARSE_ALIASED_BIT, it must: also contain at least one of ename:VK_BUFFER_CREATE_SPARSE_BINDING_BIT or ename:VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</usage>
<usage>If pname:flags contains ename:VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT or ename:VK_BUFFER_CREATE_SPARSE_ALIASED_BIT, it must: also contain ename:VK_BUFFER_CREATE_SPARSE_BINDING_BIT</usage>
</validity>
</type>
<type category="struct" name="VkBufferViewCreateInfo">
@ -776,7 +776,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
<usage>If pname:image 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:image 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 &lt;&lt;devsandqueues-queueprops&gt;&gt;)</usage>
<usage>If pname:image 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>
<usage>pname:subresourceRange must: be a valid subresource range for the image (see &lt;&lt;resources-image-views&gt;&gt;)</usage>
<usage>pname:subresourceRange must: be a valid image subresource range for the image (see &lt;&lt;resources-image-views&gt;&gt;)</usage>
<usage>If pname:image has a depth/stencil format with both depth and stencil components, then pname:aspectMask member of pname:subresourceRange must: include both ename:VK_IMAGE_ASPECT_DEPTH_BIT and ename:VK_IMAGE_ASPECT_STENCIL_BIT</usage>
<usage>If either pname:oldLayout or pname:newLayout is ename:VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL then pname:image must: have been created with ename:VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT set</usage>
<usage>If either pname:oldLayout or pname:newLayout is ename:VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL then pname:image must: have been created with ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT set</usage>
@ -848,7 +848,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
<usage>If pname:tiling is ename:VK_IMAGE_TILING_OPTIMAL, and sname:VkFormatProperties::pname:optimalTilingFeatures (as returned by fname:vkGetPhysicalDeviceFormatProperties with the same value of pname:format) does not include ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT, pname:usage mustnot: contain ename:VK_IMAGE_USAGE_STORAGE_BIT</usage>
<usage>If pname:tiling is ename:VK_IMAGE_TILING_OPTIMAL, and sname:VkFormatProperties::pname:optimalTilingFeatures (as returned by fname:vkGetPhysicalDeviceFormatProperties with the same value of pname:format) does not include ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT, pname:usage mustnot: contain ename:VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT</usage>
<usage>If pname:tiling is ename:VK_IMAGE_TILING_OPTIMAL, and sname:VkFormatProperties::pname:optimalTilingFeatures (as returned by fname:vkGetPhysicalDeviceFormatProperties with the same value of pname:format) does not include ename:VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT, pname:usage mustnot: contain ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</usage>
<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>
<usage>If pname:flags contains ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT or ename:VK_IMAGE_CREATE_SPARSE_ALIASED_BIT, it must: also contain ename:VK_IMAGE_CREATE_SPARSE_BINDING_BIT</usage>
</validity>
</type>
<type category="struct" name="VkSubresourceLayout" returnedonly="true">
@ -881,7 +881,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
<usage>If pname:image was created with ename:VK_IMAGE_TILING_OPTIMAL and pname:usage containing ename:VK_IMAGE_USAGE_STORAGE_BIT, pname:format must: be supported for storage images, as specified by the ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT flag in sname:VkFormatProperties::pname:optimalTilingFeatures returned by fname:vkGetPhysicalDeviceFormatProperties</usage>
<usage>If pname:image was created with ename:VK_IMAGE_TILING_OPTIMAL and pname:usage containing ename:VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT, pname:format must: be supported for color attachments, as specified by the ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT flag in sname:VkFormatProperties::pname:optimalTilingFeatures returned by fname:vkGetPhysicalDeviceFormatProperties</usage>
<usage>If pname:image was created with ename:VK_IMAGE_TILING_OPTIMAL and pname:usage containing ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT, pname:format must: be supported for depth/stencil attachments, as specified by the ename:VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT flag in sname:VkFormatProperties::pname:optimalTilingFeatures returned by fname:vkGetPhysicalDeviceFormatProperties</usage>
<usage>pname:subresourceRange must: be a valid subresource range for pname:image (see &lt;&lt;resources-image-views&gt;&gt;)</usage>
<usage>pname:subresourceRange must: be a valid image subresource range for pname:image (see &lt;&lt;resources-image-views&gt;&gt;)</usage>
<usage>If pname:image was created with the ename:VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT flag, pname:format must: be compatible with the pname:format used to create pname:image, as defined in &lt;&lt;features-formats-compatibility-classes,Format Compatibility Classes&gt;&gt;</usage>
<usage>If pname:image was not created with the ename:VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT flag, pname:format must: be identical to the pname:format used to create pname:image</usage>
<usage>pname:subResourceRange and pname:viewType must: be compatible with the image, as described in the &lt;&lt;resources-image-views-compatibility,table below&gt;&gt;</usage>
@ -918,7 +918,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
<validity>
<usage>If the &lt;&lt;features-features-sparseResidencyAliased,sparse aliased residency&gt;&gt; feature is not enabled, and if any other resources are bound to ranges of pname:memory, the range of pname:memory being bound mustnot: overlap with those bound ranges</usage>
<usage>pname:memory and pname:memoryOffset must: match the memory requirements of the calling command's pname:image, as described in section &lt;&lt;resources-association&gt;&gt;</usage>
<usage>pname:subresource must: be a valid subresource for pname:image (see &lt;&lt;resources-image-views&gt;&gt;)</usage>
<usage>pname:subresource must: be a valid image subresource for pname:image (see &lt;&lt;resources-image-views&gt;&gt;)</usage>
<usage>pname:offset.x must: be a multiple of the sparse image block width (sname:VkSparseImageFormatProperties::pname:imageGranularity.width) of the image</usage>
<usage>pname:extent.width must: either be a multiple of the sparse image block width of the image, or else pname:extent.width + pname:offset.x must: equal the width of the image subresource</usage>
<usage>pname:offset.y must: be a multiple of the sparse image block height (sname:VkSparseImageFormatProperties::pname:imageGranularity.height) of the image</usage>
@ -3372,7 +3372,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
<param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
<param><type>VkBuffer</type>* <name>pBuffer</name></param>
<validity>
<usage>If the pname:flags member of pname:pCreateInfo includes ename:VK_BUFFER_CREATE_SPARSE_BINDING_BIT or ename:VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT, creating this sname:VkBuffer mustnot: cause the total required sparse memory for all currently valid sparse resources on the device to exceed sname:VkPhysicalDeviceLimits::pname:sparseAddressSpaceSize</usage>
<usage>If the pname:flags member of pname:pCreateInfo includes ename:VK_BUFFER_CREATE_SPARSE_BINDING_BIT, creating this sname:VkBuffer mustnot: cause the total required sparse memory for all currently valid sparse resources on the device to exceed sname:VkPhysicalDeviceLimits::pname:sparseAddressSpaceSize</usage>
</validity>
</command>
<command>
@ -3411,7 +3411,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
<param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
<param><type>VkImage</type>* <name>pImage</name></param>
<validity>
<usage>If the pname:flags member of pname:pCreateInfo includes ename:VK_IMAGE_CREATE_SPARSE_BINDING_BIT or ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT, creating this sname:VkImage mustnot: cause the total required sparse memory for all currently valid sparse resources on the device to exceed sname:VkPhysicalDeviceLimits::pname:sparseAddressSpaceSize</usage>
<usage>If the pname:flags member of pname:pCreateInfo includes ename:VK_IMAGE_CREATE_SPARSE_BINDING_BIT, creating this sname:VkImage mustnot: cause the total required sparse memory for all currently valid sparse resources on the device to exceed sname:VkPhysicalDeviceLimits::pname:sparseAddressSpaceSize</usage>
</validity>
</command>
<command>
@ -4082,10 +4082,10 @@ maintained in the master branch of the Khronos Vulkan Github project.
<usage>The destination region specified by a given element of pname:pRegions must: be a region that is contained within pname:dstImage</usage>
<usage>The union of all source regions, and the union of all destination regions, specified by the elements of pname:pRegions, mustnot: overlap in memory</usage>
<usage>pname:srcImage must: have been created with ename:VK_IMAGE_USAGE_TRANSFER_SRC_BIT usage flag</usage>
<usage>pname:srcImageLayout must: specify the layout of the subresources of pname:srcImage specified in pname:pRegions at the time this command is executed on a sname:VkDevice</usage>
<usage>pname:srcImageLayout must: specify the layout of the image subresources of pname:srcImage specified in pname:pRegions at the time this command is executed on a sname:VkDevice</usage>
<usage>pname:srcImageLayout must: be either of ename:VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL or ename:VK_IMAGE_LAYOUT_GENERAL</usage>
<usage>pname:dstImage must: have been created with ename:VK_IMAGE_USAGE_TRANSFER_DST_BIT usage flag</usage>
<usage>pname:dstImageLayout must: specify the layout of the subresources of pname:dstImage specified in pname:pRegions at the time this command is executed on a sname:VkDevice</usage>
<usage>pname:dstImageLayout must: specify the layout of the image subresources of pname:dstImage specified in pname:pRegions at the time this command is executed on a sname:VkDevice</usage>
<usage>pname:dstImageLayout must: be either of ename:VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL or ename:VK_IMAGE_LAYOUT_GENERAL</usage>
<usage>The elink:VkFormat of each of pname:srcImage and pname:dstImage must: be compatible, as defined &lt;&lt;copies-images-format-compatibility, below&gt;&gt;</usage>
<usage>The sample count of pname:srcImage and pname:dstImage must: match</usage>
@ -4107,11 +4107,11 @@ maintained in the master branch of the Khronos Vulkan Github project.
<usage>The union of all source regions, and the union of all destination regions, specified by the elements of pname:pRegions, mustnot: overlap in memory</usage>
<usage>pname:srcImage must: use a format that supports ename:VK_FORMAT_FEATURE_BLIT_SRC_BIT, which is indicated by sname:VkFormatProperties::pname:linearTilingFeatures (for linear tiled images) or sname:VkFormatProperties::pname:optimalTilingFeatures (for optimally tiled images) - as returned by fname:vkGetPhysicalDeviceFormatProperties</usage>
<usage>pname:srcImage must: have been created with ename:VK_IMAGE_USAGE_TRANSFER_SRC_BIT usage flag</usage>
<usage>pname:srcImageLayout must: specify the layout of the subresources of pname:srcImage specified in pname:pRegions at the time this command is executed on a sname:VkDevice</usage>
<usage>pname:srcImageLayout must: specify the layout of the image subresources of pname:srcImage specified in pname:pRegions at the time this command is executed on a sname:VkDevice</usage>
<usage>pname:srcImageLayout must: be either of ename:VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL or ename:VK_IMAGE_LAYOUT_GENERAL</usage>
<usage>pname:dstImage must: use a format that supports ename:VK_FORMAT_FEATURE_BLIT_DST_BIT, which is indicated by sname:VkFormatProperties::pname:linearTilingFeatures (for linear tiled images) or sname:VkFormatProperties::pname:optimalTilingFeatures (for optimally tiled images) - as returned by fname:vkGetPhysicalDeviceFormatProperties</usage>
<usage>pname:dstImage must: have been created with ename:VK_IMAGE_USAGE_TRANSFER_DST_BIT usage flag</usage>
<usage>pname:dstImageLayout must: specify the layout of the subresources of pname:dstImage specified in pname:pRegions at the time this command is executed on a sname:VkDevice</usage>
<usage>pname:dstImageLayout must: specify the layout of the image subresources of pname:dstImage specified in pname:pRegions at the time this command is executed on a sname:VkDevice</usage>
<usage>pname:dstImageLayout must: be either of ename:VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL or ename:VK_IMAGE_LAYOUT_GENERAL</usage>
<usage>The sample count of pname:srcImage and pname:dstImage must: both be equal to ename:VK_SAMPLE_COUNT_1_BIT</usage>
<usage>If either of pname:srcImage or pname:dstImage was created with a signed integer elink:VkFormat, the other must: also have been created with a signed integer elink:VkFormat</usage>
@ -4135,7 +4135,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
<usage>pname:srcBuffer must: have been created with ename:VK_BUFFER_USAGE_TRANSFER_SRC_BIT usage flag</usage>
<usage>pname:dstImage must: have been created with ename:VK_IMAGE_USAGE_TRANSFER_DST_BIT usage flag</usage>
<usage>pname:dstImage must: have a sample count equal to ename:VK_SAMPLE_COUNT_1_BIT</usage>
<usage>pname:dstImageLayout must: specify the layout of the subresources of pname:dstImage specified in pname:pRegions at the time this command is executed on a sname:VkDevice</usage>
<usage>pname:dstImageLayout must: specify the layout of the image subresources of pname:dstImage specified in pname:pRegions at the time this command is executed on a sname:VkDevice</usage>
<usage>pname:dstImageLayout must: be either of ename:VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL or ename:VK_IMAGE_LAYOUT_GENERAL</usage>
</validity>
</command>
@ -4153,7 +4153,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
<usage>The union of all source regions, and the union of all destination regions, specified by the elements of pname:pRegions, mustnot: overlap in memory</usage>
<usage>pname:srcImage must: have been created with ename:VK_IMAGE_USAGE_TRANSFER_SRC_BIT usage flag</usage>
<usage>pname:srcImage must: have a sample count equal to ename:VK_SAMPLE_COUNT_1_BIT</usage>
<usage>pname:srcImageLayout must: specify the layout of the subresources of pname:srcImage specified in pname:pRegions at the time this command is executed on a sname:VkDevice</usage>
<usage>pname:srcImageLayout must: specify the layout of the image subresources of pname:srcImage specified in pname:pRegions at the time this command is executed on a sname:VkDevice</usage>
<usage>pname:srcImageLayout must: be either of ename:VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL or ename:VK_IMAGE_LAYOUT_GENERAL</usage>
<usage>pname:dstBuffer must: have been created with ename:VK_BUFFER_USAGE_TRANSFER_DST_BIT usage flag</usage>
</validity>
@ -4201,9 +4201,9 @@ maintained in the master branch of the Khronos Vulkan Github project.
<param len="rangeCount">const <type>VkImageSubresourceRange</type>* <name>pRanges</name></param>
<validity>
<usage>pname:image must: have been created with ename:VK_IMAGE_USAGE_TRANSFER_DST_BIT usage flag</usage>
<usage>pname:imageLayout must: specify the layout of the subresource ranges of pname:image specified in pname:pRanges at the time this command is executed on a sname:VkDevice</usage>
<usage>pname:imageLayout must: specify the layout of the image subresource ranges of pname:image specified in pname:pRanges at the time this command is executed on a sname:VkDevice</usage>
<usage>pname:imageLayout must: be either of ename:VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL or ename:VK_IMAGE_LAYOUT_GENERAL</usage>
<usage>The image range of any given element of pname:pRanges must: be a subresource range that is contained within pname:image</usage>
<usage>The image range of any given element of pname:pRanges must: be a image subresource range that is contained within pname:image</usage>
</validity>
</command>
<command queues="graphics" renderpass="outside" cmdbufferlevel="primary,secondary">
@ -4216,9 +4216,9 @@ maintained in the master branch of the Khronos Vulkan Github project.
<param len="rangeCount">const <type>VkImageSubresourceRange</type>* <name>pRanges</name></param>
<validity>
<usage>pname:image must: have been created with ename:VK_IMAGE_USAGE_TRANSFER_DST_BIT usage flag</usage>
<usage>pname:imageLayout must: specify the layout of the subresource ranges of pname:image specified in pname:pRanges at the time this command is executed on a sname:VkDevice</usage>
<usage>pname:imageLayout must: specify the layout of the image subresource ranges of pname:image specified in pname:pRanges at the time this command is executed on a sname:VkDevice</usage>
<usage>pname:imageLayout must: be either of ename:VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL or ename:VK_IMAGE_LAYOUT_GENERAL</usage>
<usage>The image range of any given element of pname:pRanges must: be a subresource range that is contained within pname:image</usage>
<usage>The image range of any given element of pname:pRanges must: be a image subresource range that is contained within pname:image</usage>
</validity>
</command>
<command queues="graphics" renderpass="inside" cmdbufferlevel="primary,secondary">
@ -4249,9 +4249,9 @@ maintained in the master branch of the Khronos Vulkan Github project.
<usage>The union of all source regions, and the union of all destination regions, specified by the elements of pname:pRegions, mustnot: overlap in memory</usage>
<usage>pname:srcImage must: have a sample count equal to any valid sample count value other than ename:VK_SAMPLE_COUNT_1_BIT</usage>
<usage>pname:dstImage must: have a sample count equal to ename:VK_SAMPLE_COUNT_1_BIT</usage>
<usage>pname:srcImageLayout must: specify the layout of the subresources of pname:srcImage specified in pname:pRegions at the time this command is executed on a sname:VkDevice</usage>
<usage>pname:srcImageLayout must: specify the layout of the image subresources of pname:srcImage specified in pname:pRegions at the time this command is executed on a sname:VkDevice</usage>
<usage>pname:srcImageLayout must: be either of ename:VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL or ename:VK_IMAGE_LAYOUT_GENERAL</usage>
<usage>pname:dstImageLayout must: specify the layout of the subresources of pname:dstImage specified in pname:pRegions at the time this command is executed on a sname:VkDevice</usage>
<usage>pname:dstImageLayout must: specify the layout of the image subresources of pname:dstImage specified in pname:pRegions at the time this command is executed on a sname:VkDevice</usage>
<usage>pname:dstImageLayout must: be either of ename:VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL or ename:VK_IMAGE_LAYOUT_GENERAL</usage>
<usage>If pname:dstImage was created with pname:tiling equal to ename:VK_IMAGE_TILING_LINEAR, pname:dstImage must: have been created with a pname:format that supports being a color attachment, as specified by the ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures returned by fname:vkGetPhysicalDeviceFormatProperties</usage>
<usage>If pname:dstImage was created with pname:tiling equal to ename:VK_IMAGE_TILING_OPTIMAL, pname:dstImage must: have been created with a pname:format that supports being a color attachment, as specified by the ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT flag in sname:VkFormatProperties::pname:optimalTilingFeatures returned by fname:vkGetPhysicalDeviceFormatProperties</usage>
@ -5166,5 +5166,29 @@ maintained in the master branch of the Khronos Vulkan Github project.
<enum value="&quot;VK_AMD_extension_2&quot;" name="VK_AMD_EXTENSION_2_EXTENSION_NAME"/>
</require>
</extension>
<extension name="VK_AMD_extension_3" number="19" author="AMD" contact="Daniel Rakos @aqnuep" supported="disabled">
<require>
<enum value="0" name="VK_AMD_EXTENSION_3_SPEC_VERSION"/>
<enum value="&quot;VK_AMD_extension_3&quot;" name="VK_AMD_EXTENSION_3_EXTENSION_NAME"/>
</require>
</extension>
<extension name="VK_AMD_extension_4" number="20" author="AMD" contact="Daniel Rakos @aqnuep" supported="disabled">
<require>
<enum value="0" name="VK_AMD_EXTENSION_4_SPEC_VERSION"/>
<enum value="&quot;VK_AMD_extension_4&quot;" name="VK_AMD_EXTENSION_4_EXTENSION_NAME"/>
</require>
</extension>
<extension name="VK_AMD_extension_5" number="21" author="AMD" contact="Daniel Rakos @aqnuep" supported="disabled">
<require>
<enum value="0" name="VK_AMD_EXTENSION_5_SPEC_VERSION"/>
<enum value="&quot;VK_AMD_extension_5&quot;" name="VK_AMD_EXTENSION_5_EXTENSION_NAME"/>
</require>
</extension>
<extension name="VK_AMD_extension_6" number="22" author="AMD" contact="Daniel Rakos @aqnuep" supported="disabled">
<require>
<enum value="0" name="VK_AMD_EXTENSION_6_SPEC_VERSION"/>
<enum value="&quot;VK_AMD_extension_6&quot;" name="VK_AMD_EXTENSION_6_EXTENSION_NAME"/>
</require>
</extension>
</extensions>
</registry>

View File

@ -50,7 +50,7 @@ extern "C" {
#define VK_VERSION_MINOR(version) (((uint32_t)(version) >> 12) & 0x3ff)
#define VK_VERSION_PATCH(version) ((uint32_t)(version) & 0xfff)
// Version of this file
#define VK_HEADER_VERSION 9
#define VK_HEADER_VERSION 10
#define VK_NULL_HANDLE 0