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).
|
||||
* Clarify the example demonstrating the behavior of
|
||||
code:OpMemoryBarrier in the
|
||||
<<shaders-execution-memory-ordering,shader memory acces
|
||||
<<shaders-execution-memory-ordering,shader memory acces
|
||||
ordering>> section (public issue 16).
|
||||
* Specify that freeing mapped memory implicitly unmaps the memory in
|
||||
the description of flink:vkFreeMemory (public issue 17).
|
||||
* Forbid allocation callbacks from calling into the API in the
|
||||
<<memory-allocation,memory allocation>> section (public issue
|
||||
<<memory-allocation,memory allocation>> section (public issue
|
||||
20).
|
||||
* Add missing validity rules about size being greater than 0 and
|
||||
offset being less than size of object. Fix
|
||||
|
@ -102,21 +102,21 @@ Github Issues:
|
|||
descriptors in flink:VkCopyDescriptorSet (public issue 32).
|
||||
* Clarify that array and matrix stride has to be a multiple of the
|
||||
base alignment of the array or matrix in the
|
||||
<<interfaces-resources-layout,Offset and Stride Assignment>>
|
||||
<<interfaces-resources-layout,Offset and Stride Assignment>>
|
||||
section (public issue 38).
|
||||
* Correct parenthesis floor nesting error in equation for
|
||||
<<textures-RGB-sexp,RGB to shared exponent conversion>>.
|
||||
<<textures-RGB-sexp,RGB to shared exponent conversion>>.
|
||||
Clarify case of when exp' is forced to 0, avoiding log2(0) undefined
|
||||
problem (public issue 40).
|
||||
* Remove redundant statement from the code:FragDepth description in
|
||||
the <<interfaces-builtin-variables,Built-In Variables>>
|
||||
the <<interfaces-builtin-variables,Built-In Variables>>
|
||||
section (public issue 47).
|
||||
* 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
|
||||
pname:maxSamplerLodBias (public issue 64).
|
||||
* 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
|
||||
67).
|
||||
* Replace 'descriptor accessed by a pipeline' language for
|
||||
|
@ -165,13 +165,13 @@ Github Issues:
|
|||
* Various minor editorial fixes (public issue 33).
|
||||
|
||||
* Clarify locations for block members in the
|
||||
<<interfaces-iointerfaces-locations,Location Assignment>>
|
||||
<<interfaces-iointerfaces-locations,Location Assignment>>
|
||||
section (public issue 45).
|
||||
|
||||
* Editorial fixes for <<commandbuffer-allocation,Command Buffer
|
||||
* Editorial fixes for <<commandbuffer-allocation,Command Buffer
|
||||
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).
|
||||
|
||||
* Remove discussion of return codes from
|
||||
|
@ -183,7 +183,7 @@ Github Issues:
|
|||
pname:drawCount of 0, as well as 1, when the multiDrawIndirect
|
||||
feature is not supported (public issue 88).
|
||||
|
||||
* Remove confusing wording in the <<features-limits,Limits>>
|
||||
* Remove confusing wording in the <<features-limits,Limits>>
|
||||
section describing the slink:VkPhysicalDeviceLimits
|
||||
pname:minTexelBufferOffsetAlignment,
|
||||
pname:minUniformBufferOffsetAlignment, and
|
||||
|
@ -220,12 +220,12 @@ Github Issues:
|
|||
implicitly enabled layers (public issue 101).
|
||||
|
||||
* Miscellaneous editorial fixes. Include the Vulkan spec patch number
|
||||
in the PDF title. Fix label on <<fig-non-strict-lines,Non
|
||||
in the PDF title. Fix label on <<fig-non-strict-lines,Non
|
||||
strict lines>> diagram. Use more easily distinguished symbols in
|
||||
tables in the <<features-required-format-support,Required
|
||||
tables in the <<features-required-format-support,Required
|
||||
Format Support>> section. Don't require FQDNs used as layer names be
|
||||
encoded in lower case if not possible, in the
|
||||
<<extensions-naming-conventions, Extension and Layer Naming
|
||||
<<extensions-naming-conventions, Extension and Layer Naming
|
||||
Conventions>> section (public issues 101, 119, 121).
|
||||
|
||||
Internal Issues:
|
||||
|
@ -453,3 +453,49 @@ Internal Issues:
|
|||
to state that user-defined variable interface must match too (internal
|
||||
issue 250).
|
||||
|
||||
-----------------------------------------------------
|
||||
|
||||
Change log for April 15, 2016 Vulkan 1.0.10 spec update:
|
||||
|
||||
* Bump API patch number and header version number to 10 for this
|
||||
update.
|
||||
|
||||
Github Issues:
|
||||
|
||||
* Slightly tweak the <<memory-allocation,Host Memory>> allocator language
|
||||
so that an application wrapping the standard C alloc/free/realloc
|
||||
functions is still correct - the previous language was too strong with
|
||||
regards to freeing memory. Also made certain scenarios clearer - an
|
||||
implementation may now continue without error if an allocation failed
|
||||
and it is able to continue correctly (public issue 21).
|
||||
* Require that etext:VK_*_CREATE_SPARSE_BINDING_BIT is set when the
|
||||
corresponding etext:VK_*_CREATE_SPARSE_RESIDENCY_BIT is used, in the
|
||||
<<sparsememory-miptail,Mip Tail Regions>> section and related commands
|
||||
flink:vkCreateBuffer and flink:vkCreateImage (public issue 84).
|
||||
* Update the <<features,Features, Limits, and Formats>> chapter to clarify
|
||||
interactions between optional features and dynamic state for the
|
||||
pname:depthBiasClamp and pname:wideLines features (public issue 89).
|
||||
* Describe the code:WorkgroupSize builtin in the
|
||||
<<interfaces-builtin-variables,Built-In Variables>> section, and update
|
||||
the <<compute-shaders,Compute Shaders>> section to further clarify how
|
||||
to set the number of workgroups to execute in a compute shader (public
|
||||
issue 145).
|
||||
* Use the term *image subresource* everywhere instead of *subresource*,
|
||||
except for the special case of *host-accessible subresource*, which may
|
||||
be either an image subresource or buffer range (public issue 120)
|
||||
* Add a note to the <<features,Features, Limits, and Formats>> section
|
||||
about extensibility of structures (Public issue 165).
|
||||
* Fix return code flink:vkAcquireNextImageKHR when the timeout parameter
|
||||
is 0 to ename:VK_NOT_READY instead of ename:VK_TIMEOUT (public issue
|
||||
170).
|
||||
* Fix typo in slink:VkLayerProperties::pname:apiVersion field (public
|
||||
issue 172).
|
||||
|
||||
Internal Issues:
|
||||
|
||||
* Fix a few minor internally-detected typos.
|
||||
* Minor formatting tweaks to pseudocode in the <<resources,Resource
|
||||
Creation>> chapter (internal issue 179).
|
||||
* Fix typo in the definition of point sampling for
|
||||
elink:VkCullModeFlagBits (internal issue 268).
|
||||
|
||||
|
|
|
@ -126,7 +126,7 @@ INCLUDES := $(wildcard protos/*.txt structs/*.txt flags/*.txt enums/*.txt funcpo
|
|||
COMMONDOCS := $(CHAPTERS) $(INCLUDES)
|
||||
# A generated included file with the spec version, date, and git commit
|
||||
SPECVERSION = specversion.txt
|
||||
SPECREVISION = 1.0.9
|
||||
SPECREVISION = 1.0.10
|
||||
SPECREMARK =
|
||||
|
||||
# Spec targets
|
||||
|
|
|
@ -356,9 +356,9 @@ Image Subresource Range::
|
|||
layers.
|
||||
|
||||
Image View::
|
||||
An object that represents a subresource range of a specific image, and
|
||||
state that controls how the contents are interpreted. Represented by a
|
||||
sname:VkImageView object.
|
||||
An object that represents an image subresource range of a specific
|
||||
image, and state that controls how the contents are interpreted.
|
||||
Represented by a sname:VkImageView object.
|
||||
|
||||
Immutable Sampler::
|
||||
A sampler descriptor provided at descriptor set layout creation time,
|
||||
|
@ -465,7 +465,7 @@ Normalized Device Coordinates::
|
|||
|
||||
Overlapped Range (Aliased Range)::
|
||||
The aliased range of a device memory allocation that intersects a given
|
||||
subresource of an image or range of a buffer.
|
||||
image subresource of an image or range of a buffer.
|
||||
|
||||
Packed Format::
|
||||
A format whose components are stored as a single data element in memory,
|
||||
|
|
|
@ -26,12 +26,12 @@ include::../protos/vkCmdClearColorImage.txt[]
|
|||
* pname:pColor is a pointer to a slink:VkClearColorValue structure that
|
||||
contains the values the image subresource ranges will be cleared to (see
|
||||
<<clears-values>> below).
|
||||
* pname:rangeCount is the number of subresource range structures in
|
||||
* pname:rangeCount is the number of image subresource range structures in
|
||||
pname:pRanges.
|
||||
* pname:pRanges points to an array of slink:VkImageSubresourceRange
|
||||
structures that describe a range of mipmap levels, array layers, and
|
||||
aspects to be cleared, as described in <<resources-image-views,Image
|
||||
Views>>. The pname:aspectMask of all subresource ranges must: only
|
||||
Views>>. The pname:aspectMask of all image subresource ranges must: only
|
||||
include ename:VK_IMAGE_ASPECT_COLOR_BIT.
|
||||
|
||||
Each specified range in pname:pRanges is cleared to the value specified by
|
||||
|
@ -52,18 +52,18 @@ include::../protos/vkCmdClearDepthStencilImage.txt[]
|
|||
* pname:pDepthStencil is a pointer to a slink:VkClearDepthStencilValue
|
||||
structure that contains the values the depth and stencil image
|
||||
subresource ranges will be cleared to (see <<clears-values>> below).
|
||||
* pname:rangeCount is the number of subresource range structures in
|
||||
* pname:rangeCount is the number of image subresource range structures in
|
||||
pname:pRanges.
|
||||
* pname:pRanges points to an array of slink:VkImageSubresourceRange
|
||||
structures that describe a range of mipmap levels, array layers, and
|
||||
aspects to be cleared, as described in <<resources-image-views,Image
|
||||
Views>>. The pname:aspectMask of each subresource range in pname:pRanges
|
||||
can: include ename:VK_IMAGE_ASPECT_DEPTH_BIT if the image format has a
|
||||
depth component, and ename:VK_IMAGE_ASPECT_STENCIL_BIT if the image
|
||||
format has a stencil component. pname:pDepthStencil is a pointer to a
|
||||
sname:VkClearDepthStencilValue structure that contains the values the
|
||||
image subresource ranges will be cleared to (see <<clears-values>>
|
||||
below).
|
||||
Views>>. The pname:aspectMask of each image subresource range in
|
||||
pname:pRanges can: include ename:VK_IMAGE_ASPECT_DEPTH_BIT if the image
|
||||
format has a depth component, and ename:VK_IMAGE_ASPECT_STENCIL_BIT if
|
||||
the image format has a stencil component. pname:pDepthStencil is a
|
||||
pointer to a sname:VkClearDepthStencilValue structure that contains the
|
||||
values the image subresource ranges will be cleared to (see
|
||||
<<clears-values>> below).
|
||||
|
||||
include::../validity/protos/vkCmdClearDepthStencilImage.txt[]
|
||||
|
||||
|
|
|
@ -122,8 +122,9 @@ Each element of pname:pRegions is a structure defined as:
|
|||
include::../structs/VkImageCopy.txt[]
|
||||
|
||||
* pname:srcSubresource and pname:dstSubresource are
|
||||
slink:VkImageSubresourceLayers structures specifying the subresources of
|
||||
the images used for the source and destination image data, respectively.
|
||||
slink:VkImageSubresourceLayers structures specifying the image
|
||||
subresources of the images used for the source and destination image
|
||||
data, respectively.
|
||||
* pname:srcOffset and pname:dstOffset select the initial x, y, and z
|
||||
offsets in texels of the sub-regions of the source and destination image
|
||||
data.
|
||||
|
@ -191,21 +192,21 @@ this rule which is required: to handle compressed images created with
|
|||
dimensions that are not a multiple of the compressed texel block dimensions.
|
||||
If the pname:srcImage is compressed and if pname:extent.width is not a
|
||||
multiple of the compressed texel block width then (pname:extent.width +
|
||||
pname:srcOffset.x) must: equal the subresource width, if pname:extent.height
|
||||
is not a multiple of the compressed texel block height then
|
||||
(pname:extent.height + pname:srcOffset.y) must: equal the subresource height
|
||||
and if pname:extent.depth is not a multiple of the compressed texel block
|
||||
depth then (pname:extent.depth + pname:srcOffset.z) must: equal the
|
||||
subresource depth. Similarily if the pname:dstImage is compressed and if
|
||||
pname:extent.width is not a multiple of the compressed texel block width then
|
||||
(pname:extent.width + pname:dstOffset.x) must: equal the subresource width, if
|
||||
pname:srcOffset.x) must: equal the image subresource width, if
|
||||
pname:extent.height is not a multiple of the compressed texel block height
|
||||
then (pname:extent.height + pname:dstOffset.y) must: equal the subresource
|
||||
height and if pname:extent.depth is not a multiple of the compressed texel
|
||||
block depth then (pname:extent.depth + pname:dstOffset.z) must: equal the
|
||||
subresource depth. This allows the last compressed texel block of the image
|
||||
in each non-multiple dimension to be included as a source or destination of
|
||||
the copy.
|
||||
then (pname:extent.height + pname:srcOffset.y) must: equal the image
|
||||
subresource height and if pname:extent.depth is not a multiple of the
|
||||
compressed texel block depth then (pname:extent.depth + pname:srcOffset.z)
|
||||
must: equal the image subresource depth. Similarily if the pname:dstImage is
|
||||
compressed and if pname:extent.width is not a multiple of the compressed
|
||||
texel block width then (pname:extent.width + pname:dstOffset.x) must: equal
|
||||
the image subresource width, if pname:extent.height is not a multiple of the
|
||||
compressed texel block height then (pname:extent.height + pname:dstOffset.y)
|
||||
must: equal the image subresource height and if pname:extent.depth is not a
|
||||
multiple of the compressed texel block depth then (pname:extent.depth +
|
||||
pname:dstOffset.z) must: equal the image subresource depth. This allows the
|
||||
last compressed texel block of the image in each non-multiple dimension to
|
||||
be included as a source or destination of the copy.
|
||||
|
||||
fname:vkCmdCopyImage can: be used to copy image data between multisample
|
||||
images, but both images must: have the same number of samples.
|
||||
|
@ -266,8 +267,8 @@ include::../structs/VkBufferImageCopy.txt[]
|
|||
buffer memory is considered to be tightly packed according to the
|
||||
pname:imageExtent.
|
||||
* pname:imageSubresource is an slink:VkImageSubresourceLayers used to
|
||||
specify the specific subresources of the image used for the source or
|
||||
destination image data.
|
||||
specify the specific image subresources of the image used for the source
|
||||
or destination image data.
|
||||
* pname:imageOffset selects the initial x, y, z offsets in texels of the
|
||||
sub-region of the source or destination image data.
|
||||
* pname:imageExtent is the size in texels of the image to copy in
|
||||
|
@ -366,14 +367,14 @@ this rule which is required: to handle compressed images created with
|
|||
dimensions that are not a multiple of the compressed texel block dimensions.
|
||||
If pname:imageExtent.width is not a multiple of the compressed texel block
|
||||
width then (pname:imageExtent.width + pname:imageOffset.x) must: equal the
|
||||
subresource width, if pname:imageExtent.height is not a multiple of the
|
||||
compressed texel block height then (pname:imageExtent.height +
|
||||
pname:imageOffset.y) must: equal the subresource height and if
|
||||
pname:imageExtent.depth is not a multiple of the compressed texel block depth
|
||||
then (pname:imageExtent.depth + pname:imageOffset.z) must: equal the
|
||||
subresource depth. This allows the last compressed texel block of the image
|
||||
in each non-multiple dimension to be included as a source or destination of
|
||||
the copy.
|
||||
image subresource width, if pname:imageExtent.height is not a multiple of
|
||||
the compressed texel block height then (pname:imageExtent.height +
|
||||
pname:imageOffset.y) must: equal the image subresource height and if
|
||||
pname:imageExtent.depth is not a multiple of the compressed texel block
|
||||
depth then (pname:imageExtent.depth + pname:imageOffset.z) must: equal the
|
||||
image subresource depth. This allows the last compressed texel block of the
|
||||
image in each non-multiple dimension to be included as a source or
|
||||
destination of the copy.
|
||||
|
||||
|
||||
[[copies-imagescaling]]
|
||||
|
@ -495,9 +496,9 @@ Each element of pname:pRegions is a structure defined as:
|
|||
include::../structs/VkImageResolve.txt[]
|
||||
|
||||
* pname:srcSubresource and pname:dstSubresource are
|
||||
slink:VkImageSubresourceLayers structures specifying the subresources of
|
||||
the images used for the source and destination image data, respectively.
|
||||
Resolve of depth/stencil images is not supported.
|
||||
slink:VkImageSubresourceLayers structures specifying the image
|
||||
subresources of the images used for the source and destination image
|
||||
data, respectively. Resolve of depth/stencil images is not supported.
|
||||
* pname:srcOffset and pname:dstOffset select the initial x, y, and z
|
||||
offsets in texels of the sub-regions of the source and destination image
|
||||
data.
|
||||
|
|
|
@ -85,7 +85,7 @@ include::../structs/VkLayerProperties.txt[]
|
|||
in the slink:VkInstanceCreateInfo and slink:VkDeviceCreateInfo
|
||||
structures passed to flink:vkCreateInstance and flink:vkCreateDevice,
|
||||
respectively, to enable this layer for an instance or device.
|
||||
* pname:apiVersion is the {apiname} version the layer was written to,
|
||||
* pname:specVersion is the {apiname} version the layer was written to,
|
||||
encoded as described in the <<fundamentals-versionnum,API Version
|
||||
Numbers and Semantics>> section.
|
||||
* pname:implementationVersion is the version of this layer. It is an
|
||||
|
|
|
@ -14,6 +14,17 @@ across implementations. A minimum set of format features are guaranteed, but
|
|||
others must: be explicitly queried before use to ensure they are supported
|
||||
by the implementation.
|
||||
|
||||
[NOTE]
|
||||
.Note on extensibility
|
||||
====
|
||||
The features and limits are reported via basic structures (that is
|
||||
slink:VkPhysicalDeviceFeatures and slink:VkPhysicalDeviceLimits).
|
||||
It is expected that when new features or limits are added in a future
|
||||
{apiname} version, new structure(s) and entry point(s) will be added as
|
||||
necessary to query these. New functionality added by
|
||||
<<extended-functionality-extensions,extensions>> is not expected to
|
||||
modify the core feature and limit structures.
|
||||
====
|
||||
|
||||
[[features-features]]
|
||||
== Features
|
||||
|
@ -169,8 +180,10 @@ following features:
|
|||
* [[features-features-depthBiasClamp]] pname:depthBiasClamp indicates
|
||||
whether depth bias clamping is supported. If this feature is not
|
||||
enabled, the pname:depthBiasClamp member of the
|
||||
sname:VkPipelineRasterizationStateCreateInfo structure must: be set to
|
||||
0.0.
|
||||
sname:VkPipelineRasterizationStateCreateInfo structure must: be set
|
||||
to 0.0 unless the VK_DYNAMIC_STATE_DEPTH_BIAS dynamic state is enabled,
|
||||
and the pname:depthBiasClamp parameter to fname:vkCmdSetDepthBias must:
|
||||
be set to 0.0.
|
||||
* [[features-features-fillModeNonSolid]] pname:fillModeNonSolid indicates
|
||||
whether point and wireframe fill modes are supported. If this feature is
|
||||
not enabled, the ename:VK_POLYGON_MODE_POINT and
|
||||
|
@ -186,8 +199,10 @@ following features:
|
|||
* [[features-features-wideLines]] pname:wideLines indicates whether lines
|
||||
with width other than 1.0 are supported. If this feature is not enabled,
|
||||
the pname:lineWidth member of the
|
||||
sname:VkPipelineRasterizationStateCreateInfo structure must: be set to
|
||||
1.0. When this feature is supported, the range and granularity of
|
||||
sname:VkPipelineRasterizationStateCreateInfo structure must: be set
|
||||
to 1.0 unless the VK_DYNAMIC_STATE_LINE_WIDTH dynamic state is enabled,
|
||||
and the pname:lineWidth parameter to fname:vkCmdSetLineWidth must: be set
|
||||
to 1.0. When this feature is supported, the range and granularity of
|
||||
supported line widths are indicated by the pname:lineWidthRange and
|
||||
pname:lineWidthGranularity members of the sname:VkPhysicalDeviceLimits
|
||||
structure, respectively.
|
||||
|
@ -904,13 +919,15 @@ properties of the physical device:
|
|||
pname:maxComputeWorkGroupInvocations is the maximum total number of
|
||||
compute shader invocations in a single local workgroup. The product of
|
||||
the X, Y, and Z sizes as specified by the code:LocalSize execution mode
|
||||
in shader modules must: be less than or equal to this limit.
|
||||
in shader modules and by the object decorated by the code:WorkgroupSize
|
||||
decoration must: be less than or equal to this limit.
|
||||
* [[features-limits-maxComputeWorkGroupSize]]
|
||||
pname:maxComputeWorkGroupSize[3] is the maximum size of a local compute
|
||||
workgroup, per dimension. These three values represent the maximum
|
||||
local workgroup size in the X, Y, and Z dimensions, respectively. The
|
||||
pname:x, pname:y, and pname:z sizes specified by the code:LocalSize
|
||||
execution mode in shader modules must: be less than or equal to the
|
||||
execution mode and by the object decorated by the code:WorkgroupSize
|
||||
decoration in shader modules must: be less than or equal to the
|
||||
corresponding limit.
|
||||
* [[features-limits-subPixelPrecisionBits]] pname:subPixelPrecisionBits is
|
||||
the number of bits of subpixel precision in framebuffer coordinates
|
||||
|
@ -3669,9 +3686,9 @@ include::../structs/VkImageFormatProperties.txt[]
|
|||
depth and stencil component, both the depth and stencil limits must: be
|
||||
satisfied.
|
||||
* pname:maxResourceSize is the maximum total image size in bytes,
|
||||
inclusive of all subresources. Implementations may: have an address
|
||||
space limit on total size of a resource, which is advertised by this
|
||||
property. pname:maxResourceSize must: be at least 2^31^.
|
||||
inclusive of all image subresources. Implementations may: have an
|
||||
address space limit on total size of a resource, which is advertised by
|
||||
this property. pname:maxResourceSize must: be at least 2^31^.
|
||||
|
||||
[NOTE]
|
||||
.Note
|
||||
|
|
|
@ -888,12 +888,11 @@ code:LocalInvocationID::
|
|||
|
||||
This variable contains the location of the current compute shader invocation
|
||||
within the local workgroup. The range of possible values for each component
|
||||
of LocalInvocationID range from zero through the size of the workgroup (as
|
||||
defined by code:LocalSize) in that dimension minus one. If the size of the
|
||||
workgroup in a particular dimension is one, then
|
||||
LocalInvocationID in that dimension will be zero. That is, if the workgroup
|
||||
is effectively two-dimensional, then pname:LocalInvocationID.z will be zero,
|
||||
and if the workgroup is one-dimensional, then both
|
||||
of LocalInvocationID range from zero through the size of the workgroup in that
|
||||
dimension minus one. If the size of the workgroup in a particular dimension is
|
||||
one, then LocalInvocationID in that dimension will be zero. That is, if the
|
||||
workgroup is effectively two-dimensional, then pname:LocalInvocationID.z will
|
||||
be zero, and if the workgroup is one-dimensional, then both
|
||||
pname:LocalInvocationID.y and pname:LocalInvocationID.z will be zero.
|
||||
+
|
||||
The code:LocalInvocationID decoration is only supported in compute shaders.
|
||||
|
@ -915,6 +914,22 @@ The code:NumWorkGroups decoration is only supported in compute shaders.
|
|||
code:NumWorkGroups must: be declared as a three-component vector of 32-bit
|
||||
integers.
|
||||
|
||||
code:WorkgroupSize::
|
||||
|
||||
The code:WorkgroupSize decoration can: be applied to declare an object
|
||||
representing the dimensions of a local workgroup in a compute shader. If this
|
||||
is done, it must: be applied to a code:uvec3 specialization constant or a
|
||||
code:uvec3 constant.
|
||||
+
|
||||
If a specialization constant or a constant is decorated with the
|
||||
code:WorkgroupSize decoration, this must: take precedence over any execution
|
||||
mode set for code:LocalSize.
|
||||
+
|
||||
The code:WorkgroupSize decoration is only supported in compute shaders.
|
||||
+
|
||||
code:WorkgroupSize must: be declared as a three-component vector of 32-bit
|
||||
integers.
|
||||
|
||||
code:PatchVertices::
|
||||
|
||||
An input variable decorated with code:PatchVertices in the tessellation
|
||||
|
|
|
@ -52,13 +52,6 @@ include::../structs/VkAllocationCallbacks.txt[]
|
|||
|
||||
include::../validity/structs/VkAllocationCallbacks.txt[]
|
||||
|
||||
An allocator indicates an error condition by returning `NULL` from
|
||||
pname:pfnAllocation or pname:pfnReallocation. If this occurs, the
|
||||
implementation should: treat it as a run time error and should: report
|
||||
ename:VK_ERROR_OUT_OF_HOST_MEMORY at the appropriate time for the
|
||||
command in which the condition was detected, as described in
|
||||
<<fundamentals-returncodes>>.
|
||||
|
||||
The type of pname:pfnAllocation is:
|
||||
|
||||
include::../funcpointers/PFN_vkAllocationFunction.txt[]
|
||||
|
@ -73,10 +66,37 @@ include::../funcpointers/PFN_vkAllocationFunction.txt[]
|
|||
specifying the scope of the lifetime of the allocation, as described
|
||||
<<memory-host-allocation-scope,here>>.
|
||||
|
||||
pname:pfnAllocation must: either return `NULL` (in case of allocation
|
||||
failure or if pname:size is zero) or a valid pointer to a memory allocation
|
||||
containing at least pname:size bytes, and with the pointer value being a
|
||||
multiple of pname:alignment.
|
||||
[[vkAllocationFunction_return_rules]]
|
||||
If pname:pfnAllocation is unable to allocate the requested memory,
|
||||
it must: return `NULL`. If the allocation was successful, it must: return a
|
||||
valid pointer to memory allocation containing at least pname:size bytes, and
|
||||
with the pointer value being a multiple of pname:alignment.
|
||||
|
||||
[NOTE]
|
||||
====
|
||||
Correct Vulkan operation cannot be assumed if the application doesn't
|
||||
follow these rules.
|
||||
|
||||
For example, pname:pfnAllocation (or pname:pfnReallocation) could cause
|
||||
termination of running Vulkan instance(s) on a failed allocation for
|
||||
debugging purposes, either directly or indirectly. In these circumstances,
|
||||
it cannot be assumed that any part of any affected VkInstance objects are
|
||||
going to operate correctly (even flink:vkDestroyInstance), and the
|
||||
application must ensure it cleans up properly via other means (e.g.
|
||||
process termination).
|
||||
====
|
||||
|
||||
If pname:pfnAllocation returns `NULL`, and if the implementation is unable
|
||||
to continue correct processing of the current command without the requested
|
||||
allocation, it must: treat this as a run-time error, and generate
|
||||
ename:VK_ERROR_OUT_OF_HOST_MEMORY at the appropriate time for the command
|
||||
in which the condition was detected, as described in
|
||||
<<fundamentals-errorcodes, Return Codes>>.
|
||||
|
||||
If the implementation is able to continue correct processing of the current
|
||||
command without the requested allocation, then it may: do so, and must:
|
||||
not generate ename:VK_ERROR_OUT_OF_HOST_MEMORY as a result of this failed
|
||||
allocation.
|
||||
|
||||
The type of pname:pfnReallocation is:
|
||||
|
||||
|
@ -94,21 +114,31 @@ include::../funcpointers/PFN_vkReallocationFunction.txt[]
|
|||
specifying the scope of the lifetime of the allocation, as described
|
||||
<<memory-host-allocation-scope,here>>.
|
||||
|
||||
pname:pfnReallocation must: alter the size of the allocation
|
||||
pname:pOriginal, either by shrinking or growing it, to accommodate the new
|
||||
pname:size.
|
||||
pname:pfnReallocation must: return an allocation with enough space for
|
||||
pname:size bytes, and the contents of the original allocation from bytes
|
||||
zero to latexmath:[$\min(\textrm{original size, new size})-1$] must: be
|
||||
preserved in the returned allocation. If pname:size is larger than the old
|
||||
size, the contents of the additional space are undefined. If satisfying
|
||||
these requirements involves creating a new allocation, then the old
|
||||
allocation should: be freed.
|
||||
|
||||
If pname:pOriginal is `NULL`, then pname:pfnReallocation must: behave
|
||||
similarly to tlink:PFN_vkAllocationFunction. If pname:size is zero, then
|
||||
pname:pfnReallocation must: behave similarly to tlink:PFN_vkFreeFunction.
|
||||
The contents of the original allocation from bytes zero to
|
||||
latexmath:[$\min(\textrm{original size, new size})-1$] must: be
|
||||
preserved in the new allocation. If the new allocation is larger than the
|
||||
old allocation, then the contents of the additional space are undefined.
|
||||
If pname:pOriginal is non-`NULL`, pname:alignment must: be equal to the
|
||||
originally requested alignment. If satisfying these requirements involves
|
||||
creating a new allocation, then the old allocation must: be freed. If this
|
||||
function fails, it must: return `NULL` and not free the old allocation.
|
||||
equivalently to a call to tlink:PFN_vkAllocationFunction with the same
|
||||
parameter values (without pname:pOriginal).
|
||||
|
||||
If pname:size is zero, then pname:pfnReallocation must: behave
|
||||
equivalently to a call to tlink:PFN_vkFreeFunction with the same
|
||||
pname:pUserData parameter value, and pname:pMemory equal to pname:pOriginal.
|
||||
|
||||
If pname:pOriginal is non-`NULL`, the implementation must: ensure that
|
||||
pname:alignment is equal to the pname:alignment used to originally allocate
|
||||
pname:pOriginal.
|
||||
|
||||
If this function fails and pname:pOriginal is non-`NULL` the application
|
||||
must: not free the old allocation.
|
||||
|
||||
pname:pfnReallocation must: follow the same <<vkAllocationFunction_return_rules,
|
||||
rules for return values as tname:PFN_vkAllocationFunction>>.
|
||||
|
||||
The type of pname:pfnFree is:
|
||||
|
||||
|
@ -121,8 +151,8 @@ include::../funcpointers/PFN_vkFreeFunction.txt[]
|
|||
|
||||
pname:pMemory may: be `NULL`, which the callback must: handle safely. If
|
||||
pname:pMemory is non-`NULL`, it must: be a pointer previously allocated by
|
||||
pname:pfnAllocation or pname:pfnReallocation and must: be freed by the
|
||||
function.
|
||||
pname:pfnAllocation or pname:pfnReallocation. The application should: free
|
||||
this memory.
|
||||
|
||||
The type of pname:pfnInternalAllocation is:
|
||||
|
||||
|
@ -246,7 +276,7 @@ If an allocator is provided to a ftext:vkCreate* command, a _compatible_
|
|||
allocator must: be provided to the corresponding ftext:vkDestroy* command.
|
||||
Two sname:VkAllocationCallbacks structures are compatible if memory created
|
||||
with pname:pfnAllocation or pname:pfnReallocation in each can: be freed with
|
||||
pname:pfnReallocation or pname:pfnFree in the other. An allocator mustnot:
|
||||
pname:pfnReallocation or pname:pfnFree in the other. An allocator must: not
|
||||
be provided to a ftext:vkDestroy* command if an allocator was not provided
|
||||
to the corresponding ftext:vkCreate* command.
|
||||
|
||||
|
@ -262,7 +292,7 @@ If pname:pfnAllocation or pname:pfnReallocation fail, the implementation
|
|||
may: fail object creation and/or generate an
|
||||
ename:VK_ERROR_OUT_OF_HOST_MEMORY error, as appropriate.
|
||||
|
||||
Allocation callbacks mustnot: call any {apiname} commands.
|
||||
Allocation callbacks must: not call any {apiname} commands.
|
||||
|
||||
The following sets of rules define when an implementation is permitted to
|
||||
call the allocator callbacks.
|
||||
|
@ -431,7 +461,7 @@ include::../enums/VkMemoryPropertyFlagBits.txt[]
|
|||
memory is always host coherent.
|
||||
** if pname:propertyFlags has the
|
||||
ename:VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT bit set, the memory type
|
||||
only allows device access to the memory. Memory types mustnot: have
|
||||
only allows device access to the memory. Memory types must: not have
|
||||
both ename:VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT and
|
||||
ename:VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT set. Additionally,
|
||||
the object's backing memory may: be provided by the implementation
|
||||
|
|
|
@ -537,7 +537,7 @@ latexmath:[$c$] are determined by:
|
|||
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
|
||||
where latexmath:[$A(lmn)$] denotes the area in framebuffer coordinates of
|
||||
the triangle with vertices latexmath:[$l$], latexmath:[$n$], and
|
||||
the triangle with vertices latexmath:[$l$], latexmath:[$m$], and
|
||||
latexmath:[$n$].
|
||||
|
||||
Denote an associated datum at latexmath:[$p_a$], latexmath:[$p_b$], or
|
||||
|
|
|
@ -227,7 +227,7 @@ multiple ways:
|
|||
|
||||
* Multiple attachments being assigned the same image view as part of
|
||||
framebuffer creation.
|
||||
* Attachments using distinct image views that correspond to the same
|
||||
* Attachments using distinct image views that correspond to the same image
|
||||
subresource of an image.
|
||||
* Attachments using views of distinct image subresources which are bound
|
||||
to overlapping memory.
|
||||
|
|
|
@ -111,11 +111,14 @@ These bitfields have the following meanings:
|
|||
* ename:VK_BUFFER_CREATE_SPARSE_BINDING_BIT indicates that the buffer will
|
||||
be backed using sparse memory binding.
|
||||
* ename:VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT indicates that the buffer
|
||||
can: be partially backed using sparse memory binding.
|
||||
can: be partially backed using sparse memory binding. Buffers
|
||||
created with this flag must: also be created with the
|
||||
ename:VK_BUFFER_CREATE_SPARSE_BINDING_BIT flag.
|
||||
* ename:VK_BUFFER_CREATE_SPARSE_ALIASED_BIT indicates that the buffer will
|
||||
be backed using sparse memory binding with memory ranges that might also
|
||||
simultaneously be backing another buffer (or another portion of the same
|
||||
buffer).
|
||||
buffer). Buffers created with this flag must: also be created
|
||||
with the ename:VK_BUFFER_CREATE_SPARSE_BINDING_BIT flag.
|
||||
|
||||
See <<sparsememory-sparseresourcefeatures,Sparse Resource Features>> and
|
||||
<<features-features,Physical Device Features>> for details of the sparse
|
||||
|
@ -273,7 +276,7 @@ out in memory in row-major order, possibly with some padding on each row).
|
|||
access this image (ignored if pname:sharingMode is not
|
||||
ename:VK_SHARING_MODE_CONCURRENT).
|
||||
* pname:initialLayout selects the initial elink:VkImageLayout state of all
|
||||
subresources of the image. See <<resources-image-layouts,Image
|
||||
image subresources of the image. See <<resources-image-layouts,Image
|
||||
Layouts>>. pname:initialLayout must: be ename:VK_IMAGE_LAYOUT_UNDEFINED
|
||||
or ename:VK_IMAGE_LAYOUT_PREINITIALIZED.
|
||||
|
||||
|
@ -352,18 +355,20 @@ These bitfields have the following meanings:
|
|||
* ename:VK_IMAGE_CREATE_SPARSE_BINDING_BIT indicates that the image will
|
||||
be backed using sparse memory binding.
|
||||
* ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT indicates that the image can:
|
||||
be partially backed using sparse memory binding.
|
||||
be partially backed using sparse memory binding. Images created with
|
||||
this flag must: also be created with the
|
||||
ename:VK_IMAGE_CREATE_SPARSE_BINDING_BIT flag.
|
||||
* ename:VK_IMAGE_CREATE_SPARSE_ALIASED_BIT indicates that the image will
|
||||
be backed using sparse memory binding with memory ranges that might also
|
||||
simultaneously be backing another image (or another portion of the same
|
||||
image). Sparse images created with this flag must: also be created with
|
||||
the ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT.
|
||||
image). Images created with this flag must: also be created with the
|
||||
ename:VK_IMAGE_CREATE_SPARSE_BINDING_BIT flag
|
||||
|
||||
If any of these three bits are set,
|
||||
ename:VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT mustnot: also be set.
|
||||
|
||||
See <<sparsememory-sparseresourcefeatures,Sparse Resource Features>> and
|
||||
<<sparsememory-physicalfeatures,Sparse Physical Device Featuers>> for
|
||||
<<sparsememory-physicalfeatures,Sparse Physical Device Features>> for
|
||||
more details.
|
||||
|
||||
* ename:VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT indicates that the image can:
|
||||
|
@ -373,15 +378,15 @@ more details.
|
|||
be used to create a slink:VkImageView of type
|
||||
ename:VK_IMAGE_VIEW_TYPE_CUBE or ename:VK_IMAGE_VIEW_TYPE_CUBE_ARRAY.
|
||||
|
||||
The layout of a subresource (mipLevel/arrayLayer) of an image created with
|
||||
linear tiling is queried by calling:
|
||||
The layout of an image subresource (mipLevel/arrayLayer) of an image created
|
||||
with linear tiling is queried by calling:
|
||||
|
||||
include::../protos/vkGetImageSubresourceLayout.txt[]
|
||||
|
||||
* pname:device is the logical device that owns the image.
|
||||
* pname:image is the image whose layout is being queried.
|
||||
* pname:pSubresource is a pointer to a slink:VkImageSubresource structure
|
||||
selecting a specific image for the subresource.
|
||||
selecting a specific image for the image subresource.
|
||||
* pname:pLayout points to a slink:VkSubresourceLayout structure in which
|
||||
the layout is returned.
|
||||
|
||||
|
@ -398,15 +403,15 @@ include::../structs/VkImageSubresource.txt[]
|
|||
|
||||
include::../validity/structs/VkImageSubresource.txt[]
|
||||
|
||||
Information about the layout of the subresource is returned in a
|
||||
Information about the layout of the image subresource is returned in a
|
||||
sname:VkSubresourceLayout structure:
|
||||
|
||||
include::../structs/VkSubresourceLayout.txt[]
|
||||
|
||||
* pname:offset is the byte offset from the start of the image where the
|
||||
subresource begins.
|
||||
* pname:size is the size in bytes of the subresource. pname:size includes
|
||||
any extra memory that is required based on pname:rowPitch.
|
||||
image subresource begins.
|
||||
* pname:size is the size in bytes of the image subresource. pname:size
|
||||
includes any extra memory that is required based on pname:rowPitch.
|
||||
* pname:rowPitch describes the number of bytes between each row of texels
|
||||
in an image.
|
||||
* pname:arrayPitch describes the number of bytes between each array layer
|
||||
|
@ -417,15 +422,15 @@ include::../structs/VkSubresourceLayout.txt[]
|
|||
include::../validity/structs/VkSubresourceLayout.txt[]
|
||||
|
||||
For images created with linear tiling, pname:rowPitch, pname:arrayPitch and
|
||||
pname:depthPitch describe the layout of the subresource in linear memory.
|
||||
For uncompressed formats, pname:rowPitch is the number of bytes between
|
||||
texels with the same x coordinate in adjacent rows (y coordinates differ by
|
||||
one). pname:arrayPitch is the number of bytes between texels with the same x
|
||||
and y coordinate in adjacent array layers of the image (array layer values
|
||||
differ by one). pname:depthPitch is the number of bytes between texels with
|
||||
the same x and y coordinate in adjacent slices of a 3D image (z coordinates
|
||||
differ by one). Expressed as an addressing formula, the starting byte of a
|
||||
texel in the subresource has address:
|
||||
pname:depthPitch describe the layout of the image subresource in linear
|
||||
memory. For uncompressed formats, pname:rowPitch is the number of bytes
|
||||
between texels with the same x coordinate in adjacent rows (y coordinates
|
||||
differ by one). pname:arrayPitch is the number of bytes between texels with
|
||||
the same x and y coordinate in adjacent array layers of the image (array
|
||||
layer values differ by one). pname:depthPitch is the number of bytes between
|
||||
texels with the same x and y coordinate in adjacent slices of a 3D image (z
|
||||
coordinates differ by one). Expressed as an addressing formula, the starting
|
||||
byte of a texel in the image subresource has address:
|
||||
|
||||
[source,c]
|
||||
---------------------------------------------------
|
||||
|
@ -443,7 +448,6 @@ adjacent slices of a 3D image.
|
|||
---------------------------------------------------
|
||||
// (x,y,z,layer) are in compressed texel block coordinates
|
||||
address(x,y,z,layer) = layer*arrayPitch + z*depthPitch + y*rowPitch + x*compressedTexelBlockByteSize + offset;
|
||||
|
||||
---------------------------------------------------
|
||||
|
||||
pname:arrayPitch is undefined for images that were not created as arrays.
|
||||
|
@ -453,11 +457,11 @@ For color formats, the pname:aspectMask member of sname:VkImageSubresource
|
|||
must: be ename:VK_IMAGE_ASPECT_COLOR_BIT. For depth/stencil formats,
|
||||
pname:aspect must: be either ename:VK_IMAGE_ASPECT_DEPTH_BIT or
|
||||
ename:VK_IMAGE_ASPECT_STENCIL_BIT. On implementations that store depth and
|
||||
stencil aspects separately, querying each of these subresource layouts will
|
||||
return a different pname:offset and pname:size representing the region of
|
||||
memory used for that aspect. On implementations that store depth and stencil
|
||||
aspects interleaved, the same pname:offset and pname:size are returned and
|
||||
represent the interleaved memory allocation.
|
||||
stencil aspects separately, querying each of these image subresource layouts
|
||||
will return a different pname:offset and pname:size representing the region
|
||||
of memory used for that aspect. On implementations that store depth and
|
||||
stencil aspects interleaved, the same pname:offset and pname:size are
|
||||
returned and represent the interleaved memory allocation.
|
||||
|
||||
To destroy an image, call:
|
||||
|
||||
|
@ -476,18 +480,19 @@ include::../validity/protos/vkDestroyImage.txt[]
|
|||
|
||||
Images are stored in implementation-dependent opaque layouts in memory.
|
||||
Implementations may: support several opaque layouts, and the layout used at
|
||||
any given time is determined by the elink:VkImageLayout state of the
|
||||
any given time is determined by the elink:VkImageLayout state of the image
|
||||
subresource. Each layout has limitations on what kinds of operations are
|
||||
supported for subresources using the layout. Applications have control over
|
||||
which layout each image subresource uses, and can: transition an image
|
||||
supported for image subresources using the layout. Applications have control
|
||||
over which layout each image subresource uses, and can: transition an image
|
||||
subresource from one layout to another. Transitions can: happen with an
|
||||
image memory barrier, included as part of a fname:vkCmdPipelineBarrier or a
|
||||
fname:vkCmdWaitEvents command buffer command (see
|
||||
<<synchronization-image-memory-barrier>>), or as part of a subpass
|
||||
dependency within a render pass (see sname:VkSubpassDependency). The image
|
||||
layout state is per-subresource, and separate subresources of the same image
|
||||
can: be in different layouts at the same time with one exception - depth and
|
||||
stencil aspects of a given subresource must: always be in the same layout.
|
||||
layout state is per-image subresource, and separate image subresources of
|
||||
the same image can: be in different layouts at the same time with one
|
||||
exception - depth and stencil aspects of a given image subresource must:
|
||||
always be in the same layout.
|
||||
|
||||
[NOTE]
|
||||
.Note
|
||||
|
@ -497,13 +502,13 @@ memory. For example, an image with a layout of
|
|||
ename:VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL may: provide optimal
|
||||
performance for use as a color attachment, but be unsupported for use in
|
||||
transfer commands. Applications can: transition an image subresource from
|
||||
one layout to another in order to achieve optimal performance when the
|
||||
one layout to another in order to achieve optimal performance when the image
|
||||
subresource is used for multiple kinds of operations. After initialization,
|
||||
applications need not use any layout other than the general layout, though
|
||||
this may: produce suboptimal performance on some implementations.
|
||||
====
|
||||
|
||||
Upon creation, all subresources of an image are initially in the same
|
||||
Upon creation, all image subresources of an image are initially in the same
|
||||
layout, where that layout is selected by the
|
||||
sname:VkImageCreateInfo::pname:initialLayout member. The pname:initialLayout
|
||||
must: be either ename:VK_IMAGE_LAYOUT_UNDEFINED or
|
||||
|
@ -514,13 +519,14 @@ from this layout will preserve that data. If it is
|
|||
ename:VK_IMAGE_LAYOUT_UNDEFINED, then the contents of the data are
|
||||
considered to be undefined, and the transition away from this layout is not
|
||||
guaranteed to preserve that data. For either of these initial layouts, any
|
||||
subresources must: be transitioned to another layout before they are
|
||||
image subresources must: be transitioned to another layout before they are
|
||||
accessed by the device.
|
||||
|
||||
Host access to image memory is only well-defined for images created with
|
||||
ename:VK_IMAGE_TILING_LINEAR tiling and for subresources of those images
|
||||
which are currently in either the ename:VK_IMAGE_LAYOUT_PREINITIALIZED or
|
||||
ename:VK_IMAGE_LAYOUT_GENERAL layout.
|
||||
ename:VK_IMAGE_TILING_LINEAR tiling and for image subresources of those
|
||||
images which are currently in either the
|
||||
ename:VK_IMAGE_LAYOUT_PREINITIALIZED or ename:VK_IMAGE_LAYOUT_GENERAL
|
||||
layout.
|
||||
|
||||
The set of image layouts consists of:
|
||||
|
||||
|
@ -545,32 +551,32 @@ The type(s) of device access supported by each layout are:
|
|||
* ename:VK_IMAGE_LAYOUT_GENERAL: Supports all types of device access.
|
||||
* ename:VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL: must: only be used as a
|
||||
color or resolve attachment in a sname:VkFramebuffer. This layout is
|
||||
valid only for subresources of images created with the
|
||||
valid only for image subresources of images created with the
|
||||
ename:VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT usage bit enabled.
|
||||
* ename:VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL: must: only be
|
||||
used as a depth/stencil attachment in a sname:VkFramebuffer. This layout
|
||||
is valid only for subresources of images created with the
|
||||
is valid only for image subresources of images created with the
|
||||
ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT usage bit enabled.
|
||||
* ename:VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL: must: only be
|
||||
used as a read-only depth/stencil attachment in a sname:VkFramebuffer
|
||||
and/or as a read-only image in a shader (which can: be read as a sampled
|
||||
image, combined image/sampler and/or input attachment). This layout is
|
||||
valid only for subresources of images created with the
|
||||
valid only for image subresources of images created with the
|
||||
ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT usage bit enabled.
|
||||
* ename:VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL: must: only be used as a
|
||||
read-only image in a shader (which can: be read as a sampled image,
|
||||
combined image/sampler and/or input attachment). This layout is valid
|
||||
only for subresources of images created with the
|
||||
only for image subresources of images created with the
|
||||
ename:VK_IMAGE_USAGE_SAMPLED_BIT or
|
||||
ename:VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT usage bit enabled.
|
||||
* ename:VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL: must: only be used as a
|
||||
source image of a transfer command (see the definition of
|
||||
<<synchronization-transfer,ename:VK_PIPELINE_STAGE_TRANSFER_BIT>>).
|
||||
This layout is valid only for subresources of images created with the
|
||||
ename:VK_IMAGE_USAGE_TRANSFER_SRC_BIT usage bit enabled.
|
||||
This layout is valid only for image subresources of images created with
|
||||
the ename:VK_IMAGE_USAGE_TRANSFER_SRC_BIT usage bit enabled.
|
||||
* ename:VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL: must: only be used as a
|
||||
destination image of a transfer command. This layout is valid only for
|
||||
subresources of images created with the
|
||||
image subresources of images created with the
|
||||
ename:VK_IMAGE_USAGE_TRANSFER_DST_BIT usage bit enabled.
|
||||
|
||||
For each mechanism of accessing an image in the API, there is a parameter or
|
||||
|
@ -586,12 +592,12 @@ subresources that are accessed must: all match the layout specified via the
|
|||
API controlling those accesses.
|
||||
|
||||
The image layout of each image subresource must: be well-defined at each
|
||||
point in the subresource's lifetime. This means that when performing a
|
||||
layout transition on the subresource, the old layout value must: either
|
||||
equal the current layout of the subresource (at the time the transition
|
||||
executes), or else be ename:VK_IMAGE_LAYOUT_UNDEFINED (implying that the
|
||||
contents of the subresource need not be preserved). The new layout used in a
|
||||
transition mustnot: be ename:VK_IMAGE_LAYOUT_UNDEFINED or
|
||||
point in the image subresource's lifetime. This means that when performing a
|
||||
layout transition on the image subresource, the old layout value must:
|
||||
either equal the current layout of the image subresource (at the time the
|
||||
transition executes), or else be ename:VK_IMAGE_LAYOUT_UNDEFINED (implying
|
||||
that the contents of the image subresource need not be preserved). The new
|
||||
layout used in a transition mustnot: be ename:VK_IMAGE_LAYOUT_UNDEFINED or
|
||||
ename:VK_IMAGE_LAYOUT_PREINITIALIZED.
|
||||
|
||||
|
||||
|
@ -756,8 +762,6 @@ baseArrayLayer = 0 +
|
|||
arrayLayers = 1
|
||||
|========================================
|
||||
|
||||
|
||||
|
||||
The pname:subresourceRange member is of type sname:VkImageSubresourceRange
|
||||
and is defined as:
|
||||
|
||||
|
@ -775,11 +779,12 @@ include::../structs/VkImageSubresourceRange.txt[]
|
|||
include::../validity/structs/VkImageSubresourceRange.txt[]
|
||||
|
||||
The number of mip-map levels and array layers must: be a subset of the
|
||||
subresources in the image. If an application wants to use all mip-levels or
|
||||
layers in an image after the pname:baseMipLevel or pname:baseArrayLayer, it
|
||||
can: set pname:levelCount and pname:layerCount to the special values
|
||||
ename:VK_REMAINING_MIP_LEVELS and ename:VK_REMAINING_ARRAY_LAYERS without
|
||||
knowing the exact number of mip-levels or layers.
|
||||
image subresources in the image. If an application wants to use all
|
||||
mip-levels or layers in an image after the pname:baseMipLevel or
|
||||
pname:baseArrayLayer, it can: set pname:levelCount and pname:layerCount to
|
||||
the special values ename:VK_REMAINING_MIP_LEVELS and
|
||||
ename:VK_REMAINING_ARRAY_LAYERS without knowing the exact number of
|
||||
mip-levels or layers.
|
||||
|
||||
For cube and cube array image views, the layers of the image view starting
|
||||
at pname:baseArrayLayer correspond to faces in the order +X, -X, +Y, -Y, +Z,
|
||||
|
@ -810,8 +815,8 @@ imageView is used for depth reads (i.e. using a floating-point sampler or
|
|||
input attachment in the shader) or stencil reads (i.e. using an unsigned
|
||||
integer sampler or input attachment in the shader). When an imageView of a
|
||||
depth/stencil image is used as a depth/stencil framebuffer attachment, the
|
||||
pname:aspectMask is ignored and both depth and stencil subresources are
|
||||
used.
|
||||
pname:aspectMask is ignored and both depth and stencil image subresources
|
||||
are used.
|
||||
|
||||
The pname:components member is defined as follows:
|
||||
|
||||
|
@ -1038,14 +1043,20 @@ memory offset in the same sname:VkDeviceMemory object, where one of the
|
|||
resources is a buffer or a linear image and the other is an optimal image,
|
||||
and the following:
|
||||
|
||||
resourceA.end = resourceA.memoryOffset + resourceA.size - 1
|
||||
resourceA.endPage = resourceA.end & ~(bufferImageGranularity-1)
|
||||
resourceB.start = resourceB.memoryOffset
|
||||
resourceB.startPage = resourceB.start & ~(bufferImageGranularity-1)
|
||||
[source,c]
|
||||
---------------------------------------------------
|
||||
resourceA.end = resourceA.memoryOffset + resourceA.size - 1
|
||||
resourceA.endPage = resourceA.end & ~(bufferImageGranularity-1)
|
||||
resourceB.start = resourceB.memoryOffset
|
||||
resourceB.startPage = resourceB.start & ~(bufferImageGranularity-1)
|
||||
---------------------------------------------------
|
||||
|
||||
The following property must: hold:
|
||||
|
||||
resourceA.endPage < resourceB.startPage
|
||||
[source,c]
|
||||
---------------------------------------------------
|
||||
resourceA.endPage < resourceB.startPage
|
||||
---------------------------------------------------
|
||||
|
||||
That is, the end of the first resource (A) and the beginning of the second
|
||||
resource (B) must: be on separate ``pages'' of size
|
||||
|
@ -1071,10 +1082,10 @@ they can: be accessed from queues. The supported sharing modes are:
|
|||
include::../enums/VkSharingMode.txt[]
|
||||
|
||||
* ename:VK_SHARING_MODE_EXCLUSIVE specifies that access to any range or
|
||||
subresource of the object will be exclusive to a single queue family at
|
||||
a time.
|
||||
image subresource of the object will be exclusive to a single queue
|
||||
family at a time.
|
||||
* ename:VK_SHARING_MODE_CONCURRENT specifies that concurrent access to any
|
||||
range or subresource of the object from multiple queue families is
|
||||
range or image subresource of the object from multiple queue families is
|
||||
supported.
|
||||
|
||||
[NOTE]
|
||||
|
@ -1084,13 +1095,13 @@ ename:VK_SHARING_MODE_CONCURRENT may: result in lower performance access to
|
|||
the buffer or image than ename:VK_SHARING_MODE_EXCLUSIVE.
|
||||
====
|
||||
|
||||
Ranges of buffers and subresources of image objects created using
|
||||
Ranges of buffers and image subresources of image objects created using
|
||||
ename:VK_SHARING_MODE_EXCLUSIVE must: only be accessed by queues in the same
|
||||
queue family at any given time. In order for a different queue family to be
|
||||
able to interpret the memory contents of a range or subresource, the
|
||||
application must: transfer exclusive ownership of the range or subresource
|
||||
between the source and destination queue families with the following
|
||||
sequence of operations:
|
||||
able to interpret the memory contents of a range or image subresource, the
|
||||
application must: transfer exclusive ownership of the range or image
|
||||
subresource between the source and destination queue families with the
|
||||
following sequence of operations:
|
||||
|
||||
1. Release exclusive ownership from the source queue family to the
|
||||
destination queue family.
|
||||
|
@ -1099,8 +1110,8 @@ sequence of operations:
|
|||
3. Acquire exclusive ownership for the destination queue family from the
|
||||
source queue family.
|
||||
|
||||
To release exclusive ownership of a range of a buffer or subresource of an
|
||||
image object, the application must: execute a buffer or image memory
|
||||
To release exclusive ownership of a range of a buffer or image subresource
|
||||
of an image object, the application must: execute a buffer or image memory
|
||||
barrier, respectively (see slink:VkBufferMemoryBarrier and
|
||||
slink:VkImageMemoryBarrier) on a queue from the source queue family. The
|
||||
pname:srcQueueFamilyIndex parameter of the barrier must: be set to the
|
||||
|
@ -1119,14 +1130,15 @@ ename:VK_IMAGE_LAYOUT_UNDEFINED or ename:VK_IMAGE_LAYOUT_PREINITIALIZED
|
|||
before being used on the first queue. This layout transition can: either be
|
||||
accomplished by an image memory barrier or by use in a render pass instance.
|
||||
|
||||
Once a queue family has used a range or subresource of an
|
||||
Once a queue family has used a range or image subresource of an
|
||||
ename:VK_SHARING_MODE_EXCLUSIVE resource, its contents are undefined to
|
||||
other queue families unless ownership is transferred. The contents may: also
|
||||
become undefined for other reasons, e.g. as a result of writes to an image
|
||||
subresource that aliases the same memory. A queue family can: take ownership
|
||||
of a range or subresource without an ownership transfer in the same way as
|
||||
for a resource that was just created, however doing so means any contents
|
||||
written by other queue families or via incompatible aliases are undefined.
|
||||
of a range or image subresource without an ownership transfer in the same
|
||||
way as for a resource that was just created, however doing so means any
|
||||
contents written by other queue families or via incompatible aliases are
|
||||
undefined.
|
||||
|
||||
|
||||
[[resources-memory-aliasing]]
|
||||
|
@ -1152,14 +1164,15 @@ time.
|
|||
====
|
||||
|
||||
When an opaque, non-ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT image is
|
||||
bound to an aliased range, all subresources of the image _overlap_ the
|
||||
range. When a linear image is bound to an aliased range, the subresources
|
||||
that (according to the image's advertised layout) include bytes from the
|
||||
aliased range overlap the range. When a
|
||||
ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT image has sparse image blocks bound
|
||||
to an aliased range, only subresources including those sparse image blocks
|
||||
overlap the range, and when the memory bound to the image's miptail overlaps
|
||||
an aliased range all subresources in the miptail overlap the range.
|
||||
bound to an aliased range, all image subresources of the image _overlap_ the
|
||||
range. When a linear image is bound to an aliased range, the image
|
||||
subresources that (according to the image's advertised layout) include bytes
|
||||
from the aliased range overlap the range. When a
|
||||
ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT image has sparse image blocks
|
||||
bound to an aliased range, only image subresources including those sparse
|
||||
image blocks overlap the range, and when the memory bound to the image's
|
||||
miptail overlaps an aliased range all image subresources in the miptail
|
||||
overlap the range.
|
||||
|
||||
Buffers, and linear image subresources in either the
|
||||
ename:VK_IMAGE_LAYOUT_PREINITIALIZED or ename:VK_IMAGE_LAYOUT_GENERAL
|
||||
|
@ -1182,22 +1195,22 @@ scheme. If the first alias is not host-accessible, then the bytes affected
|
|||
are those overlapped by the image subresources that were written. If the
|
||||
second alias is a host-accessible subresource, the affected bytes become
|
||||
undefined. If the second alias is a not host-accessible, all sparse image
|
||||
blocks (for sparse partially-resident images) or all subresources (for
|
||||
blocks (for sparse partially-resident images) or all image subresources (for
|
||||
non-sparse image and fully resident sparse images) that overlap the affected
|
||||
bytes become undefined.
|
||||
|
||||
If any subresources are made undefined due to writes to an alias, then each
|
||||
of those subresources must: have its layout transitioned from
|
||||
If any image subresources are made undefined due to writes to an alias, then
|
||||
each of those image subresources must: have its layout transitioned from
|
||||
ename:VK_IMAGE_LAYOUT_UNDEFINED to a valid layout before it is used, or from
|
||||
ename:VK_IMAGE_LAYOUT_PREINITIALIZED if the memory has been written by the
|
||||
host. If any sparse blocks of a sparse image have been made undefined, then
|
||||
only the subresources containing them must: be transitioned.
|
||||
only the image subresources containing them must: be transitioned.
|
||||
|
||||
Use of an overlapping range by two aliases must: be separated by a memory
|
||||
dependency using the appropriate access types if at least one of those uses
|
||||
performs writes, whether the aliases interpret memory consistently or not.
|
||||
If buffer or image memory barriers are used, the scope of the barrier must:
|
||||
contain the entire range and/or set of subresources that overlap.
|
||||
contain the entire range and/or set of image subresources that overlap.
|
||||
|
||||
If two aliasing image views are used in the same framebuffer, then the
|
||||
render pass must: declare the attachments using the
|
||||
|
|
|
@ -373,12 +373,11 @@ and processed by the compute shader in the current compute pipeline. A
|
|||
workgroup is a collection of shader invocations that execute the same
|
||||
shader, potentially in parallel. Compute shaders execute in _global
|
||||
workgroups_ which are divided into a number of _local workgroups_ with a size
|
||||
that can: be set by assigning a value to the code:LocalSize execution mode
|
||||
either in the shader code or via
|
||||
<<pipelines-specialization-constants,Specialization Constants>>. An
|
||||
invocation within a local workgroup can: share data with other members of
|
||||
the local workgroup through shared variables and issue memory and control
|
||||
flow barriers to synchronize with other members of the local workgroup.
|
||||
that can: be set by assigning a value to the code:LocalSize execution mode or
|
||||
via an object decorated by the code:WorkgroupSize decoration. An invocation
|
||||
within a local workgroup can: share data with other members of the local
|
||||
workgroup through shared variables and issue memory and control flow barriers
|
||||
to synchronize with other members of the local workgroup.
|
||||
|
||||
|
||||
[[shaders-interpolation-decorations]]
|
||||
|
|
|
@ -50,8 +50,8 @@ feature enables specified in slink:VkPhysicalDeviceFeatures.
|
|||
formats that non-sparse usage supports, and supports both
|
||||
ename:VK_IMAGE_TILING_OPTIMAL and ename:VK_IMAGE_TILING_LINEAR tiling.
|
||||
|
||||
* _Sparse Residency_ builds on the pname:sparseBinding feature. It
|
||||
includes the following capabilities:
|
||||
* _Sparse Residency_ builds on (and requires) the pname:sparseBinding
|
||||
feature. It includes the following capabilities:
|
||||
|
||||
** Resources do not have to be completely bound to memory before use on
|
||||
the device.
|
||||
|
@ -161,10 +161,10 @@ sname:VkImage objects created with the
|
|||
ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT bit allow specific rectangular
|
||||
regions of the image called sparse image blocks to be bound to specific
|
||||
ranges of memory. This allows the application to manage residency at either
|
||||
subresource or sparse image block granularity. Each subresource (outside of
|
||||
the <<sparsememory-miptail,mip tail>>) starts on a sparse block boundary and
|
||||
has dimensions that are integer multiples of the corresponding dimensions of
|
||||
the sparse image block.
|
||||
image subresource or sparse image block granularity. Each image subresource
|
||||
(outside of the <<sparsememory-miptail,mip tail>>) starts on a sparse block
|
||||
boundary and has dimensions that are integer multiples of the corresponding
|
||||
dimensions of the sparse image block.
|
||||
|
||||
[NOTE]
|
||||
.Note
|
||||
|
@ -229,14 +229,16 @@ endif::implementation-guide[]
|
|||
[[sparsememory-miptail]]
|
||||
=== Mip Tail Regions
|
||||
|
||||
Sparse images created using ename:VK_IMAGE_CREATE_SPARSE_BINDING_BIT have no
|
||||
specific mapping of image region or subresource to memory offset defined, so
|
||||
the entire image can: be thought of as a linear opaque address region.
|
||||
However, images created with ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT do
|
||||
have a prescribed sparse image block layout, and hence each subresource must:
|
||||
start on a sparse block boundary. Within each array layer, the set of
|
||||
mip-levels that have a smaller size than the sparse block size in bytes are
|
||||
grouped together into a _mip tail region_.
|
||||
Sparse images created using ename:VK_IMAGE_CREATE_SPARSE_BINDING_BIT
|
||||
(without also using ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT) have no
|
||||
specific mapping of image region or image subresource to memory offset
|
||||
defined, so the entire image can: be thought of as a linear opaque address
|
||||
region. However, images created with
|
||||
ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT do have a prescribed sparse image
|
||||
block layout, and hence each image subresource must: start on a sparse block
|
||||
boundary. Within each array layer, the set of mip-levels that have a smaller
|
||||
size than the sparse block size in bytes are grouped together into a _mip
|
||||
tail region_.
|
||||
|
||||
If the ename:VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT flag is present in
|
||||
the pname:flags member of sname:VkSparseImageFormatProperties, for the
|
||||
|
@ -817,11 +819,11 @@ and flink:vkCreateImage for details of the resource creation APIs.
|
|||
.Note
|
||||
====
|
||||
Specifying ename:VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT or
|
||||
ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT implies specifying
|
||||
ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT requires specifying
|
||||
ename:VK_BUFFER_CREATE_SPARSE_BINDING_BIT or
|
||||
ename:VK_IMAGE_CREATE_SPARSE_BINDING_BIT, respectively, as well. This means
|
||||
that resources created with either (or both) flag(s) can: be used with the
|
||||
sparse binding command (fname:vkQueueBindSparse).
|
||||
that resources must: be created with the appropriate etext:*_SPARSE_BINDING_BIT
|
||||
to be used with the sparse binding command (fname:vkQueueBindSparse).
|
||||
====
|
||||
|
||||
|
||||
|
@ -888,8 +890,8 @@ include::../structs/VkSparseImageMemoryRequirements.txt[]
|
|||
pname:formatProperties.imageGranularity values do not match the
|
||||
standard sparse image block dimension corresponding to the image's
|
||||
pixel format.
|
||||
* pname:imageMipTailFirstLod is the first mip level at which subresources
|
||||
are included in the mip tail region.
|
||||
* pname:imageMipTailFirstLod is the first mip level at which image
|
||||
subresources are included in the mip tail region.
|
||||
* pname:imageMipTailSize is the memory size (in bytes) of the mip tail
|
||||
region. If pname:formatProperties.flags contains
|
||||
ename:VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT, this is the size of the
|
||||
|
@ -1084,8 +1086,7 @@ the binding range must: be within the range
|
|||
latexmath:[$[0, {\mathit{VkMemoryRequirements}::\mathit{size}})$].
|
||||
|
||||
Memory is bound to sname:VkBuffer objects created with the
|
||||
ename:VK_BUFFER_CREATE_SPARSE_BINDING_BIT or
|
||||
ename:VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT flags using the following
|
||||
ename:VK_BUFFER_CREATE_SPARSE_BINDING_BIT flag using the following
|
||||
structure:
|
||||
|
||||
include::../structs/VkSparseBufferMemoryBindInfo.txt[]
|
||||
|
@ -1099,8 +1100,7 @@ include::../structs/VkSparseBufferMemoryBindInfo.txt[]
|
|||
include::../validity/structs/VkSparseBufferMemoryBindInfo.txt[]
|
||||
|
||||
Memory is bound to opaque regions of sname:VkImage objects created with the
|
||||
ename:VK_IMAGE_CREATE_SPARSE_BINDING_BIT or
|
||||
ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT flags using the following
|
||||
ename:VK_IMAGE_CREATE_SPARSE_BINDING_BIT flag using the following
|
||||
structure:
|
||||
|
||||
include::../structs/VkSparseImageOpaqueMemoryBindInfo.txt[]
|
||||
|
@ -1160,14 +1160,14 @@ Where sname:VkSparseImageMemoryBind is defined as follows:
|
|||
include::../structs/VkSparseImageMemoryBind.txt[]
|
||||
|
||||
* pname:subresource is the aspectMask and region of interest in the image.
|
||||
* pname:offset are the coordinates of the first texel within the
|
||||
* pname:offset are the coordinates of the first texel within the image
|
||||
subresource to bind.
|
||||
* pname:extent is the size in texels of the region within the subresource
|
||||
to bind. The extent must: be a multiple of the sparse image block
|
||||
dimensions, except when binding sparse image blocks along the edge of a
|
||||
subresource it can: instead be such that any coordinate of
|
||||
* pname:extent is the size in texels of the region within the image
|
||||
subresource to bind. The extent must: be a multiple of the sparse image
|
||||
block dimensions, except when binding sparse image blocks along the edge
|
||||
of a image subresource it can: instead be such that any coordinate of
|
||||
latexmath:[$\mathit{offset} + \mathit{extent}$] equals the corresponding
|
||||
dimensions of the subresource.
|
||||
dimensions of the image subresource.
|
||||
* pname:memory is the sname:VkDeviceMemory object that the sparse image
|
||||
blocks of the image are bound to. If pname:memory is sname:VK_NULL_HANDLE,
|
||||
the sparse image blocks are unbound.
|
||||
|
|
|
@ -606,11 +606,11 @@ all resources owned by the device.
|
|||
<<synchronization-buffer-memory-barrier,Buffer>> and
|
||||
<<synchronization-image-memory-barrier,image memory barriers>> apply to the
|
||||
buffer range(s) or image subresource(s) included in the command. For
|
||||
accesses to a byte of a buffer or subresource of an image to be synchronized
|
||||
between two sets of commands, the byte or subresource must: be included in
|
||||
both the first and second halves of the dependencies described above, but
|
||||
need not be included in each step of the execution dependency chain between
|
||||
them.
|
||||
accesses to a byte of a buffer or image subresource of an image to be
|
||||
synchronized between two sets of commands, the byte or image subresource
|
||||
must: be included in both the first and second halves of the dependencies
|
||||
described above, but need not be included in each step of the execution
|
||||
dependency chain between them.
|
||||
|
||||
An execution dependency chain is _by-region_ if all stages in all
|
||||
dependencies in the chain are framebuffer-space pipeline stages, and if the
|
||||
|
@ -725,7 +725,7 @@ subset of the bits of the corresponding mask in that self-dependency. If the
|
|||
self-dependency has ename:VK_DEPENDENCY_BY_REGION_BIT set, then so must: the
|
||||
pipeline barrier. Pipeline barriers within a render pass instance can: only
|
||||
be types sname:VkMemoryBarrier or sname:VkImageMemoryBarrier. If a
|
||||
sname:VkImageMemoryBarrier is used, the image and subresource range
|
||||
sname:VkImageMemoryBarrier is used, the image and image subresource range
|
||||
specified in the barrier must: be a subset of one of the image views used by
|
||||
the framebuffer in the current subpass. Additionally, pname:oldLayout must:
|
||||
be equal to pname:newLayout, and both the pname:srcQueueFamilyIndex and
|
||||
|
@ -1083,14 +1083,14 @@ include::../validity/structs/VkBufferMemoryBarrier.txt[]
|
|||
|
||||
The image memory barrier type is specified with an instance of the
|
||||
sname:VkImageMemoryBarrier structure. This type of barrier only applies to
|
||||
memory accesses involving a specific subresource range of the specified
|
||||
image object. That is, a memory dependency formed from a image memory
|
||||
barrier is
|
||||
memory accesses involving a specific image subresource range of the
|
||||
specified image object. That is, a memory dependency formed from a image
|
||||
memory barrier is
|
||||
<<synchronization-execution-and-memory-dependencies-types,scoped>> to the
|
||||
specified subresources of the image. It is also used to perform a layout
|
||||
transition for an image subresource range, or to transfer ownership of an
|
||||
image subresource range from one queue family to another as described in the
|
||||
<<resources-sharing,Resource Sharing>> section.
|
||||
specified image subresources of the image. It is also used to perform a
|
||||
layout transition for an image subresource range, or to transfer ownership
|
||||
of an image subresource range from one queue family to another as described
|
||||
in the <<resources-sharing,Resource Sharing>> section.
|
||||
|
||||
sname:VkImageMemoryBarrier has the following definition:
|
||||
|
||||
|
@ -1119,8 +1119,8 @@ The members of sname:VkImageMemoryBarrier have the following meanings:
|
|||
the barrier.
|
||||
* pname:subresourceRange describes an area of the backing memory for
|
||||
pname:image (see <<resources-image-views>> for the description of
|
||||
sname:VkImageSubresourceRange), as well as the set of subresources whose
|
||||
image layouts are modified.
|
||||
sname:VkImageSubresourceRange), as well as the set of image subresources
|
||||
whose image layouts are modified.
|
||||
|
||||
include::../validity/structs/VkImageMemoryBarrier.txt[]
|
||||
|
||||
|
|
|
@ -1238,7 +1238,7 @@ An implementation may: round latexmath:[$N$] up to the nearest supported
|
|||
sampling rate.
|
||||
|
||||
If latexmath:[$N=1$], sampling is isotropic. If latexmath:[$N>1$], sampling
|
||||
is anistropic.
|
||||
is anisotropic.
|
||||
|
||||
|
||||
[[textures-level-of-detail-operation]]
|
||||
|
@ -1414,9 +1414,9 @@ l & = \operatorname{clamp}( \operatorname{RNE}(a), 0, layerCount - 1 ) + baseArr
|
|||
\end{align*}
|
||||
++++++++++++++++++++++++
|
||||
|
||||
where pname:layerCount is the number of layers in the subresource range of
|
||||
the image view, pname:baseArrayLayer is the first layer from the subresource
|
||||
range, and where:
|
||||
where pname:layerCount is the number of layers in the image subresource
|
||||
range of the image view, pname:baseArrayLayer is the first layer from the
|
||||
subresource range, and where:
|
||||
|
||||
[latexmath]
|
||||
++++++++++++++++++++++++
|
||||
|
|
|
@ -20,18 +20,22 @@ pname:image::
|
|||
A handle to the image about which to retrieve information.
|
||||
|
||||
pname:pSubresource::
|
||||
A pointer to a structure describing the subresource.
|
||||
A pointer to a structure describing the image subresource.
|
||||
|
||||
pname:pLayout::
|
||||
A pointer to a structure that will receive information about the subresource.
|
||||
A pointer to a structure that will receive information about the image
|
||||
subresource.
|
||||
|
||||
Description
|
||||
-----------
|
||||
|
||||
fname:vkGetImageSubresourceLayout returns information about the memory layout of a subresource of an image.
|
||||
pname:device is a handle to the device that owns pname:image, which is the image about which to retrieve
|
||||
information. A description of the subresource is passsed to the command through an instance of the slink:VkImageSubresource
|
||||
structure, the address of which is passed in pname:pSubresource. The definition of slink:VkImageSubresource is:
|
||||
fname:vkGetImageSubresourceLayout returns information about the memory
|
||||
layout of a image subresource of an image. pname:device is a handle to the
|
||||
device that owns pname:image, which is the image about which to retrieve
|
||||
information. A description of the image subresource is passsed to the
|
||||
command through an instance of the slink:VkImageSubresource structure, the
|
||||
address of which is passed in pname:pSubresource. The definition of
|
||||
slink:VkImageSubresource is:
|
||||
|
||||
include::../structs/VkImageSubresource.txt[]
|
||||
|
||||
|
|
|
@ -37,7 +37,7 @@ pname:pImageFormatProperties::
|
|||
Description
|
||||
-----------
|
||||
|
||||
fname:vkGetPhysicalDeviceImageFormatProperties queries the physical device specified in pnane:physicalDevice
|
||||
fname:vkGetPhysicalDeviceImageFormatProperties queries the physical device specified in pname:physicalDevice
|
||||
about its support for images as if they had been created using the remaining parameters to the command.
|
||||
These parameters, pname:format, pname:type, pname:tiling and pname:usage have the same meanings as they do
|
||||
in the slink:VkImageCreateInfo structure, the definition of which is:
|
||||
|
|
|
@ -128,7 +128,7 @@ slink:VkSparseImageMemoryBind is:
|
|||
include::../structs/VkSparseImageMemoryBind.txt[]
|
||||
|
||||
The pname:subresource member of slink:VkSparseImageMemoryBind specifies the
|
||||
subresource within the image to bind memory to. The pname:offset and
|
||||
image subresource within the image to bind memory to. The pname:offset and
|
||||
pname:extent members specify the region within the image subresource
|
||||
to bind memory to. pname:offset and pname:extent are instances of the
|
||||
slink:VkOffset3D and slink:VkExtent3D structures, respectively, and are
|
||||
|
|
|
@ -548,6 +548,8 @@ existing API Specification.
|
|||
| heterogeneous | heterogenous | More common
|
||||
| homogeneous | homogenous | More common
|
||||
| host endianness | platform endianness |
|
||||
| image subresource | subresource
|
||||
| Except when referring to *host-accessible subresources*
|
||||
| implementation| system |
|
||||
| indices | indexes | More common
|
||||
| it is | it's | In general, avoid contractions.
|
||||
|
@ -596,7 +598,7 @@ allowed, each choice still must: have well-defined behavior.
|
|||
| allowed, could, generally, might, probably, perhaps
|
||||
| And all other such terms of choice. Use _may:_ or _can:_
|
||||
depending on the context.
|
||||
| may: or maynot: | Just use _may:_.
|
||||
| may: or may: not | Just use _may:_.
|
||||
|=====
|
||||
|
||||
|
||||
|
|
|
@ -24,11 +24,11 @@ endif::doctype-manpage[]
|
|||
* The union of all source regions, and the union of all destination regions, specified by the elements of pname:pRegions, mustnot: overlap in memory
|
||||
* pname:srcImage must: use a format that supports ename:VK_FORMAT_FEATURE_BLIT_SRC_BIT, which is indicated by sname:VkFormatProperties::pname:linearTilingFeatures (for linear tiled images) or sname:VkFormatProperties::pname:optimalTilingFeatures (for optimally tiled images) - as returned by fname:vkGetPhysicalDeviceFormatProperties
|
||||
* pname:srcImage must: have been created with ename:VK_IMAGE_USAGE_TRANSFER_SRC_BIT usage flag
|
||||
* pname:srcImageLayout must: specify the layout of the subresources of pname:srcImage specified in pname:pRegions at the time this command is executed on a sname:VkDevice
|
||||
* pname:srcImageLayout must: specify the layout of the image subresources of pname:srcImage specified in pname:pRegions at the time this command is executed on a sname:VkDevice
|
||||
* pname:srcImageLayout must: be either of ename:VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL or ename:VK_IMAGE_LAYOUT_GENERAL
|
||||
* pname:dstImage must: use a format that supports ename:VK_FORMAT_FEATURE_BLIT_DST_BIT, which is indicated by sname:VkFormatProperties::pname:linearTilingFeatures (for linear tiled images) or sname:VkFormatProperties::pname:optimalTilingFeatures (for optimally tiled images) - as returned by fname:vkGetPhysicalDeviceFormatProperties
|
||||
* pname:dstImage must: have been created with ename:VK_IMAGE_USAGE_TRANSFER_DST_BIT usage flag
|
||||
* pname:dstImageLayout must: specify the layout of the subresources of pname:dstImage specified in pname:pRegions at the time this command is executed on a sname:VkDevice
|
||||
* pname:dstImageLayout must: specify the layout of the image subresources of pname:dstImage specified in pname:pRegions at the time this command is executed on a sname:VkDevice
|
||||
* pname:dstImageLayout must: be either of ename:VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL or ename:VK_IMAGE_LAYOUT_GENERAL
|
||||
* The sample count of pname:srcImage and pname:dstImage must: both be equal to ename:VK_SAMPLE_COUNT_1_BIT
|
||||
* If either of pname:srcImage or pname:dstImage was created with a signed integer elink:VkFormat, the other must: also have been created with a signed integer elink:VkFormat
|
||||
|
|
|
@ -18,9 +18,9 @@ endif::doctype-manpage[]
|
|||
* pname:rangeCount must: be greater than `0`
|
||||
* Each of pname:commandBuffer and pname:image must: have been created, allocated or retrieved from the same sname:VkDevice
|
||||
* pname:image must: have been created with ename:VK_IMAGE_USAGE_TRANSFER_DST_BIT usage flag
|
||||
* pname:imageLayout must: specify the layout of the subresource ranges of pname:image specified in pname:pRanges at the time this command is executed on a sname:VkDevice
|
||||
* pname:imageLayout must: specify the layout of the image subresource ranges of pname:image specified in pname:pRanges at the time this command is executed on a sname:VkDevice
|
||||
* pname:imageLayout must: be either of ename:VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL or ename:VK_IMAGE_LAYOUT_GENERAL
|
||||
* The image range of any given element of pname:pRanges must: be a subresource range that is contained within pname:image
|
||||
* The image range of any given element of pname:pRanges must: be a image subresource range that is contained within pname:image
|
||||
ifndef::doctype-manpage[]
|
||||
********************************************************************************
|
||||
endif::doctype-manpage[]
|
||||
|
|
|
@ -18,9 +18,9 @@ endif::doctype-manpage[]
|
|||
* pname:rangeCount must: be greater than `0`
|
||||
* Each of pname:commandBuffer and pname:image must: have been created, allocated or retrieved from the same sname:VkDevice
|
||||
* pname:image must: have been created with ename:VK_IMAGE_USAGE_TRANSFER_DST_BIT usage flag
|
||||
* pname:imageLayout must: specify the layout of the subresource ranges of pname:image specified in pname:pRanges at the time this command is executed on a sname:VkDevice
|
||||
* pname:imageLayout must: specify the layout of the image subresource ranges of pname:image specified in pname:pRanges at the time this command is executed on a sname:VkDevice
|
||||
* pname:imageLayout must: be either of ename:VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL or ename:VK_IMAGE_LAYOUT_GENERAL
|
||||
* The image range of any given element of pname:pRanges must: be a subresource range that is contained within pname:image
|
||||
* The image range of any given element of pname:pRanges must: be a image subresource range that is contained within pname:image
|
||||
ifndef::doctype-manpage[]
|
||||
********************************************************************************
|
||||
endif::doctype-manpage[]
|
||||
|
|
|
@ -23,7 +23,7 @@ endif::doctype-manpage[]
|
|||
* pname:srcBuffer must: have been created with ename:VK_BUFFER_USAGE_TRANSFER_SRC_BIT usage flag
|
||||
* pname:dstImage must: have been created with ename:VK_IMAGE_USAGE_TRANSFER_DST_BIT usage flag
|
||||
* pname:dstImage must: have a sample count equal to ename:VK_SAMPLE_COUNT_1_BIT
|
||||
* pname:dstImageLayout must: specify the layout of the subresources of pname:dstImage specified in pname:pRegions at the time this command is executed on a sname:VkDevice
|
||||
* pname:dstImageLayout must: specify the layout of the image subresources of pname:dstImage specified in pname:pRegions at the time this command is executed on a sname:VkDevice
|
||||
* pname:dstImageLayout must: be either of ename:VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL or ename:VK_IMAGE_LAYOUT_GENERAL
|
||||
ifndef::doctype-manpage[]
|
||||
********************************************************************************
|
||||
|
|
|
@ -22,10 +22,10 @@ endif::doctype-manpage[]
|
|||
* The destination region specified by a given element of pname:pRegions must: be a region that is contained within pname:dstImage
|
||||
* The union of all source regions, and the union of all destination regions, specified by the elements of pname:pRegions, mustnot: overlap in memory
|
||||
* pname:srcImage must: have been created with ename:VK_IMAGE_USAGE_TRANSFER_SRC_BIT usage flag
|
||||
* pname:srcImageLayout must: specify the layout of the subresources of pname:srcImage specified in pname:pRegions at the time this command is executed on a sname:VkDevice
|
||||
* pname:srcImageLayout must: specify the layout of the image subresources of pname:srcImage specified in pname:pRegions at the time this command is executed on a sname:VkDevice
|
||||
* pname:srcImageLayout must: be either of ename:VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL or ename:VK_IMAGE_LAYOUT_GENERAL
|
||||
* pname:dstImage must: have been created with ename:VK_IMAGE_USAGE_TRANSFER_DST_BIT usage flag
|
||||
* pname:dstImageLayout must: specify the layout of the subresources of pname:dstImage specified in pname:pRegions at the time this command is executed on a sname:VkDevice
|
||||
* pname:dstImageLayout must: specify the layout of the image subresources of pname:dstImage specified in pname:pRegions at the time this command is executed on a sname:VkDevice
|
||||
* pname:dstImageLayout must: be either of ename:VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL or ename:VK_IMAGE_LAYOUT_GENERAL
|
||||
* The elink:VkFormat of each of pname:srcImage and pname:dstImage must: be compatible, as defined <<copies-images-format-compatibility, below>>
|
||||
* The sample count of pname:srcImage and pname:dstImage must: match
|
||||
|
|
|
@ -22,7 +22,7 @@ endif::doctype-manpage[]
|
|||
* The union of all source regions, and the union of all destination regions, specified by the elements of pname:pRegions, mustnot: overlap in memory
|
||||
* pname:srcImage must: have been created with ename:VK_IMAGE_USAGE_TRANSFER_SRC_BIT usage flag
|
||||
* pname:srcImage must: have a sample count equal to ename:VK_SAMPLE_COUNT_1_BIT
|
||||
* pname:srcImageLayout must: specify the layout of the subresources of pname:srcImage specified in pname:pRegions at the time this command is executed on a sname:VkDevice
|
||||
* pname:srcImageLayout must: specify the layout of the image subresources of pname:srcImage specified in pname:pRegions at the time this command is executed on a sname:VkDevice
|
||||
* pname:srcImageLayout must: be either of ename:VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL or ename:VK_IMAGE_LAYOUT_GENERAL
|
||||
* pname:dstBuffer must: have been created with ename:VK_BUFFER_USAGE_TRANSFER_DST_BIT usage flag
|
||||
ifndef::doctype-manpage[]
|
||||
|
|
|
@ -23,9 +23,9 @@ endif::doctype-manpage[]
|
|||
* The union of all source regions, and the union of all destination regions, specified by the elements of pname:pRegions, mustnot: overlap in memory
|
||||
* pname:srcImage must: have a sample count equal to any valid sample count value other than ename:VK_SAMPLE_COUNT_1_BIT
|
||||
* pname:dstImage must: have a sample count equal to ename:VK_SAMPLE_COUNT_1_BIT
|
||||
* pname:srcImageLayout must: specify the layout of the subresources of pname:srcImage specified in pname:pRegions at the time this command is executed on a sname:VkDevice
|
||||
* pname:srcImageLayout must: specify the layout of the image subresources of pname:srcImage specified in pname:pRegions at the time this command is executed on a sname:VkDevice
|
||||
* pname:srcImageLayout must: be either of ename:VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL or ename:VK_IMAGE_LAYOUT_GENERAL
|
||||
* pname:dstImageLayout must: specify the layout of the subresources of pname:dstImage specified in pname:pRegions at the time this command is executed on a sname:VkDevice
|
||||
* pname:dstImageLayout must: specify the layout of the image subresources of pname:dstImage specified in pname:pRegions at the time this command is executed on a sname:VkDevice
|
||||
* pname:dstImageLayout must: be either of ename:VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL or ename:VK_IMAGE_LAYOUT_GENERAL
|
||||
* If pname:dstImage was created with pname:tiling equal to ename:VK_IMAGE_TILING_LINEAR, pname:dstImage must: have been created with a pname:format that supports being a color attachment, as specified by the ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures returned by fname:vkGetPhysicalDeviceFormatProperties
|
||||
* If pname:dstImage was created with pname:tiling equal to ename:VK_IMAGE_TILING_OPTIMAL, pname:dstImage must: have been created with a pname:format that supports being a color attachment, as specified by the ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT flag in sname:VkFormatProperties::pname:optimalTilingFeatures returned by fname:vkGetPhysicalDeviceFormatProperties
|
||||
|
|
|
@ -11,7 +11,7 @@ endif::doctype-manpage[]
|
|||
* pname:pCreateInfo must: be a pointer to a valid sname:VkBufferCreateInfo structure
|
||||
* If pname:pAllocator is not `NULL`, pname:pAllocator must: be a pointer to a valid sname:VkAllocationCallbacks structure
|
||||
* pname:pBuffer must: be a pointer to a sname:VkBuffer handle
|
||||
* If the pname:flags member of pname:pCreateInfo includes ename:VK_BUFFER_CREATE_SPARSE_BINDING_BIT or ename:VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT, creating this sname:VkBuffer mustnot: cause the total required sparse memory for all currently valid sparse resources on the device to exceed sname:VkPhysicalDeviceLimits::pname:sparseAddressSpaceSize
|
||||
* If the pname:flags member of pname:pCreateInfo includes ename:VK_BUFFER_CREATE_SPARSE_BINDING_BIT, creating this sname:VkBuffer mustnot: cause the total required sparse memory for all currently valid sparse resources on the device to exceed sname:VkPhysicalDeviceLimits::pname:sparseAddressSpaceSize
|
||||
ifndef::doctype-manpage[]
|
||||
********************************************************************************
|
||||
endif::doctype-manpage[]
|
||||
|
|
|
@ -11,7 +11,7 @@ endif::doctype-manpage[]
|
|||
* pname:pCreateInfo must: be a pointer to a valid sname:VkImageCreateInfo structure
|
||||
* If pname:pAllocator is not `NULL`, pname:pAllocator must: be a pointer to a valid sname:VkAllocationCallbacks structure
|
||||
* pname:pImage must: be a pointer to a sname:VkImage handle
|
||||
* If the pname:flags member of pname:pCreateInfo includes ename:VK_IMAGE_CREATE_SPARSE_BINDING_BIT or ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT, creating this sname:VkImage mustnot: cause the total required sparse memory for all currently valid sparse resources on the device to exceed sname:VkPhysicalDeviceLimits::pname:sparseAddressSpaceSize
|
||||
* If the pname:flags member of pname:pCreateInfo includes ename:VK_IMAGE_CREATE_SPARSE_BINDING_BIT, creating this sname:VkImage mustnot: cause the total required sparse memory for all currently valid sparse resources on the device to exceed sname:VkPhysicalDeviceLimits::pname:sparseAddressSpaceSize
|
||||
ifndef::doctype-manpage[]
|
||||
********************************************************************************
|
||||
endif::doctype-manpage[]
|
||||
|
|
|
@ -19,7 +19,7 @@ endif::doctype-manpage[]
|
|||
* If the <<features-features-sparseBinding,sparse bindings>> feature is not enabled, pname:flags mustnot: contain ename:VK_BUFFER_CREATE_SPARSE_BINDING_BIT
|
||||
* If the <<features-features-sparseResidencyBuffer,sparse buffer residency>> feature is not enabled, pname:flags mustnot: contain ename:VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT
|
||||
* If the <<features-features-sparseResidencyAliased,sparse aliased residency>> feature is not enabled, pname:flags mustnot: contain ename:VK_BUFFER_CREATE_SPARSE_ALIASED_BIT
|
||||
* If pname:flags contains ename:VK_BUFFER_CREATE_SPARSE_ALIASED_BIT, it must: also contain at least one of ename:VK_BUFFER_CREATE_SPARSE_BINDING_BIT or ename:VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT
|
||||
* If pname:flags contains ename:VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT or ename:VK_BUFFER_CREATE_SPARSE_ALIASED_BIT, it must: also contain ename:VK_BUFFER_CREATE_SPARSE_BINDING_BIT
|
||||
ifndef::doctype-manpage[]
|
||||
********************************************************************************
|
||||
endif::doctype-manpage[]
|
||||
|
|
|
@ -63,7 +63,7 @@ endif::doctype-manpage[]
|
|||
* If pname:tiling is ename:VK_IMAGE_TILING_OPTIMAL, and sname:VkFormatProperties::pname:optimalTilingFeatures (as returned by fname:vkGetPhysicalDeviceFormatProperties with the same value of pname:format) does not include ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT, pname:usage mustnot: contain ename:VK_IMAGE_USAGE_STORAGE_BIT
|
||||
* If pname:tiling is ename:VK_IMAGE_TILING_OPTIMAL, and sname:VkFormatProperties::pname:optimalTilingFeatures (as returned by fname:vkGetPhysicalDeviceFormatProperties with the same value of pname:format) does not include ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT, pname:usage mustnot: contain ename:VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT
|
||||
* If pname:tiling is ename:VK_IMAGE_TILING_OPTIMAL, and sname:VkFormatProperties::pname:optimalTilingFeatures (as returned by fname:vkGetPhysicalDeviceFormatProperties with the same value of pname:format) does not include ename:VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT, pname:usage mustnot: contain ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT
|
||||
* If pname:flags contains ename:VK_IMAGE_CREATE_SPARSE_ALIASED_BIT, it must: also contain at least one of ename:VK_IMAGE_CREATE_SPARSE_BINDING_BIT or ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT
|
||||
* If pname:flags contains ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT or ename:VK_IMAGE_CREATE_SPARSE_ALIASED_BIT, it must: also contain ename:VK_IMAGE_CREATE_SPARSE_BINDING_BIT
|
||||
ifndef::doctype-manpage[]
|
||||
********************************************************************************
|
||||
endif::doctype-manpage[]
|
||||
|
|
|
@ -20,7 +20,7 @@ endif::doctype-manpage[]
|
|||
* If pname:image was created with a sharing mode of ename:VK_SHARING_MODE_CONCURRENT, pname:srcQueueFamilyIndex and pname:dstQueueFamilyIndex must: both be ename:VK_QUEUE_FAMILY_IGNORED
|
||||
* If pname:image was created with a sharing mode of ename:VK_SHARING_MODE_EXCLUSIVE, pname:srcQueueFamilyIndex and pname:dstQueueFamilyIndex must: either both be ename:VK_QUEUE_FAMILY_IGNORED, or both be a valid queue family (see <<devsandqueues-queueprops>>)
|
||||
* If pname:image was created with a sharing mode of ename:VK_SHARING_MODE_EXCLUSIVE, and pname:srcQueueFamilyIndex and pname:dstQueueFamilyIndex are valid queue families, at least one of them must: be the same as the family of the queue that will execute this barrier
|
||||
* pname:subresourceRange must: be a valid subresource range for the image (see <<resources-image-views>>)
|
||||
* pname:subresourceRange must: be a valid image subresource range for the image (see <<resources-image-views>>)
|
||||
* If pname:image has a depth/stencil format with both depth and stencil components, then pname:aspectMask member of pname:subresourceRange must: include both ename:VK_IMAGE_ASPECT_DEPTH_BIT and ename:VK_IMAGE_ASPECT_STENCIL_BIT
|
||||
* If either pname:oldLayout or pname:newLayout is ename:VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL then pname:image must: have been created with ename:VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT set
|
||||
* If either pname:oldLayout or pname:newLayout is ename:VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL then pname:image must: have been created with ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT set
|
||||
|
|
|
@ -28,7 +28,7 @@ endif::doctype-manpage[]
|
|||
* If pname:image was created with ename:VK_IMAGE_TILING_OPTIMAL and pname:usage containing ename:VK_IMAGE_USAGE_STORAGE_BIT, pname:format must: be supported for storage images, as specified by the ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT flag in sname:VkFormatProperties::pname:optimalTilingFeatures returned by fname:vkGetPhysicalDeviceFormatProperties
|
||||
* If pname:image was created with ename:VK_IMAGE_TILING_OPTIMAL and pname:usage containing ename:VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT, pname:format must: be supported for color attachments, as specified by the ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT flag in sname:VkFormatProperties::pname:optimalTilingFeatures returned by fname:vkGetPhysicalDeviceFormatProperties
|
||||
* If pname:image was created with ename:VK_IMAGE_TILING_OPTIMAL and pname:usage containing ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT, pname:format must: be supported for depth/stencil attachments, as specified by the ename:VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT flag in sname:VkFormatProperties::pname:optimalTilingFeatures returned by fname:vkGetPhysicalDeviceFormatProperties
|
||||
* pname:subresourceRange must: be a valid subresource range for pname:image (see <<resources-image-views>>)
|
||||
* pname:subresourceRange must: be a valid image subresource range for pname:image (see <<resources-image-views>>)
|
||||
* If pname:image was created with the ename:VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT flag, pname:format must: be compatible with the pname:format used to create pname:image, as defined in <<features-formats-compatibility-classes,Format Compatibility Classes>>
|
||||
* If pname:image was not created with the ename:VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT flag, pname:format must: be identical to the pname:format used to create pname:image
|
||||
* pname:subResourceRange and pname:viewType must: be compatible with the image, as described in the <<resources-image-views-compatibility,table below>>
|
||||
|
|
|
@ -12,7 +12,7 @@ endif::doctype-manpage[]
|
|||
* pname:flags must: be a valid combination of elink:VkSparseMemoryBindFlagBits values
|
||||
* If the <<features-features-sparseResidencyAliased,sparse aliased residency>> feature is not enabled, and if any other resources are bound to ranges of pname:memory, the range of pname:memory being bound mustnot: overlap with those bound ranges
|
||||
* pname:memory and pname:memoryOffset must: match the memory requirements of the calling command's pname:image, as described in section <<resources-association>>
|
||||
* pname:subresource must: be a valid subresource for pname:image (see <<resources-image-views>>)
|
||||
* pname:subresource must: be a valid image subresource for pname:image (see <<resources-image-views>>)
|
||||
* pname:offset.x must: be a multiple of the sparse image block width (sname:VkSparseImageFormatProperties::pname:imageGranularity.width) of the image
|
||||
* pname:extent.width must: either be a multiple of the sparse image block width of the image, or else pname:extent.width + pname:offset.x must: equal the width of the image subresource
|
||||
* pname:offset.y must: be a multiple of the sparse image block height (sname:VkSparseImageFormatProperties::pname:imageGranularity.height) of the image
|
||||
|
|
|
@ -101,7 +101,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
|
|||
<type category="define">// Vulkan 1.0 version number
|
||||
#define <name>VK_API_VERSION_1_0</name> <type>VK_MAKE_VERSION</type>(1, 0, 0)</type> <!-- The patch version here should never be set to anything other than 0 -->
|
||||
<type category="define">// Version of this file
|
||||
#define <name>VK_HEADER_VERSION</name> 9</type>
|
||||
#define <name>VK_HEADER_VERSION</name> 10</type>
|
||||
|
||||
<type category="define">
|
||||
#define <name>VK_DEFINE_HANDLE</name>(object) typedef struct object##_T* object;</type>
|
||||
|
@ -678,7 +678,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
|
|||
<usage>If the <<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-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>
|
||||
</type>
|
||||
<type category="struct" name="VkBufferViewCreateInfo">
|
||||
|
@ -776,7 +776,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
|
|||
<usage>If pname:image was created with a sharing mode of ename:VK_SHARING_MODE_CONCURRENT, pname:srcQueueFamilyIndex and pname:dstQueueFamilyIndex must: both be ename:VK_QUEUE_FAMILY_IGNORED</usage>
|
||||
<usage>If pname:image was created with a sharing mode of ename:VK_SHARING_MODE_EXCLUSIVE, pname:srcQueueFamilyIndex and pname:dstQueueFamilyIndex must: either both be ename:VK_QUEUE_FAMILY_IGNORED, or both be a valid queue family (see <<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>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 either pname:oldLayout or pname:newLayout is ename:VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL then pname:image must: have been created with ename:VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT set</usage>
|
||||
<usage>If either pname:oldLayout or pname:newLayout is ename:VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL then pname:image must: have been created with ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT set</usage>
|
||||
|
@ -848,7 +848,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
|
|||
<usage>If pname:tiling is ename:VK_IMAGE_TILING_OPTIMAL, and sname:VkFormatProperties::pname:optimalTilingFeatures (as returned by fname:vkGetPhysicalDeviceFormatProperties with the same value of pname:format) does not include ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT, pname:usage mustnot: contain ename:VK_IMAGE_USAGE_STORAGE_BIT</usage>
|
||||
<usage>If pname:tiling is ename:VK_IMAGE_TILING_OPTIMAL, and sname:VkFormatProperties::pname:optimalTilingFeatures (as returned by fname:vkGetPhysicalDeviceFormatProperties with the same value of pname:format) does not include ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT, pname:usage mustnot: contain ename:VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT</usage>
|
||||
<usage>If pname:tiling is ename:VK_IMAGE_TILING_OPTIMAL, and sname:VkFormatProperties::pname:optimalTilingFeatures (as returned by fname:vkGetPhysicalDeviceFormatProperties with the same value of pname:format) does not include ename:VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT, pname:usage mustnot: contain ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</usage>
|
||||
<usage>If pname:flags contains ename:VK_IMAGE_CREATE_SPARSE_ALIASED_BIT, it must: also contain at least one of ename:VK_IMAGE_CREATE_SPARSE_BINDING_BIT or ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</usage>
|
||||
<usage>If pname:flags contains ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT or ename:VK_IMAGE_CREATE_SPARSE_ALIASED_BIT, it must: also contain ename:VK_IMAGE_CREATE_SPARSE_BINDING_BIT</usage>
|
||||
</validity>
|
||||
</type>
|
||||
<type category="struct" name="VkSubresourceLayout" returnedonly="true">
|
||||
|
@ -881,7 +881,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
|
|||
<usage>If pname:image was created with ename:VK_IMAGE_TILING_OPTIMAL and pname:usage containing ename:VK_IMAGE_USAGE_STORAGE_BIT, pname:format must: be supported for storage images, as specified by the ename:VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT flag in sname:VkFormatProperties::pname:optimalTilingFeatures returned by fname:vkGetPhysicalDeviceFormatProperties</usage>
|
||||
<usage>If pname:image was created with ename:VK_IMAGE_TILING_OPTIMAL and pname:usage containing ename:VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT, pname:format must: be supported for color attachments, as specified by the ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT flag in sname:VkFormatProperties::pname:optimalTilingFeatures returned by fname:vkGetPhysicalDeviceFormatProperties</usage>
|
||||
<usage>If pname:image was created with ename:VK_IMAGE_TILING_OPTIMAL and pname:usage containing ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT, pname:format must: be supported for depth/stencil attachments, as specified by the ename:VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT flag in sname:VkFormatProperties::pname:optimalTilingFeatures returned by fname:vkGetPhysicalDeviceFormatProperties</usage>
|
||||
<usage>pname:subresourceRange must: be a valid subresource range for pname:image (see <<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 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>
|
||||
|
@ -918,7 +918,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
|
|||
<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>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:extent.width must: either be a multiple of the sparse image block width of the image, or else pname:extent.width + pname:offset.x must: equal the width of the image subresource</usage>
|
||||
<usage>pname:offset.y must: be a multiple of the sparse image block height (sname:VkSparseImageFormatProperties::pname:imageGranularity.height) of the image</usage>
|
||||
|
@ -3372,7 +3372,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
|
|||
<param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
|
||||
<param><type>VkBuffer</type>* <name>pBuffer</name></param>
|
||||
<validity>
|
||||
<usage>If the pname:flags member of pname:pCreateInfo includes ename:VK_BUFFER_CREATE_SPARSE_BINDING_BIT or ename:VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT, creating this sname:VkBuffer mustnot: cause the total required sparse memory for all currently valid sparse resources on the device to exceed sname:VkPhysicalDeviceLimits::pname:sparseAddressSpaceSize</usage>
|
||||
<usage>If the pname:flags member of pname:pCreateInfo includes ename:VK_BUFFER_CREATE_SPARSE_BINDING_BIT, creating this sname:VkBuffer mustnot: cause the total required sparse memory for all currently valid sparse resources on the device to exceed sname:VkPhysicalDeviceLimits::pname:sparseAddressSpaceSize</usage>
|
||||
</validity>
|
||||
</command>
|
||||
<command>
|
||||
|
@ -3411,7 +3411,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
|
|||
<param optional="true">const <type>VkAllocationCallbacks</type>* <name>pAllocator</name></param>
|
||||
<param><type>VkImage</type>* <name>pImage</name></param>
|
||||
<validity>
|
||||
<usage>If the pname:flags member of pname:pCreateInfo includes ename:VK_IMAGE_CREATE_SPARSE_BINDING_BIT or ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT, creating this sname:VkImage mustnot: cause the total required sparse memory for all currently valid sparse resources on the device to exceed sname:VkPhysicalDeviceLimits::pname:sparseAddressSpaceSize</usage>
|
||||
<usage>If the pname:flags member of pname:pCreateInfo includes ename:VK_IMAGE_CREATE_SPARSE_BINDING_BIT, creating this sname:VkImage mustnot: cause the total required sparse memory for all currently valid sparse resources on the device to exceed sname:VkPhysicalDeviceLimits::pname:sparseAddressSpaceSize</usage>
|
||||
</validity>
|
||||
</command>
|
||||
<command>
|
||||
|
@ -4082,10 +4082,10 @@ maintained in the master branch of the Khronos Vulkan Github project.
|
|||
<usage>The destination region specified by a given element of pname:pRegions must: be a region that is contained within pname:dstImage</usage>
|
||||
<usage>The union of all source regions, and the union of all destination regions, specified by the elements of pname:pRegions, mustnot: overlap in memory</usage>
|
||||
<usage>pname:srcImage must: have been created with ename:VK_IMAGE_USAGE_TRANSFER_SRC_BIT usage flag</usage>
|
||||
<usage>pname:srcImageLayout must: specify the layout of the subresources of pname:srcImage specified in pname:pRegions at the time this command is executed on a sname:VkDevice</usage>
|
||||
<usage>pname:srcImageLayout must: specify the layout of the image subresources of pname:srcImage specified in pname:pRegions at the time this command is executed on a sname:VkDevice</usage>
|
||||
<usage>pname:srcImageLayout must: be either of ename:VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL or ename:VK_IMAGE_LAYOUT_GENERAL</usage>
|
||||
<usage>pname:dstImage must: have been created with ename:VK_IMAGE_USAGE_TRANSFER_DST_BIT usage flag</usage>
|
||||
<usage>pname:dstImageLayout must: specify the layout of the subresources of pname:dstImage specified in pname:pRegions at the time this command is executed on a sname:VkDevice</usage>
|
||||
<usage>pname:dstImageLayout must: specify the layout of the image subresources of pname:dstImage specified in pname:pRegions at the time this command is executed on a sname:VkDevice</usage>
|
||||
<usage>pname:dstImageLayout must: be either of ename:VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL or ename:VK_IMAGE_LAYOUT_GENERAL</usage>
|
||||
<usage>The elink:VkFormat of each of pname:srcImage and pname:dstImage must: be compatible, as defined <<copies-images-format-compatibility, below>></usage>
|
||||
<usage>The sample count of pname:srcImage and pname:dstImage must: match</usage>
|
||||
|
@ -4107,11 +4107,11 @@ maintained in the master branch of the Khronos Vulkan Github project.
|
|||
<usage>The union of all source regions, and the union of all destination regions, specified by the elements of pname:pRegions, mustnot: overlap in memory</usage>
|
||||
<usage>pname:srcImage must: use a format that supports ename:VK_FORMAT_FEATURE_BLIT_SRC_BIT, which is indicated by sname:VkFormatProperties::pname:linearTilingFeatures (for linear tiled images) or sname:VkFormatProperties::pname:optimalTilingFeatures (for optimally tiled images) - as returned by fname:vkGetPhysicalDeviceFormatProperties</usage>
|
||||
<usage>pname:srcImage must: have been created with ename:VK_IMAGE_USAGE_TRANSFER_SRC_BIT usage flag</usage>
|
||||
<usage>pname:srcImageLayout must: specify the layout of the subresources of pname:srcImage specified in pname:pRegions at the time this command is executed on a sname:VkDevice</usage>
|
||||
<usage>pname:srcImageLayout must: specify the layout of the image subresources of pname:srcImage specified in pname:pRegions at the time this command is executed on a sname:VkDevice</usage>
|
||||
<usage>pname:srcImageLayout must: be either of ename:VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL or ename:VK_IMAGE_LAYOUT_GENERAL</usage>
|
||||
<usage>pname:dstImage must: use a format that supports ename:VK_FORMAT_FEATURE_BLIT_DST_BIT, which is indicated by sname:VkFormatProperties::pname:linearTilingFeatures (for linear tiled images) or sname:VkFormatProperties::pname:optimalTilingFeatures (for optimally tiled images) - as returned by fname:vkGetPhysicalDeviceFormatProperties</usage>
|
||||
<usage>pname:dstImage must: have been created with ename:VK_IMAGE_USAGE_TRANSFER_DST_BIT usage flag</usage>
|
||||
<usage>pname:dstImageLayout must: specify the layout of the subresources of pname:dstImage specified in pname:pRegions at the time this command is executed on a sname:VkDevice</usage>
|
||||
<usage>pname:dstImageLayout must: specify the layout of the image subresources of pname:dstImage specified in pname:pRegions at the time this command is executed on a sname:VkDevice</usage>
|
||||
<usage>pname:dstImageLayout must: be either of ename:VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL or ename:VK_IMAGE_LAYOUT_GENERAL</usage>
|
||||
<usage>The sample count of pname:srcImage and pname:dstImage must: both be equal to ename:VK_SAMPLE_COUNT_1_BIT</usage>
|
||||
<usage>If either of pname:srcImage or pname:dstImage was created with a signed integer elink:VkFormat, the other must: also have been created with a signed integer elink:VkFormat</usage>
|
||||
|
@ -4135,7 +4135,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
|
|||
<usage>pname:srcBuffer must: have been created with ename:VK_BUFFER_USAGE_TRANSFER_SRC_BIT usage flag</usage>
|
||||
<usage>pname:dstImage must: have been created with ename:VK_IMAGE_USAGE_TRANSFER_DST_BIT usage flag</usage>
|
||||
<usage>pname:dstImage must: have a sample count equal to ename:VK_SAMPLE_COUNT_1_BIT</usage>
|
||||
<usage>pname:dstImageLayout must: specify the layout of the subresources of pname:dstImage specified in pname:pRegions at the time this command is executed on a sname:VkDevice</usage>
|
||||
<usage>pname:dstImageLayout must: specify the layout of the image subresources of pname:dstImage specified in pname:pRegions at the time this command is executed on a sname:VkDevice</usage>
|
||||
<usage>pname:dstImageLayout must: be either of ename:VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL or ename:VK_IMAGE_LAYOUT_GENERAL</usage>
|
||||
</validity>
|
||||
</command>
|
||||
|
@ -4153,7 +4153,7 @@ maintained in the master branch of the Khronos Vulkan Github project.
|
|||
<usage>The union of all source regions, and the union of all destination regions, specified by the elements of pname:pRegions, mustnot: overlap in memory</usage>
|
||||
<usage>pname:srcImage must: have been created with ename:VK_IMAGE_USAGE_TRANSFER_SRC_BIT usage flag</usage>
|
||||
<usage>pname:srcImage must: have a sample count equal to ename:VK_SAMPLE_COUNT_1_BIT</usage>
|
||||
<usage>pname:srcImageLayout must: specify the layout of the subresources of pname:srcImage specified in pname:pRegions at the time this command is executed on a sname:VkDevice</usage>
|
||||
<usage>pname:srcImageLayout must: specify the layout of the image subresources of pname:srcImage specified in pname:pRegions at the time this command is executed on a sname:VkDevice</usage>
|
||||
<usage>pname:srcImageLayout must: be either of ename:VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL or ename:VK_IMAGE_LAYOUT_GENERAL</usage>
|
||||
<usage>pname:dstBuffer must: have been created with ename:VK_BUFFER_USAGE_TRANSFER_DST_BIT usage flag</usage>
|
||||
</validity>
|
||||
|
@ -4201,9 +4201,9 @@ maintained in the master branch of the Khronos Vulkan Github project.
|
|||
<param len="rangeCount">const <type>VkImageSubresourceRange</type>* <name>pRanges</name></param>
|
||||
<validity>
|
||||
<usage>pname:image must: have been created with ename:VK_IMAGE_USAGE_TRANSFER_DST_BIT usage flag</usage>
|
||||
<usage>pname:imageLayout must: specify the layout of the subresource ranges of pname:image specified in pname:pRanges at the time this command is executed on a sname:VkDevice</usage>
|
||||
<usage>pname:imageLayout must: specify the layout of the image subresource ranges of pname:image specified in pname:pRanges at the time this command is executed on a sname:VkDevice</usage>
|
||||
<usage>pname:imageLayout must: be either of ename:VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL or ename:VK_IMAGE_LAYOUT_GENERAL</usage>
|
||||
<usage>The image range of any given element of pname:pRanges must: be a subresource range that is contained within pname:image</usage>
|
||||
<usage>The image range of any given element of pname:pRanges must: be a image subresource range that is contained within pname:image</usage>
|
||||
</validity>
|
||||
</command>
|
||||
<command queues="graphics" renderpass="outside" cmdbufferlevel="primary,secondary">
|
||||
|
@ -4216,9 +4216,9 @@ maintained in the master branch of the Khronos Vulkan Github project.
|
|||
<param len="rangeCount">const <type>VkImageSubresourceRange</type>* <name>pRanges</name></param>
|
||||
<validity>
|
||||
<usage>pname:image must: have been created with ename:VK_IMAGE_USAGE_TRANSFER_DST_BIT usage flag</usage>
|
||||
<usage>pname:imageLayout must: specify the layout of the subresource ranges of pname:image specified in pname:pRanges at the time this command is executed on a sname:VkDevice</usage>
|
||||
<usage>pname:imageLayout must: specify the layout of the image subresource ranges of pname:image specified in pname:pRanges at the time this command is executed on a sname:VkDevice</usage>
|
||||
<usage>pname:imageLayout must: be either of ename:VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL or ename:VK_IMAGE_LAYOUT_GENERAL</usage>
|
||||
<usage>The image range of any given element of pname:pRanges must: be a subresource range that is contained within pname:image</usage>
|
||||
<usage>The image range of any given element of pname:pRanges must: be a image subresource range that is contained within pname:image</usage>
|
||||
</validity>
|
||||
</command>
|
||||
<command queues="graphics" renderpass="inside" cmdbufferlevel="primary,secondary">
|
||||
|
@ -4249,9 +4249,9 @@ maintained in the master branch of the Khronos Vulkan Github project.
|
|||
<usage>The union of all source regions, and the union of all destination regions, specified by the elements of pname:pRegions, mustnot: overlap in memory</usage>
|
||||
<usage>pname:srcImage must: have a sample count equal to any valid sample count value other than ename:VK_SAMPLE_COUNT_1_BIT</usage>
|
||||
<usage>pname:dstImage must: have a sample count equal to ename:VK_SAMPLE_COUNT_1_BIT</usage>
|
||||
<usage>pname:srcImageLayout must: specify the layout of the subresources of pname:srcImage specified in pname:pRegions at the time this command is executed on a sname:VkDevice</usage>
|
||||
<usage>pname:srcImageLayout must: specify the layout of the image subresources of pname:srcImage specified in pname:pRegions at the time this command is executed on a sname:VkDevice</usage>
|
||||
<usage>pname:srcImageLayout must: be either of ename:VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL or ename:VK_IMAGE_LAYOUT_GENERAL</usage>
|
||||
<usage>pname:dstImageLayout must: specify the layout of the subresources of pname:dstImage specified in pname:pRegions at the time this command is executed on a sname:VkDevice</usage>
|
||||
<usage>pname:dstImageLayout must: specify the layout of the image subresources of pname:dstImage specified in pname:pRegions at the time this command is executed on a sname:VkDevice</usage>
|
||||
<usage>pname:dstImageLayout must: be either of ename:VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL or ename:VK_IMAGE_LAYOUT_GENERAL</usage>
|
||||
<usage>If pname:dstImage was created with pname:tiling equal to ename:VK_IMAGE_TILING_LINEAR, pname:dstImage must: have been created with a pname:format that supports being a color attachment, as specified by the ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures returned by fname:vkGetPhysicalDeviceFormatProperties</usage>
|
||||
<usage>If pname:dstImage was created with pname:tiling equal to ename:VK_IMAGE_TILING_OPTIMAL, pname:dstImage must: have been created with a pname:format that supports being a color attachment, as specified by the ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT flag in sname:VkFormatProperties::pname:optimalTilingFeatures returned by fname:vkGetPhysicalDeviceFormatProperties</usage>
|
||||
|
@ -5166,5 +5166,29 @@ maintained in the master branch of the Khronos Vulkan Github project.
|
|||
<enum value=""VK_AMD_extension_2"" name="VK_AMD_EXTENSION_2_EXTENSION_NAME"/>
|
||||
</require>
|
||||
</extension>
|
||||
<extension name="VK_AMD_extension_3" number="19" author="AMD" contact="Daniel Rakos @aqnuep" supported="disabled">
|
||||
<require>
|
||||
<enum value="0" name="VK_AMD_EXTENSION_3_SPEC_VERSION"/>
|
||||
<enum value=""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>
|
||||
</registry>
|
||||
|
|
|
@ -50,7 +50,7 @@ extern "C" {
|
|||
#define VK_VERSION_MINOR(version) (((uint32_t)(version) >> 12) & 0x3ff)
|
||||
#define VK_VERSION_PATCH(version) ((uint32_t)(version) & 0xfff)
|
||||
// Version of this file
|
||||
#define VK_HEADER_VERSION 9
|
||||
#define VK_HEADER_VERSION 10
|
||||
|
||||
|
||||
#define VK_NULL_HANDLE 0
|
||||
|
|
Loading…
Reference in New Issue