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). * Fix typos in chapters 7-9 (public issue 14).
* Clarify the example demonstrating the behavior of * Clarify the example demonstrating the behavior of
code:OpMemoryBarrier in the 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). ordering>> section (public issue 16).
* Specify that freeing mapped memory implicitly unmaps the memory in * Specify that freeing mapped memory implicitly unmaps the memory in
the description of flink:vkFreeMemory (public issue 17). the description of flink:vkFreeMemory (public issue 17).
* Forbid allocation callbacks from calling into the API in the * 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). 20).
* Add missing validity rules about size being greater than 0 and * Add missing validity rules about size being greater than 0 and
offset being less than size of object. Fix offset being less than size of object. Fix
@ -102,21 +102,21 @@ Github Issues:
descriptors in flink:VkCopyDescriptorSet (public issue 32). descriptors in flink:VkCopyDescriptorSet (public issue 32).
* Clarify that array and matrix stride has to be a multiple of the * Clarify that array and matrix stride has to be a multiple of the
base alignment of the array or matrix in 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). section (public issue 38).
* Correct parenthesis floor nesting error in equation for * 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 Clarify case of when exp' is forced to 0, avoiding log2(0) undefined
problem (public issue 40). problem (public issue 40).
* Remove redundant statement from the code:FragDepth description in * 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). section (public issue 47).
* Define the clamping of the * 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 factor>> by linking to the slink:VkPhysicalDevice feature
pname:maxSamplerLodBias (public issue 64). pname:maxSamplerLodBias (public issue 64).
* Fix typo "optimal linear resources" and clarify the set of resources * 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 pname:bufferImageGranularity resource>> applies to (public issue
67). 67).
* Replace 'descriptor accessed by a pipeline' language for * Replace 'descriptor accessed by a pipeline' language for
@ -165,13 +165,13 @@ Github Issues:
* Various minor editorial fixes (public issue 33). * Various minor editorial fixes (public issue 33).
* Clarify locations for block members in the * Clarify locations for block members in the
&lt;&lt;interfaces-iointerfaces-locations,Location Assignment>> <<interfaces-iointerfaces-locations,Location Assignment>>
section (public issue 45). 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). 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). Test&gt;&gt; section (public issues 80, 81).
* Remove discussion of return codes from * Remove discussion of return codes from
@ -183,7 +183,7 @@ Github Issues:
pname:drawCount of 0, as well as 1, when the multiDrawIndirect pname:drawCount of 0, as well as 1, when the multiDrawIndirect
feature is not supported (public issue 88). 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 section describing the slink:VkPhysicalDeviceLimits
pname:minTexelBufferOffsetAlignment, pname:minTexelBufferOffsetAlignment,
pname:minUniformBufferOffsetAlignment, and pname:minUniformBufferOffsetAlignment, and
@ -220,12 +220,12 @@ Github Issues:
implicitly enabled layers (public issue 101). implicitly enabled layers (public issue 101).
* Miscellaneous editorial fixes. Include the Vulkan spec patch number * 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 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 Format Support>> section. Don't require FQDNs used as layer names be
encoded in lower case if not possible, in the 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). Conventions>> section (public issues 101, 119, 121).
Internal Issues: Internal Issues:
@ -453,3 +453,49 @@ Internal Issues:
to state that user-defined variable interface must match too (internal to state that user-defined variable interface must match too (internal
issue 250). 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) COMMONDOCS := $(CHAPTERS) $(INCLUDES)
# A generated included file with the spec version, date, and git commit # A generated included file with the spec version, date, and git commit
SPECVERSION = specversion.txt SPECVERSION = specversion.txt
SPECREVISION = 1.0.9 SPECREVISION = 1.0.10
SPECREMARK = SPECREMARK =
# Spec targets # Spec targets

View File

@ -356,9 +356,9 @@ Image Subresource Range::
layers. layers.
Image View:: Image View::
An object that represents a subresource range of a specific image, and An object that represents an image subresource range of a specific
state that controls how the contents are interpreted. Represented by a image, and state that controls how the contents are interpreted.
sname:VkImageView object. Represented by a sname:VkImageView object.
Immutable Sampler:: Immutable Sampler::
A sampler descriptor provided at descriptor set layout creation time, A sampler descriptor provided at descriptor set layout creation time,
@ -465,7 +465,7 @@ Normalized Device Coordinates::
Overlapped Range (Aliased Range):: Overlapped Range (Aliased Range)::
The aliased range of a device memory allocation that intersects a given 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:: Packed Format::
A format whose components are stored as a single data element in memory, 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 * pname:pColor is a pointer to a slink:VkClearColorValue structure that
contains the values the image subresource ranges will be cleared to (see contains the values the image subresource ranges will be cleared to (see
<<clears-values>> below). <<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.
* pname:pRanges points to an array of slink:VkImageSubresourceRange * pname:pRanges points to an array of slink:VkImageSubresourceRange
structures that describe a range of mipmap levels, array layers, and structures that describe a range of mipmap levels, array layers, and
aspects to be cleared, as described in <<resources-image-views,Image 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. include ename:VK_IMAGE_ASPECT_COLOR_BIT.
Each specified range in pname:pRanges is cleared to the value specified by 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 * pname:pDepthStencil is a pointer to a slink:VkClearDepthStencilValue
structure that contains the values the depth and stencil image structure that contains the values the depth and stencil image
subresource ranges will be cleared to (see <<clears-values>> below). 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.
* pname:pRanges points to an array of slink:VkImageSubresourceRange * pname:pRanges points to an array of slink:VkImageSubresourceRange
structures that describe a range of mipmap levels, array layers, and structures that describe a range of mipmap levels, array layers, and
aspects to be cleared, as described in <<resources-image-views,Image aspects to be cleared, as described in <<resources-image-views,Image
Views>>. The pname:aspectMask of each subresource range in pname:pRanges Views>>. The pname:aspectMask of each image subresource range in
can: include ename:VK_IMAGE_ASPECT_DEPTH_BIT if the image format has a pname:pRanges can: include ename:VK_IMAGE_ASPECT_DEPTH_BIT if the image
depth component, and ename:VK_IMAGE_ASPECT_STENCIL_BIT if the image format has a depth component, and ename:VK_IMAGE_ASPECT_STENCIL_BIT if
format has a stencil component. pname:pDepthStencil is a pointer to a the image format has a stencil component. pname:pDepthStencil is a
sname:VkClearDepthStencilValue structure that contains the values the pointer to a sname:VkClearDepthStencilValue structure that contains the
image subresource ranges will be cleared to (see <<clears-values>> values the image subresource ranges will be cleared to (see
below). <<clears-values>> below).
include::../validity/protos/vkCmdClearDepthStencilImage.txt[] 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[] include::../structs/VkImageCopy.txt[]
* pname:srcSubresource and pname:dstSubresource are * pname:srcSubresource and pname:dstSubresource are
slink:VkImageSubresourceLayers structures specifying the subresources of slink:VkImageSubresourceLayers structures specifying the image
the images used for the source and destination image data, respectively. 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 * 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 offsets in texels of the sub-regions of the source and destination image
data. 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. 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 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 + multiple of the compressed texel block width then (pname:extent.width +
pname:srcOffset.x) must: equal the subresource width, if pname:extent.height pname:srcOffset.x) must: equal the image subresource width, if
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:extent.height is not a multiple of the compressed texel block height pname:extent.height is not a multiple of the compressed texel block height
then (pname:extent.height + pname:dstOffset.y) must: equal the subresource then (pname:extent.height + pname:srcOffset.y) must: equal the image
height and if pname:extent.depth is not a multiple of the compressed texel subresource height and if pname:extent.depth is not a multiple of the
block depth then (pname:extent.depth + pname:dstOffset.z) must: equal the compressed texel block depth then (pname:extent.depth + pname:srcOffset.z)
subresource depth. This allows the last compressed texel block of the image must: equal the image subresource depth. Similarily if the pname:dstImage is
in each non-multiple dimension to be included as a source or destination of compressed and if pname:extent.width is not a multiple of the compressed
the copy. 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 fname:vkCmdCopyImage can: be used to copy image data between multisample
images, but both images must: have the same number of samples. 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 buffer memory is considered to be tightly packed according to the
pname:imageExtent. pname:imageExtent.
* pname:imageSubresource is an slink:VkImageSubresourceLayers used to * pname:imageSubresource is an slink:VkImageSubresourceLayers used to
specify the specific subresources of the image used for the source or specify the specific image subresources of the image used for the source
destination image data. or destination image data.
* pname:imageOffset selects the initial x, y, z offsets in texels of the * pname:imageOffset selects the initial x, y, z offsets in texels of the
sub-region of the source or destination image data. sub-region of the source or destination image data.
* pname:imageExtent is the size in texels of the image to copy in * 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. 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 If pname:imageExtent.width is not a multiple of the compressed texel block
width then (pname:imageExtent.width + pname:imageOffset.x) must: equal the width then (pname:imageExtent.width + pname:imageOffset.x) must: equal the
subresource width, if pname:imageExtent.height is not a multiple of the image subresource width, if pname:imageExtent.height is not a multiple of
compressed texel block height then (pname:imageExtent.height + the compressed texel block height then (pname:imageExtent.height +
pname:imageOffset.y) must: equal the subresource height and if pname:imageOffset.y) must: equal the image subresource height and if
pname:imageExtent.depth is not a multiple of the compressed texel block depth pname:imageExtent.depth is not a multiple of the compressed texel block
then (pname:imageExtent.depth + pname:imageOffset.z) must: equal the depth then (pname:imageExtent.depth + pname:imageOffset.z) must: equal the
subresource depth. This allows the last compressed texel block of the image image subresource depth. This allows the last compressed texel block of the
in each non-multiple dimension to be included as a source or destination of image in each non-multiple dimension to be included as a source or
the copy. destination of the copy.
[[copies-imagescaling]] [[copies-imagescaling]]
@ -495,9 +496,9 @@ Each element of pname:pRegions is a structure defined as:
include::../structs/VkImageResolve.txt[] include::../structs/VkImageResolve.txt[]
* pname:srcSubresource and pname:dstSubresource are * pname:srcSubresource and pname:dstSubresource are
slink:VkImageSubresourceLayers structures specifying the subresources of slink:VkImageSubresourceLayers structures specifying the image
the images used for the source and destination image data, respectively. subresources of the images used for the source and destination image
Resolve of depth/stencil images is not supported. data, respectively. Resolve of depth/stencil images is not supported.
* pname:srcOffset and pname:dstOffset select the initial x, y, and z * 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 offsets in texels of the sub-regions of the source and destination image
data. data.

View File

@ -85,7 +85,7 @@ include::../structs/VkLayerProperties.txt[]
in the slink:VkInstanceCreateInfo and slink:VkDeviceCreateInfo in the slink:VkInstanceCreateInfo and slink:VkDeviceCreateInfo
structures passed to flink:vkCreateInstance and flink:vkCreateDevice, structures passed to flink:vkCreateInstance and flink:vkCreateDevice,
respectively, to enable this layer for an instance or device. 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 encoded as described in the <<fundamentals-versionnum,API Version
Numbers and Semantics>> section. Numbers and Semantics>> section.
* pname:implementationVersion is the version of this layer. It is an * 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 others must: be explicitly queried before use to ensure they are supported
by the implementation. 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-features]]
== Features == Features
@ -169,8 +180,10 @@ following features:
* [[features-features-depthBiasClamp]] pname:depthBiasClamp indicates * [[features-features-depthBiasClamp]] pname:depthBiasClamp indicates
whether depth bias clamping is supported. If this feature is not whether depth bias clamping is supported. If this feature is not
enabled, the pname:depthBiasClamp member of the enabled, the pname:depthBiasClamp member of the
sname:VkPipelineRasterizationStateCreateInfo structure must: be set to sname:VkPipelineRasterizationStateCreateInfo structure must: be set
0.0. 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 * [[features-features-fillModeNonSolid]] pname:fillModeNonSolid indicates
whether point and wireframe fill modes are supported. If this feature is whether point and wireframe fill modes are supported. If this feature is
not enabled, the ename:VK_POLYGON_MODE_POINT and not enabled, the ename:VK_POLYGON_MODE_POINT and
@ -186,8 +199,10 @@ following features:
* [[features-features-wideLines]] pname:wideLines indicates whether lines * [[features-features-wideLines]] pname:wideLines indicates whether lines
with width other than 1.0 are supported. If this feature is not enabled, with width other than 1.0 are supported. If this feature is not enabled,
the pname:lineWidth member of the the pname:lineWidth member of the
sname:VkPipelineRasterizationStateCreateInfo structure must: be set to sname:VkPipelineRasterizationStateCreateInfo structure must: be set
1.0. When this feature is supported, the range and granularity of 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 supported line widths are indicated by the pname:lineWidthRange and
pname:lineWidthGranularity members of the sname:VkPhysicalDeviceLimits pname:lineWidthGranularity members of the sname:VkPhysicalDeviceLimits
structure, respectively. structure, respectively.
@ -904,13 +919,15 @@ properties of the physical device:
pname:maxComputeWorkGroupInvocations is the maximum total number of pname:maxComputeWorkGroupInvocations is the maximum total number of
compute shader invocations in a single local workgroup. The product 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 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]] * [[features-limits-maxComputeWorkGroupSize]]
pname:maxComputeWorkGroupSize[3] is the maximum size of a local compute pname:maxComputeWorkGroupSize[3] is the maximum size of a local compute
workgroup, per dimension. These three values represent the maximum workgroup, per dimension. These three values represent the maximum
local workgroup size in the X, Y, and Z dimensions, respectively. The 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 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. corresponding limit.
* [[features-limits-subPixelPrecisionBits]] pname:subPixelPrecisionBits is * [[features-limits-subPixelPrecisionBits]] pname:subPixelPrecisionBits is
the number of bits of subpixel precision in framebuffer coordinates 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 depth and stencil component, both the depth and stencil limits must: be
satisfied. satisfied.
* pname:maxResourceSize is the maximum total image size in bytes, * pname:maxResourceSize is the maximum total image size in bytes,
inclusive of all subresources. Implementations may: have an address inclusive of all image subresources. Implementations may: have an
space limit on total size of a resource, which is advertised by this address space limit on total size of a resource, which is advertised by
property. pname:maxResourceSize must: be at least 2^31^. this property. pname:maxResourceSize must: be at least 2^31^.
[NOTE] [NOTE]
.Note .Note

View File

@ -888,12 +888,11 @@ code:LocalInvocationID::
This variable contains the location of the current compute shader invocation This variable contains the location of the current compute shader invocation
within the local workgroup. The range of possible values for each component within the local workgroup. The range of possible values for each component
of LocalInvocationID range from zero through the size of the workgroup (as of LocalInvocationID range from zero through the size of the workgroup in that
defined by code:LocalSize) in that dimension minus one. If the size of the dimension minus one. If the size of the workgroup in a particular dimension is
workgroup in a particular dimension is one, then one, then LocalInvocationID in that dimension will be zero. That is, if the
LocalInvocationID in that dimension will be zero. That is, if the workgroup workgroup is effectively two-dimensional, then pname:LocalInvocationID.z will
is effectively two-dimensional, then pname:LocalInvocationID.z will be zero, be zero, and if the workgroup is one-dimensional, then both
and if the workgroup is one-dimensional, then both
pname:LocalInvocationID.y and pname:LocalInvocationID.z will be zero. pname:LocalInvocationID.y and pname:LocalInvocationID.z will be zero.
+ +
The code:LocalInvocationID decoration is only supported in compute shaders. 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 code:NumWorkGroups must: be declared as a three-component vector of 32-bit
integers. 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:: code:PatchVertices::
An input variable decorated with code:PatchVertices in the tessellation 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[] 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: The type of pname:pfnAllocation is:
include::../funcpointers/PFN_vkAllocationFunction.txt[] 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 specifying the scope of the lifetime of the allocation, as described
<<memory-host-allocation-scope,here>>. <<memory-host-allocation-scope,here>>.
pname:pfnAllocation must: either return `NULL` (in case of allocation [[vkAllocationFunction_return_rules]]
failure or if pname:size is zero) or a valid pointer to a memory allocation If pname:pfnAllocation is unable to allocate the requested memory,
containing at least pname:size bytes, and with the pointer value being a it must: return `NULL`. If the allocation was successful, it must: return a
multiple of pname:alignment. 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: 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 specifying the scope of the lifetime of the allocation, as described
<<memory-host-allocation-scope,here>>. <<memory-host-allocation-scope,here>>.
pname:pfnReallocation must: alter the size of the allocation pname:pfnReallocation must: return an allocation with enough space for
pname:pOriginal, either by shrinking or growing it, to accommodate the new pname:size bytes, and the contents of the original allocation from bytes
pname:size. 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 If pname:pOriginal is `NULL`, then pname:pfnReallocation must: behave
similarly to tlink:PFN_vkAllocationFunction. If pname:size is zero, then equivalently to a call to tlink:PFN_vkAllocationFunction with the same
pname:pfnReallocation must: behave similarly to tlink:PFN_vkFreeFunction. parameter values (without pname:pOriginal).
The contents of the original allocation from bytes zero to
latexmath:[$\min(\textrm{original size, new size})-1$] must: be If pname:size is zero, then pname:pfnReallocation must: behave
preserved in the new allocation. If the new allocation is larger than the equivalently to a call to tlink:PFN_vkFreeFunction with the same
old allocation, then the contents of the additional space are undefined. pname:pUserData parameter value, and pname:pMemory equal to pname:pOriginal.
If pname:pOriginal is non-`NULL`, pname:alignment must: be equal to the
originally requested alignment. If satisfying these requirements involves If pname:pOriginal is non-`NULL`, the implementation must: ensure that
creating a new allocation, then the old allocation must: be freed. If this pname:alignment is equal to the pname:alignment used to originally allocate
function fails, it must: return `NULL` and not free the old allocation. 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: 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 may: be `NULL`, which the callback must: handle safely. If
pname:pMemory is non-`NULL`, it must: be a pointer previously allocated by pname:pMemory is non-`NULL`, it must: be a pointer previously allocated by
pname:pfnAllocation or pname:pfnReallocation and must: be freed by the pname:pfnAllocation or pname:pfnReallocation. The application should: free
function. this memory.
The type of pname:pfnInternalAllocation is: 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. allocator must: be provided to the corresponding ftext:vkDestroy* command.
Two sname:VkAllocationCallbacks structures are compatible if memory created Two sname:VkAllocationCallbacks structures are compatible if memory created
with pname:pfnAllocation or pname:pfnReallocation in each can: be freed with 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 be provided to a ftext:vkDestroy* command if an allocator was not provided
to the corresponding ftext:vkCreate* command. 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 may: fail object creation and/or generate an
ename:VK_ERROR_OUT_OF_HOST_MEMORY error, as appropriate. 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 The following sets of rules define when an implementation is permitted to
call the allocator callbacks. call the allocator callbacks.
@ -431,7 +461,7 @@ include::../enums/VkMemoryPropertyFlagBits.txt[]
memory is always host coherent. memory is always host coherent.
** if pname:propertyFlags has the ** if pname:propertyFlags has the
ename:VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT bit set, the memory type 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 both ename:VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT and
ename:VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT set. Additionally, ename:VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT set. Additionally,
the object's backing memory may: be provided by the implementation 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 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$]. latexmath:[$n$].
Denote an associated datum at latexmath:[$p_a$], latexmath:[$p_b$], or 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 * Multiple attachments being assigned the same image view as part of
framebuffer creation. 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. subresource of an image.
* Attachments using views of distinct image subresources which are bound * Attachments using views of distinct image subresources which are bound
to overlapping memory. 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 * ename:VK_BUFFER_CREATE_SPARSE_BINDING_BIT indicates that the buffer will
be backed using sparse memory binding. be backed using sparse memory binding.
* ename:VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT indicates that the buffer * 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 * ename:VK_BUFFER_CREATE_SPARSE_ALIASED_BIT indicates that the buffer will
be backed using sparse memory binding with memory ranges that might also be backed using sparse memory binding with memory ranges that might also
simultaneously be backing another buffer (or another portion of the same 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 See <<sparsememory-sparseresourcefeatures,Sparse Resource Features>> and
<<features-features,Physical Device Features>> for details of the sparse <<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 access this image (ignored if pname:sharingMode is not
ename:VK_SHARING_MODE_CONCURRENT). ename:VK_SHARING_MODE_CONCURRENT).
* pname:initialLayout selects the initial elink:VkImageLayout state of all * 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 Layouts>>. pname:initialLayout must: be ename:VK_IMAGE_LAYOUT_UNDEFINED
or ename:VK_IMAGE_LAYOUT_PREINITIALIZED. 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 * ename:VK_IMAGE_CREATE_SPARSE_BINDING_BIT indicates that the image will
be backed using sparse memory binding. be backed using sparse memory binding.
* ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT indicates that the image can: * 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 * ename:VK_IMAGE_CREATE_SPARSE_ALIASED_BIT indicates that the image will
be backed using sparse memory binding with memory ranges that might also be backed using sparse memory binding with memory ranges that might also
simultaneously be backing another image (or another portion of the same simultaneously be backing another image (or another portion of the same
image). Sparse images created with this flag must: also be created with image). Images created with this flag must: also be created with the
the ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT. ename:VK_IMAGE_CREATE_SPARSE_BINDING_BIT flag
If any of these three bits are set, If any of these three bits are set,
ename:VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT mustnot: also be set. ename:VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT mustnot: also be set.
See <<sparsememory-sparseresourcefeatures,Sparse Resource Features>> and See <<sparsememory-sparseresourcefeatures,Sparse Resource Features>> and
<<sparsememory-physicalfeatures,Sparse Physical Device Featuers>> for <<sparsememory-physicalfeatures,Sparse Physical Device Features>> for
more details. more details.
* ename:VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT indicates that the image can: * 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 be used to create a slink:VkImageView of type
ename:VK_IMAGE_VIEW_TYPE_CUBE or ename:VK_IMAGE_VIEW_TYPE_CUBE_ARRAY. 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 The layout of an image subresource (mipLevel/arrayLayer) of an image created
linear tiling is queried by calling: with linear tiling is queried by calling:
include::../protos/vkGetImageSubresourceLayout.txt[] include::../protos/vkGetImageSubresourceLayout.txt[]
* pname:device is the logical device that owns the image. * pname:device is the logical device that owns the image.
* pname:image is the image whose layout is being queried. * pname:image is the image whose layout is being queried.
* pname:pSubresource is a pointer to a slink:VkImageSubresource structure * 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 * pname:pLayout points to a slink:VkSubresourceLayout structure in which
the layout is returned. the layout is returned.
@ -398,15 +403,15 @@ include::../structs/VkImageSubresource.txt[]
include::../validity/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: sname:VkSubresourceLayout structure:
include::../structs/VkSubresourceLayout.txt[] include::../structs/VkSubresourceLayout.txt[]
* pname:offset is the byte offset from the start of the image where the * pname:offset is the byte offset from the start of the image where the
subresource begins. image subresource begins.
* pname:size is the size in bytes of the subresource. pname:size includes * pname:size is the size in bytes of the image subresource. pname:size
any extra memory that is required based on pname:rowPitch. includes any extra memory that is required based on pname:rowPitch.
* pname:rowPitch describes the number of bytes between each row of texels * pname:rowPitch describes the number of bytes between each row of texels
in an image. in an image.
* pname:arrayPitch describes the number of bytes between each array layer * pname:arrayPitch describes the number of bytes between each array layer
@ -417,15 +422,15 @@ include::../structs/VkSubresourceLayout.txt[]
include::../validity/structs/VkSubresourceLayout.txt[] include::../validity/structs/VkSubresourceLayout.txt[]
For images created with linear tiling, pname:rowPitch, pname:arrayPitch and For images created with linear tiling, pname:rowPitch, pname:arrayPitch and
pname:depthPitch describe the layout of the subresource in linear memory. pname:depthPitch describe the layout of the image subresource in linear
For uncompressed formats, pname:rowPitch is the number of bytes between memory. For uncompressed formats, pname:rowPitch is the number of bytes
texels with the same x coordinate in adjacent rows (y coordinates differ by between texels with the same x coordinate in adjacent rows (y coordinates
one). pname:arrayPitch is the number of bytes between texels with the same x differ by one). pname:arrayPitch is the number of bytes between texels with
and y coordinate in adjacent array layers of the image (array layer values the same x and y coordinate in adjacent array layers of the image (array
differ by one). pname:depthPitch is the number of bytes between texels with layer values differ by one). pname:depthPitch is the number of bytes between
the same x and y coordinate in adjacent slices of a 3D image (z coordinates texels with the same x and y coordinate in adjacent slices of a 3D image (z
differ by one). Expressed as an addressing formula, the starting byte of a coordinates differ by one). Expressed as an addressing formula, the starting
texel in the subresource has address: byte of a texel in the image subresource has address:
[source,c] [source,c]
--------------------------------------------------- ---------------------------------------------------
@ -443,7 +448,6 @@ adjacent slices of a 3D image.
--------------------------------------------------- ---------------------------------------------------
// (x,y,z,layer) are in compressed texel block coordinates // (x,y,z,layer) are in compressed texel block coordinates
address(x,y,z,layer) = layer*arrayPitch + z*depthPitch + y*rowPitch + x*compressedTexelBlockByteSize + offset; 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. 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, must: be ename:VK_IMAGE_ASPECT_COLOR_BIT. For depth/stencil formats,
pname:aspect must: be either ename:VK_IMAGE_ASPECT_DEPTH_BIT or pname:aspect must: be either ename:VK_IMAGE_ASPECT_DEPTH_BIT or
ename:VK_IMAGE_ASPECT_STENCIL_BIT. On implementations that store depth and ename:VK_IMAGE_ASPECT_STENCIL_BIT. On implementations that store depth and
stencil aspects separately, querying each of these subresource layouts will stencil aspects separately, querying each of these image subresource layouts
return a different pname:offset and pname:size representing the region of will return a different pname:offset and pname:size representing the region
memory used for that aspect. On implementations that store depth and stencil of memory used for that aspect. On implementations that store depth and
aspects interleaved, the same pname:offset and pname:size are returned and stencil aspects interleaved, the same pname:offset and pname:size are
represent the interleaved memory allocation. returned and represent the interleaved memory allocation.
To destroy an image, call: To destroy an image, call:
@ -476,18 +480,19 @@ include::../validity/protos/vkDestroyImage.txt[]
Images are stored in implementation-dependent opaque layouts in memory. Images are stored in implementation-dependent opaque layouts in memory.
Implementations may: support several opaque layouts, and the layout used at 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 subresource. Each layout has limitations on what kinds of operations are
supported for subresources using the layout. Applications have control over supported for image subresources using the layout. Applications have control
which layout each image subresource uses, and can: transition an image over which layout each image subresource uses, and can: transition an image
subresource from one layout to another. Transitions can: happen with an subresource from one layout to another. Transitions can: happen with an
image memory barrier, included as part of a fname:vkCmdPipelineBarrier or a image memory barrier, included as part of a fname:vkCmdPipelineBarrier or a
fname:vkCmdWaitEvents command buffer command (see fname:vkCmdWaitEvents command buffer command (see
<<synchronization-image-memory-barrier>>), or as part of a subpass <<synchronization-image-memory-barrier>>), or as part of a subpass
dependency within a render pass (see sname:VkSubpassDependency). The image dependency within a render pass (see sname:VkSubpassDependency). The image
layout state is per-subresource, and separate subresources of the same image layout state is per-image subresource, and separate image subresources of
can: be in different layouts at the same time with one exception - depth and the same image can: be in different layouts at the same time with one
stencil aspects of a given subresource must: always be in the same layout. exception - depth and stencil aspects of a given image subresource must:
always be in the same layout.
[NOTE] [NOTE]
.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 ename:VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL may: provide optimal
performance for use as a color attachment, but be unsupported for use in performance for use as a color attachment, but be unsupported for use in
transfer commands. Applications can: transition an image subresource from 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, subresource is used for multiple kinds of operations. After initialization,
applications need not use any layout other than the general layout, though applications need not use any layout other than the general layout, though
this may: produce suboptimal performance on some implementations. 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 layout, where that layout is selected by the
sname:VkImageCreateInfo::pname:initialLayout member. The pname:initialLayout sname:VkImageCreateInfo::pname:initialLayout member. The pname:initialLayout
must: be either ename:VK_IMAGE_LAYOUT_UNDEFINED or 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 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 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 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. accessed by the device.
Host access to image memory is only well-defined for images created with 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 ename:VK_IMAGE_TILING_LINEAR tiling and for image subresources of those
which are currently in either the ename:VK_IMAGE_LAYOUT_PREINITIALIZED or images which are currently in either the
ename:VK_IMAGE_LAYOUT_GENERAL layout. ename:VK_IMAGE_LAYOUT_PREINITIALIZED or ename:VK_IMAGE_LAYOUT_GENERAL
layout.
The set of image layouts consists of: 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_GENERAL: Supports all types of device access.
* ename:VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL: must: only be used as a * ename:VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL: must: only be used as a
color or resolve attachment in a sname:VkFramebuffer. This layout is 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_USAGE_COLOR_ATTACHMENT_BIT usage bit enabled.
* ename:VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL: must: only be * ename:VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL: must: only be
used as a depth/stencil attachment in a sname:VkFramebuffer. This layout 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_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT usage bit enabled.
* ename:VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL: must: only be * ename:VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL: must: only be
used as a read-only depth/stencil attachment in a sname:VkFramebuffer 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 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 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_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT usage bit enabled.
* ename:VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL: must: only be used as a * 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, 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 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_SAMPLED_BIT or
ename:VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT usage bit enabled. ename:VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT usage bit enabled.
* ename:VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL: must: only be used as a * ename:VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL: must: only be used as a
source image of a transfer command (see the definition of source image of a transfer command (see the definition of
<<synchronization-transfer,ename:VK_PIPELINE_STAGE_TRANSFER_BIT>>). <<synchronization-transfer,ename:VK_PIPELINE_STAGE_TRANSFER_BIT>>).
This layout is valid only for subresources of images created with the This layout is valid only for image subresources of images created with
ename:VK_IMAGE_USAGE_TRANSFER_SRC_BIT usage bit enabled. the ename:VK_IMAGE_USAGE_TRANSFER_SRC_BIT usage bit enabled.
* ename:VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL: must: only be used as a * 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 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. 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 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. API controlling those accesses.
The image layout of each image subresource must: be well-defined at each 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 point in the image subresource's lifetime. This means that when performing a
layout transition on the subresource, the old layout value must: either layout transition on the image subresource, the old layout value must:
equal the current layout of the subresource (at the time the transition either equal the current layout of the image subresource (at the time the
executes), or else be ename:VK_IMAGE_LAYOUT_UNDEFINED (implying that the transition executes), or else be ename:VK_IMAGE_LAYOUT_UNDEFINED (implying
contents of the subresource need not be preserved). The new layout used in a that the contents of the image subresource need not be preserved). The new
transition mustnot: be ename:VK_IMAGE_LAYOUT_UNDEFINED or layout used in a transition mustnot: be ename:VK_IMAGE_LAYOUT_UNDEFINED or
ename:VK_IMAGE_LAYOUT_PREINITIALIZED. ename:VK_IMAGE_LAYOUT_PREINITIALIZED.
@ -756,8 +762,6 @@ baseArrayLayer = 0 +
arrayLayers = 1 arrayLayers = 1
|======================================== |========================================
The pname:subresourceRange member is of type sname:VkImageSubresourceRange The pname:subresourceRange member is of type sname:VkImageSubresourceRange
and is defined as: and is defined as:
@ -775,11 +779,12 @@ include::../structs/VkImageSubresourceRange.txt[]
include::../validity/structs/VkImageSubresourceRange.txt[] include::../validity/structs/VkImageSubresourceRange.txt[]
The number of mip-map levels and array layers must: be a subset of the 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 image subresources in the image. If an application wants to use all
layers in an image after the pname:baseMipLevel or pname:baseArrayLayer, it mip-levels or layers in an image after the pname:baseMipLevel or
can: set pname:levelCount and pname:layerCount to the special values pname:baseArrayLayer, it can: set pname:levelCount and pname:layerCount to
ename:VK_REMAINING_MIP_LEVELS and ename:VK_REMAINING_ARRAY_LAYERS without the special values ename:VK_REMAINING_MIP_LEVELS and
knowing the exact number of mip-levels or layers. 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 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, 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 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 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 depth/stencil image is used as a depth/stencil framebuffer attachment, the
pname:aspectMask is ignored and both depth and stencil subresources are pname:aspectMask is ignored and both depth and stencil image subresources
used. are used.
The pname:components member is defined as follows: 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, resources is a buffer or a linear image and the other is an optimal image,
and the following: and the following:
resourceA.end = resourceA.memoryOffset + resourceA.size - 1 [source,c]
resourceA.endPage = resourceA.end & ~(bufferImageGranularity-1) ---------------------------------------------------
resourceB.start = resourceB.memoryOffset resourceA.end = resourceA.memoryOffset + resourceA.size - 1
resourceB.startPage = resourceB.start & ~(bufferImageGranularity-1) resourceA.endPage = resourceA.end & ~(bufferImageGranularity-1)
resourceB.start = resourceB.memoryOffset
resourceB.startPage = resourceB.start & ~(bufferImageGranularity-1)
---------------------------------------------------
The following property must: hold: 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 That is, the end of the first resource (A) and the beginning of the second
resource (B) must: be on separate ``pages'' of size 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[] include::../enums/VkSharingMode.txt[]
* ename:VK_SHARING_MODE_EXCLUSIVE specifies that access to any range or * 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 image subresource of the object will be exclusive to a single queue
a time. family at a time.
* ename:VK_SHARING_MODE_CONCURRENT specifies that concurrent access to any * 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. supported.
[NOTE] [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. 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 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 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 able to interpret the memory contents of a range or image subresource, the
application must: transfer exclusive ownership of the range or subresource application must: transfer exclusive ownership of the range or image
between the source and destination queue families with the following subresource between the source and destination queue families with the
sequence of operations: following sequence of operations:
1. Release exclusive ownership from the source queue family to the 1. Release exclusive ownership from the source queue family to the
destination queue family. destination queue family.
@ -1099,8 +1110,8 @@ sequence of operations:
3. Acquire exclusive ownership for the destination queue family from the 3. Acquire exclusive ownership for the destination queue family from the
source queue family. source queue family.
To release exclusive ownership of a range of a buffer or subresource of an To release exclusive ownership of a range of a buffer or image subresource
image object, the application must: execute a buffer or image memory of an image object, the application must: execute a buffer or image memory
barrier, respectively (see slink:VkBufferMemoryBarrier and barrier, respectively (see slink:VkBufferMemoryBarrier and
slink:VkImageMemoryBarrier) on a queue from the source queue family. The slink:VkImageMemoryBarrier) on a queue from the source queue family. The
pname:srcQueueFamilyIndex parameter of the barrier must: be set to 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 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. 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 ename:VK_SHARING_MODE_EXCLUSIVE resource, its contents are undefined to
other queue families unless ownership is transferred. The contents may: also 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 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 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 of a range or image subresource without an ownership transfer in the same
for a resource that was just created, however doing so means any contents way as for a resource that was just created, however doing so means any
written by other queue families or via incompatible aliases are undefined. contents written by other queue families or via incompatible aliases are
undefined.
[[resources-memory-aliasing]] [[resources-memory-aliasing]]
@ -1152,14 +1164,15 @@ time.
==== ====
When an opaque, non-ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT image is 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 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 subresources range. When a linear image is bound to an aliased range, the image
that (according to the image's advertised layout) include bytes from the subresources that (according to the image's advertised layout) include bytes
aliased range overlap the range. When a from the aliased range overlap the range. When a
ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT image has sparse image blocks bound ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT image has sparse image blocks
to an aliased range, only subresources including those sparse image blocks bound to an aliased range, only image subresources including those sparse
overlap the range, and when the memory bound to the image's miptail overlaps image blocks overlap the range, and when the memory bound to the image's
an aliased range all subresources in the miptail overlap the range. miptail overlaps an aliased range all image subresources in the miptail
overlap the range.
Buffers, and linear image subresources in either the Buffers, and linear image subresources in either the
ename:VK_IMAGE_LAYOUT_PREINITIALIZED or ename:VK_IMAGE_LAYOUT_GENERAL 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 are those overlapped by the image subresources that were written. If the
second alias is a host-accessible subresource, the affected bytes become second alias is a host-accessible subresource, the affected bytes become
undefined. If the second alias is a not host-accessible, all sparse image 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 non-sparse image and fully resident sparse images) that overlap the affected
bytes become undefined. bytes become undefined.
If any subresources are made undefined due to writes to an alias, then each If any image subresources are made undefined due to writes to an alias, then
of those subresources must: have its layout transitioned from 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_UNDEFINED to a valid layout before it is used, or from
ename:VK_IMAGE_LAYOUT_PREINITIALIZED if the memory has been written by the 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 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 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 dependency using the appropriate access types if at least one of those uses
performs writes, whether the aliases interpret memory consistently or not. performs writes, whether the aliases interpret memory consistently or not.
If buffer or image memory barriers are used, the scope of the barrier must: 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 If two aliasing image views are used in the same framebuffer, then the
render pass must: declare the attachments using 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 workgroup is a collection of shader invocations that execute the same
shader, potentially in parallel. Compute shaders execute in _global shader, potentially in parallel. Compute shaders execute in _global
workgroups_ which are divided into a number of _local workgroups_ with a size 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 that can: be set by assigning a value to the code:LocalSize execution mode or
either in the shader code or via via an object decorated by the code:WorkgroupSize decoration. An invocation
<<pipelines-specialization-constants,Specialization Constants>>. An within a local workgroup can: share data with other members of the local
invocation within a local workgroup can: share data with other members of workgroup through shared variables and issue memory and control flow barriers
the local workgroup through shared variables and issue memory and control to synchronize with other members of the local workgroup.
flow barriers to synchronize with other members of the local workgroup.
[[shaders-interpolation-decorations]] [[shaders-interpolation-decorations]]

View File

@ -50,8 +50,8 @@ feature enables specified in slink:VkPhysicalDeviceFeatures.
formats that non-sparse usage supports, and supports both formats that non-sparse usage supports, and supports both
ename:VK_IMAGE_TILING_OPTIMAL and ename:VK_IMAGE_TILING_LINEAR tiling. ename:VK_IMAGE_TILING_OPTIMAL and ename:VK_IMAGE_TILING_LINEAR tiling.
* _Sparse Residency_ builds on the pname:sparseBinding feature. It * _Sparse Residency_ builds on (and requires) the pname:sparseBinding
includes the following capabilities: feature. It includes the following capabilities:
** Resources do not have to be completely bound to memory before use on ** Resources do not have to be completely bound to memory before use on
the device. the device.
@ -161,10 +161,10 @@ sname:VkImage objects created with the
ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT bit allow specific rectangular ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT bit allow specific rectangular
regions of the image called sparse image blocks to be bound to specific 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 ranges of memory. This allows the application to manage residency at either
subresource or sparse image block granularity. Each subresource (outside of image subresource or sparse image block granularity. Each image subresource
the <<sparsememory-miptail,mip tail>>) starts on a sparse block boundary and (outside of the <<sparsememory-miptail,mip tail>>) starts on a sparse block
has dimensions that are integer multiples of the corresponding dimensions of boundary and has dimensions that are integer multiples of the corresponding
the sparse image block. dimensions of the sparse image block.
[NOTE] [NOTE]
.Note .Note
@ -229,14 +229,16 @@ endif::implementation-guide[]
[[sparsememory-miptail]] [[sparsememory-miptail]]
=== Mip Tail Regions === Mip Tail Regions
Sparse images created using ename:VK_IMAGE_CREATE_SPARSE_BINDING_BIT have no Sparse images created using ename:VK_IMAGE_CREATE_SPARSE_BINDING_BIT
specific mapping of image region or subresource to memory offset defined, so (without also using ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT) have no
the entire image can: be thought of as a linear opaque address region. specific mapping of image region or image subresource to memory offset
However, images created with ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT do defined, so the entire image can: be thought of as a linear opaque address
have a prescribed sparse image block layout, and hence each subresource must: region. However, images created with
start on a sparse block boundary. Within each array layer, the set of ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT do have a prescribed sparse image
mip-levels that have a smaller size than the sparse block size in bytes are block layout, and hence each image subresource must: start on a sparse block
grouped together into a _mip tail region_. 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 If the ename:VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT flag is present in
the pname:flags member of sname:VkSparseImageFormatProperties, for the the pname:flags member of sname:VkSparseImageFormatProperties, for the
@ -817,11 +819,11 @@ and flink:vkCreateImage for details of the resource creation APIs.
.Note .Note
==== ====
Specifying ename:VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT or 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_BUFFER_CREATE_SPARSE_BINDING_BIT or
ename:VK_IMAGE_CREATE_SPARSE_BINDING_BIT, respectively, as well. This means 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 that resources must: be created with the appropriate etext:*_SPARSE_BINDING_BIT
sparse binding command (fname:vkQueueBindSparse). 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 pname:formatProperties.imageGranularity values do not match the
standard sparse image block dimension corresponding to the image's standard sparse image block dimension corresponding to the image's
pixel format. pixel format.
* pname:imageMipTailFirstLod is the first mip level at which subresources * pname:imageMipTailFirstLod is the first mip level at which image
are included in the mip tail region. subresources are included in the mip tail region.
* pname:imageMipTailSize is the memory size (in bytes) of the mip tail * pname:imageMipTailSize is the memory size (in bytes) of the mip tail
region. If pname:formatProperties.flags contains region. If pname:formatProperties.flags contains
ename:VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT, this is the size of the 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}})$]. latexmath:[$[0, {\mathit{VkMemoryRequirements}::\mathit{size}})$].
Memory is bound to sname:VkBuffer objects created with the Memory is bound to sname:VkBuffer objects created with the
ename:VK_BUFFER_CREATE_SPARSE_BINDING_BIT or ename:VK_BUFFER_CREATE_SPARSE_BINDING_BIT flag using the following
ename:VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT flags using the following
structure: structure:
include::../structs/VkSparseBufferMemoryBindInfo.txt[] include::../structs/VkSparseBufferMemoryBindInfo.txt[]
@ -1099,8 +1100,7 @@ include::../structs/VkSparseBufferMemoryBindInfo.txt[]
include::../validity/structs/VkSparseBufferMemoryBindInfo.txt[] include::../validity/structs/VkSparseBufferMemoryBindInfo.txt[]
Memory is bound to opaque regions of sname:VkImage objects created with the 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_BINDING_BIT flag using the following
ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT flags using the following
structure: structure:
include::../structs/VkSparseImageOpaqueMemoryBindInfo.txt[] include::../structs/VkSparseImageOpaqueMemoryBindInfo.txt[]
@ -1160,14 +1160,14 @@ Where sname:VkSparseImageMemoryBind is defined as follows:
include::../structs/VkSparseImageMemoryBind.txt[] include::../structs/VkSparseImageMemoryBind.txt[]
* pname:subresource is the aspectMask and region of interest in the image. * 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. subresource to bind.
* pname:extent is the size in texels of the region within the subresource * pname:extent is the size in texels of the region within the image
to bind. The extent must: be a multiple of the sparse image block subresource to bind. The extent must: be a multiple of the sparse image
dimensions, except when binding sparse image blocks along the edge of a block dimensions, except when binding sparse image blocks along the edge
subresource it can: instead be such that any coordinate of of a image subresource it can: instead be such that any coordinate of
latexmath:[$\mathit{offset} + \mathit{extent}$] equals the corresponding 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 * 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, blocks of the image are bound to. If pname:memory is sname:VK_NULL_HANDLE,
the sparse image blocks are unbound. 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-buffer-memory-barrier,Buffer>> and
<<synchronization-image-memory-barrier,image memory barriers>> apply to the <<synchronization-image-memory-barrier,image memory barriers>> apply to the
buffer range(s) or image subresource(s) included in the command. For 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 accesses to a byte of a buffer or image subresource of an image to be
between two sets of commands, the byte or subresource must: be included in synchronized between two sets of commands, the byte or image subresource
both the first and second halves of the dependencies described above, but must: be included in both the first and second halves of the dependencies
need not be included in each step of the execution dependency chain between described above, but need not be included in each step of the execution
them. dependency chain between them.
An execution dependency chain is _by-region_ if all stages in all An execution dependency chain is _by-region_ if all stages in all
dependencies in the chain are framebuffer-space pipeline stages, and if the 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 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 pipeline barrier. Pipeline barriers within a render pass instance can: only
be types sname:VkMemoryBarrier or sname:VkImageMemoryBarrier. If a 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 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: the framebuffer in the current subpass. Additionally, pname:oldLayout must:
be equal to pname:newLayout, and both the pname:srcQueueFamilyIndex and 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 The image memory barrier type is specified with an instance of the
sname:VkImageMemoryBarrier structure. This type of barrier only applies to sname:VkImageMemoryBarrier structure. This type of barrier only applies to
memory accesses involving a specific subresource range of the specified memory accesses involving a specific image subresource range of the
image object. That is, a memory dependency formed from a image memory specified image object. That is, a memory dependency formed from a image
barrier is memory barrier is
<<synchronization-execution-and-memory-dependencies-types,scoped>> to the <<synchronization-execution-and-memory-dependencies-types,scoped>> to the
specified subresources of the image. It is also used to perform a layout specified image subresources of the image. It is also used to perform a
transition for an image subresource range, or to transfer ownership of an layout transition for an image subresource range, or to transfer ownership
image subresource range from one queue family to another as described in the of an image subresource range from one queue family to another as described
<<resources-sharing,Resource Sharing>> section. in the <<resources-sharing,Resource Sharing>> section.
sname:VkImageMemoryBarrier has the following definition: sname:VkImageMemoryBarrier has the following definition:
@ -1119,8 +1119,8 @@ The members of sname:VkImageMemoryBarrier have the following meanings:
the barrier. the barrier.
* pname:subresourceRange describes an area of the backing memory for * pname:subresourceRange describes an area of the backing memory for
pname:image (see <<resources-image-views>> for the description of pname:image (see <<resources-image-views>> for the description of
sname:VkImageSubresourceRange), as well as the set of subresources whose sname:VkImageSubresourceRange), as well as the set of image subresources
image layouts are modified. whose image layouts are modified.
include::../validity/structs/VkImageMemoryBarrier.txt[] include::../validity/structs/VkImageMemoryBarrier.txt[]

View File

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

View File

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

View File

@ -37,7 +37,7 @@ pname:pImageFormatProperties::
Description 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. 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 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: in the slink:VkImageCreateInfo structure, the definition of which is:

View File

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

View File

@ -548,6 +548,8 @@ existing API Specification.
| heterogeneous | heterogenous | More common | heterogeneous | heterogenous | More common
| homogeneous | homogenous | More common | homogeneous | homogenous | More common
| host endianness | platform endianness | | host endianness | platform endianness |
| image subresource | subresource
| Except when referring to *host-accessible subresources*
| implementation| system | | implementation| system |
| indices | indexes | More common | indices | indexes | More common
| it is | it's | In general, avoid contractions. | 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 | allowed, could, generally, might, probably, perhaps
| And all other such terms of choice. Use _may:_ or _can:_ | And all other such terms of choice. Use _may:_ or _can:_
depending on the context. 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 * 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: 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: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: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: 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: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 * 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 * 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 * 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` * 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 * 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: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 * 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[] ifndef::doctype-manpage[]
******************************************************************************** ********************************************************************************
endif::doctype-manpage[] endif::doctype-manpage[]

View File

@ -18,9 +18,9 @@ endif::doctype-manpage[]
* pname:rangeCount must: be greater than `0` * 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 * 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: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 * 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[] ifndef::doctype-manpage[]
******************************************************************************** ********************************************************************************
endif::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: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 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: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 * pname:dstImageLayout must: be either of ename:VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL or ename:VK_IMAGE_LAYOUT_GENERAL
ifndef::doctype-manpage[] 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 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 * 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 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: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: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 * 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 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 * 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 * 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 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: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: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 * pname:dstBuffer must: have been created with ename:VK_BUFFER_USAGE_TRANSFER_DST_BIT usage flag
ifndef::doctype-manpage[] 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 * 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: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: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: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 * 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_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 * 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 * 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 * 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 * 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[] ifndef::doctype-manpage[]
******************************************************************************** ********************************************************************************
endif::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 * 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 * 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 * 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[] ifndef::doctype-manpage[]
******************************************************************************** ********************************************************************************
endif::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-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-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 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[] ifndef::doctype-manpage[]
******************************************************************************** ********************************************************************************
endif::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_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_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: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[] ifndef::doctype-manpage[]
******************************************************************************** ********************************************************************************
endif::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_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, 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 * 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 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_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 * 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_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_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 * 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 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 * 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>> * 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 * 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 * 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: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: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: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 * 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 <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 --> #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 <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"> <type category="define">
#define <name>VK_DEFINE_HANDLE</name>(object) typedef struct object##_T* object;</type> #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-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-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 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> </validity>
</type> </type>
<type category="struct" name="VkBufferViewCreateInfo"> <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_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, 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>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 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_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> <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_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_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: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> </validity>
</type> </type>
<type category="struct" name="VkSubresourceLayout" returnedonly="true"> <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_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_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>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 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>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> <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> <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>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: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: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: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> <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 optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
<param><type>VkBuffer</type>* <name>pBuffer</name></param> <param><type>VkBuffer</type>* <name>pBuffer</name></param>
<validity> <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> </validity>
</command> </command>
<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 optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
<param><type>VkImage</type>* <name>pImage</name></param> <param><type>VkImage</type>* <name>pImage</name></param>
<validity> <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> </validity>
</command> </command>
<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 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>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 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: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: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>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 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> <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>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: 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: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: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: 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: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>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>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> <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: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 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: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> <usage>pname:dstImageLayout must: be either of ename:VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL or ename:VK_IMAGE_LAYOUT_GENERAL</usage>
</validity> </validity>
</command> </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>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 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: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: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> <usage>pname:dstBuffer must: have been created with ename:VK_BUFFER_USAGE_TRANSFER_DST_BIT usage flag</usage>
</validity> </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> <param len="rangeCount">const <type>VkImageSubresourceRange</type>* <name>pRanges</name></param>
<validity> <validity>
<usage>pname:image must: have been created with ename:VK_IMAGE_USAGE_TRANSFER_DST_BIT usage flag</usage> <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>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> </validity>
</command> </command>
<command queues="graphics" renderpass="outside" cmdbufferlevel="primary,secondary"> <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> <param len="rangeCount">const <type>VkImageSubresourceRange</type>* <name>pRanges</name></param>
<validity> <validity>
<usage>pname:image must: have been created with ename:VK_IMAGE_USAGE_TRANSFER_DST_BIT usage flag</usage> <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>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> </validity>
</command> </command>
<command queues="graphics" renderpass="inside" cmdbufferlevel="primary,secondary"> <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>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: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: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: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>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_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> <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"/> <enum value="&quot;VK_AMD_extension_2&quot;" name="VK_AMD_EXTENSION_2_EXTENSION_NAME"/>
</require> </require>
</extension> </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> </extensions>
</registry> </registry>

View File

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