diff --git a/ChangeLog.txt b/ChangeLog.txt index c6d7094b..7e5e438d 100644 --- a/ChangeLog.txt +++ b/ChangeLog.txt @@ -8,6 +8,43 @@ public issues. ----------------------------------------------------- +Change log for August 19, 2017 Vulkan 1.0.59 spec update: + + * Bump API patch number and header version number to 59 for this update. + +Github Issues: + + * Fix a few missing Implicit Valid Usage statements to indicate that a + common parent of two objects is required (public issue 497). + * Clarify render pass synchronization language for + slink:VkSubpassDependency and \<\> (public + issue 531). + * Rename ename:VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES2_EXT to + ename:VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT for consistency, and + add an alias for backwards compatibility (public issue 539). + +Internal Issues: + + * Add an explanation to the \<\> description explaining that writing to invalid layers + results may or may not result in primitives being processed and fragment + shaders being run, and gives undefined results in the framebuffer + (internal issue 614) + * Add valid usage statement for slink:VkDescriptorSetLayoutBinding + requiring that input attachment descriptor bindings must not use + non-fragment stages (internal issue 933). + +Other Issues: + + * Makes description of pname:loadOp and pname:storeOp easier to read in + the \<\> section. + +New Extensions: + + * `VK_EXT_shader_stencil_export` + +----------------------------------------------------- + Change log for August 14, 2017 Vulkan 1.0.58 spec update: * Bump API patch number and header version number to 58 for this update. diff --git a/doc/specs/vulkan/Makefile b/doc/specs/vulkan/Makefile index 37dde175..bbfab7fd 100644 --- a/doc/specs/vulkan/Makefile +++ b/doc/specs/vulkan/Makefile @@ -87,7 +87,7 @@ VERBOSE = # $(EXTENSIONS)) # ADOCOPTS options for asciidoc->HTML5 output NOTEOPTS = -a editing-notes -a implementation-guide -SPECREVISION = 1.0.58 +SPECREVISION = 1.0.59 # Spell out RFC2822 format as not all date commands support -R SPECDATE = $(shell echo `date -u "+%a, %d %b %Y %T %z"`) diff --git a/doc/specs/vulkan/appendices/VK_EXT_display_surface_counter.txt b/doc/specs/vulkan/appendices/VK_EXT_display_surface_counter.txt index 8484e341..1594a66a 100644 --- a/doc/specs/vulkan/appendices/VK_EXT_display_surface_counter.txt +++ b/doc/specs/vulkan/appendices/VK_EXT_display_surface_counter.txt @@ -33,7 +33,7 @@ slink:VkSurfaceKHR object. === New Enum Constants * Extending elink:VkStructureType: - ** ename:VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES2_EXT + ** ename:VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT === New Enums diff --git a/doc/specs/vulkan/appendices/VK_EXT_shader_stencil_export.txt b/doc/specs/vulkan/appendices/VK_EXT_shader_stencil_export.txt new file mode 100644 index 00000000..05b67b01 --- /dev/null +++ b/doc/specs/vulkan/appendices/VK_EXT_shader_stencil_export.txt @@ -0,0 +1,36 @@ +[[VK_EXT_shader_stencil_export]] +== VK_EXT_shader_stencil_export + +*Name String*:: + +VK_EXT_shader_stencil_export+ +*Extension Type*:: + Device extension +*Registered Extension Number*:: + 141 +*Last Modified Date*:: + 07/19/2017 +*Revision*:: + 1 +*IP Status*:: + No known IP claims. +*Dependencies*:: + - This extension is written against version 1.0 of the Vulkan API. + - Requires the +SPV_EXT_shader_stencil_export+ SPIR-V extension. +*Contributors*:: + - Dominik Witczak, AMD + - Daniel Rakos, AMD + - Rex Xu, AMD +*Contacts*:: + - Dominik Witczak, AMD (dominik.witczak@amd.com) +*Overview*:: + +This extension adds support for the SPIR-V extension ++SPV_EXT_shader_stencil_export+ providing a mechanism whereby a shader may +generate the stencil reference value per invocation. +When stencil testing is enabled, this allows the test to be performed +against the value generated in the shader. + +=== Version History + + * Revision 1, 2017-07-19 (Dominik Witczak) + - Initial draft diff --git a/doc/specs/vulkan/appendices/extensions.txt b/doc/specs/vulkan/appendices/extensions.txt index 5759aaa2..e805140c 100644 --- a/doc/specs/vulkan/appendices/extensions.txt +++ b/doc/specs/vulkan/appendices/extensions.txt @@ -280,6 +280,10 @@ ifdef::VK_EXT_sampler_filter_minmax[] include::VK_EXT_sampler_filter_minmax.txt[] endif::VK_EXT_sampler_filter_minmax[] +ifdef::VK_EXT_shader_stencil_export[] +include::VK_EXT_shader_stencil_export.txt[] +endif::VK_EXT_shader_stencil_export[] + ifdef::VK_EXT_shader_subgroup_ballot[] include::VK_EXT_shader_subgroup_ballot.txt[] endif::VK_EXT_shader_subgroup_ballot[] diff --git a/doc/specs/vulkan/appendices/spirvenv.txt b/doc/specs/vulkan/appendices/spirvenv.txt index 30393c2e..a2d21e25 100644 --- a/doc/specs/vulkan/appendices/spirvenv.txt +++ b/doc/specs/vulkan/appendices/spirvenv.txt @@ -86,6 +86,10 @@ ifdef::VK_KHR_variable_pointers[] | code:VariablePointersStorageBuffer | <> | code:VariablePointers | <> endif::VK_KHR_variable_pointers[] +ifdef::VK_EXT_shader_stencil_export[] +[[spirvenv-capabilities-table-shaderstencilexportext]] +| code:StencilExportEXT | <> +endif::VK_EXT_shader_stencil_export[] ifdef::VK_EXT_shader_subgroup_ballot[] [[spirvenv-capabilities-table-subgroupballot]] | code:SubgroupBallotKHR | <> @@ -204,6 +208,11 @@ The application can: pass a SPIR-V module to flink:vkCreateShaderModule that uses the +SPV_KHR_post_depth_coverage+ SPIR-V extension. endif::VK_EXT_post_depth_coverage[] +ifdef::VK_EXT_shader_stencil_export[] +The application can: pass a SPIR-V module to flink:vkCreateShaderModule that +uses the +SPV_EXT_shader_stencil_export+ SPIR-V extension. +endif::VK_EXT_shader_stencil_export[] + ifdef::VK_EXT_shader_subgroup_ballot[] The application can: pass a SPIR-V module to flink:vkCreateShaderModule that uses the +SPV_KHR_shader_ballot+ SPIR-V extension. diff --git a/doc/specs/vulkan/chapters/descriptorsets.txt b/doc/specs/vulkan/chapters/descriptorsets.txt index c9da5b1f..bad76422 100644 --- a/doc/specs/vulkan/chapters/descriptorsets.txt +++ b/doc/specs/vulkan/chapters/descriptorsets.txt @@ -687,7 +687,8 @@ include::../api/structs/VkDescriptorSetLayoutBinding.txt[] If a shader stage is not included in pname:stageFlags, then a resource must: not be accessed from that stage via this binding within any pipeline using the set layout. -There are no limitations on what combinations of stages can: be used by a +Other than input attachments which are limited to the fragment shader, there +are no limitations on what combinations of stages can: be used by a descriptor binding, and in particular a binding can: be used by both graphics stages and the compute stage. @@ -738,6 +739,10 @@ avoid wasted memory. * [[VUID-VkDescriptorSetLayoutBinding-descriptorCount-00283]] If pname:descriptorCount is not `0`, pname:stageFlags must: be a valid combination of elink:VkShaderStageFlagBits values + * [[VUID-VkDescriptorSetLayoutBinding-descriptorType-01510]] + If pname:descriptorType is ename:VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT and + pname:descriptorCount is not `0`, then pname:stageFlags must: be `0` or + ename:VK_SHADER_STAGE_FRAGMENT_BIT **** include::../validity/structs/VkDescriptorSetLayoutBinding.txt[] diff --git a/doc/specs/vulkan/chapters/fragops.txt b/doc/specs/vulkan/chapters/fragops.txt index d7d0504b..771fa5c6 100644 --- a/doc/specs/vulkan/chapters/fragops.txt +++ b/doc/specs/vulkan/chapters/fragops.txt @@ -736,8 +736,10 @@ include::../validity/protos/vkCmdSetStencilReference.txt[] pname:reference is an integer reference value that is used in the unsigned stencil comparison. -Stencil comparison clamps the reference value to [eq]#[0,2^s^-1]#, where -[eq]#s# is the number of bits in the stencil framebuffer attachment. +The reference value used by stencil comparison must be within the range +[eq]#[0,2^s^-1]# , where [eq]#s# is the number of bits in the stencil +framebuffer attachment, otherwise the reference value is considered +undefined. The [eq]#s# least significant bits of pname:compareMask are bitwise code:ANDed with both the reference and the stored stencil value, and the resulting masked values are those that participate in the comparison diff --git a/doc/specs/vulkan/chapters/interfaces.txt b/doc/specs/vulkan/chapters/interfaces.txt index c9c6011e..64439b18 100644 --- a/doc/specs/vulkan/chapters/interfaces.txt +++ b/doc/specs/vulkan/chapters/interfaces.txt @@ -1141,6 +1141,38 @@ code:Output storage class. The variable decorated with code:FragDepth must: be declared as a scalar 32-bit floating-point value. +ifdef::VK_EXT_shader_stencil_export[] + +code:FragStencilRefEXT:: + +Decorating a variable with the code:FragStencilRefEXT built-in decoration +will make that variable contain the stencil reference value for all samples +covered by the fragment. +This value will be used as the stencil reference value used in stencil +testing. ++ +To write to code:FragStencilRefEXT, a shader must: declare the +code:StencilRefReplacingEXT execution mode. +If a shader declares the code:StencilRefReplacingEXT execution mode and +there is an execution path through the shader that does not set +code:FragStencilRefEXT, then the fragment's stencil reference value is +undefined for executions of the shader that take that path. ++ +The code:FragStencilRefEXT decoration must: be used only within fragment +shaders. ++ +The variable decorated with code:FragStencilRefEXT must: be declared using +the code:Output storage class. ++ +The variable decorated with code:FragStencilRefEXT must: be declared as a +scalar integer value. +Only the least significant [eq]#s# bits of the integer value of the variable +decorated with code:FragStencilRefEXT are considered for stencil testing, +where [eq]#s# is the number of bits in the stencil framebuffer attachment, +and higher order bits are discarded. + +endif::VK_EXT_shader_stencil_export[] + code:FrontFacing:: Decorating a variable with the code:FrontFacing built-in decoration will @@ -1267,6 +1299,10 @@ is used. If a vertex processing stage shader entry point's interface includes a variable decorated with code:Layer, it must: write the same value to code:Layer for all output vertices of a given primitive. +If the code:Layer value is less than 0 or greater than or equal to the +number of layers in the framebuffer, then primitives may: still be +rasterized, fragment shaders may: be executed, and the framebuffer values +for all layers are undefined. + The code:Layer decoration must: be used only within ifdef::VK_NV_viewport_array2,VK_EXT_shader_viewport_index_layer[] diff --git a/doc/specs/vulkan/chapters/pipelines.txt b/doc/specs/vulkan/chapters/pipelines.txt index 4d4723a6..b98b83a4 100644 --- a/doc/specs/vulkan/chapters/pipelines.txt +++ b/doc/specs/vulkan/chapters/pipelines.txt @@ -315,6 +315,12 @@ include::../api/structs/VkPipelineShaderStageCreateInfo.txt[] If pname:stage is ename:VK_SHADER_STAGE_FRAGMENT_BIT, and the identified entry point writes to code:FragDepth in any execution path, it must: write to code:FragDepth in all execution paths +ifdef::VK_EXT_shader_stencil_export[] + * [[VUID-VkPipelineShaderStageCreateInfo-stage-01511]] + If pname:stage is ename:VK_SHADER_STAGE_FRAGMENT_BIT, and the identified + entry point writes to code:FragStencilRefEXT in any execution path, it + must: write to code:FragStencilRefEXT in all execution paths +endif::VK_EXT_shader_stencil_export[] **** include::../validity/structs/VkPipelineShaderStageCreateInfo.txt[] diff --git a/doc/specs/vulkan/chapters/renderpass.txt b/doc/specs/vulkan/chapters/renderpass.txt index 636221fd..05870019 100644 --- a/doc/specs/vulkan/chapters/renderpass.txt +++ b/doc/specs/vulkan/chapters/renderpass.txt @@ -405,15 +405,17 @@ execute as part of the first subpass that uses the attachment. pname:storeOp and pname:stencilStoreOp define the _store operations_ that execute as part of the last subpass that uses the attachment. -The load operation for each value in an attachment used by a subpass -happens-before any command recorded into that subpass reads from that value. +The load operation for each sample in an attachment happens-before any +recorded command which accesses the sample in the first subpass where the +attachment is used. Load operations for attachments with a depth/stencil format execute in the ename:VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT pipeline stage. Load operations for attachments with a color format execute in the ename:VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT pipeline stage. -Store operations for each value in an attachment used by a subpass -happen-after any command recorded into that subpass writes to that value. +The store operation for each sample in an attachment happens-after any +recorded command which accesses the sample in the last subpass where the +attachment is used. Store operations for attachments with a depth/stencil format execute in the ename:VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT pipeline stage. Store operations for attachments with a color format execute in the @@ -875,6 +877,28 @@ visibility operations>> defined by a subpass dependency affect the execution of <> within the render pass. +.Note +[NOTE] +==== +For non-attachment resources, the memory dependency expressed by subpass +dependency is nearly identical to that of a slink:VkMemoryBarrier (with +matching pname:srcAccessMask/pname:dstAccessMask parameters) submitted as a +part of a flink:vkCmdPipelineBarrier (with matching +pname:srcStageMask/pname:dstStageMask parameters). +The only difference being that its scopes are limited to the identified +subpasses rather than potentially affecting everything before and after. + +For attachments however, subpass dependencies work more like an +slink:VkImageMemoryBarrier defined similarly to the slink:VkMemoryBarrier +above, the queue family indices set to ename:VK_QUEUE_FAMILY_IGNORED, and +layouts as follows: + + * The equivalent to pname:oldLayout is the attachment's layout according + to the subpass description for pname:srcSubpass. + * The equivalent to pname:newLayout is the attachment's layout according + to the subpass description for pname:dstSubpass. +==== + .Valid Usage **** * [[VUID-VkSubpassDependency-srcSubpass-00858]] diff --git a/doc/specs/vulkan/chapters/synchronization.txt b/doc/specs/vulkan/chapters/synchronization.txt index 80435ec7..5e7855a5 100644 --- a/doc/specs/vulkan/chapters/synchronization.txt +++ b/doc/specs/vulkan/chapters/synchronization.txt @@ -14,8 +14,8 @@ Memory caches and other optimizations are also explicitly managed, requiring that the flow of data through the system is largely under application control. -Whilst some implicit guarantees exist between commands, four explicit -synchronization primitives are exposed by Vulkan: +Whilst some implicit guarantees exist between commands, five explicit +synchronization mechanisms are exposed by Vulkan: <>:: Fences can: be used to communicate to the host that execution of some @@ -35,12 +35,12 @@ synchronization primitives are exposed by Vulkan: buffer, but at a single point, rather than with separate signal and wait operations. -In addition to the base primitives provided here, <> provide a useful synchronization framework for most rendering -tasks, built upon the concepts in this chapter. -Many cases that would otherwise need an application to use synchronization -primitives in this chapter can: be expressed more efficiently as part of a -render pass. +<>:: + Render passes provide a useful synchronization framework for most + rendering tasks, built upon the concepts in this chapter. + Many cases that would otherwise need an application to use other + synchronization primitives can: be expressed more efficiently as part of + a render pass. [[synchronization-dependencies]] diff --git a/doc/specs/vulkan/config/extDependency.py b/doc/specs/vulkan/config/extDependency.py index bd4bb602..5b89f4d8 100644 --- a/doc/specs/vulkan/config/extDependency.py +++ b/doc/specs/vulkan/config/extDependency.py @@ -51,6 +51,6 @@ extensions['VK_NV_external_memory_win32'] = [ 'VK_NV_external_memory', 'VK_NV_ex extensions['VK_NV_win32_keyed_mutex'] = [ 'VK_NV_external_memory', 'VK_NV_external_memory_capabilities', 'VK_NV_external_memory_win32' ] # Define lists of all / KHR / KHX extensions -allExts = [ 'VK_AMD_draw_indirect_count', 'VK_AMD_gcn_shader', 'VK_AMD_gpu_shader_half_float', 'VK_AMD_gpu_shader_int16', 'VK_AMD_mixed_attachment_samples', 'VK_AMD_negative_viewport_height', 'VK_AMD_rasterization_order', 'VK_AMD_shader_ballot', 'VK_AMD_shader_explicit_vertex_parameter', 'VK_AMD_shader_trinary_minmax', 'VK_AMD_texture_gather_bias_lod', 'VK_EXT_acquire_xlib_display', 'VK_EXT_blend_operation_advanced', 'VK_EXT_debug_marker', 'VK_EXT_debug_report', 'VK_EXT_depth_range_unrestricted', 'VK_EXT_direct_mode_display', 'VK_EXT_discard_rectangles', 'VK_EXT_display_control', 'VK_EXT_display_surface_counter', 'VK_EXT_hdr_metadata', 'VK_EXT_post_depth_coverage', 'VK_EXT_sampler_filter_minmax', 'VK_EXT_shader_subgroup_ballot', 'VK_EXT_shader_subgroup_vote', 'VK_EXT_shader_viewport_index_layer', 'VK_EXT_swapchain_colorspace', 'VK_EXT_validation_flags', 'VK_GOOGLE_display_timing', 'VK_IMG_filter_cubic', 'VK_IMG_format_pvrtc', 'VK_KHR_16bit_storage', 'VK_KHR_android_surface', 'VK_KHR_dedicated_allocation', 'VK_KHR_descriptor_update_template', 'VK_KHR_display', 'VK_KHR_display_swapchain', 'VK_KHR_external_fence', 'VK_KHR_external_fence_capabilities', 'VK_KHR_external_fence_fd', 'VK_KHR_external_fence_win32', 'VK_KHR_external_memory', 'VK_KHR_external_memory_capabilities', 'VK_KHR_external_memory_fd', 'VK_KHR_external_memory_win32', 'VK_KHR_external_semaphore', 'VK_KHR_external_semaphore_capabilities', 'VK_KHR_external_semaphore_fd', 'VK_KHR_external_semaphore_win32', 'VK_KHR_get_memory_requirements2', 'VK_KHR_get_physical_device_properties2', 'VK_KHR_get_surface_capabilities2', 'VK_KHR_incremental_present', 'VK_KHR_maintenance1', 'VK_KHR_mir_surface', 'VK_KHR_push_descriptor', 'VK_KHR_relaxed_block_layout', 'VK_KHR_sampler_mirror_clamp_to_edge', 'VK_KHR_shader_draw_parameters', 'VK_KHR_shared_presentable_image', 'VK_KHR_storage_buffer_storage_class', 'VK_KHR_surface', 'VK_KHR_swapchain', 'VK_KHR_variable_pointers', 'VK_KHR_wayland_surface', 'VK_KHR_win32_keyed_mutex', 'VK_KHR_win32_surface', 'VK_KHR_xcb_surface', 'VK_KHR_xlib_surface', 'VK_KHX_device_group', 'VK_KHX_device_group_creation', 'VK_KHX_multiview', 'VK_MVK_ios_surface', 'VK_MVK_macos_surface', 'VK_NN_vi_surface', 'VK_NVX_device_generated_commands', 'VK_NVX_multiview_per_view_attributes', 'VK_NV_clip_space_w_scaling', 'VK_NV_dedicated_allocation', 'VK_NV_external_memory', 'VK_NV_external_memory_capabilities', 'VK_NV_external_memory_win32', 'VK_NV_fill_rectangle', 'VK_NV_fragment_coverage_to_color', 'VK_NV_framebuffer_mixed_samples', 'VK_NV_geometry_shader_passthrough', 'VK_NV_glsl_shader', 'VK_NV_sample_mask_override_coverage', 'VK_NV_viewport_array2', 'VK_NV_viewport_swizzle', 'VK_NV_win32_keyed_mutex' ] +allExts = [ 'VK_AMD_draw_indirect_count', 'VK_AMD_gcn_shader', 'VK_AMD_gpu_shader_half_float', 'VK_AMD_gpu_shader_int16', 'VK_AMD_mixed_attachment_samples', 'VK_AMD_negative_viewport_height', 'VK_AMD_rasterization_order', 'VK_AMD_shader_ballot', 'VK_AMD_shader_explicit_vertex_parameter', 'VK_AMD_shader_trinary_minmax', 'VK_AMD_texture_gather_bias_lod', 'VK_EXT_acquire_xlib_display', 'VK_EXT_blend_operation_advanced', 'VK_EXT_debug_marker', 'VK_EXT_debug_report', 'VK_EXT_depth_range_unrestricted', 'VK_EXT_direct_mode_display', 'VK_EXT_discard_rectangles', 'VK_EXT_display_control', 'VK_EXT_display_surface_counter', 'VK_EXT_hdr_metadata', 'VK_EXT_post_depth_coverage', 'VK_EXT_sampler_filter_minmax', 'VK_EXT_shader_stencil_export', 'VK_EXT_shader_subgroup_ballot', 'VK_EXT_shader_subgroup_vote', 'VK_EXT_shader_viewport_index_layer', 'VK_EXT_swapchain_colorspace', 'VK_EXT_validation_flags', 'VK_GOOGLE_display_timing', 'VK_IMG_filter_cubic', 'VK_IMG_format_pvrtc', 'VK_KHR_16bit_storage', 'VK_KHR_android_surface', 'VK_KHR_dedicated_allocation', 'VK_KHR_descriptor_update_template', 'VK_KHR_display', 'VK_KHR_display_swapchain', 'VK_KHR_external_fence', 'VK_KHR_external_fence_capabilities', 'VK_KHR_external_fence_fd', 'VK_KHR_external_fence_win32', 'VK_KHR_external_memory', 'VK_KHR_external_memory_capabilities', 'VK_KHR_external_memory_fd', 'VK_KHR_external_memory_win32', 'VK_KHR_external_semaphore', 'VK_KHR_external_semaphore_capabilities', 'VK_KHR_external_semaphore_fd', 'VK_KHR_external_semaphore_win32', 'VK_KHR_get_memory_requirements2', 'VK_KHR_get_physical_device_properties2', 'VK_KHR_get_surface_capabilities2', 'VK_KHR_incremental_present', 'VK_KHR_maintenance1', 'VK_KHR_mir_surface', 'VK_KHR_push_descriptor', 'VK_KHR_relaxed_block_layout', 'VK_KHR_sampler_mirror_clamp_to_edge', 'VK_KHR_shader_draw_parameters', 'VK_KHR_shared_presentable_image', 'VK_KHR_storage_buffer_storage_class', 'VK_KHR_surface', 'VK_KHR_swapchain', 'VK_KHR_variable_pointers', 'VK_KHR_wayland_surface', 'VK_KHR_win32_keyed_mutex', 'VK_KHR_win32_surface', 'VK_KHR_xcb_surface', 'VK_KHR_xlib_surface', 'VK_KHX_device_group', 'VK_KHX_device_group_creation', 'VK_KHX_multiview', 'VK_MVK_ios_surface', 'VK_MVK_macos_surface', 'VK_NN_vi_surface', 'VK_NVX_device_generated_commands', 'VK_NVX_multiview_per_view_attributes', 'VK_NV_clip_space_w_scaling', 'VK_NV_dedicated_allocation', 'VK_NV_external_memory', 'VK_NV_external_memory_capabilities', 'VK_NV_external_memory_win32', 'VK_NV_fill_rectangle', 'VK_NV_fragment_coverage_to_color', 'VK_NV_framebuffer_mixed_samples', 'VK_NV_geometry_shader_passthrough', 'VK_NV_glsl_shader', 'VK_NV_sample_mask_override_coverage', 'VK_NV_viewport_array2', 'VK_NV_viewport_swizzle', 'VK_NV_win32_keyed_mutex' ] khrExts = [ 'VK_KHR_16bit_storage', 'VK_KHR_android_surface', 'VK_KHR_dedicated_allocation', 'VK_KHR_descriptor_update_template', 'VK_KHR_display', 'VK_KHR_display_swapchain', 'VK_KHR_external_fence', 'VK_KHR_external_fence_capabilities', 'VK_KHR_external_fence_fd', 'VK_KHR_external_fence_win32', 'VK_KHR_external_memory', 'VK_KHR_external_memory_capabilities', 'VK_KHR_external_memory_fd', 'VK_KHR_external_memory_win32', 'VK_KHR_external_semaphore', 'VK_KHR_external_semaphore_capabilities', 'VK_KHR_external_semaphore_fd', 'VK_KHR_external_semaphore_win32', 'VK_KHR_get_memory_requirements2', 'VK_KHR_get_physical_device_properties2', 'VK_KHR_get_surface_capabilities2', 'VK_KHR_incremental_present', 'VK_KHR_maintenance1', 'VK_KHR_mir_surface', 'VK_KHR_push_descriptor', 'VK_KHR_relaxed_block_layout', 'VK_KHR_sampler_mirror_clamp_to_edge', 'VK_KHR_shader_draw_parameters', 'VK_KHR_shared_presentable_image', 'VK_KHR_storage_buffer_storage_class', 'VK_KHR_surface', 'VK_KHR_swapchain', 'VK_KHR_variable_pointers', 'VK_KHR_wayland_surface', 'VK_KHR_win32_keyed_mutex', 'VK_KHR_win32_surface', 'VK_KHR_xcb_surface', 'VK_KHR_xlib_surface' ] khxExts = [ 'VK_KHX_device_group', 'VK_KHX_device_group_creation', 'VK_KHX_multiview' ] diff --git a/doc/specs/vulkan/config/extDependency.sh b/doc/specs/vulkan/config/extDependency.sh index 4ae39ae4..2da32021 100644 --- a/doc/specs/vulkan/config/extDependency.sh +++ b/doc/specs/vulkan/config/extDependency.sh @@ -51,6 +51,6 @@ extensions[VK_NV_external_memory_win32]="VK_NV_external_memory VK_NV_external_me extensions[VK_NV_win32_keyed_mutex]="VK_NV_external_memory VK_NV_external_memory_capabilities VK_NV_external_memory_win32" # Define lists of all / KHR / KHX extensions -allExts="VK_AMD_draw_indirect_count VK_AMD_gcn_shader VK_AMD_gpu_shader_half_float VK_AMD_gpu_shader_int16 VK_AMD_mixed_attachment_samples VK_AMD_negative_viewport_height VK_AMD_rasterization_order VK_AMD_shader_ballot VK_AMD_shader_explicit_vertex_parameter VK_AMD_shader_trinary_minmax VK_AMD_texture_gather_bias_lod VK_EXT_acquire_xlib_display VK_EXT_blend_operation_advanced VK_EXT_debug_marker VK_EXT_debug_report VK_EXT_depth_range_unrestricted VK_EXT_direct_mode_display VK_EXT_discard_rectangles VK_EXT_display_control VK_EXT_display_surface_counter VK_EXT_hdr_metadata VK_EXT_post_depth_coverage VK_EXT_sampler_filter_minmax VK_EXT_shader_subgroup_ballot VK_EXT_shader_subgroup_vote VK_EXT_shader_viewport_index_layer VK_EXT_swapchain_colorspace VK_EXT_validation_flags VK_GOOGLE_display_timing VK_IMG_filter_cubic VK_IMG_format_pvrtc VK_KHR_16bit_storage VK_KHR_android_surface VK_KHR_dedicated_allocation VK_KHR_descriptor_update_template VK_KHR_display VK_KHR_display_swapchain VK_KHR_external_fence VK_KHR_external_fence_capabilities VK_KHR_external_fence_fd VK_KHR_external_fence_win32 VK_KHR_external_memory VK_KHR_external_memory_capabilities VK_KHR_external_memory_fd VK_KHR_external_memory_win32 VK_KHR_external_semaphore VK_KHR_external_semaphore_capabilities VK_KHR_external_semaphore_fd VK_KHR_external_semaphore_win32 VK_KHR_get_memory_requirements2 VK_KHR_get_physical_device_properties2 VK_KHR_get_surface_capabilities2 VK_KHR_incremental_present VK_KHR_maintenance1 VK_KHR_mir_surface VK_KHR_push_descriptor VK_KHR_relaxed_block_layout VK_KHR_sampler_mirror_clamp_to_edge VK_KHR_shader_draw_parameters VK_KHR_shared_presentable_image VK_KHR_storage_buffer_storage_class VK_KHR_surface VK_KHR_swapchain VK_KHR_variable_pointers VK_KHR_wayland_surface VK_KHR_win32_keyed_mutex VK_KHR_win32_surface VK_KHR_xcb_surface VK_KHR_xlib_surface VK_KHX_device_group VK_KHX_device_group_creation VK_KHX_multiview VK_MVK_ios_surface VK_MVK_macos_surface VK_NN_vi_surface VK_NVX_device_generated_commands VK_NVX_multiview_per_view_attributes VK_NV_clip_space_w_scaling VK_NV_dedicated_allocation VK_NV_external_memory VK_NV_external_memory_capabilities VK_NV_external_memory_win32 VK_NV_fill_rectangle VK_NV_fragment_coverage_to_color VK_NV_framebuffer_mixed_samples VK_NV_geometry_shader_passthrough VK_NV_glsl_shader VK_NV_sample_mask_override_coverage VK_NV_viewport_array2 VK_NV_viewport_swizzle VK_NV_win32_keyed_mutex" +allExts="VK_AMD_draw_indirect_count VK_AMD_gcn_shader VK_AMD_gpu_shader_half_float VK_AMD_gpu_shader_int16 VK_AMD_mixed_attachment_samples VK_AMD_negative_viewport_height VK_AMD_rasterization_order VK_AMD_shader_ballot VK_AMD_shader_explicit_vertex_parameter VK_AMD_shader_trinary_minmax VK_AMD_texture_gather_bias_lod VK_EXT_acquire_xlib_display VK_EXT_blend_operation_advanced VK_EXT_debug_marker VK_EXT_debug_report VK_EXT_depth_range_unrestricted VK_EXT_direct_mode_display VK_EXT_discard_rectangles VK_EXT_display_control VK_EXT_display_surface_counter VK_EXT_hdr_metadata VK_EXT_post_depth_coverage VK_EXT_sampler_filter_minmax VK_EXT_shader_stencil_export VK_EXT_shader_subgroup_ballot VK_EXT_shader_subgroup_vote VK_EXT_shader_viewport_index_layer VK_EXT_swapchain_colorspace VK_EXT_validation_flags VK_GOOGLE_display_timing VK_IMG_filter_cubic VK_IMG_format_pvrtc VK_KHR_16bit_storage VK_KHR_android_surface VK_KHR_dedicated_allocation VK_KHR_descriptor_update_template VK_KHR_display VK_KHR_display_swapchain VK_KHR_external_fence VK_KHR_external_fence_capabilities VK_KHR_external_fence_fd VK_KHR_external_fence_win32 VK_KHR_external_memory VK_KHR_external_memory_capabilities VK_KHR_external_memory_fd VK_KHR_external_memory_win32 VK_KHR_external_semaphore VK_KHR_external_semaphore_capabilities VK_KHR_external_semaphore_fd VK_KHR_external_semaphore_win32 VK_KHR_get_memory_requirements2 VK_KHR_get_physical_device_properties2 VK_KHR_get_surface_capabilities2 VK_KHR_incremental_present VK_KHR_maintenance1 VK_KHR_mir_surface VK_KHR_push_descriptor VK_KHR_relaxed_block_layout VK_KHR_sampler_mirror_clamp_to_edge VK_KHR_shader_draw_parameters VK_KHR_shared_presentable_image VK_KHR_storage_buffer_storage_class VK_KHR_surface VK_KHR_swapchain VK_KHR_variable_pointers VK_KHR_wayland_surface VK_KHR_win32_keyed_mutex VK_KHR_win32_surface VK_KHR_xcb_surface VK_KHR_xlib_surface VK_KHX_device_group VK_KHX_device_group_creation VK_KHX_multiview VK_MVK_ios_surface VK_MVK_macos_surface VK_NN_vi_surface VK_NVX_device_generated_commands VK_NVX_multiview_per_view_attributes VK_NV_clip_space_w_scaling VK_NV_dedicated_allocation VK_NV_external_memory VK_NV_external_memory_capabilities VK_NV_external_memory_win32 VK_NV_fill_rectangle VK_NV_fragment_coverage_to_color VK_NV_framebuffer_mixed_samples VK_NV_geometry_shader_passthrough VK_NV_glsl_shader VK_NV_sample_mask_override_coverage VK_NV_viewport_array2 VK_NV_viewport_swizzle VK_NV_win32_keyed_mutex" khrExts="VK_KHR_16bit_storage VK_KHR_android_surface VK_KHR_dedicated_allocation VK_KHR_descriptor_update_template VK_KHR_display VK_KHR_display_swapchain VK_KHR_external_fence VK_KHR_external_fence_capabilities VK_KHR_external_fence_fd VK_KHR_external_fence_win32 VK_KHR_external_memory VK_KHR_external_memory_capabilities VK_KHR_external_memory_fd VK_KHR_external_memory_win32 VK_KHR_external_semaphore VK_KHR_external_semaphore_capabilities VK_KHR_external_semaphore_fd VK_KHR_external_semaphore_win32 VK_KHR_get_memory_requirements2 VK_KHR_get_physical_device_properties2 VK_KHR_get_surface_capabilities2 VK_KHR_incremental_present VK_KHR_maintenance1 VK_KHR_mir_surface VK_KHR_push_descriptor VK_KHR_relaxed_block_layout VK_KHR_sampler_mirror_clamp_to_edge VK_KHR_shader_draw_parameters VK_KHR_shared_presentable_image VK_KHR_storage_buffer_storage_class VK_KHR_surface VK_KHR_swapchain VK_KHR_variable_pointers VK_KHR_wayland_surface VK_KHR_win32_keyed_mutex VK_KHR_win32_surface VK_KHR_xcb_surface VK_KHR_xlib_surface" khxExts="VK_KHX_device_group VK_KHX_device_group_creation VK_KHX_multiview" diff --git a/doc/specs/vulkan/reflow.py b/doc/specs/vulkan/reflow.py index 0bde9c72..2e258a76 100755 --- a/doc/specs/vulkan/reflow.py +++ b/doc/specs/vulkan/reflow.py @@ -580,7 +580,7 @@ global vuPat vuPat = re.compile('^(?P [*]+)( *)(?P.*)', re.DOTALL) # The value to start tagging VU statements at, unless overridden by -nextvu -startVUID = 1510 +startVUID = 1512 if __name__ == '__main__': parser = argparse.ArgumentParser() diff --git a/doc/specs/vulkan/style/naming.txt b/doc/specs/vulkan/style/naming.txt index a28b8a71..f9e36552 100644 --- a/doc/specs/vulkan/style/naming.txt +++ b/doc/specs/vulkan/style/naming.txt @@ -30,6 +30,23 @@ respectively. Whenever an abbreviation exists for a particular word, it should be used in place of the full word unless there is good reason not to. +When a number is part of an identifier, it is treated as a word if it is a +standalone number, such as the extension name token +ename:VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME for the ++VK_KHR_get_memory_requirements2+ extension. +For uses where the number is part of a common abbreviation such as etext:2D +or etext:R8B8`, the entire abbreviation is treated as a word. + +ifdef::editing-notes[] +[NOTE] +.editing-note +==== +Unfortunately, there's an internal inconsistency here between extension name +strings, such as VK_KHR_get_memory_requirements2, and tokens encoding those +names, such as ename:VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME. +==== +endif::editing-notes[] + [[naming-preprocessor]] == Preprocessor Defines @@ -242,7 +259,7 @@ There are three exceptions to the above rule in the core Vulkan API: * vkDeviceWaitIdle * vkCmdNextSubpass * vkCmdPipelineBarrier - + These names are left as-is to maintain compatibility. There are additionally a number of exceptions in a few existing extensions. @@ -322,7 +339,7 @@ verbs at the time of writing. | Present | Presents an image to a surface | Push | Pushes data to the device as part of a command stream | Release | Releases ownership of an object to an external source -| Reset | Resets the state of an object to an initial state +| Reset | Resets the state of an object to an initial state | Resolve | Resolves multiple samples in a multisampled image to an image with one sample per pixel | Set | Sets the state of an object | Submit | Submits a set of commands to a queue diff --git a/src/spec/validitygenerator.py b/src/spec/validitygenerator.py index 7be773cb..00808ec5 100644 --- a/src/spec/validitygenerator.py +++ b/src/spec/validitygenerator.py @@ -576,11 +576,12 @@ class ValidityOutputGenerator(OutputGenerator): paramname = param.find('name') paramtype = param.find('type') - ancestors = self.getHandleDispatchableAncestors(paramtype.text) + if not self.paramIsPointer(param) or (param.text is not None and 'const' in param.text): + ancestors = self.getHandleDispatchableAncestors(paramtype.text) - ancestormap[param] = ancestors + ancestormap[param] = ancestors - anyoptional |= self.isHandleOptional(param, params) + anyoptional |= self.isHandleOptional(param, params) # Remove redundant ancestor lists for param in handles: @@ -603,7 +604,7 @@ class ValidityOutputGenerator(OutputGenerator): for ancestors in list(ancestormap.values())[1:]: current = [val for val in current if val in ancestors] - if len(current) > 1: + if len(current) > 0: commonancestor = current[0] if len(ancestormap.keys()) > 1: diff --git a/src/spec/vk.xml b/src/spec/vk.xml index 7c5f258a..f0a1cd62 100644 --- a/src/spec/vk.xml +++ b/src/spec/vk.xml @@ -106,7 +106,7 @@ private version is maintained in the 1.0 branch of the member gitlab server. // Vulkan 1.0 version number #define VK_API_VERSION_1_0 VK_MAKE_VERSION(1, 0, 0)// Patch version should always be set to 0 // Version of this file -#define VK_HEADER_VERSION 58 +#define VK_HEADER_VERSION 59 #define VK_DEFINE_HANDLE(object) typedef struct object##_T* object; @@ -2101,7 +2101,7 @@ private version is maintained in the 1.0 branch of the member gitlab server. const uint32_t* pCorrelationMasks - VkStructureType sType + VkStructureType sType void* pNext uint32_t minImageCountSupported minimum number of images for the surface uint32_t maxImageCountSupported maximum number of images for the surface, 0 for unlimited @@ -6294,7 +6294,8 @@ private version is maintained in the 1.0 branch of the member gitlab server. - + + @@ -6715,10 +6716,10 @@ private version is maintained in the 1.0 branch of the member gitlab server. - + - - + + diff --git a/src/vulkan/vulkan.h b/src/vulkan/vulkan.h index 23a92889..a297bae4 100644 --- a/src/vulkan/vulkan.h +++ b/src/vulkan/vulkan.h @@ -43,7 +43,7 @@ extern "C" { #define VK_VERSION_MINOR(version) (((uint32_t)(version) >> 12) & 0x3ff) #define VK_VERSION_PATCH(version) ((uint32_t)(version) & 0xfff) // Version of this file -#define VK_HEADER_VERSION 58 +#define VK_HEADER_VERSION 59 #define VK_NULL_HANDLE 0 @@ -293,7 +293,7 @@ typedef enum VkStructureType { VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_LIMITS_NVX = 1000086004, VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_FEATURES_NVX = 1000086005, VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV = 1000087000, - VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES2_EXT = 1000090000, + VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT = 1000090000, VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT = 1000091000, VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT = 1000091001, VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT = 1000091002, @@ -5938,6 +5938,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkGetRandROutputDisplayEXT( #define VK_EXT_display_surface_counter 1 #define VK_EXT_DISPLAY_SURFACE_COUNTER_SPEC_VERSION 1 #define VK_EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME "VK_EXT_display_surface_counter" +#define VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES2_EXT VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT typedef enum VkSurfaceCounterFlagBitsEXT { @@ -6342,6 +6343,11 @@ typedef struct VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT { #define VK_AMD_MIXED_ATTACHMENT_SAMPLES_EXTENSION_NAME "VK_AMD_mixed_attachment_samples" +#define VK_EXT_shader_stencil_export 1 +#define VK_EXT_SHADER_STENCIL_EXPORT_SPEC_VERSION 1 +#define VK_EXT_SHADER_STENCIL_EXPORT_EXTENSION_NAME "VK_EXT_shader_stencil_export" + + #define VK_EXT_blend_operation_advanced 1 #define VK_EXT_BLEND_OPERATION_ADVANCED_SPEC_VERSION 2 #define VK_EXT_BLEND_OPERATION_ADVANCED_EXTENSION_NAME "VK_EXT_blend_operation_advanced"