Vulkan-Docs/appendices/VK_NVX_multiview_per_view_a...

113 lines
3.6 KiB
Plaintext
Raw Normal View History

Change log for September 5, 2017 Vulkan 1.0.60 spec update: * Bump API patch number and header version number to 60 for this update. Github Issues: * Document that <<queries-timestamps, Timestamp Queries>> can only be meaningfully compared when they are written from the same queue (public issue 216). * Document that the `<extension>` tag `type` attribute is required for non-disabled extensions (derived from, but does not close public issue 354). * Clean up registry schema length attribute descriptions to be consistent and correct (public issue 555). Internal Issues: * Replace as much of the hand-written extension appendix metadata as possible with asciidoc includes generated from corresponding attributes of +vk.xml+, and enhance the style guide to match. This avoids inconsistencies between +vk.xml+ and the appendices, and produces a more uniform style (internal issue 137). * Remove the generated extDependency.{py,sh} files from the tree and create them dynamically on demand instead, reducing merge conflicts (internal issue 713). * Add a prototype tool for generating in-place difference markup for sections guarded by asciidoc conditionals, and new syntax for open blocks to support it (internal issue 833). * Remove unnecessary restriction of etext:*SYNC_FD_BIT_KHR external handle types to the same physical device in the slink:VkPhysicalDeviceIDPropertiesKHR, flink:VkImportMemoryWin32HandleInfoKHR, slink:VkImportFenceWin32HandleInfoKHR, slink:VkImportFenceFdInfoKHR, slink:VkImportSemaphoreWin32HandleInfoKHR, slink:VkImportSemaphoreFdInfoKHR <<external-memory-handle-types-compatibility, External memory handle types compatibility>>, <<external-semaphore-handle-types-compatibility, External semaphore handle types compatibility>>, and <<external-fence-handle-types-compatibility, External fence handle types compatibility>> sections (internal issue 956). Other Issues: * Remove dependency of +VK_KHX_device_group+ on +VK_KHR_swapchain+ (there is an interaction, but not a strict dependency), and add a new `extension` attribute to the `<require` XML tag to allow classifying a subset of interfaces of an extension as requiring another extension. Update the registry schema and documentation accordingly. New Extensions: * `VK_AMD_shader_fragment_mask` (and related `GL_AMD_shader_fragment_mask` GLSL extension) * `VK_EXT_sample_locations` * `VK_EXT_validation_cache`
2017-09-04 10:06:55 +00:00
include::meta/VK_NVX_multiview_per_view_attributes.txt[]
Change log for February 27, 2017 Vulkan 1.0.42 spec update: * Bump API patch number and header version number to 42 for this update (the first anniversary edition). Github Issues: * Changed asciidoctor macros so cross-page links in the standalone reference pages function properly (public issue 462). Internal Issues: * Clarified host visibility discussion for slink:VkMemoryType, flink:vkInvalidateMappedMemoryRanges, elink:VkAccessFlagBits, and the <<synchronization-framebuffer-regions,Framebuffer Region Dependencies>> section, removing duplicated information and adding a central definition in the access types section (internal issue 552). * Change description of slink:vkGetPhysicalDeviceSurfacePresentModesKHR::pname:pPresentModes to return an array of values, not structures (internal issue 699). New Extensions: * Add a NOTE to the <<extensions,Layers & Extensions>> chapter describing the experimental status of `KHX` extensions. * Add new Khronos, Khronos Experimental, and vendor Vulkan extensions for release at GDC: ** VK_KHR_descriptor_update_template ** VK_KHR_push_descriptor ** VK_KHX_device_group ** VK_KHX_device_group_creation ** VK_KHX_external_memory ** VK_KHX_external_memory_capabilities ** VK_KHX_external_memory_fd ** VK_KHX_external_memory_win32 ** VK_KHX_external_semaphore ** VK_KHX_external_semaphore_capabilities ** VK_KHX_external_semaphore_fd ** VK_KHX_external_semaphore_win32 ** VK_KHX_multiview ** VK_KHX_win32_keyed_mutex ** VK_EXT_discard_rectangles ** VK_MVK_ios_surface ** VK_MVK_macos_surface ** VK_NVX_multiview_per_view_attributes ** VK_NV_clip_space_w_scaling ** VK_NV_geometry_shader_passthrough ** VK_NV_sample_mask_override_coverage ** VK_NV_viewport_array2 ** VK_NV_viewport_swizzle * Add new GLSL vendor extensions to support new builtin variables: ** GL_EXT_device_group ** GL_EXT_multiview
2017-02-27 06:54:26 +00:00
*Last Modified Date*::
2017-01-13
*IP Status*::
No known IP claims.
Change log for September 5, 2017 Vulkan 1.0.60 spec update: * Bump API patch number and header version number to 60 for this update. Github Issues: * Document that <<queries-timestamps, Timestamp Queries>> can only be meaningfully compared when they are written from the same queue (public issue 216). * Document that the `<extension>` tag `type` attribute is required for non-disabled extensions (derived from, but does not close public issue 354). * Clean up registry schema length attribute descriptions to be consistent and correct (public issue 555). Internal Issues: * Replace as much of the hand-written extension appendix metadata as possible with asciidoc includes generated from corresponding attributes of +vk.xml+, and enhance the style guide to match. This avoids inconsistencies between +vk.xml+ and the appendices, and produces a more uniform style (internal issue 137). * Remove the generated extDependency.{py,sh} files from the tree and create them dynamically on demand instead, reducing merge conflicts (internal issue 713). * Add a prototype tool for generating in-place difference markup for sections guarded by asciidoc conditionals, and new syntax for open blocks to support it (internal issue 833). * Remove unnecessary restriction of etext:*SYNC_FD_BIT_KHR external handle types to the same physical device in the slink:VkPhysicalDeviceIDPropertiesKHR, flink:VkImportMemoryWin32HandleInfoKHR, slink:VkImportFenceWin32HandleInfoKHR, slink:VkImportFenceFdInfoKHR, slink:VkImportSemaphoreWin32HandleInfoKHR, slink:VkImportSemaphoreFdInfoKHR <<external-memory-handle-types-compatibility, External memory handle types compatibility>>, <<external-semaphore-handle-types-compatibility, External semaphore handle types compatibility>>, and <<external-fence-handle-types-compatibility, External fence handle types compatibility>> sections (internal issue 956). Other Issues: * Remove dependency of +VK_KHX_device_group+ on +VK_KHR_swapchain+ (there is an interaction, but not a strict dependency), and add a new `extension` attribute to the `<require` XML tag to allow classifying a subset of interfaces of an extension as requiring another extension. Update the registry schema and documentation accordingly. New Extensions: * `VK_AMD_shader_fragment_mask` (and related `GL_AMD_shader_fragment_mask` GLSL extension) * `VK_EXT_sample_locations` * `VK_EXT_validation_cache`
2017-09-04 10:06:55 +00:00
*Interactions and External Dependencies*::
Change log for February 27, 2017 Vulkan 1.0.42 spec update: * Bump API patch number and header version number to 42 for this update (the first anniversary edition). Github Issues: * Changed asciidoctor macros so cross-page links in the standalone reference pages function properly (public issue 462). Internal Issues: * Clarified host visibility discussion for slink:VkMemoryType, flink:vkInvalidateMappedMemoryRanges, elink:VkAccessFlagBits, and the <<synchronization-framebuffer-regions,Framebuffer Region Dependencies>> section, removing duplicated information and adding a central definition in the access types section (internal issue 552). * Change description of slink:vkGetPhysicalDeviceSurfacePresentModesKHR::pname:pPresentModes to return an array of values, not structures (internal issue 699). New Extensions: * Add a NOTE to the <<extensions,Layers & Extensions>> chapter describing the experimental status of `KHX` extensions. * Add new Khronos, Khronos Experimental, and vendor Vulkan extensions for release at GDC: ** VK_KHR_descriptor_update_template ** VK_KHR_push_descriptor ** VK_KHX_device_group ** VK_KHX_device_group_creation ** VK_KHX_external_memory ** VK_KHX_external_memory_capabilities ** VK_KHX_external_memory_fd ** VK_KHX_external_memory_win32 ** VK_KHX_external_semaphore ** VK_KHX_external_semaphore_capabilities ** VK_KHX_external_semaphore_fd ** VK_KHX_external_semaphore_win32 ** VK_KHX_multiview ** VK_KHX_win32_keyed_mutex ** VK_EXT_discard_rectangles ** VK_MVK_ios_surface ** VK_MVK_macos_surface ** VK_NVX_multiview_per_view_attributes ** VK_NV_clip_space_w_scaling ** VK_NV_geometry_shader_passthrough ** VK_NV_sample_mask_override_coverage ** VK_NV_viewport_array2 ** VK_NV_viewport_swizzle * Add new GLSL vendor extensions to support new builtin variables: ** GL_EXT_device_group ** GL_EXT_multiview
2017-02-27 06:54:26 +00:00
- This extension requires the
Change log for March 10, 2017 Vulkan 1.0.43 spec update: * Bump API patch number and header version number to 43 for this update. Github Issues: * Make clearer that color write mask is applied regardless of whether blending is enabled, by referring to the <<framebuffer-color-write-mask,Color Write Mask>> section (public issue 241). * Fix public issue 414: ** Added two new command buffer states (invalid, pending), and an explicit "command buffer lifecycle" section to explain them. ** Replaced "pending execution" with "in the pending state". ** Replaced a bunch of "this will invalidate the command buffer" language with "this will move the command buffer to the invalid state", and added validation language for what state those command buffers should be in. ** Added additional validation language about what state a command buffer should be in for various commands that affect it. ** Added invalidation language to destroy commands in the lifetimes section of fundamentals. ** Added command buffers to list of objects which must not be deleted whilst a (primary) command buffer is in the recording or pending state. * Update `GL_KHR_vulkan_glsl` extension to allow anonymous push constant blocks (public issue 428). Internal Issues: * Document rules about extension interactions in the style guide (internal issue 579). * Require ename:VK_PRESENT_MODE_MAILBOX_KHR support in queries of surfaces created with flink:vkCreateWaylandSurfaceKHR using the VK_KHR_wayland_surface extension (internal issue 666). * Remove Valid Usage constraints for flink:vkAllocateDescriptorSets when the `VK_KHR_maintainance1` extension is present (internal issue 686). * Remove undocumented KHX-variants of vkGetPhysicalDeviceProperties2KHR and vkGetPhysicalDeviceImageFormatProperties2KHR from the <<VK_KHX_external_memory_capabilities>> and <<VK_KHX_external_semaphore_capabilities>> extensions. New Extensions: * `VK_EXT_hdr_metadata` * `VK_GOOGLE_display_timing`
2017-03-11 01:39:29 +00:00
https://www.khronos.org/registry/spir-v/extensions/NV/SPV_NVX_multiview_per_view_attributes.html[+SPV_NVX_multiview_per_view_attributes+]
Change log for February 27, 2017 Vulkan 1.0.42 spec update: * Bump API patch number and header version number to 42 for this update (the first anniversary edition). Github Issues: * Changed asciidoctor macros so cross-page links in the standalone reference pages function properly (public issue 462). Internal Issues: * Clarified host visibility discussion for slink:VkMemoryType, flink:vkInvalidateMappedMemoryRanges, elink:VkAccessFlagBits, and the <<synchronization-framebuffer-regions,Framebuffer Region Dependencies>> section, removing duplicated information and adding a central definition in the access types section (internal issue 552). * Change description of slink:vkGetPhysicalDeviceSurfacePresentModesKHR::pname:pPresentModes to return an array of values, not structures (internal issue 699). New Extensions: * Add a NOTE to the <<extensions,Layers & Extensions>> chapter describing the experimental status of `KHX` extensions. * Add new Khronos, Khronos Experimental, and vendor Vulkan extensions for release at GDC: ** VK_KHR_descriptor_update_template ** VK_KHR_push_descriptor ** VK_KHX_device_group ** VK_KHX_device_group_creation ** VK_KHX_external_memory ** VK_KHX_external_memory_capabilities ** VK_KHX_external_memory_fd ** VK_KHX_external_memory_win32 ** VK_KHX_external_semaphore ** VK_KHX_external_semaphore_capabilities ** VK_KHX_external_semaphore_fd ** VK_KHX_external_semaphore_win32 ** VK_KHX_multiview ** VK_KHX_win32_keyed_mutex ** VK_EXT_discard_rectangles ** VK_MVK_ios_surface ** VK_MVK_macos_surface ** VK_NVX_multiview_per_view_attributes ** VK_NV_clip_space_w_scaling ** VK_NV_geometry_shader_passthrough ** VK_NV_sample_mask_override_coverage ** VK_NV_viewport_array2 ** VK_NV_viewport_swizzle * Add new GLSL vendor extensions to support new builtin variables: ** GL_EXT_device_group ** GL_EXT_multiview
2017-02-27 06:54:26 +00:00
SPIR-V extension.
- This extension requires the +GL_NVX_multiview_per_view_attributes+
extension for GLSL source languages.
Change log for January 5, 2018 Vulkan 1.0.67 spec update: * Bump API patch number and header version number to 67 for this update. * Update copyright dates to 2018 Github Issues: * Fix texture lookup functions in `GL_KHR_vulkan_glsl` specification (public pull request 363). * Clarify the state waited semaphores are left in when a call to flink:vkQueuePresentKHR fails (public issue 572). * Cleanup descriptions of slink:VkObjectTablePushConstantEntryNVX and slink:VkObjectTableDescriptorSetEntryNVX (public issue 583) * Remove redundant flink:vkCmdSetDiscardRectangleEXT valid usage statements (public pull 586). * Make dynamic state array length valid usage statements implicit for flink:vkCmdSetViewportWScalingNV, flink:vkCmdSetDiscardRectangleEXT, and flink:vkCmdSetViewport (public pull 589). * Clarify meaning of window extent (0,0) in slink:VkSwapchainKHR for the Windows and X11 platforms, in their respective extensions (public issue 590). * Allow flink:vkGetPastPresentationTimingGOOGLE to return ename:VK_INCOMPLETE (public issue 604). * Add synchronization valid usage statements to flink:vkAcquireNextImage (public pull 611). * Fix some broken external links and internal xrefs (public pull 613). * Clean up slink:VkViewport valid usage statements in the presence or absence of relevant extensions (public pull 623). * Remove ename:VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL_KHR token from VK_KHR_maintenance2 from the non-extension VU path for slink:VkGraphicsPipelineCreateInfo (public issue 628). * Miscellaneous minor markup fixes - extension name strings (public pull 631), Notes (pull 633), queue names emitted by generator scripts (pull 634), block formatting in slink:VkDescriptorUpdateTemplateEntryKHR (pull 635), ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG (pull 641), quotes and apostrophes (pull 643), * Miscellaneous minor grammar fixes (public pull 644). * Fix markup macros so usage like ptext:*Src* works (public pull 647). Internal Issues: * Clarify in the `VK_KHR_surface` and `VK_KHR_swapchain` extensions that parameter combinations which aren't supported for normal images are also unsupported for presentable images, even if the parameter values are individually supported as reported by the surface capability queries (internal issue 1029). * Fixed XML typo in the valid value field of the pname:sType member of slink:VkPhysicalDeviceExternalMemoryHostPropertiesEXT (internal issue 1100). Other Issues: * Add memory semantics validity rules to the <<spirvenv-module-validation, Validation Rules within a Module>> section of the SPIR-V environment appendix, and specify that sequentiality consistency is not supported. This forbids certain cases like "`Load+Release`" that we don't expect to ever be meaningful. * Document mapping of OpenGL Shading Language barriers to SPIR-V scope and semantics in the `GL_KHR_vulkan_glsl` specification. New Extensions: * `VK_EXT_conservative_rasterization`
2018-01-06 01:39:15 +00:00
- This extension interacts with `<<VK_NV_viewport_array2>>`.
Change log for February 27, 2017 Vulkan 1.0.42 spec update: * Bump API patch number and header version number to 42 for this update (the first anniversary edition). Github Issues: * Changed asciidoctor macros so cross-page links in the standalone reference pages function properly (public issue 462). Internal Issues: * Clarified host visibility discussion for slink:VkMemoryType, flink:vkInvalidateMappedMemoryRanges, elink:VkAccessFlagBits, and the <<synchronization-framebuffer-regions,Framebuffer Region Dependencies>> section, removing duplicated information and adding a central definition in the access types section (internal issue 552). * Change description of slink:vkGetPhysicalDeviceSurfacePresentModesKHR::pname:pPresentModes to return an array of values, not structures (internal issue 699). New Extensions: * Add a NOTE to the <<extensions,Layers & Extensions>> chapter describing the experimental status of `KHX` extensions. * Add new Khronos, Khronos Experimental, and vendor Vulkan extensions for release at GDC: ** VK_KHR_descriptor_update_template ** VK_KHR_push_descriptor ** VK_KHX_device_group ** VK_KHX_device_group_creation ** VK_KHX_external_memory ** VK_KHX_external_memory_capabilities ** VK_KHX_external_memory_fd ** VK_KHX_external_memory_win32 ** VK_KHX_external_semaphore ** VK_KHX_external_semaphore_capabilities ** VK_KHX_external_semaphore_fd ** VK_KHX_external_semaphore_win32 ** VK_KHX_multiview ** VK_KHX_win32_keyed_mutex ** VK_EXT_discard_rectangles ** VK_MVK_ios_surface ** VK_MVK_macos_surface ** VK_NVX_multiview_per_view_attributes ** VK_NV_clip_space_w_scaling ** VK_NV_geometry_shader_passthrough ** VK_NV_sample_mask_override_coverage ** VK_NV_viewport_array2 ** VK_NV_viewport_swizzle * Add new GLSL vendor extensions to support new builtin variables: ** GL_EXT_device_group ** GL_EXT_multiview
2017-02-27 06:54:26 +00:00
*Contributors*::
- Jeff Bolz, NVIDIA
- Daniel Koch, NVIDIA
Change log for February 27, 2017 Vulkan 1.0.42 spec update: * Bump API patch number and header version number to 42 for this update (the first anniversary edition). Github Issues: * Changed asciidoctor macros so cross-page links in the standalone reference pages function properly (public issue 462). Internal Issues: * Clarified host visibility discussion for slink:VkMemoryType, flink:vkInvalidateMappedMemoryRanges, elink:VkAccessFlagBits, and the <<synchronization-framebuffer-regions,Framebuffer Region Dependencies>> section, removing duplicated information and adding a central definition in the access types section (internal issue 552). * Change description of slink:vkGetPhysicalDeviceSurfacePresentModesKHR::pname:pPresentModes to return an array of values, not structures (internal issue 699). New Extensions: * Add a NOTE to the <<extensions,Layers & Extensions>> chapter describing the experimental status of `KHX` extensions. * Add new Khronos, Khronos Experimental, and vendor Vulkan extensions for release at GDC: ** VK_KHR_descriptor_update_template ** VK_KHR_push_descriptor ** VK_KHX_device_group ** VK_KHX_device_group_creation ** VK_KHX_external_memory ** VK_KHX_external_memory_capabilities ** VK_KHX_external_memory_fd ** VK_KHX_external_memory_win32 ** VK_KHX_external_semaphore ** VK_KHX_external_semaphore_capabilities ** VK_KHX_external_semaphore_fd ** VK_KHX_external_semaphore_win32 ** VK_KHX_multiview ** VK_KHX_win32_keyed_mutex ** VK_EXT_discard_rectangles ** VK_MVK_ios_surface ** VK_MVK_macos_surface ** VK_NVX_multiview_per_view_attributes ** VK_NV_clip_space_w_scaling ** VK_NV_geometry_shader_passthrough ** VK_NV_sample_mask_override_coverage ** VK_NV_viewport_array2 ** VK_NV_viewport_swizzle * Add new GLSL vendor extensions to support new builtin variables: ** GL_EXT_device_group ** GL_EXT_multiview
2017-02-27 06:54:26 +00:00
This extension adds a new way to write shaders to be used with multiview
subpasses, where the attributes for all views are written out by a single
invocation of the vertex processing stages.
Related SPIR-V and GLSL extensions +SPV_NVX_multiview_per_view_attributes+
and +GL_NVX_multiview_per_view_attributes+ introduce per-view position and
viewport mask attributes arrays, and this extension defines how those
per-view attribute arrays are interpreted by Vulkan.
Pipelines using per-view attributes may: only execute the vertex processing
stages once for all views rather than once per-view, which reduces redundant
shading work.
A subpass creation flag controls whether the subpass uses this extension.
A subpass must: either exclusively use this extension or not use it at all.
Some Vulkan implementations only support the position attribute varying
between views in the X component.
A subpass can declare via a second creation flag whether all pipelines
compiled for this subpass will obey this restriction.
Shaders that use the new per-view outputs (e.g. code:gl_PositionPerViewNV)
must: also write the non-per-view output (code:gl_Position), and the values
Change log for November 27, 2017 Vulkan 1.0.66 spec update: * Bump API patch number and header version number to 66 for this update. Github Issues: * Clarified how and when ename:VK_ERROR_TOO_MANY_OBJECTS is generated in flink:vkAllocate Memory, and remove incorrect valid usage statement about exceeding the API limit (public issue 356). * Minor clarification of the description of flink:vkUpdateDescriptorSetWithTemplateKHR::pname:descriptorUpdateTemplate (public issue 564). * Minor fixes for flink:vkCmdSetViewportWScalingNV (public pull request 588). * Fix random name markup issues (public pull request 603). * Fix code:BuiltIn decoration typo in the <<fxvertex-attrib, Vertex Attributes>> section (public pull request 606). * Fix synchronization language following the definition of flink:vkAcquireNextImageKHR (public issue 607). * Restore descriptions of several commands and structures missing from the generated spec due to a mistyped asciidoctor conditional (public issue 612). * Fix 1.0.41 changelog to refer to public issues 403/404 (public issue 618). Internal Issues: * Refactor valid usage statements with internal conditionals in `copies.txt`, `pipelines.txt`, `renderpass.txt`, and `resources.txt` so each branch of the conditional appears as a standalone statement which can contain a separate VUID. This should have no impact on the generated specs, but is necessary given the present state of the VU extractor and the validation layer code that consumes them (internal issue 1043). * Fix VkQueueGlobalPriorityEXT enum values missing _EXT suffix (internal issue 1045). * Clarified initial ownership of resources bound to shared memory objects, (internal issue 1068). * Fix duplicated valid usage ID tag for flink:vkCmdCopyImage, and make the required layouts include ename:VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIONAL in both cases (internal issue 1084). Other Issues: * Remove the noise functions from GLSL for SPIR-V for Vulkan in the `GL_KHR_vulkan_glsl.txt` extension. New Extensions: * `VK_EXT_external_memory_host` * `VK_EXT_external_memory_dma_buf` * `VK_EXT_queue_family_foreign`
2017-11-27 09:07:06 +00:00
written must: be such that `gl_Position =
gl_PositionPerViewNV[gl_ViewIndex]` for all views in the subpass.
Change log for February 27, 2017 Vulkan 1.0.42 spec update: * Bump API patch number and header version number to 42 for this update (the first anniversary edition). Github Issues: * Changed asciidoctor macros so cross-page links in the standalone reference pages function properly (public issue 462). Internal Issues: * Clarified host visibility discussion for slink:VkMemoryType, flink:vkInvalidateMappedMemoryRanges, elink:VkAccessFlagBits, and the <<synchronization-framebuffer-regions,Framebuffer Region Dependencies>> section, removing duplicated information and adding a central definition in the access types section (internal issue 552). * Change description of slink:vkGetPhysicalDeviceSurfacePresentModesKHR::pname:pPresentModes to return an array of values, not structures (internal issue 699). New Extensions: * Add a NOTE to the <<extensions,Layers & Extensions>> chapter describing the experimental status of `KHX` extensions. * Add new Khronos, Khronos Experimental, and vendor Vulkan extensions for release at GDC: ** VK_KHR_descriptor_update_template ** VK_KHR_push_descriptor ** VK_KHX_device_group ** VK_KHX_device_group_creation ** VK_KHX_external_memory ** VK_KHX_external_memory_capabilities ** VK_KHX_external_memory_fd ** VK_KHX_external_memory_win32 ** VK_KHX_external_semaphore ** VK_KHX_external_semaphore_capabilities ** VK_KHX_external_semaphore_fd ** VK_KHX_external_semaphore_win32 ** VK_KHX_multiview ** VK_KHX_win32_keyed_mutex ** VK_EXT_discard_rectangles ** VK_MVK_ios_surface ** VK_MVK_macos_surface ** VK_NVX_multiview_per_view_attributes ** VK_NV_clip_space_w_scaling ** VK_NV_geometry_shader_passthrough ** VK_NV_sample_mask_override_coverage ** VK_NV_viewport_array2 ** VK_NV_viewport_swizzle * Add new GLSL vendor extensions to support new builtin variables: ** GL_EXT_device_group ** GL_EXT_multiview
2017-02-27 06:54:26 +00:00
Implementations are free to either use the per-view outputs or the
non-per-view outputs, whichever would be more efficient.
Change log for January 5, 2018 Vulkan 1.0.67 spec update: * Bump API patch number and header version number to 67 for this update. * Update copyright dates to 2018 Github Issues: * Fix texture lookup functions in `GL_KHR_vulkan_glsl` specification (public pull request 363). * Clarify the state waited semaphores are left in when a call to flink:vkQueuePresentKHR fails (public issue 572). * Cleanup descriptions of slink:VkObjectTablePushConstantEntryNVX and slink:VkObjectTableDescriptorSetEntryNVX (public issue 583) * Remove redundant flink:vkCmdSetDiscardRectangleEXT valid usage statements (public pull 586). * Make dynamic state array length valid usage statements implicit for flink:vkCmdSetViewportWScalingNV, flink:vkCmdSetDiscardRectangleEXT, and flink:vkCmdSetViewport (public pull 589). * Clarify meaning of window extent (0,0) in slink:VkSwapchainKHR for the Windows and X11 platforms, in their respective extensions (public issue 590). * Allow flink:vkGetPastPresentationTimingGOOGLE to return ename:VK_INCOMPLETE (public issue 604). * Add synchronization valid usage statements to flink:vkAcquireNextImage (public pull 611). * Fix some broken external links and internal xrefs (public pull 613). * Clean up slink:VkViewport valid usage statements in the presence or absence of relevant extensions (public pull 623). * Remove ename:VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL_KHR token from VK_KHR_maintenance2 from the non-extension VU path for slink:VkGraphicsPipelineCreateInfo (public issue 628). * Miscellaneous minor markup fixes - extension name strings (public pull 631), Notes (pull 633), queue names emitted by generator scripts (pull 634), block formatting in slink:VkDescriptorUpdateTemplateEntryKHR (pull 635), ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG (pull 641), quotes and apostrophes (pull 643), * Miscellaneous minor grammar fixes (public pull 644). * Fix markup macros so usage like ptext:*Src* works (public pull 647). Internal Issues: * Clarify in the `VK_KHR_surface` and `VK_KHR_swapchain` extensions that parameter combinations which aren't supported for normal images are also unsupported for presentable images, even if the parameter values are individually supported as reported by the surface capability queries (internal issue 1029). * Fixed XML typo in the valid value field of the pname:sType member of slink:VkPhysicalDeviceExternalMemoryHostPropertiesEXT (internal issue 1100). Other Issues: * Add memory semantics validity rules to the <<spirvenv-module-validation, Validation Rules within a Module>> section of the SPIR-V environment appendix, and specify that sequentiality consistency is not supported. This forbids certain cases like "`Load+Release`" that we don't expect to ever be meaningful. * Document mapping of OpenGL Shading Language barriers to SPIR-V scope and semantics in the `GL_KHR_vulkan_glsl` specification. New Extensions: * `VK_EXT_conservative_rasterization`
2018-01-06 01:39:15 +00:00
If `<<VK_NV_viewport_array2>>` is not also supported and enabled, the
per-view viewport mask must: not be used.
Change log for February 27, 2017 Vulkan 1.0.42 spec update: * Bump API patch number and header version number to 42 for this update (the first anniversary edition). Github Issues: * Changed asciidoctor macros so cross-page links in the standalone reference pages function properly (public issue 462). Internal Issues: * Clarified host visibility discussion for slink:VkMemoryType, flink:vkInvalidateMappedMemoryRanges, elink:VkAccessFlagBits, and the <<synchronization-framebuffer-regions,Framebuffer Region Dependencies>> section, removing duplicated information and adding a central definition in the access types section (internal issue 552). * Change description of slink:vkGetPhysicalDeviceSurfacePresentModesKHR::pname:pPresentModes to return an array of values, not structures (internal issue 699). New Extensions: * Add a NOTE to the <<extensions,Layers & Extensions>> chapter describing the experimental status of `KHX` extensions. * Add new Khronos, Khronos Experimental, and vendor Vulkan extensions for release at GDC: ** VK_KHR_descriptor_update_template ** VK_KHR_push_descriptor ** VK_KHX_device_group ** VK_KHX_device_group_creation ** VK_KHX_external_memory ** VK_KHX_external_memory_capabilities ** VK_KHX_external_memory_fd ** VK_KHX_external_memory_win32 ** VK_KHX_external_semaphore ** VK_KHX_external_semaphore_capabilities ** VK_KHX_external_semaphore_fd ** VK_KHX_external_semaphore_win32 ** VK_KHX_multiview ** VK_KHX_win32_keyed_mutex ** VK_EXT_discard_rectangles ** VK_MVK_ios_surface ** VK_MVK_macos_surface ** VK_NVX_multiview_per_view_attributes ** VK_NV_clip_space_w_scaling ** VK_NV_geometry_shader_passthrough ** VK_NV_sample_mask_override_coverage ** VK_NV_viewport_array2 ** VK_NV_viewport_swizzle * Add new GLSL vendor extensions to support new builtin variables: ** GL_EXT_device_group ** GL_EXT_multiview
2017-02-27 06:54:26 +00:00
=== New Object Types
None.
=== New Enum Constants
Change log for June 4, 2017 Vulkan 1.0.51 spec update: * Bump API patch number and header version number to 51 for this update. Github Issues: * Add Valid Usage statement to flink:vkCmdResolveImage to require that source and destination image formats match (public issue 492). * Specify that a code:char* parameter must: be a valid null-terminated string in the <<fundamentals-implicit-validity, implicit valid usage>> section (public issue 494). * Removed unnecessary VU for slink:VkPhysicalDeviceFeatures which is covered by ename:VK_ERROR_FEATURE_NOT_PRESENT already (public issue 496). * Clarify valid usage of pname:pQueueFamilyIndices in slink:VkBufferCreateInfo, slink:VkImageCreateInfo, and slink:VkSwapchainCreateInfoKHR (public issue 501). * Document that dependencies of enabled extensions must also be enabled in the <<extended-functionality-extensions-dependencies, Extension Dependencies>> section (public issue 507). Internal Issues: * Change slink:VkMappedMemoryRange valid usage to allow pname:offset + pname:size == size of the allocation. Also, if ename:VK_WHOLE_SIZE is used, require the end of the mapping to be aligned to a multiple of pname:nonCoherentAtomSize (internal issue 611). * Add issue to `VK_KHR_win32_surface` about reusing window objects from a different graphics API or Vulkan ICD (internal issue 639). * Require locations on user in/out in `GL_KHR_vulkan_glsl` (internal issue 783). * Added version info to the json validation output, and updated the schema to match (internal issue 838). * Restructure enumerated type descriptions separately from the command or structure they are used in, allowing better reference page generation (internal issue 841). * Re-sort extension appendices to be in alphabetical order within each author ID section. * Fix enum naming and clarify behavior for `VK_NVX_device_generated_commands` extension. New Extensions:
2017-06-05 03:48:43 +00:00
* Extending elink:VkStructureType
Change log for February 27, 2017 Vulkan 1.0.42 spec update: * Bump API patch number and header version number to 42 for this update (the first anniversary edition). Github Issues: * Changed asciidoctor macros so cross-page links in the standalone reference pages function properly (public issue 462). Internal Issues: * Clarified host visibility discussion for slink:VkMemoryType, flink:vkInvalidateMappedMemoryRanges, elink:VkAccessFlagBits, and the <<synchronization-framebuffer-regions,Framebuffer Region Dependencies>> section, removing duplicated information and adding a central definition in the access types section (internal issue 552). * Change description of slink:vkGetPhysicalDeviceSurfacePresentModesKHR::pname:pPresentModes to return an array of values, not structures (internal issue 699). New Extensions: * Add a NOTE to the <<extensions,Layers & Extensions>> chapter describing the experimental status of `KHX` extensions. * Add new Khronos, Khronos Experimental, and vendor Vulkan extensions for release at GDC: ** VK_KHR_descriptor_update_template ** VK_KHR_push_descriptor ** VK_KHX_device_group ** VK_KHX_device_group_creation ** VK_KHX_external_memory ** VK_KHX_external_memory_capabilities ** VK_KHX_external_memory_fd ** VK_KHX_external_memory_win32 ** VK_KHX_external_semaphore ** VK_KHX_external_semaphore_capabilities ** VK_KHX_external_semaphore_fd ** VK_KHX_external_semaphore_win32 ** VK_KHX_multiview ** VK_KHX_win32_keyed_mutex ** VK_EXT_discard_rectangles ** VK_MVK_ios_surface ** VK_MVK_macos_surface ** VK_NVX_multiview_per_view_attributes ** VK_NV_clip_space_w_scaling ** VK_NV_geometry_shader_passthrough ** VK_NV_sample_mask_override_coverage ** VK_NV_viewport_array2 ** VK_NV_viewport_swizzle * Add new GLSL vendor extensions to support new builtin variables: ** GL_EXT_device_group ** GL_EXT_multiview
2017-02-27 06:54:26 +00:00
** ename:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX
Change log for June 4, 2017 Vulkan 1.0.51 spec update: * Bump API patch number and header version number to 51 for this update. Github Issues: * Add Valid Usage statement to flink:vkCmdResolveImage to require that source and destination image formats match (public issue 492). * Specify that a code:char* parameter must: be a valid null-terminated string in the <<fundamentals-implicit-validity, implicit valid usage>> section (public issue 494). * Removed unnecessary VU for slink:VkPhysicalDeviceFeatures which is covered by ename:VK_ERROR_FEATURE_NOT_PRESENT already (public issue 496). * Clarify valid usage of pname:pQueueFamilyIndices in slink:VkBufferCreateInfo, slink:VkImageCreateInfo, and slink:VkSwapchainCreateInfoKHR (public issue 501). * Document that dependencies of enabled extensions must also be enabled in the <<extended-functionality-extensions-dependencies, Extension Dependencies>> section (public issue 507). Internal Issues: * Change slink:VkMappedMemoryRange valid usage to allow pname:offset + pname:size == size of the allocation. Also, if ename:VK_WHOLE_SIZE is used, require the end of the mapping to be aligned to a multiple of pname:nonCoherentAtomSize (internal issue 611). * Add issue to `VK_KHR_win32_surface` about reusing window objects from a different graphics API or Vulkan ICD (internal issue 639). * Require locations on user in/out in `GL_KHR_vulkan_glsl` (internal issue 783). * Added version info to the json validation output, and updated the schema to match (internal issue 838). * Restructure enumerated type descriptions separately from the command or structure they are used in, allowing better reference page generation (internal issue 841). * Re-sort extension appendices to be in alphabetical order within each author ID section. * Fix enum naming and clarify behavior for `VK_NVX_device_generated_commands` extension. New Extensions:
2017-06-05 03:48:43 +00:00
* Extending elink:VkSubpassDescriptionFlagBits
Change log for February 27, 2017 Vulkan 1.0.42 spec update: * Bump API patch number and header version number to 42 for this update (the first anniversary edition). Github Issues: * Changed asciidoctor macros so cross-page links in the standalone reference pages function properly (public issue 462). Internal Issues: * Clarified host visibility discussion for slink:VkMemoryType, flink:vkInvalidateMappedMemoryRanges, elink:VkAccessFlagBits, and the <<synchronization-framebuffer-regions,Framebuffer Region Dependencies>> section, removing duplicated information and adding a central definition in the access types section (internal issue 552). * Change description of slink:vkGetPhysicalDeviceSurfacePresentModesKHR::pname:pPresentModes to return an array of values, not structures (internal issue 699). New Extensions: * Add a NOTE to the <<extensions,Layers & Extensions>> chapter describing the experimental status of `KHX` extensions. * Add new Khronos, Khronos Experimental, and vendor Vulkan extensions for release at GDC: ** VK_KHR_descriptor_update_template ** VK_KHR_push_descriptor ** VK_KHX_device_group ** VK_KHX_device_group_creation ** VK_KHX_external_memory ** VK_KHX_external_memory_capabilities ** VK_KHX_external_memory_fd ** VK_KHX_external_memory_win32 ** VK_KHX_external_semaphore ** VK_KHX_external_semaphore_capabilities ** VK_KHX_external_semaphore_fd ** VK_KHX_external_semaphore_win32 ** VK_KHX_multiview ** VK_KHX_win32_keyed_mutex ** VK_EXT_discard_rectangles ** VK_MVK_ios_surface ** VK_MVK_macos_surface ** VK_NVX_multiview_per_view_attributes ** VK_NV_clip_space_w_scaling ** VK_NV_geometry_shader_passthrough ** VK_NV_sample_mask_override_coverage ** VK_NV_viewport_array2 ** VK_NV_viewport_swizzle * Add new GLSL vendor extensions to support new builtin variables: ** GL_EXT_device_group ** GL_EXT_multiview
2017-02-27 06:54:26 +00:00
** ename:VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX
** ename:VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX
=== New Enums
None.
=== New Structures
* slink:VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX
=== New Functions
None.
=== New Built-In Variables
Change log for February 27, 2017 Vulkan 1.0.42 spec update: * Bump API patch number and header version number to 42 for this update (the first anniversary edition). Github Issues: * Changed asciidoctor macros so cross-page links in the standalone reference pages function properly (public issue 462). Internal Issues: * Clarified host visibility discussion for slink:VkMemoryType, flink:vkInvalidateMappedMemoryRanges, elink:VkAccessFlagBits, and the <<synchronization-framebuffer-regions,Framebuffer Region Dependencies>> section, removing duplicated information and adding a central definition in the access types section (internal issue 552). * Change description of slink:vkGetPhysicalDeviceSurfacePresentModesKHR::pname:pPresentModes to return an array of values, not structures (internal issue 699). New Extensions: * Add a NOTE to the <<extensions,Layers & Extensions>> chapter describing the experimental status of `KHX` extensions. * Add new Khronos, Khronos Experimental, and vendor Vulkan extensions for release at GDC: ** VK_KHR_descriptor_update_template ** VK_KHR_push_descriptor ** VK_KHX_device_group ** VK_KHX_device_group_creation ** VK_KHX_external_memory ** VK_KHX_external_memory_capabilities ** VK_KHX_external_memory_fd ** VK_KHX_external_memory_win32 ** VK_KHX_external_semaphore ** VK_KHX_external_semaphore_capabilities ** VK_KHX_external_semaphore_fd ** VK_KHX_external_semaphore_win32 ** VK_KHX_multiview ** VK_KHX_win32_keyed_mutex ** VK_EXT_discard_rectangles ** VK_MVK_ios_surface ** VK_MVK_macos_surface ** VK_NVX_multiview_per_view_attributes ** VK_NV_clip_space_w_scaling ** VK_NV_geometry_shader_passthrough ** VK_NV_sample_mask_override_coverage ** VK_NV_viewport_array2 ** VK_NV_viewport_swizzle * Add new GLSL vendor extensions to support new builtin variables: ** GL_EXT_device_group ** GL_EXT_multiview
2017-02-27 06:54:26 +00:00
* <<interfaces-builtin-variables-positionperview,code:PositionPerViewNV>>
* <<interfaces-builtin-variables-viewportmaskperview,code:ViewportMaskPerViewNV>>
=== New SPIR-V Capabilities
Change log for February 27, 2017 Vulkan 1.0.42 spec update: * Bump API patch number and header version number to 42 for this update (the first anniversary edition). Github Issues: * Changed asciidoctor macros so cross-page links in the standalone reference pages function properly (public issue 462). Internal Issues: * Clarified host visibility discussion for slink:VkMemoryType, flink:vkInvalidateMappedMemoryRanges, elink:VkAccessFlagBits, and the <<synchronization-framebuffer-regions,Framebuffer Region Dependencies>> section, removing duplicated information and adding a central definition in the access types section (internal issue 552). * Change description of slink:vkGetPhysicalDeviceSurfacePresentModesKHR::pname:pPresentModes to return an array of values, not structures (internal issue 699). New Extensions: * Add a NOTE to the <<extensions,Layers & Extensions>> chapter describing the experimental status of `KHX` extensions. * Add new Khronos, Khronos Experimental, and vendor Vulkan extensions for release at GDC: ** VK_KHR_descriptor_update_template ** VK_KHR_push_descriptor ** VK_KHX_device_group ** VK_KHX_device_group_creation ** VK_KHX_external_memory ** VK_KHX_external_memory_capabilities ** VK_KHX_external_memory_fd ** VK_KHX_external_memory_win32 ** VK_KHX_external_semaphore ** VK_KHX_external_semaphore_capabilities ** VK_KHX_external_semaphore_fd ** VK_KHX_external_semaphore_win32 ** VK_KHX_multiview ** VK_KHX_win32_keyed_mutex ** VK_EXT_discard_rectangles ** VK_MVK_ios_surface ** VK_MVK_macos_surface ** VK_NVX_multiview_per_view_attributes ** VK_NV_clip_space_w_scaling ** VK_NV_geometry_shader_passthrough ** VK_NV_sample_mask_override_coverage ** VK_NV_viewport_array2 ** VK_NV_viewport_swizzle * Add new GLSL vendor extensions to support new builtin variables: ** GL_EXT_device_group ** GL_EXT_multiview
2017-02-27 06:54:26 +00:00
* <<spirvenv-capabilities-table-perviewattributes,code:PerViewAttributesNV>>
=== Issues
None.
=== Examples
[source,c]
---------------------------------------------------
#version 450 core
#extension GL_KHX_multiview : enable
#extension GL_NVX_multiview_per_view_attributes : enable
layout(location = 0) in vec4 position;
layout(set = 0, binding = 0) uniform Block { mat4 mvpPerView[2]; } buf;
void main()
{
// Output both per-view positions and gl_Position as a function
// of gl_ViewIndex
gl_PositionPerViewNV[0] = buf.mvpPerView[0] * position;
gl_PositionPerViewNV[1] = buf.mvpPerView[1] * position;
gl_Position = buf.mvpPerView[gl_ViewIndex] * position;
}
---------------------------------------------------
=== Version History
* Revision 1, 2017-01-13 (Jeff Bolz)
- Internal revisions