Vulkan-Docs/appendices/VK_KHR_incremental_present.txt

104 lines
3.0 KiB
Plaintext
Raw Normal View History

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
// Copyright (c) 2014-2018 Khronos Group. This work is licensed under a
Change log for June 24, 2017 Vulkan 1.0.53 spec update: * Bump API patch number and header version number to 53 for this update. Github Issues: Internal Issues: * Clarify mappings of coordinates for mutable, compatible image views in slink:VkImageViewCreateInfo (internal issue 815). * Make ename:VK_BIND_SFR_BIT require a logical device with multiple physical devices, so that standard sparse image block dimensions are only required on systems that support multi-GPU (internal issue 835). * Convert all files from use of // refBegin .. // refEnd comments to delimit ref pages, to use of open blocks, and update style guide accordingly (internal issue 839). * Add valid usage for slink:VkWriteDescriptorSet when performing updates to a ename:VK_STORAGE_IMAGE descriptor with layout ename:VK_IMAGE_LAYOUT_GENERAL. * Add a hack to the validity generator script to support an odd interaction between flink:vkCmdFillBuffer and an extension (internal issue 853). * Remove redundant text describing slink:VkBufferCreateInfo::pname:usage, which was already covered by implicit valid usage (internal issue 854). * Update implicit validity generator script to properly handle the pname:sType and pname:pNext members of "returnedonly" structures (internal issue 874). * Note that slink:VkApplicationInfo::pname:pApplicationName & slink:VkApplicationInfo::pname:pEngineName are optional, and add missing implicit valid usage statements for flink:vkDestroyInstance. * Added missing valid usage for flink:vkCmdWriteTimestamp to require a timestamp query pool. * Simplify and/or split "`non-atomic`" valid usage statements. New Extensions: * `VK_AMD_gpu_shader_int16` * `VK_EXT_blend_operation_advanced` * `VK_EXT_sampler_filter_minmax` * `VK_NV_framebuffer_mixed_samples` ----------------------------------------------------- Note: the 1.0.52 spec wasn't published on github, so the 1.0.53 release combines both change sets. ----------------------------------------------------- Change log for June 13, 2017 Vulkan 1.0.52 spec update: * Bump API patch number and header version number to 52 for this update. Github Issues: Internal Issues: * Clarify behavior when non-coherent memory has <<memory-device-unmap-does-not-flush, not been flushed before being unmapped>> (internal issue 819). * Fix description of code:WorkgroupSize builtin to note it decorates an object, not a variable (internal issue 836). * Fix asciidoc attributes so that trailing '{plus}' symbols in [eq] style equations are rendered properly (internal issue 845). * Add language to the "`Extension Handles, Objects, Enums, and Typedefs`" section of the Procedures and Conventions document stating that any new handle type requires a corresponding entry in the elink:VkObjectType enumerated type (internal issue 856). * Update style guide to use slink macro for Vulkan handle type names, and define narrow conditions under which to use the *name and *text macros instead of *link (internal issue 886). * Add a dependency of the <<VK_KHX_device_group,VK_KHX_device_group>> extension on VK_KHX_device_group_creation to +vk.xml+ and the extension appendix. * Change the copyright on Vulkan specification asciidoc *source* files to CC-BY 4.0, and update the proprietary Khronos copyright applied to the generated *output* formats (internal issue 327). This enables broader re-use and modification of the Vulkan specification sources, while not affecting the Reciprocal IP License between Vulkan Adopters and Working Group Members. New Extensions: * `VK_NV_fill_rectangle` * `VK_NV_fragment_coverage_to_color`
2017-06-27 02:32:10 +00:00
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/
Change log for March 31, 2017 Vulkan 1.0.46 spec update: * Bump API patch number and header version number to 46 for this update. Github Issues: * Add language to the <<fundamentals-validusage-enums, Valid Usage for Enumerated Types>> section allowing values to be returned from Vulkan that are not present in extensions explicitly enabled by the application, similar to existing language for bit flags in the <<fundamentals-validusage-flags, Valid Usage for Flags>> section (public issue 442). * *Important*: run `gem update --pre asciidoctor-pdf` before trying to build this version of the spec - 1.5.0.alpha15 is required for this change. Removes the monkey patch currently used to draw valid usage blocks across multiple pages which had numerous issues. A fixed version was incorporated into Asciidoctor-PDF for the latest release, so the monkey patch or any variant thereof is no longer required (public issue 465). Internal Issues: * Add ename:VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR_EXT to `VK_EXT_debug_report` extension * Fix ptext:pNext member of slink:VkPhysicalDeviceDiscardRectanglePropertiesEXT to be a non-const pointer. Properties structures return values, so the chain should be non-const. * Explicitly remove gl_NumSamples from the `GL_KHR_vulkan_glsl` extension, against 1.0 (internal issue 612). * Add Valid Usage statements requiring that each structure type valid in a ptext:pNext chain must: not appear more than once in a chain (internal issue 752). * Use ename:VK_USE_PLATFORM_WIN32_KHX in the `VK_KHX_external_memory_win32` extension, rather than etext:_KHR (internal issue 754). New Extensions: * `VK_KHR_incremental_present`
2017-03-31 23:06:31 +00:00
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_KHR_incremental_present.txt[]
Change log for March 31, 2017 Vulkan 1.0.46 spec update: * Bump API patch number and header version number to 46 for this update. Github Issues: * Add language to the <<fundamentals-validusage-enums, Valid Usage for Enumerated Types>> section allowing values to be returned from Vulkan that are not present in extensions explicitly enabled by the application, similar to existing language for bit flags in the <<fundamentals-validusage-flags, Valid Usage for Flags>> section (public issue 442). * *Important*: run `gem update --pre asciidoctor-pdf` before trying to build this version of the spec - 1.5.0.alpha15 is required for this change. Removes the monkey patch currently used to draw valid usage blocks across multiple pages which had numerous issues. A fixed version was incorporated into Asciidoctor-PDF for the latest release, so the monkey patch or any variant thereof is no longer required (public issue 465). Internal Issues: * Add ename:VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR_EXT to `VK_EXT_debug_report` extension * Fix ptext:pNext member of slink:VkPhysicalDeviceDiscardRectanglePropertiesEXT to be a non-const pointer. Properties structures return values, so the chain should be non-const. * Explicitly remove gl_NumSamples from the `GL_KHR_vulkan_glsl` extension, against 1.0 (internal issue 612). * Add Valid Usage statements requiring that each structure type valid in a ptext:pNext chain must: not appear more than once in a chain (internal issue 752). * Use ename:VK_USE_PLATFORM_WIN32_KHX in the `VK_KHX_external_memory_win32` extension, rather than etext:_KHR (internal issue 754). New Extensions: * `VK_KHR_incremental_present`
2017-03-31 23:06:31 +00:00
*Last Modified Date*::
2016-11-02
*IP Status*::
No known IP claims.
*Contributors*::
- Ian Elliott, Google
- Jesse Hall, Google
- Alon Or-bach, Samsung
- James Jones, NVIDIA
- Daniel Rakos, AMD
- Ray Smith, ARM
- Mika Isojarvi, Google
- Jeff Juliano, NVIDIA
- Jeff Bolz, NVIDIA
This device extension extends slink:vkQueuePresentKHR, from the
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
`<<VK_KHR_swapchain>>` extension, allowing an application to specify a list
of rectangular, modified regions of each image to present.
Change log for March 31, 2017 Vulkan 1.0.46 spec update: * Bump API patch number and header version number to 46 for this update. Github Issues: * Add language to the <<fundamentals-validusage-enums, Valid Usage for Enumerated Types>> section allowing values to be returned from Vulkan that are not present in extensions explicitly enabled by the application, similar to existing language for bit flags in the <<fundamentals-validusage-flags, Valid Usage for Flags>> section (public issue 442). * *Important*: run `gem update --pre asciidoctor-pdf` before trying to build this version of the spec - 1.5.0.alpha15 is required for this change. Removes the monkey patch currently used to draw valid usage blocks across multiple pages which had numerous issues. A fixed version was incorporated into Asciidoctor-PDF for the latest release, so the monkey patch or any variant thereof is no longer required (public issue 465). Internal Issues: * Add ename:VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR_EXT to `VK_EXT_debug_report` extension * Fix ptext:pNext member of slink:VkPhysicalDeviceDiscardRectanglePropertiesEXT to be a non-const pointer. Properties structures return values, so the chain should be non-const. * Explicitly remove gl_NumSamples from the `GL_KHR_vulkan_glsl` extension, against 1.0 (internal issue 612). * Add Valid Usage statements requiring that each structure type valid in a ptext:pNext chain must: not appear more than once in a chain (internal issue 752). * Use ename:VK_USE_PLATFORM_WIN32_KHX in the `VK_KHX_external_memory_win32` extension, rather than etext:_KHR (internal issue 754). New Extensions: * `VK_KHR_incremental_present`
2017-03-31 23:06:31 +00:00
This should be used in situations where an application is only changing a
small portion of the presentable images within a swapchain, since it enables
the presentation engine to avoid wasting time presenting parts of the
surface that haven't changed.
This extension is leveraged from the +EGL_KHR_swap_buffers_with_damage+
extension.
=== 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 March 31, 2017 Vulkan 1.0.46 spec update: * Bump API patch number and header version number to 46 for this update. Github Issues: * Add language to the <<fundamentals-validusage-enums, Valid Usage for Enumerated Types>> section allowing values to be returned from Vulkan that are not present in extensions explicitly enabled by the application, similar to existing language for bit flags in the <<fundamentals-validusage-flags, Valid Usage for Flags>> section (public issue 442). * *Important*: run `gem update --pre asciidoctor-pdf` before trying to build this version of the spec - 1.5.0.alpha15 is required for this change. Removes the monkey patch currently used to draw valid usage blocks across multiple pages which had numerous issues. A fixed version was incorporated into Asciidoctor-PDF for the latest release, so the monkey patch or any variant thereof is no longer required (public issue 465). Internal Issues: * Add ename:VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR_EXT to `VK_EXT_debug_report` extension * Fix ptext:pNext member of slink:VkPhysicalDeviceDiscardRectanglePropertiesEXT to be a non-const pointer. Properties structures return values, so the chain should be non-const. * Explicitly remove gl_NumSamples from the `GL_KHR_vulkan_glsl` extension, against 1.0 (internal issue 612). * Add Valid Usage statements requiring that each structure type valid in a ptext:pNext chain must: not appear more than once in a chain (internal issue 752). * Use ename:VK_USE_PLATFORM_WIN32_KHX in the `VK_KHX_external_memory_win32` extension, rather than etext:_KHR (internal issue 754). New Extensions: * `VK_KHR_incremental_present`
2017-03-31 23:06:31 +00:00
** ename:VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR
=== New Enums
None.
=== New Structures
* slink:VkRectLayerKHR
* slink:VkPresentRegionKHR
* slink:VkPresentRegionsKHR
=== New Functions
None.
=== Examples
None.
=== Issues
1) How should we handle steroescopic-3D swapchains? We need to add a layer
for each rectangle.
One approach is to create another struct that contains the slink:VkRect2D
plus layer, and have slink:VkPresentRegionsKHR point to an array of that
struct.
Another approach is to have two parallel arrays, ptext:pRectangles and
ptext:pLayers, where ptext:pRectangles[i] and ptext:pLayers[i] must be used
together.
Change log for March 31, 2017 Vulkan 1.0.46 spec update: * Bump API patch number and header version number to 46 for this update. Github Issues: * Add language to the <<fundamentals-validusage-enums, Valid Usage for Enumerated Types>> section allowing values to be returned from Vulkan that are not present in extensions explicitly enabled by the application, similar to existing language for bit flags in the <<fundamentals-validusage-flags, Valid Usage for Flags>> section (public issue 442). * *Important*: run `gem update --pre asciidoctor-pdf` before trying to build this version of the spec - 1.5.0.alpha15 is required for this change. Removes the monkey patch currently used to draw valid usage blocks across multiple pages which had numerous issues. A fixed version was incorporated into Asciidoctor-PDF for the latest release, so the monkey patch or any variant thereof is no longer required (public issue 465). Internal Issues: * Add ename:VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR_EXT to `VK_EXT_debug_report` extension * Fix ptext:pNext member of slink:VkPhysicalDeviceDiscardRectanglePropertiesEXT to be a non-const pointer. Properties structures return values, so the chain should be non-const. * Explicitly remove gl_NumSamples from the `GL_KHR_vulkan_glsl` extension, against 1.0 (internal issue 612). * Add Valid Usage statements requiring that each structure type valid in a ptext:pNext chain must: not appear more than once in a chain (internal issue 752). * Use ename:VK_USE_PLATFORM_WIN32_KHX in the `VK_KHX_external_memory_win32` extension, rather than etext:_KHR (internal issue 754). New Extensions: * `VK_KHR_incremental_present`
2017-03-31 23:06:31 +00:00
Which approach should we use, and if the array of a new structure, what
should that be called?
*RESOLVED*: Create a new structure, which is a slink:VkRect2D plus a layer,
and will be called slink:VkRectLayerKHR.
2) Where is the origin of the slink:VkRectLayerKHR?
*RESOLVED*: The upper left corner of the presentable image(s) of the
swapchain, per the definition of framebuffer coordinates.
3) Does the rectangular region, slink:VkRectLayerKHR, specify pixels of the
swapchain's image(s), or of the surface?
*RESOLVED*: Of the image(s).
Some presentation engines may scale the pixels of a swapchain's image(s) to
the size of the surface.
The size of the swapchain's image(s) will be consistent, where the size of
the surface may vary over time.
4) What if all of the rectangles for a given swapchain contain a width
and/or height of zero?
*RESOLVED*: The application is indicating that no pixels changed since the
last present.
The presentation engine may use such a hint and not update any pixels for
the swapchain.
However, all other semantics of flink:vkQueuePresentKHR must still be
honored, including waiting for semaphores to signal.
=== Version History
* Revision 1, 2016-11-02 (Ian Elliott)
- Internal revisions