Change log for October 14, 2016 Vulkan 1.0.31 spec update:
* Bump API patch number and header version number to 31 for this update. Github Issues: * Clarifying wording of slink:VkGraphicsPipelineCreateInfo parameters and adding Valid Usage statements on render pass compatibility to the <<drawing,drawing commands>> (public issue 375). * Replace 'texel size' with 'element size', and add a definition to the glossary (public issue 382). * Clarify the description of ename:VK_ERROR_NATIVE_WINDOW_IN_USE_KHR to make it accurate, but still generic (non-exhaustive). Remove two Valid Usage statements describing error situations that will return ename:VK_ERROR_NATIVE_WINDOW_IN_USE_KHR (public issue 387). * Fix refBegin tag for elink:VkDebugReportFlagBitsEXT (public issue 392). * The <<interfaces-builtin-variables,built-in variable>> code:PrimitiveId in a fragment shader needs the code:Input storage class (public issue 393). Internal Issues: * Unused ({y,z} and {height,depth} for 1D, z and depth for 2D) offsets must be 0 and unused extents must be 1. Added basic offset and extent valid usage for slink:VkImageResolve to match that of slink:VkImageCopy (internal issue 413). * Describe what flink:vkGetPhysicalDeviceImageFormatProperties returns for pname:sampleCounts when for pname:usage only includes transfer-related flags (internal issue 478). * Remove mention of slink:VkPhysicalDeviceLimits::pname:maxImageArrayLayers from the valid usage for slink:VkImageCreateInfo::pname:arrayLayers (internal issue 520). * Tag usages of ``dynamically uniform'' as glossary terms and add a glossary entry pointing to the SPIR-V Specification's definition of the term (internal issue 531).
This commit is contained in:
parent
49adf2575c
commit
b97259786d
|
@ -1481,3 +1481,42 @@ Internal Issues:
|
||||||
* Modify the <<features-supported-sample-counts,Supported Sample Counts>>
|
* Modify the <<features-supported-sample-counts,Supported Sample Counts>>
|
||||||
language to allow multisampled depth-stencil images (internal issue
|
language to allow multisampled depth-stencil images (internal issue
|
||||||
521).
|
521).
|
||||||
|
|
||||||
|
-----------------------------------------------------
|
||||||
|
|
||||||
|
Change log for October 14, 2016 Vulkan 1.0.31 spec update:
|
||||||
|
|
||||||
|
* Bump API patch number and header version number to 31 for this update.
|
||||||
|
|
||||||
|
Github Issues:
|
||||||
|
|
||||||
|
* Clarifying wording of slink:VkGraphicsPipelineCreateInfo parameters and
|
||||||
|
adding Valid Usage statements on render pass compatibility to the
|
||||||
|
<<drawing,drawing commands>> (public issue 375).
|
||||||
|
* Replace 'texel size' with 'element size', and add a definition to the
|
||||||
|
glossary (public issue 382).
|
||||||
|
* Clarify the description of ename:VK_ERROR_NATIVE_WINDOW_IN_USE_KHR to
|
||||||
|
make it accurate, but still generic (non-exhaustive). Remove two Valid
|
||||||
|
Usage statements describing error situations that will return
|
||||||
|
ename:VK_ERROR_NATIVE_WINDOW_IN_USE_KHR (public issue 387).
|
||||||
|
* Fix refBegin tag for elink:VkDebugReportFlagBitsEXT (public issue 392).
|
||||||
|
* The <<interfaces-builtin-variables,built-in variable>> code:PrimitiveId
|
||||||
|
in a fragment shader needs the code:Input storage class (public issue
|
||||||
|
393).
|
||||||
|
|
||||||
|
Internal Issues:
|
||||||
|
|
||||||
|
* Unused ({y,z} and {height,depth} for 1D, z and depth for 2D) offsets
|
||||||
|
must be 0 and unused extents must be 1. Added basic offset and extent
|
||||||
|
valid usage for slink:VkImageResolve to match that of slink:VkImageCopy
|
||||||
|
(internal issue 413).
|
||||||
|
* Describe what flink:vkGetPhysicalDeviceImageFormatProperties returns for
|
||||||
|
pname:sampleCounts when for pname:usage only includes transfer-related
|
||||||
|
flags (internal issue 478).
|
||||||
|
* Remove mention of
|
||||||
|
slink:VkPhysicalDeviceLimits::pname:maxImageArrayLayers from the valid
|
||||||
|
usage for slink:VkImageCreateInfo::pname:arrayLayers (internal issue
|
||||||
|
520).
|
||||||
|
* Tag usages of ``dynamically uniform'' as glossary terms and add a
|
||||||
|
glossary entry pointing to the SPIR-V Specification's definition of the
|
||||||
|
term (internal issue 531).
|
||||||
|
|
|
@ -160,7 +160,7 @@ GENDEPENDS = api/timeMarker validity/timeMarker hostsynctable/timeMarker
|
||||||
COMMONDOCS = $(CHAPTERS) $(GENINCLUDE) $(GENDEPENDS)
|
COMMONDOCS = $(CHAPTERS) $(GENINCLUDE) $(GENDEPENDS)
|
||||||
# A generated included file containing the spec version, date, and git commit
|
# A generated included file containing the spec version, date, and git commit
|
||||||
SPECVERSION = specversion.txt
|
SPECVERSION = specversion.txt
|
||||||
SPECREVISION = 1.0.30
|
SPECREVISION = 1.0.31
|
||||||
SPECREMARK =
|
SPECREMARK =
|
||||||
|
|
||||||
# Spec targets
|
# Spec targets
|
||||||
|
|
|
@ -272,6 +272,15 @@ Dynamic Uniform Buffer::
|
||||||
A uniform buffer whose offset is specified each time the uniform buffer
|
A uniform buffer whose offset is specified each time the uniform buffer
|
||||||
is bound to a command buffer via a descriptor set.
|
is bound to a command buffer via a descriptor set.
|
||||||
|
|
||||||
|
Dynamically Uniform::
|
||||||
|
See _Dynamically Uniform_ in section 2.2 ``Terms'' of the
|
||||||
|
<<spirv-spec,Khronos SPIR-V Specification>>.
|
||||||
|
|
||||||
|
Element Size::
|
||||||
|
The size (in bytes) used to store one element of an uncompressed format
|
||||||
|
or the size (in bytes) used to store one block of a block-compressed
|
||||||
|
format.
|
||||||
|
|
||||||
Explicitly-Enabled Layer::
|
Explicitly-Enabled Layer::
|
||||||
A layer enabled by the application by adding it to the enabled layer
|
A layer enabled by the application by adding it to the enabled layer
|
||||||
list in flink:vkCreateInstance or flink:vkCreateDevice.
|
list in flink:vkCreateInstance or flink:vkCreateDevice.
|
||||||
|
|
|
@ -49,7 +49,7 @@ include::../api/structs/VkDebugReportCallbackCreateInfoEXT.txt[]
|
||||||
Bits which can: be set include:
|
Bits which can: be set include:
|
||||||
+
|
+
|
||||||
--
|
--
|
||||||
// refBegin VkDebugReportCallbackCreateInfoEXT Bitmask specifying events which cause a debug report callback
|
// refBegin VkDebugReportFlagBitsEXT Bitmask specifying events which cause a debug report callback
|
||||||
include::../api/enums/VkDebugReportFlagBitsEXT.txt[]
|
include::../api/enums/VkDebugReportFlagBitsEXT.txt[]
|
||||||
|
|
||||||
* ename:VK_DEBUG_REPORT_ERROR_BIT_EXT indicates an error that may cause
|
* ename:VK_DEBUG_REPORT_ERROR_BIT_EXT indicates an error that may cause
|
||||||
|
|
|
@ -62,10 +62,5 @@ include::../../api/structs/VkAndroidSurfaceCreateInfoKHR.txt[]
|
||||||
* pname:window is a pointer to the code:ANativeWindow to associate the
|
* pname:window is a pointer to the code:ANativeWindow to associate the
|
||||||
surface with.
|
surface with.
|
||||||
|
|
||||||
.Valid Usage
|
|
||||||
****
|
|
||||||
* pname:window must: not be in a connected state
|
|
||||||
****
|
|
||||||
|
|
||||||
include::../../validity/structs/VkAndroidSurfaceCreateInfoKHR.txt[]
|
include::../../validity/structs/VkAndroidSurfaceCreateInfoKHR.txt[]
|
||||||
|
|
||||||
|
|
|
@ -14,6 +14,7 @@ surfaces) is displayed at a time, but multiple images can: be queued for
|
||||||
presentation.
|
presentation.
|
||||||
An application renders to the image, and then queues the image for
|
An application renders to the image, and then queues the image for
|
||||||
presentation to the surface.
|
presentation to the surface.
|
||||||
|
|
||||||
A native window cannot: be associated with more than one swapchain at a
|
A native window cannot: be associated with more than one swapchain at a
|
||||||
time.
|
time.
|
||||||
Further, swapchains cannot: be created for native windows that have a
|
Further, swapchains cannot: be created for native windows that have a
|
||||||
|
@ -182,9 +183,6 @@ effects that require them to run for all pixels in the presentable image.
|
||||||
****
|
****
|
||||||
* pname:surface must: be a surface that is supported by the device as
|
* pname:surface must: be a surface that is supported by the device as
|
||||||
determined using fname:vkGetPhysicalDeviceSurfaceSupportKHR
|
determined using fname:vkGetPhysicalDeviceSurfaceSupportKHR
|
||||||
* The native window referred to by pname:surface must: not already be
|
|
||||||
associated with a swapchain other than pname:oldSwapchain, or with a
|
|
||||||
non-Vulkan graphics API surface
|
|
||||||
* pname:minImageCount must: be greater than or equal to the value returned
|
* pname:minImageCount must: be greater than or equal to the value returned
|
||||||
in the pname:minImageCount member of the sname:VkSurfaceCapabilitiesKHR
|
in the pname:minImageCount member of the sname:VkSurfaceCapabilitiesKHR
|
||||||
structure returned by fname:vkGetPhysicalDeviceSurfaceCapabilitiesKHR
|
structure returned by fname:vkGetPhysicalDeviceSurfaceCapabilitiesKHR
|
||||||
|
@ -260,6 +258,10 @@ following sname:VkImageCreateInfo parameters:
|
||||||
The sname:VkSurfaceKHR associated with a swapchain must: not be destroyed
|
The sname:VkSurfaceKHR associated with a swapchain must: not be destroyed
|
||||||
until after the swapchain is destroyed.
|
until after the swapchain is destroyed.
|
||||||
|
|
||||||
|
The native window referred to by pname:surface must: not already be
|
||||||
|
associated with a swapchain other than pname:oldSwapchain, or with a
|
||||||
|
non-Vulkan graphics API surface.
|
||||||
|
|
||||||
Like core functions, several WSI functions, including
|
Like core functions, several WSI functions, including
|
||||||
fname:vkCreateSwapchainKHR return ename:VK_ERROR_DEVICE_LOST if the logical
|
fname:vkCreateSwapchainKHR return ename:VK_ERROR_DEVICE_LOST if the logical
|
||||||
device was lost.
|
device was lost.
|
||||||
|
|
|
@ -425,8 +425,8 @@ include::../api/structs/VkCommandBufferInheritanceInfo.txt[]
|
||||||
compatible>> with and can: be executed within.
|
compatible>> with and can: be executed within.
|
||||||
If the sname:VkCommandBuffer will not be executed within a render pass
|
If the sname:VkCommandBuffer will not be executed within a render pass
|
||||||
instance, pname:renderPass is ignored.
|
instance, pname:renderPass is ignored.
|
||||||
* pname:subpass is the index of the subpass within pname:renderPass that
|
* pname:subpass is the index of the subpass within the render pass instance
|
||||||
the sname:VkCommandBuffer will be executed within.
|
that the sname:VkCommandBuffer will be executed within.
|
||||||
If the sname:VkCommandBuffer will not be executed within a render pass
|
If the sname:VkCommandBuffer will not be executed within a render pass
|
||||||
instance, pname:subpass is ignored.
|
instance, pname:subpass is ignored.
|
||||||
* pname:framebuffer optionally refers to the sname:VkFramebuffer object
|
* pname:framebuffer optionally refers to the sname:VkFramebuffer object
|
||||||
|
|
|
@ -157,7 +157,7 @@ pname:layerCount layers are copied to the destination image.
|
||||||
|
|
||||||
[[copies-images-format-compatibility]]
|
[[copies-images-format-compatibility]]
|
||||||
The formats of pname:srcImage and pname:dstImage must: be compatible.
|
The formats of pname:srcImage and pname:dstImage must: be compatible.
|
||||||
Formats are considered compatible if their texel size in bytes is the same
|
Formats are considered compatible if their element size is the same
|
||||||
between both formats.
|
between both formats.
|
||||||
For example, ename:VK_FORMAT_R8G8B8A8_UNORM is compatible with
|
For example, ename:VK_FORMAT_R8G8B8A8_UNORM is compatible with
|
||||||
ename:VK_FORMAT_R32_UINT because both texels are 4 bytes in size.
|
ename:VK_FORMAT_R32_UINT because both texels are 4 bytes in size.
|
||||||
|
@ -165,8 +165,8 @@ Depth/stencil formats must: match exactly.
|
||||||
|
|
||||||
fname:vkCmdCopyImage allows copying between size-compatible compressed and
|
fname:vkCmdCopyImage allows copying between size-compatible compressed and
|
||||||
uncompressed internal formats.
|
uncompressed internal formats.
|
||||||
Formats are size-compatible if the texel size of the uncompressed format is
|
Formats are size-compatible if the element size of the uncompressed format is
|
||||||
equal to the compressed texel block size in bytes of the compressed format.
|
equal to the element size (compressed texel block size) of the compressed format.
|
||||||
Such a copy does not perform on-the-fly compression or decompression.
|
Such a copy does not perform on-the-fly compression or decompression.
|
||||||
When copying from an uncompressed format to a compressed format, each texel
|
When copying from an uncompressed format to a compressed format, each texel
|
||||||
of uncompressed data of the source image is copied as a raw value to the
|
of uncompressed data of the source image is copied as a raw value to the
|
||||||
|
@ -276,10 +276,6 @@ include::../api/structs/VkImageCopy.txt[]
|
||||||
data.
|
data.
|
||||||
* pname:extent is the size in texels of the source image to copy in
|
* pname:extent is the size in texels of the source image to copy in
|
||||||
pname:width, pname:height and pname:depth.
|
pname:width, pname:height and pname:depth.
|
||||||
1D images use only pname:x and pname:width.
|
|
||||||
2D images use pname:x, pname:y, pname:width and pname:height.
|
|
||||||
3D images use pname:x, pname:y, pname:z, pname:width, pname:height and
|
|
||||||
pname:depth.
|
|
||||||
|
|
||||||
.Valid Usage
|
.Valid Usage
|
||||||
****
|
****
|
||||||
|
@ -302,18 +298,30 @@ include::../api/structs/VkImageCopy.txt[]
|
||||||
* pname:srcOffset.y and (pname:extent.height + pname:srcOffset.y) must:
|
* pname:srcOffset.y and (pname:extent.height + pname:srcOffset.y) must:
|
||||||
both be greater than or equal to `0` and less than or equal to the
|
both be greater than or equal to `0` and less than or equal to the
|
||||||
source image subresource height
|
source image subresource height
|
||||||
|
** If the calling command's pname:srcImage is of type
|
||||||
|
ename:VK_IMAGE_TYPE_1D, then pname:srcOffset.y must: be `0` and
|
||||||
|
pname:extent.height must: be `1`.
|
||||||
* pname:srcOffset.z and (pname:extent.depth + pname:srcOffset.z) must:
|
* pname:srcOffset.z and (pname:extent.depth + pname:srcOffset.z) must:
|
||||||
both be greater than or equal to `0` and less than or equal to the
|
both be greater than or equal to `0` and less than or equal to the
|
||||||
source image subresource depth
|
source image subresource depth
|
||||||
|
** If the calling command's pname:srcImage is of type
|
||||||
|
ename:VK_IMAGE_TYPE_1D or ename:VK_IMAGE_TYPE_2D, then
|
||||||
|
pname:srcOffset.z must: be `0` and pname:extent.depth must: be `1`.
|
||||||
* pname:dstOffset.x and (pname:extent.width + pname:dstOffset.x) must:
|
* pname:dstOffset.x and (pname:extent.width + pname:dstOffset.x) must:
|
||||||
both be greater than or equal to `0` and less than or equal to the
|
both be greater than or equal to `0` and less than or equal to the
|
||||||
destination image subresource width
|
destination image subresource width
|
||||||
* pname:dstOffset.y and (pname:extent.height + pname:dstOffset.y) must:
|
* pname:dstOffset.y and (pname:extent.height + pname:dstOffset.y) must:
|
||||||
both be greater than or equal to `0` and less than or equal to the
|
both be greater than or equal to `0` and less than or equal to the
|
||||||
destination image subresource height
|
destination image subresource height
|
||||||
|
** If the calling command's pname:dstImage is of type
|
||||||
|
ename:VK_IMAGE_TYPE_1D, then pname:dstOffset.y must: be `0` and
|
||||||
|
pname:extent.height must: be `1`.
|
||||||
* pname:dstOffset.z and (pname:extent.depth + pname:dstOffset.z) must:
|
* pname:dstOffset.z and (pname:extent.depth + pname:dstOffset.z) must:
|
||||||
both be greater than or equal to `0` and less than or equal to the
|
both be greater than or equal to `0` and less than or equal to the
|
||||||
destination image subresource depth
|
destination image subresource depth
|
||||||
|
** If the calling command's pname:dstImage is of type
|
||||||
|
ename:VK_IMAGE_TYPE_1D or ename:VK_IMAGE_TYPE_2D, then
|
||||||
|
pname:dstOffset.z must: be `0` and pname:extent.depth must: be `1`.
|
||||||
* If the calling command's pname:srcImage is a compressed format image:
|
* If the calling command's pname:srcImage is a compressed format image:
|
||||||
** all members of pname:srcOffset must: be a multiple of the corresponding
|
** all members of pname:srcOffset must: be a multiple of the corresponding
|
||||||
dimensions of the compressed texel block
|
dimensions of the compressed texel block
|
||||||
|
@ -487,10 +495,6 @@ include::../api/structs/VkBufferImageCopy.txt[]
|
||||||
sub-region of the source or destination image data.
|
sub-region of the source or destination image data.
|
||||||
* pname:imageExtent is the size in texels of the image to copy in
|
* pname:imageExtent is the size in texels of the image to copy in
|
||||||
pname:width, pname:height and pname:depth.
|
pname:width, pname:height and pname:depth.
|
||||||
1D images use only pname:x and pname:width.
|
|
||||||
2D images use pname:x, pname:y, pname:width and pname:height.
|
|
||||||
3D images use pname:x, pname:y, pname:z, pname:width, pname:height and
|
|
||||||
pname:depth.
|
|
||||||
|
|
||||||
When copying to or from a depth or stencil aspect, the data in buffer memory
|
When copying to or from a depth or stencil aspect, the data in buffer memory
|
||||||
uses a layout that is a (mostly) tightly packed representation of the depth
|
uses a layout that is a (mostly) tightly packed representation of the depth
|
||||||
|
@ -532,7 +536,7 @@ destination image.
|
||||||
.Valid Usage
|
.Valid Usage
|
||||||
****
|
****
|
||||||
* pname:bufferOffset must: be a multiple of the calling command's
|
* pname:bufferOffset must: be a multiple of the calling command's
|
||||||
sname:VkImage parameter's texel size
|
sname:VkImage parameter's format's element size
|
||||||
* pname:bufferOffset must: be a multiple of `4`
|
* pname:bufferOffset must: be a multiple of `4`
|
||||||
* pname:bufferRowLength must: be `0`, or greater than or equal to the
|
* pname:bufferRowLength must: be `0`, or greater than or equal to the
|
||||||
pname:width member of pname:imageExtent
|
pname:width member of pname:imageExtent
|
||||||
|
@ -544,9 +548,18 @@ destination image.
|
||||||
* pname:imageOffset.y and (imageExtent.height + pname:imageOffset.y) must:
|
* pname:imageOffset.y and (imageExtent.height + pname:imageOffset.y) must:
|
||||||
both be greater than or equal to `0` and less than or equal to the image
|
both be greater than or equal to `0` and less than or equal to the image
|
||||||
subresource height
|
subresource height
|
||||||
|
** If the calling command's pname:srcImage (flink:vkCmdCopyImageToBuffer)
|
||||||
|
or pname:dstImage (flink:vkCmdCopyBufferToImage) is of type
|
||||||
|
ename:VK_IMAGE_TYPE_1D, then pname:imageOffset.y must: be `0` and
|
||||||
|
pname:imageExtent.height must: be `1`.
|
||||||
* pname:imageOffset.z and (imageExtent.depth + pname:imageOffset.z) must:
|
* pname:imageOffset.z and (imageExtent.depth + pname:imageOffset.z) must:
|
||||||
both be greater than or equal to `0` and less than or equal to the image
|
both be greater than or equal to `0` and less than or equal to the image
|
||||||
subresource depth
|
subresource depth
|
||||||
|
** If the calling command's pname:srcImage (flink:vkCmdCopyImageToBuffer)
|
||||||
|
or pname:dstImage (flink:vkCmdCopyBufferToImage) is of type
|
||||||
|
ename:VK_IMAGE_TYPE_1D or ename:VK_IMAGE_TYPE_2D, then
|
||||||
|
pname:imageOffset.z must: be `0` and
|
||||||
|
pname:imageExtent.depth must: be `1`.
|
||||||
* If the calling command's sname:VkImage parameter is a compressed format
|
* If the calling command's sname:VkImage parameter is a compressed format
|
||||||
image:
|
image:
|
||||||
** pname:bufferRowLength must: be a multiple of the compressed texel block
|
** pname:bufferRowLength must: be a multiple of the compressed texel block
|
||||||
|
@ -597,9 +610,9 @@ imageHeight = region->bufferImageHeight;
|
||||||
if (imageHeight == 0)
|
if (imageHeight == 0)
|
||||||
imageHeight = region->imageExtent.height;
|
imageHeight = region->imageExtent.height;
|
||||||
|
|
||||||
texelSize = <texel size taken from the src/dstImage>;
|
elementSize = <element size of the format of the src/dstImage>;
|
||||||
|
|
||||||
address of (x,y,z) = region->bufferOffset + (((z * imageHeight) + y) * rowLength + x) * texelSize;
|
address of (x,y,z) = region->bufferOffset + (((z * imageHeight) + y) * rowLength + x) * elementSize;
|
||||||
|
|
||||||
where x,y,z range from (0,0,0) to region->imageExtent.{width,height,depth}.
|
where x,y,z range from (0,0,0) to region->imageExtent.{width,height,depth}.
|
||||||
---------------------------------------------------
|
---------------------------------------------------
|
||||||
|
@ -889,18 +902,30 @@ the specified source and destination regions.
|
||||||
* pname:srcOffset[0].pname:y and pname:srcOffset[1].pname:y must: both be
|
* pname:srcOffset[0].pname:y and pname:srcOffset[1].pname:y must: both be
|
||||||
greater than or equal to `0` and less than or equal to the source image
|
greater than or equal to `0` and less than or equal to the source image
|
||||||
subresource height
|
subresource height
|
||||||
|
** If the calling command's pname:srcImage is of type
|
||||||
|
ename:VK_IMAGE_TYPE_1D, then pname:srcOffset[0].y must: be `0` and
|
||||||
|
pname:srcOffset[1].y must: be `1`.
|
||||||
* pname:srcOffset[0].pname:z and pname:srcOffset[1].pname:z must: both be
|
* pname:srcOffset[0].pname:z and pname:srcOffset[1].pname:z must: both be
|
||||||
greater than or equal to `0` and less than or equal to the source image
|
greater than or equal to `0` and less than or equal to the source image
|
||||||
subresource depth
|
subresource depth
|
||||||
|
** If the calling command's pname:srcImage is of type
|
||||||
|
ename:VK_IMAGE_TYPE_1D or ename:VK_IMAGE_TYPE_2D, then
|
||||||
|
pname:srcOffset[0].z must: be `0` and pname:srcOffset[1].z must: be `1`.
|
||||||
* pname:dstOffset[0].pname:x and pname:dstOffset[1].pname:x must: both be
|
* pname:dstOffset[0].pname:x and pname:dstOffset[1].pname:x must: both be
|
||||||
greater than or equal to `0` and less than or equal to the destination
|
greater than or equal to `0` and less than or equal to the destination
|
||||||
image subresource width
|
image subresource width
|
||||||
* pname:dstOffset[0].pname:y and pname:dstOffset[1].pname:y must: both be
|
* pname:dstOffset[0].pname:y and pname:dstOffset[1].pname:y must: both be
|
||||||
greater than or equal to `0` and less than or equal to the destination
|
greater than or equal to `0` and less than or equal to the destination
|
||||||
image subresource height
|
image subresource height
|
||||||
|
** If the calling command's pname:dstImage is of type
|
||||||
|
ename:VK_IMAGE_TYPE_1D, then pname:dstOffset[0].y must: be `0` and
|
||||||
|
pname:dstOffset[1].y must: be `1`.
|
||||||
* pname:dstOffset[0].pname:z and pname:dstOffset[1].pname:z must: both be
|
* pname:dstOffset[0].pname:z and pname:dstOffset[1].pname:z must: both be
|
||||||
greater than or equal to `0` and less than or equal to the destination
|
greater than or equal to `0` and less than or equal to the destination
|
||||||
image subresource depth
|
image subresource depth
|
||||||
|
** If the calling command's pname:dstImage is of type
|
||||||
|
ename:VK_IMAGE_TYPE_1D or ename:VK_IMAGE_TYPE_2D, then
|
||||||
|
pname:dstOffset[0].z must: be `0` and pname:dstOffset[1].z must: be `1`.
|
||||||
****
|
****
|
||||||
|
|
||||||
include::../validity/structs/VkImageBlit.txt[]
|
include::../validity/structs/VkImageBlit.txt[]
|
||||||
|
@ -939,10 +964,6 @@ 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.
|
in texels of the sub-regions of the source and destination image data.
|
||||||
pname:extent is the size in texels of the source image to resolve in
|
pname:extent is the size in texels of the source image to resolve in
|
||||||
pname:width, pname:height and pname:depth.
|
pname:width, pname:height and pname:depth.
|
||||||
1D images use only pname:x and pname:width.
|
|
||||||
2D images use pname:x, pname:y, pname:width and pname:height.
|
|
||||||
3D images use pname:x, pname:y, pname:z, pname:width, pname:height and
|
|
||||||
pname:depth.
|
|
||||||
|
|
||||||
Resolves are done layer by layer starting with pname:baseArrayLayer member
|
Resolves are done layer by layer starting with pname:baseArrayLayer member
|
||||||
of pname:srcSubresource for the source and pname:dstSubresource for the
|
of pname:srcSubresource for the source and pname:dstSubresource for the
|
||||||
|
@ -1006,10 +1027,6 @@ include::../api/structs/VkImageResolve.txt[]
|
||||||
data.
|
data.
|
||||||
* pname:extent is the size in texels of the source image to resolve in
|
* pname:extent is the size in texels of the source image to resolve in
|
||||||
pname:width, pname:height and pname:depth.
|
pname:width, pname:height and pname:depth.
|
||||||
1D images use only pname:x and pname:width.
|
|
||||||
2D images use pname:x, pname:y, pname:width and pname:height.
|
|
||||||
3D images use pname:x, pname:y, pname:z, pname:width, pname:height and
|
|
||||||
pname:depth.
|
|
||||||
|
|
||||||
.Valid Usage
|
.Valid Usage
|
||||||
****
|
****
|
||||||
|
@ -1022,6 +1039,36 @@ include::../api/structs/VkImageResolve.txt[]
|
||||||
pname:baseArrayLayer and pname:layerCount members of both
|
pname:baseArrayLayer and pname:layerCount members of both
|
||||||
pname:srcSubresource and pname:dstSubresource must: be `0` and `1`,
|
pname:srcSubresource and pname:dstSubresource must: be `0` and `1`,
|
||||||
respectively
|
respectively
|
||||||
|
* pname:srcOffset.x and (pname:extent.width + pname:srcOffset.x) must:
|
||||||
|
both be greater than or equal to `0` and less than or equal to the
|
||||||
|
source image subresource width
|
||||||
|
* pname:srcOffset.y and (pname:extent.height + pname:srcOffset.y) must:
|
||||||
|
both be greater than or equal to `0` and less than or equal to the
|
||||||
|
source image subresource height
|
||||||
|
** If the calling command's pname:srcImage is of type
|
||||||
|
ename:VK_IMAGE_TYPE_1D, then pname:srcOffset.y must: be `0` and
|
||||||
|
pname:extent.height must: be `1`.
|
||||||
|
* pname:srcOffset.z and (pname:extent.depth + pname:srcOffset.z) must:
|
||||||
|
both be greater than or equal to `0` and less than or equal to the
|
||||||
|
source image subresource depth
|
||||||
|
** If the calling command's pname:srcImage is of type
|
||||||
|
ename:VK_IMAGE_TYPE_1D or ename:VK_IMAGE_TYPE_2D, then
|
||||||
|
pname:srcOffset.z must: be `0` and pname:extent.depth must: be `1`.
|
||||||
|
* pname:dstOffset.x and (pname:extent.width + pname:dstOffset.x) must:
|
||||||
|
both be greater than or equal to `0` and less than or equal to the
|
||||||
|
destination image subresource width
|
||||||
|
* pname:dstOffset.y and (pname:extent.height + pname:dstOffset.y) must:
|
||||||
|
both be greater than or equal to `0` and less than or equal to the
|
||||||
|
destination image subresource height
|
||||||
|
** If the calling command's pname:dstImage is of type
|
||||||
|
ename:VK_IMAGE_TYPE_1D, then pname:dstOffset.y must: be `0` and
|
||||||
|
pname:extent.height must: be `1`.
|
||||||
|
* pname:dstOffset.z and (pname:extent.depth + pname:dstOffset.z) must:
|
||||||
|
both be greater than or equal to `0` and less than or equal to the
|
||||||
|
destination image subresource depth
|
||||||
|
** If the calling command's pname:dstImage is of type
|
||||||
|
ename:VK_IMAGE_TYPE_1D or ename:VK_IMAGE_TYPE_2D, then
|
||||||
|
pname:dstOffset.z must: be `0` and pname:extent.depth must: be `1`.
|
||||||
****
|
****
|
||||||
|
|
||||||
include::../validity/structs/VkImageResolve.txt[]
|
include::../validity/structs/VkImageResolve.txt[]
|
||||||
|
|
|
@ -473,6 +473,14 @@ The assembled primitives execute the currently bound graphics pipeline.
|
||||||
|
|
||||||
.Valid Usage
|
.Valid Usage
|
||||||
****
|
****
|
||||||
|
* The current render pass must: be <<renderpass-compatibility,compatible>>
|
||||||
|
with the pname:renderPass member of the sname:VkGraphicsPipelineCreateInfo
|
||||||
|
structure specified when creating the sname:VkPipeline currently bound to
|
||||||
|
ename:VK_PIPELINE_BIND_POINT_GRAPHICS.
|
||||||
|
* The subpass index of the current render pass must: be equal to the
|
||||||
|
pname:subpass member of the sname:VkGraphicsPipelineCreateInfo structure
|
||||||
|
specified when creating the sname:VkPipeline currently bound to
|
||||||
|
ename:VK_PIPELINE_BIND_POINT_GRAPHICS.
|
||||||
* For each set _n_ that is statically used by the sname:VkPipeline
|
* For each set _n_ that is statically used by the sname:VkPipeline
|
||||||
currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS, a descriptor
|
currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS, a descriptor
|
||||||
set must: have been bound to _n_ at
|
set must: have been bound to _n_ at
|
||||||
|
@ -600,6 +608,14 @@ The assembled primitives execute the currently bound graphics pipeline.
|
||||||
|
|
||||||
.Valid Usage
|
.Valid Usage
|
||||||
****
|
****
|
||||||
|
* The current render pass must: be <<renderpass-compatibility,compatible>>
|
||||||
|
with the pname:renderPass member of the sname:VkGraphicsPipelineCreateInfo
|
||||||
|
structure specified when creating the sname:VkPipeline currently bound to
|
||||||
|
ename:VK_PIPELINE_BIND_POINT_GRAPHICS.
|
||||||
|
* The subpass index of the current render pass must: be equal to the
|
||||||
|
pname:subpass member of the sname:VkGraphicsPipelineCreateInfo structure
|
||||||
|
specified when creating the sname:VkPipeline currently bound to
|
||||||
|
ename:VK_PIPELINE_BIND_POINT_GRAPHICS.
|
||||||
* For each set _n_ that is statically used by the sname:VkPipeline
|
* For each set _n_ that is statically used by the sname:VkPipeline
|
||||||
currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS, a descriptor
|
currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS, a descriptor
|
||||||
set must: have been bound to _n_ at
|
set must: have been bound to _n_ at
|
||||||
|
@ -729,6 +745,14 @@ If pname:drawCount is less than or equal to one, pname:stride is ignored.
|
||||||
feature is not enabled, all the pname:firstInstance members of the
|
feature is not enabled, all the pname:firstInstance members of the
|
||||||
sname:VkDrawIndirectCommand structures accessed by this command must: be
|
sname:VkDrawIndirectCommand structures accessed by this command must: be
|
||||||
code:0
|
code:0
|
||||||
|
* The current render pass must: be <<renderpass-compatibility,compatible>>
|
||||||
|
with the pname:renderPass member of the sname:VkGraphicsPipelineCreateInfo
|
||||||
|
structure specified when creating the sname:VkPipeline currently bound to
|
||||||
|
ename:VK_PIPELINE_BIND_POINT_GRAPHICS.
|
||||||
|
* The subpass index of the current render pass must: be equal to the
|
||||||
|
pname:subpass member of the sname:VkGraphicsPipelineCreateInfo structure
|
||||||
|
specified when creating the sname:VkPipeline currently bound to
|
||||||
|
ename:VK_PIPELINE_BIND_POINT_GRAPHICS.
|
||||||
* For each set _n_ that is statically used by the sname:VkPipeline
|
* For each set _n_ that is statically used by the sname:VkPipeline
|
||||||
currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS, a descriptor
|
currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS, a descriptor
|
||||||
set must: have been bound to _n_ at
|
set must: have been bound to _n_ at
|
||||||
|
@ -894,6 +918,14 @@ located at pname:countBufferOffset and use this as the draw count.
|
||||||
feature is not enabled, all the pname:firstInstance members of the
|
feature is not enabled, all the pname:firstInstance members of the
|
||||||
sname:VkDrawIndirectCommand structures accessed by this command must: be
|
sname:VkDrawIndirectCommand structures accessed by this command must: be
|
||||||
code:0
|
code:0
|
||||||
|
* The current render pass must: be <<renderpass-compatibility,compatible>>
|
||||||
|
with the pname:renderPass member of the sname:VkGraphicsPipelineCreateInfo
|
||||||
|
structure specified when creating the sname:VkPipeline currently bound to
|
||||||
|
ename:VK_PIPELINE_BIND_POINT_GRAPHICS.
|
||||||
|
* The subpass index of the current render pass must: be equal to the
|
||||||
|
pname:subpass member of the sname:VkGraphicsPipelineCreateInfo structure
|
||||||
|
specified when creating the sname:VkPipeline currently bound to
|
||||||
|
ename:VK_PIPELINE_BIND_POINT_GRAPHICS.
|
||||||
* For each set _n_ that is statically used by the sname:VkPipeline
|
* For each set _n_ that is statically used by the sname:VkPipeline
|
||||||
currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS, a descriptor
|
currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS, a descriptor
|
||||||
set must: have been bound to _n_ at
|
set must: have been bound to _n_ at
|
||||||
|
@ -1014,6 +1046,14 @@ If pname:drawCount is less than or equal to one, pname:stride is ignored.
|
||||||
feature is not enabled, all the pname:firstInstance members of the
|
feature is not enabled, all the pname:firstInstance members of the
|
||||||
sname:VkDrawIndexedIndirectCommand structures accessed by this command
|
sname:VkDrawIndexedIndirectCommand structures accessed by this command
|
||||||
must: be code:0
|
must: be code:0
|
||||||
|
* The current render pass must: be <<renderpass-compatibility,compatible>>
|
||||||
|
with the pname:renderPass member of the sname:VkGraphicsPipelineCreateInfo
|
||||||
|
structure specified when creating the sname:VkPipeline currently bound to
|
||||||
|
ename:VK_PIPELINE_BIND_POINT_GRAPHICS.
|
||||||
|
* The subpass index of the current render pass must: be equal to the
|
||||||
|
pname:subpass member of the sname:VkGraphicsPipelineCreateInfo structure
|
||||||
|
specified when creating the sname:VkPipeline currently bound to
|
||||||
|
ename:VK_PIPELINE_BIND_POINT_GRAPHICS.
|
||||||
* For each set _n_ that is statically used by the sname:VkPipeline
|
* For each set _n_ that is statically used by the sname:VkPipeline
|
||||||
currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS, a descriptor
|
currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS, a descriptor
|
||||||
set must: have been bound to _n_ at
|
set must: have been bound to _n_ at
|
||||||
|
@ -1186,6 +1226,14 @@ located at pname:countBufferOffset and use this as the draw count.
|
||||||
feature is not enabled, all the pname:firstInstance members of the
|
feature is not enabled, all the pname:firstInstance members of the
|
||||||
sname:VkDrawIndexedIndirectCommand structures accessed by this command
|
sname:VkDrawIndexedIndirectCommand structures accessed by this command
|
||||||
must: be code:0
|
must: be code:0
|
||||||
|
* The current render pass must: be <<renderpass-compatibility,compatible>>
|
||||||
|
with the pname:renderPass member of the sname:VkGraphicsPipelineCreateInfo
|
||||||
|
structure specified when creating the sname:VkPipeline currently bound to
|
||||||
|
ename:VK_PIPELINE_BIND_POINT_GRAPHICS.
|
||||||
|
* The subpass index of the current render pass must: be equal to the
|
||||||
|
pname:subpass member of the sname:VkGraphicsPipelineCreateInfo structure
|
||||||
|
specified when creating the sname:VkPipeline currently bound to
|
||||||
|
ename:VK_PIPELINE_BIND_POINT_GRAPHICS.
|
||||||
* For each set _n_ that is statically used by the sname:VkPipeline
|
* For each set _n_ that is statically used by the sname:VkPipeline
|
||||||
currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS, a descriptor
|
currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS, a descriptor
|
||||||
set must: have been bound to _n_ at
|
set must: have been bound to _n_ at
|
||||||
|
|
|
@ -491,7 +491,7 @@ properties of individual formats.
|
||||||
code:StorageImageWriteWithoutFormat capability.
|
code:StorageImageWriteWithoutFormat capability.
|
||||||
* [[features-features-shaderUniformBufferArrayDynamicIndexing]]
|
* [[features-features-shaderUniformBufferArrayDynamicIndexing]]
|
||||||
pname:shaderUniformBufferArrayDynamicIndexing indicates whether arrays
|
pname:shaderUniformBufferArrayDynamicIndexing indicates whether arrays
|
||||||
of uniform buffers can: be indexed by dynamically uniform integer
|
of uniform buffers can: be indexed by _dynamically uniform_ integer
|
||||||
expressions in shader code.
|
expressions in shader code.
|
||||||
If this feature is not enabled, resources with a descriptor type of
|
If this feature is not enabled, resources with a descriptor type of
|
||||||
ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER or
|
ename:VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER or
|
||||||
|
@ -2721,6 +2721,9 @@ This means that promoting one format to another with more bits per component
|
||||||
and/or additional components must: not occur for color formats.
|
and/or additional components must: not occur for color formats.
|
||||||
Depth/stencil formats have more relaxed requirements as discussed
|
Depth/stencil formats have more relaxed requirements as discussed
|
||||||
<<features-formats-depth-stencil,below>>.
|
<<features-formats-depth-stencil,below>>.
|
||||||
|
Each format has an _element size_, the number of bytes used to stored one
|
||||||
|
element or one compressed block, with the value of the element size listed
|
||||||
|
in slink:VkFormat.
|
||||||
|
|
||||||
The representation of non-packed formats is that the first component
|
The representation of non-packed formats is that the first component
|
||||||
specified in the name of the format is in the lowest memory addresses and
|
specified in the name of the format is in the lowest memory addresses and
|
||||||
|
@ -3864,6 +3867,10 @@ limits in sname:VkPhysicalDeviceLimits as follows:
|
||||||
If multiple bits are set in pname:usage, pname:sampleCounts will be the
|
If multiple bits are set in pname:usage, pname:sampleCounts will be the
|
||||||
intersection of the per-usage values described above.
|
intersection of the per-usage values described above.
|
||||||
|
|
||||||
|
If none of the bits described above are set in pname:usage, then there
|
||||||
|
is no corresponding limit in sname:VkPhysicalDeviceLimits. In this case,
|
||||||
|
pname:sampleCounts must: include at least ename:VK_SAMPLE_COUNT_1_BIT.
|
||||||
|
|
||||||
|
|
||||||
[[features-extentperimagetype]]
|
[[features-extentperimagetype]]
|
||||||
=== Allowed Extent Values Based On Image Type
|
=== Allowed Extent Values Based On Image Type
|
||||||
|
|
|
@ -860,7 +860,8 @@ endif::VK_KHR_swapchain[]
|
||||||
ifdef::VK_KHR_surface[]
|
ifdef::VK_KHR_surface[]
|
||||||
* ename:VK_ERROR_SURFACE_LOST_KHR A surface is no longer available.
|
* ename:VK_ERROR_SURFACE_LOST_KHR A surface is no longer available.
|
||||||
* ename:VK_ERROR_NATIVE_WINDOW_IN_USE_KHR The requested window is already
|
* ename:VK_ERROR_NATIVE_WINDOW_IN_USE_KHR The requested window is already
|
||||||
connected to a VkSurfaceKHR, or to some other non-Vulkan API.
|
in use by Vulkan or another API in a manner which prevents it from being
|
||||||
|
used again.
|
||||||
endif::VK_KHR_surface[]
|
endif::VK_KHR_surface[]
|
||||||
ifdef::VK_KHR_swapchain[]
|
ifdef::VK_KHR_swapchain[]
|
||||||
* ename:VK_ERROR_OUT_OF_DATE_KHR A surface has changed in such a way that
|
* ename:VK_ERROR_OUT_OF_DATE_KHR A surface has changed in such a way that
|
||||||
|
|
|
@ -414,7 +414,7 @@ not cause the space required for that variable to extend outside the range
|
||||||
[eq]#[0, pname:maxPushConstantsSize)#.
|
[eq]#[0, pname:maxPushConstantsSize)#.
|
||||||
|
|
||||||
Any variable in a push constant block that is declared as an array must:
|
Any variable in a push constant block that is declared as an array must:
|
||||||
only be accessed with dynamically uniform indices.
|
only be accessed with _dynamically uniform_ indices.
|
||||||
|
|
||||||
|
|
||||||
[[interfaces-resources-descset]]
|
[[interfaces-resources-descset]]
|
||||||
|
|
|
@ -381,12 +381,12 @@ include::../api/structs/VkGraphicsPipelineCreateInfo.txt[]
|
||||||
* pname:layout is the description of binding locations used by both the
|
* pname:layout is the description of binding locations used by both the
|
||||||
pipeline and descriptor sets used with the pipeline.
|
pipeline and descriptor sets used with the pipeline.
|
||||||
* pname:renderPass is a handle to a render pass object describing the
|
* pname:renderPass is a handle to a render pass object describing the
|
||||||
environment in which the pipeline will be used; the pipeline can: be
|
environment in which the pipeline will be used; the pipeline must: only be
|
||||||
used with an instance of any render pass compatible with the one
|
used with an instance of any render pass compatible with the one
|
||||||
provided.
|
provided.
|
||||||
See <<renderpass-compatibility,Render Pass Compatibility>> for more
|
See <<renderpass-compatibility,Render Pass Compatibility>> for more
|
||||||
information.
|
information.
|
||||||
* pname:subpass is the index of the subpass in pname:renderPass where this
|
* pname:subpass is the index of the subpass in the render pass where this
|
||||||
pipeline will be used.
|
pipeline will be used.
|
||||||
* pname:basePipelineHandle is a pipeline to derive from.
|
* pname:basePipelineHandle is a pipeline to derive from.
|
||||||
* pname:basePipelineIndex is an index into the pname:pCreateInfos
|
* pname:basePipelineIndex is an index into the pname:pCreateInfos
|
||||||
|
|
|
@ -1104,6 +1104,9 @@ pass.
|
||||||
in pname:renderPass that specifies a pname:loadOp (or
|
in pname:renderPass that specifies a pname:loadOp (or
|
||||||
pname:stencilLoadOp, if the attachment has a depth/stencil format) of
|
pname:stencilLoadOp, if the attachment has a depth/stencil format) of
|
||||||
ename:VK_ATTACHMENT_LOAD_OP_CLEAR
|
ename:VK_ATTACHMENT_LOAD_OP_CLEAR
|
||||||
|
* pname:renderPass must: be <<renderpass-compatibility,compatible>>
|
||||||
|
with the pname:renderPass member of the sname:VkFramebufferCreateInfo
|
||||||
|
structure specified when creating pname:framebuffer.
|
||||||
****
|
****
|
||||||
|
|
||||||
include::../validity/structs/VkRenderPassBeginInfo.txt[]
|
include::../validity/structs/VkRenderPassBeginInfo.txt[]
|
||||||
|
|
|
@ -291,7 +291,7 @@ include::../api/structs/VkBufferViewCreateInfo.txt[]
|
||||||
* If pname:range is not equal to ename:VK_WHOLE_SIZE:
|
* If pname:range is not equal to ename:VK_WHOLE_SIZE:
|
||||||
** pname:range must: be greater than `0`
|
** pname:range must: be greater than `0`
|
||||||
** pname:range must: be a multiple of the element size of pname:format
|
** pname:range must: be a multiple of the element size of pname:format
|
||||||
** pname:range divided by the size of an element of pname:format, must: be
|
** pname:range divided by the element size of pname:format, must: be
|
||||||
less than or equal to
|
less than or equal to
|
||||||
sname:VkPhysicalDeviceLimits::pname:maxTexelBufferElements
|
sname:VkPhysicalDeviceLimits::pname:maxTexelBufferElements
|
||||||
** the sum of pname:offset and pname:range must: be less than or equal to
|
** the sum of pname:offset and pname:range must: be less than or equal to
|
||||||
|
@ -515,11 +515,10 @@ flink:vkGetPhysicalDeviceImageFormatProperties.
|
||||||
pname:type, pname:tiling, pname:usage, and pname:flags equal to those in
|
pname:type, pname:tiling, pname:usage, and pname:flags equal to those in
|
||||||
this structure)
|
this structure)
|
||||||
* pname:arrayLayers must: be less than or equal to
|
* pname:arrayLayers must: be less than or equal to
|
||||||
sname:VkPhysicalDeviceLimits::pname:maxImageArrayLayers, or
|
|
||||||
sname:VkImageFormatProperties::pname:maxArrayLayers (as returned by
|
sname:VkImageFormatProperties::pname:maxArrayLayers (as returned by
|
||||||
fname:vkGetPhysicalDeviceImageFormatProperties with pname:format,
|
fname:vkGetPhysicalDeviceImageFormatProperties with pname:format,
|
||||||
pname:type, pname:tiling, pname:usage, and pname:flags equal to those in
|
pname:type, pname:tiling, pname:usage, and pname:flags equal to those in
|
||||||
this structure) - whichever is higher
|
this structure)
|
||||||
* If pname:samples is not ename:VK_SAMPLE_COUNT_1_BIT, pname:imageType
|
* If pname:samples is not ename:VK_SAMPLE_COUNT_1_BIT, pname:imageType
|
||||||
must: be ename:VK_IMAGE_TYPE_2D, pname:flags must: not contain
|
must: be ename:VK_IMAGE_TYPE_2D, pname:flags must: not contain
|
||||||
ename:VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT, pname:tiling must: be
|
ename:VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT, pname:tiling must: be
|
||||||
|
@ -955,7 +954,7 @@ image subresource has address:
|
||||||
[source,c]
|
[source,c]
|
||||||
---------------------------------------------------
|
---------------------------------------------------
|
||||||
// (x,y,z,layer) are in texel coordinates
|
// (x,y,z,layer) are in texel coordinates
|
||||||
address(x,y,z,layer) = layer*arrayPitch + z*depthPitch + y*rowPitch + x*texelSize + offset
|
address(x,y,z,layer) = layer*arrayPitch + z*depthPitch + y*rowPitch + x*elementSize + offset
|
||||||
---------------------------------------------------
|
---------------------------------------------------
|
||||||
|
|
||||||
For compressed formats, the pname:rowPitch is the number of bytes between
|
For compressed formats, the pname:rowPitch is the number of bytes between
|
||||||
|
|
|
@ -104,7 +104,7 @@ pname:sparseResidency4Samples, pname:sparseResidency8Samples, and
|
||||||
pname:sparseResidency16Samples.
|
pname:sparseResidency16Samples.
|
||||||
--
|
--
|
||||||
** A sparse image created using ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT
|
** A sparse image created using ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT
|
||||||
supports all non-compressed color formats with power-of-two texel size
|
supports all non-compressed color formats with power-of-two element size
|
||||||
that non-sparse usage supports.
|
that non-sparse usage supports.
|
||||||
Additional formats may: also be supported and can: be queried via
|
Additional formats may: also be supported and can: be queried via
|
||||||
flink:vkGetPhysicalDeviceSparseImageFormatProperties.
|
flink:vkGetPhysicalDeviceSparseImageFormatProperties.
|
||||||
|
|
|
@ -104,7 +104,7 @@ maintained in the master branch of the Khronos Vulkan GitHub project.
|
||||||
<type category="define">// Vulkan 1.0 version number
|
<type category="define">// Vulkan 1.0 version number
|
||||||
#define <name>VK_API_VERSION_1_0</name> <type>VK_MAKE_VERSION</type>(1, 0, 0)</type> <!-- The patch version here should never be set to anything other than 0 -->
|
#define <name>VK_API_VERSION_1_0</name> <type>VK_MAKE_VERSION</type>(1, 0, 0)</type> <!-- The patch version here should never be set to anything other than 0 -->
|
||||||
<type category="define">// Version of this file
|
<type category="define">// Version of this file
|
||||||
#define <name>VK_HEADER_VERSION</name> 30</type>
|
#define <name>VK_HEADER_VERSION</name> 31</type>
|
||||||
|
|
||||||
<type category="define">
|
<type category="define">
|
||||||
#define <name>VK_DEFINE_HANDLE</name>(object) typedef struct object##_T* object;</type>
|
#define <name>VK_DEFINE_HANDLE</name>(object) typedef struct object##_T* object;</type>
|
||||||
|
|
|
@ -43,7 +43,7 @@ extern "C" {
|
||||||
#define VK_VERSION_MINOR(version) (((uint32_t)(version) >> 12) & 0x3ff)
|
#define VK_VERSION_MINOR(version) (((uint32_t)(version) >> 12) & 0x3ff)
|
||||||
#define VK_VERSION_PATCH(version) ((uint32_t)(version) & 0xfff)
|
#define VK_VERSION_PATCH(version) ((uint32_t)(version) & 0xfff)
|
||||||
// Version of this file
|
// Version of this file
|
||||||
#define VK_HEADER_VERSION 30
|
#define VK_HEADER_VERSION 31
|
||||||
|
|
||||||
|
|
||||||
#define VK_NULL_HANDLE 0
|
#define VK_NULL_HANDLE 0
|
||||||
|
|
Loading…
Reference in New Issue