Change log for June 10, 2019 Vulkan 1.1.111 spec update:

* Update release number to 111.

Github Issues:

  * Clean up flink:vkGetPhysicalDeviceSurfaceFormatsKHR and
    flink:vkGetPhysicalDeviceSurfaceFormats2KHR to drop the
    ename:VK_FORMAT_UNDEFINED case, require callers pass a supported
    surface, and rearrange some validation-related language (public issue
    207).
  * Allow dynamic and nonuniform indexing of acceleration structures in the
    <<interfaces-resources-descset, Descriptor Set Interface>> section
    (public KhronosGroup/glslang issue 1766).

Internal Issues:

  * Clarify when images require the use of YCbCr samplers for
    slink:VkWriteDescriptorSet and slink:VkImageViewCreateInfo (internal
    issue 1639).
  * Remove the "`block`" language around <<features-robustBufferAccess,
    vectorizing and robust buffer access>> (internal issue 1642).
  * Allow code:OpTypeImageFormat == code:Unknown for input attachments in
    the <<interfaces-resources-descset, Descriptor Set Interface>> section
    (internal issue 1645).
  * Fix asciidoctor conditionals around
    ename:VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT in the
    <<fundamentals-errorcodes>> section (internal issue 1679).
  * Remove error codes from `vk.xml` for
    flink:vkUninitializePerformanceApiINTEL, which has a `void` return type
    (internal issue 1704).
  * Various subgroup-related fixes in the <<spirvenv-capabilities,
    Capabilities>>, <<shaders-subgroup-arithmetic, Arithmetic Subgroup
    Operations>>, <<shaders-subgroup-clustered, Clustered Subgroup
    Operations>>, and <<shaders-subgroup-partitioned, Partitioned Subgroup
    Operations>> sections (internal merge request 3164).
  * Fix asciidoctor markup affecting math rendering in the <<Precision of
    core SPIR-V Instructions>> table (internal merge request 3166).
  * Fix incorrect reference to flink:vkGetPhysicalDeviceFeatures2KHR in the
    description of slink:VkPhysicalDeviceASTCDecodeFeaturesEXT (internal
    merge request 3169).
  * Fix a non-sentence in the introduction to the <<textures, Image
    Operations Overview>> section (internal merge request 3184).
  * Minor markup, grammar, and typo fixes for the
    `<<NV_shader_sm_builtins>>` extension spec language (internal merge
    request 3189).
  * Clarify that 1D and 1D array format support is optional for cubic
    filters, immediately following the <<formats-mandatory-features-astc,
    Mandatory ASTC LDR format support>> table (internal merge request 3194).
This commit is contained in:
Jon Leech 2019-06-10 03:32:46 -07:00
parent 619084d44a
commit ad46c7dc68
16 changed files with 178 additions and 76 deletions

View File

@ -8,6 +8,58 @@ public pull requests that have been accepted.
----------------------------------------------------- -----------------------------------------------------
Change log for June 10, 2019 Vulkan 1.1.111 spec update:
* Update release number to 111.
Github Issues:
* Clean up flink:vkGetPhysicalDeviceSurfaceFormatsKHR and
flink:vkGetPhysicalDeviceSurfaceFormats2KHR to drop the
ename:VK_FORMAT_UNDEFINED case, require callers pass a supported
surface, and rearrange some validation-related language (public issue
207).
* Allow dynamic and nonuniform indexing of acceleration structures in the
<<interfaces-resources-descset, Descriptor Set Interface>> section
(public KhronosGroup/glslang issue 1766).
Internal Issues:
* Clarify when images require the use of YCbCr samplers for
slink:VkWriteDescriptorSet and slink:VkImageViewCreateInfo (internal
issue 1639).
* Remove the "`block`" language around <<features-robustBufferAccess,
vectorizing and robust buffer access>> (internal issue 1642).
* Allow code:OpTypeImageFormat == code:Unknown for input attachments in
the <<interfaces-resources-descset, Descriptor Set Interface>> section
(internal issue 1645).
* Fix asciidoctor conditionals around
ename:VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT in the
<<fundamentals-errorcodes>> section (internal issue 1679).
* Remove error codes from `vk.xml` for
flink:vkUninitializePerformanceApiINTEL, which has a `void` return type
(internal issue 1704).
* Various subgroup-related fixes in the <<spirvenv-capabilities,
Capabilities>>, <<shaders-subgroup-arithmetic, Arithmetic Subgroup
Operations>>, <<shaders-subgroup-clustered, Clustered Subgroup
Operations>>, and <<shaders-subgroup-partitioned, Partitioned Subgroup
Operations>> sections (internal merge request 3164).
* Fix asciidoctor markup affecting math rendering in the <<Precision of
core SPIR-V Instructions>> table (internal merge request 3166).
* Fix incorrect reference to flink:vkGetPhysicalDeviceFeatures2KHR in the
description of slink:VkPhysicalDeviceASTCDecodeFeaturesEXT (internal
merge request 3169).
* Fix a non-sentence in the introduction to the <<textures, Image
Operations Overview>> section (internal merge request 3184).
* Minor markup, grammar, and typo fixes for the
`<<NV_shader_sm_builtins>>` extension spec language (internal merge
request 3189).
* Clarify that 1D and 1D array format support is optional for cubic
filters, immediately following the <<formats-mandatory-features-astc,
Mandatory ASTC LDR format support>> table (internal merge request 3194).
-----------------------------------------------------
Change log for June 2, 2019 Vulkan 1.1.110 spec update: Change log for June 2, 2019 Vulkan 1.1.110 spec update:
* Update release number to 110. * Update release number to 110.

View File

@ -121,7 +121,7 @@ VERBOSE =
# ADOCOPTS options for asciidoc->HTML5 output # ADOCOPTS options for asciidoc->HTML5 output
NOTEOPTS = -a editing-notes -a implementation-guide NOTEOPTS = -a editing-notes -a implementation-guide
PATCHVERSION = 110 PATCHVERSION = 111
ifneq (,$(findstring VK_VERSION_1_1,$(VERSIONS))) ifneq (,$(findstring VK_VERSION_1_1,$(VERSIONS)))
SPECREVISION = 1.1.$(PATCHVERSION) SPECREVISION = 1.1.$(PATCHVERSION)
else else

View File

@ -30,5 +30,7 @@ support cubic filtering.
=== Version History === Version History
* Revision 2, 2019-06-05 (wwlk)
- Clarify 1D optional
* Revision 1, 2019-01-24 (wwlk) * Revision 1, 2019-01-24 (wwlk)
- Initial version - Initial version

View File

@ -19,7 +19,7 @@ include::meta/VK_NV_shader_sm_builtins.txt[]
This extension provides the ability to determine device-specific properties This extension provides the ability to determine device-specific properties
on NVIDIA GPUs. on NVIDIA GPUs.
It provides the number of streaming multiprocessors (SMs), the maximum It provides the number of streaming multiprocessors (SMs), the maximum
number warps (subgroups) that can run on an SM, and shader builtins to number of warps (subgroups) that can run on an SM, and shader builtins to
enable invocations to identify which SM and warp a shader invocation is enable invocations to identify which SM and warp a shader invocation is
executing on. executing on.

View File

@ -413,6 +413,11 @@ The application can: pass a SPIR-V module to flink:vkCreateShaderModule that
uses the `SPV_NV_viewport_array2` SPIR-V extension. uses the `SPV_NV_viewport_array2` SPIR-V extension.
endif::VK_NV_viewport_array2[] endif::VK_NV_viewport_array2[]
ifdef::VK_NV_shader_subgroup_partitioned[]
The application can: pass a SPIR-V module to flink:vkCreateShaderModule that
uses the `SPV_NV_shader_subgroup_partitioned` SPIR-V extension.
endif::VK_NV_shader_subgroup_partitioned[]
ifdef::VK_EXT_shader_viewport_index_layer[] ifdef::VK_EXT_shader_viewport_index_layer[]
The application can: pass a SPIR-V module to flink:vkCreateShaderModule that The application can: pass a SPIR-V module to flink:vkCreateShaderModule that
uses the `SPV_EXT_shader_viewport_index_layer` SPIR-V extension. uses the `SPV_EXT_shader_viewport_index_layer` SPIR-V extension.
@ -1151,7 +1156,7 @@ are required: to be at least as follows:
| code:OpFMul, code:OpVectorTimesScalar, code:OpMatrixTimesScalar | code:OpFMul, code:OpVectorTimesScalar, code:OpMatrixTimesScalar
2+| Correctly rounded. 2+| Correctly rounded.
| code:OpDot(x, y) | code:OpDot(x, y)
2+| Inherited from latexmath:[\sum_{i = 0}^{n - 1} x_{i} \times y_{i}]. 2+a| Inherited from latexmath:[\sum_{i = 0}^{n - 1} x_{i} \times y_{i}].
| code:OpFOrdEqual, code:OpFUnordEqual | code:OpFOrdEqual, code:OpFUnordEqual
2+| Correct result. 2+| Correct result.
| code:OpFOrdLessThan, code:OpFUnordLessThan | code:OpFOrdLessThan, code:OpFUnordLessThan
@ -1193,10 +1198,10 @@ different sign than the infinitely precise result.
| code:fma() | code:fma()
2+| Inherited from code:OpFMul followed by code:OpFAdd. 2+| Inherited from code:OpFMul followed by code:OpFAdd.
| code:exp(x), code:exp2(x) | code:exp(x), code:exp2(x)
| [eq]#3 + 2 {times} {vert}x{vert}# ULP. | [eq]#1 + 2 {times} {vert}x{vert}# ULP. a| latexmath:[3 + 2 \times \vert x \vert] ULP. a| latexmath:[1 + 2 \times \vert x \vert] ULP.
| code:log(), code:log2() | code:log(), code:log2()
| 3 ULP outside the range [eq]#[0.5, 2.0]#. Absolute error < [eq]#2^-21^# inside the range [eq]#[0.5, 2.0]#. a| 3 ULP outside the range latexmath:[[0.5, 2.0\]]. Absolute error < latexmath:[2^{-21}] inside the range latexmath:[[0.5, 2.0\]].
| 3 ULP outside the range [eq]#[0.5, 2.0]#. Absolute error < [eq]#2^-7^# inside the range [eq]#[0.5, 2.0]#. a| 3 ULP outside the range latexmath:[[0.5, 2.0\]]. Absolute error < latexmath:[2^{-7}] inside the range latexmath:[[0.5, 2.0\]].
| code:pow(x, y) | code:pow(x, y)
2+| Inherited from code:exp2(y {times} code:log2(x)). 2+| Inherited from code:exp2(y {times} code:log2(x)).
| code:sqrt() | code:sqrt()
@ -1204,45 +1209,45 @@ different sign than the infinitely precise result.
| code:inversesqrt() | code:inversesqrt()
2+| 2 ULP. 2+| 2 ULP.
| code:radians(x) | code:radians(x)
2+| Inherited from latexmath:[\frac{x \times \pi}{180}]. 2+a| Inherited from latexmath:[\frac{x \times \pi}{180}].
| code:degrees(x) | code:degrees(x)
2+| Inherited from latexmath:[\frac{x \times 180}{\pi}]. 2+a| Inherited from latexmath:[\frac{x \times 180}{\pi}].
| code:sin() | code:sin()
| Absolute error latexmath:[\leq 2^{-11}] inside the range latexmath:[[-\pi, \pi\]]. | Absolute error latexmath:[\leq 2^{-7}] inside the range latexmath:[[-\pi, \pi\]]. a| Absolute error latexmath:[\leq 2^{-11}] inside the range latexmath:[[-\pi, \pi\]]. a| Absolute error latexmath:[\leq 2^{-7}] inside the range latexmath:[[-\pi, \pi\]].
| code:cos() | code:cos()
| Absolute error latexmath:[\leq 2^{-11}] inside the range latexmath:[[-\pi, \pi\]]. | Absolute error latexmath:[\leq 2^{-7}] inside the range latexmath:[[-\pi, \pi\]]. a| Absolute error latexmath:[\leq 2^{-11}] inside the range latexmath:[[-\pi, \pi\]]. a| Absolute error latexmath:[\leq 2^{-7}] inside the range latexmath:[[-\pi, \pi\]].
| code:tan() | code:tan()
2+| Inherited from latexmath:[\frac{sin()}{cos()}]. 2+a| Inherited from latexmath:[\frac{\sin()}{\cos()}].
| code:asin(x) | code:asin(x)
2+| Inherited from latexmath:[atan2(x, sqrt(1.0 - x^2))]. 2+a| Inherited from latexmath:[\mathrm{atan2}(x, sqrt(1.0 - x^2))].
| code:acos(x) | code:acos(x)
2+| Inherited from latexmath:[atan2(sqrt(1.0 - x^2), x)]. 2+a| Inherited from latexmath:[\mathrm{atan2}(sqrt(1.0 - x^2), x)].
| code:atan(), code:atan2() | code:atan(), code:atan2()
| 4096 ULP | 5 ULP. | 4096 ULP | 5 ULP.
| code:sinh(x) | code:sinh(x)
2+| Inherited from latexmath:[(exp(x) - exp(-x)) \times 0.5]. 2+a| Inherited from latexmath:[(\exp(x) - \exp(-x)) \times 0.5].
| code:cosh(x) | code:cosh(x)
2+| Inherited from latexmath:[(exp(x) + exp(-x)) \times 0.5]. 2+a| Inherited from latexmath:[(\exp(x) + \exp(-x)) \times 0.5].
| code:tanh() | code:tanh()
2+| Inherited from latexmath:[\frac{sinh()}{cosh()}]. 2+a| Inherited from latexmath:[\frac{\sinh()}{\cosh()}].
| code:asinh(x) | code:asinh(x)
2+| Inherited from latexmath:[log(x + sqrt(x^2 + 1.0))]. 2+a| Inherited from latexmath:[\log(x + sqrt(x^2 + 1.0))].
| code:acosh(x) | code:acosh(x)
2+| Inherited from latexmath:[log(x + sqrt(x^2 - 1.0))]. 2+a| Inherited from latexmath:[\log(x + sqrt(x^2 - 1.0))].
| code:atanh(x) | code:atanh(x)
2+| Inherited from latexmath:[log(\frac{1.0 + x}{1.0 - x}) \times 0.5]. 2+a| Inherited from latexmath:[\log(\frac{1.0 + x}{1.0 - x}) \times 0.5].
| code:frexp() | code:frexp()
2+| Correctly rounded. 2+| Correctly rounded.
| code:ldexp() | code:ldexp()
2+| Correctly rounded. 2+| Correctly rounded.
| code:length(x) | code:length(x)
2+| Inherited from latexmath:[sqrt(dot(x, x))]. 2+a| Inherited from latexmath:[sqrt(dot(x, x))].
| code:distance(x, y) | code:distance(x, y)
2+| Inherited from latexmath:[length(x - y)]. 2+a| Inherited from latexmath:[length(x - y)].
| code:cross() | code:cross()
2+| Inherited from [eq]#code:OpFSub(code:OpFMul, code:OpFMul)#. 2+| Inherited from [eq]#code:OpFSub(code:OpFMul, code:OpFMul)#.
| code:normalize(x) | code:normalize(x)
2+| Inherited from latexmath:[\frac{x}{length(x)}]. 2+a| Inherited from latexmath:[\frac{x}{length(x)}].
| code:faceforward | code:faceforward
2+| Correctly rounded. 2+| Correctly rounded.
| code:reflect(x, y) | code:reflect(x, y)
@ -1274,11 +1279,11 @@ different sign than the infinitely precise result.
| code:fclamp | code:fclamp
2+| Correctly rounded. 2+| Correctly rounded.
| code:fmix(x, y, a) | code:fmix(x, y, a)
2+| Inherited from [eq]#x {times} (1.0 - a) + y {times} a#. 2+a| Inherited from latexmath:[x \times (1.0 - a) + y \times a].
| code:step | code:step
2+| Correctly rounded. 2+| Correctly rounded.
| code:smoothStep(edge0, edge1, x) | code:smoothStep(edge0, edge1, x)
2+| Inherited from [eq]#t {times} t {times} (3.0 - 2.0 {times} t)#, 2+a| Inherited from latexmath:[t^{2} \times (3.0 - 2.0 \times t)],
where latexmath:[t = clamp(\frac{x - edge0}{edge1 - edge0}, 0.0, 1.0)]. where latexmath:[t = clamp(\frac{x - edge0}{edge1 - edge0}, 0.0, 1.0)].
| code:nmin | code:nmin
2+| Correctly rounded. 2+| Correctly rounded.

View File

@ -806,7 +806,6 @@ include::{generated}/api/protos/vkGetPhysicalDeviceSurfaceFormatsKHR.txt[]
If pname:pSurfaceFormats is `NULL`, then the number of format pairs If pname:pSurfaceFormats is `NULL`, then the number of format pairs
supported for the given pname:surface is returned in supported for the given pname:surface is returned in
pname:pSurfaceFormatCount. pname:pSurfaceFormatCount.
The number of format pairs supported will be greater than or equal to 1.
Otherwise, pname:pSurfaceFormatCount must: point to a variable set by the Otherwise, pname:pSurfaceFormatCount must: point to a variable set by the
user to the number of elements in the pname:pSurfaceFormats array, and on user to the number of elements in the pname:pSurfaceFormats array, and on
return the variable is overwritten with the number of structures actually return the variable is overwritten with the number of structures actually
@ -818,6 +817,15 @@ If pname:pSurfaceFormatCount is smaller than the number of format pairs
supported for the given pname:surface, ename:VK_INCOMPLETE will be returned supported for the given pname:surface, ename:VK_INCOMPLETE will be returned
instead of ename:VK_SUCCESS to indicate that not all the available values instead of ename:VK_SUCCESS to indicate that not all the available values
were returned. were returned.
The number of format pairs supported must: be greater than or equal to 1.
.Valid Usage
****
* [[VUID-vkGetPhysicalDeviceSurfaceFormatsKHR-surface-02739]]
pname:surface must be supported by pname:physicalDevice, as reported by
flink:vkGetPhysicalDeviceSurfaceSupportKHR or an equivalent
platform-specific mechanism.
****
include::{generated}/validity/protos/vkGetPhysicalDeviceSurfaceFormatsKHR.txt[] include::{generated}/validity/protos/vkGetPhysicalDeviceSurfaceFormatsKHR.txt[]
-- --
@ -861,7 +869,6 @@ include::{generated}/api/protos/vkGetPhysicalDeviceSurfaceFormats2KHR.txt[]
If pname:pSurfaceFormats is `NULL`, then the number of format tuples If pname:pSurfaceFormats is `NULL`, then the number of format tuples
supported for the given pname:surface is returned in supported for the given pname:surface is returned in
pname:pSurfaceFormatCount. pname:pSurfaceFormatCount.
The number of format tuples supported will be greater than or equal to 1.
Otherwise, pname:pSurfaceFormatCount must: point to a variable set by the Otherwise, pname:pSurfaceFormatCount must: point to a variable set by the
user to the number of elements in the pname:pSurfaceFormats array, and on user to the number of elements in the pname:pSurfaceFormats array, and on
return the variable is overwritten with the number of structures actually return the variable is overwritten with the number of structures actually
@ -873,6 +880,16 @@ If pname:pSurfaceFormatCount is smaller than the number of format tuples
supported for the surface parameters described in pname:pSurfaceInfo, supported for the surface parameters described in pname:pSurfaceInfo,
ename:VK_INCOMPLETE will be returned instead of ename:VK_SUCCESS to indicate ename:VK_INCOMPLETE will be returned instead of ename:VK_SUCCESS to indicate
that not all the available values were returned. that not all the available values were returned.
The number of format tuples supported must: be greater than or equal to 1.
.Valid Usage
****
* [[VUID-vkGetPhysicalDeviceSurfaceFormats2KHR-pSurfaceInfo-02740]]
pname:pSurfaceInfo::pname:surface must be supported by
pname:physicalDevice, as reported by
flink:vkGetPhysicalDeviceSurfaceSupportKHR or an equivalent
platform-specific mechanism.
****
include::{generated}/validity/protos/vkGetPhysicalDeviceSurfaceFormats2KHR.txt[] include::{generated}/validity/protos/vkGetPhysicalDeviceSurfaceFormats2KHR.txt[]
-- --
@ -1044,15 +1061,8 @@ a color renderable format for ename:VK_IMAGE_TILING_OPTIMAL, then
pname:pSurfaceFormats must: also contain an entry with the same value for pname:pSurfaceFormats must: also contain an entry with the same value for
pname:colorSpace and pname:format equal to the corresponding SRGB (or UNORM) pname:colorSpace and pname:format equal to the corresponding SRGB (or UNORM)
format. format.
pname:pSurfaceFormats must: not contain an entry whose value for
[NOTE] pname:format is ename:VK_FORMAT_UNDEFINED.
.Note
====
If pname:pSurfaceFormats includes just one entry, whose value for
pname:format is ename:VK_FORMAT_UNDEFINED, pname:surface has no preferred
format.
In this case, the application can: use any valid elink:VkFormat value.
====
[NOTE] [NOTE]
.Note .Note

View File

@ -2671,13 +2671,15 @@ ifdef::VULKAN_1_1,VK_KHR_sampler_ycbcr_conversion[]
the pname:imageView member of each pname:pImageInfo element must: have the pname:imageView member of each pname:pImageInfo element must: have
been created without a sname:VkSamplerYcbcrConversionInfo structure in been created without a sname:VkSamplerYcbcrConversionInfo structure in
its pname:pNext chain its pname:pNext chain
* [[VUID-VkWriteDescriptorSet-descriptorType-01947]] * [[VUID-VkWriteDescriptorSet-descriptorType-02738]]
If pname:descriptorType is If pname:descriptorType is
ename:VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, and if any element of ename:VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, and if any element of
pname:pImageInfo has a pname:imageView member that was created with a pname:pImageInfo has a pname:imageView member that was created with a
sname:VkSamplerYcbcrConversionInfo structure in its pname:pNext chain, sname:VkSamplerYcbcrConversionInfo structure in its pname:pNext chain,
then pname:dstSet must: have been allocated with a layout that included then pname:dstSet must: have been allocated with a layout that included
immutable samplers for pname:dstBinding immutable samplers for pname:dstBinding, and the corresponding immutable
sampler must: have been created with an _identically defined_
sname:VkSamplerYcbcrConversionInfo object
* [[VUID-VkWriteDescriptorSet-descriptorType-01948]] * [[VUID-VkWriteDescriptorSet-descriptorType-01948]]
If pname:descriptorType is If pname:descriptorType is
ename:VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, and pname:dstSet was ename:VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, and pname:dstSet was

View File

@ -193,11 +193,10 @@ considered out of bounds even if the members at the end are not statically
used. used.
==== ====
*** If any buffer access in a given SPIR-V block is determined to be out *** If any buffer access is determined to be out of bounds, then any other
of bounds, then any other access of the same type (load, store, or access of the same type (load, store, or atomic) to the same buffer
atomic) in the same SPIR-V block that accesses an address less than 16 that accesses an address less than 16 bytes away from the out of
bytes away from the out of bounds address may: also be considered out bounds address may: also be considered out of bounds.
of bounds.
** Out-of-bounds buffer loads will return any of the following values: ** Out-of-bounds buffer loads will return any of the following values:
*** Values from anywhere within the memory range(s) bound to the buffer *** Values from anywhere within the memory range(s) bound to the buffer
(possibly including bytes of memory past the end of the buffer, up to (possibly including bytes of memory past the end of the buffer, up to
@ -1429,7 +1428,7 @@ describe the following features:
ename:VK_FORMAT_E5B9G9R9_UFLOAT_PACK32 internal precision. ename:VK_FORMAT_E5B9G9R9_UFLOAT_PACK32 internal precision.
If the sname:VkPhysicalDeviceASTCDecodeFeaturesEXT structure is included in If the sname:VkPhysicalDeviceASTCDecodeFeaturesEXT structure is included in
the pname:pNext chain of flink:vkGetPhysicalDeviceFeatures2KHR, it is filled the pname:pNext chain of slink:VkPhysicalDeviceFeatures2KHR, it is filled
with values indicating whether each feature is supported. with values indicating whether each feature is supported.
sname:VkPhysicalDeviceASTCDecodeFeaturesEXT can: also be used in the sname:VkPhysicalDeviceASTCDecodeFeaturesEXT can: also be used in the
pname:pNext chain of flink:vkCreateDevice to enable features. pname:pNext chain of flink:vkCreateDevice to enable features.
@ -2189,7 +2188,7 @@ structure describe the following features:
If the sname:VkPhysicalDeviceShaderSMBuiltinsFeaturesNV structure is If the sname:VkPhysicalDeviceShaderSMBuiltinsFeaturesNV structure is
included in the pname:pNext chain of slink:VkPhysicalDeviceFeatures2, it is included in the pname:pNext chain of slink:VkPhysicalDeviceFeatures2, it is
filled with values indicating whether the feature is supported. filled with values indicating whether the feature is supported.
sname:VkPhysicalDeviceShaderSMBuiltinFeaturesNV can: also be used in the sname:VkPhysicalDeviceShaderSMBuiltinsFeaturesNV can: also be used in the
pname:pNext chain of slink:VkDeviceCreateInfo to enable the feature. pname:pNext chain of slink:VkDeviceCreateInfo to enable the feature.
include::{generated}/validity/structs/VkPhysicalDeviceShaderSMBuiltinsFeaturesNV.txt[] include::{generated}/validity/structs/VkPhysicalDeviceShaderSMBuiltinsFeaturesNV.txt[]

View File

@ -2983,8 +2983,6 @@ If cubic filtering is supported,
ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT must: be ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT must: be
supported for the following image view types: supported for the following image view types:
* ename:VK_IMAGE_VIEW_TYPE_1D
* ename:VK_IMAGE_VIEW_TYPE_1D_ARRAY
* ename:VK_IMAGE_VIEW_TYPE_2D * ename:VK_IMAGE_VIEW_TYPE_2D
* ename:VK_IMAGE_VIEW_TYPE_2D_ARRAY * ename:VK_IMAGE_VIEW_TYPE_2D_ARRAY
@ -3040,19 +3038,12 @@ for the following additional formats:
* ename:VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK * ename:VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK
* ename:VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK * ename:VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK
If cubic filtering is supported for any other uncompressed formats, the If cubic filtering is supported for any other formats, the following image
following image view types must: be supported for those formats: view types must: be supported for those formats:
* ename:VK_IMAGE_VIEW_TYPE_1D
* ename:VK_IMAGE_VIEW_TYPE_1D_ARRAY
* ename:VK_IMAGE_VIEW_TYPE_2D
* ename:VK_IMAGE_VIEW_TYPE_2D_ARRAY
If cubic filtering is supported for any other compressed formats, the
following image view types must: be supported for those formats:
* ename:VK_IMAGE_VIEW_TYPE_2D * ename:VK_IMAGE_VIEW_TYPE_2D
* ename:VK_IMAGE_VIEW_TYPE_2D_ARRAY * ename:VK_IMAGE_VIEW_TYPE_2D_ARRAY
endif::VK_IMG_filter_cubic,VK_EXT_filter_cubic[] endif::VK_IMG_filter_cubic,VK_EXT_filter_cubic[]
ifdef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] ifdef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[]

View File

@ -1173,14 +1173,14 @@ ifdef::VK_EXT_buffer_device_address[]
* ename:VK_ERROR_INVALID_DEVICE_ADDRESS_EXT A buffer creation failed * ename:VK_ERROR_INVALID_DEVICE_ADDRESS_EXT A buffer creation failed
because the requested address is not available. because the requested address is not available.
endif::VK_EXT_buffer_device_address[] endif::VK_EXT_buffer_device_address[]
ifdef::VK_KHR_win32_surface,VK_EXT_full_screen_exclusive[] ifdef::VK_EXT_full_screen_exclusive[]
* ename:VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT An operation on a * ename:VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT An operation on a
swapchain created with swapchain created with
ename:VK_FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT failed as it ename:VK_FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT failed as it
did not have exlusive full-screen access. did not have exlusive full-screen access.
This may: occur due to implementation-dependent reasons, outside of the This may: occur due to implementation-dependent reasons, outside of the
application's control. application's control.
endif::VK_KHR_win32_surface,VK_EXT_full_screen_exclusive[] endif::VK_EXT_full_screen_exclusive[]
If a command returns a run time error, unless otherwise specified any output If a command returns a run time error, unless otherwise specified any output
parameters will have undefined: contents, except that if the output parameters will have undefined: contents, except that if the output

View File

@ -537,6 +537,8 @@ following conditions:
pname:shaderStorageImageReadWithoutFormat feature is enabled and the pname:shaderStorageImageReadWithoutFormat feature is enabled and the
shader module declares the code:StorageImageReadWithoutFormat shader module declares the code:StorageImageReadWithoutFormat
capability. capability.
* For code:OpImageRead, if code:Dim is code:SubpassData (indicating a read
from an input attachment).
The code:Image code:Format of an code:OpTypeImage declaration must: not be The code:Image code:Format of an code:OpTypeImage declaration must: not be
*Unknown*, for variables which are used for code:OpAtomic* operations. *Unknown*, for variables which are used for code:OpAtomic* operations.
@ -653,6 +655,11 @@ ifdef::VK_EXT_descriptor_indexing[]
** Non-uniform: pname:shaderStorageBufferArrayNonUniformIndexing and ** Non-uniform: pname:shaderStorageBufferArrayNonUniformIndexing and
code:StorageBufferArrayNonUniformIndexingEXT code:StorageBufferArrayNonUniformIndexingEXT
endif::VK_EXT_descriptor_indexing[] endif::VK_EXT_descriptor_indexing[]
ifdef::VK_NV_ray_tracing[]
* Acceleration structures:
** No additional capabilities needed.
endif::VK_NV_ray_tracing[]
ifdef::VK_EXT_descriptor_indexing[] ifdef::VK_EXT_descriptor_indexing[]
If an instruction loads from or stores to a resource (including atomics and If an instruction loads from or stores to a resource (including atomics and
@ -2581,7 +2588,7 @@ make that variable contain the sub-pixel position of the sample being
shaded. shaded.
The top left of the pixel is considered to be at coordinate [eq]#(0,0)# and The top left of the pixel is considered to be at coordinate [eq]#(0,0)# and
the bottom right of the pixel is considered to be at coordinate [eq]#(1,1)#. the bottom right of the pixel is considered to be at coordinate [eq]#(1,1)#.
+
ifdef::VK_EXT_fragment_density_map[] ifdef::VK_EXT_fragment_density_map[]
If the render pass has a fragment density map attachment, the variable will If the render pass has a fragment density map attachment, the variable will
instead contain the sub-fragment position of the sample being shaded. instead contain the sub-fragment position of the sample being shaded.
@ -2589,11 +2596,10 @@ The top left of the fragment is considered to be at coordinate [eq]#(0,0)#
and the bottom right of the fragment is considered to be at coordinate and the bottom right of the fragment is considered to be at coordinate
[eq]#(1,1)# for any fragment area. [eq]#(1,1)# for any fragment area.
endif::VK_EXT_fragment_density_map[] endif::VK_EXT_fragment_density_map[]
+
If a fragment shader entry point's interface includes an input variable If a fragment shader entry point's interface includes an input variable
decorated with code:SamplePosition, <<primsrast-sampleshading,Sample decorated with code:SamplePosition, <<primsrast-sampleshading,Sample
Shading>> is considered enabled with a pname:minSampleShading value of 1.0. Shading>> is considered enabled with a pname:minSampleShading value of 1.0.
+ +
The code:SamplePosition decoration must: be used only within fragment The code:SamplePosition decoration must: be used only within fragment
shaders. shaders.

View File

@ -2912,6 +2912,9 @@ defined object_ of type slink:VkSamplerYcbcrConversion to that used to
create the sampler must: be passed to flink:vkCreateImageView in a create the sampler must: be passed to flink:vkCreateImageView in a
slink:VkSamplerYcbcrConversionInfo added to the pname:pNext chain of slink:VkSamplerYcbcrConversionInfo added to the pname:pNext chain of
slink:VkImageViewCreateInfo. slink:VkImageViewCreateInfo.
Conversely, if a slink:VkSamplerYcbcrConversion object is passed to
flink:vkCreateImageView, an identically defined
slink:VkSamplerYcbcrConversion object must: be used when sampling the image.
If the image has a If the image has a
<<formats-requiring-sampler-ycbcr-conversion,multi-planar>> pname:format and <<formats-requiring-sampler-ycbcr-conversion,multi-planar>> pname:format and

View File

@ -973,7 +973,7 @@ For reduction operations, each invocation in a subgroup will obtain the same
result of these arithmetic operations applied across the subgroup. result of these arithmetic operations applied across the subgroup.
For scan operations, each invocation in the subgroup will perform an For scan operations, each invocation in the subgroup will perform an
inclusive or exclusive scan, cumulatively applying the operation across the inclusive or exclusive scan, cumulatively applying the operation across the
invocations in a subgroup in linear order. invocations in a subgroup in an implementation-defined order.
The operations supported are add, mul, min, max, and, or, xor. The operations supported are add, mul, min, max, and, or, xor.
[[shaders-subgroup-ballot]] [[shaders-subgroup-ballot]]
@ -1023,7 +1023,7 @@ ifdef::VK_VERSION_1_1[]
For fragment shaders, if the pname:subgroupSize field of For fragment shaders, if the pname:subgroupSize field of
slink:VkPhysicalDeviceSubgroupProperties is at least 4, each quad slink:VkPhysicalDeviceSubgroupProperties is at least 4, each quad
corresponds to one of the groups of four shader invocations used for corresponds to one of the groups of four shader invocations used for
<<texture-derivatives-compute,derivatives>>. <<texture-derivatives,derivatives>>.
endif::VK_VERSION_1_1[] endif::VK_VERSION_1_1[]
ifdef::VK_NV_compute_shader_derivatives[] ifdef::VK_NV_compute_shader_derivatives[]
For compute shaders using the code:DerivativeGroupQuadsNV or For compute shaders using the code:DerivativeGroupQuadsNV or
@ -1039,11 +1039,11 @@ ifdef::VK_NV_shader_subgroup_partitioned[]
[[shaders-subgroup-partitioned]] [[shaders-subgroup-partitioned]]
=== Partitioned Subgroup Operations === Partitioned Subgroup Operations
The partitioned subgroup operations allow invocations to perform an The partitioned subgroup operations allow a subgroup to partition its
operation among partitions of a subgroup, such that the operation is only invocations into disjoint subsets and to perform scan and reduce operations
performed within the subgroup invocations within a partition. among invocations belonging to the same subset.
The partitions for partitioned subgroup operations can: group the The partitions for partitioned subgroup operations are specified by a ballot
invocations into arbitrary subsets and can: be computed at runtime. operation and can: be computed at runtime.
The operations supported are add, mul, min, max, and, or, xor. The operations supported are add, mul, min, max, and, or, xor.
endif::VK_NV_shader_subgroup_partitioned[] endif::VK_NV_shader_subgroup_partitioned[]

View File

@ -7,8 +7,8 @@
== Image Operations Overview == Image Operations Overview
Image Operations are steps performed by SPIR-V image instructions, where Vulkan Image Operations are operations performed by those SPIR-V Image
those instructions which take an code:OpTypeImage (representing a Instructions which take an code:OpTypeImage (representing a
sname:VkImageView) or code:OpTypeSampledImage (representing a sname:VkImageView) or code:OpTypeSampledImage (representing a
(sname:VkImageView, sname:VkSampler) pair) and texel coordinates as (sname:VkImageView, sname:VkSampler) pair) and texel coordinates as
operands, and return a value based on one or more neighboring texture operands, and return a value based on one or more neighboring texture
@ -24,7 +24,8 @@ The discrete samples remain essentially equivalent, however, so we retain
the historical term texel to refer to them. the historical term texel to refer to them.
==== ====
SPIR-V Image Instructions include the following functionality: Image Operations include the functionality of the following SPIR-V Image
Instructions:
* code:OpImageSample* and code:OpImageSparseSample* read one or more * code:OpImageSample* and code:OpImageSparseSample* read one or more
neighboring texels of the image, and <<textures-texel-filtering,filter>> neighboring texels of the image, and <<textures-texel-filtering,filter>>
@ -1341,6 +1342,7 @@ The converted value of any integer that cannot be represented in the target
format is undefined:. format is undefined:.
[[texture-derivatives]]
== Derivative Operations == Derivative Operations
SPIR-V derivative instructions include code:OpDPdx, code:OpDPdy, SPIR-V derivative instructions include code:OpDPdx, code:OpDPdy,

View File

@ -1,2 +1,2 @@
# The value to start tagging VU statements at, unless overridden by -nextvu # The value to start tagging VU statements at, unless overridden by -nextvu
startVUID = 2738 startVUID = 2741

View File

@ -154,7 +154,7 @@ server.
<type category="define">// Vulkan 1.1 version number <type category="define">// Vulkan 1.1 version number
#define <name>VK_API_VERSION_1_1</name> <type>VK_MAKE_VERSION</type>(1, 1, 0)// Patch version should always be set to 0</type> #define <name>VK_API_VERSION_1_1</name> <type>VK_MAKE_VERSION</type>(1, 1, 0)// Patch version should always be set to 0</type>
<type category="define">// Version of this file <type category="define">// Version of this file
#define <name>VK_HEADER_VERSION</name> 110</type> #define <name>VK_HEADER_VERSION</name> 111</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>
@ -7473,7 +7473,7 @@ typedef void <name>CAMetalLayer</name>;
<param><type>VkDevice</type> <name>device</name></param> <param><type>VkDevice</type> <name>device</name></param>
<param>const <type>VkInitializePerformanceApiInfoINTEL</type>* <name>pInitializeInfo</name></param> <param>const <type>VkInitializePerformanceApiInfoINTEL</type>* <name>pInitializeInfo</name></param>
</command> </command>
<command successcodes="VK_SUCCESS" errorcodes="VK_ERROR_TOO_MANY_OBJECTS,VK_ERROR_OUT_OF_HOST_MEMORY"> <command>
<proto><type>void</type> <name>vkUninitializePerformanceApiINTEL</name></proto> <proto><type>void</type> <name>vkUninitializePerformanceApiINTEL</name></proto>
<param><type>VkDevice</type> <name>device</name></param> <param><type>VkDevice</type> <name>device</name></param>
</command> </command>
@ -8284,7 +8284,7 @@ typedef void <name>CAMetalLayer</name>;
</extension> </extension>
<extension name="VK_IMG_filter_cubic" number="16" type="device" author="IMG" contact="Tobias Hector @tobski" supported="vulkan"> <extension name="VK_IMG_filter_cubic" number="16" type="device" author="IMG" contact="Tobias Hector @tobski" supported="vulkan">
<require> <require>
<enum value="1" name="VK_IMG_FILTER_CUBIC_SPEC_VERSION"/> <enum value="2" name="VK_IMG_FILTER_CUBIC_SPEC_VERSION"/>
<enum value="&quot;VK_IMG_filter_cubic&quot;" name="VK_IMG_FILTER_CUBIC_EXTENSION_NAME"/> <enum value="&quot;VK_IMG_filter_cubic&quot;" name="VK_IMG_FILTER_CUBIC_EXTENSION_NAME"/>
<enum offset="0" extends="VkFilter" name="VK_FILTER_CUBIC_IMG"/> <enum offset="0" extends="VkFilter" name="VK_FILTER_CUBIC_IMG"/>
<enum bitpos="13" extends="VkFormatFeatureFlagBits" name="VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG" comment="Format can be filtered with VK_FILTER_CUBIC_IMG when being sampled"/> <enum bitpos="13" extends="VkFormatFeatureFlagBits" name="VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG" comment="Format can be filtered with VK_FILTER_CUBIC_IMG when being sampled"/>
@ -11081,5 +11081,35 @@ typedef void <name>CAMetalLayer</name>;
<enum value="&quot;VK_EXT_extension_277&quot;" name="VK_EXT_extension_277"/> <enum value="&quot;VK_EXT_extension_277&quot;" name="VK_EXT_extension_277"/>
</require> </require>
</extension> </extension>
<extension name="VK_NV_extension_278" number="278" type="device" author="NV" contact="Christoph Kubisch @pixeljetstream" supported="disabled">
<require>
<enum value="0" name="VK_NV_EXTENSION_278_SPEC_VERSION"/>
<enum value="&quot;VK_NV_extension_278&quot;" name="VK_NV_extension_278"/>
</require>
</extension>
<extension name="VK_NV_extension_279" number="279" type="device" author="NV" contact="Christoph Kubisch @pixeljetstream" supported="disabled">
<require>
<enum value="0" name="VK_NV_EXTENSION_279_SPEC_VERSION"/>
<enum value="&quot;VK_NV_extension_279&quot;" name="VK_NV_extension_279"/>
</require>
</extension>
<extension name="VK_KHR_extension_280" number="280" type="device" author="KHR" contact="Kevin Petit @kevinpetit" supported="disabled">
<require>
<enum value="0" name="VK_KHR_EXTENSION_280_SPEC_VERSION"/>
<enum value="&quot;VK_KHR_extension_280&quot;" name="VK_KHR_extension_280"/>
</require>
</extension>
<extension name="VK_ARM_extension_281" number="281" type="device" author="ARM" contact="Kevin Petit @kevinpetit" supported="disabled">
<require>
<enum value="0" name="VK_ARM_EXTENSION_281_SPEC_VERSION"/>
<enum value="&quot;VK_ARM_extension_281&quot;" name="VK_ARM_extension_281"/>
</require>
</extension>
<extension name="VK_EXT_extension_282" number="282" type="device" author="EXT" contact="Jeff Bolz @jeffbolznv" supported="disabled">
<require>
<enum value="0" name="VK_EXT_EXTENSION_282_SPEC_VERSION"/>
<enum value="&quot;VK_EXT_extension_282&quot;" name="VK_EXT_extension_282"/>
</require>
</extension>
</extensions> </extensions>
</registry> </registry>