diff --git a/ChangeLog.txt b/ChangeLog.txt index 0f54c9ab..2a3d1065 100644 --- a/ChangeLog.txt +++ b/ChangeLog.txt @@ -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 + <> 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 <> (internal issue 1642). + * Allow code:OpTypeImageFormat == code:Unknown for input attachments in + the <> section + (internal issue 1645). + * Fix asciidoctor conditionals around + ename:VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT in the + <> 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 <>, <>, <>, and <> sections (internal merge request 3164). + * Fix asciidoctor markup affecting math rendering in the <> 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 <> section (internal merge request 3184). + * Minor markup, grammar, and typo fixes for the + `<>` extension spec language (internal merge + request 3189). + * Clarify that 1D and 1D array format support is optional for cubic + filters, immediately following the <> table (internal merge request 3194). + +----------------------------------------------------- + Change log for June 2, 2019 Vulkan 1.1.110 spec update: * Update release number to 110. diff --git a/Makefile b/Makefile index aa981986..00f4227b 100644 --- a/Makefile +++ b/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 diff --git a/appendices/VK_EXT_filter_cubic.txt b/appendices/VK_EXT_filter_cubic.txt index 65c0c790..99586fd7 100644 --- a/appendices/VK_EXT_filter_cubic.txt +++ b/appendices/VK_EXT_filter_cubic.txt @@ -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 diff --git a/appendices/VK_NV_shader_sm_builtins.txt b/appendices/VK_NV_shader_sm_builtins.txt index 6b2fa985..73bbf8c8 100644 --- a/appendices/VK_NV_shader_sm_builtins.txt +++ b/appendices/VK_NV_shader_sm_builtins.txt @@ -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. diff --git a/appendices/spirvenv.txt b/appendices/spirvenv.txt index cbc505be..eca8e067 100644 --- a/appendices/spirvenv.txt +++ b/appendices/spirvenv.txt @@ -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. diff --git a/chapters/VK_KHR_surface/wsi.txt b/chapters/VK_KHR_surface/wsi.txt index 3990b619..2ddf7063 100644 --- a/chapters/VK_KHR_surface/wsi.txt +++ b/chapters/VK_KHR_surface/wsi.txt @@ -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 diff --git a/chapters/descriptorsets.txt b/chapters/descriptorsets.txt index 12d140c7..bcf778e9 100644 --- a/chapters/descriptorsets.txt +++ b/chapters/descriptorsets.txt @@ -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 diff --git a/chapters/features.txt b/chapters/features.txt index e3d08b14..1567dd2b 100644 --- a/chapters/features.txt +++ b/chapters/features.txt @@ -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[] diff --git a/chapters/formats.txt b/chapters/formats.txt index b08b02a4..eb3563f2 100644 --- a/chapters/formats.txt +++ b/chapters/formats.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[] diff --git a/chapters/fundamentals.txt b/chapters/fundamentals.txt index 6b8c3b4f..9afbcf12 100644 --- a/chapters/fundamentals.txt +++ b/chapters/fundamentals.txt @@ -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 diff --git a/chapters/interfaces.txt b/chapters/interfaces.txt index 962fed1d..8e07fe18 100644 --- a/chapters/interfaces.txt +++ b/chapters/interfaces.txt @@ -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, <> is considered enabled with a pname:minSampleShading value of 1.0. - + The code:SamplePosition decoration must: be used only within fragment shaders. diff --git a/chapters/resources.txt b/chapters/resources.txt index da30775f..2a5f136a 100644 --- a/chapters/resources.txt +++ b/chapters/resources.txt @@ -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 <> pname:format and diff --git a/chapters/shaders.txt b/chapters/shaders.txt index 0dfde260..61a59eae 100644 --- a/chapters/shaders.txt +++ b/chapters/shaders.txt @@ -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 -<>. +<>. 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[] diff --git a/chapters/textures.txt b/chapters/textures.txt index a17e4936..1449825f 100644 --- a/chapters/textures.txt +++ b/chapters/textures.txt @@ -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 <> @@ -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, diff --git a/scripts/reflow_count.py b/scripts/reflow_count.py index c15e8f3f..f6f05c88 100644 --- a/scripts/reflow_count.py +++ b/scripts/reflow_count.py @@ -1,2 +1,2 @@ # The value to start tagging VU statements at, unless overridden by -nextvu -startVUID = 2738 +startVUID = 2741 diff --git a/xml/vk.xml b/xml/vk.xml index e3239502..4eba3c1b 100644 --- a/xml/vk.xml +++ b/xml/vk.xml @@ -154,7 +154,7 @@ server. // Vulkan 1.1 version number #define VK_API_VERSION_1_1 VK_MAKE_VERSION(1, 1, 0)// Patch version should always be set to 0 // Version of this file -#define VK_HEADER_VERSION 110 +#define VK_HEADER_VERSION 111 #define VK_DEFINE_HANDLE(object) typedef struct object##_T* object; @@ -7473,7 +7473,7 @@ typedef void CAMetalLayer; VkDevice device const VkInitializePerformanceApiInfoINTEL* pInitializeInfo - + void vkUninitializePerformanceApiINTEL VkDevice device @@ -8284,7 +8284,7 @@ typedef void CAMetalLayer; - + @@ -11081,5 +11081,35 @@ typedef void CAMetalLayer; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +