Skip to content
Permalink
Browse files

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).
  • Loading branch information...
oddhack committed Jun 10, 2019
1 parent 619084d commit ad46c7dc688fe973ac7299b651403be5f562db8e
@@ -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.
@@ -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,56 +1198,56 @@ 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()
2+| Inherited from 1.0 / code:inversesqrt().
| 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:
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_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_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

0 comments on commit ad46c7d

Please sign in to comment.
You can’t perform that action at this time.