From 46e04bb59e0f85b9124899e694a477dd9025d17c Mon Sep 17 00:00:00 2001 From: Jon Leech Date: Fri, 18 Oct 2024 03:54:46 -0700 Subject: [PATCH] Change log for October 18, 2024 Vulkan 1.3.299 spec update: Internal Issues * Update XML feature description schema to support feature names in the `depends` attributes of `require` tags, as well as enabling AND/OR lists of feature dependencies, and use the new syntax to generate more of the content in the <> section (internal issues 3947, 3949, and 3950). * Minimize use of extraneous "`set to`" and add corresponding style guide section and CI test (internal issue 3966). * Add a <> exception to common draw VU 07474 (internal issue 4024). * Update VkVideoEncodeRateControlInfoKHR VU 08358 to allow initialVirtualBufferSizeInMs to equal virtualBufferSizeInMs (internal issue 4028). * Add conditional render state VU for vkCmdExecuteGeneratedCommandsEXT (internal issue 4037). * Combine common draw validity VUs 03417, 03418, 03419, and 08635 covering shader object and graphics pipeline viewport count (internal MR 6870). * Fix missing exception for VK_IMAGE_CREATE_VIDEO_PROFILE_INDEPENDENT_BIT_KHR in video profile compatibility in <> (internal MR 6909). * Fix buffer offset calculation to not offset based on image offsets in the <> section (internal MR 6919). * Fix and add VkImageCreateInfo and VkImageViewCreateInfo VUs to restrict sparse and 2D views, moving them to image create time (internal MR 6920). * Fix minor asciidoc conditional markup errors causing errors when building with specific extensions, which required refactoring some vendor extension interactions with KHR extensions into the vendor extension (internal MR 6923). * Remove redundant VkWriteIndirectExecutionSetPipelineEXT VU 11028 (internal MR 6926). * Improve cross-references to the deviceGeneratedCommands feature from different VUs to distinguish between the NV and EXT device_generated_commands extensions where relevant (internal MR 6933). * Update cross-references and XML descriptions of spirvcapability alias names to match alias naming introduced in SPIRV-Headers by https://github.com/KhronosGroup/SPIRV-Headers/pull/447 (internal MR 6936). * Fix UniformTexelBufferArrayDynamicIndexing VUs 10132 and 10133, and StorageTexelBufferArrayNonUniformIndexing VU 10140 to properly limit the VUs to when the corresponding capability is *not* declared (internal MR 6938). * Mark VK_EXT_feedback_loop_layout and VK_EXT_feedback_loop_dynamic_state as `specialuse="glemulation,d3demulation"` (internal MR 6941). --- ChangeLog.adoc | 53 +++++++++ ChangeLogSC.adoc | 26 ++++- Makefile | 4 +- .../VK_EXT_device_generated_commands.adoc | 1 + ...XT_shader_demote_to_helper_invocation.adoc | 2 +- .../VK_KHR_shader_integer_dot_product.adoc | 8 +- .../VK_KHR_shared_presentable_image.adoc | 4 +- .../VK_NV_compute_shader_derivatives.adoc | 4 +- .../VK_NV_device_generated_commands.adoc | 3 +- appendices/VK_NV_viewport_array2.adoc | 2 +- appendices/spirvenv.adoc | 18 ++- .../acquire_drm_display.adoc | 2 +- .../advanced_blend.adoc | 11 +- chapters/VK_EXT_debug_marker.adoc | 6 +- chapters/VK_EXT_debug_utils.adoc | 2 +- .../VK_EXT_depth_clamp_control/fragops.adoc | 10 +- .../VK_EXT_metal_objects/device_memory.adoc | 4 +- .../VK_KHR_shared_presentable_image/wsi.adoc | 2 +- chapters/VK_KHR_surface/wsi.adoc | 5 +- chapters/VK_KHR_swapchain/PresentId.adoc | 3 +- chapters/VK_KHR_swapchain/wsi.adoc | 14 +-- .../VK_NV_cuda_kernel_launch/dispatch.adoc | 6 +- .../handle_permissions.adoc | 6 +- chapters/VK_NV_low_latency2/low_latency2.adoc | 7 +- chapters/capabilities.adoc | 9 +- chapters/cmdbuffers.adoc | 27 +++-- ...ute_graph_pipeline_create_info_common.adoc | 3 +- chapters/commonvalidity/draw_common.adoc | 72 ++++++------ chapters/commonvalidity/draw_mesh_common.adoc | 2 +- .../commonvalidity/draw_vertex_binding.adoc | 2 +- .../trace_rays_binding_table.adoc | 8 +- chapters/copies.adoc | 11 +- chapters/descriptorsets.adoc | 13 +-- .../device_generated_commands/generation.adoc | 21 ++-- .../indirectcommands.adoc | 17 +-- chapters/devsandqueues.adoc | 8 +- chapters/extensions.adoc | 2 +- chapters/fault_handling.adoc | 9 +- chapters/features.adoc | 66 ++++++----- chapters/fragops.adoc | 32 +++--- chapters/fundamentals.adoc | 9 +- chapters/fxvertex.adoc | 4 +- chapters/interfaces.adoc | 6 +- chapters/limits.adoc | 4 +- chapters/memory.adoc | 10 +- chapters/pipelines.adoc | 41 ++++--- chapters/primsrast.adoc | 22 ++-- chapters/raytracing.adoc | 4 +- chapters/renderpass.adoc | 20 ++-- chapters/resources.adoc | 32 ++++-- chapters/samplers.adoc | 18 ++- chapters/shaders.adoc | 9 +- chapters/sparsemem.adoc | 6 +- chapters/synchronization.adoc | 24 ++-- chapters/textures.adoc | 34 +++--- chapters/vertexpostproc.adoc | 4 +- chapters/video/av1_decode.adoc | 4 +- chapters/video/encode.adoc | 2 +- chapters/video/h264_encode.adoc | 27 +++-- chapters/video/h265_encode.adoc | 29 +++-- chapters/videocoding.adoc | 27 ++++- config/CI/writing | 2 + scripts/doctransformer.py | 3 +- scripts/json_generator.py | 53 +++------ scripts/json_parser.py | 94 ++++++--------- scripts/linkcheck.py | 2 +- scripts/reflib.py | 2 - scripts/reflow.py | 4 +- scripts/vkconventions.py | 2 +- scripts/xml_consistency.py | 4 +- style/revisions.adoc | 2 + style/writing.adoc | 13 +++ xml/vk.xml | 108 ++++++++---------- 73 files changed, 606 insertions(+), 524 deletions(-) diff --git a/ChangeLog.adoc b/ChangeLog.adoc index 25ea68676..36912bdbf 100644 --- a/ChangeLog.adoc +++ b/ChangeLog.adoc @@ -14,6 +14,59 @@ appears frequently in the change log. ''' +Change log for October 18, 2024 Vulkan 1.3.299 spec update: + +Internal Issues + + * Update XML feature description schema to support feature names in the + `depends` attributes of `require` tags, as well as enabling AND/OR lists + of feature dependencies, and use the new syntax to generate more of the + content in the <> section + (internal issues 3947, 3949, and 3950). + * Minimize use of extraneous "`set to`" and add corresponding style guide + section and CI test (internal issue 3966). + * Add a <> exception to common draw VU + 07474 (internal issue 4024). + * Update VkVideoEncodeRateControlInfoKHR VU 08358 to allow + initialVirtualBufferSizeInMs to equal virtualBufferSizeInMs (internal + issue 4028). + * Add conditional render state VU for vkCmdExecuteGeneratedCommandsEXT + (internal issue 4037). + * Combine common draw validity VUs 03417, 03418, 03419, and 08635 covering + shader object and graphics pipeline viewport count (internal MR 6870). + * Fix missing exception for + VK_IMAGE_CREATE_VIDEO_PROFILE_INDEPENDENT_BIT_KHR in video profile + compatibility in <> (internal MR 6909). + * Fix buffer offset calculation to not offset based on image offsets in + the <> + section (internal MR 6919). + * Fix and add VkImageCreateInfo and VkImageViewCreateInfo VUs to restrict + sparse and 2D views, moving them to image create time (internal MR + 6920). + * Fix minor asciidoc conditional markup errors causing errors when + building with specific extensions, which required refactoring some + vendor extension interactions with KHR extensions into the vendor + extension (internal MR 6923). + * Remove redundant VkWriteIndirectExecutionSetPipelineEXT VU 11028 + (internal MR 6926). + * Improve cross-references to the deviceGeneratedCommands feature from + different VUs to distinguish between the NV and EXT + device_generated_commands extensions where relevant (internal MR 6933). + * Update cross-references and XML descriptions of spirvcapability alias + names to match alias naming introduced in SPIRV-Headers by + https://github.com/KhronosGroup/SPIRV-Headers/pull/447 (internal MR + 6936). + * Fix UniformTexelBufferArrayDynamicIndexing VUs 10132 and 10133, and + StorageTexelBufferArrayNonUniformIndexing VU 10140 to properly limit the + VUs to when the corresponding capability is *not* declared (internal MR + 6938). + * Mark VK_EXT_feedback_loop_layout and VK_EXT_feedback_loop_dynamic_state + as `specialuse="glemulation,d3demulation"` (internal MR 6941). + +''' + Change log for October 11, 2024 Vulkan 1.3.298 spec update: Public Issues diff --git a/ChangeLogSC.adoc b/ChangeLogSC.adoc index e9fcf3cb4..8aebf0b23 100644 --- a/ChangeLogSC.adoc +++ b/ChangeLogSC.adoc @@ -12,7 +12,31 @@ with any public pull requests that have been accepted. ----------------------------------------------------- -Change log for June 17, 2023 Vulkan SC 1.0.15 spec update: +Change log for October 7, 2024 Vulkan SC 1.0.16 spec update: + + * update release number to 16 for this update and reflow spec language (!389) + +Public issues: + + * Remove dEQP-ism from generated CTS helpers (!382 based on public + pull request Vulkan-Docs 2396) + +Internal issues: + + * Update the set of cases where VK_FAULT_TYPE_COMMAND_BUFFER_FULL + may be reported (#234/!390) + * Merge VK 1.3.295 tag to sc_main (!388) + * Merge VK 1.3.292 tag to sc_main (!384) + * Remove broken JSON codegen (#223/!381) + * Merge VK 1.3.298 tag to sc_main (!380) + +New Extensions: + + * apiext:VK_EXT_layer_settings (!383) + +----------------------------------------------------- + +Change log for June 17, 2024 Vulkan SC 1.0.15 spec update: * update release number to 15 for this update and reflow spec language diff --git a/Makefile b/Makefile index 8234d4508..754937809 100644 --- a/Makefile +++ b/Makefile @@ -139,12 +139,12 @@ VERBOSE = # ADOCOPTS options for asciidoc->HTML5 output NOTEOPTS = -a editing-notes -a implementation-guide -PATCHVERSION = 298 +PATCHVERSION = 299 BASEOPTS = ifneq (,$(findstring VKSC_VERSION_1_0,$(VERSIONS))) VKSPECREVISION := 1.2.$(PATCHVERSION) -SCPATCHVERSION = 15 +SCPATCHVERSION = 16 SPECREVISION = 1.0.$(SCPATCHVERSION) BASEOPTS = -a baserevnumber="$(VKSPECREVISION)" else diff --git a/appendices/VK_EXT_device_generated_commands.adoc b/appendices/VK_EXT_device_generated_commands.adoc index e47b5673a..a0d388f1f 100644 --- a/appendices/VK_EXT_device_generated_commands.adoc +++ b/appendices/VK_EXT_device_generated_commands.adoc @@ -122,6 +122,7 @@ For each dispatch in a sequence, the following can be specified: * updates to bound shader stages For each trace rays in a sequence, the following can be specified: + * a number of different push constants * updates to bound shader stages diff --git a/appendices/VK_EXT_shader_demote_to_helper_invocation.adoc b/appendices/VK_EXT_shader_demote_to_helper_invocation.adoc index 94a7587be..d4f789f1f 100644 --- a/appendices/VK_EXT_shader_demote_to_helper_invocation.adoc +++ b/appendices/VK_EXT_shader_demote_to_helper_invocation.adoc @@ -33,7 +33,7 @@ include::{generated}/interfaces/VK_EXT_shader_demote_to_helper_invocation.adoc[] === New SPIR-V Capability - * <> === Promotion to Vulkan 1.3 diff --git a/appendices/VK_KHR_shader_integer_dot_product.adoc b/appendices/VK_KHR_shader_integer_dot_product.adoc index 381510c1b..b5b987092 100644 --- a/appendices/VK_KHR_shader_integer_dot_product.adoc +++ b/appendices/VK_KHR_shader_integer_dot_product.adoc @@ -48,13 +48,13 @@ the core functionality. === New SPIR-V Capabilities - * <> - * <> - * <> - * <> + * <> === Version History diff --git a/appendices/VK_KHR_shared_presentable_image.adoc b/appendices/VK_KHR_shared_presentable_image.adoc index 4b619c257..cbe6b8785 100644 --- a/appendices/VK_KHR_shared_presentable_image.adoc +++ b/appendices/VK_KHR_shared_presentable_image.adoc @@ -68,8 +68,8 @@ images and swapchains. slink:VkSwapchainCreateInfoKHR be ignored, or required to be compatible values? -*RESOLVED*: pname:minImageCount must be set to 1, and pname:presentMode -should be set to either ename:VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR or +*RESOLVED*: pname:minImageCount must be 1, and pname:presentMode should be +set to either ename:VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR or ename:VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR. 6) What should the layout of the shared presentable image be? diff --git a/appendices/VK_NV_compute_shader_derivatives.adoc b/appendices/VK_NV_compute_shader_derivatives.adoc index ac5e090e9..1cecc1447 100644 --- a/appendices/VK_NV_compute_shader_derivatives.adoc +++ b/appendices/VK_NV_compute_shader_derivatives.adoc @@ -38,9 +38,9 @@ include::{generated}/interfaces/VK_NV_compute_shader_derivatives.adoc[] === New SPIR-V Capability - * <> - * <> === Issues diff --git a/appendices/VK_NV_device_generated_commands.adoc b/appendices/VK_NV_device_generated_commands.adoc index 19d97b19e..4d743f77d 100644 --- a/appendices/VK_NV_device_generated_commands.adoc +++ b/appendices/VK_NV_device_generated_commands.adoc @@ -179,7 +179,8 @@ the ability to change any elink:VkDynamicState. 8) How do we allow re-using already "`generated`" code:indirectCommands? Expose a `preprocessBuffer` to reuse implementation-dependencyFlags data. -Set the `isPreprocessed` to true in flink:vkCmdExecuteGeneratedCommandsNV. +Set pname:isPreprocessed to ename:VK_TRUE in +flink:vkCmdExecuteGeneratedCommandsNV. 9) Under which conditions is flink:vkCmdExecuteGeneratedCommandsNV legal? diff --git a/appendices/VK_NV_viewport_array2.adoc b/appendices/VK_NV_viewport_array2.adoc index d2a07069a..55aa4c471 100644 --- a/appendices/VK_NV_viewport_array2.adoc +++ b/appendices/VK_NV_viewport_array2.adoc @@ -76,7 +76,7 @@ include::{generated}/interfaces/VK_NV_viewport_array2.adoc[] === New SPIR-V Capabilities - * <> * <> diff --git a/appendices/spirvenv.adoc b/appendices/spirvenv.adoc index 2351dfcf2..42eb2d472 100644 --- a/appendices/spirvenv.adoc +++ b/appendices/spirvenv.adoc @@ -739,13 +739,13 @@ or knowledge of runtime information, such as enabled features. must: be determined by <> * [[VUID-{refpage}-UniformTexelBufferArrayDynamicIndexing-10132]] - If the code:UniformTexelBufferArrayDynamicIndexing capability is + If the code:UniformTexelBufferArrayDynamicIndexing capability is not declared, and an instruction accesses memory through a uniform texel buffer, the uniform texel buffer through which that memory is accessed must: be determined by <> * [[VUID-{refpage}-StorageTexelBufferArrayDynamicIndexing-10133]] - If the code:StorageTexelBufferArrayDynamicIndexing capability is + If the code:StorageTexelBufferArrayDynamicIndexing capability is not declared, and an instruction accesses memory through a storage texel buffer, the storage texel buffer through which that memory is accessed must: be determined by <> is enabled, and the `apiext:VK_KHR_portability_subset` extension is enabled, and slink:VkPhysicalDevicePortabilitySubsetFeaturesKHR::pname:tessellationIsolines - is ename:VK_FALSE, then code:OpExecutionMode must: not be set to - code:IsoLines + is ename:VK_FALSE, then code:OpExecutionMode must: not be code:IsoLines * [[VUID-{refpage}-tessellationShader-06327]] If <> is enabled, and the `apiext:VK_KHR_portability_subset` extension is enabled, and slink:VkPhysicalDevicePortabilitySubsetFeaturesKHR::pname:tessellationPointMode - is ename:VK_FALSE, then code:OpExecutionMode must: not be set to - code:PointMode + is ename:VK_FALSE, then code:OpExecutionMode must: not be code:PointMode endif::VK_KHR_portability_subset[] ifdef::VK_KHR_8bit_storage[] * [[VUID-{refpage}-storageBuffer8BitAccess-06328]] diff --git a/chapters/VK_EXT_acquire_drm_display/acquire_drm_display.adoc b/chapters/VK_EXT_acquire_drm_display/acquire_drm_display.adoc index 557db540b..bd5260834 100644 --- a/chapters/VK_EXT_acquire_drm_display/acquire_drm_display.adoc +++ b/chapters/VK_EXT_acquire_drm_display/acquire_drm_display.adoc @@ -45,7 +45,7 @@ include::{generated}/api/protos/vkGetDrmDisplayEXT.adoc[] returned here. If there is no slink:VkDisplayKHR corresponding to the pname:connectorId on -the pname:physicalDevice, the returning pname:display must: be set to +the pname:physicalDevice, the returning pname:display must: be dlink:VK_NULL_HANDLE. The provided pname:drmFd must: correspond to the one owned by the pname:physicalDevice. diff --git a/chapters/VK_EXT_blend_operation_advanced/advanced_blend.adoc b/chapters/VK_EXT_blend_operation_advanced/advanced_blend.adoc index 30c402e48..ce7c14b2d 100644 --- a/chapters/VK_EXT_blend_operation_advanced/advanced_blend.adoc +++ b/chapters/VK_EXT_blend_operation_advanced/advanced_blend.adoc @@ -161,9 +161,9 @@ equations: where the function f and terms X, Y, and Z are specified in the table. The R, G, and B components of the source color used for blending are derived according to pname:srcPremultiplied. -If pname:srcPremultiplied is set to ename:VK_TRUE, the fragment color -components are considered to have been premultiplied by the A component -prior to blending. +If pname:srcPremultiplied is ename:VK_TRUE, the fragment color components +are considered to have been premultiplied by the A component prior to +blending. The base source color [eq]#(R~s~',G~s~',B~s~')# is obtained by dividing through by the A component: @@ -190,9 +190,8 @@ are used as the base color: The R, G, and B components of the destination color used for blending are derived according to pname:dstPremultiplied. -If pname:dstPremultiplied is set to ename:VK_TRUE, the destination -components are considered to have been premultiplied by the A component -prior to blending. +If pname:dstPremultiplied is ename:VK_TRUE, the destination components are +considered to have been premultiplied by the A component prior to blending. The base destination color [eq]#(R~d~',G~d~',B~d~')# is obtained by dividing through by the A component: diff --git a/chapters/VK_EXT_debug_marker.adoc b/chapters/VK_EXT_debug_marker.adoc index e5f80aa17..3b3ab96c9 100644 --- a/chapters/VK_EXT_debug_marker.adoc +++ b/chapters/VK_EXT_debug_marker.adoc @@ -54,8 +54,8 @@ include::{generated}/api/structs/VkDebugMarkerObjectNameInfoEXT.adoc[] Applications may: change the name associated with an object simply by calling fname:vkDebugMarkerSetObjectNameEXT again with a new string. -To remove a previously set name, pname:pObjectName should: be set to an -empty string. +To remove a previously set name, pname:pObjectName should: be an empty +string. .Valid Usage **** @@ -172,7 +172,7 @@ include::{generated}/api/structs/VkDebugMarkerMarkerInfoEXT.adoc[] the marker. A particular implementation may: choose to ignore this color value. The values contain RGBA values in order, in the range 0.0 to 1.0. - If all elements in pname:color are set to 0.0 then it is ignored. + If all elements in pname:color are 0.0, then it is ignored. include::{generated}/validity/structs/VkDebugMarkerMarkerInfoEXT.adoc[] -- diff --git a/chapters/VK_EXT_debug_utils.adoc b/chapters/VK_EXT_debug_utils.adoc index e62a79a4f..4ae960671 100644 --- a/chapters/VK_EXT_debug_utils.adoc +++ b/chapters/VK_EXT_debug_utils.adoc @@ -253,7 +253,7 @@ include::{generated}/api/structs/VkDebugUtilsLabelEXT.adoc[] the label. A particular implementation may: choose to ignore this color value. The values contain RGBA values in order, in the range 0.0 to 1.0. - If all elements in pname:color are set to 0.0 then it is ignored. + If all elements in pname:color are 0.0, then it is ignored. include::{generated}/validity/structs/VkDebugUtilsLabelEXT.adoc[] -- diff --git a/chapters/VK_EXT_depth_clamp_control/fragops.adoc b/chapters/VK_EXT_depth_clamp_control/fragops.adoc index 95c3d7493..15e4d2266 100644 --- a/chapters/VK_EXT_depth_clamp_control/fragops.adoc +++ b/chapters/VK_EXT_depth_clamp_control/fragops.adoc @@ -15,7 +15,7 @@ include::{generated}/api/structs/VkPipelineViewportDepthClampControlCreateInfoEX * pname:depthClampMode determines how the clamp range is determined for each viewport. * pname:pDepthClampRange sets the depth clamp range for all viewports if - pname:depthClampMode is set to + pname:depthClampMode is ename:VK_DEPTH_CLAMP_MODE_USER_DEFINED_RANGE_EXT. This structure extends sname:VkPipelineViewportStateCreateInfo and specifies @@ -27,10 +27,10 @@ ename:VK_DEPTH_CLAMP_MODE_VIEWPORT_RANGE_EXT. .Valid Usage **** * [[VUID-VkPipelineViewportDepthClampControlCreateInfoEXT-pDepthClampRange-09646]] - If pname:depthClampMode is set to + If pname:depthClampMode is ename:VK_DEPTH_CLAMP_MODE_USER_DEFINED_RANGE_EXT, and the pipeline is not created with ename:VK_DYNAMIC_STATE_DEPTH_CLAMP_RANGE_EXT, then - pname:pDepthClampRange must be a valid pointer to a valid + pname:pDepthClampRange must: be a valid pointer to a valid sname:VkDepthClampRangeEXT structure **** @@ -69,7 +69,7 @@ include::{generated}/api/protos/vkCmdSetDepthClampRangeEXT.adoc[] * pname:depthClampMode determines how the clamp range is determined for each viewport. * pname:pDepthClampRange sets the depth clamp range for all viewports if - pname:depthClampMode is set to + pname:depthClampMode is ename:VK_DEPTH_CLAMP_MODE_USER_DEFINED_RANGE_EXT. This command sets the viewport depth clamp range for subsequent drawing @@ -85,7 +85,7 @@ value used to create the currently active pipeline. .Valid Usage **** * [[VUID-vkCmdSetDepthClampRangeEXT-pDepthClampRange-09647]] - If pname:depthClampMode is set to + If pname:depthClampMode is ename:VK_DEPTH_CLAMP_MODE_USER_DEFINED_RANGE_EXT, then pname:pDepthClampRange must be a valid pointer to a valid sname:VkDepthClampRangeEXT structure diff --git a/chapters/VK_EXT_metal_objects/device_memory.adoc b/chapters/VK_EXT_metal_objects/device_memory.adoc index ccbf7d7ef..2820afcc0 100644 --- a/chapters/VK_EXT_metal_objects/device_memory.adoc +++ b/chapters/VK_EXT_metal_objects/device_memory.adoc @@ -531,8 +531,8 @@ ifdef::VK_KHR_timeline_semaphore[] If the pname:pNext chain of the slink:VkSemaphoreCreateInfo structure includes both sname:VkImportMetalSharedEventInfoEXT and slink:VkSemaphoreTypeCreateInfo, the code:signaledValue property of the -imported `id` object will be set to pname:initialValue of -slink:VkSemaphoreTypeCreateInfo. +imported `id` object will be set to +slink:VkSemaphoreTypeCreateInfo::pname:initialValue. endif::VK_KHR_timeline_semaphore[] include::{generated}/validity/structs/VkImportMetalSharedEventInfoEXT.adoc[] diff --git a/chapters/VK_KHR_shared_presentable_image/wsi.adoc b/chapters/VK_KHR_shared_presentable_image/wsi.adoc index 4c85e6849..deda13ddc 100644 --- a/chapters/VK_KHR_shared_presentable_image/wsi.adoc +++ b/chapters/VK_KHR_shared_presentable_image/wsi.adoc @@ -76,7 +76,7 @@ interpreted as follows: ==== The swapchain state may: be cached by implementations, so applications should: regularly call fname:vkGetSwapchainStatusKHR when using a swapchain -with elink:VkPresentModeKHR set to +with elink:VkPresentModeKHR equal to ename:VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR. ==== diff --git a/chapters/VK_KHR_surface/wsi.adoc b/chapters/VK_KHR_surface/wsi.adoc index e124e027c..b577b4d60 100644 --- a/chapters/VK_KHR_surface/wsi.adoc +++ b/chapters/VK_KHR_surface/wsi.adoc @@ -212,8 +212,9 @@ include::{generated}/api/protos/vkGetPhysicalDeviceSurfaceSupportKHR.adoc[] * pname:physicalDevice is the physical device. * pname:queueFamilyIndex is the queue family. * pname:surface is the surface. - * pname:pSupported is a pointer to a basetype:VkBool32, which is set to - ename:VK_TRUE to indicate support, and ename:VK_FALSE otherwise. + * pname:pSupported is a pointer to a basetype:VkBool32. + ename:VK_TRUE indicates support, and ename:VK_FALSE indicates no + support. include::{chapters}/commonvalidity/no_dynamic_allocations_common.adoc[] diff --git a/chapters/VK_KHR_swapchain/PresentId.adoc b/chapters/VK_KHR_swapchain/PresentId.adoc index 1aff34dcb..b1d4c9afe 100644 --- a/chapters/VK_KHR_swapchain/PresentId.adoc +++ b/chapters/VK_KHR_swapchain/PresentId.adoc @@ -28,8 +28,7 @@ pname:pNext chain of the slink:VkPresentInfoKHR structure to supply identifiers. Each sname:VkSwapchainKHR has a presentId associated with it. -This value is initially set to zero when the sname:VkSwapchainKHR is -created. +This value is initially zero when the sname:VkSwapchainKHR is created. When a sname:VkPresentIdKHR structure with a non-NULL pname:pPresentIds is included in the pname:pNext chain of a slink:VkPresentInfoKHR structure, diff --git a/chapters/VK_KHR_swapchain/wsi.adoc b/chapters/VK_KHR_swapchain/wsi.adoc index 6cda35152..43d9c58c3 100644 --- a/chapters/VK_KHR_swapchain/wsi.adoc +++ b/chapters/VK_KHR_swapchain/wsi.adoc @@ -317,8 +317,8 @@ endif::VK_EXT_swapchain_maintenance1[] * pname:clipped specifies whether the Vulkan implementation is allowed to discard rendering operations that affect regions of the surface that are not visible. - ** If set to ename:VK_TRUE, the presentable images associated with the - swapchain may: not own all of their pixels. + ** If pname:clipped is ename:VK_TRUE, the presentable images associated + with the swapchain may: not own all of their pixels. Pixels in the presentable images that correspond to regions of the target surface obscured by another window on the desktop, or subject to some other clipping mechanism will have undefined: content when read @@ -328,8 +328,8 @@ endif::VK_EXT_swapchain_maintenance1[] Setting ename:VK_TRUE does not guarantee any clipping will occur, but allows more efficient presentation methods to be used on some platforms. - ** If set to ename:VK_FALSE, presentable images associated with the - swapchain will own all of the pixels they contain. + ** If pname:clipped is ename:VK_FALSE, presentable images associated with + the swapchain will own all of the pixels they contain. + [NOTE] ==== @@ -1205,7 +1205,7 @@ include::{generated}/api/protos/vkAcquireNextImage2KHR.adoc[] * pname:device is the device associated with pname:swapchain. * pname:pAcquireInfo is a pointer to a slink:VkAcquireNextImageInfoKHR structure containing parameters of the acquire. - * pname:pImageIndex is a pointer to a code:uint32_t that is set to the + * pname:pImageIndex is a pointer to a code:uint32_t value specifying the index of the next image to use. ifdef::VK_EXT_swapchain_maintenance1[] @@ -1522,8 +1522,8 @@ ename:VK_IMAGE_LAYOUT_PRESENT_SRC_KHR, there is no need to delay subsequent processing, or perform any visibility operations (as flink:vkQueuePresentKHR performs automatic visibility operations). To achieve this, the pname:dstAccessMask member of the -slink:VkImageMemoryBarrier should: be set to `0`, and the pname:dstStageMask -parameter should: be set to ename:VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT. +slink:VkImageMemoryBarrier should: be `0`, and the pname:dstStageMask +parameter should: be ename:VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT. ==== .Valid Usage diff --git a/chapters/VK_NV_cuda_kernel_launch/dispatch.adoc b/chapters/VK_NV_cuda_kernel_launch/dispatch.adoc index 6b3152ba6..efc6a0d12 100644 --- a/chapters/VK_NV_cuda_kernel_launch/dispatch.adoc +++ b/chapters/VK_NV_cuda_kernel_launch/dispatch.adoc @@ -93,9 +93,9 @@ much the same way as described in link:++https://docs.nvidia.com/cuda/cuda-driver-api/group__CUDA__EXEC.html#group__CUDA__EXEC_1gb8f3dc3031b40da29d5f9a7139e52e15++[cuLaunchKernel] If pname:function has N parameters, then pname:pParams must: be an array of -N pointers and pname:paramCount must: be set to N. Each of -pname:kernelParams[0] through pname:kernelParams[N-1] must: point to a -region of memory from which the actual kernel parameter will be copied. +N pointers and pname:paramCount must: be N. Each of pname:kernelParams[0] +through pname:kernelParams[N-1] must: point to a region of memory from which +the actual kernel parameter will be copied. The number of kernel parameters and their offsets and sizes are not specified here as that information is stored in the slink:VkCudaFunctionNV object. diff --git a/chapters/VK_NV_external_memory_win32/handle_permissions.adoc b/chapters/VK_NV_external_memory_win32/handle_permissions.adoc index c766aae9b..e626b593e 100644 --- a/chapters/VK_NV_external_memory_win32/handle_permissions.adoc +++ b/chapters/VK_NV_external_memory_win32/handle_permissions.adoc @@ -21,9 +21,9 @@ include::{generated}/api/structs/VkExportMemoryWin32HandleInfoNV.adoc[] structure specifying security attributes of the handle. * pname:dwAccess is a code:DWORD specifying access rights of the handle. -If this structure is not present, or if pname:pAttributes is set to `NULL`, -default security descriptor values will be used, and child processes created -by the application will not inherit the handle, as described in the MSDN +If this structure is not present, or if pname:pAttributes is `NULL`, default +security descriptor values will be used, and child processes created by the +application will not inherit the handle, as described in the MSDN documentation for "`Synchronization Object Security and Access Rights`"^1^. Further, if the structure is not present, the access rights will be diff --git a/chapters/VK_NV_low_latency2/low_latency2.adoc b/chapters/VK_NV_low_latency2/low_latency2.adoc index e000baf69..65e16990a 100644 --- a/chapters/VK_NV_low_latency2/low_latency2.adoc +++ b/chapters/VK_NV_low_latency2/low_latency2.adoc @@ -49,10 +49,9 @@ include::{generated}/api/structs/VkLatencySleepModeInfoNV.adoc[] flink:vkQueuePresentKHR calls for a given swapchain that flink:vkLatencySleepNV will enforce. -If pname:lowLatencyMode is set to ename:VK_FALSE, pname:lowLatencyBoost will -still hint to the GPU to increase its power state and fname:vkLatencySleepNV -will still enforce pname:minimumIntervalUs between fname:vkQueuePresentKHR -calls. +If pname:lowLatencyMode is ename:VK_FALSE, pname:lowLatencyBoost will still +hint to the GPU to increase its power state and fname:vkLatencySleepNV will +still enforce pname:minimumIntervalUs between fname:vkQueuePresentKHR calls. include::{generated}/validity/structs/VkLatencySleepModeInfoNV.adoc[] -- diff --git a/chapters/capabilities.adoc b/chapters/capabilities.adoc index 8d6c63f7e..05b8e806e 100644 --- a/chapters/capabilities.adoc +++ b/chapters/capabilities.adoc @@ -1065,8 +1065,8 @@ fname:vkGetPhysicalDeviceImageFormatProperties returns a bitmask of elink:VkSampleCountFlagBits in pname:sampleCounts specifying the supported sample counts for the image parameters. -pname:sampleCounts will be set to ename:VK_SAMPLE_COUNT_1_BIT if at least -one of the following conditions is true: +pname:sampleCounts will be ename:VK_SAMPLE_COUNT_1_BIT if at least one of +the following conditions is true: * pname:tiling is ename:VK_IMAGE_TILING_LINEAR * pname:type is not ename:VK_IMAGE_TYPE_2D @@ -1486,7 +1486,7 @@ endif::VK_KHR_external_semaphore_capabilities[] If pname:handleType is not supported by the implementation, then slink:VkExternalSemaphoreProperties::pname:externalSemaphoreFeatures will be -set to zero. +zero. include::{generated}/validity/structs/VkExternalSemaphoreProperties.adoc[] -- @@ -1712,8 +1712,7 @@ endif::VK_KHR_external_fence_capabilities[] pname:handleType. If pname:handleType is not supported by the implementation, then -slink:VkExternalFenceProperties::pname:externalFenceFeatures will be set to -zero. +slink:VkExternalFenceProperties::pname:externalFenceFeatures will be zero. include::{generated}/validity/structs/VkExternalFenceProperties.adoc[] -- diff --git a/chapters/cmdbuffers.adoc b/chapters/cmdbuffers.adoc index 01cbb2dd4..cce814b96 100644 --- a/chapters/cmdbuffers.adoc +++ b/chapters/cmdbuffers.adoc @@ -356,7 +356,6 @@ include::{generated}/validity/structs/VkCommandPoolMemoryReservationCreateInfo.a [open,refpage='vkGetCommandPoolMemoryConsumption',desc='Get memory usage information for a command pool object',type='protos'] -- - ifdef::hidden[] // tag::scaddition[] * flink:vkGetCommandPoolMemoryConsumption <> @@ -381,7 +380,6 @@ include::{generated}/validity/protos/vkGetCommandPoolMemoryConsumption.adoc[] [open,refpage='VkCommandPoolMemoryConsumption',desc='Structure where memory usage information is written',type='structs'] -- - The sname:VkCommandPoolMemoryConsumption structure is defined as: include::{generated}/api/structs/VkCommandPoolMemoryConsumption.adoc[] @@ -399,7 +397,8 @@ include::{generated}/api/structs/VkCommandPoolMemoryConsumption.adoc[] from this pool for the specified command buffer's data. This number will be less than or equal to slink:VkPhysicalDeviceVulkanSC10Properties::pname:maxCommandBufferSize. - If no command buffer is specified, then this is set to zero. + If no command buffer is specified, then pname:commandBufferAllocated + will be zero. ifdef::hidden[] // tag::scaddition[] @@ -1610,9 +1609,10 @@ endif::VK_KHR_video_encode_queue[] ifdef::VKSC_VERSION_1_0[] If recording a command would exceed the amount of command pool memory reserved by -slink:VkCommandPoolMemoryReservationCreateInfo::pname:commandPoolReservedSize, -the implementation may: report a ename:VK_FAULT_TYPE_COMMAND_BUFFER_FULL -fault. +slink:VkCommandPoolMemoryReservationCreateInfo::pname:commandPoolReservedSize +or the maximum supported command buffer size reported in +slink:VkPhysicalDeviceVulkanSC10Properties::pname:maxCommandBufferSize, the +implementation may: report a ename:VK_FAULT_TYPE_COMMAND_BUFFER_FULL fault. The command buffer remains in the <> until fname:vkEndCommandBuffer is called. When fname:vkEndCommandBuffer is called on a command buffer for which the @@ -2888,15 +2888,14 @@ endif::VK_EXT_nested_command_buffer[] instance begun with flink:vkCmdBeginRenderPass, and flink:vkCmdNextSubpass has not been called in the current render pass instance, the pname:contents parameter of flink:vkCmdBeginRenderPass - must: have been set to - ename:VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS + must: have been ename:VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS ifdef::VK_EXT_nested_command_buffer[, or ename:VK_SUBPASS_CONTENTS_INLINE_AND_SECONDARY_COMMAND_BUFFERS_EXT] * [[VUID-vkCmdExecuteCommands-None-09681]] If fname:vkCmdExecuteCommands is being called within a render pass instance begun with flink:vkCmdBeginRenderPass, and flink:vkCmdNextSubpass has been called in the current render pass instance, the pname:contents parameter of the last call to - flink:vkCmdNextSubpass must: have been set to + flink:vkCmdNextSubpass must: have been ename:VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS ifdef::VK_EXT_nested_command_buffer,VK_KHR_maintenance7[, or ename:VK_SUBPASS_CONTENTS_INLINE_AND_SECONDARY_COMMAND_BUFFERS_KHR] * [[VUID-vkCmdExecuteCommands-pCommandBuffers-06019]] @@ -3367,9 +3366,9 @@ and viewport state ifdef::VK_VERSION_1_3,VK_EXT_extended_dynamic_state[] (excluding the count of each) endif::VK_VERSION_1_3,VK_EXT_extended_dynamic_state[] -can: be set to different values on each physical device (only when set as -dynamic state), and each physical device will render using its local copy of -the state. +can: be different values on each physical device (only when set as dynamic +state), and each physical device will render using its local copy of the +state. Other state is shared between physical devices, such that all physical devices use the most recently set values for the state. However, when recording an action command that uses a piece of state, the @@ -3407,8 +3406,8 @@ The initial device mask also acts as an upper bound on the set of devices that can: ever be in the device mask in the command buffer. If this structure is not present, the initial value of a command buffer's -device mask is set to include all physical devices in the logical device -when the command buffer begins recording. +device mask includes all physical devices in the logical device when the +command buffer begins recording. .Valid Usage **** diff --git a/chapters/commonvalidity/compute_graph_pipeline_create_info_common.adoc b/chapters/commonvalidity/compute_graph_pipeline_create_info_common.adoc index 27d5f2463..6f1ef51fd 100644 --- a/chapters/commonvalidity/compute_graph_pipeline_create_info_common.adoc +++ b/chapters/commonvalidity/compute_graph_pipeline_create_info_common.adoc @@ -54,7 +54,8 @@ ifdef::VK_EXT_device_generated_commands[] * [[VUID-{refpage}-flags-11007]] If pname:flags includes ename:VK_PIPELINE_CREATE_2_INDIRECT_BINDABLE_BIT_EXT, then the - <> + <> feature must: be enabled endif::VK_EXT_device_generated_commands[] ifdef::VK_VERSION_1_3,VK_EXT_pipeline_creation_cache_control[] diff --git a/chapters/commonvalidity/draw_common.adoc b/chapters/commonvalidity/draw_common.adoc index 4a9a65604..44f0a009b 100644 --- a/chapters/commonvalidity/draw_common.adoc +++ b/chapters/commonvalidity/draw_common.adoc @@ -444,41 +444,45 @@ endif::VK_EXT_shader_object[] invalidated>> in the current command buffer prior to this drawing command * [[VUID-{refpage}-viewportCount-03417]] - If the bound graphics pipeline state was created with the - ename:VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT dynamic state enabled, but - not the ename:VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT dynamic state enabled, - then flink:vkCmdSetViewportWithCount must: have been called in the - current command buffer prior to this drawing command, and the - pname:viewportCount parameter of fname:vkCmdSetViewportWithCount must: - match the sname:VkPipelineViewportStateCreateInfo::pname:scissorCount of - the pipeline + If +ifdef::VK_EXT_shader_object[] + a shader object is bound to any graphics stage or +endif::VK_EXT_shader_object[] + a graphics pipeline is bound which was created with the + ename:VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT dynamic state enabled, +ifdef::VK_NV_inherited_viewport_scissor[] + and the state is not inherited, +endif::VK_NV_inherited_viewport_scissor[] + then flink:vkCmdSetViewportWithCount must: have been called and not + subsequently <> in the current + command buffer prior to this drawing command * [[VUID-{refpage}-scissorCount-03418]] - If the bound graphics pipeline state was created with the - ename:VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT dynamic state enabled, but not - the ename:VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT dynamic state enabled, - then flink:vkCmdSetScissorWithCount must: have been called in the - current command buffer prior to this drawing command, and the - pname:scissorCount parameter of fname:vkCmdSetScissorWithCount must: - match the sname:VkPipelineViewportStateCreateInfo::pname:viewportCount - of the pipeline + If +ifdef::VK_EXT_shader_object[] + a shader object is bound to any graphics stage or +endif::VK_EXT_shader_object[] + a graphics pipeline is bound which was created with the + ename:VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT dynamic state enabled, +ifdef::VK_NV_inherited_viewport_scissor[] + and the state is not inherited, +endif::VK_NV_inherited_viewport_scissor[] + then flink:vkCmdSetScissorWithCount must: have been called and not + subsequently <> in the current + command buffer prior to this drawing * [[VUID-{refpage}-viewportCount-03419]] - If the bound graphics pipeline state was created with both the - ename:VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT and - ename:VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT dynamic states enabled then - both flink:vkCmdSetViewportWithCount and flink:vkCmdSetScissorWithCount - must: have been called in the current command buffer prior to this - drawing command, and the pname:viewportCount parameter of - fname:vkCmdSetViewportWithCount must: match the pname:scissorCount - parameter of fname:vkCmdSetScissorWithCount + If ifdef::VK_EXT_shader_object[] - * [[VUID-{refpage}-None-08635]] - If a shader object is bound to any graphics stage, then both - flink:vkCmdSetViewportWithCount and flink:vkCmdSetScissorWithCount must: - have been called in the current command buffer prior to this drawing - command, and the pname:viewportCount parameter of + a shader object is bound to any graphics stage or +endif::VK_EXT_shader_object[] + a graphics pipeline is bound which was created with both the + ename:VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT and + ename:VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT dynamic states enabled, +ifdef::VK_NV_inherited_viewport_scissor[] + and the state is not inherited, +endif::VK_NV_inherited_viewport_scissor[] + then the pname:viewportCount parameter of fname:vkCmdSetViewportWithCount must: match the pname:scissorCount parameter of fname:vkCmdSetScissorWithCount -endif::VK_EXT_shader_object[] ifdef::VK_NV_clip_space_w_scaling[] * [[VUID-{refpage}-viewportCount-04137]] If the bound graphics pipeline state was created with the @@ -1150,7 +1154,7 @@ ifdef::VK_EXT_dynamic_rendering_unused_attachments[] slink:VkRenderingInfo::pname:pStencilAttachment->imageView, the value of the format must: be ename:VK_FORMAT_UNDEFINED endif::VK_EXT_dynamic_rendering_unused_attachments[] -ifdef::VK_KHR_fragment_shading_rate[] +ifdef::VK_KHR_dynamic_rendering+VK_KHR_fragment_shading_rate[] * [[VUID-{refpage}-imageView-06183]] If the current render pass instance was begun with flink:vkCmdBeginRendering and @@ -1158,7 +1162,7 @@ ifdef::VK_KHR_fragment_shading_rate[] was not dlink:VK_NULL_HANDLE, the currently bound graphics pipeline must: have been created with ename:VK_PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR -endif::VK_KHR_fragment_shading_rate[] +endif::VK_KHR_dynamic_rendering+VK_KHR_fragment_shading_rate[] ifdef::VK_EXT_fragment_density_map[] * [[VUID-{refpage}-imageView-06184]] If the current render pass instance was begun with @@ -1973,6 +1977,10 @@ endif::VK_NV_coverage_reduction_mode[] * [[VUID-{refpage}-rasterizationSamples-07474]] If the bound graphics pipeline state was created with the ename:VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT state enabled, and +ifdef::VK_EXT_multisampled_render_to_single_sampled[] + the <> feature is not enabled, and +endif::VK_EXT_multisampled_render_to_single_sampled[] neither the `apiext:VK_AMD_mixed_attachment_samples` nor the `apiext:VK_NV_framebuffer_mixed_samples` extensions are enabled, then the pname:rasterizationSamples in the last call to diff --git a/chapters/commonvalidity/draw_mesh_common.adoc b/chapters/commonvalidity/draw_mesh_common.adoc index c03d5c6cf..ba4dce238 100644 --- a/chapters/commonvalidity/draw_mesh_common.adoc +++ b/chapters/commonvalidity/draw_mesh_common.adoc @@ -7,7 +7,7 @@ ifdef::VK_NV_mesh_shader,VK_EXT_mesh_shader[] * [[VUID-{refpage}-stage-06480]] The bound graphics pipeline must: not have been created with the - slink:VkPipelineShaderStageCreateInfo::pname:stage member of an element + slink:VkPipelineShaderStageCreateInfo::pname:stage member of any element of slink:VkGraphicsPipelineCreateInfo::pname:pStages set to ename:VK_SHADER_STAGE_VERTEX_BIT, ename:VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT, diff --git a/chapters/commonvalidity/draw_vertex_binding.adoc b/chapters/commonvalidity/draw_vertex_binding.adoc index 4b4baf9b2..19e6802c2 100644 --- a/chapters/commonvalidity/draw_vertex_binding.adoc +++ b/chapters/commonvalidity/draw_vertex_binding.adoc @@ -220,7 +220,7 @@ endif::VK_VERSION_1_3,VK_EXT_extended_dynamic_state2,VK_EXT_shader_object[] ifdef::VK_NV_mesh_shader,VK_EXT_mesh_shader[] * [[VUID-{refpage}-stage-06481]] The bound graphics pipeline must: not have been created with the - slink:VkPipelineShaderStageCreateInfo::pname:stage member of an element + slink:VkPipelineShaderStageCreateInfo::pname:stage member of any element of slink:VkGraphicsPipelineCreateInfo::pname:pStages set to ename:VK_SHADER_STAGE_TASK_BIT_EXT or ename:VK_SHADER_STAGE_MESH_BIT_EXT ifdef::VK_EXT_shader_object[] diff --git a/chapters/commonvalidity/trace_rays_binding_table.adoc b/chapters/commonvalidity/trace_rays_binding_table.adoc index 83cc990cc..c7ef5bf6d 100644 --- a/chapters/commonvalidity/trace_rays_binding_table.adoc +++ b/chapters/commonvalidity/trace_rays_binding_table.adoc @@ -82,28 +82,28 @@ that included ename:VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR, the shader group handle identified by {missShaderBindingTableAddress} must: - not be set to zero + not be zero * [[VUID-{refpage}-flags-03512]] If the currently bound ray tracing pipeline was created with pname:flags that included ename:VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR, entries in the table identified by {hitShaderBindingTableAddress} accessed as a result of this command in order to execute an any-hit - shader must: not be set to zero + shader must: not be zero * [[VUID-{refpage}-flags-03513]] If the currently bound ray tracing pipeline was created with pname:flags that included ename:VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR, entries in the table identified by {hitShaderBindingTableAddress} accessed as a result of this command in order to execute a closest hit - shader must: not be set to zero + shader must: not be zero * [[VUID-{refpage}-flags-03514]] If the currently bound ray tracing pipeline was created with pname:flags that included ename:VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR, entries in the table identified by {hitShaderBindingTableAddress} accessed as a result of this command in order to execute an intersection - shader must: not be set to zero + shader must: not be zero * [[VUID-{refpage}-pHitShaderBindingTable-04735]] Any non-zero hit shader group entries in the table identified by {hitShaderBindingTableAddress} accessed by this call from a geometry diff --git a/chapters/copies.adoc b/chapters/copies.adoc index f010b4108..ebe903873 100644 --- a/chapters/copies.adoc +++ b/chapters/copies.adoc @@ -473,11 +473,12 @@ For each [eq]#(x,y,z,layer)# coordinate in the image, bytes in the buffer are accessed at offsets in the range [eq]#[texelOffset, texelOffset {plus} blockSize)#, where: - {empty}:: [eq]#texelOffset = pname:bufferOffset {plus} ({lfloor}x / - blockWidth{rfloor} {times} blockSize) {plus} ({lfloor}y / - blockHeight{rfloor} {times} rowExtent) {plus} ({lfloor}z / - blockDepth{rfloor} {times} sliceExtent) {plus} (layer {times} - layerExtent)# + {empty}:: [eq]#texelOffset = pname:bufferOffset {plus} ({lfloor}(x - + imageOffset.x) / blockWidth{rfloor} {times} blockSize) {plus} + ({lfloor}(y - imageOffset.y) / blockHeight{rfloor} {times} + rowExtent) {plus} ({lfloor}(z - imageOffset.z) / + blockDepth{rfloor} {times} sliceExtent) {plus} ((layer - + pname:imageSubresource.baseArrayLayer) {times} layerExtent)# {empty}:: [eq]#rowExtent = {lceil} max(pname:bufferRowLength, pname:imageExtent.width) / blockWidth {rceil} {times} blockSize# {empty}:: [eq]#sliceExtent = {lceil} max(pname:bufferImageHeight, diff --git a/chapters/descriptorsets.adoc b/chapters/descriptorsets.adoc index c7b10d6e6..93c38a7e4 100644 --- a/chapters/descriptorsets.adoc +++ b/chapters/descriptorsets.adoc @@ -1411,8 +1411,8 @@ endif::VK_KHR_maintenance3[] * pname:supported specifies whether the descriptor set layout can: be created. -pname:supported is set to ename:VK_TRUE if the descriptor set can: be -created, or else is set to ename:VK_FALSE. +pname:supported will be ename:VK_TRUE if the descriptor set can: be created, +or else ename:VK_FALSE. include::{generated}/validity/structs/VkDescriptorSetLayoutSupport.adoc[] -- @@ -1451,14 +1451,13 @@ If the slink:VkDescriptorSetLayoutCreateInfo structure specified in flink:vkGetDescriptorSetLayoutSupport::pname:pCreateInfo includes a variable-sized descriptor, then pname:supported is determined assuming the requested size of the variable-sized descriptor, and -pname:maxVariableDescriptorCount is set to the maximum size of that -descriptor that can: be successfully created (which is greater than or equal -to the requested size passed in). +pname:maxVariableDescriptorCount is the maximum size of that descriptor that +can: be successfully created (which is greater than or equal to the +requested size passed in). If the slink:VkDescriptorSetLayoutCreateInfo structure does not include a variable-sized descriptor, or if the slink:VkPhysicalDeviceDescriptorIndexingFeatures::pname:descriptorBindingVariableDescriptorCount -feature is not enabled, then pname:maxVariableDescriptorCount is set to -zero. +feature is not enabled, then pname:maxVariableDescriptorCount is zero. For the purposes of this command, a variable-sized descriptor binding with a pname:descriptorCount of zero is treated as having a pname:descriptorCount of diff --git a/chapters/device_generated_commands/generation.adoc b/chapters/device_generated_commands/generation.adoc index 6f80f19c2..92eb58b10 100644 --- a/chapters/device_generated_commands/generation.adoc +++ b/chapters/device_generated_commands/generation.adoc @@ -139,7 +139,7 @@ include::{generated}/api/protos/vkGetGeneratedCommandsMemoryRequirementsNV.adoc[ .Valid Usage **** * [[VUID-vkGetGeneratedCommandsMemoryRequirementsNV-deviceGeneratedCommands-02906]] - The <> feature must: be enabled ifdef::VK_NV_device_generated_commands_compute[] @@ -341,7 +341,7 @@ include::{generated}/api/protos/vkCreateIndirectExecutionSetEXT.adoc[] .Valid Usage **** * [[VUID-vkCreateIndirectExecutionSetEXT-deviceGeneratedCommands-11013]] - The <> feature must: be enabled **** @@ -597,10 +597,6 @@ include::{generated}/api/structs/VkWriteIndirectExecutionSetPipelineEXT.adoc[] * [[VUID-VkWriteIndirectExecutionSetPipelineEXT-pipeline-11027]] pname:pipeline must: have been created with ename:VK_PIPELINE_CREATE_2_INDIRECT_BINDABLE_BIT_EXT - * [[VUID-VkWriteIndirectExecutionSetPipelineEXT-pipeline-11028]] - The descriptor layout info used to create pname:pipeline must: be - <> with the descriptor layout - info used to create the indirect execution set * [[VUID-VkWriteIndirectExecutionSetPipelineEXT-index-11029]] pname:index must: not be referenced by submitted command buffers * [[VUID-VkWriteIndirectExecutionSetPipelineEXT-pipeline-11030]] @@ -846,7 +842,7 @@ ifdef::VK_EXT_transform_feedback[] Transform feedback must: not be active endif::VK_EXT_transform_feedback[] * [[VUID-vkCmdExecuteGeneratedCommandsNV-deviceGeneratedCommands-02911]] - The <> feature must: be enabled **** @@ -1065,7 +1061,7 @@ endif::VK_VERSION_1_1[] ename:VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_NV bit set * [[VUID-vkCmdPreprocessGeneratedCommandsNV-deviceGeneratedCommands-02928]] - The <> feature must: be enabled **** @@ -1172,6 +1168,11 @@ endif::VK_VERSION_1_1[] and push constants must: match identically with those bound during recording of the corresponding call to flink:vkCmdPreprocessGeneratedCommandsEXT + * [[VUID-vkCmdExecuteGeneratedCommandsEXT-isPreprocessed-10198]] + If pname:isPreprocessed is ename:VK_TRUE then the conditional render + state and its predicate value must: match identically with the state and + value set during execution of the corresponding call to + flink:vkCmdPreprocessGeneratedCommandsEXT * [[VUID-vkCmdExecuteGeneratedCommandsEXT-isPreprocessed-11049]] If pname:isPreprocessed is ename:VK_TRUE and the pname:indirectCommandsLayout member of pname:pGeneratedCommandsInfo @@ -1248,7 +1249,7 @@ ifdef::VK_EXT_transform_feedback[] dlink:VK_NULL_HANDLE endif::VK_EXT_transform_feedback[] * [[VUID-vkCmdExecuteGeneratedCommandsEXT-deviceGeneratedCommands-11059]] - The <> feature must: be enabled * [[VUID-vkCmdExecuteGeneratedCommandsEXT-supportedIndirectCommandsShaderStages-11060]] @@ -1501,7 +1502,7 @@ endif::VK_VERSION_1_1[] * [[VUID-vkCmdPreprocessGeneratedCommandsEXT-stateCommandBuffer-11138]] pname:stateCommandBuffer must: be in the recording state * [[VUID-vkCmdPreprocessGeneratedCommandsEXT-deviceGeneratedCommands-11087]] - The <> feature must: be enabled * [[VUID-vkCmdPreprocessGeneratedCommandsEXT-supportedIndirectCommandsShaderStages-11088]] diff --git a/chapters/device_generated_commands/indirectcommands.adoc b/chapters/device_generated_commands/indirectcommands.adoc index da300ffbf..b772ae276 100644 --- a/chapters/device_generated_commands/indirectcommands.adoc +++ b/chapters/device_generated_commands/indirectcommands.adoc @@ -64,7 +64,7 @@ include::{generated}/api/protos/vkCreateIndirectCommandsLayoutEXT.adoc[] .Valid Usage **** * [[VUID-vkCreateIndirectCommandsLayoutEXT-deviceGeneratedCommands-11089]] - The <> feature must: be enabled **** @@ -287,8 +287,8 @@ include::{generated}/api/enums/VkIndirectCommandsLayoutUsageFlagBitsEXT.adoc[] * ename:VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_EXT specifies that the layout is always used with the manual preprocessing step through calling flink:vkCmdPreprocessGeneratedCommandsEXT and - executed by flink:vkCmdExecuteGeneratedCommandsEXT with `isPreprocessed` - set to ename:VK_TRUE. + executed by flink:vkCmdExecuteGeneratedCommandsEXT with + pname:isPreprocessed set to ename:VK_TRUE. * ename:VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_EXT specifies that the processing of sequences will happen at an implementation-dependent order, which is not guaranteed to be @@ -362,7 +362,7 @@ include::{generated}/api/protos/vkCreateIndirectCommandsLayoutNV.adoc[] .Valid Usage **** * [[VUID-vkCreateIndirectCommandsLayoutNV-deviceGeneratedCommands-02929]] - The <> feature must: be enabled **** @@ -517,8 +517,8 @@ include::{generated}/api/enums/VkIndirectCommandsLayoutUsageFlagBitsNV.adoc[] * ename:VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_NV specifies that the layout is always used with the manual preprocessing step through calling flink:vkCmdPreprocessGeneratedCommandsNV and - executed by flink:vkCmdExecuteGeneratedCommandsNV with `isPreprocessed` - set to ename:VK_TRUE. + executed by flink:vkCmdExecuteGeneratedCommandsNV with + pname:isPreprocessed set to ename:VK_TRUE. * ename:VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NV specifies that the input data for the sequences is not implicitly indexed from 0..sequencesUsed, but an application-provided @@ -570,7 +570,7 @@ ifndef::VKSC_VERSION_1_0[] `NULL` endif::VKSC_VERSION_1_0[] * [[VUID-vkDestroyIndirectCommandsLayoutNV-deviceGeneratedCommands-02941]] - The <> feature must: be enabled **** @@ -868,6 +868,7 @@ tname:VkIndirectStateFlagsNV is a bitmask type for setting a mask of zero or more elink:VkIndirectStateFlagBitsNV. -- +ifdef::VK_NV_device_generated_commands_compute[] [open,refpage='VkBindPipelineIndirectCommandNV',desc='Structure specifying input data for the compute pipeline dispatch token',type='structs'] -- The sname:VkBindPipelineIndirectCommandNV structure specifies the input data @@ -897,6 +898,8 @@ include::{generated}/api/structs/VkBindPipelineIndirectCommandNV.adoc[] include::{generated}/validity/structs/VkBindPipelineIndirectCommandNV.adoc[] -- +endif::VK_NV_device_generated_commands_compute[] + endif::VK_NV_device_generated_commands[] diff --git a/chapters/devsandqueues.adoc b/chapters/devsandqueues.adoc index 15769829d..2eb986bb7 100644 --- a/chapters/devsandqueues.adoc +++ b/chapters/devsandqueues.adoc @@ -150,7 +150,7 @@ accelerator. If the vendor has a https://pcisig.com/membership/member-companies[PCI vendor ID], the low 16 bits of pname:vendorID must: contain that PCI vendor -ID, and the remaining bits must: be set to zero. +ID, and the remaining bits must: be zero. Otherwise, the value returned must: be a valid Khronos vendor ID, obtained as described in the <> document in the section "`Registering a Vendor @@ -163,7 +163,7 @@ The vendor is also responsible for the value returned in pname:deviceID. If the implementation is driven primarily by a https://pcisig.com/[PCI device] with a https://pcisig.com/[PCI device ID], the low 16 bits of pname:deviceID must: contain that PCI device ID, and the remaining bits -must: be set to zero. +must: be zero. Otherwise, the choice of what values to return may: be dictated by operating system or platform policies - but should: uniquely identify both the device version and any major configuration options (for example, core count in the @@ -3330,8 +3330,8 @@ endif::VK_VERSION_1_1[] slink:VkDeviceQueueCreateInfo::pname:queueCount for the queue family indicated by pname:queueFamilyIndex when pname:device was created * [[VUID-vkGetDeviceQueue-flags-01841]] - slink:VkDeviceQueueCreateInfo::pname:flags must: have been set to zero - when pname:device was created + slink:VkDeviceQueueCreateInfo::pname:flags must: have been zero when + pname:device was created **** include::{generated}/validity/protos/vkGetDeviceQueue.adoc[] diff --git a/chapters/extensions.adoc b/chapters/extensions.adoc index d044a39f8..28ae36e03 100644 --- a/chapters/extensions.adoc +++ b/chapters/extensions.adoc @@ -509,7 +509,7 @@ underlying Vulkan driver. endif::VKSC_VERSION_1_0[] ifdef::VKSC_VERSION_1_0[] Physical device layers are not supported. -pname:pPropertyCount is set to `0` and ename:VK_SUCCESS is returned. +pname:pPropertyCount will be `0`, and ename:VK_SUCCESS is returned. endif::VKSC_VERSION_1_0[] include::{generated}/validity/protos/vkEnumerateDeviceLayerProperties.adoc[] diff --git a/chapters/fault_handling.adoc b/chapters/fault_handling.adoc index 960bd523c..5a2f4e5a4 100644 --- a/chapters/fault_handling.adoc +++ b/chapters/fault_handling.adoc @@ -147,11 +147,10 @@ flink:vkGetFaultData can: be called from multiple threads simultaneously. The implementation must: not record more than <> faults to be reported by flink:vkGetFaultData. -pname:pUnrecordedFaults is set to ename:VK_TRUE if the implementation has -detected one or more faults since the last successful retrieval of fault -data using this command, but was unable to record fault information for all -faults. -Otherwise, pname:pUnrecordedFaults is set to ename:VK_FALSE. +pname:pUnrecordedFaults is ename:VK_TRUE if the implementation has detected +one or more faults since the last successful retrieval of fault data using +this command, but was unable to record fault information for all faults. +Otherwise, pname:pUnrecordedFaults is ename:VK_FALSE. If pname:pFaults is `NULL`, then the number of faults with the specified pname:faultQueryBehavior characteristics associated with pname:device is diff --git a/chapters/features.adoc b/chapters/features.adoc index 2d87ca040..79da6439f 100644 --- a/chapters/features.adoc +++ b/chapters/features.adoc @@ -111,9 +111,9 @@ The fine-grained features are enabled by passing a pointer to the sname:VkPhysicalDeviceFeatures structure via the pname:pEnabledFeatures member of the slink:VkDeviceCreateInfo structure that is passed into the fname:vkCreateDevice call. -If a member of pname:pEnabledFeatures is set to ename:VK_TRUE or -ename:VK_FALSE, then the device will be created with the indicated feature -enabled or disabled, respectively. +If a member of pname:pEnabledFeatures is ename:VK_TRUE or ename:VK_FALSE, +then the device will be created with the indicated feature enabled or +disabled, respectively. ifdef::VK_VERSION_1_1,VK_KHR_get_physical_device_properties2[] Features can: also be enabled by using the slink:VkPhysicalDeviceFeatures2 structure. @@ -428,7 +428,7 @@ endif::VK_EXT_pipeline_robustness[] <> and multisample interpolation are supported. If this feature is not enabled, the pname:sampleShadingEnable member of - the slink:VkPipelineMultisampleStateCreateInfo structure must: be set to + the slink:VkPipelineMultisampleStateCreateInfo structure must: be ename:VK_FALSE and the pname:minSampleShading member is ignored. This also specifies whether shader modules can: declare the code:SampleRateShading capability. @@ -443,7 +443,7 @@ endif::VK_EXT_pipeline_robustness[] * [[features-logicOp]] pname:logicOp specifies whether logic operations are supported. If this feature is not enabled, the pname:logicOpEnable member of the - slink:VkPipelineColorBlendStateCreateInfo structure must: be set to + slink:VkPipelineColorBlendStateCreateInfo structure must: be ename:VK_FALSE, and the pname:logicOp member is ignored. * [[features-multiDrawIndirect]] pname:multiDrawIndirect specifies whether multiple draw indirect is supported. @@ -471,10 +471,10 @@ endif::VK_EXT_pipeline_robustness[] * [[features-depthBiasClamp]] pname:depthBiasClamp specifies whether depth bias clamping is supported. If this feature is not enabled, the pname:depthBiasClamp member of the - slink:VkPipelineRasterizationStateCreateInfo structure must: be set to - 0.0 unless the ename:VK_DYNAMIC_STATE_DEPTH_BIAS dynamic state is - enabled, in which case the pname:depthBiasClamp parameter to - flink:vkCmdSetDepthBias must: be set to 0.0. + slink:VkPipelineRasterizationStateCreateInfo structure must: be 0.0 + unless the ename:VK_DYNAMIC_STATE_DEPTH_BIAS dynamic state is enabled, + in which case the pname:depthBiasClamp parameter to + flink:vkCmdSetDepthBias must: be 0.0. * [[features-fillModeNonSolid]] pname:fillModeNonSolid specifies whether point and wireframe fill modes are supported. If this feature is not enabled, the ename:VK_POLYGON_MODE_POINT and @@ -493,10 +493,10 @@ endif::VK_EXT_pipeline_robustness[] * [[features-wideLines]] pname:wideLines specifies whether lines with width other than 1.0 are supported. If this feature is not enabled, the pname:lineWidth member of the - slink:VkPipelineRasterizationStateCreateInfo structure must: be set to - 1.0 unless the ename:VK_DYNAMIC_STATE_LINE_WIDTH dynamic state is - enabled, in which case the pname:lineWidth parameter to - flink:vkCmdSetLineWidth must: be set to 1.0. + slink:VkPipelineRasterizationStateCreateInfo structure must: be 1.0 + unless the ename:VK_DYNAMIC_STATE_LINE_WIDTH dynamic state is enabled, + in which case the pname:lineWidth parameter to flink:vkCmdSetLineWidth + must: be 1.0. When this feature is supported, the range and granularity of supported line widths are indicated by the pname:lineWidthRange and pname:lineWidthGranularity members of the sname:VkPhysicalDeviceLimits @@ -521,18 +521,18 @@ endif::VK_EXT_pipeline_robustness[] than one viewport is supported. If this feature is not enabled: ** The pname:viewportCount and pname:scissorCount members of the - slink:VkPipelineViewportStateCreateInfo structure must: be set to 1. + slink:VkPipelineViewportStateCreateInfo structure must: be 1. ** The pname:firstViewport and pname:viewportCount parameters to the - flink:vkCmdSetViewport command must: be set to 0 and 1, respectively. + flink:vkCmdSetViewport command must: be 0 and 1, respectively. ** The pname:firstScissor and pname:scissorCount parameters to the - flink:vkCmdSetScissor command must: be set to 0 and 1, respectively. + flink:vkCmdSetScissor command must: be 0 and 1, respectively. ifdef::VK_NV_scissor_exclusive[] ** The pname:exclusiveScissorCount member of the slink:VkPipelineViewportExclusiveScissorStateCreateInfoNV structure - must: be set to 0 or 1. + must: be 0 or 1. ** The pname:firstExclusiveScissor and pname:exclusiveScissorCount - parameters to the flink:vkCmdSetExclusiveScissorNV command must: be set - to 0 and 1, respectively. + parameters to the flink:vkCmdSetExclusiveScissorNV command must: be 0 + and 1, respectively. endif::VK_NV_scissor_exclusive[] * [[features-samplerAnisotropy]] pname:samplerAnisotropy specifies whether anisotropic filtering is supported. @@ -2863,7 +2863,7 @@ This structure describes the following feature: pipeline state. Otherwise depth clipping is only enabled when slink:VkPipelineRasterizationStateCreateInfo::pname:depthClampEnable is - set to ename:VK_FALSE. + ename:VK_FALSE. :refpage: VkPhysicalDeviceDepthClipEnableFeaturesEXT include::{chapters}/features.adoc[tag=features] @@ -3377,14 +3377,14 @@ describe the following features: supported for import and/or export. * [[features-sciSyncImport]] pname:sciSyncImport indicates whether stext:NvSciSyncObj import functionality is supported. - If pname:sciSyncImport is set to ename:VK_TRUE, slink:VkFence and/or + If pname:sciSyncImport is ename:VK_TRUE, slink:VkFence and/or slink:VkSemaphore support importing stext:NvSciSyncObj from applications. In this case, the application is responsible for the resource management of the stext:NvSciSyncObj. * [[features-sciSyncExport]] pname:sciSyncExport indicates whether stext:NvSciSyncObj export functionality is supported. - If pname:sciSyncExport is set to ename:VK_TRUE, slink:VkFence and/or + If pname:sciSyncExport is ename:VK_TRUE, slink:VkFence and/or slink:VkSemaphore support exporting stext:NvSciSyncObj created by the driver to applications. In this case, the driver is responsible for the resource management of @@ -3447,14 +3447,14 @@ structure describe the following features: of the stext:NvSciSyncObj. * [[features-sciSyncImport2]] pname:sciSyncImport indicates whether stext:NvSciSyncObj import functionality is supported. - If pname:sciSyncImport is set to ename:VK_TRUE, slink:VkFence and/or + If pname:sciSyncImport is ename:VK_TRUE, slink:VkFence and/or slink:VkSemaphore support importing stext:NvSciSyncObj from applications. In this case, the application is responsible for the resource management of the stext:NvSciSyncObj. * [[features-sciSyncExport2]] pname:sciSyncExport indicates whether stext:NvSciSyncObj export functionality is supported. - If pname:sciSyncExport is set to ename:VK_TRUE, slink:VkFence supports + If pname:sciSyncExport is ename:VK_TRUE, slink:VkFence supports exporting stext:NvSciSyncObj created by the driver to applications. In this case, the driver is responsible for the resource management of the stext:NvSciSyncObj. @@ -3508,15 +3508,14 @@ structure describe the following features: * [[features-sciBufImport]] pname:sciBufImport indicates whether stext:NvSciBufObj import functionality is supported. - If pname:sciBufImport is set to ename:VK_TRUE, slink:VkDeviceMemory - supports importing stext:NvSciBufObj from applications. + If pname:sciBufImport is ename:VK_TRUE, slink:VkDeviceMemory supports + importing stext:NvSciBufObj from applications. In this case, the application is responsible for the resource management of the stext:NvSciBufObj. * [[features-sciBufExport]] pname:sciBufExport indicates whether stext:NvSciBufObj export functionality is supported. - If pname:sciBufExport is set to ename:VK_TRUE, slink:VkDeviceMemory - supports exporting stext:NvSciBufObj created by the driver to - applications. + If pname:sciBufExport is ename:VK_TRUE, slink:VkDeviceMemory supports + exporting stext:NvSciBufObj created by the driver to applications. In this case, the driver is responsible for the resource management of the stext:NvSciBufObj. @@ -3561,9 +3560,8 @@ describe the following features: * [[features-screenBufferImport]] pname:screenBufferImport indicates whether QNX Screen buffer import functionality is supported. - If pname:screenBufferImport is set to ename:VK_TRUE, - slink:VkDeviceMemory supports importing code:_screen_buffer from - applications. + If pname:screenBufferImport is ename:VK_TRUE, slink:VkDeviceMemory + supports importing code:_screen_buffer from applications. In this case, the application is responsible for the resource management of the code:_screen_buffer. @@ -4471,7 +4469,7 @@ This structure describes the following feature: * pname:sType is a elink:VkStructureType value identifying this structure. * pname:pNext is `NULL` or a pointer to a structure extending this structure. - * [[features-deviceGeneratedCommands]] pname:deviceGeneratedCommands + * [[features-deviceGeneratedCommandsNV]] pname:deviceGeneratedCommands indicates whether the implementation supports functionality to generate commands on the device. See <>. @@ -4532,7 +4530,7 @@ This structure describes the following features: * pname:sType is a elink:VkStructureType value identifying this structure. * pname:pNext is `NULL` or a pointer to a structure extending this structure. - * [[features-deviceGeneratedCommandsEXT]] pname:deviceGeneratedCommands + * [[features-deviceGeneratedCommands]] pname:deviceGeneratedCommands indicates whether the implementation supports functionality to generate commands on the device. * [[features-dynamicGeneratedPipelineLayout]] diff --git a/chapters/fragops.adoc b/chapters/fragops.adoc index dd8a0d115..36e79584a 100644 --- a/chapters/fragops.adoc +++ b/chapters/fragops.adoc @@ -79,32 +79,32 @@ endif::VK_EXT_post_depth_coverage[] ifdef::VK_KHR_maintenance5[] If sname:VkPhysicalDeviceMaintenance5PropertiesKHR::pname:earlyFragmentMultisampleCoverageAfterSampleCounting -is set to ename:VK_TRUE and there is a <> -which declares the code:EarlyFragmentTests execution mode, <> which +declares the code:EarlyFragmentTests execution mode, <> and <> operations must: be performed after <>. Otherwise, if sname:VkPhysicalDeviceMaintenance5PropertiesKHR::pname:earlyFragmentMultisampleCoverageAfterSampleCounting -is set to ename:VK_FALSE and there is a <> -which declares the code:EarlyFragmentTests execution mode, <> which +declares the code:EarlyFragmentTests execution mode, <> and <> operations should: instead be performed after <>, but may: be performed before <>. If sname:VkPhysicalDeviceMaintenance5PropertiesKHR::pname:earlyFragmentSampleMaskTestBeforeSampleCounting -is set to ename:VK_TRUE and there is a <> -which declares the code:EarlyFragmentTests execution mode -<> operations must: follow the order -of fragment operations from above. +is ename:VK_TRUE and there is a <> which +declares the code:EarlyFragmentTests execution mode <> operations must: follow the order of fragment operations +from above. Otherwise, if sname:VkPhysicalDeviceMaintenance5PropertiesKHR::pname:earlyFragmentSampleMaskTestBeforeSampleCounting -is set to ename:VK_FALSE and there is a <> -which declares the code:EarlyFragmentTests execution mode, -<> operations should: follow the order -of fragment operations from above but may: instead be performed after +is ename:VK_FALSE and there is a <> which +declares the code:EarlyFragmentTests execution mode, <> operations should: follow the order of fragment +operations from above but may: instead be performed after <>. endif::VK_KHR_maintenance5[] ifndef::VK_KHR_maintenance5[] @@ -1848,10 +1848,10 @@ this fragment, respectively. ifdef::VK_EXT_depth_clamp_control[] If <> is enabled and slink:VkPipelineViewportDepthClampControlCreateInfoEXT::pname:depthClampMode -is set to ename:VK_DEPTH_CLAMP_MODE_USER_DEFINED_RANGE_EXT then [eq]#z~min~# -and [eq]#z~max~# are equal to the pname:minDepthClamp and -pname:maxDepthClamp values of the slink:VkDepthClampRangeEXT structure -pointed to by pname:pDepthClampRange. +is ename:VK_DEPTH_CLAMP_MODE_USER_DEFINED_RANGE_EXT, then [eq]#z~min~# and +[eq]#z~max~# are equal to the pname:minDepthClamp and pname:maxDepthClamp +values of the slink:VkDepthClampRangeEXT structure pointed to by +pname:pDepthClampRange. endif::VK_EXT_depth_clamp_control[] ifdef::VK_EXT_depth_clamp_zero_one[] diff --git a/chapters/fundamentals.adoc b/chapters/fundamentals.adoc index d8c5e53e7..d0c739920 100644 --- a/chapters/fundamentals.adoc +++ b/chapters/fundamentals.adoc @@ -682,13 +682,14 @@ ftext:vkDestroy*. The last in-parameter to each command that creates or destroys a Vulkan object is pname:pAllocator. ifndef::VKSC_VERSION_1_0[] -The pname:pAllocator parameter can: be set to a non-`NULL` value such that +The pname:pAllocator parameter can: be a non-`NULL` value, in which case allocations for the given object are delegated to an application provided -callback; refer to the <> chapter for -further details. +callback. +Refer to the <> chapter for further +details. endif::VKSC_VERSION_1_0[] ifdef::VKSC_VERSION_1_0[] -The pname:pAllocator parameter must: be set to `NULL`. +The pname:pAllocator parameter must: be `NULL`. Refer to the <> chapter for further details. endif::VKSC_VERSION_1_0[] diff --git a/chapters/fxvertex.adoc b/chapters/fxvertex.adoc index 87b24e0be..82eea1059 100644 --- a/chapters/fxvertex.adoc +++ b/chapters/fxvertex.adoc @@ -502,7 +502,7 @@ include::{generated}/api/structs/VkVertexInputBindingDescription2EXT.adoc[] ifdef::VK_EXT_vertex_attribute_divisor,VK_KHR_vertex_attribute_divisor[] * pname:divisor is the number of successive instances that will use the same value of the vertex attribute when instanced rendering is enabled. - This member can: be set to a value other than `1` if the + This member can: be a value other than `1` if the <> feature is enabled. For example, if the divisor is N, the same vertex attribute will be @@ -518,7 +518,7 @@ ifdef::VK_EXT_vertex_attribute_divisor,VK_KHR_vertex_attribute_divisor[] instances. endif::VK_EXT_vertex_attribute_divisor,VK_KHR_vertex_attribute_divisor[] ifndef::VK_EXT_vertex_attribute_divisor,VK_KHR_vertex_attribute_divisor[] - * pname:divisor must: be set to `1` + * pname:divisor must: be `1` endif::VK_EXT_vertex_attribute_divisor,VK_KHR_vertex_attribute_divisor[] .Valid Usage diff --git a/chapters/interfaces.adoc b/chapters/interfaces.adoc index d23b9bac5..2deda420a 100644 --- a/chapters/interfaces.adoc +++ b/chapters/interfaces.adoc @@ -516,8 +516,8 @@ structure with the following properties: * [[VUID-VkRenderingAttachmentLocationInfoKHR-dynamicRenderingLocalRead-09512]] If the <> feature is not enabled, and - pname:pColorAttachmentLocations is not `NULL`, each element must: be set - to the value of its index within the array + pname:pColorAttachmentLocations is not `NULL`, each element must: be the + value of its index within the array * [[VUID-VkRenderingAttachmentLocationInfoKHR-pColorAttachmentLocations-09513]] Elements of pname:pColorAttachmentLocations that are not ename:VK_ATTACHMENT_UNUSED must: each be unique @@ -817,7 +817,7 @@ structure with the following properties: If the <> feature is not enabled, and pname:pColorAttachmentInputIndices is not `NULL`, each element must: be - set to ename:VK_ATTACHMENT_UNUSED + ename:VK_ATTACHMENT_UNUSED * [[VUID-VkRenderingInputAttachmentIndexInfoKHR-dynamicRenderingLocalRead-09520]] If the <> feature is not enabled, diff --git a/chapters/limits.adoc b/chapters/limits.adoc index d6687efc0..66cf38219 100644 --- a/chapters/limits.adoc +++ b/chapters/limits.adoc @@ -736,7 +736,7 @@ endif::VK_VERSION_1_2,VK_KHR_create_renderpass2[] code:SampleMask built-in decoration. * [[limits-timestampComputeAndGraphics]] pname:timestampComputeAndGraphics specifies support for timestamps on all graphics and compute queues. - If this limit is set to ename:VK_TRUE, all queues that advertise the + If this limit is ename:VK_TRUE, all queues that advertise the ename:VK_QUEUE_GRAPHICS_BIT or ename:VK_QUEUE_COMPUTE_BIT in the sname:VkQueueFamilyProperties::pname:queueFlags support sname:VkQueueFamilyProperties::pname:timestampValidBits of at least 36. @@ -3014,7 +3014,7 @@ include::{generated}/api/structs/VkPhysicalDeviceTransformFeedbackPropertiesEXT. shaders declared with the code:GeometryStreams capability. If the implementation does not support sname:VkPhysicalDeviceTransformFeedbackFeaturesEXT::pname:geometryStreams - then pname:maxTransformFeedbackStreams must: be set to `1`. + then pname:maxTransformFeedbackStreams must: be `1`. * [[limits-maxTransformFeedbackBuffers]] pname:maxTransformFeedbackBuffers is the maximum number of transform feedback buffers that can be bound for capturing shader outputs from the last diff --git a/chapters/memory.adoc b/chapters/memory.adoc index e01b5448a..3bed9144e 100644 --- a/chapters/memory.adoc +++ b/chapters/memory.adoc @@ -2933,12 +2933,12 @@ include::{generated}/api/structs/VkAndroidHardwareBufferFormatResolvePropertiesA color attachment images that must: be used for color attachments when resolving to the specified external format. If the implementation supports external format resolves for the - specified external format, this value will be set to a color format - supporting the ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT in + specified external format, this value will be a color format supporting + the ename:VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT in slink:VkFormatProperties::pname:optimalTilingFeatures as returned by flink:vkGetPhysicalDeviceFormatProperties with pname:format equal to pname:colorAttachmentFormat If external format resolves are not - supported, this value will be set to `VK_FORMAT_UNDEFINED`. + supported, this value will be ename:VK_FORMAT_UNDEFINED. Any Android hardware buffer created with the code:GRALLOC_USAGE_HW_RENDER flag must: be renderable in some way in Vulkan, either: @@ -3052,7 +3052,7 @@ If the pname:pNext chain of slink:VkMemoryAllocateInfo includes a slink:VkExportMemoryAllocateInfo structure with a pname:handleType mask containing the ename:VK_EXTERNAL_MEMORY_HANDLE_TYPE_SCI_BUF_BIT_NV bit, but either sname:VkExportMemorySciBufInfoNV is not included in the pname:pNext -chain, or it is included but pname:pAttributes is set to `NULL`, +chain, or it is included but pname:pAttributes is `NULL`, flink:vkAllocateMemory will return ename:VK_ERROR_INITIALIZATION_FAILED. The pname:pAttributes parameter must: be a reconciled @@ -3979,7 +3979,7 @@ include::{generated}/api/protos/vkUnmapMemory.adoc[] ifdef::VK_KHR_map_memory2[] Calling fname:vkUnmapMemory is equivalent to calling flink:vkUnmapMemory2KHR -with an empty pname:pNext chain and the flags parameter set to zero. +with an empty pname:pNext chain and pname:flags set to zero. endif::VK_KHR_map_memory2[] .Valid Usage diff --git a/chapters/pipelines.adoc b/chapters/pipelines.adoc index ddbe90d96..2f724618e 100644 --- a/chapters/pipelines.adoc +++ b/chapters/pipelines.adoc @@ -174,7 +174,7 @@ when creating a group. When attempting to create many pipelines in a single command, it is possible that creation may: fail for a subset of them. -In this case, the corresponding elements of pname:pPipelines will be set to +In this case, the corresponding elements of pname:pPipelines will be dlink:VK_NULL_HANDLE. If creation fails for a pipeline despite valid arguments (for example, due to out of memory errors), the elink:VkResult code returned by the pipeline @@ -186,7 +186,7 @@ ifdef::VK_VERSION_1_3,VK_EXT_pipeline_creation_cache_control[] If creation fails for a pipeline that has the ename:VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT set in its stext:Vk*PipelineCreateInfo, pipelines at an index in the pname:pPipelines -array greater than or equal to that of the failing pipeline will be set to +array greater than or equal to that of the failing pipeline will be dlink:VK_NULL_HANDLE. endif::VK_VERSION_1_3,VK_EXT_pipeline_creation_cache_control[] @@ -197,7 +197,7 @@ the pname:pPipelines array and destroying every element that is not dlink:VK_NULL_HANDLE. If the entire command fails and no pipelines are created, all elements of -pname:pPipelines will be set to dlink:VK_NULL_HANDLE. +pname:pPipelines will be dlink:VK_NULL_HANDLE. [[pipelines-compute]] @@ -1724,11 +1724,11 @@ endif::VK_KHR_fragment_shading_rate[] ifdef::VK_NV_representative_fragment_test[] * slink:VkPipelineRepresentativeFragmentTestStateCreateInfoNV endif::VK_NV_representative_fragment_test[] -ifdef::VK_KHR_fragment_shading_rate[] +ifdef::VK_KHR_dynamic_rendering+VK_KHR_fragment_shading_rate[] * Inclusion/omission of the ename:VK_PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR flag -endif::VK_KHR_fragment_shading_rate[] +endif::VK_KHR_dynamic_rendering+VK_KHR_fragment_shading_rate[] ifdef::VK_EXT_fragment_density_map[] * Inclusion/omission of the ename:VK_PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT @@ -1744,7 +1744,7 @@ a pipeline specifies <> either directly or by including it as a pipeline library and endif::VK_EXT_graphics_pipeline_library[] -pname:rasterizerDiscardEnable is set to ename:VK_FALSE +pname:rasterizerDiscardEnable is ename:VK_FALSE ifdef::VK_VERSION_1_3,VK_EXT_extended_dynamic_state2[] or ename:VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE is used, endif::VK_VERSION_1_3,VK_EXT_extended_dynamic_state2[] @@ -1804,7 +1804,7 @@ a pipeline specifies <> either directly or by including it as a pipeline library and endif::VK_EXT_graphics_pipeline_library[] -pname:rasterizerDiscardEnable is set to ename:VK_FALSE +pname:rasterizerDiscardEnable is ename:VK_FALSE ifdef::VK_VERSION_1_3,VK_EXT_extended_dynamic_state2[] or ename:VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE is used, endif::VK_VERSION_1_3,VK_EXT_extended_dynamic_state2[] @@ -1883,8 +1883,7 @@ ifdef::VKSC_VERSION_1_0[] In Vulkan SC, the pipeline compilation process occurs <> and the pname:pStages are not needed at runtime and may: be omitted. -If omitted, pname:stageCount must: be set to `0` and pname:pStages must: be -`NULL`. +If omitted, pname:stageCount must: be `0` and pname:pStages must: be `NULL`. If provided, the values must: match the values specified to the offline compiler. endif::VKSC_VERSION_1_0[] @@ -2739,7 +2738,8 @@ ifdef::VK_NV_device_generated_commands[] * [[VUID-VkGraphicsPipelineCreateInfo-flags-02877]] If pname:flags includes ename:VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV, then the - <> + <> feature must: be enabled ifdef::VK_EXT_transform_feedback[] * [[VUID-VkGraphicsPipelineCreateInfo-flags-02966]] @@ -2772,7 +2772,8 @@ ifdef::VK_EXT_device_generated_commands[] * [[VUID-VkGraphicsPipelineCreateInfo-flags-11000]] If pname:flags includes ename:VK_PIPELINE_CREATE_2_INDIRECT_BINDABLE_BIT_EXT, then the - <> + <> feature must: be enabled * [[VUID-VkGraphicsPipelineCreateInfo-flags-11001]] If the pipeline requires <> + The <> feature must: be enabled **** @@ -8345,8 +8347,8 @@ include::{generated}/api/structs/VkPipelineBinaryHandlesInfoKHR.adoc[] If pname:pPipelineBinaries is `NULL`, the number of binaries that would be created is returned in pname:pipelineBinaryCount. -Otherwise, pname:pipelineBinaryCount must: be set to the number of entries -in the pname:pPipelineBinaries array, and on return from +Otherwise, pname:pipelineBinaryCount must: be the number of entries in the +pname:pPipelineBinaries array, and on return from flink:vkCreatePipelineBinariesKHR pname:pipelineBinaryCount is overwritten with the number of handles actually written to pname:pPipelineBinaries. If the value of pname:pipelineBinaryCount is less than the number of @@ -9148,7 +9150,8 @@ include::{generated}/api/protos/vkCmdBindPipelineShaderGroupNV.adoc[] pipeline was created only with the Shader Group from the pname:groupIndex information * [[VUID-vkCmdBindPipelineShaderGroupNV-deviceGeneratedCommands-02896]] - The <> + The <> feature must: be enabled **** diff --git a/chapters/primsrast.adoc b/chapters/primsrast.adoc index a06f5af23..8f0053eff 100644 --- a/chapters/primsrast.adoc +++ b/chapters/primsrast.adoc @@ -182,7 +182,7 @@ endif::VK_EXT_extended_dynamic_state3[] * pname:sampleShadingEnable can: be used to enable <>. * pname:minSampleShading specifies a minimum fraction of sample shading if - pname:sampleShadingEnable is set to ename:VK_TRUE. + pname:sampleShadingEnable is ename:VK_TRUE. * pname:pSampleMask is a pointer to an array of basetype:VkSampleMask values used in the <>. * pname:alphaToCoverageEnable controls whether a temporary coverage value @@ -1330,7 +1330,7 @@ and render pass transform endif::VK_QCOM_render_pass_transform[] used by rasterization. -If any of the following conditions are met, [eq]#C~xy~'# must: be set to +If any of the following conditions are met, [eq]#C~xy~'# is set to [eq]#{1,1}# by the implementation: * If <> is enabled. @@ -1442,7 +1442,7 @@ Implementations should: clamp the inputs to the combiner operations ifdef::VK_KHR_maintenance6[] do so if sname:VkPhysicalDeviceMaintenance6PropertiesKHR::pname:fragmentShadingRateClampCombinerInputs -is set to ename:VK_TRUE. +is ename:VK_TRUE. All implementations must: endif::VK_KHR_maintenance6[] clamp the result of the second combiner operation. @@ -1815,8 +1815,8 @@ include::{generated}/api/protos/vkCmdBindShadingRateImageNV.adoc[] recorded. * pname:imageView is an image view handle specifying the shading rate image. - pname:imageView may: be set to dlink:VK_NULL_HANDLE, which is equivalent - to specifying a view of an image filled with zero values. + pname:imageView may: be dlink:VK_NULL_HANDLE, which is equivalent to + specifying a view of an image filled with zero values. * pname:imageLayout is the layout that the image subresources accessible from pname:imageView will be in when the shading rate image is accessed. @@ -2382,7 +2382,7 @@ slink:VkPipelineMultisampleStateCreateInfo::pname:minSampleShading {times} slink:VkPipelineMultisampleStateCreateInfo::pname:rasterizationSamples {rceil}, 1)# times per fragment. If slink:VkPipelineMultisampleStateCreateInfo::pname:sampleShadingEnable is -set to ename:VK_TRUE, sample shading is enabled. +ename:VK_TRUE, sample shading is enabled. If a fragment shader entry point <> an input variable decorated with a code:BuiltIn of code:SampleId or @@ -3639,14 +3639,14 @@ endif::VK_KHR_maintenance5[] ifdef::VK_KHR_maintenance5[] If sname:VkPhysicalDeviceMaintenance5PropertiesKHR::pname:polygonModePointSize -is set to ename:VK_TRUE, the point size of the final rasterization of -polygons is taken from code:PointSize when <> is ename:VK_POLYGON_MODE_POINT. +is ename:VK_TRUE, the point size of the final rasterization of polygons is +taken from code:PointSize when <> is +ename:VK_POLYGON_MODE_POINT. Otherwise, if sname:VkPhysicalDeviceMaintenance5PropertiesKHR::pname:polygonModePointSize -is set to ename:VK_FALSE, the point size of the final rasterization of -polygons is 1.0 when <> is +is ename:VK_FALSE, the point size of the final rasterization of polygons is +1.0 when <> is ename:VK_POLYGON_MODE_POINT. endif::VK_KHR_maintenance5[] -- diff --git a/chapters/raytracing.adoc b/chapters/raytracing.adoc index 4799e17ca..ef1530d33 100644 --- a/chapters/raytracing.adoc +++ b/chapters/raytracing.adoc @@ -402,8 +402,8 @@ include::{generated}/api/protos/vkCmdBindInvocationMaskHUAWEI.adoc[] * pname:commandBuffer is the command buffer into which the command will be recorded * pname:imageView is an image view handle specifying the invocation mask - image pname:imageView may: be set to dlink:VK_NULL_HANDLE, which is - equivalent to specifying a view of an image filled with ones value. + image pname:imageView may: be dlink:VK_NULL_HANDLE, which is equivalent + to specifying a view of an image filled with ones value. * pname:imageLayout is the layout that the image subresources accessible from pname:imageView will be in when the invocation mask image is accessed diff --git a/chapters/renderpass.adoc b/chapters/renderpass.adoc index 7cdde883b..263c8b7f3 100644 --- a/chapters/renderpass.adoc +++ b/chapters/renderpass.adoc @@ -156,8 +156,8 @@ included in the pname:pNext chain with pname:perViewRenderAreaCount not equal to `0`, then the elements of slink:VkMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM::pname:pPerViewRenderAreas override pname:renderArea and define a render area for each view. -In this case, pname:renderArea must: be set to an area at least as large as -the union of all the per-view render areas. +In this case, pname:renderArea must: be an area at least as large as the +union of all the per-view render areas. endif::VK_QCOM_multiview_per_view_render_areas[] Each element of the pname:pColorAttachments array corresponds to an output @@ -1153,6 +1153,7 @@ endif::VK_ANDROID_external_format_resolve[] include::{generated}/validity/structs/VkRenderingAttachmentInfo.adoc[] -- +ifdef::VK_VERSION_1_3,VK_KHR_dynamic_rendering[] ifdef::VK_KHR_fragment_shading_rate[] [open,refpage='VkRenderingFragmentShadingRateAttachmentInfoKHR',desc='Structure specifying fragment shading rate attachment information',type='structs'] -- @@ -1233,7 +1234,9 @@ was specified with all texels specifying a single pixel per fragment. include::{generated}/validity/structs/VkRenderingFragmentShadingRateAttachmentInfoKHR.adoc[] -- endif::VK_KHR_fragment_shading_rate[] +endif::VK_VERSION_1_3,VK_KHR_dynamic_rendering[] +ifdef::VK_VERSION_1_3,VK_KHR_dynamic_rendering[] ifdef::VK_EXT_fragment_density_map[] [open,refpage='VkRenderingFragmentDensityMapAttachmentInfoEXT',desc='Structure specifying fragment shading rate attachment information',type='structs'] -- @@ -1283,6 +1286,7 @@ endif::VKSC_VERSION_1_0[] include::{generated}/validity/structs/VkRenderingFragmentDensityMapAttachmentInfoEXT.adoc[] -- endif::VK_EXT_fragment_density_map[] +endif::VK_VERSION_1_3,VK_KHR_dynamic_rendering[] ifdef::VK_KHR_maintenance5[] [open,refpage='vkGetRenderingAreaGranularityKHR',desc='Returns the granularity for dynamic rendering optimal render area',type='protos'] @@ -6299,8 +6303,8 @@ included in the pname:pNext chain with pname:perViewRenderAreaCount not equal to `0`, then the elements of slink:VkMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM::pname:pPerViewRenderAreas override pname:renderArea and define a render area for each view. -In this case, pname:renderArea must: be set to an area at least as large as -the union of all the per-view render areas. +In this case, pname:renderArea must: be an area at least as large as the +union of all the per-view render areas. endif::VK_QCOM_multiview_per_view_render_areas[] ifdef::VK_HUAWEI_subpass_shading[] @@ -6972,9 +6976,9 @@ and pname:resolveMode values of the render pass instance. When per-view render areas are defined, the value of slink:VkRenderPassBeginInfo::pname:renderArea ifdef::VK_VERSION_1_3,VK_KHR_dynamic_rendering[or slink:VkRenderingInfo::pname:renderArea] -must: be set to a render area that includes the union of all per-view render -areas, may: be used by the implementation for optimizations, but does not -affect loads, stores, or resolves. +must: be a render area that includes the union of all per-view render areas, +may: be used by the implementation for optimizations, but does not affect +loads, stores, or resolves. If this structure is present and if pname:perViewRenderAreaCount is not zero, then pname:perViewRenderAreaCount must: be at least one greater than @@ -7416,7 +7420,7 @@ To avoid a data race, the aspect not being written must: be in a read-only layout, and writes to it must: be disabled in the draw state. For example, to read from stencil while writing depth, the attachment must: be in ename:VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL (or -equivalent), and the stencil write mask must: be set to 0. +equivalent), and the stencil write mask must: be 0. Similarly to read from depth while writing stencil, the attachment must: be in ename:VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL (or equivalent), and depth write enable must: be ename:VK_FALSE. diff --git a/chapters/resources.adoc b/chapters/resources.adoc index 69c25800c..66e3098c0 100644 --- a/chapters/resources.adoc +++ b/chapters/resources.adoc @@ -1731,7 +1731,11 @@ ifdef::VK_KHR_video_queue[] conditions are true: *** slink:VkImageCreateInfo::pname:format equals slink:VkVideoFormatPropertiesKHR::pname:format. - *** slink:VkImageCreateInfo::pname:flags only contains bits also set in + *** slink:VkImageCreateInfo::pname:flags only contains +ifdef::VK_KHR_video_maintenance1[] + ename:VK_IMAGE_CREATE_VIDEO_PROFILE_INDEPENDENT_BIT_KHR and/or +endif::VK_KHR_video_maintenance1[] + bits also set in slink:VkVideoFormatPropertiesKHR::pname:imageCreateFlags. *** slink:VkImageCreateInfo::pname:imageType equals slink:VkVideoFormatPropertiesKHR::pname:imageType. @@ -1817,6 +1821,14 @@ ifdef::VK_EXT_fragment_density_map[] ename:VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT, pname:imageType must: be ename:VK_IMAGE_TYPE_2D endif::VK_EXT_fragment_density_map[] +ifndef::VKSC_VERSION_1_0[] + * [[VUID-VkImageCreateInfo-imageType-10196]] + If pname:imageType is ename:VK_IMAGE_TYPE_3D and pname:flags contains + ename:VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT then pname:flags must: not + contain any of ename:VK_IMAGE_CREATE_SPARSE_BINDING_BIT, + ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT, and + ename:VK_IMAGE_CREATE_SPARSE_ALIASED_BIT +endif::VKSC_VERSION_1_0[] ifdef::VK_VERSION_1_1,VK_KHR_maintenance1[] * [[VUID-VkImageCreateInfo-flags-00950]] If pname:flags contains ename:VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT, @@ -1832,6 +1844,12 @@ ifdef::VK_EXT_image_2d_view_of_3d[] If pname:flags contains ename:VK_IMAGE_CREATE_2D_VIEW_COMPATIBLE_BIT_EXT, pname:imageType must: be ename:VK_IMAGE_TYPE_3D + * [[VUID-VkImageCreateInfo-imageType-10197]] + If pname:imageType is ename:VK_IMAGE_TYPE_3D and pname:flags contains + ename:VK_IMAGE_CREATE_2D_VIEW_COMPATIBLE_BIT_EXT then pname:flags must: + not contain any of ename:VK_IMAGE_CREATE_SPARSE_BINDING_BIT, + ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT, and + ename:VK_IMAGE_CREATE_SPARSE_ALIASED_BIT endif::VK_EXT_image_2d_view_of_3d[] * [[VUID-VkImageCreateInfo-extent-02252]] pname:extent.width must: be less than or equal to @@ -4992,16 +5010,6 @@ endif::VK_EXT_image_2d_view_of_3d[] pname:viewType is ename:VK_IMAGE_VIEW_TYPE_2D or ename:VK_IMAGE_VIEW_TYPE_2D_ARRAY then pname:subresourceRange.levelCount must: be 1 -ifndef::VKSC_VERSION_1_0[] - * [[VUID-VkImageViewCreateInfo-image-04971]] - If pname:image was created with ename:VK_IMAGE_TYPE_3D and - pname:viewType is ename:VK_IMAGE_VIEW_TYPE_2D or - ename:VK_IMAGE_VIEW_TYPE_2D_ARRAY then - slink:VkImageCreateInfo::pname:flags must: not contain any of - ename:VK_IMAGE_CREATE_SPARSE_BINDING_BIT, - ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT, and - ename:VK_IMAGE_CREATE_SPARSE_ALIASED_BIT -endif::VKSC_VERSION_1_0[] * [[VUID-VkImageViewCreateInfo-image-04972]] If pname:image was created with a pname:samples value not equal to ename:VK_SAMPLE_COUNT_1_BIT then pname:viewType must: be either @@ -5270,7 +5278,7 @@ ifdef::VK_VERSION_1_1,VK_KHR_maintenance2[] ifdef::VK_KHR_maintenance6[] the sname:VkPhysicalDeviceMaintenance6PropertiesKHR::pname:blockTexelViewCompatibleMultipleLayers - property is not set to ename:VK_TRUE, + property is not ename:VK_TRUE, endif::VK_KHR_maintenance6[] and pname:format is a non-compressed format, then the pname:layerCount member of pname:subresourceRange must: be `1` diff --git a/chapters/samplers.adoc b/chapters/samplers.adoc index c0a4428f5..ea9847b02 100644 --- a/chapters/samplers.adoc +++ b/chapters/samplers.adoc @@ -106,11 +106,11 @@ include::{generated}/api/structs/VkSamplerCreateInfo.adoc[] * [[samplers-unnormalizedCoordinates]] pname:unnormalizedCoordinates controls whether to use unnormalized or normalized texel coordinates to address texels of the image. - When set to ename:VK_TRUE, the range of the image coordinates used to - lookup the texel is in the range of zero to the image size in each - dimension. - When set to ename:VK_FALSE the range of image coordinates is zero to - one. + When pname:unnormalizedCoordinates is ename:VK_TRUE, the range of the + image coordinates used to lookup the texel is in the range of zero to + the image size in each dimension. + When pname:unnormalizedCoordinates is ename:VK_FALSE, the range of image + coordinates is zero to one. + When pname:unnormalizedCoordinates is ename:VK_TRUE, images the sampler is used with in the shader have the following requirements: @@ -239,8 +239,7 @@ ifdef::VK_VERSION_1_2,VK_EXT_sampler_filter_minmax[] If <> is enabled and the pname:pNext chain includes a slink:VkSamplerReductionModeCreateInfo structure, then the sampler - reduction mode must: be set to - ename:VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE + reduction mode must: be ename:VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE endif::VK_VERSION_1_2,VK_EXT_sampler_filter_minmax[] endif::VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion[] ifdef::VK_VERSION_1_2[] @@ -248,8 +247,7 @@ ifdef::VK_VERSION_1_2[] If <> is not enabled and the pname:pNext chain includes a slink:VkSamplerReductionModeCreateInfo structure, then the sampler - reduction mode must: be set to - ename:VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE + reduction mode must: be ename:VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE endif::VK_VERSION_1_2[] * [[VUID-VkSamplerCreateInfo-addressModeU-01079]] If <> @@ -886,7 +884,7 @@ the default mode of operation. If pname:format supports ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT -the pname:forceExplicitReconstruction value behaves as if it was set to +the pname:forceExplicitReconstruction value behaves as if it were ename:VK_TRUE. ==== diff --git a/chapters/shaders.adoc b/chapters/shaders.adoc index 67525dc27..ce31b37a7 100644 --- a/chapters/shaders.adoc +++ b/chapters/shaders.adoc @@ -320,7 +320,8 @@ ifdef::VK_EXT_device_generated_commands[] * [[VUID-VkShaderCreateInfoEXT-flags-11005]] If pname:flags includes ename:VK_SHADER_CREATE_INDIRECT_BINDABLE_BIT_EXT, then the - <> + <> feature must: be enabled * [[VUID-VkShaderCreateInfoEXT-flags-11006]] If pname:flags includes @@ -627,10 +628,10 @@ ifdef::VK_EXT_fragment_density_map[] ename:VK_SHADER_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT endif::VK_EXT_fragment_density_map[] differs subtly from the behavior of -ifdef::VK_KHR_fragment_shading_rate[] +ifdef::VK_KHR_dynamic_rendering+VK_KHR_fragment_shading_rate[] ename:VK_PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR -endif::VK_KHR_fragment_shading_rate[] -ifdef::VK_KHR_fragment_shading_rate+VK_EXT_fragment_density_map[and] +ifdef::VK_EXT_fragment_density_map[and] +endif::VK_KHR_dynamic_rendering+VK_KHR_fragment_shading_rate[] ifdef::VK_EXT_fragment_density_map[] ename:VK_PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT endif::VK_EXT_fragment_density_map[] diff --git a/chapters/sparsemem.adoc b/chapters/sparsemem.adoc index 7c86eaa88..d7770bae9 100644 --- a/chapters/sparsemem.adoc +++ b/chapters/sparsemem.adoc @@ -937,8 +937,8 @@ If pname:pPropertyCount is less than the number of sparse format properties available, at most pname:pPropertyCount structures will be written. If ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT is not supported for the given -arguments, pname:pPropertyCount will be set to zero upon return, and no data -will be written to pname:pProperties. +arguments, pname:pPropertyCount will be zero upon return, and no data will +be written to pname:pProperties. Multiple aspects are returned for depth/stencil images that are implemented as separate planes by the implementation. @@ -1181,7 +1181,7 @@ memory requirements available, at most pname:pSparseMemoryRequirementCount structures will be written. If the image was not created with ename:VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT -then pname:pSparseMemoryRequirementCount will be set to zero and +then pname:pSparseMemoryRequirementCount will be zero and pname:pSparseMemoryRequirements will not be written to. [NOTE] diff --git a/chapters/synchronization.adoc b/chapters/synchronization.adoc index 8503a34d0..440688a71 100644 --- a/chapters/synchronization.adoc +++ b/chapters/synchronization.adoc @@ -2120,8 +2120,8 @@ chain, this structure is ignored. If slink:VkExportFenceCreateInfo is included in the pname:pNext chain of slink:VkFenceCreateInfo with a Windows pname:handleType, but either sname:VkExportFenceWin32HandleInfoKHR is not included in the pname:pNext -chain, or it is included but pname:pAttributes is set to `NULL`, default -security descriptor values will be used, and child processes created by the +chain, or it is included but pname:pAttributes is `NULL`, default security +descriptor values will be used, and child processes created by the application will not inherit the handle, as described in the MSDN documentation for "`Synchronization Object Security and Access Rights`"^1^. Further, if the structure is not present, the access rights will be @@ -2334,7 +2334,7 @@ chain, this structure is ignored. If the pname:pNext chain of slink:VkFenceCreateInfo includes a slink:VkExportFenceCreateInfo structure with a NvSciSync pname:handleType, but either slink:VkExportFenceSciSyncInfoNV is not included in the -pname:pNext chain, or it is included but pname:pAttributes is set to `NULL`, +pname:pNext chain, or it is included but pname:pAttributes is `NULL`, flink:vkCreateFence will return ename:VK_ERROR_INITIALIZATION_FAILED. The pname:pAttributes must: be a reconciled sname:NvSciSyncAttrList. @@ -3560,8 +3560,8 @@ chain, this structure is ignored. If slink:VkExportSemaphoreCreateInfo is included in the pname:pNext chain of slink:VkSemaphoreCreateInfo with a Windows pname:handleType, but either sname:VkExportSemaphoreWin32HandleInfoKHR is not included in the pname:pNext -chain, or it is included but pname:pAttributes is set to `NULL`, default -security descriptor values will be used, and child processes created by the +chain, or it is included but pname:pAttributes is `NULL`, default security +descriptor values will be used, and child processes created by the application will not inherit the handle, as described in the MSDN documentation for "`Synchronization Object Security and Access Rights`"^1^. Further, if the structure is not present, the access rights used depend on @@ -3910,7 +3910,7 @@ If the pname:pNext chain of slink:VkSemaphoreCreateInfo includes a slink:VkExportSemaphoreCreateInfo structure with a NvSciSync pname:handleType, but either slink:VkExportSemaphoreSciSyncInfoNV is not included in the pname:pNext chain, or it is included but pname:pAttributes -is set to `NULL`, flink:vkCreateSemaphore will return +is `NULL`, flink:vkCreateSemaphore will return ename:VK_ERROR_INITIALIZATION_FAILED. The pname:pAttributes must: be a reconciled sname:NvSciSyncAttrList. @@ -7376,9 +7376,9 @@ A release operation is defined by executing a buffer range) or an <> (for an image subresource range) using a pipeline barrier command, on a queue from the source queue family. -The pname:srcQueueFamilyIndex parameter of the barrier must: be set to the -source queue family index, and the pname:dstQueueFamilyIndex parameter to -the destination queue family index. +The pname:srcQueueFamilyIndex parameter of the barrier must: be the source +queue family index, and the pname:dstQueueFamilyIndex parameter to the +destination queue family index. pname:dstAccessMask is ignored for such a barrier, such that no visibility operation is executed - the value of this mask does not affect the validity of the barrier. @@ -7398,9 +7398,9 @@ barrier>> (for an image subresource range) using a pipeline barrier command, on a queue from the destination queue family. The buffer range or image subresource range specified in an acquire operation must: match exactly that of a previous release operation. -The pname:srcQueueFamilyIndex parameter of the barrier must: be set to the -source queue family index, and the pname:dstQueueFamilyIndex parameter to -the destination queue family index. +The pname:srcQueueFamilyIndex parameter of the barrier must: be the source +queue family index, and the pname:dstQueueFamilyIndex parameter to the +destination queue family index. pname:srcAccessMask is ignored for such a barrier, such that no availability operation is executed - the value of this mask does not affect the validity of the barrier. diff --git a/chapters/textures.adoc b/chapters/textures.adoc index 8b7fadb80..e100eafdc 100644 --- a/chapters/textures.adoc +++ b/chapters/textures.adoc @@ -1058,8 +1058,7 @@ ifdef::VK_KHR_maintenance5[] If the image view has a depth/stencil format and the elink:VkComponentSwizzle is ename:VK_COMPONENT_SWIZZLE_ONE, and sname:VkPhysicalDeviceMaintenance5PropertiesKHR::pname:depthStencilSwizzleOneSupport -is not set to ename:VK_TRUE, the value of the texel after swizzle is -undefined:. +is not ename:VK_TRUE, the value of the texel after swizzle is undefined:. endif::VK_KHR_maintenance5[] @@ -1150,18 +1149,17 @@ Reconstruction is implemented in one of two ways: If the format of the image that is to be sampled sets ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT, or the slink:VkSamplerYcbcrConversionCreateInfo's -pname:forceExplicitReconstruction is set to ename:VK_TRUE, reconstruction is +pname:forceExplicitReconstruction is ename:VK_TRUE, reconstruction is performed as an explicit step independent of filtering, described in the <> section. If the format of the image that is to be sampled does not set ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT and if the slink:VkSamplerYcbcrConversionCreateInfo's -pname:forceExplicitReconstruction is set to ename:VK_FALSE, reconstruction -is performed as an implicit part of filtering prior to color model -conversion, with no separate post-conversion texel filtering step, as -described in the <> -section. +pname:forceExplicitReconstruction is ename:VK_FALSE, reconstruction is +performed as an implicit part of filtering prior to color model conversion, +with no separate post-conversion texel filtering step, as described in the +<> section. [[textures-explicit-reconstruction]] @@ -2925,7 +2923,8 @@ endif::VK_VERSION_1_2,VK_EXT_sampler_filter_minmax[] ifdef::VK_QCOM_filter_cubic_clamp[] [[textures-texel-range-clamp]] ==== Texel Range Clamp -When the pname:reductionMode is set to + +When pname:reductionMode is ename:VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM, the weighted average is clamped to be within the component-wise minimum and maximum of the set of texels with non-zero weights. @@ -3049,7 +3048,7 @@ The sum [eq]#{tau}~2Daniso~# is defined using the single isotropic ++++ ifdef::VK_VERSION_1_2,VK_EXT_sampler_filter_minmax[] -When slink:VkSamplerReductionModeCreateInfo::pname:reductionMode is set to +When slink:VkSamplerReductionModeCreateInfo::pname:reductionMode is ename:VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE, the above summation is used. However, if the reduction mode is ename:VK_SAMPLER_REDUCTION_MODE_MIN or @@ -3106,8 +3105,8 @@ requests the footprint in the lower-resolution mip level (higher level number), while code:false requests the footprint in the higher-resolution mip level. If texel filtering would access only a single mip level, the footprint in -that level would be returned when code:Coarse is set to code:false; an empty -footprint would be returned when code:Coarse is set to code:true. +that level would be returned when code:Coarse is code:false; an empty +footprint would be returned when code:Coarse is code:true. The footprint for code:OpImageSampleFootprintNV is returned in a structure with six members: @@ -3422,11 +3421,10 @@ to both separable and non-separable filters: === Weight Sampler Parameters Weight sampling requires sname:VkSamplerCreateInfo pname:addressModeU and -pname:addressModeV must: be set to -ename:VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE or +pname:addressModeV must: be ename:VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE or ename:VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER. If ename:VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER is used, then the border -color must: be set to transparent black. +color must: be ename:VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK. [[textures-weightimage-filteroperation]] @@ -3549,7 +3547,7 @@ produce a filtered value. \end{aligned} ++++ -When slink:VkSamplerReductionModeCreateInfo::pname:reductionMode is set to +When slink:VkSamplerReductionModeCreateInfo::pname:reductionMode is ename:VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE, the above summation is used. However, if the reduction mode is ename:VK_SAMPLER_REDUCTION_MODE_MIN or @@ -3714,7 +3712,7 @@ The code:opImageBlockMatchSSD computes the sum of the squared differences. \end{aligned} ++++ -When slink:VkSamplerReductionModeCreateInfo::pname:reductionMode is set to +When slink:VkSamplerReductionModeCreateInfo::pname:reductionMode is ename:VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE, the above summation is used. However, if the reduction mode is ename:VK_SAMPLER_REDUCTION_MODE_MIN or @@ -4011,7 +4009,7 @@ weights, are combined to produce a box filtered value. \end{aligned} ++++ -When slink:VkSamplerReductionModeCreateInfo::pname:reductionMode is set to +When slink:VkSamplerReductionModeCreateInfo::pname:reductionMode is ename:VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE, the above summation is used. However, if the reduction mode is ename:VK_SAMPLER_REDUCTION_MODE_MIN or diff --git a/chapters/vertexpostproc.adoc b/chapters/vertexpostproc.adoc index 82995703e..5568669a4 100644 --- a/chapters/vertexpostproc.adoc +++ b/chapters/vertexpostproc.adoc @@ -904,8 +904,8 @@ slink:VkPipelineDynamicStateCreateInfo::pname:pDynamicStates. endif::VK_EXT_extended_dynamic_state3[] Otherwise, this state is specified by the slink:VkPipelineRasterizationDepthClipStateCreateInfoEXT::pname:depthClipEnable -value used to create the currently active pipeline, or is set to the inverse -of slink:VkPipelineRasterizationStateCreateInfo::pname:depthClampEnable if +value used to create the currently active pipeline, or by the inverse of +slink:VkPipelineRasterizationStateCreateInfo::pname:depthClampEnable if sname:VkPipelineRasterizationDepthClipStateCreateInfoEXT is not specified. :refpage: vkCmdSetDepthClipEnableEXT diff --git a/chapters/video/av1_decode.adoc b/chapters/video/av1_decode.adoc index e266ae6b2..31f7d1c3c 100644 --- a/chapters/video/av1_decode.adoc +++ b/chapters/video/av1_decode.adoc @@ -186,8 +186,8 @@ include::{generated}/api/structs/VkVideoDecodeAV1ProfileInfoKHR.adoc[] * [[decode-av1-film-grain-support]] pname:filmGrainSupport specifies whether AV1 film grain, as defined in section 7.8.3 of the <>, can: be used with the video profile. - When this member is set to ename:VK_TRUE, video session objects created - against the video profile will be able to decode pictures that have + When this member is ename:VK_TRUE, video session objects created against + the video profile will be able to decode pictures that have <> enabled. [NOTE] diff --git a/chapters/video/encode.adoc b/chapters/video/encode.adoc index 3bbfe2f58..2ee8454c3 100644 --- a/chapters/video/encode.adoc +++ b/chapters/video/encode.adoc @@ -1908,7 +1908,7 @@ video encode operations that follow in execution order. be greater than zero * [[VUID-VkVideoEncodeRateControlInfoKHR-layerCount-08358]] If pname:layerCount is not zero, then pname:initialVirtualBufferSizeInMs - must: be less than pname:virtualBufferSizeInMs + must: be less than or equal to pname:virtualBufferSizeInMs ifdef::VK_KHR_video_encode_h264[] * [[VUID-VkVideoEncodeRateControlInfoKHR-videoCodecOperation-07022]] If the pname:videoCodecOperation of the used video profile is diff --git a/chapters/video/h264_encode.adoc b/chapters/video/h264_encode.adoc index 648f8d9ce..206cebdc5 100644 --- a/chapters/video/h264_encode.adoc +++ b/chapters/video/h264_encode.adoc @@ -113,7 +113,7 @@ The number of VCL NAL units written is specified by slink:VkVideoEncodeH264PictureInfoKHR::pname:naluSliceEntryCount. In addition, if -slink:VkVideoEncodeH264PictureInfoKHR::pname:generatePrefixNalu is set to +slink:VkVideoEncodeH264PictureInfoKHR::pname:generatePrefixNalu is ename:VK_TRUE for the video encode operation, then an additional prefix NAL unit is written before each VCL NAL unit corresponding to individual slices in the format defined in section 7.3.2.12, according to the semantics @@ -609,8 +609,8 @@ include::{generated}/api/structs/VkVideoEncodeH264SessionCreateInfoKHR.adoc[] structure. * pname:useMaxLevelIdc indicates whether the value of pname:maxLevelIdc should be used by the implementation. - When it is set to ename:VK_FALSE, the implementation ignores the value - of pname:maxLevelIdc and uses the value of + When it is ename:VK_FALSE, the implementation ignores the value of + pname:maxLevelIdc and uses the value of slink:VkVideoEncodeH264CapabilitiesKHR::pname:maxLevelIdc, as reported by flink:vkGetPhysicalDeviceVideoCapabilitiesKHR for the video profile. * pname:maxLevelIdc is a code:StdVideoH264LevelIdc value specifying the @@ -758,7 +758,7 @@ include::{generated}/api/structs/VkVideoEncodeH264SessionParametersGetInfoKHR.ad identify the retrieved H.264 sequence and/or picture parameter set(s). * pname:stdPPSId specifies the H.264 picture parameter set ID used to identify the retrieved H.264 picture parameter set when - pname:writeStdPPS is set to ename:VK_TRUE. + pname:writeStdPPS is ename:VK_TRUE. When this structure is specified in the pname:pNext chain of the slink:VkVideoEncodeSessionParametersGetInfoKHR structure passed to @@ -766,10 +766,10 @@ flink:vkGetEncodedVideoSessionParametersKHR, the command will write encoded parameter data to the output buffer in the following order: . The <> identified by - pname:stdSPSId, if pname:writeStdSPS is set to ename:VK_TRUE. + pname:stdSPSId, if pname:writeStdSPS is ename:VK_TRUE. . The <> identified by the pair constructed from pname:stdSPSId and pname:stdPPSId, if - pname:writeStdPPS is set to ename:VK_TRUE. + pname:writeStdPPS is ename:VK_TRUE. .Valid Usage **** @@ -1230,15 +1230,15 @@ include::{generated}/api/structs/VkVideoEncodeH264RateControlInfoKHR.adoc[] control flags. * pname:gopFrameCount is the number of frames within a <> intended to be used by the application. - If it is set to 0, the rate control algorithm may: assume an + If it is 0, the rate control algorithm may: assume an implementation-dependent GOP length. - If it is set to code:UINT32_MAX, the GOP length is treated as infinite. + If it is code:UINT32_MAX, the GOP length is treated as infinite. * pname:idrPeriod is the interval, in terms of number of frames, between two <> (see <>). - If it is set to 0, the rate control algorithm may: assume an + If it is 0, the rate control algorithm may: assume an implementation-dependent IDR period. - If it is set to code:UINT32_MAX, the IDR period is treated as infinite. + If it is code:UINT32_MAX, the IDR period is treated as infinite. * pname:consecutiveBFrameCount is the number of consecutive B frames between I and/or P frames within the <>. * pname:temporalLayerCount specifies the number of H.264 temporal layers @@ -1359,19 +1359,18 @@ include::{generated}/api/structs/VkVideoEncodeH264RateControlLayerInfoKHR.adoc[] in pname:minQp. * pname:minQp specifies the lower bounds on the QP values, for each picture type, that the implementation's rate control algorithm will use - when pname:useMinQp is set to ename:VK_TRUE. + when pname:useMinQp is ename:VK_TRUE. * pname:useMaxQp indicates whether the QP values determined by rate control will be clamped to the upper bounds on the QP values specified in pname:maxQp. * pname:maxQp specifies the upper bounds on the QP values, for each picture type, that the implementation's rate control algorithm will use - when pname:useMaxQp is set to ename:VK_TRUE. + when pname:useMaxQp is ename:VK_TRUE. * pname:useMaxFrameSize indicates whether the implementation's rate control algorithm should: use the values specified in pname:maxFrameSize as the upper bounds on the encoded frame size for each picture type. * pname:maxFrameSize specifies the upper bounds on the encoded frame size, - for each picture type, when pname:useMaxFrameSize is set to - ename:VK_TRUE. + for each picture type, when pname:useMaxFrameSize is ename:VK_TRUE. When used, the values in pname:minQp and pname:maxQp guarantee that the effective QP values used by the implementation will respect those lower and diff --git a/chapters/video/h265_encode.adoc b/chapters/video/h265_encode.adoc index ff4cac38c..2bced4b66 100644 --- a/chapters/video/h265_encode.adoc +++ b/chapters/video/h265_encode.adoc @@ -697,8 +697,8 @@ include::{generated}/api/structs/VkVideoEncodeH265SessionCreateInfoKHR.adoc[] structure. * pname:useMaxLevelIdc indicates whether the value of pname:maxLevelIdc should be used by the implementation. - When it is set to ename:VK_FALSE, the implementation ignores the value - of pname:maxLevelIdc and uses the value of + When it is ename:VK_FALSE, the implementation ignores the value of + pname:maxLevelIdc and uses the value of slink:VkVideoEncodeH265CapabilitiesKHR::pname:maxLevelIdc, as reported by flink:vkGetPhysicalDeviceVideoCapabilitiesKHR for the video profile. * pname:maxLevelIdc is a code:StdVideoH265LevelIdc value specifying the @@ -863,10 +863,10 @@ include::{generated}/api/structs/VkVideoEncodeH265SessionParametersGetInfoKHR.ad set(s). * pname:stdSPSId specifies the H.265 sequence parameter set ID used to identify the retrieved H.265 sequence and/or picture parameter set(s) - when pname:writeStdSPS and/or pname:writeStdPPS is set to ename:VK_TRUE. + when pname:writeStdSPS and/or pname:writeStdPPS is ename:VK_TRUE. * pname:stdPPSId specifies the H.265 picture parameter set ID used to identify the retrieved H.265 picture parameter set when - pname:writeStdPPS is set to ename:VK_TRUE. + pname:writeStdPPS is ename:VK_TRUE. When this structure is specified in the pname:pNext chain of the slink:VkVideoEncodeSessionParametersGetInfoKHR structure passed to @@ -874,13 +874,13 @@ flink:vkGetEncodedVideoSessionParametersKHR, the command will write encoded parameter data to the output buffer in the following order: . The <> identified by - pname:stdVPSId, if pname:writeStdVPS is set to ename:VK_TRUE. + pname:stdVPSId, if pname:writeStdVPS is ename:VK_TRUE. . The <> identified by the pair constructed from pname:stdVPSId and pname:stdSPSId, if - pname:writeStdSPS is set to ename:VK_TRUE. + pname:writeStdSPS is ename:VK_TRUE. . The <> identified by the triplet constructed from pname:stdVPSId, pname:stdSPSId, and - pname:stdPPSId, if pname:writeStdPPS is set to ename:VK_TRUE. + pname:stdPPSId, if pname:writeStdPPS is ename:VK_TRUE. .Valid Usage **** @@ -1380,15 +1380,15 @@ include::{generated}/api/structs/VkVideoEncodeH265RateControlInfoKHR.adoc[] control flags. * pname:gopFrameCount is the number of frames within a <> intended to be used by the application. - If it is set to 0, the rate control algorithm may: assume an + If it is 0, the rate control algorithm may: assume an implementation-dependent GOP length. - If it is set to code:UINT32_MAX, the GOP length is treated as infinite. + If it is code:UINT32_MAX, the GOP length is treated as infinite. * pname:idrPeriod is the interval, in terms of number of frames, between two <> (see <>). - If it is set to 0, the rate control algorithm may: assume an + If it is 0, the rate control algorithm may: assume an implementation-dependent IDR period. - If it is set to code:UINT32_MAX, the IDR period is treated as infinite. + If it is code:UINT32_MAX, the IDR period is treated as infinite. * pname:consecutiveBFrameCount is the number of consecutive B frames between I and/or P frames within the <>. * pname:subLayerCount specifies the number of H.265 sub-layers that the @@ -1510,19 +1510,18 @@ include::{generated}/api/structs/VkVideoEncodeH265RateControlLayerInfoKHR.adoc[] in pname:minQp. * pname:minQp specifies the lower bounds on the QP values, for each picture type, that the implementation's rate control algorithm will use - when pname:useMinQp is set to ename:VK_TRUE. + when pname:useMinQp is ename:VK_TRUE. * pname:useMaxQp indicates whether the QP values determined by rate control will be clamped to the upper bounds on the QP values specified in pname:maxQp. * pname:maxQp specifies the upper bounds on the QP values, for each picture type, that the implementation's rate control algorithm will use - when pname:useMaxQp is set to ename:VK_TRUE. + when pname:useMaxQp is ename:VK_TRUE. * pname:useMaxFrameSize indicates whether the implementation's rate control algorithm should: use the values specified in pname:maxFrameSize as the upper bounds on the encoded frame size for each picture type. * pname:maxFrameSize specifies the upper bounds on the encoded frame size, - for each picture type, when pname:useMaxFrameSize is set to - ename:VK_TRUE. + for each picture type, when pname:useMaxFrameSize is ename:VK_TRUE. When used, the values in pname:minQp and pname:maxQp guarantee that the effective QP values used by the implementation will respect those lower and diff --git a/chapters/videocoding.adoc b/chapters/videocoding.adoc index ab9f6498f..2f88e8ba1 100644 --- a/chapters/videocoding.adoc +++ b/chapters/videocoding.adoc @@ -1743,8 +1743,31 @@ image was created with: structure the image was created with: ** slink:VkImageCreateInfo::pname:format equals slink:VkVideoFormatPropertiesKHR::pname:format. - ** slink:VkImageCreateInfo::pname:flags only contains bits also set in - slink:VkVideoFormatPropertiesKHR::pname:imageCreateFlags. + ** slink:VkImageCreateInfo::pname:flags only contains + ename:VK_IMAGE_CREATE_VIDEO_PROFILE_INDEPENDENT_BIT_KHR and/or bits + also set in slink:VkVideoFormatPropertiesKHR::pname:imageCreateFlags. ++ +[NOTE] +==== +Specifying ename:VK_IMAGE_CREATE_VIDEO_PROFILE_INDEPENDENT_BIT_KHR when +creating +ifdef::VK_KHR_video_decode_queue[] +<> +endif::VK_KHR_video_decode_queue[] +ifdef::VK_KHR_video_decode_queue+VK_KHR_video_encode_queue[] +or +endif::VK_KHR_video_decode_queue+VK_KHR_video_encode_queue[] +ifdef::VK_KHR_video_encode_queue[] +<> +endif::VK_KHR_video_encode_queue[] +is always supported when <> is +enabled, regardless of the supported tlink:VkImageCreateFlags reported in +slink:VkVideoFormatPropertiesKHR::pname:imageCreateFlags. +Accordingly, implementations should: not report +ename:VK_IMAGE_CREATE_VIDEO_PROFILE_INDEPENDENT_BIT_KHR in +slink:VkVideoFormatPropertiesKHR::pname:imageCreateFlags for any video +format. +==== ** slink:VkImageCreateInfo::pname:imageType equals slink:VkVideoFormatPropertiesKHR::pname:imageType. ** slink:VkImageCreateInfo::pname:tiling equals diff --git a/config/CI/writing b/config/CI/writing index 77993f844..9e4240785 100644 --- a/config/CI/writing +++ b/config/CI/writing @@ -8,3 +8,5 @@ present in.*the pname:pNext chain (^|[^-_.&:<>\[[:alnum:]])(Github|[Aa]ny given element|[Cc]olorspace)($|[^-_.\[[:alnum:]]) (^|[^-_.&:<>\[[:alnum:]])([Aa]ny hit|[Aa]pp |[Ff]loating [Pp]oint|[Gg]eneral purpose|[Ii]mplementation dependent|is an optional pointer|[Ll]evel [Oo]f [Dd]etail|lod)($|[^-_.\[[:alnum:]]) (^|[^-_.&:<>\[[:alnum:]])([Mm]iplevel|points to|[Rr]enderpass|[Rr]un time|[Ss]ide-effect|[Ss]ignalled|[Ss]wap chain|[Tt]esselation|[Uu]se-case)($|[^-_.\[[:alnum:]]) +must: be set to +must: not be set to diff --git a/scripts/doctransformer.py b/scripts/doctransformer.py index db6c2976d..87683dc26 100644 --- a/scripts/doctransformer.py +++ b/scripts/doctransformer.py @@ -1,5 +1,4 @@ # Copyright 2023-2024 The Khronos Group Inc. -# # SPDX-License-Identifier: Apache-2.0 """Utilities for automatic transformation of spec sources. Most of the logic @@ -398,7 +397,7 @@ def transformFile(self, lines): self.endParaContinue(line) # If it is a title line, track that - if line[0:2] == '= ': + if line.startswith('= '): thisTitle = True elif blockPassthrough.match(line): diff --git a/scripts/json_generator.py b/scripts/json_generator.py index 69cd3fbca..f9461d0d2 100644 --- a/scripts/json_generator.py +++ b/scripts/json_generator.py @@ -97,12 +97,12 @@ static void print_size_t(const size_t* o, const std::string& s, bool commaNeeded=true) { PRINT_SPACE - _OUT << \"\\\"\" << s << \"\\\"\" << \" : \" << static_cast<%s>(*o) << (commaNeeded ? \",\" : \"\") << std::endl;\\ + _OUT << \"\\\"\" << s << \"\\\"\" << \" : \" << static_cast(*o) << (commaNeeded ? \",\" : \"\") << std::endl;\\ } static void print_size_t(size_t o, const std::string& s, bool commaNeeded=true) { PRINT_SPACE - _OUT << \"\\\"\" << s << \"\\\"\" << \" : \" << static_cast<%s>(o) << (commaNeeded ? \",\" : \"\") << std::endl;\\ + _OUT << \"\\\"\" << s << \"\\\"\" << \" : \" << static_cast(o) << (commaNeeded ? \",\" : \"\") << std::endl;\\ } """ @@ -118,10 +118,10 @@ class Base64Formatter { public: - const deUint8* data; + const uint8_t* data; int numBytes; - Base64Formatter(const deUint8* data_, int numBytes_) : data(data_), numBytes(numBytes_) {} + Base64Formatter(const uint8_t* data_, int numBytes_) : data(data_), numBytes(numBytes_) {} }; std::ostream& operator<< (std::ostream& str, const Base64Formatter& fmt) @@ -135,7 +135,7 @@ class Base64Formatter '0','1','2','3','4','5','6','7','8','9','+','/' }; - const deUint8* data = fmt.data; + const uint8_t* data = fmt.data; int numBytes = fmt.numBytes; int srcNdx = 0; @@ -145,9 +145,9 @@ class Base64Formatter while (srcNdx < numBytes) { int numRead = de::min(3, numBytes - srcNdx); - deUint8 s0 = data[srcNdx]; - deUint8 s1 = (numRead >= 2) ? data[srcNdx + 1] : 0; - deUint8 s2 = (numRead >= 3) ? data[srcNdx + 2] : 0; + uint8_t s0 = data[srcNdx]; + uint8_t s1 = (numRead >= 2) ? data[srcNdx + 1] : 0; + uint8_t s2 = (numRead >= 3) ? data[srcNdx + 2] : 0; char d[4]; srcNdx += numRead; @@ -167,13 +167,13 @@ class Base64Formatter return str; } -inline Base64Formatter toBase64(const deUint8* bytes, int numBytes) {return Base64Formatter(bytes, numBytes); } +inline Base64Formatter toBase64(const uint8_t* bytes, int numBytes) {return Base64Formatter(bytes, numBytes); } static void print_void_data(const void * o, int oSize, const std::string& s, bool commaNeeded=true) { if (o != NULL && oSize != 0) { - PRINT_SPACE _OUT << "\\\"" << s << "\\\"" << " : " << "\\\"" << toBase64((deUint8*)o, oSize) << "\\\"" << (commaNeeded ? "," : "") << std::endl; + PRINT_SPACE _OUT << "\\\"" << s << "\\\"" << " : " << "\\\"" << toBase64((uint8_t*)o, oSize) << "\\\"" << (commaNeeded ? "," : "") << std::endl; } else { @@ -334,7 +334,7 @@ def printBaseTypes(self): # Some special handling needed here. if baseType == 'char': - write("static void print_%s(const %s * const* o, const std::string& s, bool commaNeeded=true)\n" %(baseType, self.baseTypeListMap[baseType]) + + write("static void print_%s(const %s * const* o, const std::string& s, bool commaNeeded=true)\n" %(baseType, baseType) + "{\n" + " PRINT_STR(commaNeeded)\n" + "}\n" @@ -355,7 +355,7 @@ def printBaseTypes(self): printStr +=" PRINT_VAL(commaNeeded)\n" printStr +=" }\n" - write("static void print_%s(%s o, const std::string& s, bool commaNeeded=true)\n" %(baseType, self.baseTypeListMap[baseType]) + + write("static void print_%s(%s o, const std::string& s, bool commaNeeded=true)\n" %(baseType, baseType) + "{\n" + printStr + "}\n" @@ -379,7 +379,7 @@ def printBaseTypes(self): printStr +=" PRINT_VAL(commaNeeded)\n" printStr +=" }\n" - write("static void print_%s(const %s * o, const std::string& s, bool commaNeeded=true)\n" %(baseType, self.baseTypeListMap[baseType]) + + write("static void print_%s(const %s * o, const std::string& s, bool commaNeeded=true)\n" %(baseType, baseType) + "{\n" + printStr + "}\n" @@ -515,25 +515,9 @@ def beginFile(self, genOpts): self.isCTS = genOpts.isCTS - self.baseTypeListMap = { - "int32_t" : "deInt32" if self.isCTS else "int32_t", - "uint32_t" : "deUint32" if self.isCTS else "uint32_t", - "uint8_t" : "deUint8" if self.isCTS else "uint8_t", - "uint64_t" : "deUint64" if self.isCTS else "uint64_t", - "float" : "float", - "int" : "int", - "double" : "double", - "int64_t" : "deInt64" if self.isCTS else "int64_t", - "uint16_t" : "deUint16" if self.isCTS else "uint16_t", - "char" : "char" - } - write(headerGuardTop, file=self.outFile, end='') write(copyright, file=self.outFile) - if self.isCTS: - write(predefinedCode % ("deUint32", "deUint32"), file=self.outFile) - else: - write(predefinedCode % ("uint32_t", "uint32_t"), file=self.outFile) + write(predefinedCode, file=self.outFile) self.printBaseTypes() if self.isCTS: write(encodeBase64CodeCTS, file=self.outFile) @@ -671,19 +655,16 @@ def genType(self, typeinfo, name, alias): for elem in typeElem: if elem.tag == 'name': body += self.genBitmaskCode("", " obj,", elem.text, typeElem.get('requires')) - body += self.genBitmaskCode("const ", " * obj,", elem.text, typeElem.get('requires')) elif typeElem.get('category') == 'basetype': for elem in typeElem: if elem.tag == 'name': body += self.genBasetypeCode("", " obj,", elem.text) - body += self.genBasetypeCode("const ", " * obj,", elem.text) elif typeElem.get('category') == 'handle': for elem in typeElem: if elem.tag == 'name': body += self.genHandleCode("", " obj,", elem.text) - body += self.genHandleCode("const ", " * obj,", elem.text) if body: self.appendSection(section, body) @@ -840,7 +821,7 @@ def genArrayCode(self, structName, name, typeName, str2, arraySize, needStrPrint code += " print_%s(%s%s[i], tmp.str(), isCommaNeeded);\n" %(typeName, str2, name) else: if self.isCTS and name == "pipelineIdentifier": - code += " print_uint32_t((%s)%s%s[i], %s, isCommaNeeded);\n" %(self.baseTypeListMap["uint32_t"], str2, name, printStr) + code += " print_uint32_t((uint32_t)%s%s[i], %s, isCommaNeeded);\n" %(str2, name, printStr) else: code += " print_%s(%s%s[i], %s, isCommaNeeded);\n" %(typeName, str2, name, printStr) code += " }\n" @@ -899,7 +880,7 @@ def genStructCode(self, param, str1, str2, str3, str4, structName, isCommaNeeded # Special handling for VkPipelineMultisampleStateCreateInfo::pSampleMask elif typeName in "VkSampleMask": - code += " %s sampleMaskSize = ((%srasterizationSamples + 31) / 32);\n" % (self.baseTypeListMap["uint32_t"], str2) + code += " uint32_t sampleMaskSize = ((%srasterizationSamples + 31) / 32);\n" % (str2) code += self.genArrayCode(structName, memberName, "uint32_t", str2, "sampleMaskSize", False, False, isCommaNeeded) return code @@ -959,7 +940,7 @@ def genGroup(self, groupinfo, groupName, alias=None): body = "" section = 'enum' - body += "static std::map<%s, std::string> %s_map = {\n" %(self.baseTypeListMap["uint64_t"], groupName) + body += "static std::map %s_map = {\n" %(groupName) enums = groupElem.findall('enum') for enum in enums: diff --git a/scripts/json_parser.py b/scripts/json_parser.py index 00d364044..f508f7f86 100644 --- a/scripts/json_parser.py +++ b/scripts/json_parser.py @@ -71,7 +71,7 @@ class GlobalMem { // Align to the next multiple of MAX_ALIGNMENT. size = (size + static_cast(MAX_ALIGNMENT) - 1) & ~(static_cast(MAX_ALIGNMENT) - 1); - void* result = static_cast<%s *>(m_vec.back()) + m_pointer; + void* result = static_cast(m_vec.back()) + m_pointer; m_pointer += size; return result; } @@ -126,20 +126,20 @@ class GlobalMem { T1 m_pointer; }; -static thread_local GlobalMem<%s, %s> s_globalMem(32768U); +static thread_local GlobalMem s_globalMem(32768U); // To make sure the generated data is consistent across platforms, // we typecast to 32-bit. static void parse_size_t(const Json::Value& obj, size_t& o) { - %s _res = static_cast<%s>(obj.asUInt()); + uint32_t _res = static_cast(obj.asUInt()); o = _res; } static void parse_char(const Json::Value& obj, char o[]) { const std::string& _res = obj.asString(); - memcpy((void*)o, _res.c_str(), static_cast<%s>(_res.size())); + memcpy((void*)o, _res.c_str(), static_cast(_res.size())); o[_res.size()] = \'\\0\'; } static void parse_char(const Json::Value& obj, const char* const*) @@ -148,7 +148,7 @@ class GlobalMem { static void parse_char(const Json::Value& obj, const char** o) { const std::string& _res = obj.asString(); - char *writePtr = (char *)s_globalMem.allocate(static_cast<%s>(_res.size()) + 1); + char *writePtr = (char *)s_globalMem.allocate(static_cast(_res.size()) + 1); memcpy((void*)writePtr, _res.c_str(), _res.size()); writePtr[_res.size()] = \'\\0\'; *o = writePtr; @@ -160,22 +160,22 @@ class GlobalMem { // base64 encoder taken from executor/xeTestResultParser.cpp static -std::vector base64decode(const std::string& encoded) +std::vector base64decode(const std::string& encoded) { int base64DecodeOffset = 0; - std::vector result; + std::vector result; for (std::size_t inNdx = 0; inNdx < encoded.size(); inNdx++) { - deUint8 byte = encoded[inNdx]; - deUint8 decodedBits = 0; - - if (de::inRange(byte, 'A', 'Z')) - decodedBits = (deUint8)(byte - 'A'); - else if (de::inRange(byte, 'a', 'z')) - decodedBits = (deUint8)(('Z' - 'A' + 1) + (byte - 'a')); - else if (de::inRange(byte, '0', '9')) - decodedBits = (deUint8)(('Z' - 'A' + 1) + ('z' - 'a' + 1) + (byte - '0')); + uint8_t byte = encoded[inNdx]; + uint8_t decodedBits = 0; + + if (de::inRange(byte, 'A', 'Z')) + decodedBits = (uint8_t)(byte - 'A'); + else if (de::inRange(byte, 'a', 'z')) + decodedBits = (uint8_t)(('Z' - 'A' + 1) + (byte - 'a')); + else if (de::inRange(byte, '0', '9')) + decodedBits = (uint8_t)(('Z' - 'A' + 1) + ('z' - 'a' + 1) + (byte - '0')); else if (byte == '+') decodedBits = ('Z' - 'A' + 1) + ('z' - 'a' + 1) + ('9' - '0' + 1); else if (byte == '/') @@ -190,13 +190,13 @@ class GlobalMem { // if ((int)image->data.size() < (base64DecodeOffset >> 2) * 3 + 3) // throw TestResultParseError("Malformed base64 data"); - deUint8* outPtr = result.data() + (base64DecodeOffset >> 2) * 3; + uint8_t* outPtr = result.data() + (base64DecodeOffset >> 2) * 3; switch (phase) { - case 0: outPtr[0] |= (deUint8)(decodedBits << 2); break; - case 1: outPtr[0] = (deUint8)(outPtr[0] | (deUint8)(decodedBits >> 4)); outPtr[1] = (deUint8)(outPtr[1] | (deUint8)((decodedBits & 0xF) << 4)); break; - case 2: outPtr[1] = (deUint8)(outPtr[1] | (deUint8)(decodedBits >> 2)); outPtr[2] = (deUint8)(outPtr[2] | (deUint8)((decodedBits & 0x3) << 6)); break; + case 0: outPtr[0] |= (uint8_t)(decodedBits << 2); break; + case 1: outPtr[0] = (uint8_t)(outPtr[0] | (uint8_t)(decodedBits >> 4)); outPtr[1] = (uint8_t)(outPtr[1] | (uint8_t)((decodedBits & 0xF) << 4)); break; + case 2: outPtr[1] = (uint8_t)(outPtr[1] | (uint8_t)(decodedBits >> 2)); outPtr[2] = (uint8_t)(outPtr[2] | (uint8_t)((decodedBits & 0x3) << 6)); break; case 3: outPtr[2] |= decodedBits; break; default: DE_ASSERT(false); @@ -209,7 +209,7 @@ class GlobalMem { static void parse_void_data(const Json::Value& obj, void* o, int oSize) { - std::vector data; + std::vector data; if (obj.isString()) { data = base64decode(obj.asString()); @@ -219,7 +219,7 @@ class GlobalMem { data.resize(oSize); for (int i = 0; i < std::min(oSize, (int)obj.size()); i++) { - parse_uint8_t(obj[i], const_cast(data[i])); + parse_uint8_t(obj[i], const_cast(data[i])); } } memcpy(o, data.data(), oSize); @@ -377,9 +377,9 @@ def parseBaseTypes(self, dict): for baseType in dict: printStr = dict[baseType] if baseType == "uint8_t" or baseType == "uint16_t": - write("static void parse_%s(const Json::Value& obj, %s& o)\n" %(baseType, self.baseTypeListMap[baseType]) + + write("static void parse_%s(const Json::Value& obj, %s& o)\n" %(baseType, baseType) + "{\n" - " o = static_cast<%s>(%s);\n" %(self.baseTypeListMap[baseType],printStr) + + " o = static_cast<%s>(%s);\n" %(baseType,printStr) + "}\n" , file=self.outFile ) @@ -392,7 +392,7 @@ def parseBaseTypes(self, dict): ) else: code = "" - code += "static void parse_%s(const Json::Value& obj, %s& o)\n" %(baseType, self.baseTypeListMap[baseType]) + code += "static void parse_%s(const Json::Value& obj, %s& o)\n" %(baseType, baseType) code += "{\n" if baseType in self.constDict: code += " if (obj.isString())\n" @@ -450,17 +450,6 @@ def beginFile(self, genOpts): self.addExtensions = genOpts.addExtensions self.createConstDict() - self.baseTypeListMap = { - "int32_t" : "deInt32" if self.isCTS else "int32_t", - "uint32_t" : "deUint32" if self.isCTS else "uint32_t", - "uint8_t" : "deUint8" if self.isCTS else "uint8_t", - "uint64_t" : "deUint64" if self.isCTS else "uint64_t", - "float" : "float", - "int" : "int", - "double" : "double", - "int64_t" : "deInt64" if self.isCTS else "int64_t", - "uint16_t" : "deUint16" if self.isCTS else "uint16_t" - } self.nvSciTypeListMap = { "NvSciBufAttrList" : "vk::pt::NvSciBufAttrList" if self.isCTS else "NvSciBufAttrList", "NvSciBufObj" : "vk::pt::NvSciBufObj" if self.isCTS else "NvSciBufObj", @@ -470,13 +459,7 @@ def beginFile(self, genOpts): write(headerGuardTop, file=self.outFile, end='') write(copyright, file=self.outFile) - write(predefinedCode % (self.baseTypeListMap["uint8_t"], - self.baseTypeListMap["uint32_t"], - self.baseTypeListMap["uint8_t"], - self.baseTypeListMap["uint32_t"], - self.baseTypeListMap["uint32_t"], - self.baseTypeListMap["uint32_t"], - self.baseTypeListMap["uint32_t"]), file=self.outFile) + write(predefinedCode, file=self.outFile) self.parseBaseTypes(self.baseTypeDict) nvSciExtensions = ('VK_NV_external_sci_sync', 'VK_NV_external_sci_sync2', 'VK_NV_external_memory_sci_buf') @@ -714,23 +697,22 @@ def generateStructMembercode(self, param, str1, str2, str3, str4, memberName, ty def genArrayCode(self, structName, name, typeName, str2, arraySize, needStrPrint, isMallocNeeded): code = "" - mappedType = self.baseTypeListMap[typeName] if self.baseTypeListMap.get(typeName) != None else typeName if structName == "VkPipelineLayoutCreateInfo" and self.isCTS: if isMallocNeeded: - code += " %s* %sTab = (%s*)s_globalMem.allocate(%s, sizeof(%s));\n" %(mappedType, name, mappedType, arraySize, mappedType) + code += " %s* %sTab = (%s*)s_globalMem.allocate(%s, sizeof(%s));\n" %(typeName, name, typeName, arraySize, typeName) code += " const Json::Value& obj_%s_arr = obj[\"%s\"];\n" %(name, name) code += " for (unsigned int i = 0; i < obj_%s_arr.size(); i++) {\n" %(name) - code += " deUint64 %sInternal = 0;\n" %(name) + code += " uint64_t %sInternal = 0;\n" %(name) code += " parse_uint64_t(obj_%s_arr[i], %sInternal);\n" %(name, name) - code += " %sTab[i] = %s(%sInternal);\n" %(name, mappedType, name) + code += " %sTab[i] = %s(%sInternal);\n" %(name, typeName, name) code += " }\n" code += " %s%s = %sTab;\n" %(str2[1:], name, name) else: if isMallocNeeded: - code += " %s%s) = (%s*)s_globalMem.allocate(%s, sizeof(%s));\n" %(str2, name, mappedType, arraySize, mappedType) + code += " %s%s) = (%s*)s_globalMem.allocate(%s, sizeof(%s));\n" %(str2, name, typeName, arraySize, typeName) code += " const Json::Value& obj_%s_arr = obj[\"%s\"];\n" %(name, name) code += " for (unsigned int i = 0; i < obj_%s_arr.size(); i++) {\n" %(name) - code += " parse_%s(obj_%s_arr[i], const_cast<%s&>(%s%s[i])));\n" %(typeName, name, mappedType, str2, name) + code += " parse_%s(obj_%s_arr[i], const_cast<%s&>(%s%s[i])));\n" %(typeName, name, typeName, str2, name) code += " }\n" return code @@ -742,7 +724,7 @@ def genEmptyCode(self, memberName, isCommaNeeded): def genCTSHandleCode(self, memberName, typeName): code = "" - code += " deUint64 %sInternal = 0;\n" %(memberName) + code += " uint64_t %sInternal = 0;\n" %(memberName) code += " parse_uint64_t(obj[\"%s\"], %sInternal);\n" %(memberName, memberName) code += " o.%s = %s(%sInternal);\n" %(memberName, typeName, memberName) return code @@ -782,7 +764,7 @@ def genStructCode(self, param, str1, str2, str3, str4, structName, isCommaNeeded if structName == "VkSpecializationInfo": code += " if (o.dataSize > 0U)\n" code += " {\n" - code += " void* data = s_globalMem.allocate(%s(%sdataSize));\n" %(self.baseTypeListMap["uint32_t"] ,str2[1:]) + code += " void* data = s_globalMem.allocate(uint32_t(%sdataSize));\n" %(str2[1:]) code += " parse_void_data(obj[\"%s\"], data, int(%sdataSize));\n" %(memberName, str2[1:]) code += " %s%s = data;\n" %(str2[1:], memberName) code += " }\n" @@ -793,7 +775,7 @@ def genStructCode(self, param, str1, str2, str3, str4, structName, isCommaNeeded if structName == "VkPipelineCacheCreateInfo": code += " if (o.initialDataSize > 0U)\n" code += " {\n" - code += " void* data = s_globalMem.allocate(%s(%sinitialDataSize));\n" %(self.baseTypeListMap["uint32_t"], str2[1:]) + code += " void* data = s_globalMem.allocate(uint32_t(%sinitialDataSize));\n" %(str2[1:]) code += " parse_void_data(obj[\"%s\"], data, int(%sinitialDataSize));\n" %(memberName, str2[1:]) code += " %s%s = data;\n" %(str2[1:], memberName) code += " }\n" @@ -817,7 +799,7 @@ def genStructCode(self, param, str1, str2, str3, str4, structName, isCommaNeeded code += " %s* samplers = (%s*)s_globalMem.allocate((o.descriptorCount), sizeof(%s));\n" %(typeName, typeName, typeName) code += " for (unsigned int i = 0; i < obj_%s.size(); i++)\n" %(memberName) code += " {\n" - code += " deUint64 sInternal = 0;\n" + code += " uint64_t sInternal = 0;\n" code += " parse_uint64_t(obj_%s[i], sInternal);\n" %(memberName) code += " samplers[i] = %s(sInternal);\n" %(typeName) code += " }\n" @@ -828,13 +810,13 @@ def genStructCode(self, param, str1, str2, str3, str4, structName, isCommaNeeded # Special handling for VkPipelineMultisampleStateCreateInfo::pSampleMask elif typeName in "VkSampleMask": - arraySize = "(%s(o.rasterizationSamples + 31) / 32)" %(self.baseTypeListMap["uint32_t"]) + arraySize = "(uint32_t(o.rasterizationSamples + 31) / 32)" code += " %s%s) = (%s*)s_globalMem.allocate(%s, sizeof(%s));\n" %(str2, memberName, typeName, arraySize, typeName) code += " const Json::Value& obj_%s = obj[\"%s\"];\n" %(memberName, memberName) code += " if (o.rasterizationSamples == 0 || obj_%s.size() == 0) {\n" %(memberName) code += " %s%s) = nullptr;\n" %(str2, memberName) code += " } else {\n" - code += " for (%s i = 0; i < %s; i++) {\n" %(self.baseTypeListMap["uint32_t"], arraySize) + code += " for (uint32_t i = 0; i < %s; i++) {\n" %(arraySize) code += " parse_uint32_t(obj_%s[i], const_cast<%s&>(%s%s[i])));\n" %(memberName, typeName, str2, memberName) code += " }\n" code += " }\n" @@ -908,7 +890,7 @@ def genGroup(self, groupinfo, groupName, alias=None): bitwidth = 32 if bitwidth == 64: - body += "static std::map %s_map = {\n" %(self.baseTypeListMap["uint64_t"],groupName) + body += "static std::map %s_map = {\n" %(groupName) else: body += "static std::map %s_map = {\n" %(groupName) enums = groupElem.findall('enum') diff --git a/scripts/linkcheck.py b/scripts/linkcheck.py index c77139e68..b3830daae 100755 --- a/scripts/linkcheck.py +++ b/scripts/linkcheck.py @@ -35,7 +35,7 @@ def checkLinks(file, args): if e.tag != 'link': xref = e.get('href') - if xref[0:1] == '#': + if xref.startswith('#'): # Internal anchor internals.add(xref[1:]) else: diff --git a/scripts/reflib.py b/scripts/reflib.py index bd873a365..bb91041f6 100644 --- a/scripts/reflib.py +++ b/scripts/reflib.py @@ -1,7 +1,5 @@ #!/usr/bin/env python3 -# # Copyright 2016-2024 The Khronos Group Inc. -# # SPDX-License-Identifier: Apache-2.0 # Utility functions for automatic ref page generation and other script stuff diff --git a/scripts/reflow.py b/scripts/reflow.py index 281103e20..4b74ba1e3 100755 --- a/scripts/reflow.py +++ b/scripts/reflow.py @@ -1,7 +1,5 @@ #!/usr/bin/env python3 -# # Copyright 2016-2024 The Khronos Group Inc. -# # SPDX-License-Identifier: Apache-2.0 """Used for automatic reflow of spec sources to satisfy the agreed layout to @@ -141,7 +139,7 @@ def endSentence(self, word): def vuidAnchor(self, word): """Return True if word is a Valid Usage ID Tag anchor.""" - return (word[0:7] == '[[VUID-') + return (word.startswith('[[VUID-')) def visitVUID(self, vuid, line): if vuid not in self.vuidDict: diff --git a/scripts/vkconventions.py b/scripts/vkconventions.py index cf8efe010..3597a37e0 100755 --- a/scripts/vkconventions.py +++ b/scripts/vkconventions.py @@ -185,7 +185,7 @@ def is_api_name(self, name): For Vulkan, these are names with a case-insensitive 'vk' prefix, or a 'PFN_vk' function pointer type prefix. """ - return name[0:2].lower() == 'vk' or name[0:6] == 'PFN_vk' + return name[0:2].lower() == 'vk' or name.startswith('PFN_vk') def specURL(self, spectype='api'): """Return public registry URL which ref pages should link to for the diff --git a/scripts/xml_consistency.py b/scripts/xml_consistency.py index cc4a62871..fb2aea8ac 100755 --- a/scripts/xml_consistency.py +++ b/scripts/xml_consistency.py @@ -270,7 +270,7 @@ def check(self): def check_command(self, name, info): """Extends base class behavior with additional checks""" - if name[0:5] == 'vkCmd': + if name.startswith('vkCmd'): if info.elem.get('tasks') is None: self.record_error(f'{name} is a vkCmd* command, but is missing a "tasks" attribute') @@ -655,7 +655,7 @@ def check_names(elems, author, alt_authors, name_exceptions): if len(depends) > 0: for name in dependencyNames(depends): # Skip core versions - if name[0:11] != 'VK_VERSION_': + if not name.startswith('VK_VERSION_'): # Extract author ID from extension name id = name.split('_')[1] alt_authors.add(id) diff --git a/style/revisions.adoc b/style/revisions.adoc index 276a6f077..9c30f57ff 100644 --- a/style/revisions.adoc +++ b/style/revisions.adoc @@ -5,6 +5,8 @@ [[revisions]] = Revision History +* 2024-10-14 - Add <> section (internal issue 3966). * 2024-07-03 - remove `\begin{align*}` from the list of <VKSC_API_VERSION_1_0 VK_MAKE_API_VERSION(VKSC_API_VARIANT, 1, 0, 0)// Patch version should always be set to 0 // Version of this file -#define VK_HEADER_VERSION 298 +#define VK_HEADER_VERSION 299 // Complete version of this file #define VK_HEADER_VERSION_COMPLETE VK_MAKE_API_VERSION(0, 1, 3, VK_HEADER_VERSION) // Version of this file -#define VK_HEADER_VERSION 15 +#define VK_HEADER_VERSION 16 // Complete version of this file #define VK_HEADER_VERSION_COMPLETE VK_MAKE_API_VERSION(VKSC_API_VARIANT, 1, 0, VK_HEADER_VERSION) @@ -18074,30 +18074,6 @@ typedef void* MTLSharedEvent_id; - - - - - - - - - - - - - - - - - - - - - - - - @@ -18782,6 +18758,10 @@ typedef void* MTLSharedEvent_id; + + + + @@ -19332,6 +19312,10 @@ typedef void* MTLSharedEvent_id; + + + + @@ -19684,6 +19668,10 @@ typedef void* MTLSharedEvent_id; + + + + @@ -20169,6 +20157,9 @@ typedef void* MTLSharedEvent_id; + + + @@ -20468,6 +20459,13 @@ typedef void* MTLSharedEvent_id; + + + + + + + @@ -20639,6 +20637,12 @@ typedef void* MTLSharedEvent_id; + + + + + + @@ -20701,7 +20705,7 @@ typedef void* MTLSharedEvent_id; - + @@ -20726,6 +20730,12 @@ typedef void* MTLSharedEvent_id; + + + + + + @@ -21997,16 +22007,6 @@ typedef void* MTLSharedEvent_id; - - - - - - - - - - @@ -22357,7 +22357,7 @@ typedef void* MTLSharedEvent_id; - + @@ -24429,7 +24429,7 @@ typedef void* MTLSharedEvent_id; - + @@ -24708,7 +24708,7 @@ typedef void* MTLSharedEvent_id; - + @@ -27311,8 +27311,6 @@ typedef void* MTLSharedEvent_id; - - @@ -27454,27 +27452,17 @@ typedef void* MTLSharedEvent_id; - - - - - - + - - - + - - - @@ -27505,6 +27493,7 @@ typedef void* MTLSharedEvent_id; + @@ -27529,7 +27518,7 @@ typedef void* MTLSharedEvent_id; - + @@ -27547,24 +27536,25 @@ typedef void* MTLSharedEvent_id; - + - + - + - + +