mirror of
https://github.com/status-im/Vulkan-Docs.git
synced 2025-01-11 06:25:59 +00:00
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:
parent
5d10fc3089
commit
3b32b240f6
@ -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
|
||||||
<<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
|
||||||
<<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
|
||||||
<<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
|
||||||
<<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 <<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
|
||||||
<<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
|
||||||
<<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
|
||||||
<<interfaces-iointerfaces-locations,Location Assignment>>
|
<<interfaces-iointerfaces-locations,Location Assignment>>
|
||||||
section (public issue 45).
|
section (public issue 45).
|
||||||
|
|
||||||
* Editorial fixes for <<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 <<fragops-depth,Depth
|
* Clarify behavior of depth test in the <<fragops-depth,Depth
|
||||||
Test>> section (public issues 80, 81).
|
Test>> 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 <<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 <<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 <<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
|
||||||
<<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).
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
@ -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,
|
||||||
|
@ -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[]
|
||||||
|
|
||||||
|
@ -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.
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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.
|
||||||
|
@ -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
|
||||||
|
@ -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]]
|
||||||
|
@ -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.
|
||||||
|
@ -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[]
|
||||||
|
|
||||||
|
@ -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]
|
||||||
++++++++++++++++++++++++
|
++++++++++++++++++++++++
|
||||||
|
@ -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[]
|
||||||
|
|
||||||
|
@ -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:
|
||||||
|
@ -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
|
||||||
|
@ -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:_.
|
||||||
|=====
|
|=====
|
||||||
|
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
@ -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[]
|
||||||
|
@ -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[]
|
||||||
|
@ -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[]
|
||||||
********************************************************************************
|
********************************************************************************
|
||||||
|
@ -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
|
||||||
|
@ -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[]
|
||||||
|
@ -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
|
||||||
|
@ -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[]
|
||||||
|
@ -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[]
|
||||||
|
@ -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[]
|
||||||
|
@ -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[]
|
||||||
|
@ -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
|
||||||
|
@ -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>>
|
||||||
|
@ -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
|
||||||
|
@ -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 <<features-features-sparseBinding,sparse bindings>> feature is not enabled, pname:flags mustnot: contain ename:VK_BUFFER_CREATE_SPARSE_BINDING_BIT</usage>
|
<usage>If the <<features-features-sparseBinding,sparse bindings>> feature is not enabled, pname:flags mustnot: contain ename:VK_BUFFER_CREATE_SPARSE_BINDING_BIT</usage>
|
||||||
<usage>If the <<features-features-sparseResidencyBuffer,sparse buffer residency>> feature is not enabled, pname:flags mustnot: contain ename:VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</usage>
|
<usage>If the <<features-features-sparseResidencyBuffer,sparse buffer residency>> feature is not enabled, pname:flags mustnot: contain ename:VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</usage>
|
||||||
<usage>If the <<features-features-sparseResidencyAliased,sparse aliased residency>> feature is not enabled, pname:flags mustnot: contain ename:VK_BUFFER_CREATE_SPARSE_ALIASED_BIT</usage>
|
<usage>If the <<features-features-sparseResidencyAliased,sparse aliased residency>> 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 <<devsandqueues-queueprops>>)</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 <<devsandqueues-queueprops>>)</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 <<resources-image-views>>)</usage>
|
<usage>pname:subresourceRange must: be a valid image subresource range for the image (see <<resources-image-views>>)</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 <<resources-image-views>>)</usage>
|
<usage>pname:subresourceRange must: be a valid image subresource range for pname:image (see <<resources-image-views>>)</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 <<features-formats-compatibility-classes,Format Compatibility Classes>></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 <<features-formats-compatibility-classes,Format Compatibility Classes>></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 <<resources-image-views-compatibility,table below>></usage>
|
<usage>pname:subResourceRange and pname:viewType must: be compatible with the image, as described in the <<resources-image-views-compatibility,table below>></usage>
|
||||||
@ -918,7 +918,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
|
|||||||
<validity>
|
<validity>
|
||||||
<usage>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</usage>
|
<usage>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</usage>
|
||||||
<usage>pname:memory and pname:memoryOffset must: match the memory requirements of the calling command's pname:image, as described in section <<resources-association>></usage>
|
<usage>pname:memory and pname:memoryOffset must: match the memory requirements of the calling command's pname:image, as described in section <<resources-association>></usage>
|
||||||
<usage>pname:subresource must: be a valid subresource for pname:image (see <<resources-image-views>>)</usage>
|
<usage>pname:subresource must: be a valid image subresource for pname:image (see <<resources-image-views>>)</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 <<copies-images-format-compatibility, below>></usage>
|
<usage>The elink:VkFormat of each of pname:srcImage and pname:dstImage must: be compatible, as defined <<copies-images-format-compatibility, below>></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=""VK_AMD_extension_2"" name="VK_AMD_EXTENSION_2_EXTENSION_NAME"/>
|
<enum value=""VK_AMD_extension_2"" 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=""VK_AMD_extension_3"" 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=""VK_AMD_extension_4"" 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=""VK_AMD_extension_5"" 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=""VK_AMD_extension_6"" name="VK_AMD_EXTENSION_6_EXTENSION_NAME"/>
|
||||||
|
</require>
|
||||||
|
</extension>
|
||||||
</extensions>
|
</extensions>
|
||||||
</registry>
|
</registry>
|
||||||
|
@ -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
|
||||||
|
Loading…
x
Reference in New Issue
Block a user