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:
parent
619084d44a
commit
ad46c7dc68
|
@ -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:
|
||||
|
||||
* Update release number to 110.
|
||||
|
|
2
Makefile
2
Makefile
|
@ -121,7 +121,7 @@ VERBOSE =
|
|||
# ADOCOPTS options for asciidoc->HTML5 output
|
||||
|
||||
NOTEOPTS = -a editing-notes -a implementation-guide
|
||||
PATCHVERSION = 110
|
||||
PATCHVERSION = 111
|
||||
ifneq (,$(findstring VK_VERSION_1_1,$(VERSIONS)))
|
||||
SPECREVISION = 1.1.$(PATCHVERSION)
|
||||
else
|
||||
|
|
|
@ -30,5 +30,7 @@ support cubic filtering.
|
|||
|
||||
=== Version History
|
||||
|
||||
* Revision 2, 2019-06-05 (wwlk)
|
||||
- Clarify 1D optional
|
||||
* Revision 1, 2019-01-24 (wwlk)
|
||||
- Initial version
|
||||
|
|
|
@ -19,7 +19,7 @@ include::meta/VK_NV_shader_sm_builtins.txt[]
|
|||
This extension provides the ability to determine device-specific properties
|
||||
on NVIDIA GPUs.
|
||||
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
|
||||
executing on.
|
||||
|
||||
|
|
|
@ -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.
|
||||
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[]
|
||||
The application can: pass a SPIR-V module to flink:vkCreateShaderModule that
|
||||
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
|
||||
2+| Correctly rounded.
|
||||
| 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
|
||||
2+| Correct result.
|
||||
| code:OpFOrdLessThan, code:OpFUnordLessThan
|
||||
|
@ -1193,10 +1198,10 @@ different sign than the infinitely precise result.
|
|||
| code:fma()
|
||||
2+| Inherited from code:OpFMul followed by code:OpFAdd.
|
||||
| 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()
|
||||
| 3 ULP outside the range [eq]#[0.5, 2.0]#. Absolute error < [eq]#2^-21^# inside the range [eq]#[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^{-21}] inside the range latexmath:[[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)
|
||||
2+| Inherited from code:exp2(y {times} code:log2(x)).
|
||||
| code:sqrt()
|
||||
|
@ -1204,45 +1209,45 @@ different sign than the infinitely precise result.
|
|||
| code:inversesqrt()
|
||||
2+| 2 ULP.
|
||||
| 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)
|
||||
2+| Inherited from latexmath:[\frac{x \times 180}{\pi}].
|
||||
2+a| Inherited from latexmath:[\frac{x \times 180}{\pi}].
|
||||
| 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()
|
||||
| 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()
|
||||
2+| Inherited from latexmath:[\frac{sin()}{cos()}].
|
||||
2+a| Inherited from latexmath:[\frac{\sin()}{\cos()}].
|
||||
| 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)
|
||||
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()
|
||||
| 4096 ULP | 5 ULP.
|
||||
| 4096 ULP | 5 ULP.
|
||||
| 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)
|
||||
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()
|
||||
2+| Inherited from latexmath:[\frac{sinh()}{cosh()}].
|
||||
2+a| Inherited from latexmath:[\frac{\sinh()}{\cosh()}].
|
||||
| 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)
|
||||
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)
|
||||
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()
|
||||
2+| Correctly rounded.
|
||||
| code:ldexp()
|
||||
2+| Correctly rounded.
|
||||
| code:length(x)
|
||||
2+| Inherited from latexmath:[sqrt(dot(x, x))].
|
||||
2+a| Inherited from latexmath:[sqrt(dot(x, x))].
|
||||
| code:distance(x, y)
|
||||
2+| Inherited from latexmath:[length(x - y)].
|
||||
2+a| Inherited from latexmath:[length(x - y)].
|
||||
| code:cross()
|
||||
2+| Inherited from [eq]#code:OpFSub(code:OpFMul, code:OpFMul)#.
|
||||
| code:normalize(x)
|
||||
2+| Inherited from latexmath:[\frac{x}{length(x)}].
|
||||
2+a| Inherited from latexmath:[\frac{x}{length(x)}].
|
||||
| code:faceforward
|
||||
2+| Correctly rounded.
|
||||
| code:reflect(x, y)
|
||||
|
@ -1274,11 +1279,11 @@ different sign than the infinitely precise result.
|
|||
| code:fclamp
|
||||
2+| Correctly rounded.
|
||||
| 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
|
||||
2+| Correctly rounded.
|
||||
| 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)].
|
||||
| code:nmin
|
||||
2+| Correctly rounded.
|
||||
|
|
|
@ -806,7 +806,6 @@ include::{generated}/api/protos/vkGetPhysicalDeviceSurfaceFormatsKHR.txt[]
|
|||
If pname:pSurfaceFormats is `NULL`, then the number of format pairs
|
||||
supported for the given pname:surface is returned in
|
||||
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
|
||||
user to the number of elements in the pname:pSurfaceFormats array, and on
|
||||
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
|
||||
instead of ename:VK_SUCCESS to indicate that not all the available values
|
||||
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[]
|
||||
--
|
||||
|
@ -861,7 +869,6 @@ include::{generated}/api/protos/vkGetPhysicalDeviceSurfaceFormats2KHR.txt[]
|
|||
If pname:pSurfaceFormats is `NULL`, then the number of format tuples
|
||||
supported for the given pname:surface is returned in
|
||||
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
|
||||
user to the number of elements in the pname:pSurfaceFormats array, and on
|
||||
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,
|
||||
ename:VK_INCOMPLETE will be returned instead of ename:VK_SUCCESS to indicate
|
||||
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[]
|
||||
--
|
||||
|
@ -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:colorSpace and pname:format equal to the corresponding SRGB (or UNORM)
|
||||
format.
|
||||
|
||||
[NOTE]
|
||||
.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.
|
||||
====
|
||||
pname:pSurfaceFormats must: not contain an entry whose value for
|
||||
pname:format is ename:VK_FORMAT_UNDEFINED.
|
||||
|
||||
[NOTE]
|
||||
.Note
|
||||
|
|
|
@ -2671,13 +2671,15 @@ ifdef::VULKAN_1_1,VK_KHR_sampler_ycbcr_conversion[]
|
|||
the pname:imageView member of each pname:pImageInfo element must: have
|
||||
been created without a sname:VkSamplerYcbcrConversionInfo structure in
|
||||
its pname:pNext chain
|
||||
* [[VUID-VkWriteDescriptorSet-descriptorType-01947]]
|
||||
* [[VUID-VkWriteDescriptorSet-descriptorType-02738]]
|
||||
If pname:descriptorType is
|
||||
ename:VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, and if any element of
|
||||
pname:pImageInfo has a pname:imageView member that was created with a
|
||||
sname:VkSamplerYcbcrConversionInfo structure in its pname:pNext chain,
|
||||
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]]
|
||||
If pname:descriptorType is
|
||||
ename:VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, and pname:dstSet was
|
||||
|
|
|
@ -193,11 +193,10 @@ considered out of bounds even if the members at the end are not statically
|
|||
used.
|
||||
====
|
||||
|
||||
*** If any buffer access in a given SPIR-V block is determined to be out
|
||||
of bounds, then any other access of the same type (load, store, or
|
||||
atomic) in the same SPIR-V block that accesses an address less than 16
|
||||
bytes away from the out of bounds address may: also be considered out
|
||||
of bounds.
|
||||
*** If any buffer access is determined to be out of bounds, then any other
|
||||
access of the same type (load, store, or atomic) to the same buffer
|
||||
that accesses an address less than 16 bytes away from the out of
|
||||
bounds address may: also be considered out of bounds.
|
||||
** Out-of-bounds buffer loads will return any of the following values:
|
||||
*** 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
|
||||
|
@ -1429,7 +1428,7 @@ describe the following features:
|
|||
ename:VK_FORMAT_E5B9G9R9_UFLOAT_PACK32 internal precision.
|
||||
|
||||
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.
|
||||
sname:VkPhysicalDeviceASTCDecodeFeaturesEXT can: also be used in the
|
||||
pname:pNext chain of flink:vkCreateDevice to enable features.
|
||||
|
@ -2189,7 +2188,7 @@ structure describe the following features:
|
|||
If the sname:VkPhysicalDeviceShaderSMBuiltinsFeaturesNV structure is
|
||||
included in the pname:pNext chain of slink:VkPhysicalDeviceFeatures2, it is
|
||||
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.
|
||||
|
||||
include::{generated}/validity/structs/VkPhysicalDeviceShaderSMBuiltinsFeaturesNV.txt[]
|
||||
|
|
|
@ -2983,8 +2983,6 @@ If cubic filtering is supported,
|
|||
ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT must: be
|
||||
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_ARRAY
|
||||
|
||||
|
@ -3040,19 +3038,12 @@ for the following additional formats:
|
|||
* ename:VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK
|
||||
* ename:VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK
|
||||
|
||||
If cubic filtering is supported for any other uncompressed formats, the
|
||||
following image 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:
|
||||
If cubic filtering is supported for any other formats, the following image
|
||||
view types must: be supported for those formats:
|
||||
|
||||
* ename:VK_IMAGE_VIEW_TYPE_2D
|
||||
* ename:VK_IMAGE_VIEW_TYPE_2D_ARRAY
|
||||
|
||||
endif::VK_IMG_filter_cubic,VK_EXT_filter_cubic[]
|
||||
|
||||
ifdef::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[]
|
||||
|
|
|
@ -1173,14 +1173,14 @@ ifdef::VK_EXT_buffer_device_address[]
|
|||
* ename:VK_ERROR_INVALID_DEVICE_ADDRESS_EXT A buffer creation failed
|
||||
because the requested address is not available.
|
||||
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
|
||||
swapchain created with
|
||||
ename:VK_FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT failed as it
|
||||
did not have exlusive full-screen access.
|
||||
This may: occur due to implementation-dependent reasons, outside of the
|
||||
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
|
||||
parameters will have undefined: contents, except that if the output
|
||||
|
|
|
@ -537,6 +537,8 @@ following conditions:
|
|||
pname:shaderStorageImageReadWithoutFormat feature is enabled and the
|
||||
shader module declares the code:StorageImageReadWithoutFormat
|
||||
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
|
||||
*Unknown*, for variables which are used for code:OpAtomic* operations.
|
||||
|
@ -653,6 +655,11 @@ ifdef::VK_EXT_descriptor_indexing[]
|
|||
** Non-uniform: pname:shaderStorageBufferArrayNonUniformIndexing and
|
||||
code:StorageBufferArrayNonUniformIndexingEXT
|
||||
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[]
|
||||
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.
|
||||
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)#.
|
||||
|
||||
+
|
||||
ifdef::VK_EXT_fragment_density_map[]
|
||||
If the render pass has a fragment density map attachment, the variable will
|
||||
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
|
||||
[eq]#(1,1)# for any fragment area.
|
||||
endif::VK_EXT_fragment_density_map[]
|
||||
|
||||
+
|
||||
If a fragment shader entry point's interface includes an input variable
|
||||
decorated with code:SamplePosition, <<primsrast-sampleshading,Sample
|
||||
Shading>> is considered enabled with a pname:minSampleShading value of 1.0.
|
||||
|
||||
+
|
||||
The code:SamplePosition decoration must: be used only within fragment
|
||||
shaders.
|
||||
|
|
|
@ -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
|
||||
slink:VkSamplerYcbcrConversionInfo added to the pname:pNext chain of
|
||||
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
|
||||
<<formats-requiring-sampler-ycbcr-conversion,multi-planar>> pname:format and
|
||||
|
|
|
@ -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.
|
||||
For scan operations, each invocation in the subgroup will perform an
|
||||
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.
|
||||
|
||||
[[shaders-subgroup-ballot]]
|
||||
|
@ -1023,7 +1023,7 @@ ifdef::VK_VERSION_1_1[]
|
|||
For fragment shaders, if the pname:subgroupSize field of
|
||||
slink:VkPhysicalDeviceSubgroupProperties is at least 4, each quad
|
||||
corresponds to one of the groups of four shader invocations used for
|
||||
<<texture-derivatives-compute,derivatives>>.
|
||||
<<texture-derivatives,derivatives>>.
|
||||
endif::VK_VERSION_1_1[]
|
||||
ifdef::VK_NV_compute_shader_derivatives[]
|
||||
For compute shaders using the code:DerivativeGroupQuadsNV or
|
||||
|
@ -1039,11 +1039,11 @@ ifdef::VK_NV_shader_subgroup_partitioned[]
|
|||
[[shaders-subgroup-partitioned]]
|
||||
=== Partitioned Subgroup Operations
|
||||
|
||||
The partitioned subgroup operations allow invocations to perform an
|
||||
operation among partitions of a subgroup, such that the operation is only
|
||||
performed within the subgroup invocations within a partition.
|
||||
The partitions for partitioned subgroup operations can: group the
|
||||
invocations into arbitrary subsets and can: be computed at runtime.
|
||||
The partitioned subgroup operations allow a subgroup to partition its
|
||||
invocations into disjoint subsets and to perform scan and reduce operations
|
||||
among invocations belonging to the same subset.
|
||||
The partitions for partitioned subgroup operations are specified by a ballot
|
||||
operation and can: be computed at runtime.
|
||||
The operations supported are add, mul, min, max, and, or, xor.
|
||||
|
||||
endif::VK_NV_shader_subgroup_partitioned[]
|
||||
|
|
|
@ -7,8 +7,8 @@
|
|||
|
||||
== Image Operations Overview
|
||||
|
||||
Image Operations are steps performed by SPIR-V image instructions, where
|
||||
those instructions which take an code:OpTypeImage (representing a
|
||||
Vulkan Image Operations are operations performed by those SPIR-V Image
|
||||
Instructions which take an code:OpTypeImage (representing a
|
||||
sname:VkImageView) or code:OpTypeSampledImage (representing a
|
||||
(sname:VkImageView, sname:VkSampler) pair) and texel coordinates as
|
||||
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.
|
||||
====
|
||||
|
||||
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
|
||||
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:.
|
||||
|
||||
|
||||
[[texture-derivatives]]
|
||||
== Derivative Operations
|
||||
|
||||
SPIR-V derivative instructions include code:OpDPdx, code:OpDPdy,
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
# The value to start tagging VU statements at, unless overridden by -nextvu
|
||||
startVUID = 2738
|
||||
startVUID = 2741
|
||||
|
|
36
xml/vk.xml
36
xml/vk.xml
|
@ -154,7 +154,7 @@ server.
|
|||
<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>
|
||||
<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">
|
||||
#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>const <type>VkInitializePerformanceApiInfoINTEL</type>* <name>pInitializeInfo</name></param>
|
||||
</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>
|
||||
<param><type>VkDevice</type> <name>device</name></param>
|
||||
</command>
|
||||
|
@ -8284,7 +8284,7 @@ typedef void <name>CAMetalLayer</name>;
|
|||
</extension>
|
||||
<extension name="VK_IMG_filter_cubic" number="16" type="device" author="IMG" contact="Tobias Hector @tobski" supported="vulkan">
|
||||
<require>
|
||||
<enum value="1" name="VK_IMG_FILTER_CUBIC_SPEC_VERSION"/>
|
||||
<enum value="2" name="VK_IMG_FILTER_CUBIC_SPEC_VERSION"/>
|
||||
<enum value=""VK_IMG_filter_cubic"" name="VK_IMG_FILTER_CUBIC_EXTENSION_NAME"/>
|
||||
<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"/>
|
||||
|
@ -11081,5 +11081,35 @@ typedef void <name>CAMetalLayer</name>;
|
|||
<enum value=""VK_EXT_extension_277"" name="VK_EXT_extension_277"/>
|
||||
</require>
|
||||
</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=""VK_NV_extension_278"" 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=""VK_NV_extension_279"" 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=""VK_KHR_extension_280"" 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=""VK_ARM_extension_281"" 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=""VK_EXT_extension_282"" name="VK_EXT_extension_282"/>
|
||||
</require>
|
||||
</extension>
|
||||
</extensions>
|
||||
</registry>
|
||||
|
|
Loading…
Reference in New Issue