summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJon Leech <oddhack@sonic.net>2017-09-14 22:41:33 -0700
committerJon Leech <oddhack@sonic.net>2017-09-14 22:41:33 -0700
commit0cc6bba634aeecb88e4b43f1bdfd84a339c1869e (patch)
tree5a3c31e3387872582b9c9c3cd2c1aff1ba68ae78
parentb02562cdc91e65a2126e1231736d606494317fc7 (diff)
downloadvulkan-spec-0cc6bba634aeecb88e4b43f1bdfd84a339c1869e.zip
vulkan-spec-0cc6bba634aeecb88e4b43f1bdfd84a339c1869e.tar.xz
Change log for September 15, 2017 Vulkan 1.0.61 spec update:
* Bump API patch number and header version number to 61 for this update. Github Issues: * Provide alternate length attributes (altlen=) in the XML schema, for those using length attributes to generate code instead of documentation (public issue 555). * Fix erroneous references to `latex:` being used for asciidoc math markup, rather than `latexmath:` (public pull request 556). * Add author ID to XML for Kazan software renderer (public pull request 557). Internal Issues: * Add the <<fundamentals-abi,Application Binary Interface>> section describing platform ABI requirements and recommendations, add examples of function and function pointer declarations to the <<boilerplate-platform-specific-calling-conventions, Platform-Specific Calling Conventions>> section, and remove related language that existed elsewhere in the specification (internal issue 64). * Describe where to document valid usage interactions of chained structures in the style guide, and fix one case now appearing in slink:VkBufferCreateInfo instead of the child slink:VkDedicatedAllocationBufferCreateInfoNV structure (internal issue 715). * Add example to the style guide of describing enumerated types which are empty when the spec is built without relevant extensions enabled, and apply it to existing examples for elink:VkDescriptorSetLayoutCreateFlagBits and elink:VkSubpassDescriptionFlagBits (internal issue 864). * Add a note to the <<fundamentals-validusage-enums, Valid Usage for Enumerated Types>> section that the special values suffixed with etext:_BEGIN_RANGE, etext:_END_RANGE, etext:_RANGE_SIZE and etext:_MAX_ENUM are not part of the API and should: not be used by applications (internal issue 872). * Added note to flink:vkCmdUpdateBuffers explaining the performance penalty for copies done in this way, and why the upper copy limit is what it is (internal issue 952). * Update `VK_KHX_device_group` to split some functionality into the new `VK_KHR_bind_memory2` extension, and rename that functionality (internal issue 969). * Remove *Status* fields from extension appendices, since they are by definition published and complete by the time they reach the public github repository (internal issue 973). Other Issues: * Update Data Format specification dependency to version 1.2 and change references to DF sections accordingly. * Update XML to make the pname:pAllocator parameter of flink:vkRegisterDeviceEventEXT and flink:vkRegisterDisplayEventEXT in the `VK_EXT_display_control` extension as optional. New Extensions: * `VK_KHR_bind_memory2` * `VK_KHR_image_format_list` * `VK_KHR_maintenance2` * `VK_KHR_sampler_ycbcr_conversion`
-rw-r--r--.gitignore1
-rw-r--r--ChangeLog.txt64
-rw-r--r--doc/specs/vulkan/Makefile2
-rw-r--r--doc/specs/vulkan/appendices/VK_AMD_mixed_attachment_samples.txt2
-rw-r--r--doc/specs/vulkan/appendices/VK_AMD_shader_fragment_mask.txt13
-rw-r--r--doc/specs/vulkan/appendices/VK_EXT_blend_operation_advanced.txt2
-rw-r--r--doc/specs/vulkan/appendices/VK_EXT_depth_range_unrestricted.txt2
-rw-r--r--doc/specs/vulkan/appendices/VK_EXT_discard_rectangles.txt2
-rw-r--r--doc/specs/vulkan/appendices/VK_EXT_post_depth_coverage.txt2
-rw-r--r--doc/specs/vulkan/appendices/VK_EXT_sampler_filter_minmax.txt2
-rw-r--r--doc/specs/vulkan/appendices/VK_EXT_shader_subgroup_ballot.txt2
-rw-r--r--doc/specs/vulkan/appendices/VK_EXT_shader_subgroup_vote.txt2
-rw-r--r--doc/specs/vulkan/appendices/VK_EXT_shader_viewport_index_layer.txt2
-rw-r--r--doc/specs/vulkan/appendices/VK_EXT_validation_cache.txt1
-rw-r--r--doc/specs/vulkan/appendices/VK_IMG_filter_cubic.txt2
-rw-r--r--doc/specs/vulkan/appendices/VK_KHR_bind_memory2.txt65
-rw-r--r--doc/specs/vulkan/appendices/VK_KHR_dedicated_allocation.txt2
-rw-r--r--doc/specs/vulkan/appendices/VK_KHR_descriptor_update_template.txt2
-rw-r--r--doc/specs/vulkan/appendices/VK_KHR_display.txt2
-rw-r--r--doc/specs/vulkan/appendices/VK_KHR_display_swapchain.txt2
-rw-r--r--doc/specs/vulkan/appendices/VK_KHR_external_fence.txt2
-rw-r--r--doc/specs/vulkan/appendices/VK_KHR_external_fence_capabilities.txt2
-rw-r--r--doc/specs/vulkan/appendices/VK_KHR_external_fence_fd.txt2
-rw-r--r--doc/specs/vulkan/appendices/VK_KHR_external_fence_win32.txt2
-rw-r--r--doc/specs/vulkan/appendices/VK_KHR_external_memory.txt2
-rw-r--r--doc/specs/vulkan/appendices/VK_KHR_external_memory_capabilities.txt2
-rw-r--r--doc/specs/vulkan/appendices/VK_KHR_external_memory_fd.txt2
-rw-r--r--doc/specs/vulkan/appendices/VK_KHR_external_memory_win32.txt2
-rw-r--r--doc/specs/vulkan/appendices/VK_KHR_external_semaphore.txt2
-rw-r--r--doc/specs/vulkan/appendices/VK_KHR_external_semaphore_capabilities.txt2
-rw-r--r--doc/specs/vulkan/appendices/VK_KHR_external_semaphore_fd.txt2
-rw-r--r--doc/specs/vulkan/appendices/VK_KHR_external_semaphore_win32.txt2
-rw-r--r--doc/specs/vulkan/appendices/VK_KHR_get_memory_requirements2.txt2
-rw-r--r--doc/specs/vulkan/appendices/VK_KHR_get_physical_device_properties2.txt2
-rw-r--r--doc/specs/vulkan/appendices/VK_KHR_image_format_list.txt48
-rw-r--r--doc/specs/vulkan/appendices/VK_KHR_maintenance1.txt2
-rw-r--r--doc/specs/vulkan/appendices/VK_KHR_maintenance2.txt139
-rw-r--r--doc/specs/vulkan/appendices/VK_KHR_push_descriptor.txt2
-rw-r--r--doc/specs/vulkan/appendices/VK_KHR_relaxed_block_layout.txt2
-rw-r--r--doc/specs/vulkan/appendices/VK_KHR_sampler_mirror_clamp_to_edge.txt2
-rw-r--r--doc/specs/vulkan/appendices/VK_KHR_sampler_ycbcr_conversion.txt150
-rw-r--r--doc/specs/vulkan/appendices/VK_KHR_shader_draw_parameters.txt2
-rw-r--r--doc/specs/vulkan/appendices/VK_KHR_storage_buffer_storage_class.txt2
-rw-r--r--doc/specs/vulkan/appendices/VK_KHR_variable_pointers.txt2
-rw-r--r--doc/specs/vulkan/appendices/VK_KHR_win32_keyed_mutex.txt2
-rw-r--r--doc/specs/vulkan/appendices/VK_KHX_device_group.txt21
-rw-r--r--doc/specs/vulkan/appendices/VK_KHX_device_group_creation.txt2
-rw-r--r--doc/specs/vulkan/appendices/VK_KHX_multiview.txt2
-rw-r--r--doc/specs/vulkan/appendices/VK_NVX_multiview_per_view_attributes.txt2
-rw-r--r--doc/specs/vulkan/appendices/VK_NV_clip_space_w_scaling.txt2
-rw-r--r--doc/specs/vulkan/appendices/VK_NV_dedicated_allocation.txt2
-rw-r--r--doc/specs/vulkan/appendices/VK_NV_external_memory.txt2
-rw-r--r--doc/specs/vulkan/appendices/VK_NV_external_memory_capabilities.txt2
-rw-r--r--doc/specs/vulkan/appendices/VK_NV_external_memory_win32.txt2
-rw-r--r--doc/specs/vulkan/appendices/VK_NV_fill_rectangle.txt2
-rw-r--r--doc/specs/vulkan/appendices/VK_NV_fragment_coverage_to_color.txt2
-rw-r--r--doc/specs/vulkan/appendices/VK_NV_framebuffer_mixed_samples.txt2
-rw-r--r--doc/specs/vulkan/appendices/VK_NV_geometry_shader_passthrough.txt2
-rw-r--r--doc/specs/vulkan/appendices/VK_NV_glsl_shader.txt2
-rw-r--r--doc/specs/vulkan/appendices/VK_NV_sample_mask_override_coverage.txt2
-rw-r--r--doc/specs/vulkan/appendices/VK_NV_viewport_array2.txt2
-rw-r--r--doc/specs/vulkan/appendices/VK_NV_viewport_swizzle.txt2
-rw-r--r--doc/specs/vulkan/appendices/VK_NV_win32_keyed_mutex.txt2
-rw-r--r--doc/specs/vulkan/appendices/boilerplate.txt16
-rw-r--r--doc/specs/vulkan/appendices/extensions.txt16
-rw-r--r--doc/specs/vulkan/appendices/glossary.txt61
-rw-r--r--doc/specs/vulkan/appendices/spirvenv.txt2
-rw-r--r--doc/specs/vulkan/chapters/VK_KHR_swapchain/wsi.txt6
-rw-r--r--doc/specs/vulkan/chapters/clears.txt28
-rw-r--r--doc/specs/vulkan/chapters/copies.txt332
-rw-r--r--doc/specs/vulkan/chapters/descriptorsets.txt53
-rw-r--r--doc/specs/vulkan/chapters/features.txt850
-rw-r--r--doc/specs/vulkan/chapters/framebuffer.txt6
-rw-r--r--doc/specs/vulkan/chapters/fundamentals.txt84
-rw-r--r--doc/specs/vulkan/chapters/interfaces.txt6
-rw-r--r--doc/specs/vulkan/chapters/introduction.txt6
-rw-r--r--doc/specs/vulkan/chapters/memory.txt14
-rw-r--r--doc/specs/vulkan/chapters/pipelines.txt30
-rw-r--r--doc/specs/vulkan/chapters/primsrast.txt5
-rw-r--r--doc/specs/vulkan/chapters/renderpass.txt134
-rw-r--r--doc/specs/vulkan/chapters/resources.txt975
-rw-r--r--doc/specs/vulkan/chapters/samplers.txt314
-rw-r--r--doc/specs/vulkan/chapters/synchronization.txt10
-rw-r--r--doc/specs/vulkan/chapters/tessellation.txt78
-rw-r--r--doc/specs/vulkan/chapters/textures.txt466
-rw-r--r--doc/specs/vulkan/chapters/vertexpostproc.txt25
-rw-r--r--doc/specs/vulkan/images/chromasamples_420_xcosited_ycosited.svg1191
-rw-r--r--doc/specs/vulkan/images/chromasamples_420_xcosited_ymidpoint.svg1411
-rw-r--r--doc/specs/vulkan/images/chromasamples_420_xmidpoint_ycosited.svg1379
-rw-r--r--doc/specs/vulkan/images/chromasamples_420_xmidpoint_ymidpoint.svg1539
-rw-r--r--doc/specs/vulkan/images/chromasamples_422_cosited.svg1391
-rw-r--r--doc/specs/vulkan/images/chromasamples_422_midpoint.svg1516
-rw-r--r--doc/specs/vulkan/images/fragment_mask.pngbin31820 -> 27063 bytes
-rwxr-xr-xdoc/specs/vulkan/reflow.py2
-rw-r--r--doc/specs/vulkan/registry.txt32
-rw-r--r--doc/specs/vulkan/style/extensions.txt68
-rw-r--r--doc/specs/vulkan/style/markup.txt6
-rw-r--r--doc/specs/vulkan/style/writing.txt42
-rw-r--r--doc/specs/vulkan/styleguide.txt5
-rw-r--r--src/ext_loader/vulkan_ext.c104
-rw-r--r--src/spec/registry.rnc3
-rw-r--r--src/spec/vk.xml284
-rw-r--r--src/vulkan/vulkan.h325
103 files changed, 12971 insertions, 454 deletions
diff --git a/.gitignore b/.gitignore
index 9990d37..5e7c51a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -40,7 +40,6 @@ __pycache__
doc/specs/vulkan/api
doc/specs/vulkan/hostsynctable
doc/specs/vulkan/validity
-doc/specs/vulkan/appendices/meta
# Files generated by extraction from spec source
doc/specs/vulkan/man/PFN*.txt
diff --git a/ChangeLog.txt b/ChangeLog.txt
index 59e53a3..1cbe082 100644
--- a/ChangeLog.txt
+++ b/ChangeLog.txt
@@ -8,6 +8,70 @@ public issues.
-----------------------------------------------------
+Change log for September 15, 2017 Vulkan 1.0.61 spec update:
+
+ * Bump API patch number and header version number to 61 for this update.
+
+Github Issues:
+
+ * Provide alternate length attributes (altlen=) in the XML schema, for
+ those using length attributes to generate code instead of documentation
+ (public issue 555).
+ * Fix erroneous references to `latex:` being used for asciidoc math
+ markup, rather than `latexmath:` (public pull request 556).
+ * Add author ID to XML for Kazan software renderer (public pull request
+ 557).
+
+Internal Issues:
+
+ * Add the <<fundamentals-abi,Application Binary Interface>> section
+ describing platform ABI requirements and recommendations, add examples
+ of function and function pointer declarations to the
+ <<boilerplate-platform-specific-calling-conventions, Platform-Specific
+ Calling Conventions>> section, and remove related language that existed
+ elsewhere in the specification (internal issue 64).
+ * Describe where to document valid usage interactions of chained
+ structures in the style guide, and fix one case now appearing in
+ slink:VkBufferCreateInfo instead of the child
+ slink:VkDedicatedAllocationBufferCreateInfoNV structure (internal issue
+ 715).
+ * Add example to the style guide of describing enumerated types which are
+ empty when the spec is built without relevant extensions enabled, and
+ apply it to existing examples for
+ elink:VkDescriptorSetLayoutCreateFlagBits and
+ elink:VkSubpassDescriptionFlagBits (internal issue 864).
+ * Add a note to the <<fundamentals-validusage-enums, Valid Usage for
+ Enumerated Types>> section that the special values suffixed with
+ etext:_BEGIN_RANGE, etext:_END_RANGE, etext:_RANGE_SIZE and
+ etext:_MAX_ENUM are not part of the API and should: not be used by
+ applications (internal issue 872).
+ * Added note to flink:vkCmdUpdateBuffers explaining the performance
+ penalty for copies done in this way, and why the upper copy limit is
+ what it is (internal issue 952).
+ * Update `VK_KHX_device_group` to split some functionality into the new
+ `VK_KHR_bind_memory2` extension, and rename that functionality (internal
+ issue 969).
+ * Remove *Status* fields from extension appendices, since they are by
+ definition published and complete by the time they reach the public
+ github repository (internal issue 973).
+
+Other Issues:
+
+ * Update Data Format specification dependency to version 1.2 and change
+ references to DF sections accordingly.
+ * Update XML to make the pname:pAllocator parameter of
+ flink:vkRegisterDeviceEventEXT and flink:vkRegisterDisplayEventEXT in
+ the `VK_EXT_display_control` extension as optional.
+
+New Extensions:
+
+ * `VK_KHR_bind_memory2`
+ * `VK_KHR_image_format_list`
+ * `VK_KHR_maintenance2`
+ * `VK_KHR_sampler_ycbcr_conversion`
+
+-----------------------------------------------------
+
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.
diff --git a/doc/specs/vulkan/Makefile b/doc/specs/vulkan/Makefile
index 0c0bb3f..a1caa41 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.60
+SPECREVISION = 1.0.61
# 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_AMD_mixed_attachment_samples.txt b/doc/specs/vulkan/appendices/VK_AMD_mixed_attachment_samples.txt
index 3146d3b..23ad384 100644
--- a/doc/specs/vulkan/appendices/VK_AMD_mixed_attachment_samples.txt
+++ b/doc/specs/vulkan/appendices/VK_AMD_mixed_attachment_samples.txt
@@ -1,7 +1,5 @@
include::meta/VK_AMD_mixed_attachment_samples.txt[]
-*Status*::
- Complete
*Last Modified Date*::
2017-07-24
*Contributors*::
diff --git a/doc/specs/vulkan/appendices/VK_AMD_shader_fragment_mask.txt b/doc/specs/vulkan/appendices/VK_AMD_shader_fragment_mask.txt
index 36c3cdb..9feba10 100644
--- a/doc/specs/vulkan/appendices/VK_AMD_shader_fragment_mask.txt
+++ b/doc/specs/vulkan/appendices/VK_AMD_shader_fragment_mask.txt
@@ -12,9 +12,7 @@ include::meta/VK_AMD_shader_fragment_mask.txt[]
- Aaron Hagan, AMD
- Daniel Rakos, AMD
- Timothy Lottes, AMD
-*Overview*::
-+
---
+
This extension provides efficient read access to the fragment mask in
compressed multisampled color surfaces.
The fragment mask is a lookup table that associates color samples with color
@@ -31,7 +29,6 @@ the index will be in bits 28-31.
The color fragment for a particular color sample may then be fetched with
the correspoding fragment mask value using the pname:fragmentFetchAMD shader
function.
---
=== New Object Types
@@ -47,8 +44,8 @@ None.
=== New SPIR-V Capabilities
-* <<spirvenv-capabilities-table-shaderfragmentmaskamd,code:ShaderFragmentMaskAMD>>
-
+ * <<spirvenv-capabilities-table-shaderfragmentmaskamd,
+ code:ShaderFragmentMaskAMD>>
=== New Structures
@@ -98,5 +95,5 @@ void main()
=== Version History
- * Revision 1, 2017-08-16 (Aaron Hagan)
- - Initial draft
+ * Revision 1, 2017-08-16 (Aaron Hagan)
+ - Initial draft
diff --git a/doc/specs/vulkan/appendices/VK_EXT_blend_operation_advanced.txt b/doc/specs/vulkan/appendices/VK_EXT_blend_operation_advanced.txt
index 83886ca..f6b9701 100644
--- a/doc/specs/vulkan/appendices/VK_EXT_blend_operation_advanced.txt
+++ b/doc/specs/vulkan/appendices/VK_EXT_blend_operation_advanced.txt
@@ -1,7 +1,5 @@
include::meta/VK_EXT_blend_operation_advanced.txt[]
-*Status*::
- Complete
*Last Modified Date*::
2017-06-12
*Contributors*::
diff --git a/doc/specs/vulkan/appendices/VK_EXT_depth_range_unrestricted.txt b/doc/specs/vulkan/appendices/VK_EXT_depth_range_unrestricted.txt
index 6253618..e762b29 100644
--- a/doc/specs/vulkan/appendices/VK_EXT_depth_range_unrestricted.txt
+++ b/doc/specs/vulkan/appendices/VK_EXT_depth_range_unrestricted.txt
@@ -1,7 +1,5 @@
include::meta/VK_EXT_depth_range_unrestricted.txt[]
-*Status*::
- Draft
*Last Modified Date*::
2017-06-22
*Contributors*::
diff --git a/doc/specs/vulkan/appendices/VK_EXT_discard_rectangles.txt b/doc/specs/vulkan/appendices/VK_EXT_discard_rectangles.txt
index 0e1615d..6783084 100644
--- a/doc/specs/vulkan/appendices/VK_EXT_discard_rectangles.txt
+++ b/doc/specs/vulkan/appendices/VK_EXT_discard_rectangles.txt
@@ -1,7 +1,5 @@
include::meta/VK_EXT_discard_rectangles.txt[]
-*Status*::
- Complete
*Last Modified Date*::
2016-12-22
*Contributors*::
diff --git a/doc/specs/vulkan/appendices/VK_EXT_post_depth_coverage.txt b/doc/specs/vulkan/appendices/VK_EXT_post_depth_coverage.txt
index f568b52..f99d2a1 100644
--- a/doc/specs/vulkan/appendices/VK_EXT_post_depth_coverage.txt
+++ b/doc/specs/vulkan/appendices/VK_EXT_post_depth_coverage.txt
@@ -1,7 +1,5 @@
include::meta/VK_EXT_post_depth_coverage.txt[]
-*Status*::
- Complete
*Last Modified Date*::
2017-07-17
*Interactions and External Dependencies*::
diff --git a/doc/specs/vulkan/appendices/VK_EXT_sampler_filter_minmax.txt b/doc/specs/vulkan/appendices/VK_EXT_sampler_filter_minmax.txt
index 0d65bc1..d0f5e02 100644
--- a/doc/specs/vulkan/appendices/VK_EXT_sampler_filter_minmax.txt
+++ b/doc/specs/vulkan/appendices/VK_EXT_sampler_filter_minmax.txt
@@ -1,7 +1,5 @@
include::meta/VK_EXT_sampler_filter_minmax.txt[]
-*Status*::
- Draft.
*Last Modified Date*::
2017-05-19
*IP Status*::
diff --git a/doc/specs/vulkan/appendices/VK_EXT_shader_subgroup_ballot.txt b/doc/specs/vulkan/appendices/VK_EXT_shader_subgroup_ballot.txt
index c4b378c..0c5a0b1 100644
--- a/doc/specs/vulkan/appendices/VK_EXT_shader_subgroup_ballot.txt
+++ b/doc/specs/vulkan/appendices/VK_EXT_shader_subgroup_ballot.txt
@@ -1,7 +1,5 @@
include::meta/VK_EXT_shader_subgroup_ballot.txt[]
-*Status*::
- Draft
*Last Modified Date*::
2016-11-28
*IP Status*::
diff --git a/doc/specs/vulkan/appendices/VK_EXT_shader_subgroup_vote.txt b/doc/specs/vulkan/appendices/VK_EXT_shader_subgroup_vote.txt
index a7f1cf3..380fab6 100644
--- a/doc/specs/vulkan/appendices/VK_EXT_shader_subgroup_vote.txt
+++ b/doc/specs/vulkan/appendices/VK_EXT_shader_subgroup_vote.txt
@@ -1,7 +1,5 @@
include::meta/VK_EXT_shader_subgroup_vote.txt[]
-*Status*::
- Draft
*Last Modified Date*::
2016-11-28
*IP Status*::
diff --git a/doc/specs/vulkan/appendices/VK_EXT_shader_viewport_index_layer.txt b/doc/specs/vulkan/appendices/VK_EXT_shader_viewport_index_layer.txt
index 097a96e..9428725 100644
--- a/doc/specs/vulkan/appendices/VK_EXT_shader_viewport_index_layer.txt
+++ b/doc/specs/vulkan/appendices/VK_EXT_shader_viewport_index_layer.txt
@@ -1,7 +1,5 @@
include::meta/VK_EXT_shader_viewport_index_layer.txt[]
-*Status*::
- Complete
*Last Modified Date*::
2017-08-08
*Interactions and External Dependencies*::
diff --git a/doc/specs/vulkan/appendices/VK_EXT_validation_cache.txt b/doc/specs/vulkan/appendices/VK_EXT_validation_cache.txt
index c786cf2..2873e19 100644
--- a/doc/specs/vulkan/appendices/VK_EXT_validation_cache.txt
+++ b/doc/specs/vulkan/appendices/VK_EXT_validation_cache.txt
@@ -1,4 +1,5 @@
include::meta/VK_EXT_validation_cache.txt[]
+
*Last Modified Date*::
2017-08-29
*IP Status*::
diff --git a/doc/specs/vulkan/appendices/VK_IMG_filter_cubic.txt b/doc/specs/vulkan/appendices/VK_IMG_filter_cubic.txt
index 308153d..27e065f 100644
--- a/doc/specs/vulkan/appendices/VK_IMG_filter_cubic.txt
+++ b/doc/specs/vulkan/appendices/VK_IMG_filter_cubic.txt
@@ -1,7 +1,5 @@
include::meta/VK_IMG_filter_cubic.txt[]
-*Status*::
- Final
*Last Modified Date*::
2016-02-23
*Contributors*::
diff --git a/doc/specs/vulkan/appendices/VK_KHR_bind_memory2.txt b/doc/specs/vulkan/appendices/VK_KHR_bind_memory2.txt
new file mode 100644
index 0000000..01ef99f
--- /dev/null
+++ b/doc/specs/vulkan/appendices/VK_KHR_bind_memory2.txt
@@ -0,0 +1,65 @@
+// Copyright (c) 2016-2017 Khronos Group. This work is licensed under a
+// Creative Commons Attribution 4.0 International License; see
+// http://creativecommons.org/licenses/by/4.0/
+
+include::meta/VK_KHR_bind_memory2.txt[]
+
+*Last Modified Date*::
+ 2017-05-19
+*IP Status*::
+ No known IP claims.
+*Contributors*::
+ - Jeff Bolz, NVIDIA
+ - Tobias Hector, Imagination Technologies
+
+This extension provides versions of flink:vkBindBufferMemory and
+flink:vkBindImageMemory that allow multiple bindings to be performed at
+once, and are extensible.
+
+This extension also introduces ename:VK_IMAGE_CREATE_ALIAS_BIT_KHR, which
+allows "identical" images that alias the same memory to interpret the
+contents consistently, even across image layout changes.
+
+=== New Object Types
+
+None.
+
+=== New Enum Constants
+
+ * Extending ename:VkStructureType:
+ ** ename:VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO_KHR
+ ** ename:VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO_KHR
+
+ * Extending ename:VkImageCreateFlagBits:
+ ** ename:VK_IMAGE_CREATE_ALIAS_BIT_KHR
+
+=== New Enums
+
+None.
+
+=== New Structures
+
+ * slink:VkBindBufferMemoryInfoKHR
+ * slink:VkBindImageMemoryInfoKHR
+
+=== New Functions
+
+ * flink:vkBindBufferMemory2KHR
+ * flink:vkBindImageMemory2KHR
+
+=== New Built-In Variables
+
+None.
+
+=== New SPIR-V Capabilities
+
+None.
+
+=== Issues
+
+None.
+
+=== Version History
+
+ * Revision 1, 2017-05-19 (Tobias Hector)
+ - Pulled bind memory functions into their own extension
diff --git a/doc/specs/vulkan/appendices/VK_KHR_dedicated_allocation.txt b/doc/specs/vulkan/appendices/VK_KHR_dedicated_allocation.txt
index 87c292e..fe3973b 100644
--- a/doc/specs/vulkan/appendices/VK_KHR_dedicated_allocation.txt
+++ b/doc/specs/vulkan/appendices/VK_KHR_dedicated_allocation.txt
@@ -4,8 +4,6 @@
include::meta/VK_KHR_dedicated_allocation.txt[]
-*Status*::
- Draft.
*Last Modified Date*::
2017-08-07
*IP Status*::
diff --git a/doc/specs/vulkan/appendices/VK_KHR_descriptor_update_template.txt b/doc/specs/vulkan/appendices/VK_KHR_descriptor_update_template.txt
index 25f5ef6..53e88a9 100644
--- a/doc/specs/vulkan/appendices/VK_KHR_descriptor_update_template.txt
+++ b/doc/specs/vulkan/appendices/VK_KHR_descriptor_update_template.txt
@@ -4,8 +4,6 @@
include::meta/VK_KHR_descriptor_update_template.txt[]
-*Status*::
- In Work
*Last Modified Date*::
2016-01-11
*IP Status*::
diff --git a/doc/specs/vulkan/appendices/VK_KHR_display.txt b/doc/specs/vulkan/appendices/VK_KHR_display.txt
index 62e4fe7..51295ce 100644
--- a/doc/specs/vulkan/appendices/VK_KHR_display.txt
+++ b/doc/specs/vulkan/appendices/VK_KHR_display.txt
@@ -4,8 +4,6 @@
include::meta/VK_KHR_display.txt[]
-*Status*::
- Draft.
*Last Modified Date*::
2017-03-13
*IP Status*::
diff --git a/doc/specs/vulkan/appendices/VK_KHR_display_swapchain.txt b/doc/specs/vulkan/appendices/VK_KHR_display_swapchain.txt
index 1646e18..c7687dc 100644
--- a/doc/specs/vulkan/appendices/VK_KHR_display_swapchain.txt
+++ b/doc/specs/vulkan/appendices/VK_KHR_display_swapchain.txt
@@ -4,8 +4,6 @@
include::meta/VK_KHR_display_swapchain.txt[]
-*Status*::
- Draft.
*Last Modified Date*::
2017-03-13
*IP Status*::
diff --git a/doc/specs/vulkan/appendices/VK_KHR_external_fence.txt b/doc/specs/vulkan/appendices/VK_KHR_external_fence.txt
index f1aded8..fa56330 100644
--- a/doc/specs/vulkan/appendices/VK_KHR_external_fence.txt
+++ b/doc/specs/vulkan/appendices/VK_KHR_external_fence.txt
@@ -4,8 +4,6 @@
include::meta/VK_KHR_external_fence.txt[]
-*Status*::
- Draft
*Last Modified Date*::
2017-05-08
*IP Status*::
diff --git a/doc/specs/vulkan/appendices/VK_KHR_external_fence_capabilities.txt b/doc/specs/vulkan/appendices/VK_KHR_external_fence_capabilities.txt
index 473b455..048b008 100644
--- a/doc/specs/vulkan/appendices/VK_KHR_external_fence_capabilities.txt
+++ b/doc/specs/vulkan/appendices/VK_KHR_external_fence_capabilities.txt
@@ -4,8 +4,6 @@
include::meta/VK_KHR_external_fence_capabilities.txt[]
-*Status*::
- Draft
*Last Modified Date*::
2017-05-08
*IP Status*::
diff --git a/doc/specs/vulkan/appendices/VK_KHR_external_fence_fd.txt b/doc/specs/vulkan/appendices/VK_KHR_external_fence_fd.txt
index 113c2e1..ad3f8b9 100644
--- a/doc/specs/vulkan/appendices/VK_KHR_external_fence_fd.txt
+++ b/doc/specs/vulkan/appendices/VK_KHR_external_fence_fd.txt
@@ -4,8 +4,6 @@
include::meta/VK_KHR_external_fence_fd.txt[]
-*Status*::
- Draft
*Last Modified Date*::
2017-05-08
*IP Status*::
diff --git a/doc/specs/vulkan/appendices/VK_KHR_external_fence_win32.txt b/doc/specs/vulkan/appendices/VK_KHR_external_fence_win32.txt
index ad5518b..868915d 100644
--- a/doc/specs/vulkan/appendices/VK_KHR_external_fence_win32.txt
+++ b/doc/specs/vulkan/appendices/VK_KHR_external_fence_win32.txt
@@ -4,8 +4,6 @@
include::meta/VK_KHR_external_fence_win32.txt[]
-*Status*::
- Draft
*Last Modified Date*::
2017-05-08
*IP Status*::
diff --git a/doc/specs/vulkan/appendices/VK_KHR_external_memory.txt b/doc/specs/vulkan/appendices/VK_KHR_external_memory.txt
index 4ac9cef..fc7eb53 100644
--- a/doc/specs/vulkan/appendices/VK_KHR_external_memory.txt
+++ b/doc/specs/vulkan/appendices/VK_KHR_external_memory.txt
@@ -4,8 +4,6 @@
include::meta/VK_KHR_external_memory.txt[]
-*Status*::
- Draft
*Last Modified Date*::
2016-10-20
*IP Status*::
diff --git a/doc/specs/vulkan/appendices/VK_KHR_external_memory_capabilities.txt b/doc/specs/vulkan/appendices/VK_KHR_external_memory_capabilities.txt
index 3219901..76c5e06 100644
--- a/doc/specs/vulkan/appendices/VK_KHR_external_memory_capabilities.txt
+++ b/doc/specs/vulkan/appendices/VK_KHR_external_memory_capabilities.txt
@@ -4,8 +4,6 @@
include::meta/VK_KHR_external_memory_capabilities.txt[]
-*Status*::
- Draft
*Last Modified Date*::
2016-10-17
*IP Status*::
diff --git a/doc/specs/vulkan/appendices/VK_KHR_external_memory_fd.txt b/doc/specs/vulkan/appendices/VK_KHR_external_memory_fd.txt
index 314ef9a..9c26f16 100644
--- a/doc/specs/vulkan/appendices/VK_KHR_external_memory_fd.txt
+++ b/doc/specs/vulkan/appendices/VK_KHR_external_memory_fd.txt
@@ -4,8 +4,6 @@
include::meta/VK_KHR_external_memory_fd.txt[]
-*Status*::
- Draft
*Last Modified Date*::
2016-10-21
*IP Status*::
diff --git a/doc/specs/vulkan/appendices/VK_KHR_external_memory_win32.txt b/doc/specs/vulkan/appendices/VK_KHR_external_memory_win32.txt
index abe6a9f..1f03bde 100644
--- a/doc/specs/vulkan/appendices/VK_KHR_external_memory_win32.txt
+++ b/doc/specs/vulkan/appendices/VK_KHR_external_memory_win32.txt
@@ -4,8 +4,6 @@
include::meta/VK_KHR_external_memory_win32.txt[]
-*Status*::
- Draft
*Last Modified Date*::
2016-10-21
*IP Status*::
diff --git a/doc/specs/vulkan/appendices/VK_KHR_external_semaphore.txt b/doc/specs/vulkan/appendices/VK_KHR_external_semaphore.txt
index 66ac2ab..4d70bfb 100644
--- a/doc/specs/vulkan/appendices/VK_KHR_external_semaphore.txt
+++ b/doc/specs/vulkan/appendices/VK_KHR_external_semaphore.txt
@@ -4,8 +4,6 @@
include::meta/VK_KHR_external_semaphore.txt[]
-*Status*::
- Draft
*Last Modified Date*::
2016-10-21
*IP Status*::
diff --git a/doc/specs/vulkan/appendices/VK_KHR_external_semaphore_capabilities.txt b/doc/specs/vulkan/appendices/VK_KHR_external_semaphore_capabilities.txt
index 3a9d3ff..356d1ce 100644
--- a/doc/specs/vulkan/appendices/VK_KHR_external_semaphore_capabilities.txt
+++ b/doc/specs/vulkan/appendices/VK_KHR_external_semaphore_capabilities.txt
@@ -4,8 +4,6 @@
include::meta/VK_KHR_external_semaphore_capabilities.txt[]
-*Status*::
- Draft
*Last Modified Date*::
2016-10-20
*IP Status*::
diff --git a/doc/specs/vulkan/appendices/VK_KHR_external_semaphore_fd.txt b/doc/specs/vulkan/appendices/VK_KHR_external_semaphore_fd.txt
index a8893d1..8c82822 100644
--- a/doc/specs/vulkan/appendices/VK_KHR_external_semaphore_fd.txt
+++ b/doc/specs/vulkan/appendices/VK_KHR_external_semaphore_fd.txt
@@ -4,8 +4,6 @@
include::meta/VK_KHR_external_semaphore_fd.txt[]
-*Status*::
- Draft
*Last Modified Date*::
2016-10-21
*IP Status*::
diff --git a/doc/specs/vulkan/appendices/VK_KHR_external_semaphore_win32.txt b/doc/specs/vulkan/appendices/VK_KHR_external_semaphore_win32.txt
index 95af221..7540b94 100644
--- a/doc/specs/vulkan/appendices/VK_KHR_external_semaphore_win32.txt
+++ b/doc/specs/vulkan/appendices/VK_KHR_external_semaphore_win32.txt
@@ -4,8 +4,6 @@
include::meta/VK_KHR_external_semaphore_win32.txt[]
-*Status*::
- Draft
*Last Modified Date*::
2016-10-21
*IP Status*::
diff --git a/doc/specs/vulkan/appendices/VK_KHR_get_memory_requirements2.txt b/doc/specs/vulkan/appendices/VK_KHR_get_memory_requirements2.txt
index c4299c2..bef189a 100644
--- a/doc/specs/vulkan/appendices/VK_KHR_get_memory_requirements2.txt
+++ b/doc/specs/vulkan/appendices/VK_KHR_get_memory_requirements2.txt
@@ -4,8 +4,6 @@
include::meta/VK_KHR_get_memory_requirements2.txt[]
-*Status*::
- Complete.
*Last Modified Date*::
2017-03-23
*IP Status*::
diff --git a/doc/specs/vulkan/appendices/VK_KHR_get_physical_device_properties2.txt b/doc/specs/vulkan/appendices/VK_KHR_get_physical_device_properties2.txt
index ed2ce39..2c3d0c4 100644
--- a/doc/specs/vulkan/appendices/VK_KHR_get_physical_device_properties2.txt
+++ b/doc/specs/vulkan/appendices/VK_KHR_get_physical_device_properties2.txt
@@ -4,8 +4,6 @@
include::meta/VK_KHR_get_physical_device_properties2.txt[]
-*Status*::
- Complete.
*Last Modified Date*::
2016-11-02
*IP Status*::
diff --git a/doc/specs/vulkan/appendices/VK_KHR_image_format_list.txt b/doc/specs/vulkan/appendices/VK_KHR_image_format_list.txt
new file mode 100644
index 0000000..8b468fc
--- /dev/null
+++ b/doc/specs/vulkan/appendices/VK_KHR_image_format_list.txt
@@ -0,0 +1,48 @@
+// Copyright (c) 2016-2017 Intel Corporation
+
+include::meta/VK_KHR_image_format_list.txt[]
+
+*Last Modified Date*::
+ 2017-03-20
+*IP Status*::
+ No known IP claims.
+*Contributors*::
+ - Jason Ekstrand, Intel
+ - Jan-Harald Fredriksen, ARM
+ - Jeff Bolz, NVIDIA
+ - Jeff Leger, Qualcomm
+ - Neil Henning, Codeplay
+
+On some implementations, setting the
+ename:VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT on image creation can cause access
+to that image to perform worse than an equivalent image created without
+ename:VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT because the implementation does not
+know what view formats will be paired with the image.
+
+This extension allows an application to provide the list of all formats that
+can: be used with an image when it is created.
+The implementation may then be able to create a more efficient image that
+supports the subset of formats required by the application without having to
+support all formats in the format compatibility class of the image format.
+
+=== New Object Types
+
+None.
+
+=== New Enum Constants
+
+ * ename:VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR
+
+=== New Enums
+
+None.
+
+=== New Structs
+
+ * slink:VkImageFormatListCreateInfoKHR
+
+=== New Functions
+
+None.
+
+=== Issues
diff --git a/doc/specs/vulkan/appendices/VK_KHR_maintenance1.txt b/doc/specs/vulkan/appendices/VK_KHR_maintenance1.txt
index a46cc04..d72f41c 100644
--- a/doc/specs/vulkan/appendices/VK_KHR_maintenance1.txt
+++ b/doc/specs/vulkan/appendices/VK_KHR_maintenance1.txt
@@ -4,8 +4,6 @@
include::meta/VK_KHR_maintenance1.txt[]
-*Status*::
- Draft
*Last Modified Date*::
2016-10-26
*Contributors*::
diff --git a/doc/specs/vulkan/appendices/VK_KHR_maintenance2.txt b/doc/specs/vulkan/appendices/VK_KHR_maintenance2.txt
new file mode 100644
index 0000000..6ef559c
--- /dev/null
+++ b/doc/specs/vulkan/appendices/VK_KHR_maintenance2.txt
@@ -0,0 +1,139 @@
+// Copyright (c) 2016-2017 Khronos Group. This work is licensed under a
+// Creative Commons Attribution 4.0 International License; see
+// http://creativecommons.org/licenses/by/4.0/
+
+include::meta/VK_KHR_maintenance2.txt[]
+
+*Last Modified Date*::
+ Tue 28 Apr 2017
+*Contributors*::
+ - Michael Worcester, Imagination Technologies
+ - Stuart Smith, Imagination Technologies
+ - Jeff Bolz, NVIDIA
+ - Daniel Koch, NVIDIA
+ - Jan-Harald Fredriksen, ARM
+ - Daniel Rakos, AMD
+ - Neil Henning, Codeplay
+ - Piers Daniell, NVIDIA
+
++VK_KHR_maintenance2+ adds a collection of minor features that were
+intentionally left out or overlooked from the original Vulkan 1.0 release.
+
+The new features are as follows:
+
+ * Allow the application to specify which aspect of an input attachment
+ might be read for a given subpass.
+ * Allow implementations to express the clipping behavior of points.
+ * Allow creating images with usage flags that may not be supported for the
+ base image's format, but are supported for image views of the image that
+ have a different but compatible format.
+ * Allow creating uncompressed image views of compressed images.
+ * Allow the application to select between an upper-left and lower-left
+ origin for the tessellation domain space.
+ * Adds two new image layouts for depth stencil images to allow either the
+ depth or stencil aspect to be read-only while the other aspect is
+ writable.
+
+=== Input Attachment Specification
+
+Input attachment specification allows an application to specify which aspect
+of a multi-aspect image (e.g. a combined depth stencil format) will be
+accessed via a subpassLoad operation.
+
+On some implementations there may: be a performance penalty if the
+implementation does not know (at flink:vkCreateRenderPass time) which
+aspect(s) of multi-aspect images can: be be accessed as input attachments.
+
+
+
+=== New Object Types
+
+None.
+
+=== New Enum Constants
+
+ * Extending elink:VkStructureType:
+ ** ename:VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO_KHR
+ ** ename:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES_KHR
+ ** ename:VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO_KHR
+ ** ename:VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO_KHR
+
+ * Extending elink:VkImageCreateFlagBits:
+ ** ename:VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT_KHR
+ ** ename:VK_IMAGE_CREATE_EXTENDED_USAGE_BIT_KHR
+
+ * Extending elink:VkImageLayout
+ ** ename:VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL_KHR
+ ** ename:VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL_KHR
+
+ * ename:VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES_KHR
+ * ename:VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY_KHR
+
+=== New Enums
+
+ * slink:VkPointClippingBehaviorKHR
+ * slink:VkTessellationDomainOriginKHR
+
+=== New Structures
+
+ * slink:VkPhysicalDevicePointClippingPropertiesKHR
+ * slink:VkRenderPassInputAttachmentAspectCreateInfoKHR
+ * slink:VkInputAttachmentAspectReferenceKHR
+ * slink:VkImageViewUsageCreateInfoKHR
+ * slink:VkPipelineTessellationDomainOriginStateCreateInfoKHR
+
+=== New Functions
+
+None.
+
+=== Input Attachment Specification Example
+
+Consider the case where a render pass has two subpasses and two attachments.
+
+Attachment 0 has the format VK_FORMAT_D24_UNORM_S8_UINT, attachment 1 has
+some color format.
+
+Subpass 0 writes to attachment 0, subpass 1 reads only the depth information
+from attachment 0 (using inputAttachmentRead) and writes to attachment 1.
+
+[source,c++]
+----------------------------------------
+ VkInputAttachmentAspectReferenceKHR references[] = {
+ {
+ .subpass = 1,
+ .inputAttachment = 0,
+ .aspectMask = VK_IMAGE_ASPECT_DEPTH_BIT
+ }
+ };
+
+ VkRenderPassInputAttachmentAspectCreateInfoKHR specifyAspects = {
+ .sType = VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO_KHR,
+ .pNext = NULL,
+ .aspectReferenceCount = 1,
+ .pAspectReferences = references
+ };
+
+
+ VkRenderPassCreateInfo createInfo = {
+ ...
+ .pNext = &specifyAspects,
+ ...
+ }
+
+ vkCreateRenderPass(...);
+----------------------------------------
+
+=== Issues
+
+1) What is the default tessellation domain origin?
+
+*RESOLVED*: Vulkan 1.0 originally inadvertently documented a lower-left
+origin, but the conformance tests and all implementations implemented an
+upper-left origin.
+This extension adds a control to select between lower-left (for
+compatibility with OpenGL) and upper-left, and we retroactively fix
+unextended Vulkan to have a default of an upper-left origin.
+
+=== Version History
+
+ * Revision 1, Tue 28 Apr 2017
diff --git a/doc/specs/vulkan/appendices/VK_KHR_push_descriptor.txt b/doc/specs/vulkan/appendices/VK_KHR_push_descriptor.txt
index 80daba6..2c3a21f 100644
--- a/doc/specs/vulkan/appendices/VK_KHR_push_descriptor.txt
+++ b/doc/specs/vulkan/appendices/VK_KHR_push_descriptor.txt
@@ -4,8 +4,6 @@
include::meta/VK_KHR_push_descriptor.txt[]
-*Status*::
- Draft.
*Last Modified Date*::
2016-10-15
*IP Status*::
diff --git a/doc/specs/vulkan/appendices/VK_KHR_relaxed_block_layout.txt b/doc/specs/vulkan/appendices/VK_KHR_relaxed_block_layout.txt
index 9c75b13..c291ebf 100644
--- a/doc/specs/vulkan/appendices/VK_KHR_relaxed_block_layout.txt
+++ b/doc/specs/vulkan/appendices/VK_KHR_relaxed_block_layout.txt
@@ -4,8 +4,6 @@
include::meta/VK_KHR_relaxed_block_layout.txt[]
-*Status*::
- Complete
*Last Modified Date*::
2017-03-26
*IP Status*::
diff --git a/doc/specs/vulkan/appendices/VK_KHR_sampler_mirror_clamp_to_edge.txt b/doc/specs/vulkan/appendices/VK_KHR_sampler_mirror_clamp_to_edge.txt
index 2ed2fef..9e1aaee 100644
--- a/doc/specs/vulkan/appendices/VK_KHR_sampler_mirror_clamp_to_edge.txt
+++ b/doc/specs/vulkan/appendices/VK_KHR_sampler_mirror_clamp_to_edge.txt
@@ -4,8 +4,6 @@
include::meta/VK_KHR_sampler_mirror_clamp_to_edge.txt[]
-*Status*::
- Final
*Last Modified Date*::
2016-02-16
*Contributors*::
diff --git a/doc/specs/vulkan/appendices/VK_KHR_sampler_ycbcr_conversion.txt b/doc/specs/vulkan/appendices/VK_KHR_sampler_ycbcr_conversion.txt
new file mode 100644
index 0000000..ffb82b1
--- /dev/null
+++ b/doc/specs/vulkan/appendices/VK_KHR_sampler_ycbcr_conversion.txt
@@ -0,0 +1,150 @@
+// Copyright (c) 2017 Khronos Group. This work is licensed under a
+// Creative Commons Attribution 4.0 International License; see
+// http://creativecommons.org/licenses/by/4.0/
+
+include::meta/VK_KHR_sampler_ycbcr_conversion.txt[]
+
+*Last Modified Date*::
+ 2017-08-11
+*IP Status*::
+ No known IP claims.
+*Interactions and External Dependencies*::
+ - This extension interacts with +VK_EXT_debug_report+
+*Contributors*::
+ - Andrew Garrard, Samsung Electronics
+ - Tobias Hector, Imagination Technologies
+ - James Jones, NVIDIA
+ - Daniel Koch, NVIDIA
+ - Daniel Rakos, AMD
+ - Romain Guy, Google
+ - Jesse Hall, Google
+ - Tom Cooksey, ARM Ltd
+ - Jeff Leger, Qualcomm Technologies, Inc
+ - Jan-Harald Fredriksen, ARM Ltd
+ - Jan Outters, Samsung Electronics
+ - Alon Or-bach, Samsung Electronics
+ - Michael Worcester, Imagination Technologies
+ - Jeff Bolz, NVIDIA
+ - Tony Zlatinski, NVIDIA
+ - Matthew Netsch, Qualcomm Technologies, Inc
+
+This extension provides the ability to perform specified color space
+conversions during texture sampling operations.
+It also adds a selection of multi-planar formats, including the ability to
+bind memory to the planes of an image collectively or separately.
+
+=== New Enum Constants
+
+ * Extending elink:VkStructureType:
+ ** ename:VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO_KHR
+ ** ename:VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO_KHR
+ ** ename:VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO_KHR
+ ** ename:VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO_KHR
+ ** ename:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES_KHR
+ * Extending elink:VkFormat:
+ ** ename:VK_FORMAT_G8B8G8R8_422_UNORM_KHR
+ ** ename:VK_FORMAT_B8G8R8G8_422_UNORM_KHR
+ ** ename:VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM_KHR
+ ** ename:VK_FORMAT_G8_B8R8_2PLANE_420_UNORM_KHR
+ ** ename:VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM_KHR
+ ** ename:VK_FORMAT_G8_B8R8_2PLANE_422_UNORM_KHR
+ ** ename:VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM_KHR
+ ** ename:VK_FORMAT_R10X6_UNORM_PACK16_KHR
+ ** ename:VK_FORMAT_R10X6G10X6_UNORM_2PACK16_KHR
+ ** ename:VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16_KHR
+ ** ename:VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16_KHR
+ ** ename:VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16_KHR
+ ** ename:VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16_KHR
+ ** ename:VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16_KHR
+ ** ename:VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16_KHR
+ ** ename:VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16_KHR
+ ** ename:VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16_KHR
+ ** ename:VK_FORMAT_R12X4_UNORM_PACK16_KHR
+ ** ename:VK_FORMAT_R12X4G12X4_UNORM_2PACK16_KHR
+ ** ename:VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16_KHR
+ ** ename:VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16_KHR
+ ** ename:VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16_KHR
+ ** ename:VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16_KHR
+ ** ename:VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16_KHR
+ ** ename:VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16_KHR
+ ** ename:VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16_KHR
+ ** ename:VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16_KHR
+ ** ename:VK_FORMAT_G16B16G16R16_422_UNORM_KHR
+ ** ename:VK_FORMAT_B16G16R16G16_422_UNORM_KHR
+ ** ename:VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM_KHR
+ ** ename:VK_FORMAT_G16_B16R16_2PLANE_420_UNORM_KHR
+ ** ename:VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM_KHR
+ ** ename:VK_FORMAT_G16_B16R16_2PLANE_422_UNORM_KHR
+ ** ename:VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM_KHR
+ * Extending elink:VkImageAspectFlagBits:
+ ** ename:VK_IMAGE_ASPECT_PLANE_0_BIT_KHR
+ ** ename:VK_IMAGE_ASPECT_PLANE_1_BIT_KHR
+ ** ename:VK_IMAGE_ASPECT_PLANE_2_BIT_KHR
+ * Extending elink:VkImageCreateFlagBits:
+ ** ename:VK_IMAGE_CREATE_DISJOINT_BIT_KHR
+ * Extending elink:VkFormatFeatureFlagBits:
+ ** ename:VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT_KHR
+ ** ename:VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT_KHR
+ ** ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHR
+ ** ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHR
+ ** ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT_KHR
+ ** ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT_KHR
+ ** ename:VK_FORMAT_FEATURE_DISJOINT_BIT_KHR
+
+=== New Enums
+
+ * elink:VkSamplerYcbcrModelConversionKHR
+ * elink:VkSamplerYcbcrRangeKHR
+ * elink:VkChromaLocationKHR
+
+=== New Structures
+
+ * slink:VkSamplerYcbcrConversionInfoKHR
+ * slink:VkSamplerYcbcrConversionCreateInfoKHR
+ * slink:VkBindImagePlaneMemoryInfoKHR
+ * slink:VkImagePlaneMemoryRequirementsInfoKHR
+ * slink:VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR
+ * slink:VkSamplerYcbcrConversionImageFormatPropertiesKHR
+
+=== New Functions
+
+ * flink:vkCreateSamplerYcbcrConversionKHR
+ * flink:vkDestroySamplerYcbcrConversionKHR
+
+=== New Objects
+
+ * slink:VkSamplerYcbcrConversionKHR
+
+=== Issues
+
+=== Version History
+
+ * Revision 1, 2017-01-24 (Andrew Garrard)
+ - Initial draft
+ * Revision 2, 2017-01-25 (Andrew Garrard)
+ - After initial feedback
+ * Revision 3, 2017-01-27 (Andrew Garrard)
+ - Higher bit depth formats, renaming, swizzle
+ * Revision 4, 2017-02-22 (Andrew Garrard)
+ - Added query function, formats as RGB, clarifications
+ * Revision 5, 2017-04 (Andrew Garrard)
+ - Simplified query and removed output conversions
+ * Version 6, 2017-4-24 (Andrew Garrard)
+ - Tidying, incorporated new image query, restored transfer functions
+ * Version 7, 2017-04-25 (Andrew Garrard)
+ - Added cosited option/midpoint requirement for formats,
+ "bypassConversion"
+ * Version 8, 2017-04-25 (Andrew Garrard)
+ - Simplified further
+ * Version 9, 2017-04-27 (Andrew Garrard)
+ - Disjoint no more
+ * Version 10, 2017-04-28 (Andrew Garrard)
+ - Restored disjoint
+ * Version 11, 2017-04-29 (Andrew Garrard)
+ - Now Ycbcr conversion, and KHR
+ * Version 12, 2017-06-06 (Andrew Garrard)
+ - Added conversion to image view creation
+ * Version 13, 2017-07-13 (Andrew Garrard)
+ - Allowed cosited-only chroma samples for formats
+ * Version 14, 2017-08-11 (Andrew Garrard)
+ - Reflected quantization changes in BT.2100-1
diff --git a/doc/specs/vulkan/appendices/VK_KHR_shader_draw_parameters.txt b/doc/specs/vulkan/appendices/VK_KHR_shader_draw_parameters.txt
index 341826f..36bedaa 100644
--- a/doc/specs/vulkan/appendices/VK_KHR_shader_draw_parameters.txt
+++ b/doc/specs/vulkan/appendices/VK_KHR_shader_draw_parameters.txt
@@ -4,8 +4,6 @@
include::meta/VK_KHR_shader_draw_parameters.txt[]
-*Status*::
- Complete
*Last Modified Date*::
2016-10-05
*IP Status*::
diff --git a/doc/specs/vulkan/appendices/VK_KHR_storage_buffer_storage_class.txt b/doc/specs/vulkan/appendices/VK_KHR_storage_buffer_storage_class.txt
index 245b80d..5f171f8 100644
--- a/doc/specs/vulkan/appendices/VK_KHR_storage_buffer_storage_class.txt
+++ b/doc/specs/vulkan/appendices/VK_KHR_storage_buffer_storage_class.txt
@@ -4,8 +4,6 @@
include::meta/VK_KHR_storage_buffer_storage_class.txt[]
-*Status*::
- Draft
*Last Modified Date*::
2017-03-23
*IP Status*::
diff --git a/doc/specs/vulkan/appendices/VK_KHR_variable_pointers.txt b/doc/specs/vulkan/appendices/VK_KHR_variable_pointers.txt
index 7060ac0..ab0d7d9 100644
--- a/doc/specs/vulkan/appendices/VK_KHR_variable_pointers.txt
+++ b/doc/specs/vulkan/appendices/VK_KHR_variable_pointers.txt
@@ -4,8 +4,6 @@
include::meta/VK_KHR_variable_pointers.txt[]
-*Status*::
- Draft
*Last Modified Date*::
2017-03-14
*IP Status*::
diff --git a/doc/specs/vulkan/appendices/VK_KHR_win32_keyed_mutex.txt b/doc/specs/vulkan/appendices/VK_KHR_win32_keyed_mutex.txt
index df7ab66..801d95e 100644
--- a/doc/specs/vulkan/appendices/VK_KHR_win32_keyed_mutex.txt
+++ b/doc/specs/vulkan/appendices/VK_KHR_win32_keyed_mutex.txt
@@ -4,8 +4,6 @@
include::meta/VK_KHR_win32_keyed_mutex.txt[]
-*Status*::
- Draft
*Last Modified Date*::
2016-10-21
*IP Status*::
diff --git a/doc/specs/vulkan/appendices/VK_KHX_device_group.txt b/doc/specs/vulkan/appendices/VK_KHX_device_group.txt
index 44e894f..525a45c 100644
--- a/doc/specs/vulkan/appendices/VK_KHX_device_group.txt
+++ b/doc/specs/vulkan/appendices/VK_KHX_device_group.txt
@@ -4,14 +4,13 @@
include::meta/VK_KHX_device_group.txt[]
-*Status*::
- Draft.
*Last Modified Date*::
- 2016-10-19
+ 2017-05-19
*IP Status*::
No known IP claims.
*Contributors*::
- Jeff Bolz, NVIDIA
+ - Tobias Hector, Imagination Technologies
This extension provides functionality to use a logical device that consists
of multiple physical devices, as created with the
@@ -29,8 +28,6 @@ None.
* Extending elink:VkStructureType:
** ename:VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO_KHX
- ** ename:VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO_KHX
- ** ename:VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO_KHX
** ename:VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO_KHX
** ename:VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO_KHX
** ename:VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO_KHX
@@ -41,6 +38,8 @@ None.
** ename:VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHX
** ename:VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHX
** ename:VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHX
+ ** ename:VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO_KHX
+ ** ename:VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO_KHX
* Extending elink:VkImageCreateFlagBits
** ename:VK_IMAGE_CREATE_BIND_SFR_BIT_KHX
* Extending elink:VkPipelineCreateFlagBits
@@ -60,8 +59,6 @@ None.
=== New Structures
* slink:VkMemoryAllocateFlagsInfoKHX
- * slink:VkBindBufferMemoryInfoKHX
- * slink:VkBindImageMemoryInfoKHX
* slink:VkDeviceGroupRenderPassBeginInfoKHX
* slink:VkDeviceGroupCommandBufferBeginInfoKHX
* slink:VkDeviceGroupSubmitInfoKHX
@@ -72,12 +69,12 @@ None.
* slink:VkAcquireNextImageInfoKHX
* slink:VkDeviceGroupPresentInfoKHX
* slink:VkDeviceGroupSwapchainCreateInfoKHX
+ * slink:VkBindBufferMemoryDeviceGroupInfoKHX
+ * slink:VkBindImageMemoryDeviceGroupInfoKHX
=== New Functions
* flink:vkGetDeviceGroupPeerMemoryFeaturesKHX
- * flink:vkBindBufferMemory2KHX
- * flink:vkBindImageMemory2KHX
* flink:vkCmdSetDeviceMaskKHX
* flink:vkGetDeviceGroupPresentCapabilitiesKHX
* flink:vkGetDeviceGroupSurfacePresentModesKHX
@@ -86,9 +83,11 @@ None.
* flink:vkGetPhysicalDevicePresentRectanglesKHX
=== New Built-In Variables
+
* <<interfaces-builtin-variables-deviceindex,code:DeviceIndex>>
=== New SPIR-V Capabilities
+
* <<spirvenv-capabilities-table-devicegroup,code:DeviceGroup>>
=== Issues
@@ -101,5 +100,9 @@ TODO
=== Version History
+ * Revision 2, 2017-05-19 (Tobias Hector)
+ - Removed extended memory bind functions to VK_KHR_bind_memory2, added
+ dependency on that extension, and device-group-specific structs for
+ those functions.
* Revision 1, 2016-10-19 (Jeff Bolz)
- Internal revisions
diff --git a/doc/specs/vulkan/appendices/VK_KHX_device_group_creation.txt b/doc/specs/vulkan/appendices/VK_KHX_device_group_creation.txt
index 2ad8baf..d177fcc 100644
--- a/doc/specs/vulkan/appendices/VK_KHX_device_group_creation.txt
+++ b/doc/specs/vulkan/appendices/VK_KHX_device_group_creation.txt
@@ -4,8 +4,6 @@
include::meta/VK_KHX_device_group_creation.txt[]
-*Status*::
- Draft.
*Last Modified Date*::
2016-10-19
*IP Status*::
diff --git a/doc/specs/vulkan/appendices/VK_KHX_multiview.txt b/doc/specs/vulkan/appendices/VK_KHX_multiview.txt
index f51f28f..3131a74 100644
--- a/doc/specs/vulkan/appendices/VK_KHX_multiview.txt
+++ b/doc/specs/vulkan/appendices/VK_KHX_multiview.txt
@@ -4,8 +4,6 @@
include::meta/VK_KHX_multiview.txt[]
-*Status*::
- Draft.
*Last Modified Date*::
2016-10-28
*IP Status*::
diff --git a/doc/specs/vulkan/appendices/VK_NVX_multiview_per_view_attributes.txt b/doc/specs/vulkan/appendices/VK_NVX_multiview_per_view_attributes.txt
index f0bc94e..eb89543 100644
--- a/doc/specs/vulkan/appendices/VK_NVX_multiview_per_view_attributes.txt
+++ b/doc/specs/vulkan/appendices/VK_NVX_multiview_per_view_attributes.txt
@@ -1,7 +1,5 @@
include::meta/VK_NVX_multiview_per_view_attributes.txt[]
-*Status*::
- Draft.
*Last Modified Date*::
2017-01-13
*IP Status*::
diff --git a/doc/specs/vulkan/appendices/VK_NV_clip_space_w_scaling.txt b/doc/specs/vulkan/appendices/VK_NV_clip_space_w_scaling.txt
index cb0fa6b..642b759 100644
--- a/doc/specs/vulkan/appendices/VK_NV_clip_space_w_scaling.txt
+++ b/doc/specs/vulkan/appendices/VK_NV_clip_space_w_scaling.txt
@@ -1,7 +1,5 @@
include::meta/VK_NV_clip_space_w_scaling.txt[]
-*Status*::
- Complete.
*Last Modified Date*::
2017-02-15
*Contributors*::
diff --git a/doc/specs/vulkan/appendices/VK_NV_dedicated_allocation.txt b/doc/specs/vulkan/appendices/VK_NV_dedicated_allocation.txt
index 98b41d2..0c466bd 100644
--- a/doc/specs/vulkan/appendices/VK_NV_dedicated_allocation.txt
+++ b/doc/specs/vulkan/appendices/VK_NV_dedicated_allocation.txt
@@ -1,7 +1,5 @@
include::meta/VK_NV_dedicated_allocation.txt[]
-*Status*::
- Draft.
*Last Modified Date*::
2016-05-31
*IP Status*::
diff --git a/doc/specs/vulkan/appendices/VK_NV_external_memory.txt b/doc/specs/vulkan/appendices/VK_NV_external_memory.txt
index 5f0a765..f76e071 100644
--- a/doc/specs/vulkan/appendices/VK_NV_external_memory.txt
+++ b/doc/specs/vulkan/appendices/VK_NV_external_memory.txt
@@ -1,7 +1,5 @@
include::meta/VK_NV_external_memory.txt[]
-*Status*::
- Complete
*Last Modified Date*::
2016-08-19
*IP Status*::
diff --git a/doc/specs/vulkan/appendices/VK_NV_external_memory_capabilities.txt b/doc/specs/vulkan/appendices/VK_NV_external_memory_capabilities.txt
index 3fecc0d..2096fd8 100644
--- a/doc/specs/vulkan/appendices/VK_NV_external_memory_capabilities.txt
+++ b/doc/specs/vulkan/appendices/VK_NV_external_memory_capabilities.txt
@@ -1,7 +1,5 @@
include::meta/VK_NV_external_memory_capabilities.txt[]
-*Status*::
- Complete
*Last Modified Date*::
2016-08-19
*IP Status*::
diff --git a/doc/specs/vulkan/appendices/VK_NV_external_memory_win32.txt b/doc/specs/vulkan/appendices/VK_NV_external_memory_win32.txt
index ef97bd3..2906712 100644
--- a/doc/specs/vulkan/appendices/VK_NV_external_memory_win32.txt
+++ b/doc/specs/vulkan/appendices/VK_NV_external_memory_win32.txt
@@ -1,7 +1,5 @@
include::meta/VK_NV_external_memory_win32.txt[]
-*Status*::
- Complete
*Last Modified Date*::
2016-08-19
*IP Status*::
diff --git a/doc/specs/vulkan/appendices/VK_NV_fill_rectangle.txt b/doc/specs/vulkan/appendices/VK_NV_fill_rectangle.txt
index d393e9a..6113ea1 100644
--- a/doc/specs/vulkan/appendices/VK_NV_fill_rectangle.txt
+++ b/doc/specs/vulkan/appendices/VK_NV_fill_rectangle.txt
@@ -1,7 +1,5 @@
include::meta/VK_NV_fill_rectangle.txt[]
-*Status*::
- Complete
*Last Modified Date*::
2017-05-22
*Contributors*::
diff --git a/doc/specs/vulkan/appendices/VK_NV_fragment_coverage_to_color.txt b/doc/specs/vulkan/appendices/VK_NV_fragment_coverage_to_color.txt
index 3a71bff..85c902f 100644
--- a/doc/specs/vulkan/appendices/VK_NV_fragment_coverage_to_color.txt
+++ b/doc/specs/vulkan/appendices/VK_NV_fragment_coverage_to_color.txt
@@ -1,7 +1,5 @@
include::meta/VK_NV_fragment_coverage_to_color.txt[]
-*Status*::
- Complete
*Last Modified Date*::
2017-05-21
*Contributors*::
diff --git a/doc/specs/vulkan/appendices/VK_NV_framebuffer_mixed_samples.txt b/doc/specs/vulkan/appendices/VK_NV_framebuffer_mixed_samples.txt
index 6d40cef..d93762a 100644
--- a/doc/specs/vulkan/appendices/VK_NV_framebuffer_mixed_samples.txt
+++ b/doc/specs/vulkan/appendices/VK_NV_framebuffer_mixed_samples.txt
@@ -1,7 +1,5 @@
include::meta/VK_NV_framebuffer_mixed_samples.txt[]
-*Status*::
- Complete
*Last Modified Date*::
2017-06-04
*Contributors*::
diff --git a/doc/specs/vulkan/appendices/VK_NV_geometry_shader_passthrough.txt b/doc/specs/vulkan/appendices/VK_NV_geometry_shader_passthrough.txt
index 5bdd409..d384698 100644
--- a/doc/specs/vulkan/appendices/VK_NV_geometry_shader_passthrough.txt
+++ b/doc/specs/vulkan/appendices/VK_NV_geometry_shader_passthrough.txt
@@ -1,7 +1,5 @@
include::meta/VK_NV_geometry_shader_passthrough.txt[]
-*Status*::
- Complete
*Last Modified Date*::
2017-02-15
*Interactions and External Dependencies*::
diff --git a/doc/specs/vulkan/appendices/VK_NV_glsl_shader.txt b/doc/specs/vulkan/appendices/VK_NV_glsl_shader.txt
index 03c417e..24d931d 100644
--- a/doc/specs/vulkan/appendices/VK_NV_glsl_shader.txt
+++ b/doc/specs/vulkan/appendices/VK_NV_glsl_shader.txt
@@ -1,7 +1,5 @@
include::meta/VK_NV_glsl_shader.txt[]
-*Status*::
- Draft.
*Last Modified Date*::
2016-02-14
*IP Status*::
diff --git a/doc/specs/vulkan/appendices/VK_NV_sample_mask_override_coverage.txt b/doc/specs/vulkan/appendices/VK_NV_sample_mask_override_coverage.txt
index f4fae91..db9500d 100644
--- a/doc/specs/vulkan/appendices/VK_NV_sample_mask_override_coverage.txt
+++ b/doc/specs/vulkan/appendices/VK_NV_sample_mask_override_coverage.txt
@@ -1,7 +1,5 @@
include::meta/VK_NV_sample_mask_override_coverage.txt[]
-*Status*::
- Complete
*Last Modified Date*::
2016-12-08
*IP Status*::
diff --git a/doc/specs/vulkan/appendices/VK_NV_viewport_array2.txt b/doc/specs/vulkan/appendices/VK_NV_viewport_array2.txt
index f0568af..4ac5033 100644
--- a/doc/specs/vulkan/appendices/VK_NV_viewport_array2.txt
+++ b/doc/specs/vulkan/appendices/VK_NV_viewport_array2.txt
@@ -1,7 +1,5 @@
include::meta/VK_NV_viewport_array2.txt[]
-*Status*::
- Complete
*Last Modified Date*::
2017-02-15
*Interactions and External Dependencies*::
diff --git a/doc/specs/vulkan/appendices/VK_NV_viewport_swizzle.txt b/doc/specs/vulkan/appendices/VK_NV_viewport_swizzle.txt
index 10fae0a..f299f00 100644
--- a/doc/specs/vulkan/appendices/VK_NV_viewport_swizzle.txt
+++ b/doc/specs/vulkan/appendices/VK_NV_viewport_swizzle.txt
@@ -1,7 +1,5 @@
include::meta/VK_NV_viewport_swizzle.txt[]
-*Status*::
- Complete
*Last Modified Date*::
2016-12-22
*Interactions and External Dependencies*::
diff --git a/doc/specs/vulkan/appendices/VK_NV_win32_keyed_mutex.txt b/doc/specs/vulkan/appendices/VK_NV_win32_keyed_mutex.txt
index 854f8ce..fb806a2 100644
--- a/doc/specs/vulkan/appendices/VK_NV_win32_keyed_mutex.txt
+++ b/doc/specs/vulkan/appendices/VK_NV_win32_keyed_mutex.txt
@@ -1,7 +1,5 @@
include::meta/VK_NV_win32_keyed_mutex.txt[]
-*Status*::
- Complete
*Last Modified Date*::
2016-08-19
*IP Status*::
diff --git a/doc/specs/vulkan/appendices/boilerplate.txt b/doc/specs/vulkan/appendices/boilerplate.txt
index f380974..cb22fae 100644
--- a/doc/specs/vulkan/appendices/boilerplate.txt
+++ b/doc/specs/vulkan/appendices/boilerplate.txt
@@ -138,7 +138,6 @@ endif::VK_EXT_display_surface_counter[]
[[boilerplate-macros]]
== Macro Definitions in +vulkan.h+
-Vulkan is defined as a C API.
The supplied +vulkan.h+ header defines a small number of C preprocessor
macros that are described below.
@@ -304,6 +303,7 @@ exact definitions are under the control of specific platforms and Vulkan
implementations.
+[[boilerplate-platform-specific-calling-conventions]]
=== Platform-Specific Calling Conventions
On many platforms the following macros are empty strings, causing platform-
@@ -336,6 +336,20 @@ compiler.
// @refEnd VKAPI_PTR VKAPI_ATTR VKAPI_CALL
+With these macros, a Vulkan function declaration takes the form of:
+
+[source,c++]
+----------------------------------------
+VKAPI_ATTR <return_type> VKAPI_CALL <command_name>(<command_parameters>);
+----------------------------------------
+
+Additionaly, a Vulkan function pointer type declaration takes the form of:
+
+[source,c++]
+----------------------------------------
+typedef <return_type> (VKAPI_PTR *PFN_<command_name>)(<command_parameters>);
+----------------------------------------
+
=== Platform-Specific Header Control
diff --git a/doc/specs/vulkan/appendices/extensions.txt b/doc/specs/vulkan/appendices/extensions.txt
index 7cc49fd..216544b 100644
--- a/doc/specs/vulkan/appendices/extensions.txt
+++ b/doc/specs/vulkan/appendices/extensions.txt
@@ -71,6 +71,10 @@ ifdef::VK_KHR_android_surface[]
include::VK_KHR_android_surface.txt[]
endif::VK_KHR_android_surface[]
+ifdef::VK_KHR_bind_memory2[]
+include::VK_KHR_bind_memory2.txt[]
+endif::VK_KHR_bind_memory2[]
+
ifdef::VK_KHR_descriptor_update_template[]
include::VK_KHR_descriptor_update_template.txt[]
endif::VK_KHR_descriptor_update_template[]
@@ -147,6 +151,10 @@ ifdef::VK_KHR_get_surface_capabilities2[]
include::VK_KHR_get_surface_capabilities2.txt[]
endif::VK_KHR_get_surface_capabilities2[]
+ifdef::VK_KHR_image_format_list[]
+include::VK_KHR_image_format_list.txt[]
+endif::VK_KHR_image_format_list[]
+
ifdef::VK_KHR_incremental_present[]
include::VK_KHR_incremental_present.txt[]
endif::VK_KHR_incremental_present[]
@@ -155,6 +163,10 @@ ifdef::VK_KHR_maintenance1[]
include::VK_KHR_maintenance1.txt[]
endif::VK_KHR_maintenance1[]
+ifdef::VK_KHR_maintenance2[]
+include::VK_KHR_maintenance2.txt[]
+endif::VK_KHR_maintenance2[]
+
ifdef::VK_KHR_mir_surface[]
include::VK_KHR_mir_surface.txt[]
endif::VK_KHR_mir_surface[]
@@ -169,6 +181,10 @@ endif::VK_KHR_relaxed_block_layout[]
include::VK_KHR_sampler_mirror_clamp_to_edge.txt[]
+ifdef::VK_KHR_sampler_ycbcr_conversion[]
+include::VK_KHR_sampler_ycbcr_conversion.txt[]
+endif::VK_KHR_sampler_ycbcr_conversion[]
+
ifdef::VK_KHR_shader_draw_parameters[]
include::VK_KHR_shader_draw_parameters.txt[]
endif::VK_KHR_shader_draw_parameters[]
diff --git a/doc/specs/vulkan/appendices/glossary.txt b/doc/specs/vulkan/appendices/glossary.txt
index 49c3daf..5d75660 100644
--- a/doc/specs/vulkan/appendices/glossary.txt
+++ b/doc/specs/vulkan/appendices/glossary.txt
@@ -314,6 +314,14 @@ Direct Drawing Commands::
_indirect drawing commands_).
Includes flink:vkCmdDraw, and flink:vkCmdDrawIndexed.
+ifdef::VK_KHR_sampler_ycbcr_conversion[]
+Disjoint::
+ _Disjoint planes_ are _image planes_ to which memory is bound
+ independently. +
+ A _disjoint image_ consists of multiple _disjoint planes_, and is
+ created with the ename:VK_IMAGE_CREATE_DISJOINT_BIT_KHR bit set.
+endif::VK_KHR_sampler_ycbcr_conversion[]
+
Dispatchable Handle::
A handle of a pointer handle type which may: be used by layers as part
of intercepting API commands.
@@ -378,6 +386,15 @@ Execution Dependency Chain::
A sequence of execution dependencies that transitively act as a single
execution dependency.
+ifdef::VK_KHR_sampler_ycbcr_conversion[]
+Explicit chroma reconstruction::
+ An implementation of sampler Y'C~B~C~R~ conversion which reconstructs
+ reduced-resolution chroma samples to luma resolution and then separately
+ performs texture sample interpolation.
+ This is distinct from an implicit implementation, which incorporates
+ chroma sample reconstruction into texture sample interpolation.
+endif::VK_KHR_sampler_ycbcr_conversion[]
+
Extension Scope::
The set of objects and commands that can: be affected by an extension.
Extensions are either device scope or instance scope.
@@ -551,6 +568,17 @@ Immutable Sampler::
and that is used for that binding in all descriptor sets allocated from
the layout, and cannot be changed.
+ifdef::VK_KHR_sampler_ycbcr_conversion[]
+Implicit chroma reconstruction::
+ An implementation of sampler Y'C~B~C~R~ conversion which reconstructs
+ the reduced-resolution chroma samples directly at the sample point, as
+ part of the normal texture sampling operation.
+ This is distinct from an _explicit chroma reconstruction_
+ implementation, which reconstructs the reduced-resolution chroma samples
+ to the resolution of the luma samples, then filters the result as part
+ of texture sample interpolation.
+endif::VK_KHR_sampler_ycbcr_conversion[]
+
Implicitly-Enabled Layer::
A layer enabled by a loader-defined mechanism outside the Vulkan API,
rather than explicitly by the application during instance or device
@@ -696,6 +724,16 @@ Mip Tail Region::
small to fill a sparse block, and that must: all be bound to memory
collectively and opaquely.
+ifdef::VK_KHR_sampler_ycbcr_conversion[]
+Multi-planar::
+ A _multi-planar format_ (or "`planar format`") is an image format
+ consisting of more than one _plane_, identifiable with a etext:_2PLANE
+ or etext:_3PLANE component to the format name and listed in
+ <<features-formats-requiring-sampler-ycbcr-conversion>>.
+ A _multi-planar image_ (or "`planar image`") is an image of a
+ multi-planar format.
+endif::VK_KHR_sampler_ycbcr_conversion[]
+
Non-Dispatchable Handle::
A handle of an integer handle type.
Handle values may: not be unique, even for two objects of the same type.
@@ -800,6 +838,24 @@ pname:pNext Chain::
A set of structures <<fundamentals-validusage-pNext,chained together>>
through their ptext:pNext members.
+ifdef::VK_KHR_sampler_ycbcr_conversion[]
+Planar::
+ See _multi-planar_.
+
+Plane::
+ An _image plane_ is part of the representation of an image, containing a
+ subset of the color channels required to represent the texels in the
+ image and with a contiguous mapping of coordinates to bound memory.
+ Most images consist only of a single plane, but some formats spread the
+ channels across multiple image planes.
+ The host-accessible properties of each image plane are accessed in a
+ linear layout using vkGetImageSubresourceLayout.
+ If a multi-planar image is created with the
+ ename:VK_IMAGE_CREATE_DISJOINT_BIT_KHR bit set, the image is described
+ as _disjoint_, and its planes are therefore are bound to memory
+ independently.
+endif::VK_KHR_sampler_ycbcr_conversion[]
+
Point Sampling (Rasterization)::
A rule that determines whether a fragment sample location is covered by
a polygon primitive by testing whether the sample location is in the
@@ -974,6 +1030,11 @@ Side Effect::
A store to memory or atomic operation on memory from a shader
invocation.
+ifdef::VK_KHR_sampler_ycbcr_conversion[]
+Single-plane format::
+ A format that is not _multi-planar_.
+endif::VK_KHR_sampler_ycbcr_conversion[]
+
Sparse Block::
An element of a sparse resource that can be independently bound to
memory.
diff --git a/doc/specs/vulkan/appendices/spirvenv.txt b/doc/specs/vulkan/appendices/spirvenv.txt
index 886c6c1..4071823 100644
--- a/doc/specs/vulkan/appendices/spirvenv.txt
+++ b/doc/specs/vulkan/appendices/spirvenv.txt
@@ -12,7 +12,7 @@ Instructions for GLSL>> Specification.
This appendix defines additional SPIR-V requirements applying to Vulkan
shaders.
-== Required Versions and Formats
+== Versions and Formats
A Vulkan 1.0 implementation must: support the 1.0 version of SPIR-V and the
1.0 version of the SPIR-V Extended Instructions for GLSL.
diff --git a/doc/specs/vulkan/chapters/VK_KHR_swapchain/wsi.txt b/doc/specs/vulkan/chapters/VK_KHR_swapchain/wsi.txt
index 892aed1..5e44376 100644
--- a/doc/specs/vulkan/chapters/VK_KHR_swapchain/wsi.txt
+++ b/doc/specs/vulkan/chapters/VK_KHR_swapchain/wsi.txt
@@ -373,12 +373,12 @@ the following sname:VkImageCreateInfo parameters:
[options="header"]
|====
| sname:VkImageCreateInfo Field | Value
-ifdef::VK_KHX_device_group[]
-| pname:flags | ename:VK_IMAGE_CREATE_BIND_SFR_BIT_KHX if ename:VK_SWAPCHAIN_CREATE_BIND_SFR_BIT_KHX is set, else 0
-endif::VK_KHX_device_group[]
ifndef::VK_KHX_device_group[]
| pname:flags | 0
endif::VK_KHX_device_group[]
+ifdef::VK_KHX_device_group[]
+| pname:flags | ename:VK_IMAGE_CREATE_BIND_SFR_BIT_KHX if ename:VK_SWAPCHAIN_CREATE_BIND_SFR_BIT_KHX is set, else 0
+endif::VK_KHX_device_group[]
| pname:imageType | ename:VK_IMAGE_TYPE_2D
| pname:format | `pCreateInfo->imageFormat`
| pname:extent | `{pCreateInfo->imageExtent.width, pCreateInfo->imageExtent.height, 1}`
diff --git a/doc/specs/vulkan/chapters/clears.txt b/doc/specs/vulkan/chapters/clears.txt
index af72d10..38bf9f8 100644
--- a/doc/specs/vulkan/chapters/clears.txt
+++ b/doc/specs/vulkan/chapters/clears.txt
@@ -60,6 +60,10 @@ endif::VK_KHR_maintenance1[]
* [[VUID-vkCmdClearColorImage-image-00002]]
pname:image must: have been created with
ename:VK_IMAGE_USAGE_TRANSFER_DST_BIT usage flag
+ifdef::VK_KHR_sampler_ycbcr_conversion[]
+ * [[VUID-vkCmdClearColorImage-image-01545]] pname:image must: not use a format listed in
+ <<features-formats-requiring-sampler-ycbcr-conversion>>
+endif::VK_KHR_sampler_ycbcr_conversion[]
* [[VUID-vkCmdClearColorImage-image-00003]]
If pname:image is non-sparse then it must: be bound completely and
contiguously to a single sname:VkDeviceMemory object
@@ -383,14 +387,16 @@ include::../api/structs/VkClearDepthStencilValue.txt[]
It is a 32-bit integer value which is converted to the attachment's
format by taking the appropriate number of LSBs.
+ifndef::VK_EXT_depth_range_unrestricted[]
+
.Valid Usage
****
-ifndef::VK_EXT_depth_range_unrestricted[]
* [[VUID-VkClearDepthStencilValue-depth-00022]]
pname:depth must: be between `0.0` and `1.0`, inclusive
-endif::VK_EXT_depth_range_unrestricted[]
****
+endif::VK_EXT_depth_range_unrestricted[]
+
include::../validity/structs/VkClearDepthStencilValue.txt[]
--
@@ -507,6 +513,24 @@ pname:dataSize must: be less than or equal to 65536 bytes.
For larger updates, applications can: use buffer to buffer
<<copies-buffers,copies>>.
+[NOTE]
+.Note
+====
+Buffer updates performed with fname:vkCmdUpdateBuffer first copy the data
+into command buffer memory when the command is recorded (which requires
+additional storage and may incur an additional allocation), and then copy
+the data from the command buffer into pname:dstBuffer when the command is
+executed on a device.
+
+The additional cost of this functionality compared to <<<<copies-buffers,
+buffer to buffer copies>> means it is only recommended for very small
+amounts of data, and is why it is limited to only 65536 bytes.
+
+Applications can: work around this by issuing multiple
+fname:vkCmdUpdateBuffer commands to different ranges of the same buffer, but
+it is strongly recommended that they should: not.
+====
+
The source data is copied from the user pointer to the command buffer when
the command is called.
diff --git a/doc/specs/vulkan/chapters/copies.txt b/doc/specs/vulkan/chapters/copies.txt
index f8eaadc..e2b8438 100644
--- a/doc/specs/vulkan/chapters/copies.txt
+++ b/doc/specs/vulkan/chapters/copies.txt
@@ -195,6 +195,37 @@ For example, ename:VK_FORMAT_R8G8B8A8_UNORM is compatible with
ename:VK_FORMAT_R32_UINT because both texels are 4 bytes in size.
Depth/stencil formats must: match exactly.
+ifdef::VK_KHR_sampler_ycbcr_conversion[]
+If the format of pname:srcImage or pname:dstImage is a
+<<features-formats-requiring-sampler-ycbcr-conversion,_multi-planar_ image
+format>>, regions of each plane to be copied must: be specified separately
+using the pname:srcSubresource and pname:dstSubresource members of the
+slink:VkImageCopy structure.
+In this case, the pname:aspectMask of the pname:srcSubresource or
+pname:dstSubresource that refers to the multi-planar image must: be
+ename:VK_IMAGE_ASPECT_PLANE_0_BIT_KHR,
+ename:VK_IMAGE_ASPECT_PLANE_1_BIT_KHR, or
+ename:VK_IMAGE_ASPECT_PLANE_2_BIT_KHR.
+For the purposes of fname:vkCmdCopyImage, each plane of a multi-planar image
+is treated as having the format listed in
+<<features-formats-compatible-planes>> for the plane identified by the
+pname:aspectMask of the corresponding subresource.
+This applies both to elink:VkFormat and to coordinates used in the copy,
+which correspond to texels in the _plane_ rather than how these texels map
+to coordinates in the image as a whole.
+
+[NOTE]
+.Note
+====
+For example, the ename:VK_IMAGE_ASPECT_PLANE_1_BIT_KHR plane of a
+ename:VK_FORMAT_G8_B8R8_2PLANE_420_UNORM_KHR image is compatible with an
+image of format ename:VK_FORMAT_R8G8_UNORM and (less usefully) with the
+ename:VK_IMAGE_ASPECT_PLANE_0_BIT_KHR plane of an image of format
+ename:VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16_KHR, as each
+texel is 2 bytes in size.
+====
+endif::VK_KHR_sampler_ycbcr_conversion[]
+
fname:vkCmdCopyImage allows copying between size-compatible compressed and
uncompressed internal formats.
Formats are size-compatible if the element size of the uncompressed format
@@ -260,6 +291,13 @@ This allows the last compressed texel block of the image in each
non-multiple dimension to be included as a source or destination of the
copy.
+ifdef::VK_KHR_sampler_ycbcr_conversion[]
+"`etext:_422`" image formats that are not
+<<features-formats-requiring-sampler-ycbcr-conversion,_multi-planar_>> are
+treated as having a 2{times}1 compressed texel block for the purposes of
+these rules.
+endif::VK_KHR_sampler_ycbcr_conversion[]
+
fname:vkCmdCopyImage can: be used to copy image data between multisample
images, but both images must: have the same number of samples.
@@ -268,9 +306,22 @@ images, but both images must: have the same number of samples.
* [[VUID-vkCmdCopyImage-pRegions-00122]]
The source region specified by a given element of pname:pRegions must:
be a region that is contained within pname:srcImage
+ifdef::VK_KHR_sampler_ycbcr_conversion[]
+ if the pname:srcImage's elink:VkFormat is not a
+ <<features-formats-requiring-sampler-ycbcr-conversion,multi-planar
+ format>>, and must: be a region that is contained within the plane being
+ copied if the pname:srcImage's elink:VkFormat is a multi-planar format
+endif::VK_KHR_sampler_ycbcr_conversion[]
* [[VUID-vkCmdCopyImage-pRegions-00123]]
The destination region specified by a given element of pname:pRegions
must: be a region that is contained within pname:dstImage
+ifdef::VK_KHR_sampler_ycbcr_conversion[]
+ if the pname:dstImage's elink:VkFormat is not a
+ <<features-formats-requiring-sampler-ycbcr-conversion,multi-planar
+ format>>, and must: be a region that is contained within the plane being
+ copied to if the pname:dstImage's elink:VkFormat is a multi-planar
+ format
+endif::VK_KHR_sampler_ycbcr_conversion[]
* [[VUID-vkCmdCopyImage-pRegions-00124]]
The union of all source regions, and the union of all destination
regions, specified by the elements of pname:pRegions, must: not overlap
@@ -287,9 +338,16 @@ endif::VK_KHR_maintenance1[]
* [[VUID-vkCmdCopyImage-srcImage-00126]]
pname:srcImage must: have been created with
ename:VK_IMAGE_USAGE_TRANSFER_SRC_BIT usage flag
+ifndef::VK_KHR_sampler_ycbcr_conversion[]
* [[VUID-vkCmdCopyImage-srcImage-00127]]
If pname:srcImage is non-sparse then it must: be bound completely and
contiguously to a single sname:VkDeviceMemory object
+endif::VK_KHR_sampler_ycbcr_conversion[]
+ifdef::VK_KHR_sampler_ycbcr_conversion[]
+ * [[VUID-vkCmdCopyImage-srcImage-01546]] If pname:srcImage is non-sparse then the image or _disjoint_ plane to be
+ copied must: be bound completely and contiguously to a single
+ sname:VkDeviceMemory object
+endif::VK_KHR_sampler_ycbcr_conversion[]
* [[VUID-vkCmdCopyImage-srcImageLayout-00128]]
pname:srcImageLayout must: specify the layout of the image subresources
of pname:srcImage specified in pname:pRegions at the time this command
@@ -318,9 +376,16 @@ endif::VK_KHR_maintenance1[]
* [[VUID-vkCmdCopyImage-dstImage-00131]]
pname:dstImage must: have been created with
ename:VK_IMAGE_USAGE_TRANSFER_DST_BIT usage flag
+ifndef::VK_KHR_sampler_ycbcr_conversion[]
* [[VUID-vkCmdCopyImage-dstImage-00132]]
If pname:dstImage is non-sparse then it must: be bound completely and
contiguously to a single sname:VkDeviceMemory object
+endif::VK_KHR_sampler_ycbcr_conversion[]
+ifdef::VK_KHR_sampler_ycbcr_conversion[]
+ * [[VUID-vkCmdCopyImage-dstImage-01547]] If pname:dstImage is non-sparse then the image or _disjoint_ plane that
+ is the destination of the copy must: be bound completely and
+ contiguously to a single sname:VkDeviceMemory object
+endif::VK_KHR_sampler_ycbcr_conversion[]
* [[VUID-vkCmdCopyImage-dstImageLayout-00133]]
pname:dstImageLayout must: specify the layout of the image subresources
of pname:dstImage specified in pname:pRegions at the time this command
@@ -337,9 +402,33 @@ ifdef::VK_KHR_shared_presentable_image[]
ename:VK_IMAGE_LAYOUT_GENERAL, or
ename:VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR
endif::VK_KHR_shared_presentable_image[]
+ifndef::VK_KHR_sampler_ycbcr_conversion[]
* [[VUID-vkCmdCopyImage-srcImage-00135]]
The elink:VkFormat of each of pname:srcImage and pname:dstImage must: be
compatible, as defined <<copies-images-format-compatibility, below>>
+endif::VK_KHR_sampler_ycbcr_conversion[]
+ifdef::VK_KHR_sampler_ycbcr_conversion[]
+ * [[VUID-vkCmdCopyImage-srcImage-01548]] If the elink:VkFormat of each of pname:srcImage and pname:dstImage is
+ not a
+ <<features-formats-requiring-sampler-ycbcr-conversion,_multi-planar
+ format_>>, the elink:VkFormat of each of pname:srcImage and
+ pname:dstImage must: be compatible, as defined
+ <<copies-images-format-compatibility, below>>
+ * [[VUID-vkCmdCopyImage-None-01549]] In a copy to or from a plane of a
+ <<features-formats-requiring-sampler-ycbcr-conversion,multi-planar
+ image>>, the elink:VkFormat of the image and plane must: be compatible
+ according to <<features-formats-compatible-planes,the description of
+ compatible planes>> for the plane being copied
+ * [[VUID-vkCmdCopyImage-aspectMask-01550]] When a copy is performed to or from an image with a
+ <<features-formats-requiring-sampler-ycbcr-conversion,multi-planar
+ format>>, the pname:aspectMask of the pname:srcSubresource and/or
+ pname:dstSubresource that refers to the multi-planar image must: be
+ ename:VK_IMAGE_ASPECT_PLANE_0_BIT_KHR,
+ ename:VK_IMAGE_ASPECT_PLANE_1_BIT_KHR, or
+ ename:VK_IMAGE_ASPECT_PLANE_2_BIT_KHR (with
+ ename:VK_IMAGE_ASPECT_PLANE_2_BIT_KHR valid only for a elink:VkFormat
+ with three planes)
+endif::VK_KHR_sampler_ycbcr_conversion[]
* [[VUID-vkCmdCopyImage-srcImage-00136]]
The sample count of pname:srcImage and pname:dstImage must: match
****
@@ -383,11 +472,63 @@ destination.
pname:layerCount layers are copied to the destination image.
endif::VK_KHR_maintenance1[]
+ifdef::VK_KHR_sampler_ycbcr_conversion[]
+Copies involving a <<features-formats-requiring-sampler-ycbcr-conversion,
+multi-planar image format>> specify the region to be copied in terms of the
+_plane_ to be copied, not the coordinates of the multi-planar image.
+This means that copies accessing the R/B planes of "`etext:_422`" format
+images must: fit the copied region within half the pname:width of the parent
+image, and that copies accessing the R/B planes of "`etext:_420`" format
+images must: fit the copied region within half the pname:width and
+pname:height of the parent image.
+endif::VK_KHR_sampler_ycbcr_conversion[]
+
.Valid Usage
****
+ifndef::VK_KHR_sampler_ycbcr_conversion[]
* [[VUID-VkImageCopy-aspectMask-00137]]
The pname:aspectMask member of pname:srcSubresource and
pname:dstSubresource must: match
+endif::VK_KHR_sampler_ycbcr_conversion[]
+ifdef::VK_KHR_sampler_ycbcr_conversion[]
+ * [[VUID-VkImageCopy-srcImage-01551]] If neither the calling command's pname:srcImage nor the calling
+ command's pname:dstImage has a
+ <<features-formats-requiring-sampler-ycbcr-conversion, multi-planar
+ image format>> then the pname:aspectMask member of pname:srcSubresource
+ and pname:dstSubresource must: match
+ * [[VUID-VkImageCopy-srcImage-01552]] If the calling command's pname:srcImage has a elink:VkFormat with
+ <<features-formats-requiring-sampler-ycbcr-conversion,two planes>> then
+ the pname:srcSubresource pname:aspectMask must: be
+ ename:VK_IMAGE_ASPECT_PLANE_0_BIT_KHR or
+ ename:VK_IMAGE_ASPECT_PLANE_1_BIT_KHR
+ * [[VUID-VkImageCopy-srcImage-01553]] If the calling command's pname:srcImage has a elink:VkFormat with
+ <<features-formats-requiring-sampler-ycbcr-conversion,three planes>>
+ then the pname:srcSubresource pname:aspectMask must: be
+ ename:VK_IMAGE_ASPECT_PLANE_0_BIT_KHR,
+ ename:VK_IMAGE_ASPECT_PLANE_1_BIT_KHR, or
+ ename:VK_IMAGE_ASPECT_PLANE_2_BIT_KHR
+ * [[VUID-VkImageCopy-dstImage-01554]] If the calling command's pname:dstImage has a elink:VkFormat with
+ <<features-formats-requiring-sampler-ycbcr-conversion,two planes>> then
+ the pname:dstSubresource pname:aspectMask must: be
+ ename:VK_IMAGE_ASPECT_PLANE_0_BIT_KHR or
+ ename:VK_IMAGE_ASPECT_PLANE_1_BIT_KHR
+ * [[VUID-VkImageCopy-dstImage-01555]] If the calling command's pname:dstImage has a elink:VkFormat with
+ <<features-formats-requiring-sampler-ycbcr-conversion,three planes>>
+ then the pname:dstSubresource pname:aspectMask must: be
+ ename:VK_IMAGE_ASPECT_PLANE_0_BIT_KHR,
+ ename:VK_IMAGE_ASPECT_PLANE_1_BIT_KHR, or
+ ename:VK_IMAGE_ASPECT_PLANE_2_BIT_KHR
+ * [[VUID-VkImageCopy-srcImage-01556]] If the calling command's pname:srcImage has a
+ <<features-formats-requiring-sampler-ycbcr-conversion,multi-planar image
+ format>> and the pname:dstImage does not have a multi-planar image
+ format, the pname:dstSubresource pname:aspectMask must: be
+ ename:VK_IMAGE_ASPECT_COLOR_BIT
+ * [[VUID-VkImageCopy-dstImage-01557]] If the calling command's pname:dstImage has a
+ <<features-formats-requiring-sampler-ycbcr-conversion,multi-planar image
+ format>> and the pname:srcImage does not have a multi-planar image
+ format, the pname:srcSubresource pname:aspectMask must: be
+ ename:VK_IMAGE_ASPECT_COLOR_BIT
+endif::VK_KHR_sampler_ycbcr_conversion[]
ifndef::VK_KHR_maintenance1[]
* [[VUID-VkImageCopy-layerCount-00138]]
The pname:layerCount member of pname:srcSubresource and
@@ -468,40 +609,64 @@ endif::VK_KHR_maintenance1[]
pname:dstSubresource.baseArrayLayer)# must: be less than or equal to the
number of layers in the destination image
* [[VUID-VkImageCopy-srcOffset-00157]]
- If the calling command's pname:srcImage is a compressed format image,
+ If the calling command's pname:srcImage is a compressed image,
+ifdef::VK_KHR_sampler_ycbcr_conversion[]
+ or a _single-plane_, "`etext:_422`" image format,
+endif::VK_KHR_sampler_ycbcr_conversion[]
all members of pname:srcOffset must: be a multiple of the corresponding
dimensions of the compressed texel block
* [[VUID-VkImageCopy-extent-00158]]
- If the calling command's pname:srcImage is a compressed format image,
+ If the calling command's pname:srcImage is a compressed image,
+ifdef::VK_KHR_sampler_ycbcr_conversion[]
+ or a _single-plane_, "`etext:_422`" image format,
+endif::VK_KHR_sampler_ycbcr_conversion[]
pname:extent.width must: be a multiple of the compressed texel block
width or [eq]#(pname:extent.width {plus} pname:srcOffset.x)# must: equal
the source image subresource width
* [[VUID-VkImageCopy-extent-00159]]
- If the calling command's pname:srcImage is a compressed format image,
+ If the calling command's pname:srcImage is a compressed image,
+ifdef::VK_KHR_sampler_ycbcr_conversion[]
+ or a _single-plane_, "`etext:_422`" image format,
+endif::VK_KHR_sampler_ycbcr_conversion[]
pname:extent.height must: be a multiple of the compressed texel block
height or [eq]#(pname:extent.height {plus} pname:srcOffset.y)# must:
equal the source image subresource height
* [[VUID-VkImageCopy-extent-00160]]
- If the calling command's pname:srcImage is a compressed format image,
+ If the calling command's pname:srcImage is a compressed image,
+ifdef::VK_KHR_sampler_ycbcr_conversion[]
+ or a _single-plane_, "`etext:_422`" image format,
+endif::VK_KHR_sampler_ycbcr_conversion[]
pname:extent.depth must: be a multiple of the compressed texel block
depth or [eq]#(pname:extent.depth {plus} pname:srcOffset.z)# must: equal
the source image subresource depth
* [[VUID-VkImageCopy-dstOffset-00162]]
If the calling command's pname:dstImage is a compressed format image,
+ifdef::VK_KHR_sampler_ycbcr_conversion[]
+ or a _single-plane_, "`etext:_422`" image format,
+endif::VK_KHR_sampler_ycbcr_conversion[]
all members of pname:dstOffset must: be a multiple of the corresponding
dimensions of the compressed texel block
* [[VUID-VkImageCopy-extent-00163]]
If the calling command's pname:dstImage is a compressed format image,
+ifdef::VK_KHR_sampler_ycbcr_conversion[]
+ or a _single-plane_, "`etext:_422`" image format,
+endif::VK_KHR_sampler_ycbcr_conversion[]
pname:extent.width must: be a multiple of the compressed texel block
width or [eq]#(pname:extent.width {plus} pname:dstOffset.x)# must: equal
the destination image subresource width
* [[VUID-VkImageCopy-extent-00164]]
If the calling command's pname:dstImage is a compressed format image,
+ifdef::VK_KHR_sampler_ycbcr_conversion[]
+ or a _single-plane_, "`etext:_422`" image format,
+endif::VK_KHR_sampler_ycbcr_conversion[]
pname:extent.height must: be a multiple of the compressed texel block
height or [eq]#(pname:extent.height {plus} pname:dstOffset.y)# must:
equal the destination image subresource height
* [[VUID-VkImageCopy-extent-00165]]
If the calling command's pname:dstImage is a compressed format image,
+ifdef::VK_KHR_sampler_ycbcr_conversion[]
+ or a _single-plane_, "`etext:_422`" image format,
+endif::VK_KHR_sampler_ycbcr_conversion[]
pname:extent.depth must: be a multiple of the compressed texel block
depth or [eq]#(pname:extent.depth {plus} pname:dstOffset.z)# must: equal
the destination image subresource depth
@@ -573,6 +738,25 @@ include::../api/protos/vkCmdCopyBufferToImage.txt[]
Each region in pname:pRegions is copied from the specified region of the
source buffer to the specified region of the destination image.
+ifdef::VK_KHR_sampler_ycbcr_conversion[]
+If the format of pname:dstImage is a
+<<features-formats-requiring-sampler-ycbcr-conversion,multi-planar image
+format>>), regions of each plane to be a target of a copy must: be specified
+separately using the pname:pRegions member of the slink:VkBufferImageCopy
+structure.
+In this case, the pname:aspectMask of pname:imageSubresource must: be
+ename:VK_IMAGE_ASPECT_PLANE_0_BIT_KHR,
+ename:VK_IMAGE_ASPECT_PLANE_1_BIT_KHR, or
+ename:VK_IMAGE_ASPECT_PLANE_2_BIT_KHR.
+For the purposes of fname:vkCmdCopyBufferToImage, each plane of a
+multi-planar image is treated as having the format listed in
+<<features-formats-compatible-planes>> for the plane identified by the
+pname:aspectMask of the corresponding subresource.
+This applies both to elink:VkFormat and to coordinates used in the copy,
+which correspond to texels in the _plane_ rather than how these texels map
+to coordinates in the image as a whole.
+endif::VK_KHR_sampler_ycbcr_conversion[]
+
.Valid Usage
****
* [[VUID-vkCmdCopyBufferToImage-pRegions-00171]]
@@ -581,6 +765,13 @@ source buffer to the specified region of the destination image.
* [[VUID-vkCmdCopyBufferToImage-pRegions-00172]]
The image region specified by a given element of pname:pRegions must: be
a region that is contained within pname:dstImage
+ifdef::VK_KHR_sampler_ycbcr_conversion[]
+ if the pname:dstImage's elink:VkFormat is not a
+ <<features-formats-requiring-sampler-ycbcr-conversion,multi-planar
+ format>>, and must: be a region that is contained within the plane being
+ copied to if the pname:dstImage's elink:VkFormat is a multi-planar
+ format
+endif::VK_KHR_sampler_ycbcr_conversion[]
* [[VUID-vkCmdCopyBufferToImage-pRegions-00173]]
The union of all source regions, and the union of all destination
regions, specified by the elements of pname:pRegions, must: not overlap
@@ -650,11 +841,36 @@ include::../api/protos/vkCmdCopyImageToBuffer.txt[]
Each region in pname:pRegions is copied from the specified region of the
source image to the specified region of the destination buffer.
+ifdef::VK_KHR_sampler_ycbcr_conversion[]
+If the elink:VkFormat of pname:srcImage is a
+<<features-formats-requiring-sampler-ycbcr-conversion,multi-planar image
+format>>, regions of each plane to be a source of a copy must: be specified
+separately using the pname:pRegions member of the slink:VkBufferImageCopy
+structure.
+In this case, the pname:aspectMask of pname:imageSubresource must: be
+ename:VK_IMAGE_ASPECT_PLANE_0_BIT_KHR,
+ename:VK_IMAGE_ASPECT_PLANE_1_BIT_KHR, or
+ename:VK_IMAGE_ASPECT_PLANE_2_BIT_KHR.
+For the purposes of fname:vkCmdCopyBufferToImage, each plane of a
+multi-planar image is treated as having the format listed in
+<<features-formats-compatible-planes>> for the plane identified by the
+pname:aspectMask of the corresponding subresource.
+This applies both to elink:VkFormat and to coordinates used in the copy,
+which correspond to texels in the _plane_ rather than how these texels map
+to coordinates in the image as a whole.
+endif::VK_KHR_sampler_ycbcr_conversion[]
+
.Valid Usage
****
* [[VUID-vkCmdCopyImageToBuffer-pRegions-00182]]
The image region specified by a given element of pname:pRegions must: be
a region that is contained within pname:srcImage
+ifdef::VK_KHR_sampler_ycbcr_conversion[]
+ if the pname:srcImage's elink:VkFormat is not a
+ <<features-formats-requiring-sampler-ycbcr-conversion,multi-planar
+ format>>, and must: be a region that is contained within the plane being
+ copied if the pname:srcImage's elink:VkFormat is a multi-planar format
+endif::VK_KHR_sampler_ycbcr_conversion[]
* [[VUID-vkCmdCopyImageToBuffer-pRegions-00183]]
The buffer region specified by a given element of pname:pRegions must:
be a region that is contained within pname:dstBuffer
@@ -768,10 +984,25 @@ destination image.
.Valid Usage
****
+ifndef::VK_KHR_sampler_ycbcr_conversion[]
* [[VUID-VkBufferImageCopy-bufferOffset-00193]]
If the the calling command's sname:VkImage parameter's format is not a
depth/stencil format, then pname:bufferOffset must: be a multiple of the
format's element size
+endif::VK_KHR_sampler_ycbcr_conversion[]
+ifdef::VK_KHR_sampler_ycbcr_conversion[]
+ * [[VUID-VkBufferImageCopy-bufferOffset-01558]] If the calling command's sname:VkImage parameter's format is not a
+ depth/stencil format or a
+ <<features-formats-requiring-sampler-ycbcr-conversion,multi-planar
+ format>>,cthen pname:bufferOffset must: be a multiple of the format's
+ element size
+ * [[VUID-VkBufferImageCopy-bufferOffset-01559]] If the calling command's sname:VkImage parameter's format is a
+ <<features-formats-requiring-sampler-ycbcr-conversion,multi-planar
+ format>>, then pname:bufferOffset must: be a multiple of the element
+ size of the compatible format for the format and the pname:aspectMask of
+ the pname:imageSubresource as defined in
+ <<features-formats-compatible-planes>>
+endif::VK_KHR_sampler_ycbcr_conversion[]
* [[VUID-VkBufferImageCopy-bufferOffset-00194]]
pname:bufferOffset must: be a multiple of `4`
* [[VUID-VkBufferImageCopy-bufferRowLength-00195]]
@@ -784,10 +1015,22 @@ destination image.
pname:imageOffset.x and [eq]#(pname:imageExtent.width {plus}
pname:imageOffset.x)# must: both be greater than or equal to `0` and
less than or equal to the image subresource width
+ifdef::VK_KHR_sampler_ycbcr_conversion[]
+ where this refers to the width of the _plane_ of the image involved in
+ the copy in the case of a
+ <<features-formats-requiring-sampler-ycbcr-conversion,multi-planar
+ format>>
+endif::VK_KHR_sampler_ycbcr_conversion[]
* [[VUID-VkBufferImageCopy-imageOffset-00198]]
pname:imageOffset.y and [eq]#(imageExtent.height {plus}
pname:imageOffset.y)# must: both be greater than or equal to `0` and
less than or equal to the image subresource height
+ifdef::VK_KHR_sampler_ycbcr_conversion[]
+ where this refers to the height of the _plane_ of the image involved in
+ the copy in the case of a
+ <<features-formats-requiring-sampler-ycbcr-conversion,multi-planar
+ format>>
+endif::VK_KHR_sampler_ycbcr_conversion[]
* [[VUID-VkBufferImageCopy-srcImage-00199]]
If the calling command's pname:srcImage (flink:vkCmdCopyImageToBuffer)
or pname:dstImage (flink:vkCmdCopyBufferToImage) is of type
@@ -802,37 +1045,58 @@ destination image.
or pname:dstImage (flink:vkCmdCopyBufferToImage) is of type
ename:VK_IMAGE_TYPE_1D or ename:VK_IMAGE_TYPE_2D, then
pname:imageOffset.z must: be `0` and pname:imageExtent.depth must: be
- `1`.
+ `1`
* [[VUID-VkBufferImageCopy-bufferRowLength-00203]]
- If the calling command's sname:VkImage parameter is a compressed format
- image, pname:bufferRowLength must: be a multiple of the compressed texel
- block width
+ If the calling command's sname:VkImage parameter is a compressed image,
+ifdef::VK_KHR_sampler_ycbcr_conversion[]
+ or a _single-plane_, "`etext:_422`" image format,
+endif::VK_KHR_sampler_ycbcr_conversion[]
+ pname:bufferRowLength must: be a multiple of the compressed texel block
+ width
* [[VUID-VkBufferImageCopy-bufferImageHeight-00204]]
- If the calling command's sname:VkImage parameter is a compressed format
- image, pname:bufferImageHeight must: be a multiple of the compressed
- texel block height
+ If the calling command's sname:VkImage parameter is a compressed image,
+ifdef::VK_KHR_sampler_ycbcr_conversion[]
+ or a _single-plane_, "`etext:_422`" image format,
+endif::VK_KHR_sampler_ycbcr_conversion[]
+ pname:bufferImageHeight must: be a multiple of the compressed texel
+ block height
* [[VUID-VkBufferImageCopy-imageOffset-00205]]
- If the calling command's sname:VkImage parameter is a compressed format
- image, all members of pname:imageOffset must: be a multiple of the
+ If the calling command's sname:VkImage parameter is a compressed image,
+ifdef::VK_KHR_sampler_ycbcr_conversion[]
+ or a _single-plane_, "`etext:_422`" image format,
+endif::VK_KHR_sampler_ycbcr_conversion[]
+ all members of pname:imageOffset must: be a multiple of the
corresponding dimensions of the compressed texel block
* [[VUID-VkBufferImageCopy-bufferOffset-00206]]
- If the calling command's sname:VkImage parameter is a compressed format
- image, pname:bufferOffset must: be a multiple of the compressed texel
- block size in bytes
+ If the calling command's sname:VkImage parameter is a compressed image,
+ifdef::VK_KHR_sampler_ycbcr_conversion[]
+ or a _single-plane_, "`etext:_422`" image format,
+endif::VK_KHR_sampler_ycbcr_conversion[]
+ pname:bufferOffset must: be a multiple of the compressed texel block
+ size in bytes
* [[VUID-VkBufferImageCopy-imageExtent-00207]]
- If the calling command's sname:VkImage parameter is a compressed format
- image, pname:imageExtent.width must: be a multiple of the compressed
- texel block width or [eq]#(pname:imageExtent.width {plus}
+ If the calling command's sname:VkImage parameter is a compressed image,
+ifdef::VK_KHR_sampler_ycbcr_conversion[]
+ or a _single-plane_, "`etext:_422`" image format,
+endif::VK_KHR_sampler_ycbcr_conversion[]
+ pname:imageExtent.width must: be a multiple of the compressed texel
+ block width or [eq]#(pname:imageExtent.width {plus}
pname:imageOffset.x)# must: equal the image subresource width
* [[VUID-VkBufferImageCopy-imageExtent-00208]]
- If the calling command's sname:VkImage parameter is a compressed format
- image, pname:imageExtent.height must: be a multiple of the compressed
- texel block height or [eq]#(pname:imageExtent.height {plus}
+ If the calling command's sname:VkImage parameter is a compressed image,
+ifdef::VK_KHR_sampler_ycbcr_conversion[]
+ or a _single-plane_, "`etext:_422`" image format,
+endif::VK_KHR_sampler_ycbcr_conversion[]
+ pname:imageExtent.height must: be a multiple of the compressed texel
+ block height or [eq]#(pname:imageExtent.height {plus}
pname:imageOffset.y)# must: equal the image subresource height
* [[VUID-VkBufferImageCopy-imageExtent-00209]]
- If the calling command's sname:VkImage parameter is a compressed format
- image, pname:imageExtent.depth must: be a multiple of the compressed
- texel block depth or [eq]#(pname:imageExtent.depth {plus}
+ If the calling command's sname:VkImage parameter is a compressed image,
+ifdef::VK_KHR_sampler_ycbcr_conversion[]
+ or a _single-plane_, "`etext:_422`" image format,
+endif::VK_KHR_sampler_ycbcr_conversion[]
+ pname:imageExtent.depth must: be a multiple of the compressed texel
+ block depth or [eq]#(pname:imageExtent.depth {plus}
pname:imageOffset.z)# must: equal the image subresource depth
* [[VUID-VkBufferImageCopy-bufferOffset-00210]]
pname:bufferOffset, pname:bufferRowLength, pname:bufferImageHeight and
@@ -844,6 +1108,16 @@ destination image.
* [[VUID-VkBufferImageCopy-aspectMask-00211]]
The pname:aspectMask member of pname:imageSubresource must: specify
aspects present in the calling command's sname:VkImage parameter
+ifdef::VK_KHR_sampler_ycbcr_conversion[]
+ * [[VUID-VkBufferImageCopy-aspectMask-01560]] If the calling command's sname:VkImage parameter's format is a
+ <<features-formats-requiring-sampler-ycbcr-conversion,multi-planar
+ format>>, then the pname:aspectMask member of pname:imageSubresource
+ must: be ename:VK_IMAGE_ASPECT_PLANE_0_BIT_KHR,
+ ename:VK_IMAGE_ASPECT_PLANE_1_BIT_KHR, or
+ ename:VK_IMAGE_ASPECT_PLANE_2_BIT_KHR (with
+ ename:VK_IMAGE_ASPECT_PLANE_2_BIT_KHR valid only for image formats with
+ three planes)
+endif::VK_KHR_sampler_ycbcr_conversion[]
* [[VUID-VkBufferImageCopy-aspectMask-00212]]
The pname:aspectMask member of pname:imageSubresource must: only have a
single bit set
@@ -1068,6 +1342,10 @@ representable range of the destination format, then casting the value.
images) or sname:VkFormatProperties::pname:optimalTilingFeatures (for
optimally tiled images) - as returned by
fname:vkGetPhysicalDeviceFormatProperties
+ifdef::VK_KHR_sampler_ycbcr_conversion[]
+ * [[VUID-vkCmdBlitImage-srcImage-01561]] pname:srcImage must: not use a format listed in
+ <<features-formats-requiring-sampler-ycbcr-conversion>>
+endif::VK_KHR_sampler_ycbcr_conversion[]
* [[VUID-vkCmdBlitImage-srcImage-00219]]
pname:srcImage must: have been created with
ename:VK_IMAGE_USAGE_TRANSFER_SRC_BIT usage flag
@@ -1096,6 +1374,10 @@ endif::VK_KHR_shared_presentable_image[]
images) or sname:VkFormatProperties::pname:optimalTilingFeatures (for
optimally tiled images) - as returned by
fname:vkGetPhysicalDeviceFormatProperties
+ifdef::VK_KHR_sampler_ycbcr_conversion[]
+ * [[VUID-vkCmdBlitImage-dstImage-01562]] pname:dstImage must: not use a format listed in
+ <<features-formats-requiring-sampler-ycbcr-conversion>>
+endif::VK_KHR_sampler_ycbcr_conversion[]
* [[VUID-vkCmdBlitImage-dstImage-00224]]
pname:dstImage must: have been created with
ename:VK_IMAGE_USAGE_TRANSFER_DST_BIT usage flag
diff --git a/doc/specs/vulkan/chapters/descriptorsets.txt b/doc/specs/vulkan/chapters/descriptorsets.txt
index bad7642..d95fbc9 100644
--- a/doc/specs/vulkan/chapters/descriptorsets.txt
+++ b/doc/specs/vulkan/chapters/descriptorsets.txt
@@ -299,6 +299,11 @@ Such variables refer exclusively to the corresponding half of the
descriptor, and can: be combined in the shader with samplers or sampled
images that can: come from the same descriptor or from other combined or
separate descriptor types.
+ifdef::VK_KHR_sampler_ycbcr_conversion[]
+A ename:VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER descriptor set entry that
+uses <<samplers-YCbCr-conversion,sampler Y'C~B~C~R~ conversion>> must: use
+the sampler with the sampled image from the same descriptor.
+endif::VK_KHR_sampler_ycbcr_conversion[]
There are no additional restrictions on how a separate sampler or sampled
image variable is used due to it originating from a combined descriptor.
@@ -659,6 +664,14 @@ ifdef::VK_KHR_push_descriptor[]
descriptors are instead pushed by flink:vkCmdPushDescriptorSetKHR.
endif::VK_KHR_push_descriptor[]
+ifndef::VK_KHR_push_descriptor[]
+[NOTE]
+.Note
+====
+All bits for this type are defined by extensions, and none of those
+extensions are enabled in this build of the specification.
+====
+endif::VK_KHR_push_descriptor[]
--
[open,refpage='VkDescriptorSetLayoutBinding',desc='Structure specifying a descriptor set layout binding',type='structs']
@@ -1483,6 +1496,13 @@ undefined behavior.
This means applications need not populate unused entries with dummy
descriptors.
+ifdef::VK_KHR_maintenance1[]
+If the allocation fails due to no more space in the descriptor pool, and not
+because of system or device memory exhaustion, then
+ename:VK_ERROR_OUT_OF_POOL_MEMORY_KHR must: be returned.
+endif::VK_KHR_maintenance1[]
+
+ifndef::VK_KHR_maintenance2[]
If an allocation fails due to fragmentation, an indeterminate error is
returned with an unspecified error code.
Any returned error other than
@@ -1492,6 +1512,7 @@ endif::VK_KHR_maintenance1[]
ename:VK_ERROR_FRAGMENTED_POOL does not imply its usual meaning:
applications should: assume that the allocation failed due to fragmentation,
and create a new descriptor pool.
+endif::VK_KHR_maintenance2[]
ifdef::VK_KHR_maintenance1[]
fname:vkAllocateDescriptorSets can: be used to create multiple descriptor
@@ -1502,6 +1523,7 @@ from this command, set all entries of the pname:pDescriptorSets array to
dlink:VK_NULL_HANDLE and return the error.
endif::VK_KHR_maintenance1[]
+ifndef::VK_KHR_maintenance2[]
[NOTE]
.Note
====
@@ -1521,6 +1543,7 @@ errors if they were written against earlier revisions.
To ensure full compatibility with earlier patch revisions, these other
errors are allowed.
====
+endif::VK_KHR_maintenance2[]
include::../validity/protos/vkAllocateDescriptorSets.txt[]
--
@@ -1989,6 +2012,36 @@ endif::VK_KHR_maintenance1[]
pname:imageLayout must: match the actual elink:VkImageLayout of each
subresource accessible from pname:imageView at the time this descriptor
is accessed
+ifdef::VK_KHR_sampler_ycbcr_conversion[]
+ * [[VUID-VkDescriptorImageInfo-sampler-01563]] If pname:sampler is used and enables <<samplers-YCbCr-conversion,sampler
+ Y'C~B~C~R~ conversion>>:
+ ** The pname:format of the pname:imageView must: be the same as the
+ elink:VkFormat of the image
+ ** The pname:aspectMask of the pname:imageView must: be
+ ename:VK_IMAGE_ASPECT_COLOR_BIT
+ ** The pname:components.a of the pname:imageView must: be
+ ename:VK_COMPONENT_SWIZZLE_IDENTITY
+ ** The pname:components.r of the pname:imageView must: be
+ ename:VK_COMPONENT_SWIZZLE_IDENTITY
+ ** The pname:components.g of the pname:imageView must: be
+ ename:VK_COMPONENT_SWIZZLE_IDENTITY
+ ** The pname:components.b of the pname:imageView must: be
+ ename:VK_COMPONENT_SWIZZLE_IDENTITY
+ ** The pname:pNext chain of the pname:imageView must: contain a
+ sname:VkSamplerYcbcrConversionInfoKHR which has a pname:conversion
+ which is an _identically defined object_ to the pname:conversion of
+ the sname:VkSamplerYcbcrConversionInfoKHR which is in the pname:pNext
+ chain of the pname:sampler
+ * [[VUID-VkDescriptorImageInfo-sampler-01564]] If pname:sampler is used and does not enable
+ <<samplers-YCbCr-conversion, sampler Y'C~B~C~R~ conversion>> and the
+ elink:VkFormat of the image is a
+ <<features-formats-requiring-sampler-ycbcr-conversion,multi-planar
+ format>>, the image must: have been created with
+ ename:VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT, and the pname:aspectMask of
+ the pname:imageView must: be ename:VK_IMAGE_ASPECT_PLANE_0_BIT_KHR,
+ ename:VK_IMAGE_ASPECT_PLANE_1_BIT_KHR or (for three-plane formats only)
+ ename:VK_IMAGE_ASPECT_PLANE_2_BIT_KHR
+endif::VK_KHR_sampler_ycbcr_conversion[]
****
diff --git a/doc/specs/vulkan/chapters/features.txt b/doc/specs/vulkan/chapters/features.txt
index 61566d8..e839578 100644
--- a/doc/specs/vulkan/chapters/features.txt
+++ b/doc/specs/vulkan/chapters/features.txt
@@ -843,6 +843,32 @@ ifdef::VK_KHR_16bit_storage[]
include::VK_KHR_16bit_storage/16bit_storage_feature_struct.txt[]
endif::VK_KHR_16bit_storage[]
+ifdef::VK_KHR_sampler_ycbcr_conversion[]
+
+[open,refpage='VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR',desc='Structure describing Y\'CbCr conversion features that can be supported by an implementation',type='structs']
+--
+
+The sname:VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR structure is
+defined as:
+
+include::../api/structs/VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR.txt[]
+
+The members of the sname:VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR
+structure describe the following feature:
+
+ * [[features-features-sampler-YCbCr-conversion]]
+ pname:samplerYcbcrConversion indicates whether the implementation
+ supports <<samplers-YCbCr-conversion,sampler Y'C~B~C~R~ conversion>>.
+ If pname:samplerYcbcrConversion is ename:VK_FALSE, sampler Y'C~B~C~R~
+ conversion is not supported, and samplers using sampler Y'C~B~C~R~
+ conversion must: not be used.
+
+include::../validity/structs/VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR.txt[]
+
+--
+
+endif::VK_KHR_sampler_ycbcr_conversion[]
+
ifdef::VK_EXT_blend_operation_advanced[]
[open,refpage='VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT',desc='Structure describing advanced blending features that can be supported by an implementation',type='structs']
@@ -1580,6 +1606,15 @@ ifdef::VK_EXT_discard_rectangles[]
slink:VkPhysicalDeviceDiscardRectanglePropertiesEXT and using
fname:vkGetPhysicalDeviceProperties2KHR to fill out the members.
endif::VK_EXT_discard_rectangles[]
+ifdef::VK_KHR_maintenance2[]
+ * [[features-limits-pointClipping]]
+ sname:VkPhysicalDevicePointClippingPropertiesKHR::pname:pointClippingBehavior
+ defines the clipping behavior of points.
+ This limit can be queried by setting the pname:pNext pointer from a
+ slink:VkPhysicalDeviceProperties2KHR object to an instance of
+ slink:VkPhysicalDevicePointClippingPropertiesKHR and using
+ fname:vkGetPhysicalDeviceProperties2KHR to fill out the members.
+endif::VK_KHR_maintenance2[]
// refBody VkPhysicalDeviceLimits
@@ -1775,6 +1810,34 @@ implementation-dependent limits.
endif::VK_NVX_multiview_per_view_attributes[]
+ifdef::VK_KHR_maintenance2[]
+
+[open,refpage='VkPhysicalDevicePointClippingPropertiesKHR',desc='Structure describing the point clipping behavior supported by an implementation',type='structs']
+--
+
+The sname:VkPhysicalDevicePointClippingPropertiesKHR structure is defined
+as:
+
+include::../api/structs/VkPhysicalDevicePointClippingPropertiesKHR.txt[]
+
+The members of the sname:VkPhysicalDevicePointClippingPropertiesKHR
+structure describe the following implementation-dependent limit:
+
+ * pname:sType is the type of this structure.
+ * pname:pNext is `NULL` or a pointer to an extension-specific structure.
+ * pname:pointClippingBehavior is the point clipping behavior supported by
+ the implementation, and is of type elink:VkPointClippingBehaviorKHR.
+
+If the sname:VkPhysicalDevicePointClippingPropertiesKHR structure is
+included in the pname:pNext chain of flink:VkPhysicalDeviceProperties2KHR,
+it is filled with the implementation-dependent limits.
+
+include::../validity/structs/VkPhysicalDevicePointClippingPropertiesKHR.txt[]
+
+--
+
+endif::VK_KHR_maintenance2[]
+
ifdef::VK_EXT_blend_operation_advanced[]
[open,refpage='VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT',desc='Structure describing advanced blending limits that can be supported by an implementation',type='structs']
@@ -2952,10 +3015,555 @@ include::../api/enums/VkFormat.txt[]
compressed format where each 128-bit compressed texel block encodes a
12{times}12 rectangle of unsigned normalized RGBA texel data with sRGB
nonlinear encoding applied to the RGB components.
+ifdef::VK_KHR_sampler_ycbcr_conversion[]
+ * ename:VK_FORMAT_G8B8G8R8_422_UNORM_KHR specifies a four-component,
+ 32-bit format containing a pair of G components, an R component, and a B
+ component, collectively encoding a 2{times}1 rectangle of unsigned
+ normalized RGB texel data.
+ One G value is present at each _i_ coordinate, with the B and R values
+ shared across both G values and thus recorded at half the horizontal
+ resolution of the image.
+ This format has an 8-bit G component for the even _i_ coordinate in byte
+ 0, an 8-bit B component in byte 1, an 8-bit G component for the odd _i_
+ coordinate in byte 2, and an 8-bit R component in byte 3.
+ Images in this format must: be defined with a width that is a multiple
+ of two.
+ For the purposes of the constraints on copy extents, this format is
+ treated as a compressed format with a 2{times}1 compressed texel block.
+ * ename:VK_FORMAT_B8G8R8G8_422_UNORM_KHR specifies a four-component,
+ 32-bit format containing a pair of G components, an R component, and a B
+ component, collectively encoding a 2{times}1 rectangle of unsigned
+ normalized RGB texel data.
+ One G value is present at each _i_ coordinate, with the B and R values
+ shared across both G values and thus recorded at half the horizontal
+ resolution of the image.
+ This format has an 8-bit B component in byte 0, an 8-bit G component for
+ the even _i_ coordinate in byte 1, an 8-bit R component in byte 2, and
+ an 8-bit G component for the odd _i_ coordinate in byte 3.
+ Images in this format must: be defined with a width that is a multiple
+ of two.
+ For the purposes of the constraints on copy extents, this format is
+ treated as a compressed format with a 2{times}1 compressed texel block.
+ * ename:VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM_KHR specifies a unsigned
+ normalized _multi-planar format_ that has an 8-bit G component in plane
+ 0, an 8-bit B component in plane 1, and an 8-bit R component in plane 2.
+ The horizontal and vertical dimensions of the R and B planes are halved
+ relative to the image dimensions, and each R and B component is shared
+ with the G components for which latexmath:[\lfloor i_G \times 0.5
+ \rfloor = i_B = i_R] and latexmath:[\lfloor j_G \times 0.5 \rfloor = j_B
+ = j_R].
+ The location of each plane when this image is in linear layout can be
+ determined via vkGetImageSubresourceLayout, using
+ ename:VK_IMAGE_ASPECT_PLANE_0_BIT_KHR for the G plane,
+ ename:VK_IMAGE_ASPECT_PLANE_1_BIT_KHR for the B plane, and
+ ename:VK_IMAGE_ASPECT_PLANE_2_BIT_KHR for the R plane.
+ Images in this format must: be defined with a width and height that is a
+ multiple of two.
+ * ename:VK_FORMAT_G8_B8R8_2PLANE_420_UNORM_KHR specifies a unsigned
+ normalized _multi-planar format_ that has an 8-bit G component in plane
+ 0, and a two-component, 16-bit BR plane 1 consisting of an 8-bit B
+ component in byte 0 and an 8-bit R component in byte 1.
+ The horizontal and vertical dimensions of the BR plane is halved
+ relative to the image dimensions, and each R and B value is shared with
+ the G components for which latexmath:[\lfloor i_G \times 0.5 \rfloor =
+ i_B = i_R] and latexmath:[\lfloor j_G \times 0.5 \rfloor = j_B = j_R].
+ The location of each plane when this image is in linear layout can be
+ determined via vkGetImageSubresourceLayout, using
+ ename:VK_IMAGE_ASPECT_PLANE_0_BIT_KHR for the G plane, and
+ ename:VK_IMAGE_ASPECT_PLANE_1_BIT_KHR for the BR plane.
+ Images in this format must: be defined with a width and height that is a
+ multiple of two.
+ * ename:VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM_KHR specifies a unsigned
+ normalized _multi-planar format_ that has an 8-bit G component in plane
+ 0, an 8-bit B component in plane 1, and an 8-bit R component in plane 2.
+ The horizontal dimension of the R and B plane is halved relative to the
+ image dimensions, and each R and B value is shared with the G components
+ for which latexmath:[\lfloor i_G \times 0.5 \rfloor = i_B = i_R].
+ The location of each plane when this image is in linear layout can be
+ determined via vkGetImageSubresourceLayout, using
+ ename:VK_IMAGE_ASPECT_PLANE_0_BIT_KHR for the G plane,
+ ename:VK_IMAGE_ASPECT_PLANE_1_BIT_KHR for the B plane, and
+ ename:VK_IMAGE_ASPECT_PLANE_2_BIT_KHR for the R plane.
+ Images in this format must: be defined with a width that is a multiple
+ of two.
+ * ename:VK_FORMAT_G8_B8R8_2PLANE_422_UNORM_KHR specifies a unsigned
+ normalized _multi-planar format_ that has an 8-bit G component in plane
+ 0, and a two-component, 16-bit BR plane 1 consisting of an 8-bit B
+ component in byte 0 and an 8-bit R component in byte 1.
+ The horizontal dimensions of the BR plane is halved relative to the
+ image dimensions, and each R and B value is shared with the G components
+ for which latexmath:[\lfloor i_G \times 0.5 \rfloor = i_B = i_R].
+ The location of each plane when this image is in linear layout can be
+ determined via vkGetImageSubresourceLayout, using
+ ename:VK_IMAGE_ASPECT_PLANE_0_BIT_KHR for the G plane, and
+ ename:VK_IMAGE_ASPECT_PLANE_1_BIT_KHR for the BR plane.
+ Images in this format must: be defined with a width that is a multiple
+ of two.
+ * ename:VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM_KHR specifies a unsigned
+ normalized _multi-planar format_ that has an 8-bit G component in plane
+ 0, an 8-bit B component in plane 1, and an 8-bit R component in plane 2.
+ Each plane has the same dimensions and each R, G and B component
+ contributes to a single texel.
+ The location of each plane when this image is in linear layout can be
+ determined via vkGetImageSubresourceLayout, using
+ ename:VK_IMAGE_ASPECT_PLANE_0_BIT_KHR for the G plane,
+ ename:VK_IMAGE_ASPECT_PLANE_1_BIT_KHR for the B plane, and
+ ename:VK_IMAGE_ASPECT_PLANE_2_BIT_KHR for the R plane.
+ * ename:VK_FORMAT_R10X6_UNORM_PACK16_KHR specifies a one-component, 16-bit
+ unsigned normalized format that has a single 10-bit R component in the
+ top 10 bits of a 16-bit word, with the bottom 6 bits set to 0.
+ * ename:VK_FORMAT_R10X6G10X6_UNORM_2PACK16_KHR specifies a two-component,
+ 32-bit unsigned normalized format that has a 10-bit R component in the
+ top 10 bits of the word in bytes 0..1, and a 10-bit G component in the
+ top 10 bits of the word in bytes 2..3, with the bottom 6 bits of each
+ word set to 0.
+ * ename:VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16_KHR specifies a
+ four-component, 64-bit unsigned normalized format that has a 10-bit R
+ component in the top 10 bits of the word in bytes 0..1, a 10-bit G
+ component in the top 10 bits of the word in bytes 2..3, a 10-bit B
+ component in the top 10 bits of the word in bytes 4..5, and a 10-bit A
+ component in the top 10 bits of the word in bytes 6..7, with the bottom
+ 6 bits of each word set to 0.
+ * ename:VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16_KHR specifies a
+ four-component, 64-bit format containing a pair of G components, an R
+ component, and a B component, collectively encoding a 2{times}1
+ rectangle of unsigned normalized RGB texel data.
+ One G value is present at each _i_ coordinate, with the B and R values
+ shared across both G values and thus recorded at half the horizontal
+ resolution of the image.
+ This format has a 10-bit G component for the even _i_ coordinate in the
+ top 10 bits of the word in bytes 0..1, a 10-bit B component in the top
+ 10 bits of the word in bytes 2..3, a 10-bit G component for the odd _i_
+ coordinate in the top 10 bits of the word in bytes 4..5, and a 10-bit R
+ component in the top 10 bits of the word in bytes 6..7, with the bottom
+ 6 bits of each word set to 0.
+ Images in this format must: be defined with a width that is a multiple
+ of two.
+ For the purposes of the constraints on copy extents, this format is
+ treated as a compressed format with a 2{times}1 compressed texel block.
+ * ename:VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16_KHR specifies a
+ four-component, 64-bit format containing a pair of G components, an R
+ component, and a B component, collectively encoding a 2{times}1
+ rectangle of unsigned normalized RGB texel data.
+ One G value is present at each _i_ coordinate, with the B and R values
+ shared across both G values and thus recorded at half the horizontal
+ resolution of the image.
+ This format has a 10-bit B component in the top 10 bits of the word in
+ bytes 0..1, a 10-bit G component for the even _i_ coordinate in the top
+ 10 bits of the word in bytes 2..3, a 10-bit R component in the top 10
+ bits of the word in bytes 4..5, and a 10-bit G component for the odd _i_
+ coordinate in the top 10 bits of the word in bytes 6..7, with the bottom
+ 6 bits of each word set to 0.
+ Images in this format must: be defined with a width that is a multiple
+ of two.
+ For the purposes of the constraints on copy extents, this format is
+ treated as a compressed format with a 2{times}1 compressed texel block.
+ * ename:VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16_KHR specifies
+ a unsigned normalized _multi-planar format_ that has a 10-bit G
+ component in the top 10 bits of each 16-bit word of plane 0, a 10-bit B
+ component in the top 10 bits of each 16-bit word of plane 1, and a
+ 10-bit R component in the top 10 bits of each 16-bit word of plane 2,
+ with the bottom 6 bits of each word set to 0.
+ The horizontal and vertical dimensions of the R and B planes are halved
+ relative to the image dimensions, and each R and B component is shared
+ with the G components for which latexmath:[\lfloor i_G \times 0.5
+ \rfloor = i_B = i_R] and latexmath:[\lfloor j_G \times 0.5 \rfloor = j_B
+ = j_R].
+ The location of each plane when this image is in linear layout can be
+ determined via vkGetImageSubresourceLayout, using
+ ename:VK_IMAGE_ASPECT_PLANE_0_BIT_KHR for the G plane,
+ ename:VK_IMAGE_ASPECT_PLANE_1_BIT_KHR for the B plane, and
+ ename:VK_IMAGE_ASPECT_PLANE_2_BIT_KHR for the R plane.
+ Images in this format must: be defined with a width and height that is a
+ multiple of two.
+ * ename:VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16_KHR specifies
+ a unsigned normalized _multi-planar format_ that has a 10-bit G
+ component in the top 10 bits of each 16-bit word of plane 0, and a
+ two-component, 32-bit BR plane 1 consisting of a 10-bit B component in
+ the top 10 bits of the word in bytes 0..1, and a 10-bit R component in
+ the top 10 bits of the word in bytes 2..3, the bottom 6 bits of each
+ word set to 0.
+ The horizontal and vertical dimensions of the BR plane is halved
+ relative to the image dimensions, and each R and B value is shared with
+ the G components for which latexmath:[\lfloor i_G \times 0.5 \rfloor =
+ i_B = i_R] and latexmath:[\lfloor j_G \times 0.5 \rfloor = j_B = j_R].
+ The location of each plane when this image is in linear layout can be
+ determined via vkGetImageSubresourceLayout, using
+ ename:VK_IMAGE_ASPECT_PLANE_0_BIT_KHR for the G plane, and
+ ename:VK_IMAGE_ASPECT_PLANE_1_BIT_KHR for the BR plane.
+ Images in this format must: be defined with a width and height that is a
+ multiple of two.
+ * ename:VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16_KHR specifies
+ a unsigned normalized _multi-planar format_ that has a 10-bit G
+ component in the top 10 bits of each 16-bit word of plane 0, a 10-bit B
+ component in the top 10 bits of each 16-bit word of plane 1, and a
+ 10-bit R component in the top 10 bits of each 16-bit word of plane 2,
+ with the bottom 6 bits of each word set to 0.
+ The horizontal dimension of the R and B plane is halved relative to the
+ image dimensions, and each R and B value is shared with the G components
+ for which latexmath:[\lfloor i_G \times 0.5 \rfloor = i_B = i_R].
+ The location of each plane when this image is in linear layout can be
+ determined via vkGetImageSubresourceLayout, using
+ ename:VK_IMAGE_ASPECT_PLANE_0_BIT_KHR for the G plane,
+ ename:VK_IMAGE_ASPECT_PLANE_1_BIT_KHR for the B plane, and
+ ename:VK_IMAGE_ASPECT_PLANE_2_BIT_KHR for the R plane.
+ Images in this format must: be defined with a width that is a multiple
+ of two.
+ * ename:VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16_KHR specifies
+ a unsigned normalized _multi-planar format_ that has a 10-bit G
+ component in the top 10 bits of each 16-bit word of plane 0, and a
+ two-component, 32-bit BR plane 1 consisting of a 10-bit B component in
+ the top 10 bits of the word in bytes 0..1, and a 10-bit R component in
+ the top 10 bits of the word in bytes 2..3, the bottom 6 bits of each
+ word set to 0.
+ The horizontal dimensions of the BR plane is halved relative to the
+ image dimensions, and each R and B value is shared with the G components
+ for which latexmath:[\lfloor i_G \times 0.5 \rfloor = i_B = i_R].
+ The location of each plane when this image is in linear layout can be
+ determined via vkGetImageSubresourceLayout, using
+ ename:VK_IMAGE_ASPECT_PLANE_0_BIT_KHR for the G plane, and
+ ename:VK_IMAGE_ASPECT_PLANE_1_BIT_KHR for the BR plane.
+ Images in this format must: be defined with a width that is a multiple
+ of two.
+ * ename:VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16_KHR specifies
+ a unsigned normalized _multi-planar format_ that has a 10-bit G
+ component in the top 10 bits of each 16-bit word of plane 0, a 10-bit B
+ component in the top 10 bits of each 16-bit word of plane 1, and a
+ 10-bit R component in the top 10 bits of each 16-bit word of plane 2,
+ with the bottom 6 bits of each word set to 0.
+ Each plane has the same dimensions and each R, G and B component
+ contributes to a single texel.
+ The location of each plane when this image is in linear layout can be
+ determined via vkGetImageSubresourceLayout, using
+ ename:VK_IMAGE_ASPECT_PLANE_0_BIT_KHR for the G plane,
+ ename:VK_IMAGE_ASPECT_PLANE_1_BIT_KHR for the B plane, and
+ ename:VK_IMAGE_ASPECT_PLANE_2_BIT_KHR for the R plane.
+ * ename:VK_FORMAT_R12X4_UNORM_PACK16_KHR specifies a one-component, 16-bit
+ unsigned normalized format that has a single 12-bit R component in the
+ top 12 bits of a 16-bit word, with the bottom 4 bits set to 0.
+ * ename:VK_FORMAT_R12X4G12X4_UNORM_2PACK16_KHR specifies a two-component,
+ 32-bit unsigned normalized format that has a 12-bit R component in the
+ top 12 bits of the word in bytes 0..1, and a 12-bit G component in the
+ top 12 bits of the word in bytes 2..3, with the bottom 4 bits of each
+ word set to 0.
+ * ename:VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16_KHR specifies a
+ four-component, 64-bit unsigned normalized format that has a 12-bit R
+ component in the top 12 bits of the word in bytes 0..1, a 12-bit G
+ component in the top 12 bits of the word in bytes 2..3, a 12-bit B
+ component in the top 12 bits of the word in bytes 4..5, and a 12-bit A
+ component in the top 12 bits of the word in bytes 6..7, with the bottom
+ 4 bits of each word set to 0.
+ * ename:VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16_KHR specifies a
+ four-component, 64-bit format containing a pair of G components, an R
+ component, and a B component, collectively encoding a 2{times}1
+ rectangle of unsigned normalized RGB texel data.
+ One G value is present at each _i_ coordinate, with the B and R values
+ shared across both G values and thus recorded at half the horizontal
+ resolution of the image.
+ This format has a 12-bit G component for the even _i_ coordinate in the
+ top 12 bits of the word in bytes 0..1, a 12-bit B component in the top
+ 12 bits of the word in bytes 2..3, a 12-bit G component for the odd _i_
+ coordinate in the top 12 bits of the word in bytes 4..5, and a 12-bit R
+ component in the top 12 bits of the word in bytes 6..7, with the bottom
+ 4 bits of each word set to 0.
+ Images in this format must: be defined with a width that is a multiple
+ of two.
+ For the purposes of the constraints on copy extents, this format is
+ treated as a compressed format with a 2{times}1 compressed texel block.
+ * ename:VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16_KHR specifies a
+ four-component, 64-bit format containing a pair of G components, an R
+ component, and a B component, collectively encoding a 2{times}1
+ rectangle of unsigned normalized RGB texel data.
+ One G value is present at each _i_ coordinate, with the B and R values
+ shared across both G values and thus recorded at half the horizontal
+ resolution of the image.
+ This format has a 12-bit B component in the top 12 bits of the word in
+ bytes 0..1, a 12-bit G component for the even _i_ coordinate in the top
+ 12 bits of the word in bytes 2..3, a 12-bit R component in the top 12
+ bits of the word in bytes 4..5, and a 12-bit G component for the odd _i_
+ coordinate in the top 12 bits of the word in bytes 6..7, with the bottom
+ 4 bits of each word set to 0.
+ Images in this format must: be defined with a width that is a multiple
+ of two.
+ For the purposes of the constraints on copy extents, this format is
+ treated as a compressed format with a 2{times}1 compressed texel block.
+ * ename:VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16_KHR specifies
+ a unsigned normalized _multi-planar format_ that has a 12-bit G
+ component in the top 12 bits of each 16-bit word of plane 0, a 12-bit B
+ component in the top 12 bits of each 16-bit word of plane 1, and a
+ 12-bit R component in the top 12 bits of each 16-bit word of plane 2,
+ with the bottom 4 bits of each word set to 0.
+ The horizontal and vertical dimensions of the R and B planes are halved
+ relative to the image dimensions, and each R and B component is shared
+ with the G components for which latexmath:[\lfloor i_G \times 0.5
+ \rfloor = i_B = i_R] and latexmath:[\lfloor j_G \times 0.5 \rfloor = j_B
+ = j_R].
+ The location of each plane when this image is in linear layout can be
+ determined via vkGetImageSubresourceLayout, using
+ ename:VK_IMAGE_ASPECT_PLANE_0_BIT_KHR for the G plane,
+ ename:VK_IMAGE_ASPECT_PLANE_1_BIT_KHR for the B plane, and
+ ename:VK_IMAGE_ASPECT_PLANE_2_BIT_KHR for the R plane.
+ Images in this format must: be defined with a width and height that is a
+ multiple of two.
+ * ename:VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16_KHR specifies
+ a unsigned normalized _multi-planar format_ that has a 12-bit G
+ component in the top 12 bits of each 16-bit word of plane 0, and a
+ two-component, 32-bit BR plane 1 consisting of a 12-bit B component in
+ the top 12 bits of the word in bytes 0..1, and a 12-bit R component in
+ the top 12 bits of the word in bytes 2..3, the bottom 4 bits of each
+ word set to 0.
+ The horizontal and vertical dimensions of the BR plane is halved
+ relative to the image dimensions, and each R and B value is shared with
+ the G components for which latexmath:[\lfloor i_G \times 0.5 \rfloor =
+ i_B = i_R] and latexmath:[\lfloor j_G \times 0.5 \rfloor = j_B = j_R].
+ The location of each plane when this image is in linear layout can be
+ determined via vkGetImageSubresourceLayout, using
+ ename:VK_IMAGE_ASPECT_PLANE_0_BIT_KHR for the G plane, and
+ ename:VK_IMAGE_ASPECT_PLANE_1_BIT_KHR for the BR plane.
+ Images in this format must: be defined with a width and height that is a
+ multiple of two.
+ * ename:VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16_KHR specifies
+ a unsigned normalized _multi-planar format_ that has a 12-bit G
+ component in the top 12 bits of each 16-bit word of plane 0, a 12-bit B
+ component in the top 12 bits of each 16-bit word of plane 1, and a
+ 12-bit R component in the top 12 bits of each 16-bit word of plane 2,
+ with the bottom 4 bits of each word set to 0.
+ The horizontal dimension of the R and B plane is halved relative to the
+ image dimensions, and each R and B value is shared with the G components
+ for which latexmath:[\lfloor i_G \times 0.5 \rfloor = i_B = i_R].
+ The location of each plane when this image is in linear layout can be
+ determined via vkGetImageSubresourceLayout, using
+ ename:VK_IMAGE_ASPECT_PLANE_0_BIT_KHR for the G plane,
+ ename:VK_IMAGE_ASPECT_PLANE_1_BIT_KHR for the B plane, and
+ ename:VK_IMAGE_ASPECT_PLANE_2_BIT_KHR for the R plane.
+ Images in this format must: be defined with a width that is a multiple
+ of two.
+ * ename:VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16_KHR specifies
+ a unsigned normalized _multi-planar format_ that has a 12-bit G
+ component in the top 12 bits of each 16-bit word of plane 0, and a
+ two-component, 32-bit BR plane 1 consisting of a 12-bit B component in
+ the top 12 bits of the word in bytes 0..1, and a 12-bit R component in
+ the top 12 bits of the word in bytes 2..3, the bottom 4 bits of each
+ word set to 0.
+ The horizontal dimensions of the BR plane is halved relative to the
+ image dimensions, and each R and B value is shared with the G components
+ for which latexmath:[\lfloor i_G \times 0.5 \rfloor = i_B = i_R].
+ The location of each plane when this image is in linear layout can be
+ determined via vkGetImageSubresourceLayout, using
+ ename:VK_IMAGE_ASPECT_PLANE_0_BIT_KHR for the G plane, and
+ ename:VK_IMAGE_ASPECT_PLANE_1_BIT_KHR for the BR plane.
+ Images in this format must: be defined with a width that is a multiple
+ of two.
+ * ename:VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16_KHR specifies
+ a unsigned normalized _multi-planar format_ that has a 12-bit G
+ component in the top 12 bits of each 16-bit word of plane 0, a 12-bit B
+ component in the top 12 bits of each 16-bit word of plane 1, and a
+ 12-bit R component in the top 12 bits of each 16-bit word of plane 2,
+ with the bottom 4 bits of each word set to 0.
+ Each plane has the same dimensions and each R, G and B component
+ contributes to a single texel.
+ The location of each plane when this image is in linear layout can be
+ determined via vkGetImageSubresourceLayout, using
+ ename:VK_IMAGE_ASPECT_PLANE_0_BIT_KHR for the G plane,
+ ename:VK_IMAGE_ASPECT_PLANE_1_BIT_KHR for the B plane, and
+ ename:VK_IMAGE_ASPECT_PLANE_2_BIT_KHR for the R plane.
+ * ename:VK_FORMAT_G16B16G16R16_422_UNORM_KHR specifies a four-component,
+ 64-bit format containing a pair of G components, an R component, and a B
+ component, collectively encoding a 2{times}1 rectangle of unsigned
+ normalized RGB texel data.
+ One G value is present at each _i_ coordinate, with the B and R values
+ shared across both G values and thus recorded at half the horizontal
+ resolution of the image.
+ This format has a 16-bit G component for the even _i_ coordinate in the
+ word in bytes 0..1, a 16-bit B component in the word in bytes 2..3, a
+ 16-bit G component for the odd _i_ coordinate in the word in bytes 4..5,
+ and a 16-bit R component in the word in bytes 6..7.
+ Images in this format must: be defined with a width that is a multiple
+ of two.
+ For the purposes of the constraints on copy extents, this format is
+ treated as a compressed format with a 2{times}1 compressed texel block.
+ * ename:VK_FORMAT_B16G16R16G16_422_UNORM_KHR specifies a four-component,
+ 64-bit format containing a pair of G components, an R component, and a B
+ component, collectively encoding a 2{times}1 rectangle of unsigned
+ normalized RGB texel data.
+ One G value is present at each _i_ coordinate, with the B and R values
+ shared across both G values and thus recorded at half the horizontal
+ resolution of the image.
+ This format has a 16-bit B component in the word in bytes 0..1, a 16-bit
+ G component for the even _i_ coordinate in the word in bytes 2..3, a
+ 16-bit R component in the word in bytes 4..5, and a 16-bit G component
+ for the odd _i_ coordinate in the word in bytes 6..7.
+ Images in this format must: be defined with a width that is a multiple
+ of two.
+ For the purposes of the constraints on copy extents, this format is
+ treated as a compressed format with a 2{times}1 compressed texel block.
+ * ename:VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM_KHR specifies a unsigned
+ normalized _multi-planar format_ that has a 16-bit G component in each
+ 16-bit word of plane 0, a 16-bit B component in each 16-bit word of
+ plane 1, and a 16-bit R component in each 16-bit word of plane 2.
+ The horizontal and vertical dimensions of the R and B planes are halved
+ relative to the image dimensions, and each R and B component is shared
+ with the G components for which latexmath:[\lfloor i_G \times 0.5\
+ rfloor = i_B = i_R] and latexmath:[\lfloor j_G \times 0.5 \rfloor = j_B
+ = j_R].
+ The location of each plane when this image is in linear layout can be
+ determined via vkGetImageSubresourceLayout, using
+ ename:VK_IMAGE_ASPECT_PLANE_0_BIT_KHR for the G plane,
+ ename:VK_IMAGE_ASPECT_PLANE_1_BIT_KHR for the B plane, and
+ ename:VK_IMAGE_ASPECT_PLANE_2_BIT_KHR for the R plane.
+ Images in this format must: be defined with a width and height that is a
+ multiple of two.
+ * ename:VK_FORMAT_G16_B16R16_2PLANE_420_UNORM_KHR specifies a unsigned
+ normalized _multi-planar format_ that has a 16-bit G component in each
+ 16-bit word of plane 0, and a two-component, 32-bit BR plane 1
+ consisting of a 16-bit B component in the word in bytes 0..1, and a
+ 16-bit R component in the word in bytes 2..3.
+ The horizontal and vertical dimensions of the BR plane is halved
+ relative to the image dimensions, and each R and B value is shared with
+ the G components for which latexmath:[\lfloor i_G \times 0.5 \rfloor =
+ i_B = i_R] and latexmath:[\lfloor j_G \times 0.5 \rfloor = j_B = j_R].
+ The location of each plane when this image is in linear layout can be
+ determined via vkGetImageSubresourceLayout, using
+ ename:VK_IMAGE_ASPECT_PLANE_0_BIT_KHR for the G plane, and
+ ename:VK_IMAGE_ASPECT_PLANE_1_BIT_KHR for the BR plane.
+ Images in this format must: be defined with a width and height that is a
+ multiple of two.
+ * ename:VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM_KHR specifies a unsigned
+ normalized _multi-planar format_ that has a 16-bit G component in each
+ 16-bit word of plane 0, a 16-bit B component in each 16-bit word of
+ plane 1, and a 16-bit R component in each 16-bit word of plane 2.
+ The horizontal dimension of the R and B plane is halved relative to the
+ image dimensions, and each R and B value is shared with the G components
+ for which latexmath:[\lfloor i_G \times 0.5 \rfloor = i_B = i_R].
+ The location of each plane when this image is in linear layout can be
+ determined via vkGetImageSubresourceLayout, using
+ ename:VK_IMAGE_ASPECT_PLANE_0_BIT_KHR for the G plane,
+ ename:VK_IMAGE_ASPECT_PLANE_1_BIT_KHR for the B plane, and
+ ename:VK_IMAGE_ASPECT_PLANE_2_BIT_KHR for the R plane.
+ Images in this format must: be defined with a width that is a multiple
+ of two.
+ * ename:VK_FORMAT_G16_B16R16_2PLANE_422_UNORM_KHR specifies a unsigned
+ normalized _multi-planar format_ that has a 16-bit G component in each
+ 16-bit word of plane 0, and a two-component, 32-bit BR plane 1
+ consisting of a 16-bit B component in the word in bytes 0..1, and a
+ 16-bit R component in the word in bytes 2..3.
+ The horizontal dimensions of the BR plane is halved relative to the
+ image dimensions, and each R and B value is shared with the G components
+ for which latexmath:[\lfloor i_G \times 0.5 \rfloor = i_B = i_R].
+ The location of each plane when this image is in linear layout can be
+ determined via vkGetImageSubresourceLayout, using
+ ename:VK_IMAGE_ASPECT_PLANE_0_BIT_KHR for the G plane, and
+ ename:VK_IMAGE_ASPECT_PLANE_1_BIT_KHR for the BR plane.
+ Images in this format must: be defined with a width that is a multiple
+ of two.
+ * ename:VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM_KHR specifies a unsigned
+ normalized _multi-planar format_ that has a 16-bit G component in each
+ 16-bit word of plane 0, a 16-bit B component in each 16-bit word of
+ plane 1, and a 16-bit R component in each 16-bit word of plane 2.
+ Each plane has the same dimensions and each R, G and B component
+ contributes to a single texel.
+ The location of each plane when this image is in linear layout can be
+ determined via vkGetImageSubresourceLayout, using
+ ename:VK_IMAGE_ASPECT_PLANE_0_BIT_KHR for the G plane,
+ ename:VK_IMAGE_ASPECT_PLANE_1_BIT_KHR for the B plane, and
+ ename:VK_IMAGE_ASPECT_PLANE_2_BIT_KHR for the R plane.
+endif::VK_KHR_sampler_ycbcr_conversion[]
--
+ifdef::VK_KHR_sampler_ycbcr_conversion[]
+
+[[features-formats-compatible-planes]]
+==== Compatible formats of planes of multi-planar formats
+
+Individual planes of multi-planar formats are _compatible_ with single-plane
+formats if they occupy the same number of bits per data element.
+In the following table, individual planes of a _multi-planar_ format are
+compatible with the format listed against the relevant plane index for that
+multi-planar format.
+
+.Plane Format Compatibility Table
+[width="95%",cols="1,6,3,3",options="header"]
+|====
+^| Plane ^| Compatible format for plane ^| Width relative to the width _w_ of the plane with the largest dimensions ^| Height relative to the height _h_ of the plane with the largest dimensions
+4+| *ename:VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM_KHR*
+^| 0 ^| ename:VK_FORMAT_R8_UNORM ^| w ^| h
+^| 1 ^| ename:VK_FORMAT_R8_UNORM ^| w/2 ^| h/2
+^| 2 ^| ename:VK_FORMAT_R8_UNORM ^| w/2 ^| h/2
+4+| *ename:VK_FORMAT_G8_B8R8_2PLANE_420_UNORM_KHR*
+^| 0 ^| ename:VK_FORMAT_R8_UNORM ^| w ^| h
+^| 1 ^| ename:VK_FORMAT_R8G8_UNORM ^| w/2 ^| h/2
+4+| *ename:VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM_KHR*
+^| 0 ^| ename:VK_FORMAT_R8_UNORM ^| w ^| h
+^| 1 ^| ename:VK_FORMAT_R8_UNORM ^| w/2 ^| h
+^| 2 ^| ename:VK_FORMAT_R8_UNORM ^| w/2 ^| h
+4+| *ename:VK_FORMAT_G8_B8R8_2PLANE_422_UNORM_KHR*
+^| 0 ^| ename:VK_FORMAT_R8_UNORM ^| w ^| h
+^| 1 ^| ename:VK_FORMAT_R8G8_UNORM ^| w/2 ^| h
+4+| *ename:VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM_KHR*
+^| 0 ^| ename:VK_FORMAT_R8_UNORM ^| w ^| h
+^| 1 ^| ename:VK_FORMAT_R8_UNORM ^| w ^| h
+^| 2 ^| ename:VK_FORMAT_R8_UNORM ^| w ^| h
+4+| *ename:VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16_KHR*
+^| 0 ^| ename:VK_FORMAT_R10X6_UNORM_PACK16_KHR ^| w ^| h
+^| 1 ^| ename:VK_FORMAT_R10X6_UNORM_PACK16_KHR ^| w/2 ^| h/2
+^| 2 ^| ename:VK_FORMAT_R10X6_UNORM_PACK16_KHR ^| w/2 ^| h/2
+4+| *ename:VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16_KHR*
+^| 0 ^| ename:VK_FORMAT_R10X6_UNORM_PACK16_KHR ^| w ^| h
+^| 1 ^| ename:VK_FORMAT_R10X6G10X6_UNORM_2PACK16_KHR ^| w/2 ^| h/2
+4+| *ename:VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16_KHR*
+^| 0 ^| ename:VK_FORMAT_R10X6_UNORM_PACK16_KHR ^| w ^| h
+^| 1 ^| ename:VK_FORMAT_R10X6_UNORM_PACK16_KHR ^| w/2 ^| h
+^| 2 ^| ename:VK_FORMAT_R10X6_UNORM_PACK16_KHR ^| w/2 ^| h
+4+| *ename:VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16_KHR*
+^| 0 ^| ename:VK_FORMAT_R10X6_UNORM_PACK16_KHR ^| w ^| h
+^| 1 ^| ename:VK_FORMAT_R10X6G10X6_UNORM_2PACK16_KHR ^| w/2 ^| h
+4+| *ename:VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16_KHR*
+^| 0 ^| ename:VK_FORMAT_R10X6_UNORM_PACK16_KHR ^| w ^| h
+^| 1 ^| ename:VK_FORMAT_R10X6_UNORM_PACK16_KHR ^| w ^| h
+^| 2 ^| ename:VK_FORMAT_R10X6_UNORM_PACK16_KHR ^| w ^| h
+4+| *ename:VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16_KHR*
+^| 0 ^| ename:VK_FORMAT_R12X4_UNORM_PACK16_KHR ^| w ^| h
+^| 1 ^| ename:VK_FORMAT_R12X4_UNORM_PACK16_KHR ^| w/2 ^| h/2
+^| 2 ^| ename:VK_FORMAT_R12X4_UNORM_PACK16_KHR ^| w/2 ^| h/2
+4+| *ename:VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16_KHR*
+^| 0 ^| ename:VK_FORMAT_R12X4_UNORM_PACK16_KHR ^| w ^| h
+^| 1 ^| ename:VK_FORMAT_R12X4G12X4_UNORM_2PACK16_KHR ^| w/2 ^| h/2
+4+| *ename:VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16_KHR*
+^| 0 ^| ename:VK_FORMAT_R12X4_UNORM_PACK16_KHR ^| w ^| h
+^| 1 ^| ename:VK_FORMAT_R12X4_UNORM_PACK16_KHR ^| w/2 ^| h
+^| 2 ^| ename:VK_FORMAT_R12X4_UNORM_PACK16_KHR ^| w/2 ^| h
+4+| *ename:VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16_KHR*
+^| 0 ^| ename:VK_FORMAT_R12X4_UNORM_PACK16_KHR ^| w ^| h
+^| 1 ^| ename:VK_FORMAT_R12X4G12X4_UNORM_2PACK16_KHR ^| w/2 ^| h
+4+| *ename:VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16_KHR*
+^| 0 ^| ename:VK_FORMAT_R12X4_UNORM_PACK16_KHR ^| w ^| h
+^| 1 ^| ename:VK_FORMAT_R12X4_UNORM_PACK16_KHR ^| w ^| h
+^| 2 ^| ename:VK_FORMAT_R12X4_UNORM_PACK16_KHR ^| w ^| h
+4+| *ename:VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM_KHR*
+^| 0 ^| ename:VK_FORMAT_R16_UNORM ^| w ^| h
+^| 1 ^| ename:VK_FORMAT_R16_UNORM ^| w/2 ^| h/2
+^| 2 ^| ename:VK_FORMAT_R16_UNORM ^| w/2 ^| h/2
+4+| *ename:VK_FORMAT_G16_B16R16_2PLANE_420_UNORM_KHR*
+^| 0 ^| ename:VK_FORMAT_R16_UNORM ^| w ^| h
+^| 1 ^| ename:VK_FORMAT_R16G16_UNORM ^| w/2 ^| h/2
+4+| *ename:VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM_KHR*
+^| 0 ^| ename:VK_FORMAT_R16_UNORM ^| w ^| h
+^| 1 ^| ename:VK_FORMAT_R16_UNORM ^| w/2 ^| h
+^| 2 ^| ename:VK_FORMAT_R16_UNORM ^| w/2 ^| h
+4+| *ename:VK_FORMAT_G16_B16R16_2PLANE_422_UNORM_KHR*
+^| 0 ^| ename:VK_FORMAT_R16_UNORM ^| w ^| h
+^| 1 ^| ename:VK_FORMAT_R16G16_UNORM ^| w/2 ^| h
+4+| *ename:VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM_KHR*
+^| 0 ^| ename:VK_FORMAT_R16_UNORM ^| w ^| h
+^| 1 ^| ename:VK_FORMAT_R16_UNORM ^| w ^| h
+^| 2 ^| ename:VK_FORMAT_R16_UNORM ^| w ^| h
+|====
+
+endif::VK_KHR_sampler_ycbcr_conversion[]
+
+
[[features-formats-packed]]
==== Packed Formats
@@ -3032,6 +3640,11 @@ An X indicates a component that is unused, but may: be present for padding.
The suffix etext:_PACKnn indicates that the format is packed into an
underlying type with nn bits.
+ifdef::VK_KHR_sampler_ycbcr_conversion[]
+The suffix etext:_mPACKnn is a short-hand that indicates that the format has
+several components (which may or may not be stored in separate _planes_)
+that are each packed into an underlying type with nn bits.
+endif::VK_KHR_sampler_ycbcr_conversion[]
The suffix etext:_BLOCK indicates that the format is a block-compressed
format, with the representation of multiple pixels encoded interdependently
@@ -3048,6 +3661,27 @@ within a region.
| etext:ASTC | Adaptive Scalable Texture Compression (LDR Profile). See <<appendix-compressedtex-astc>>.
|====
+ifdef::VK_KHR_sampler_ycbcr_conversion[]
+For _multi-planar_ images, the components in separate _planes_ are separated
+by underscores, and the number of planes is indicated by the addition of a
+etext:_2PLANE or etext:_3PLANE suffix.
+Similarly, the separate aspects of depth-stencil formats are separated by
+underscores, although these are not considered separate planes.
+Formats are suffixed by etext:_422 to indicate that planes other than the
+first are reduced in size by a factor of two horizontally or that the R and
+B values appear at half the horizontal frequency of the G values, etext:_420
+to indicate that planes other than the first are reduced in size by a factor
+of two both horizontally and vertically, and etext:_444 for consistency to
+indicate that all three planes of a three-planar image are the same size.
+
+[NOTE]
+.Note
+====
+No common format has a single plane containing both R and B channels but
+does not store these channels at reduced horizontal resolution.
+====
+endif::VK_KHR_sampler_ycbcr_conversion[]
+
==== Representation
@@ -3071,7 +3705,7 @@ endianness.
[[features-formats-non-packed]]
.Byte mappings for non-packed/compressed color formats
-[options="header",cols="16*1,23",width="100%"]
+[options="header",cols="16*1,10",width="100%"]
|====
>|0 >|1 >|2 >|3 >|4 >|5 >|6 >|7 >|8 >|9 >|10 >|11 >|12 >|13 >|14 >|15 ^| {leftarrow} Byte
^|R 16+>s|etext:VK_FORMAT_R8_*
@@ -3080,10 +3714,22 @@ endianness.
^|B ^|G ^|R 14+>s|etext:VK_FORMAT_B8G8R8_*
^|R ^|G ^|B ^|A 13+>s|etext:VK_FORMAT_R8G8B8A8_*
^|B ^|G ^|R ^|A 13+>s|etext:VK_FORMAT_B8G8R8A8_*
+ifdef::VK_KHR_sampler_ycbcr_conversion[]
+^|G~0~ ^|B ^|G~1~ ^|R 13+>s|etext:VK_FORMAT_G8B8G8R8_422_UNORM_KHR
+^|B ^|G~0~ ^|R ^|G~1~ 13+>s|etext:VK_FORMAT_B8G8R8G8_422_UNORM_KHR
+endif::VK_KHR_sampler_ycbcr_conversion[]
2+^|R 15+>s|etext:VK_FORMAT_R16_*
2+^|R 2+^|G 13+>s|etext:VK_FORMAT_R16G16_*
2+^|R 2+^|G 2+^|B 11+>s|etext:VK_FORMAT_R16G16B16_*
2+^|R 2+^|G 2+^|B 2+^|A 9+>s|etext:VK_FORMAT_R16G16B16A16_*
+ifdef::VK_KHR_sampler_ycbcr_conversion[]
+2+^|G~0~ 2+^|B 2+^|G~1~ 2+^|R 9+>s|etext:VK_FORMAT_G10X6B10X6G10X6R10X6_4PACK16_422_UNORM_KHR
+etext:VK_FORMAT_G12X4B12X4G12X4R12X4_4PACK16_422_UNORM_KHR
+etext:VK_FORMAT_G16B16G16R16_UNORM_KHR
+2+^|B 2+^|G~0~ 2+^|R 2+^|G~1~ 9+>s|etext:VK_FORMAT_B10X6G10X6R10X6G10X6_4PACK16_422_UNORM_KHR
+etext:VK_FORMAT_B12X4G12X4R12X4G12X4_4PACK16_422_UNORM_KHR
+etext:VK_FORMAT_B16G16R16G16_422_UNORM_KHR
+endif::VK_KHR_sampler_ycbcr_conversion[]
4+^|R 13+>s|etext:VK_FORMAT_R32_*
4+^|R 4+^|G 9+>s|etext:VK_FORMAT_R32G32_*
4+^|R 4+^|G 4+^|B 5+>s|etext:VK_FORMAT_R32G32B32_*
@@ -3159,6 +3805,19 @@ by the host endianness.
^| ~4~ ^| ~3~ ^| ~2~ ^| ~1~ ^| ~0~
^| ~4~ ^| ~3~ ^| ~2~ ^| ~1~ ^| ~0~
^| ~4~ ^| ~3~ ^| ~2~ ^| ~1~ ^| ~0~
+ifdef::VK_KHR_sampler_ycbcr_conversion[]
+16+^h|ename:VK_FORMAT_R10X6_UNORM_PACK16_KHR
+10+^s|R 6+^s|X
+^| ~9~ ^| ~8~ ^| ~7~ ^| ~6~ ^| ~5~
+^| ~4~ ^| ~3~ ^| ~2~ ^| ~1~ ^| ~0~
+^| ~5~ ^| ~4~ ^| ~3~ ^| ~2~ ^| ~1~ ^| ~0~
+16+^h|ename:VK_FORMAT_R12X4_UNORM_PACK16_KHR
+12+^s|R 4+^s|X
+^| ~11~ ^| ~10~
+^| ~9~ ^| ~8~ ^| ~7~ ^| ~6~ ^| ~5~
+^| ~4~ ^| ~3~ ^| ~2~ ^| ~1~ ^| ~0~
+^| ~3~ ^| ~2~ ^| ~1~ ^| ~0~
+endif::VK_KHR_sampler_ycbcr_conversion[]
|====
[[features-formats-packed-32-bit]]
@@ -3254,7 +3913,7 @@ in the same row are compatible.
[[features-formats-compatibility]]
.Compatible formats
-[width="80%",cols="4,10",options="header"]
+[width="90%",cols="4,10",options="header"]
|====
| Class | Formats
| 8-bit | ename:VK_FORMAT_R4G4_UNORM_PACK8, +
@@ -3285,7 +3944,14 @@ in the same row are compatible.
ename:VK_FORMAT_R16_SSCALED, +
ename:VK_FORMAT_R16_UINT, +
ename:VK_FORMAT_R16_SINT, +
+ifndef::VK_KHR_sampler_ycbcr_conversion[]
ename:VK_FORMAT_R16_SFLOAT
+endif::VK_KHR_sampler_ycbcr_conversion[]
+ifdef::VK_KHR_sampler_ycbcr_conversion[]
+ ename:VK_FORMAT_R16_SFLOAT, +
+ ename:VK_FORMAT_R10X6_UNORM_PACK16_KHR, +
+ ename:VK_FORMAT_R12X4_UNORM_PACK16_KHR
+endif::VK_KHR_sampler_ycbcr_conversion[]
| 24-bit | ename:VK_FORMAT_R8G8B8_UNORM, +
ename:VK_FORMAT_R8G8B8_SNORM, +
ename:VK_FORMAT_R8G8B8_USCALED, +
@@ -3344,7 +4010,16 @@ in the same row are compatible.
ename:VK_FORMAT_R32_SINT, +
ename:VK_FORMAT_R32_SFLOAT, +
ename:VK_FORMAT_B10G11R11_UFLOAT_PACK32, +
+ifndef::VK_KHR_sampler_ycbcr_conversion[]
ename:VK_FORMAT_E5B9G9R9_UFLOAT_PACK32
+endif::VK_KHR_sampler_ycbcr_conversion[]
+ifdef::VK_KHR_sampler_ycbcr_conversion[]
+ ename:VK_FORMAT_E5B9G9R9_UFLOAT_PACK32, +
+ ename:VK_FORMAT_R10X6G10X6_UNORM_2PACK16_KHR, +
+ ename:VK_FORMAT_R12X4G12X4_UNORM_2PACK16_KHR
+| 32-bit G8B8G8R8 | ename:VK_FORMAT_G8B8G8R8_422_UNORM_KHR
+| 32-bit B8G8R8G8 | ename:VK_FORMAT_B8G8R8G8_422_UNORM_KHR
+endif::VK_KHR_sampler_ycbcr_conversion[]
| 48-bit | ename:VK_FORMAT_R16G16B16_UNORM, +
ename:VK_FORMAT_R16G16B16_SNORM, +
ename:VK_FORMAT_R16G16B16_USCALED, +
@@ -3365,6 +4040,16 @@ in the same row are compatible.
ename:VK_FORMAT_R64_UINT, +
ename:VK_FORMAT_R64_SINT, +
ename:VK_FORMAT_R64_SFLOAT
+ifdef::VK_KHR_sampler_ycbcr_conversion[]
+| 64-bit R10G10B10A10 | ename:VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16_KHR
+| 64-bit G10B10G10R10 | ename:VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16_KHR
+| 64-bit B10G10R10G10 | ename:VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16_KHR
+| 64-bit R12G12B12A12 | ename:VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16_KHR
+| 64-bit G12B12G12R12 | ename:VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16_KHR
+| 64-bit B12G12R12G12 | ename:VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16_KHR
+| 64-bit G16B16G16R16 | ename:VK_FORMAT_G16B16G16R16_422_UNORM_KHR
+| 64-bit B16G16R16G16 | ename:VK_FORMAT_B16G16R16G16_422_UNORM_KHR
+endif::VK_KHR_sampler_ycbcr_conversion[]
| 96-bit | ename:VK_FORMAT_R32G32B32_UINT, +
ename:VK_FORMAT_R32G32B32_SINT, +
ename:VK_FORMAT_R32G32B32_SFLOAT
@@ -3441,6 +4126,28 @@ in the same row are compatible.
| D16S8 | ename:VK_FORMAT_D16_UNORM_S8_UINT
| D24S8 | ename:VK_FORMAT_D24_UNORM_S8_UINT
| D32S8 | ename:VK_FORMAT_D32_SFLOAT_S8_UINT
+ifdef::VK_KHR_sampler_ycbcr_conversion[]
+| 8-bit 3-plane 420 | ename:VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM_KHR
+| 8-bit 2-plane 420 | ename:VK_FORMAT_G8_B8R8_2PLANE_420_UNORM_KHR
+| 8-bit 3-plane 422 | ename:VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM_KHR
+| 8-bit 2-plane 422 | ename:VK_FORMAT_G8_B8R8_2PLANE_422_UNORM_KHR
+| 8-bit 3-plane 444 | ename:VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM_KHR
+| 10-bit 3-plane 420 | ename:VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16_KHR
+| 10-bit 2-plane 420 | ename:VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16_KHR
+| 10-bit 3-plane 422 | ename:VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16_KHR
+| 10-bit 2-plane 422 | ename:VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16_KHR
+| 10-bit 3-plane 444 | ename:VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16_KHR
+| 12-bit 3-plane 420 | ename:VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16_KHR
+| 12-bit 2-plane 420 | ename:VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16_KHR
+| 12-bit 3-plane 422 | ename:VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16_KHR
+| 12-bit 2-plane 422 | ename:VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16_KHR
+| 12-bit 3-plane 444 | ename:VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16_KHR
+| 16-bit 3-plane 420 | ename:VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM_KHR
+| 16-bit 2-plane 420 | ename:VK_FORMAT_G16_B16R16_2PLANE_420_UNORM_KHR
+| 16-bit 3-plane 422 | ename:VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM_KHR
+| 16-bit 2-plane 422 | ename:VK_FORMAT_G16_B16R16_2PLANE_422_UNORM_KHR
+| 16-bit 3-plane 444 | ename:VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM_KHR
+endif::VK_KHR_sampler_ycbcr_conversion[]
|====
@@ -3577,6 +4284,51 @@ endif::VK_EXT_sampler_filter_minmax[]
ifdef::VK_IMG_filter_cubic[]
include::VK_IMG_filter_cubic/filter_cubic_sampled_bit_description.txt[]
endif::VK_IMG_filter_cubic[]
+ifdef::VK_KHR_sampler_ycbcr_conversion[]
+ * ename:VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT_KHR specifies that
+ an application can: define a <<samplers-YCbCr-conversion,sampler
+ Y'C~B~C~R~ conversion>> using this format as a source, and that an image
+ of this format can: be used with a
+ sname:VkSamplerYcbcrConversionCreateInfoKHR pname:xChromaOffset and/or
+ pname:yChromaOffset of ename:VK_CHROMA_LOCATION_MIDPOINT_KHR.
+ Otherwise both pname:xChromaOffset and pname:yChromaOffset must: be
+ ename:VK_CHROMA_LOCATION_COSITED_EVEN_KHR.
+ If a format does not incorporate chroma downsampling (it is not a
+ "`422`" or "`420`" format) but the implementation supports sampler
+ Y'C~B~C~R~ conversion for this format, the implementation must: set
+ ename:VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT_KHR.
+ * ename:VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT_KHR specifies that an
+ application can: define a <<samplers-YCbCr-conversion,sampler Y'C~B~C~R~
+ conversion>> using this format as a source, and that an image of this
+ format can: be used with a sname:VkSamplerYcbcrConversionCreateInfoKHR
+ pname:xChromaOffset and/or pname:yChromaOffset of
+ ename:VK_CHROMA_LOCATION_COSITED_EVEN_KHR.
+ Otherwise both pname:xChromaOffset and pname:yChromaOffset must: be
+ ename:VK_CHROMA_LOCATION_MIDPOINT_KHR.
+ If neither ename:VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT_KHR nor
+ ename:VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT_KHR is set, the
+ application must: not define a <<samplers-YCbCr-conversion,sampler
+ Y'C~B~C~R~ conversion>> using this format as a source.
+ * ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHR
+ specifies that the format can do linear sampler filtering
+ (min/magFilter) whilst sampler Y'C~B~C~R~ conversion is enabled.
+ * ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHR
+ specifies that the format can have different chroma, min, and mag
+ filters.
+ * ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT_KHR
+ specifies that reconstruction is explicit, as described in
+ <<textures-chroma-reconstruction>>.
+ If this bit is not present, reconstruction is implicit by default.
+ * ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT_KHR
+ specifies that reconstruction can: be forcibly made explicit by setting
+ slink:VkSamplerYcbcrConversionCreateInfoKHR::pname:forceExplicitReconstruction
+ to ename:VK_TRUE.
+ * ename:VK_FORMAT_FEATURE_DISJOINT_BIT_KHR specifies that a multi-planar
+ image can: have the ename:VK_IMAGE_CREATE_DISJOINT_BIT_KHR set during
+ image creation.
+ An implementation must: not set ename:VK_FORMAT_FEATURE_DISJOINT_BIT_KHR
+ for _single-plane formats_.
+endif::VK_KHR_sampler_ycbcr_conversion[]
The following bits may: be set in pname:bufferFeatures, specifying that the
features are supported by <<VkBuffer,buffers>> or <<VkBufferView,buffer
@@ -4151,6 +4903,64 @@ ifdef::VK_IMG_filter_cubic[]
include::VK_IMG_filter_cubic/supported_formats.txt[]
endif::VK_IMG_filter_cubic[]
+ifdef::VK_KHR_sampler_ycbcr_conversion[]
+
+To be used with sname:VkImageView with pname:subresourceRange.aspectMask =
+ename:VK_IMAGE_ASPECT_COLOR_BIT, <<samplers-YCbCr-conversion,sampler
+Y'C~B~C~R~ conversion>> must: be enabled for the following formats:
+
+[[features-formats-requiring-sampler-ycbcr-conversion]]
+.Formats requiring sampler Y'C~B~C~R~ conversion for ename:VK_IMAGE_ASPECT_COLOR_BIT image views
+[width="100%",cols="15,^1,^1,^1,^1,^1,^1,^1,^1,^1,^1",options="unbreakable"]
+|====
+11+>| Format must: be supported if slink:VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR is enabled
+10+>| Format is treated as having 2{times}1 texel blocks by transfer operations .10+^.^| {downarrow}
+9+>| ename:VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT_KHR .9+^.^| {downarrow}
+8+>| ename:VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR .8+^.^| {downarrow}
+7+>| ename:VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR .7+^.^| {downarrow}
+6+>| ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT .6+^.^| {downarrow}
+5+>| ename:VK_FORMAT_FEATURE_DISJOINT_BIT_KHR .5+^.^| {downarrow}
+4+>| Multi-planar format with three planes .4+^.^| {downarrow}
+3+>| Multi-planar format with two planes .3+^.^| {downarrow}
+2+>| Single-plane format .2+^.^| {downarrow}
+s| Format ^.^| {downarrow}
+| ename:VK_FORMAT_G8B8G8R8_422_UNORM_KHR | {sym1} | | | | {sym2} | {sym2} | {sym2} | | {sym1} |
+| ename:VK_FORMAT_B8G8R8G8_422_UNORM_KHR | {sym1} | | | | {sym2} | {sym2} | {sym2} | | {sym1} |
+| ename:VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM_KHR | | | {sym1} | {sym2} | {sym1} | {sym1} | {sym1} | {sym1} | | {sym1}
+| ename:VK_FORMAT_G8_B8R8_2PLANE_420_UNORM_KHR | | {sym1} | | {sym2} | {sym1} | {sym1} | {sym1} | {sym1} | | {sym1}
+| ename:VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM_KHR | | | {sym1} | {sym2} | {sym2} | {sym2} | {sym2} | | |
+| ename:VK_FORMAT_G8_B8R8_2PLANE_422_UNORM_KHR | | {sym1} | | {sym2} | {sym2} | {sym2} | {sym2} | | |
+| ename:VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM_KHR | | | {sym1} | {sym2} | {sym2} | {sym2} | {sym2} | | |
+| ename:VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16_KHR | {sym1} | | | | {sym2} | {sym2} | {sym2} | | |
+| ename:VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16_KHR | {sym1} | | | | {sym2} | {sym2} | {sym2} | | {sym1} |
+| ename:VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16_KHR | {sym1} | | | | {sym2} | {sym2} | {sym2} | | {sym1} |
+| ename:VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16_KHR | | | {sym1} | {sym2} | {sym2} | {sym2} | {sym2} | | |
+| ename:VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16_KHR | | {sym1} | | {sym2} | {sym2} | {sym2} | {sym2} | | |
+| ename:VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16_KHR | | | {sym1} | {sym2} | {sym2} | {sym2} | {sym2} | | |
+| ename:VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16_KHR | | {sym1} | | {sym2} | {sym2} | {sym2} | {sym2} | | |
+| ename:VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16_KHR | | | {sym1} | {sym2} | {sym2} | {sym2} | {sym2} | | |
+| ename:VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16_KHR | {sym1} | | | | {sym2} | {sym2} | {sym2} | | |
+| ename:VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16_KHR | {sym1} | | | | {sym2} | {sym2} | {sym2} | | {sym1} |
+| ename:VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16_KHR | {sym1} | | | | {sym2} | {sym2} | {sym2} | | {sym1} |
+| ename:VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16_KHR | | | {sym1} | {sym2} | {sym2} | {sym2} | {sym2} | | |
+| ename:VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16_KHR | | {sym1} | | {sym2} | {sym2} | {sym2} | {sym2} | | |
+| ename:VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16_KHR | | | {sym1} | {sym2} | {sym2} | {sym2} | {sym2} | | |
+| ename:VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16_KHR | | {sym1} | | {sym2} | {sym2} | {sym2} | {sym2} | | |
+| ename:VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16_KHR | | | {sym1} | {sym2} | {sym2} | {sym2} | {sym2} | | |
+| ename:VK_FORMAT_G16B16G16R16_422_UNORM_KHR | {sym1} | | | | {sym2} | {sym2} | {sym2} | | {sym1} |
+| ename:VK_FORMAT_B16G16R16G16_422_UNORM_KHR | {sym1} | | | | {sym2} | {sym2} | {sym2} | | {sym1} |
+| ename:VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM_KHR | | | {sym1} | {sym2} | {sym2} | {sym2} | {sym2} | | |
+| ename:VK_FORMAT_G16_B16R16_2PLANE_420_UNORM_KHR | | {sym1} | | {sym2} | {sym2} | {sym2} | {sym2} | | |
+| ename:VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM_KHR | | | {sym1} | {sym2} | {sym2} | {sym2} | {sym2} | | |
+| ename:VK_FORMAT_G16_B16R16_2PLANE_422_UNORM_KHR | | {sym1} | | {sym2} | {sym2} | {sym2} | {sym2} | | |
+| ename:VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM_KHR | | | {sym1} | {sym2} | {sym2} | {sym2} | {sym2} | | |
+11+| Format features marked {sym1} must: be supported if the format is supported
+11+| Format features marked {sym2} may: be supported by the format
+|====
+
+endif::VK_KHR_sampler_ycbcr_conversion[]
+
+
== Additional Image Capabilities
In addition to the minimum capabilities described in the previous sections
@@ -4565,6 +5375,42 @@ for the following external handle types:
endif::VK_KHR_external_memory_capabilities[]
+ifdef::VK_KHR_sampler_ycbcr_conversion[]
+
+[open,refpage='VkSamplerYcbcrConversionImageFormatPropertiesKHR',desc='Structure specifying combined image sampler descriptor count for multi-planar images',type='structs']
+--
+
+To determine the number of combined image samplers required to support a
+multi-planar format, add
+slink:VkSamplerYcbcrConversionImageFormatPropertiesKHR to the pname:pNext
+chain of the slink:VkImageFormatProperties2KHR structure in a call to
+fname:vkGetPhysicalDeviceImageFormatProperties2KHR.
+
+The sname:VkSamplerYcbcrConversionImageFormatPropertiesKHR structure is
+defined as:
+
+include::../api/structs/VkSamplerYcbcrConversionImageFormatPropertiesKHR.txt[]
+
+ * pname:sType is the type of this structure.
+ * pname:pNext is `NULL` or a pointer to an extension-specific structure.
+ * pname:combinedImageSamplerDescriptorCount is the number of combined
+ image sampler descriptors that the implementation uses to access the
+ format.
+
+include::../validity/structs/VkSamplerYcbcrConversionImageFormatPropertiesKHR.txt[]
+--
+
+pname:combinedImageSamplerDescriptorCount affects only the count towards the
+pname:maxDescriptorSetSamplers, pname:maxDescriptorSetSampledImages,
+pname:maxPerStageDescriptorSamplers, and
+pname:maxPerStageDescriptorSampledImages limits, and does not affect binding
+numbers in the slink:VkDescriptorSetLayoutBinding.
+
+pname:combinedImageSamplerDescriptorCount is a number between 1 and the
+number of planes in the format.
+
+endif::VK_KHR_sampler_ycbcr_conversion[]
+
endif::VK_KHR_get_physical_device_properties2[]
diff --git a/doc/specs/vulkan/chapters/framebuffer.txt b/doc/specs/vulkan/chapters/framebuffer.txt
index b4945dd..67eff59 100644
--- a/doc/specs/vulkan/chapters/framebuffer.txt
+++ b/doc/specs/vulkan/chapters/framebuffer.txt
@@ -404,15 +404,15 @@ G, and B destination color values (after conversion from fixed-point to
floating-point) are considered to be encoded for the sRGB color space and
hence are linearized prior to their use in blending.
Each R, G, and B component is converted from nonlinear to linear as
-described in the "`KHR_DF_TRANSFER_SRGB`" section of the
+described in the "`sRGB EOTF`" section of the
<<data-format,Khronos Data Format Specification>>.
If the format is not sRGB, no linearization is performed.
If the numeric format of a framebuffer attachment uses sRGB encoding, then
the final R, G and B values are converted into the nonlinear sRGB
representation before being written to the framebuffer attachment as
-described in the "`KHR_DF_TRANSFER_SRGB`" section of the Khronos Data Format
-Specification.
+described in the "`sRGB EOTF^&#160;-1^`" section of the Khronos Data
+Format Specification.
If the framebuffer color attachment numeric format is not sRGB encoded then
the resulting [eq]#c~s~# values for R, G and B are unmodified.
diff --git a/doc/specs/vulkan/chapters/fundamentals.txt b/doc/specs/vulkan/chapters/fundamentals.txt
index 98fa8ac..9dcac21 100644
--- a/doc/specs/vulkan/chapters/fundamentals.txt
+++ b/doc/specs/vulkan/chapters/fundamentals.txt
@@ -37,22 +37,6 @@ architectures must: both be able to access such data efficiently in order to
write portable and performant applications.
====
-Where the Specification leaves choices open that would affect Application
-Binary Interface compatibility on a given platform supporting Vulkan, those
-choices are usually made to be compliant to the preferred ABI defined by the
-platform vendor.
-Some choices, such as function calling conventions, may: be made in
-platform-specific portions of the +vk_platform.h+ header file.
-
-[NOTE]
-.Note
-====
-For example, the Android ABI is defined by Google, and the Linux ABI is
-defined by a combination of gcc defaults, distribution vendor choices, and
-external standards such as the Linux Standard Base.
-====
-
-
[[fundamentals-execmodel]]
== Execution Model
@@ -332,6 +316,9 @@ state>>:
* sname:VkImageView
* sname:VkPipeline
* sname:VkSampler
+ifdef::VK_KHR_sampler_ycbcr_conversion[]
+ * basetype:VkSamplerYcbcrConversionKHR
+endif::VK_KHR_sampler_ycbcr_conversion[]
* sname:VkDescriptorPool
* sname:VkFramebuffer
* sname:VkRenderPass
@@ -405,6 +392,9 @@ be destroyed:
** sname:VkPipeline
** sname:VkPipelineLayout
** sname:VkSampler
+ifdef::VK_KHR_sampler_ycbcr_conversion[]
+ ** basetype:VkSamplerYcbcrConversionKHR
+endif::VK_KHR_sampler_ycbcr_conversion[]
** sname:VkDescriptorSetLayout
** sname:VkDescriptorPool
** sname:VkFramebuffer
@@ -443,6 +433,56 @@ and API boundaries.
endif::VK_KHR_external_memory_capabilities,VK_KHR_external_semaphore_capabilities,VK_KHR_external_fence_capabilities[]
+[[fundamentals-abi]]
+== Application Binary Interface
+
+The mechanism by which Vulkan is made available to applications is platform- or
+implementation- defined.
+On many platforms the C interface described in this Specification is
+provided by a shared library.
+Since shared libraries can be changed independently of the applications that
+use them, they present particular compatibility challenges, and this
+Specification places some requirements on them.
+
+Shared library implementations must: use the default Application Binary
+Interface (ABI) of the standard C compiler for the platform, or provide
+customized API headers that cause application code to use the implementation's
+non-default ABI.
+An ABI in this context means the the size, alignment, and
+layout of C data types; the procedure calling convention; and the naming
+convention for shared library symbols corresponding to C functions.
+Customizing the calling convention for a platform is usually accomplished by
+defining
+<<boilerplate-platform-specific-calling-conventions,calling convention macros>>
+appropriately in +vk_platform.h+.
+
+On platforms where Vulkan is provided as a shared library, library symbols
+beginning with 'vk' and followed by a digit or uppercase letter are reserved
+for use by the implementation.
+Applications which use Vulkan must: not provide definitions of these symbols.
+This allows the Vulkan shared library to be updated with additional symbols for
+new API versions or extensions without causing symbol conflicts with existing
+applications.
+
+Shared library implementations should: provide library symbols for commands
+in the highest version of this Specification they support, and for
+<<wsi,Window System Integration>> extensions relevant to the platform.
+They may: also provide library symbols for commands defined by additional
+extensions.
+
+[NOTE]
+.Note
+====
+These requirements and recommendations are intended to allow implementors to
+take advantage of platform-specific conventions for SDKs, ABIs, library
+versioning mechanisms, etc. while still minimizing the code changes necessary
+to port applications or libraries between platforms.
+Platform vendors, or providers of the _de facto_ standard Vulkan shared library
+for a platform, are encouraged to document what symbols the shared library
+provides and how it will be versioned when new symbols are added.
+====
+
+
[[fundamentals-commandsyntax]]
== Command Syntax and Duration
@@ -739,7 +779,17 @@ A enumerant is valid if:
* The enumerant is defined as part of the enumerated type.
* The enumerant is not one of the special values defined for the
enumerated type, which are suffixed with etext:_BEGIN_RANGE,
- etext:_END_RANGE, etext:_RANGE_SIZE or etext:_MAX_ENUM.
+ etext:_END_RANGE, etext:_RANGE_SIZE or etext:_MAX_ENUM^1^.
+
+1::
+ The meaning of these special tokens is not exposed in the Vulkan
+ Specification.
+ They are not part of the API, and they should: not be used by
+ applications.
+ Their original intended use was for internal consumption by Vulkan
+ implementations.
+ Even that use will no longer be supported in the future, but they will
+ be retained for backwards compatibility reasons.
Any enumerated type returned from a query command or otherwise output from
Vulkan to the application must: not have a reserved value.
diff --git a/doc/specs/vulkan/chapters/interfaces.txt b/doc/specs/vulkan/chapters/interfaces.txt
index f70a36d..03768a8 100644
--- a/doc/specs/vulkan/chapters/interfaces.txt
+++ b/doc/specs/vulkan/chapters/interfaces.txt
@@ -514,6 +514,12 @@ expressions, except under the following conditions:
shader module declares the code:SampledImageArrayDynamicIndexing
capability, the array must: only be indexed by dynamically uniform
expressions.
+ifdef::VK_KHR_sampler_ycbcr_conversion[]
+ * If sampler Y'C~B~C~R~ conversion is enabled, the combined image sampler
+ must: be indexed only by constant integral expressions when aggregated
+ into arrays in shader code, irrespective of the
+ pname:shaderSampledImageArrayDynamicIndexing feature.
+endif::VK_KHR_sampler_ycbcr_conversion[]
The code:Sampled code:Type of an code:OpTypeImage declaration must: match
the same basic data type as the corresponding resource, or the values
diff --git a/doc/specs/vulkan/chapters/introduction.txt b/doc/specs/vulkan/chapters/introduction.txt
index 5f4961a..2b5e0bf 100644
--- a/doc/specs/vulkan/chapters/introduction.txt
+++ b/doc/specs/vulkan/chapters/introduction.txt
@@ -193,9 +193,9 @@ _IEEE Standard for Floating-Point Arithmetic_, IEEE Std 754-2008,
http://dx.doi.org/10.1109/IEEESTD.2008.4610935, August, 2008.
[[data-format]] A.
-Garrard, _Khronos Data Format Specification, version 1.1_,
-https://www.khronos.org/registry/dataformat/specs/1.1/dataformat.1.1.html,
-June, 2017.
+Garrard, _Khronos Data Format Specification, version 1.2_,
+https://www.khronos.org/registry/dataformat/specs/1.2/dataformat.1.2.html,
+September, 2017.
// If the author name is placed on a standalone line, we see the mysterious
// asciidoc error 'list item index: expected 2 got 10'. Apparently the 'A.'
diff --git a/doc/specs/vulkan/chapters/memory.txt b/doc/specs/vulkan/chapters/memory.txt
index f71c1cc..6ff3169 100644
--- a/doc/specs/vulkan/chapters/memory.txt
+++ b/doc/specs/vulkan/chapters/memory.txt
@@ -2022,17 +2022,21 @@ indicating the supported peer memory features, are:
include::../api/enums/VkPeerMemoryFeatureFlagBitsKHX.txt[]
* ename:VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT_KHX indicates that the memory
- can: be accessed as the source of a ftext:vkCmdCopy* command.
+ can: be accessed as the source of a ftext:vkCmdCopyBuffer,
+ ftext:vkCmdCopyImage, ftext:vkCmdCopyBufferToImage, or
+ ftext:vkCmdCopyImageToBuffer command.
* ename:VK_PEER_MEMORY_FEATURE_COPY_DST_BIT_KHX indicates that the memory
- can: be accessed as the destination of a ftext:vkCmdCopy* command.
+ can: be accessed as the destination of a ftext:vkCmdCopyBuffer,
+ ftext:vkCmdCopyImage, ftext:vkCmdCopyBufferToImage, or
+ ftext:vkCmdCopyImageToBuffer command.
* ename:VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT_KHX indicates that the
- memory can: be read as any other memory access type.
+ memory can: be read as any memory access type.
* ename:VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT_KHX indicates that the
- memory can: be written as any other memory access type.
+ memory can: be written as any memory access type.
Shader atomics are considered to be writes.
ename:VK_PEER_MEMORY_FEATURE_COPY_DST_BIT_KHX must: be supported for all
-heaps.
+host local heaps and for at least one device local heap.
If a device does not support a peer memory feature, it is still valid to use
a resource that includes both local and peer memory bindings with the
diff --git a/doc/specs/vulkan/chapters/pipelines.txt b/doc/specs/vulkan/chapters/pipelines.txt
index ad3a4bf..f09e8e1 100644
--- a/doc/specs/vulkan/chapters/pipelines.txt
+++ b/doc/specs/vulkan/chapters/pipelines.txt
@@ -577,17 +577,23 @@ endif::VK_NV_glsl_shader[]
* [[VUID-VkGraphicsPipelineCreateInfo-subpass-00743]]
If rasterization is not disabled and pname:subpass uses a depth/stencil
attachment in pname:renderpass that has a layout of
- ename:VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL in the
- sname:VkAttachmentReference defined by pname:subpass, the
+ ename:VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL
+ifdef::VK_KHR_maintenance2[]
+ or ename:VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL_KHR
+endif::VK_KHR_maintenance2[]
+ in the sname:VkAttachmentReference defined by pname:subpass, the
pname:depthWriteEnable member of pname:pDepthStencilState must: be
ename:VK_FALSE
* [[VUID-VkGraphicsPipelineCreateInfo-subpass-00744]]
If rasterization is not disabled and pname:subpass uses a depth/stencil
attachment in pname:renderpass that has a layout of
- ename:VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL in the
- sname:VkAttachmentReference defined by pname:subpass, the pname:failOp,
- pname:passOp and pname:depthFailOp members of each of the pname:front
- and pname:back members of pname:pDepthStencilState must: be
+ ename:VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL
+ifdef::VK_KHR_maintenance2[]
+ or ename:VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL_KHR
+endif::VK_KHR_maintenance2[]
+ in the sname:VkAttachmentReference defined by pname:subpass, the
+ pname:failOp, pname:passOp and pname:depthFailOp members of each of the
+ pname:front and pname:back members of pname:pDepthStencilState must: be
ename:VK_STENCIL_OP_KEEP
* [[VUID-VkGraphicsPipelineCreateInfo-blendEnable-00745]]
If rasterization is not disabled and the subpass uses color attachments,
@@ -748,6 +754,14 @@ ifdef::VK_KHX_device_group[]
pname:flags must: not contain the
ename:VK_PIPELINE_CREATE_DISPATCH_BASE_KHX flag.
endif::VK_KHX_device_group[]
+ifdef::VK_KHR_maintenance2[]
+ * [[VUID-VkGraphicsPipelineCreateInfo-pStages-01565]] If pname:pStages includes a fragment shader stage and an input
+ attachment was referenced by the
+ slink:VkRenderPassInputAttachmentAspectCreateInfoKHR at renderpass
+ create time, its shader code must: not read from any aspect that was not
+ specified in the pname:aspectMask of the corresponding
+ slink:VkInputAttachmentAspectReferenceKHR structure.
+endif::VK_KHR_maintenance2[]
****
include::../validity/structs/VkGraphicsPipelineCreateInfo.txt[]
@@ -1264,8 +1278,8 @@ be a header consisting of the following members:
sname:VkPhysicalDeviceProperties::pname:pipelineCacheUUID
|====
-The first four bytes encode the length of the entire pipeline header, in
-bytes.
+The first four bytes encode the length of the entire pipeline cache header,
+in bytes.
This value includes all fields in the header including the pipeline cache
version field and the size of the length field.
diff --git a/doc/specs/vulkan/chapters/primsrast.txt b/doc/specs/vulkan/chapters/primsrast.txt
index 1d86d1e..c3efe4a 100644
--- a/doc/specs/vulkan/chapters/primsrast.txt
+++ b/doc/specs/vulkan/chapters/primsrast.txt
@@ -484,8 +484,9 @@ pname:sampleLocationGridSize.width)
slink:VkPhysicalDeviceSampleLocationsPropertiesEXT::pname:sampleLocationSampleCounts
* [[VUID-VkSampleLocationsInfoEXT-sampleLocationsCount-01527]]
pname:sampleLocationsCount must: equal
- [eq]#pname:sampleLocationsPerPixel * pname:sampleLocationGridSize.width
- * pname:sampleLocationGridSize.height#
+ [eq]#pname:sampleLocationsPerPixel {times}
+ pname:sampleLocationGridSize.width {times}
+ pname:sampleLocationGridSize.height#
****
include::../validity/structs/VkSampleLocationsInfoEXT.txt[]
diff --git a/doc/specs/vulkan/chapters/renderpass.txt b/doc/specs/vulkan/chapters/renderpass.txt
index 7373c8f..59e514a 100644
--- a/doc/specs/vulkan/chapters/renderpass.txt
+++ b/doc/specs/vulkan/chapters/renderpass.txt
@@ -191,6 +191,16 @@ include::../api/structs/VkRenderPassCreateInfo.txt[]
must: not specify a pname:layout equal to
pname:VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL or
pname:VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL.
+ifdef::VK_KHR_maintenance2[]
+ * [[VUID-VkRenderPassCreateInfo-pAttachments-01566]] For any member of pname:pAttachments with a pname:loadOp equal to
+ ename:VK_ATTACHMENT_LOAD_OP_CLEAR, the first use of that attachment
+ must: not specify a pname:layout equal to
+ pname:VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL_KHR.
+ * [[VUID-VkRenderPassCreateInfo-pAttachments-01567]] For any member of pname:pAttachments with a pname:stencilLoadOp equal to
+ ename:VK_ATTACHMENT_LOAD_OP_CLEAR, the first use of that attachment
+ must: not specify a pname:layout equal to
+ pname:VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL_KHR.
+endif::VK_KHR_maintenance2[]
* [[VUID-VkRenderPassCreateInfo-pDependencies-00837]]
For any element of pname:pDependencies, if the pname:srcSubpass is not
ename:VK_SUBPASS_EXTERNAL, all stage flags included in the
@@ -473,6 +483,83 @@ This is described in more detail below.
include::../validity/structs/VkAttachmentDescription.txt[]
--
+ifdef::VK_KHR_maintenance2[]
+
+[open,refpage='VkRenderPassInputAttachmentAspectCreateInfoKHR',desc='Structure specifying, for a given subpass/input attachment pair, which aspect can: be read.',type='structs']
+--
+
+To specify which aspects of an input attachment can: be read add a
+slink:VkRenderPassInputAttachmentAspectCreateInfoKHR structure to the
+pname:pNext chain of the slink:VkRenderPassCreateInfo structure:
+
+The sname:VkRenderPassInputAttachmentAspectCreateInfoKHR structure is
+defined as:
+
+include::../api/structs/VkRenderPassInputAttachmentAspectCreateInfoKHR.txt[]
+
+ * pname:sType is the type of this structure.
+ * pname:pNext is `NULL` or a pointer to an extension-specific structure.
+ * pname:aspectReferenceCount is the number of elements in the
+ pAspectReferences array.
+ * pname:pAspectReferences points to an array of pname:aspectReferenceCount
+ number of slink:VkInputAttachmentAspectReferenceKHR structures
+ describing which aspect(s) can: be accessed for a given input attachment
+ within a given subpass.
+
+include::../validity/structs/VkRenderPassInputAttachmentAspectCreateInfoKHR.txt[]
+--
+
+[open,refpage='VkInputAttachmentAspectReferenceKHR',desc='Structure specifying a subpass/input attachment pair and an aspect mask that can: be read.',type='structs']
+--
+
+The sname:VkInputAttachmentAspectReferenceKHR structure specifies an aspect
+mask for a specific input attachment of a specific subpass in the render
+pass.
+
+The pname:subpass and pname:inputAttachment index into the render pass as:
+
+pname:pCreateInfo::pname:pSubpasses[pname:subpass].pname:pInputAttachments[pname:inputAttachment]
+
+include::../api/structs/VkInputAttachmentAspectReferenceKHR.txt[]
+
+ * pname:subpass is an index into the pname:pSubpasses array of the parent
+ sname:VkRenderPassCreateInfo structure.
+ * pname:inputAttachment is an index into the pname:pInputAttachments of
+ the specified subpass.
+ * pname:aspectMask is a mask of which aspect(s) can: be accessed within
+ the specified subpass.
+
+.Valid Usage
+****
+ * [[VUID-VkInputAttachmentAspectReferenceKHR-pCreateInfo-01568]] There must: be an input attachment at
+ pname:pCreateInfo::pname:pSubpasses[pname:subpass].pname:pInputAttachments[pname:inputAttachment].
+ * [[VUID-VkInputAttachmentAspectReferenceKHR-None-01569]] The specified input attachment must: have more than one aspect mask.
+ * [[VUID-VkInputAttachmentAspectReferenceKHR-aspectMask-01570]] pname:aspectMask must: be a subset of the aspect masks in the specified
+ input attachment.
+****
+
+include::../validity/structs/VkInputAttachmentAspectReferenceKHR.txt[]
+--
+
+ifdef::editing-notes[]
+[NOTE]
+.editing-note
+====
+TODO (Jon) - it's unclear whether the following two paragraphs are intended
+to apply to slink:VkAttachmentDescription, one of the extension structures
+described immediately above, or something else.
+The following description of elink:VkAttachmentDescriptionFlagBits should:
+probably be moved up to near slink:VkAttachmentDescription.
+====
+endif::editing-notes[]
+
+An application must: only access the specified aspect(s).
+
+An application can: access any aspect of an input attachment that does not
+have a specified aspect mask.
+
+endif::VK_KHR_maintenance2[]
+
[open,refpage='VkAttachmentDescriptionFlagBits',desc='Bitmask specifying additional properties of an attachment',type='enums']
--
@@ -776,6 +863,14 @@ ifdef::VK_NVX_multiview_per_view_attributes[]
Per-view viewport mask can: also be used.
endif::VK_NVX_multiview_per_view_attributes[]
+ifndef::VK_NVX_multiview_per_view_attributes[]
+[NOTE]
+.Note
+====
+All bits for this type are defined by extensions, and none of those
+extensions are enabled in this build of the specification.
+====
+endif::VK_NVX_multiview_per_view_attributes[]
--
[open,refpage='VkAttachmentReference',desc='Structure specifying an attachment reference',type='structs']
@@ -1230,6 +1325,10 @@ be in the
ifdef::VK_KHR_shared_presentable_image[]
ename:VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR,
endif::VK_KHR_shared_presentable_image[]
+ifdef::VK_KHR_maintenance2[]
+ename:VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL_KHR,
+ename:VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL_KHR,
+endif::VK_KHR_maintenance2[]
ename:VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL, or
ename:VK_IMAGE_LAYOUT_GENERAL layout.
An attachment must: not be used as both a depth/stencil attachment and a
@@ -1354,16 +1453,37 @@ endif::VK_KHX_multiview[]
Image subresources used as attachments must: not be accessed in any other
way for the duration of a render pass instance.
+ifdef::VK_KHR_maintenance2[]
+For depth/stencil attachments, they can: be used as both attachments and
+non-attachments as long as the layout of the image subresource is
+ename:VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL_KHR and the
+non-attachment usage only accesses the depth aspect, or the layout of the
+image subresource is
+ename:VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL_KHR and the
+non-attachment usage only accesses the stencil aspect.
+Use of non-attachment aspects in this case is only well defined if the
+attachment is used in the subpass where the non-attachment access is being
+made, or the layout of the image subresource is constant throughout the
+entire render pass instance, including the pname:initialLayout and
+pname:finalLayout.
+endif::VK_KHR_maintenance2[]
[NOTE]
.Note
====
-This restriction means that the render pass has full knowledge of all uses
-of all of the attachments, so that the implementation is able to make
-correct decisions about when and how to perform layout transitions, when to
-overlap execution of subpasses, etc.
+ifndef::VK_KHR_maintenance2[]
+This restriction means
+endif::VK_KHR_maintenance2[]
+ifdef::VK_KHR_maintenance2[]
+These restrictions mean
+endif::VK_KHR_maintenance2[]
+that the render pass has full knowledge of all uses of all of the
+attachments, so that the implementation is able to make correct decisions
+about when and how to perform layout transitions, when to overlap execution
+of subpasses, etc.
====
+
[[renderpass-noattachments]]
It is legal for a subpass to use no color or depth/stencil attachments, and
rather use shader side effects such as image stores and atomics to produce
@@ -1512,7 +1632,11 @@ record the commands for the first subpass of that render pass.
the sname:VkAttachmentReference structures specified when creating the
render pass specified in the pname:renderPass member of
pname:pRenderPassBegin is
- ename:VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL or
+ifdef::VK_KHR_maintenance2[]
+ ename:VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL_KHR,
+ ename:VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL_KHR,
+endif::VK_KHR_maintenance2[]
+ ename:VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL, or
ename:VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL then the
corresponding attachment image subresource of the framebuffer specified
in the pname:framebuffer member of pname:pRenderPassBegin must: have
diff --git a/doc/specs/vulkan/chapters/resources.txt b/doc/specs/vulkan/chapters/resources.txt
index 318b798..025b00c 100644
--- a/doc/specs/vulkan/chapters/resources.txt
+++ b/doc/specs/vulkan/chapters/resources.txt
@@ -144,6 +144,15 @@ ifdef::VK_KHR_external_memory[]
handle types specified in
slink:VkExternalMemoryBufferCreateInfoKHR::pname:handleTypes
endif::VK_KHR_external_memory[]
+ifdef::VK_NV_dedicated_allocation[]
+ * [[VUID-VkBufferCreateInfo-pNext-01571]] If the pname:pNext chain contains an instance of
+ slink:VkDedicatedAllocationBufferCreateInfoNV, and the
+ pname:dedicatedAllocation member of the chained structure is
+ ename:VK_TRUE, then pname:flags must: not include
+ ename:VK_BUFFER_CREATE_SPARSE_BINDING_BIT,
+ ename:VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT, or
+ ename:VK_BUFFER_CREATE_SPARSE_ALIASED_BIT
+endif::VK_NV_dedicated_allocation[]
****
include::../validity/structs/VkBufferCreateInfo.txt[]
@@ -245,16 +254,6 @@ include::../api/structs/VkDedicatedAllocationBufferCreateInfoNV.txt[]
* pname:dedicatedAllocation indicates whether the buffer will have a
dedicated allocation bound to it.
-.Valid Usage
-****
- * [[VUID-VkDedicatedAllocationBufferCreateInfoNV-dedicatedAllocation-00921]]
- If pname:dedicatedAllocation is ename:VK_TRUE,
- sname:VkBufferCreateInfo::pname:flags must: not include
- ename:VK_BUFFER_CREATE_SPARSE_BINDING_BIT,
- ename:VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT, or
- ename:VK_BUFFER_CREATE_SPARSE_ALIASED_BIT
-****
-
include::../validity/structs/VkDedicatedAllocationBufferCreateInfoNV.txt[]
--
@@ -577,6 +576,21 @@ pname:mipLevels, and pname:arrayLayers.
To determine the set of valid pname:usage bits for a given format, call
flink:vkGetPhysicalDeviceFormatProperties.
+ifdef::VK_KHR_maintenance2[]
+[NOTE]
+.Note
+====
+For images created without ename:VK_IMAGE_CREATE_EXTENDED_USAGE_BIT_KHR a
+pname:usage bit is valid if it is supported for the format the image is
+created with.
+
+For images created with ename:VK_IMAGE_CREATE_EXTENDED_USAGE_BIT_KHR a
+pname:usage bit is valid if it is supported for at least one of the formats
+a sname:VkImageView created from the image can: have (see
+<<resources-image-views,Image Views>> for more detail).
+====
+endif::VK_KHR_maintenance2[]
+
.Valid Usage
****
* [[VUID-VkImageCreateInfo-format-00940]]
@@ -894,6 +908,17 @@ ifdef::VK_KHX_device_group[]
pname:imageType must: be ename:VK_IMAGE_TYPE_2D, and pname:tiling must:
be ename:VK_IMAGE_TILING_OPTIMAL
endif::VK_KHX_device_group[]
+ifdef::VK_KHR_maintenance2[]
+ * [[VUID-VkImageCreateInfo-flags-01572]] If pname:flags contains
+ ename:VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT_KHR, then
+ pname:format must: be a <<appendix-compressedtex-bc,block-compressed
+ image format>>, an <<appendix-compressedtex-etc2, ETC compressed image
+ format>>, or an <<appendix-compressedtex-astc, ASTC compressed image
+ format>>.
+ * [[VUID-VkImageCreateInfo-flags-01573]] If pname:flags contains
+ ename:VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT_KHR, then
+ pname:flags must: also contain ename:VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT.
+endif::VK_KHR_maintenance2[]
* [[VUID-VkImageCreateInfo-initialLayout-00993]]
pname:initialLayout must: be ename:VK_IMAGE_LAYOUT_UNDEFINED or
ename:VK_IMAGE_LAYOUT_PREINITIALIZED.
@@ -906,6 +931,29 @@ ifdef::VK_NV_external_memory[slink:VkExternalMemoryImageCreateInfoNV]
structure whose pname:handleTypes member is not `0`, pname:initialLayout
must: be ename:VK_IMAGE_LAYOUT_UNDEFINED
endif::VK_KHR_external_memory,VK_NV_external_memory[]
+ifdef::VK_KHR_sampler_ycbcr_conversion[]
+ * [[VUID-VkImageCreateInfo-format-01574]] If the image pname:format is one of those listed in
+ <<features-formats-requiring-sampler-ycbcr-conversion>>:
+ ** pname:mipLevels must: be 1
+ ** pname:samples must be ename:VK_SAMPLE_COUNT_1_BIT
+ ** pname:imageType must: be ename:VK_IMAGE_TYPE_2D
+ ** pname:arrayLayers must: be 1
+ * [[VUID-VkImageCreateInfo-tiling-01575]] If pname:tiling is ename:VK_IMAGE_TILING_OPTIMAL, pname:format is a
+ _multi-planar_ format, and
+ sname:VkFormatProperties::pname:optimalTilingFeatures (as returned by
+ fname:vkGetPhysicalDeviceFormatProperties with the same value of
+ pname:format) does not include ename:VK_FORMAT_FEATURE_DISJOINT_BIT_KHR,
+ pname:flags must: not contain ename:VK_IMAGE_CREATE_DISJOINT_BIT_KHR
+ * [[VUID-VkImageCreateInfo-tiling-01576]] If pname:tiling is ename:VK_IMAGE_TILING_LINEAR, pname:format is a
+ _multi-planar_ format, and
+ sname:VkFormatProperties::pname:linearTilingFeatures (as returned by
+ fname:vkGetPhysicalDeviceFormatProperties with the same value of
+ pname:format) does not include ename:VK_FORMAT_FEATURE_DISJOINT_BIT_KHR,
+ pname:flags must: not contain ename:VK_IMAGE_CREATE_DISJOINT_BIT_KHR
+ * [[VUID-VkImageCreateInfo-format-01577]] If pname:format is not a _multi-planar_ format, and pname:flags does not
+ include ename:VK_IMAGE_CREATE_ALIAS_BIT_KHR, pname:flags must: not
+ contain ename:VK_IMAGE_CREATE_DISJOINT_BIT_KHR
+endif::VK_KHR_sampler_ycbcr_conversion[]
ifdef::VK_EXT_sample_locations[]
* [[VUID-VkImageCreateInfo-flags-01533]]
If pname:flags contains
@@ -1038,6 +1086,46 @@ include::../validity/structs/VkImageSwapchainCreateInfoKHX.txt[]
endif::VK_KHX_device_group[]
+ifdef::VK_KHR_image_format_list[]
+
+// refBegin VkImageFormatListCreateInfoKHR Specify that an image can: be used with a particular set of formats
+
+If the pname:pNext list of slink:VkImageCreateInfo includes a
+sname:VkImageFormatListCreateInfoKHR structure, then that structure contains
+a list of all formats that can: be used when creating views of this image.
+
+The sname:VkImageFormatListCreateInfoKHR structure is defined as:
+
+include::../api/structs/VkImageFormatListCreateInfoKHR.txt[]
+
+ * pname:sType is the type of this structure.
+ * pname:pNext is `NULL` or a pointer to an extension-specific structure.
+ * pname:viewFormatCount is the number of entries in the pname:pViewFormats
+ array.
+ * pname:pViewFormats is an array which lists of all formats which can: be
+ used when creating views of this image.
+
+If pname:viewFormatCount is zero, pname:pViewFormats is ignored and the
+image is created as if the sname:VkImageFormatListCreateInfoKHR structure
+were not included in the pname:pNext list of slink:VkImageCreateInfo.
+
+.Valid Usage
+****
+ * [[VUID-VkImageFormatListCreateInfoKHR-viewFormatCount-01578]] If pname:viewFormatCount is not `0`, all of the formats in the
+ pname:pViewFormats array must: be compatible with the format specified
+ in the pname:format field of sname:VkImageCreateInfo, as described in
+ the <<resources-image-views-compatibility,compatibility table>>.
+ * [[VUID-VkImageFormatListCreateInfoKHR-flags-01579]] If sname:VkImageCreateInfo::pname:flags does not contain
+ ename:VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT, pname:viewFormatCount must: be
+ `0` or `1`.
+ * [[VUID-VkImageFormatListCreateInfoKHR-viewFormatCount-01580]] If pname:viewFormatCount is not `0`,
+ sname:VkImageCreateInfo::pname:format must: be in pname:pViewFormats.
+****
+
+include::../validity/structs/VkImageFormatListCreateInfoKHR.txt[]
+
+endif::VK_KHR_image_format_list[]
+
[open,refpage='VkImageUsageFlagBits',desc='Bitmask specifying intended usage of an image',type='enums']
--
@@ -1104,6 +1192,11 @@ include::../api/enums/VkImageCreateFlagBits.txt[]
* ename:VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT specifies that the image can:
be used to create a sname:VkImageView with a different format from the
image.
+ifdef::VK_KHR_sampler_ycbcr_conversion[]
+ For <<features-formats-requiring-sampler-ycbcr-conversion,multi-planar>>
+ formats, ename:VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT indicates that a
+ sname:VkImageView can be created of a _plane_ of the image.
+endif::VK_KHR_sampler_ycbcr_conversion[]
* ename:VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT specifies that the image can:
be used to create a sname:VkImageView of type
ename:VK_IMAGE_VIEW_TYPE_CUBE or ename:VK_IMAGE_VIEW_TYPE_CUBE_ARRAY.
@@ -1114,12 +1207,51 @@ ifdef::VK_KHR_maintenance1[]
endif::VK_KHR_maintenance1[]
ifdef::VK_KHX_device_group[]
* ename:VK_IMAGE_CREATE_BIND_SFR_BIT_KHX specifies that the image can: be
- used with a non-zero value of the pname:SFRRectCount member of the
- slink:VkBindImageMemoryInfoKHX structure passed into
- flink:vkBindImageMemory2KHX.
+ used with a non-zero value of the pname:SFRRectCount member of a
+ slink:VkBindImageMemoryDeviceGroupInfoKHX structure passed into
+ flink:vkBindImageMemory2KHR.
This flag also has the effect of making the image use the standard
sparse image block dimensions.
endif::VK_KHX_device_group[]
+ifdef::VK_KHR_maintenance2[]
+ * ename:VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT_KHR indicates that
+ the image having a compressed format can: be used to create a
+ sname:VkImageView with an uncompressed format where each texel in the
+ image view corresponds to a compressed texel block of the image.
+ * ename:VK_IMAGE_CREATE_EXTENDED_USAGE_BIT_KHR indicates that the image
+ can: be created with usage flags that are not supported for the format
+ the image is created with but are supported for at least one format a
+ sname:VkImageView created from the image can: have.
+endif::VK_KHR_maintenance2[]
+ifdef::VK_KHR_sampler_ycbcr_conversion[]
+ * ename:VK_IMAGE_CREATE_DISJOINT_BIT_KHR indicates that an image with a
+ <<features-formats-requiring-sampler-ycbcr-conversion,multi-planar
+ format>> must: have each plane separately bound to memory, rather than
+ having a single memory binding for the whole image; the presence of this
+ bit distinguishes a _disjoint image_ from an image without this bit set.
+endif::VK_KHR_sampler_ycbcr_conversion[]
+ifdef::VK_KHR_bind_memory2[]
+ * ename:VK_IMAGE_CREATE_ALIAS_BIT_KHR indicates that two images created
+ with the same creation parameters and aliased to the same memory can:
+ interpret the contents of the memory consistently with each other,
+ subject to the rules described in the <<resources-memory-aliasing,Memory
+ Aliasing>> section.
+ifdef::VK_KHR_sampler_ycbcr_conversion[]
+ This flag further indicates that each plane of a _disjoint_ image can:
+ share an in-memory non-linear representation with single-plane images,
+ and that a single-plane image can: share an in-memory non-linear
+ representation with a plane of a multi-planar disjoint image, according
+ to the rules in <<features-formats-compatible-planes>>.
+endif::VK_KHR_sampler_ycbcr_conversion[]
+ifdef::VK_KHR_external_memory,VK_NV_external_memory[]
+ If the pname:pNext chain includes a
+ifdef::VK_KHR_external_memory[slink:VkExternalMemoryImageCreateInfoKHR]
+ifdef::VK_KHR_external_memory+VK_NV_external_memory[or]
+ifdef::VK_NV_external_memory[slink:VkExternalMemoryImageCreateInfoNV]
+ structure whose pname:handleTypes member is not `0`, it is as if
+ ename:VK_IMAGE_CREATE_ALIAS_BIT_KHR is set.
+endif::VK_KHR_external_memory,VK_NV_external_memory[]
+endif::VK_KHR_bind_memory2[]
ifdef::VK_EXT_sample_locations[]
* ename:VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT
specifies that an image with a depth or depth/stencil format can: be
@@ -1184,6 +1316,12 @@ include::../api/protos/vkGetImageSubresourceLayout.txt[]
* pname:pLayout points to a slink:VkSubresourceLayout structure in which
the layout is returned.
+ifdef::VK_KHR_sampler_ycbcr_conversion[]
+If the elink:VkFormat of pname:image is a
+<<features-formats-requiring-sampler-ycbcr-conversion,multi-planar format>>,
+fname:vkGetImageSubresourceLayout describes one plane of the image.
+endif::VK_KHR_sampler_ycbcr_conversion[]
+
flink:vkGetImageSubresourceLayout is invariant for the lifetime of a single
image.
@@ -1195,6 +1333,19 @@ image.
* [[VUID-vkGetImageSubresourceLayout-aspectMask-00997]]
The pname:aspectMask member of pname:pSubresource must: only have a
single bit set
+ifdef::VK_KHR_sampler_ycbcr_conversion[]
+ * [[VUID-vkGetImageSubresourceLayout-format-01581]] If the pname:format of pname:image is a
+ <<features-formats-requiring-sampler-ycbcr-conversion,multi-planar
+ format>> with two planes, the pname:aspectMask member of
+ pname:pSubresource must: be ename:VK_IMAGE_ASPECT_PLANE_0_BIT_KHR or
+ ename:VK_IMAGE_ASPECT_PLANE_1_BIT_KHR
+ * [[VUID-vkGetImageSubresourceLayout-format-01582]] If the pname:format of pname:image is a
+ <<features-formats-requiring-sampler-ycbcr-conversion,multi-planar
+ format>> with three planes, the pname:aspectMask member of
+ pname:pSubresource must: be ename:VK_IMAGE_ASPECT_PLANE_0_BIT_KHR,
+ ename:VK_IMAGE_ASPECT_PLANE_1_BIT_KHR or
+ ename:VK_IMAGE_ASPECT_PLANE_2_BIT_KHR
+endif::VK_KHR_sampler_ycbcr_conversion[]
****
include::../validity/protos/vkGetImageSubresourceLayout.txt[]
@@ -1281,8 +1432,12 @@ address(x,y,z,layer) = layer*arrayPitch + z*depthPitch + y*rowPitch + x*compress
pname:arrayPitch is undefined for images that were not created as arrays.
pname:depthPitch is defined only for 3D images.
-For color formats, the pname:aspectMask member of sname:VkImageSubresource
-must: be ename:VK_IMAGE_ASPECT_COLOR_BIT.
+For
+ifdef::VK_KHR_sampler_ycbcr_conversion[]
+_single-plane_
+endif::VK_KHR_sampler_ycbcr_conversion[]
+color formats, the pname:aspectMask member of sname:VkImageSubresource must:
+be ename:VK_IMAGE_ASPECT_COLOR_BIT.
For depth/stencil formats, pname:aspectMask must: be either
ename:VK_IMAGE_ASPECT_DEPTH_BIT or ename:VK_IMAGE_ASPECT_STENCIL_BIT.
On implementations that store depth and stencil aspects separately, querying
@@ -1292,6 +1447,17 @@ On implementations that store depth and stencil aspects interleaved, the
same pname:offset and pname:size are returned and represent the interleaved
memory allocation.
+ifdef::VK_KHR_sampler_ycbcr_conversion[]
+For <<features-formats-requiring-sampler-ycbcr-conversion,multi-planar
+formats>>, the pname:aspectMask member of sname:VkImageSubresource must: be
+ename:VK_IMAGE_ASPECT_PLANE_0_BIT_KHR,
+ename:VK_IMAGE_ASPECT_PLANE_1_BIT_KHR, or (for 3-plane formats only)
+ename:VK_IMAGE_ASPECT_PLANE_2_BIT_KHR.
+Querying each of these image subresource layouts will return a different
+pname:offset and pname:size representing the region of memory used for that
+plane.
+endif::VK_KHR_sampler_ycbcr_conversion[]
+
include::../validity/structs/VkSubresourceLayout.txt[]
--
@@ -1432,6 +1598,36 @@ The type(s) of device access supported by each layout are:
Similarly, only image subresources of images created with
ename:VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT can: be used as input
attachments.
+ifdef::VK_KHR_maintenance2[]
+ * ename:VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL_KHR:
+ must: only be used as a depth/stencil attachment in a
+ sname:VkFramebuffer, where the depth aspect is read-only, and/or as a
+ read-only image in a shader (which can: be read as a sampled image,
+ combined image/sampler and/or input attachment) where only the depth
+ aspect is accessed.
+ This layout is valid only for image subresources of images created with
+ the ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT usage bit enabled.
+ Only image subresources of images created with
+ ename:VK_IMAGE_USAGE_SAMPLED_BIT can: be used as a sampled image or
+ combined image/sampler in a shader.
+ Similarly, only image subresources of images created with
+ ename:VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT can: be used as input
+ attachments.
+ * ename:VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL_KHR:
+ must: only be used as a depth/stencil attachment in a
+ sname:VkFramebuffer, where the stencil aspect is read-only, and/or as a
+ read-only image in a shader (which can: be read as a sampled image,
+ combined image/sampler and/or input attachment) where only the stencil
+ aspect is accessed.
+ This layout is valid only for image subresources of images created with
+ the ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT usage bit enabled.
+ Only image subresources of images created with
+ ename:VK_IMAGE_USAGE_SAMPLED_BIT can: be used as a sampled image or
+ combined image/sampler in a shader.
+ Similarly, only image subresources of images created with
+ ename:VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT can: be used as input
+ attachments.
+endif::VK_KHR_maintenance2[]
* ename:VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL must: only be used as a
read-only image in a shader (which can: be read as a sampled image,
combined image/sampler and/or input attachment).
@@ -1564,6 +1760,16 @@ include::../api/protos/vkCreateImageView.txt[]
image view object is returned.
Some of the image creation parameters are inherited by the view.
+In particular, image view creation inherits the implicit parameter
+pname:usage specifying the allowed usages of the image view that, by
+default, takes the value of the corresponding pname:usage parameter
+specified in sname:VkImageCreateInfo at image creation time.
+ifdef::VK_KHR_maintenance2[]
+This implicit parameter can: be overriden by chaining a
+slink:VkImageViewUsageCreateInfoKHR structure through the pname:pNext member
+to sname:VkImageViewCreateInfo as described later in this section.
+endif::VK_KHR_maintenance2[]
+
The remaining parameters are contained in the pname:pCreateInfo.
include::../validity/protos/vkCreateImageView.txt[]
@@ -1591,8 +1797,17 @@ include::../api/structs/VkImageViewCreateInfo.txt[]
set of mipmap levels and array layers to be accessible to the view.
If pname:image was created with the ename:VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT
-flag, pname:format can: be different from the image's format, but if they
-are not equal they must: be _compatible_.
+flag,
+ifdef::VK_KHR_sampler_ycbcr_conversion[]
+and if the pname:format of the image is not
+<<features-formats-requiring-sampler-ycbcr-conversion,multi-planar>>,
+endif::VK_KHR_sampler_ycbcr_conversion[]
+pname:format can: be different from the image's format, but if
+ifdef::VK_KHR_maintenance2[]
+pname:image was created without the
+ename:VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT_KHR flag and
+endif::VK_KHR_maintenance2[]
+they are not equal they must: be _compatible_.
Image format compatibility is defined in the
<<features-formats-compatibility-classes,Format Compatibility Classes>>
section.
@@ -1614,6 +1829,63 @@ as described in <<fundamentals-fixedfpconv,Conversion from Normalized
Fixed-Point to Floating-Point>>.
====
+ifdef::VK_KHR_maintenance2[]
+If pname:image was created with the
+ename:VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT_KHR flag, pname:format
+must: be _compatible_ with the image's format as described above, or must:
+be an uncompressed format in which case it must: be size-compatible with the
+image's format, meaning that the element size of the uncompressed format
+must: equal the element size (compressed texel block size) of the image's
+format.
+In this case the resulting image view's texel dimensions equal the
+dimensions of the selected mip level divided by the compressed texel block
+size and rounded up.
+endif::VK_KHR_maintenance2[]
+
+ifdef::VK_KHR_sampler_ycbcr_conversion[]
+If the image view is to be used with a sampler which supports
+<<samplers-YCbCr-conversion,sampler Y'C~B~C~R~ conversion>>, an _identically
+defined object_ of type slink:VkSamplerYcbcrConversionKHR to that used to
+create the sampler must: be passed to flink:vkCreateImageView in a
+slink:VkSamplerYcbcrConversionInfoKHR added to the pname:pNext chain of
+slink:VkImageViewCreateInfo.
+
+If the image has a
+<<features-formats-requiring-sampler-ycbcr-conversion,multi-planar>>
+pname:format and pname:subresourceRange.aspectMask is
+ename:VK_IMAGE_ASPECT_COLOR_BIT, pname:format must: be identical to the
+image pname:format, and the sampler to be used with the image view must:
+enable <<samplers-YCbCr-conversion,sampler Y'C~B~C~R~ conversion>>.
+
+If pname:image was created with the ename:VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT
+and the image has a
+<<features-formats-requiring-sampler-ycbcr-conversion,multi-planar>>
+pname:format, and if pname:subresourceRange.aspectMask is
+ename:VK_IMAGE_ASPECT_PLANE_0_BIT_KHR,
+ename:VK_IMAGE_ASPECT_PLANE_1_BIT_KHR, or
+ename:VK_IMAGE_ASPECT_PLANE_2_BIT_KHR, pname:format must: be
+<<features-formats-compatible-planes,compatible>> with the corresponding
+plane of the image, as defined in, and the sampler to be used with the image
+view must: not enable <<samplers-YCbCr-conversion,sampler Y'C~B~C~R~
+conversion>>.
+The pname:width and pname:height of the single-plane image view must: be
+derived from the multi-planar image's dimensions in the manner listed for
+<<features-formats-compatible-planes,plane compatibility>> for the plane.
+
+Any view of an image plane will have the same mapping between texel
+coordinates and memory locations as used by the channels of the color
+aspect, subject to the formulae relating texel coordinates to
+lower-resolution planes as described in <<textures-chroma-reconstruction,
+Chroma Reconstruction>>.
+That is, if an R or B plane has a reduced resolution relative to the G plane
+of the multi-planar image, the image view operates using the (_u~plane~_,
+_v~plane~_) unnormalized coordinates of the reduced-resolution plane, and
+these coordinates access the same memory locations as the (_u~color~_,
+_v~color~_) unnormalized coordinates of the color aspect for which chroma
+reconstruction operations operate on the same (_u~plane~_, _v~plane~_) or
+(_i~plane~_, _j~plane~_) coordinates.
+endif::VK_KHR_sampler_ycbcr_conversion[]
+
[[resources-image-views-compatibility]]
.Image and image view parameter compatibility requirements
[cols="15%h,35%,50%",options="header"]
@@ -1925,14 +2197,62 @@ ifdef::VK_KHR_maintenance1[]
endif::VK_KHR_maintenance1[]
* [[VUID-VkImageViewCreateInfo-image-01018]]
If pname:image was created with the
- ename:VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT flag, pname:format must: be
- compatible with the pname:format used to create pname:image, as defined
- in <<features-formats-compatibility-classes,Format Compatibility
- Classes>>
+ ename:VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT flag,
+ifdef::VK_KHR_maintenance2[]
+ but without the
+ ename:VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT_KHR flag,
+endif::VK_KHR_maintenance2[]
+ifdef::VK_KHR_sampler_ycbcr_conversion[]
+ and if the pname:format of the pname:image is not a
+ <<features-formats-requiring-sampler-ycbcr-conversion,multi-planar>>
+ format,
+endif::VK_KHR_sampler_ycbcr_conversion[]
+ pname:format must: be compatible with the pname:format used to create
+ pname:image, as defined in
+ <<features-formats-compatibility-classes,Format Compatibility Classes>>
+ifdef::VK_KHR_maintenance2[]
+ * [[VUID-VkImageViewCreateInfo-image-01583]] If pname:image was created with the
+ ename:VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT_KHR flag,
+ pname:format must: be compatible with, or must: be an uncompressed
+ format that is size-compatible with, the pname:format used to create
+ pname:image.
+ * [[VUID-VkImageViewCreateInfo-image-01584]] If pname:image was created with the
+ ename:VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT_KHR flag, the
+ pname:levelCount and pname:layerCount members of pname:subresourceRange
+ must: both be `1`.
+endif::VK_KHR_maintenance2[]
+ifdef::VK_KHR_image_format_list[]
+ * [[VUID-VkImageViewCreateInfo-pNext-01585]] If a sname:VkImageFormatListCreateInfoKHR structure was included in the
+ pname:pNext chain of the sname:VkImageCreateInfo struct used when
+ creating pname:image and the pname:viewFormatCount field of
+ sname:VkImageFormatListCreateInfoKHR is not zero then pname:format must:
+ be one of the formats in
+ sname:VkImageFormatListCreateInfoKHR::pname:pViewFormats.
+endif::VK_KHR_image_format_list[]
+ifdef::VK_KHR_sampler_ycbcr_conversion[]
+ * [[VUID-VkImageViewCreateInfo-image-01586]] If pname:image was created with the
+ ename:VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT flag, if the pname:format of
+ the pname:image is a
+ <<features-formats-requiring-sampler-ycbcr-conversion,multi-planar>>
+ format, and if pname:subresourceRange.aspectMask is one of
+ ename:VK_IMAGE_ASPECT_PLANE_0_BIT_KHR,
+ ename:VK_IMAGE_ASPECT_PLANE_1_BIT_KHR, or
+ ename:VK_IMAGE_ASPECT_PLANE_2_BIT_KHR, then pname:format must: be
+ compatible with the elink:VkFormat for the plane of the pname:image
+ pname:format indicated by pname:subresourceRange.aspectMask, as defined
+ in <<features-formats-compatible-planes>>
+endif::VK_KHR_sampler_ycbcr_conversion[]
* [[VUID-VkImageViewCreateInfo-image-01019]]
If pname:image was not created with the
- ename:VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT flag, pname:format must: be
- identical to the pname:format used to create pname:image
+ ename:VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT flag,
+ifdef::VK_KHR_sampler_ycbcr_conversion[]
+ or if the pname:format of the pname:image is a
+ <<features-formats-requiring-sampler-ycbcr-conversion,multi-planar>>
+ format and if pname:subresourceRange.aspectMask is
+ ename:VK_IMAGE_ASPECT_COLOR_BIT,
+endif::VK_KHR_sampler_ycbcr_conversion[]
+ pname:format must: be identical to the pname:format used to create
+ pname:image
* [[VUID-VkImageViewCreateInfo-image-01020]]
If pname:image is non-sparse then it must: be bound completely and
contiguously to a single sname:VkDeviceMemory object
@@ -1945,6 +2265,45 @@ endif::VK_KHR_maintenance1[]
include::../validity/structs/VkImageViewCreateInfo.txt[]
--
+ifdef::VK_KHR_maintenance2[]
+
+[open,refpage='VkImageViewUsageCreateInfoKHR',desc='Specify the intended usage of an image view',type='structs']
+--
+
+The set of usages for the created image view can: be restricted compared to
+the parent image's pname:usage flags by chaining a
+sname:VkImageViewUsageCreateInfoKHR structure through the pname:pNext member
+to sname:VkImageViewCreateInfo.
+
+The sname:VkImageViewUsageCreateInfoKHR structure is defined as:
+
+include::../api/structs/VkImageViewUsageCreateInfoKHR.txt[]
+
+ * pname:sType is the type of this structure.
+ * pname:pNext is `NULL` or a pointer to an extension-specific structure.
+ * pname:usage is a bitmask describing the allowed usages of the image
+ view.
+ See elink:VkImageUsageFlagBits for a description of the supported bits.
+
+When this structure is chained to sname:VkImageViewCreateInfo the
+pname:usage field overrides the implicit pname:usage parameter inherited
+from image creation time and its value is used instead for the purposes of
+determining the valid usage conditions of slink:VkImageViewCreateInfo.
+
+
+.Valid Usage
+****
+ * [[VUID-VkImageViewUsageCreateInfoKHR-usage-01587]] pname:usage must: not include any set bits that were not set in the
+ pname:usage member of the slink:VkImageCreateInfo structure used to
+ create the image this image view is created from.
+****
+
+include::../validity/structs/VkImageViewUsageCreateInfoKHR.txt[]
+
+--
+
+endif::VK_KHR_maintenance2[]
+
[open,refpage='VkImageSubresourceRange',desc='Structure specifying a image subresource range',type='structs']
--
@@ -1982,7 +2341,14 @@ multiple of 6, behavior when indexing the last cube is undefined.
pname:aspectMask must: be only ename:VK_IMAGE_ASPECT_COLOR_BIT,
ename:VK_IMAGE_ASPECT_DEPTH_BIT or ename:VK_IMAGE_ASPECT_STENCIL_BIT if
-pname:format is a color, depth-only or stencil-only format, respectively.
+pname:format is a color, depth-only or stencil-only format,
+ifndef::VK_KHR_sampler_ycbcr_conversion[]
+respectively.
+endif::VK_KHR_sampler_ycbcr_conversion[]
+ifdef::VK_KHR_sampler_ycbcr_conversion[]
+respectively, except if pname:format is a
+<<features-formats-requiring-sampler-ycbcr-conversion,multi-planar format>>.
+endif::VK_KHR_sampler_ycbcr_conversion[]
If using a depth/stencil format with both depth and stencil components,
pname:aspectMask must: include at least one of
ename:VK_IMAGE_ASPECT_DEPTH_BIT and ename:VK_IMAGE_ASPECT_STENCIL_BIT, and
@@ -2016,7 +2382,28 @@ The pname:components member is of type slink:VkComponentMapping, and
describes a remapping from components of the image to components of the
vector returned by shader image instructions.
This remapping must: be identity for storage image descriptors, input
-attachment descriptors, and framebuffer attachments.
+attachment descriptors,
+ifndef::VK_KHR_sampler_ycbcr_conversion[]
+and framebuffer attachments.
+endif::VK_KHR_sampler_ycbcr_conversion[]
+ifdef::VK_KHR_sampler_ycbcr_conversion[]
+framebuffer attachments, and any sname:VkImageView used with a combined
+image sampler that enables <<samplers-YCbCr-conversion,sampler Y'C~B~C~R~
+conversion>>.
+
+If <<samplers-YCbCr-conversion,sampler Y'C~B~C~R~ conversion>> is enabled in
+the sampler, the pname:aspectMask used by a sname:VkImageView must: be
+ename:VK_IMAGE_ASPECT_COLOR_BIT.
+
+If sampler Y'C~B~C~R~ conversion is not enabled in the sampler and the
+format is
+<<features-formats-requiring-sampler-ycbcr-conversion,multi-planar>>, the
+image must: have been created with ename:VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT,
+and the pname:aspectMask of the sname:VkImageView's
+sname:VkImageSubresourceRange must: be
+ename:VK_IMAGE_ASPECT_PLANE_0_BIT_KHR, ename:VK_IMAGE_ASPECT_PLANE_1_BIT_KHR
+or ename:VK_IMAGE_ASPECT_PLANE_2_BIT_KHR.
+endif::VK_KHR_sampler_ycbcr_conversion[]
include::../validity/structs/VkImageSubresourceRange.txt[]
--
@@ -2198,7 +2585,13 @@ include::../validity/protos/vkGetBufferMemoryRequirements.txt[]
[open,refpage='vkGetImageMemoryRequirements',desc='Returns the memory requirements for specified Vulkan object',type='protos']
--
+ifndef::VK_KHR_sampler_ycbcr_conversion[]
To determine the memory requirements for an image resource, call:
+endif::VK_KHR_sampler_ycbcr_conversion[]
+ifdef::VK_KHR_sampler_ycbcr_conversion[]
+To determine the memory requirements for an image resource which is not
+created with the ename:VK_IMAGE_CREATE_DISJOINT_BIT_KHR flag set, call:
+endif::VK_KHR_sampler_ycbcr_conversion[]
include::../api/protos/vkGetImageMemoryRequirements.txt[]
@@ -2208,6 +2601,17 @@ include::../api/protos/vkGetImageMemoryRequirements.txt[]
slink:VkMemoryRequirements structure in which the memory requirements of
the image object are returned.
+ifdef::VK_KHR_sampler_ycbcr_conversion[]
+
+.Valid Usage
+****
+ * [[VUID-vkGetImageMemoryRequirements-image-01588]]
+ pname:image must: not have been created with the
+ ename:VK_IMAGE_CREATE_DISJOINT_BIT_KHR flag set
+****
+
+endif::VK_KHR_sampler_ycbcr_conversion[]
+
include::../validity/protos/vkGetImageMemoryRequirements.txt[]
--
@@ -2396,9 +2800,59 @@ include::../api/structs/VkImageMemoryRequirementsInfo2KHR.txt[]
* pname:pNext is `NULL` or a pointer to an extension-specific structure.
* pname:image is the image to query.
+.Valid Usage
+****
+ifdef::VK_KHR_sampler_ycbcr_conversion[]
+ * [[VUID-VkImageMemoryRequirementsInfo2KHR-image-01589]] If pname:image was created with a _multi-planar_ format and the
+ ename:VK_IMAGE_CREATE_DISJOINT_BIT_KHR flag, there must: be a
+ slink:VkImagePlaneMemoryRequirementsInfoKHR in the pname:pNext chain of
+ the slink:VkImageMemoryRequirementsInfo2KHR structure
+ * [[VUID-VkImageMemoryRequirementsInfo2KHR-image-01590]] If pname:image was not created with the
+ ename:VK_IMAGE_CREATE_DISJOINT_BIT_KHR flag, there must: not be a
+ slink:VkImagePlaneMemoryRequirementsInfoKHR in the pname:pNext chain of
+ the slink:VkImageMemoryRequirementsInfo2KHR structure
+ * [[VUID-VkImageMemoryRequirementsInfo2KHR-image-01591]] If pname:image was created with a single-plane format, there must: not
+ be a slink:VkImagePlaneMemoryRequirementsInfoKHR in the pname:pNext
+ chain of the slink:VkImageMemoryRequirementsInfo2KHR structure
+endif::VK_KHR_sampler_ycbcr_conversion[]
+****
+
include::../validity/structs/VkImageMemoryRequirementsInfo2KHR.txt[]
--
+ifdef::VK_KHR_sampler_ycbcr_conversion[]
+[open,refpage='VkImagePlaneMemoryRequirementsInfoKHR',desc='Structure specifying image plane for memory requirements',type='structs']
+--
+
+To determine the memory requirements for a plane of a disjoint image, add a
+sname:VkImagePlaneMemoryRequirementsInfoKHR to the pname:pNext chain of the
+sname:VkImageMemoryRequirementsInfo2KHR structure.
+
+The sname:VkImagePlaneMemoryRequirementsInfoKHR structure is defined as:
+
+include::../api/structs/VkImagePlaneMemoryRequirementsInfoKHR.txt[]
+
+ * pname:sType is the type of this structure.
+ * pname:pNext is `NULL` or a pointer to an extension-specific structure.
+ * pname:planeAspect is the aspect corresponding to the image plane to
+ query.
+
+.Valid Usage
+****
+ * [[VUID-VkImagePlaneMemoryRequirementsInfoKHR-planeAspect-01592]] pname:planeAspect must: be an aspect that exists in the format; that is,
+ for a two-plane image pname:planeAspect must: be
+ ename:VK_IMAGE_ASPECT_PLANE_0_BIT_KHR or
+ ename:VK_IMAGE_ASPECT_PLANE_1_BIT_KHR, and for a three-plane image
+ pname:planeAspect must: be ename:VK_IMAGE_ASPECT_PLANE_0_BIT_KHR,
+ ename:VK_IMAGE_ASPECT_PLANE_1_BIT_KHR or
+ ename:VK_IMAGE_ASPECT_PLANE_2_BIT_KHR
+****
+
+include::../validity/structs/VkImagePlaneMemoryRequirementsInfoKHR.txt[]
+--
+
+endif::VK_KHR_sampler_ycbcr_conversion[]
+
[open,refpage='VkMemoryRequirements2KHR',desc='Structure specifying memory requirements',type='structs']
--
@@ -2541,13 +2995,13 @@ include::../api/protos/vkBindBufferMemory.txt[]
sname:VkMemoryRequirements::pname:size member in pname:memory, starting
from pname:memoryOffset bytes, will be bound to the specified buffer.
-ifdef::VK_KHX_device_group[]
+ifdef::VK_KHR_bind_memory2[]
fname:vkBindBufferMemory is equivalent to passing the same parameters
-through slink:VkBindBufferMemoryInfoKHX to flink:vkBindBufferMemory2KHX,
-with pname:deviceIndexCount equal to zero.
+through slink:VkBindBufferMemoryInfoKHR to flink:vkBindBufferMemory2KHR.
+
+endif::VK_KHR_bind_memory2[]
-endif::VK_KHX_device_group[]
.Valid Usage
****
@@ -2626,36 +3080,35 @@ endif::VK_NV_dedicated_allocation[]
include::../validity/protos/vkBindBufferMemory.txt[]
--
-ifdef::VK_KHX_device_group[]
+ifdef::VK_KHR_bind_memory2[]
-[open,refpage='vkBindBufferMemory2KHX',desc='Bind device memory to buffer objects',type='protos']
+[open,refpage='vkBindBufferMemory2KHR',desc='Bind device memory to buffer objects',type='protos']
--
To attach memory to buffer objects for one or more buffers at a time, call:
-include::../api/protos/vkBindBufferMemory2KHX.txt[]
+include::../api/protos/vkBindBufferMemory2KHR.txt[]
* pname:device is the logical device that owns the buffers and memory.
* pname:bindInfoCount is the number of elements in pname:pBindInfos.
* pname:pBindInfos is a pointer to an array of structures of type
- slink:VkBindBufferMemoryInfoKHX, describing buffers and memory to bind.
+ slink:VkBindBufferMemoryInfoKHR, describing buffers and memory to bind.
On some implementations, it may: be more efficient to batch memory bindings
into a single command.
-include::../validity/protos/vkBindBufferMemory2KHX.txt[]
+include::../validity/protos/vkBindBufferMemory2KHR.txt[]
--
-[open,refpage='VkBindBufferMemoryInfoKHX',desc='Structure specifying how to bind a buffer to memory',type='structs']
+[open,refpage='VkBindBufferMemoryInfoKHR',desc='Structure specifying how to bind a buffer to memory',type='structs']
--
-sname:VkBindBufferMemoryInfoKHX contains members corresponding to the
-parameters to flink:vkBindBufferMemory, as well as new members to control
-peer memory bindings.
+sname:VkBindBufferMemoryInfoKHR contains members corresponding to the
+parameters of flink:vkBindBufferMemory.
-The sname:VkBindBufferMemoryInfoKHX structure is defined as:
+The sname:VkBindBufferMemoryInfoKHR structure is defined as:
-include::../api/structs/VkBindBufferMemoryInfoKHX.txt[]
+include::../api/structs/VkBindBufferMemoryInfoKHR.txt[]
* pname:sType is the type of this structure.
* pname:pNext is `NULL` or a pointer to an extension-specific structure.
@@ -2667,6 +3120,87 @@ include::../api/structs/VkBindBufferMemoryInfoKHX.txt[]
The number of bytes returned in the
sname:VkMemoryRequirements::pname:size member in pname:memory, starting
from pname:memoryOffset bytes, will be bound to the specified buffer.
+
+.Valid Usage
+****
+ * [[VUID-VkBindBufferMemoryInfoKHR-buffer-01593]] pname:buffer must: not already be backed by a memory object
+ * [[VUID-VkBindBufferMemoryInfoKHR-buffer-01594]] pname:buffer must: not have been created with any sparse memory binding
+ flags
+ * [[VUID-VkBindBufferMemoryInfoKHR-memoryOffset-01595]] pname:memoryOffset must: be less than the size of pname:memory
+ * [[VUID-VkBindBufferMemoryInfoKHR-buffer-01596]] If pname:buffer was created with the
+ ename:VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT or
+ ename:VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT, pname:memoryOffset must:
+ be a multiple of
+ sname:VkPhysicalDeviceLimits::pname:minTexelBufferOffsetAlignment
+ * [[VUID-VkBindBufferMemoryInfoKHR-buffer-01597]] If pname:buffer was created with the
+ ename:VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT, pname:memoryOffset must: be a
+ multiple of
+ sname:VkPhysicalDeviceLimits::pname:minUniformBufferOffsetAlignment
+ * [[VUID-VkBindBufferMemoryInfoKHR-buffer-01598]] If pname:buffer was created with the
+ ename:VK_BUFFER_USAGE_STORAGE_BUFFER_BIT, pname:memoryOffset must: be a
+ multiple of
+ sname:VkPhysicalDeviceLimits::pname:minStorageBufferOffsetAlignment
+ * [[VUID-VkBindBufferMemoryInfoKHR-memory-01599]] pname:memory must: have been allocated using one of the memory types
+ allowed in the pname:memoryTypeBits member of the
+ sname:VkMemoryRequirements structure returned from a call to
+ fname:vkGetBufferMemoryRequirements with pname:buffer
+ * [[VUID-VkBindBufferMemoryInfoKHR-memoryOffset-01600]] pname:memoryOffset must: be an integer multiple of the pname:alignment
+ member of the sname:VkMemoryRequirements structure returned from a call
+ to fname:vkGetBufferMemoryRequirements with pname:buffer
+ * [[VUID-VkBindBufferMemoryInfoKHR-size-01601]] The pname:size member of the sname:VkMemoryRequirements structure
+ returned from a call to fname:vkGetBufferMemoryRequirements with
+ pname:buffer must: be less than or equal to the size of pname:memory
+ minus pname:memoryOffset
+ifdef::VK_KHR_dedicated_allocation[]
+ * [[VUID-VkBindBufferMemoryInfoKHR-buffer-01602]] If pname:buffer requires a dedicated allocation(as reported by
+ flink:vkGetBufferMemoryRequirements2KHR in
+ slink:VkMemoryDedicatedRequirementsKHR::requiresDedicatedAllocation for
+ pname:image), pname:memory must: have been created with
+ slink:VkMemoryDedicatedAllocateInfoKHR::pname:buffer equal to
+ pname:buffer and pname:memoryOffset must: be zero
+endif::VK_KHR_dedicated_allocation[]
+ifdef::VK_NV_dedicated_allocation[]
+ * [[VUID-VkBindBufferMemoryInfoKHR-buffer-01603]] If pname:buffer was created with
+ slink:VkDedicatedAllocationBufferCreateInfoNV::pname:dedicatedAllocation
+ equal to ename:VK_TRUE, pname:memory must: have been created with
+ slink:VkDedicatedAllocationMemoryAllocateInfoNV::pname:buffer equal to
+ pname:buffer and pname:memoryOffset must: be zero
+ifndef::VK_KHR_dedicated_allocation[]
+ * [[VUID-VkBindBufferMemoryInfoKHR-buffer-01604]] If pname:buffer was not created with
+ slink:VkDedicatedAllocationBufferCreateInfoNV::pname:dedicatedAllocation
+ equal to ename:VK_TRUE, pname:memory must: not have been allocated
+ dedicated for a specific buffer or image
+endif::VK_KHR_dedicated_allocation[]
+endif::VK_NV_dedicated_allocation[]
+ifdef::VK_KHX_device_group[]
+ * [[VUID-VkBindBufferMemoryInfoKHR-pNext-01605]] If the pname:pNext chain includes
+ slink:VkBindBufferMemoryDeviceGroupInfoKHX, all instances of
+ pname:memory specified by
+ slink:VkBindBufferMemoryDeviceGroupInfoKHX::pname:pDeviceIndices must:
+ have been allocated
+endif::VK_KHX_device_group[]
+****
+
+include::../validity/structs/VkBindBufferMemoryInfoKHR.txt[]
+
+--
+
+ifdef::VK_KHX_device_group[]
+
+[open,refpage='VkBindBufferMemoryDeviceGroupInfoKHX',desc='Structure specifying device within a group to bind to',type='structs']
+--
+
+include::../api/structs/VkBindBufferMemoryDeviceGroupInfoKHX.txt[]
+
+If the pname:pNext list of slink:VkBindBufferMemoryInfoKHR includes a
+sname:VkBindBufferMemoryDeviceGroupInfoKHX structure, then that structure
+determines how memory is bound to buffers across multiple devices in a
+device group.
+
+The sname:VkBindBufferMemoryDeviceGroupInfoKHX structure is defined as:
+
+ * pname:sType is the type of this structure.
+ * pname:pNext is `NULL` or a pointer to an extension-specific structure.
* pname:deviceIndexCount is the number of elements in
pname:pDeviceIndices.
* pname:pDeviceIndices is a pointer to an array of device indices.
@@ -2689,27 +3223,28 @@ In other words, by default each physical device attaches to instance zero.
.Valid Usage
****
- * [[VUID-VkBindBufferMemoryInfoKHX-None-01040]]
- All valid usage rules from flink:vkBindBufferMemory apply to the
- identically named members of sname:VkBindBufferMemoryInfoKHX
- * [[VUID-VkBindBufferMemoryInfoKHX-deviceIndexCount-01041]]
- pname:deviceIndexCount must: either be zero or equal to the number of
+ * [[VUID-VkBindBufferMemoryDeviceGroupInfoKHX-deviceIndexCount-01606]] pname:deviceIndexCount must: either be zero or equal to the number of
physical devices in the logical device
- * [[VUID-VkBindBufferMemoryInfoKHX-pDeviceIndices-01042]]
- All elements of pname:pDeviceIndices must: be valid device indices
- * [[VUID-VkBindBufferMemoryInfoKHX-None-01043]]
- All instances of memory that are bound to must: have been allocated
+ * [[VUID-VkBindBufferMemoryDeviceGroupInfoKHX-pDeviceIndices-01607]] All elements of pname:pDeviceIndices must: be valid device indices
****
-include::../validity/structs/VkBindBufferMemoryInfoKHX.txt[]
+include::../validity/structs/VkBindBufferMemoryDeviceGroupInfoKHX.txt[]
--
endif::VK_KHX_device_group[]
+endif::VK_KHR_bind_memory2[]
[open,refpage='vkBindImageMemory',desc='Bind device memory to an image object',type='protos']
--
+
+ifndef::VK_KHR_sampler_ycbcr_conversion[]
To attach memory to an image object, call:
+endif::VK_KHR_sampler_ycbcr_conversion[]
+ifdef::VK_KHR_sampler_ycbcr_conversion[]
+To attach memory to a sname:VkImage object created without the
+ename:VK_IMAGE_CREATE_DISJOINT_BIT_KHR set, call:
+endif::VK_KHR_sampler_ycbcr_conversion[]
include::../api/protos/vkBindImageMemory.txt[]
@@ -2723,16 +3258,19 @@ include::../api/protos/vkBindImageMemory.txt[]
sname:VkMemoryRequirements::pname:size member in pname:memory, starting
from pname:memoryOffset bytes, will be bound to the specified image.
-ifdef::VK_KHX_device_group[]
+ifdef::VK_KHR_bind_memory2[]
fname:vkBindImageMemory is equivalent to passing the same parameters through
-slink:VkBindImageMemoryInfoKHX to flink:vkBindImageMemory2KHX, with
-pname:deviceIndexCount and pname:SFRRectCount equal to zero.
+slink:VkBindImageMemoryInfoKHR to flink:vkBindImageMemory2KHR.
-endif::VK_KHX_device_group[]
+endif::VK_KHR_bind_memory2[]
.Valid Usage
****
+ifdef::VK_KHR_sampler_ycbcr_conversion[]
+ * [[VUID-vkBindImageMemory-image-01608]] pname:image must: not have been created with the
+ ename:VK_IMAGE_CREATE_DISJOINT_BIT_KHR set.
+endif::VK_KHR_sampler_ycbcr_conversion[]
* [[VUID-vkBindImageMemory-image-01044]]
pname:image must: not already be backed by a memory object
* [[VUID-vkBindImageMemory-image-01045]]
@@ -2791,36 +3329,34 @@ endif::VK_NV_dedicated_allocation[]
include::../validity/protos/vkBindImageMemory.txt[]
--
-ifdef::VK_KHX_device_group[]
-
-[open,refpage='vkBindImageMemory2KHX',desc='Bind device memory to image objects',type='protos']
+ifdef::VK_KHR_bind_memory2[]
+[open,refpage='vkBindImageMemory2KHR',desc='Bind device memory to image objects',type='protos']
--
To attach memory to image objects for one or more images at a time, call:
-include::../api/protos/vkBindImageMemory2KHX.txt[]
+include::../api/protos/vkBindImageMemory2KHR.txt[]
* pname:device is the logical device that owns the images and memory.
* pname:bindInfoCount is the number of elements in pname:pBindInfos.
* pname:pBindInfos is a pointer to an array of structures of type
- slink:VkBindImageMemoryInfoKHX, describing images and memory to bind.
+ slink:VkBindImageMemoryInfoKHR, describing images and memory to bind.
On some implementations, it may: be more efficient to batch memory bindings
into a single command.
-include::../validity/protos/vkBindImageMemory2KHX.txt[]
+include::../validity/protos/vkBindImageMemory2KHR.txt[]
--
-[open,refpage='VkBindImageMemoryInfoKHX',desc='Structure specifying how to bind an image to memory',type='structs']
+[open,refpage='VkBindImageMemoryInfoKHR',desc='Structure specifying how to bind an image to memory',type='structs']
--
-sname:VkBindImageMemoryInfoKHX contains members corresponding to the
-parameters to flink:vkBindImageMemory, as well as new members to control
-peer memory bindings.
+sname:VkBindImageMemoryInfoKHR contains members corresponding to the
+parameters of flink:vkBindImageMemory.
-The sname:VkBindImageMemoryInfoKHX structure is defined as:
+The sname:VkBindImageMemoryInfoKHR structure is defined as:
-include::../api/structs/VkBindImageMemoryInfoKHX.txt[]
+include::../api/structs/VkBindImageMemoryInfoKHR.txt[]
* pname:sType is the type of this structure.
* pname:pNext is `NULL` or a pointer to an extension-specific structure.
@@ -2829,9 +3365,153 @@ include::../api/structs/VkBindImageMemoryInfoKHX.txt[]
memory to attach.
* pname:memoryOffset is the start offset of the region of pname:memory
which is to be bound to the image.
- If pname:SFRRectCount is zero, the number of bytes returned in the
+ The number of bytes returned in the
sname:VkMemoryRequirements::pname:size member in pname:memory, starting
from pname:memoryOffset bytes, will be bound to the specified image.
+
+.Valid Usage
+****
+ * [[VUID-VkBindImageMemoryInfoKHR-image-01609]] pname:image must: not already be backed by a memory object
+ * [[VUID-VkBindImageMemoryInfoKHR-image-01610]] pname:image must: not have been created with any sparse memory binding
+ flags
+ * [[VUID-VkBindImageMemoryInfoKHR-memoryOffset-01611]] pname:memoryOffset must: be less than the size of pname:memory
+ifndef::VK_KHR_sampler_ycbcr_conversion[]
+ * [[VUID-VkBindImageMemoryInfoKHR-memory-01612]] pname:memory must: have been allocated using one of the memory types
+ allowed in the pname:memoryTypeBits member of the
+ slink:VkMemoryRequirements structure returned from a call to
+ flink:vkGetImageMemoryRequirements with pname:image
+ * [[VUID-VkBindImageMemoryInfoKHR-memoryOffset-01613]] pname:memoryOffset must: be an integer multiple of the pname:alignment
+ member of the slink:VkMemoryRequirements structure returned from a call
+ to flink:vkGetImageMemoryRequirements with pname:image
+ * [[VUID-VkBindImageMemoryInfoKHR-memory-01614]] The difference of the size of pname:memory and pname:memoryOffset must:
+ be greater than or equal to the pname:size member of the
+ slink:VkMemoryRequirements structure returned from a call to
+ flink:vkGetImageMemoryRequirements with the same pname:image
+endif::VK_KHR_sampler_ycbcr_conversion[]
+ifdef::VK_KHR_sampler_ycbcr_conversion[]
+ * [[VUID-VkBindImageMemoryInfoKHR-pNext-01615]] If the pname:pNext chain does not include an instance of the
+ slink:VkBindImagePlaneMemoryInfoKHR structure, pname:memory must: have
+ been allocated using one of the memory types allowed in the
+ pname:memoryTypeBits member of the slink:VkMemoryRequirements structure
+ returned from a call to flink:vkGetImageMemoryRequirements2KHR with
+ pname:image
+ * [[VUID-VkBindImageMemoryInfoKHR-pNext-01616]] If the pname:pNext chain does not include an instance of the
+ slink:VkBindImagePlaneMemoryInfoKHR structure, pname:memoryOffset must:
+ be an integer multiple of the pname:alignment member of the
+ slink:VkMemoryRequirements structure returned from a call to
+ flink:vkGetImageMemoryRequirements2KHR with pname:image
+ * [[VUID-VkBindImageMemoryInfoKHR-pNext-01617]] If the pname:pNext chain does not include an instance of the
+ slink:VkBindImagePlaneMemoryInfoKHR structure, the difference of the
+ size of pname:memory and pname:memoryOffset must: be greater than or
+ equal to the pname:size member of the slink:VkMemoryRequirements
+ structure returned from a call to flink:vkGetImageMemoryRequirements2KHR
+ with the same pname:image
+ * [[VUID-VkBindImageMemoryInfoKHR-pNext-01618]] If the pname:pNext chain includes an instance of the
+ slink:VkBindImagePlaneMemoryInfoKHR structure, pname:image must: have
+ been created with the ename:VK_IMAGE_CREATE_DISJOINT_BIT_KHR bit set.
+ * [[VUID-VkBindImageMemoryInfoKHR-pNext-01619]] If the pname:pNext chain includes an instance of the
+ slink:VkBindImagePlaneMemoryInfoKHR structure, pname:memory must: have
+ been allocated using one of the memory types allowed in the
+ pname:memoryTypeBits member of the slink:VkMemoryRequirements structure
+ returned from a call to flink:vkGetImageMemoryRequirements2KHR with
+ pname:image and the correct pname:planeAspect for this plane in the
+ slink:VkImagePlaneMemoryRequirementsInfoKHR structure attached to the
+ slink:VkImageMemoryRequirementsInfo2KHR's pname:pNext chain
+ * [[VUID-VkBindImageMemoryInfoKHR-pNext-01620]] If the pname:pNext chain includes an instance of the
+ slink:VkBindImagePlaneMemoryInfoKHR structure, pname:memoryOffset must:
+ be an integer multiple of the pname:alignment member of the
+ slink:VkMemoryRequirements structure returned from a call to
+ flink:vkGetImageMemoryRequirements2KHR with pname:image and the correct
+ pname:planeAspect for this plane in the
+ slink:VkImagePlaneMemoryRequirementsInfoKHR structure attached to the
+ slink:VkImageMemoryRequirementsInfo2KHR's pname:pNext chain
+ * [[VUID-VkBindImageMemoryInfoKHR-pNext-01621]] If the pname:pNext chain includes an instance of the
+ slink:VkBindImagePlaneMemoryInfoKHR structure, the difference of the
+ size of pname:memory and pname:memoryOffset must: be greater than or
+ equal to the pname:size member of the slink:VkMemoryRequirements
+ structure returned from a call to flink:vkGetImageMemoryRequirements2KHR
+ with the same pname:image and the correct pname:planeAspect for this
+ plane in the slink:VkImagePlaneMemoryRequirementsInfoKHR structure
+ attached to the slink:VkImageMemoryRequirementsInfo2KHR's pname:pNext
+ chain
+endif::VK_KHR_sampler_ycbcr_conversion[]
+ifdef::VK_KHR_dedicated_allocation[]
+ * [[VUID-VkBindImageMemoryInfoKHR-image-01622]] If pname:image requires a dedicated allocation (as reported by
+ flink:vkGetImageMemoryRequirements2KHR in
+ slink:VkMemoryDedicatedRequirementsKHR::requiresDedicatedAllocation for
+ pname:image), pname:memory must: have been created with
+ slink:VkMemoryDedicatedAllocateInfoKHR::pname:image equal to pname:image
+ and pname:memoryOffset must: be zero
+endif::VK_KHR_dedicated_allocation[]
+ifdef::VK_NV_dedicated_allocation[]
+ * [[VUID-VkBindImageMemoryInfoKHR-image-01623]] If pname:image was created with
+ slink:VkDedicatedAllocationImageCreateInfoNV::pname:dedicatedAllocation
+ equal to ename:VK_TRUE, pname:memory must: have been created with
+ slink:VkDedicatedAllocationMemoryAllocateInfoNV::pname:image equal to
+ pname:image and pname:memoryOffset must: be zero
+ifndef::VK_KHR_dedicated_allocation[]
+ * [[VUID-VkBindImageMemoryInfoKHR-image-01624]] If pname:image was not created with
+ slink:VkDedicatedAllocationImageCreateInfoNV::pname:dedicatedAllocation
+ equal to ename:VK_TRUE, pname:memory must: not have been allocated
+ dedicated for a specific buffer or image
+endif::VK_KHR_dedicated_allocation[]
+endif::VK_NV_dedicated_allocation[]
+ifndef::VK_KHX_device_group[]
+ * [[VUID-VkBindImageMemoryInfoKHR-memory-01625]] pname:memory must: be a valid dname:VkDeviceMemory handle
+endif::VK_KHX_device_group[]
+ifdef::VK_KHX_device_group[]
+ * [[VUID-VkBindImageMemoryInfoKHR-pNext-01626]] If the pname:pNext chain includes
+ slink:VkBindImageMemoryDeviceGroupInfoKHX, all instances of pname:memory
+ specified by
+ slink:VkBindImageMemoryDeviceGroupInfoKHX::pname:pDeviceIndices must:
+ have been allocated
+ * [[VUID-VkBindImageMemoryInfoKHR-pNext-01627]] If the pname:pNext chain includes
+ slink:VkBindImageMemoryDeviceGroupInfoKHX, and
+ slink:VkBindImageMemoryDeviceGroupInfoKHX::pname:SFRRectCount is not
+ zero, then pname:image must: have been created with the
+ ename:VK_IMAGE_CREATE_BIND_SFR_BIT_KHX bit set
+ * [[VUID-VkBindImageMemoryInfoKHR-pNext-01628]] If the pname:pNext chain includes
+ slink:VkBindImageMemoryDeviceGroupInfoKHX, all elements of
+ slink:VkBindImageMemoryDeviceGroupInfoKHX::pname:pSFRRects must: be
+ valid rectangles contained within the dimensions of pname:image
+ * [[VUID-VkBindImageMemoryInfoKHR-pNext-01629]] If the pname:pNext chain includes
+ slink:VkBindImageMemoryDeviceGroupInfoKHX, the union of the areas of all
+ elements of slink:VkBindImageMemoryDeviceGroupInfoKHX::pname:pSFRRects
+ that correspond to the same instance of pname: image must: cover the
+ entire image.
+ * [[VUID-VkBindImageMemoryInfoKHR-image-01630]] If pname:image was created with a valid swapchain handle in
+ slink:VkImageSwapchainCreateInfoKHX::pname:swapchain, then the
+ pname:pNext chain must: include a valid instance of
+ slink:VkBindImageMemorySwapchainInfoKHX
+ * [[VUID-VkBindImageMemoryInfoKHR-pNext-01631]] If the pname:pNext chain includes an instance of
+ slink:VkBindImageMemorySwapchainInfoKHX, pname:memory must: be
+ dlink:VK_NULL_HANDLE
+ * [[VUID-VkBindImageMemoryInfoKHR-pNext-01632]] If the pname:pNext chain does not include an instance of
+ slink:VkBindImageMemorySwapchainInfoKHX, pname:memory must: be a valid
+ dname:VkDeviceMemory handle
+endif::VK_KHX_device_group[]
+****
+
+include::../validity/structs/VkBindImageMemoryInfoKHR.txt[]
+
+--
+
+ifdef::VK_KHR_device_group[]
+
+[open,refpage='VkBindImageMemoryDeviceGroupInfoKHX',desc='Structure specifying device within a group to bind to',type='structs']
+--
+
+include::../api/structs/VkBindImageMemoryDeviceGroupInfoKHX.txt[]
+
+If the pname:pNext list of slink:VkBindImageMemoryInfoKHR includes a
+sname:VkBindImageMemoryDeviceGroupInfoKHX structure, then that structure
+determines how memory is bound to images across multiple devices in a device
+group.
+
+The sname:VkBindImageMemoryDeviceGroupInfoKHX structure is defined as:
+
+ * pname:sType is the type of this structure.
+ * pname:pNext is `NULL` or a pointer to an extension-specific structure.
* pname:deviceIndexCount is the number of elements in
pname:pDeviceIndices.
* pname:pDeviceIndices is a pointer to an array of device indices.
@@ -2846,11 +3526,11 @@ with device index [eq]#pDeviceIndices[i]#.
Let [eq]#N# be the number of physical devices in the logical device.
If pname:SFRRectCount is greater than zero, then pname:pSFRRects is an array
of [eq]#N^2^# rectangles, where the image region specified by the rectangle
-at element [eq]#i*N+j# in resource instance [eq]#i# is bound to memory
+at element [eq]#i*N+j# in resource instance [eq]#i# is bound to the memory
instance [eq]#j#.
-The blocks of memory that are bound to each sparse image block region use an
-offset in memory, relative to pname:memoryOffset, computed as if the whole
-image were being bound to a contiguous range of memory.
+The blocks of the memory that are bound to each sparse image block region
+use an offset in memory, relative to pname:memoryOffset, computed as if the
+whole image were being bound to a contiguous range of memory.
In other words, horizontally adjacent image blocks use consecutive blocks of
memory, vertically adjacent image blocks are separated by the number of
bytes per block multiplied by the width in blocks of pname:image, and the
@@ -2872,65 +3552,76 @@ In other words, by default each physical device attaches to instance zero.
.Valid Usage
****
- * [[VUID-VkBindImageMemoryInfoKHX-None-01052]]
- All valid usage rules from flink:vkBindImageMemory apply to the
- identically named members of sname:VkBindImageMemoryInfoKHX
- * [[VUID-VkBindImageMemoryInfoKHX-deviceIndexCount-01053]]
- At least one of pname:deviceIndexCount and pname:SFRRectCount must: be
+ * [[VUID-VkBindImageMemoryDeviceGroupInfoKHX-deviceIndexCount-01633]] At least one of pname:deviceIndexCount and pname:SFRRectCount must: be
zero.
- * [[VUID-VkBindImageMemoryInfoKHX-deviceIndexCount-01054]]
- pname:deviceIndexCount must: either be zero or equal to the number of
+ * [[VUID-VkBindImageMemoryDeviceGroupInfoKHX-deviceIndexCount-01634]] pname:deviceIndexCount must: either be zero or equal to the number of
physical devices in the logical device
- * [[VUID-VkBindImageMemoryInfoKHX-pDeviceIndices-01055]]
- All elements of pname:pDeviceIndices must: be valid device indices.
- * [[VUID-VkBindImageMemoryInfoKHX-SFRRectCount-01056]]
- pname:SFRRectCount must: either be zero or equal to the number of
+ * [[VUID-VkBindImageMemoryDeviceGroupInfoKHX-pDeviceIndices-01635]] All elements of pname:pDeviceIndices must: be valid device indices.
+ * [[VUID-VkBindImageMemoryDeviceGroupInfoKHX-SFRRectCount-01636]] pname:SFRRectCount must: either be zero or equal to the number of
physical devices in the logical device squared
- * [[VUID-VkBindImageMemoryInfoKHX-SFRRectCount-01057]]
- If pname:SFRRectCount is not zero, then pname:image must: have been
- created with the ename:VK_IMAGE_CREATE_BIND_SFR_BIT_KHX bit set.
- * [[VUID-VkBindImageMemoryInfoKHX-pSFRRects-01058]]
- All elements of pname:pSFRRects must: be valid rectangles contained
- within the dimensions of the image
- * [[VUID-VkBindImageMemoryInfoKHX-pSFRRects-01059]]
- Elements of pname:pSFRRects that correspond to the same instance of the
- image must: not overlap and their union must: cover the entire image.
- * [[VUID-VkBindImageMemoryInfoKHX-offset-01061]]
- For each element of pname:pSFRRects, pname:offset.x must: be a multiple
- of the sparse image block width
+ * [[VUID-VkBindImageMemoryDeviceGroupInfoKHX-pSFRRects-01637]] Elements of pname:pSFRRects that correspond to the same instance of an
+ image must: not overlap.
+ * [[VUID-VkBindImageMemoryDeviceGroupInfoKHX-offset-01638]] The pname:offset.x member of any element of pname:pSFRRects must: be a
+ multiple of the sparse image block width
(sname:VkSparseImageFormatProperties::pname:imageGranularity.width) of
all non-metadata aspects of the image
- * [[VUID-VkBindImageMemoryInfoKHX-extent-01062]]
- For each element of pname:pSFRRects, pname:extent.width must: either be
- a multiple of the sparse image block width of all non-metadata aspects
- of the image, or else [eq]#(pname:extent.width {plus} pname:offset.x)#
- must: equal the width of the image subresource
- * [[VUID-VkBindImageMemoryInfoKHX-offset-01063]]
- For each element of pname:pSFRRects, pname:offset.y must: be a multiple
- of the sparse image block height
+ * [[VUID-VkBindImageMemoryDeviceGroupInfoKHX-offset-01639]] The pname:offset.y member of any element of pname:pSFRRects must: be a
+ multiple of the sparse image block height
(sname:VkSparseImageFormatProperties::pname:imageGranularity.height) of
all non-metadata aspects of the image
- * [[VUID-VkBindImageMemoryInfoKHX-extent-01064]]
- For each element of pname:pSFRRects, pname:extent.height must: either be
- a multiple of the sparse image block height of all non-metadata aspects
- of the image, or else [eq]#(pname:extent.height {plus} pname:offset.y)#
- must: equal the height of the image subresource
- * [[VUID-VkBindImageMemoryInfoKHX-None-01065]]
- All instances of memory that are bound must: have been allocated
- * [[VUID-VkBindImageMemoryInfoKHX-image-01066]]
- If pname:image was created with a valid swapchain handle in
- slink:VkImageSwapchainCreateInfoKHX::pname:swapchain, then the image
- must: be bound to memory from that swapchain (using
- slink:VkBindImageMemorySwapchainInfoKHX).
+ * [[VUID-VkBindImageMemoryDeviceGroupInfoKHX-extent-01640]] The pname:extent.width member of any element of pname:pSFRRects must:
+ either be a multiple of the sparse image block width of all non-metadata
+ aspects of the image, or else pname:extent.width + pname:offset.x must:
+ equal the width of the image subresource
+ * [[VUID-VkBindImageMemoryDeviceGroupInfoKHX-extent-01641]] The pname:extent.height member of any element of pname:pSFRRects must:
+ either be a multiple of the sparse image block height of all
+ non-metadata aspects of the image, or else pname:extent.height +
+ pname:offset.y must: equal the width of the image subresource
****
-include::../validity/structs/VkBindImageMemoryInfoKHX.txt[]
+include::../validity/structs/VkBindImageMemoryDeviceGroupInfoKHX.txt[]
--
+ifdef::VK_KHR_sampler_ycbcr_conversion[]
+
+[open,refpage='VkBindImagePlaneMemoryInfoKHR',desc='Structure specifying how to bind an image plane to memory',type='structs']
+--
+
+In order to bind _planes_ of a _disjoint image_, include a
+sname:VkBindImagePlaneMemoryInfoKHR structure in the pname:pNext chain of
+slink:VkBindImageMemoryInfoKHR.
+
+The sname:VkBindImagePlaneMemoryInfoKHR structure is defined as:
+
+include::../api/structs/VkBindImagePlaneMemoryInfoKHR.txt[]
+
+ * pname:sType is the type of this structure.
+ * pname:pNext is `NULL` or a pointer to an extension-specific structure.
+ * pname:planeAspect is the aspect of the disjoint image plane to bind.
+
+.Valid Usage
+****
+ * [[VUID-VkBindImagePlaneMemoryInfoKHR-planeAspect-01642]] pname:planeAspect must: be a single valid plane aspect for the image
+ format (that is, pname:planeAspect must: be
+ ename:VK_IMAGE_ASPECT_PLANE_0_BIT_KHR or
+ ename:VK_IMAGE_ASPECT_PLANE_1_BIT_KHR for "`etext:_2PLANE`" formats and
+ pname:planeAspect must: be ename:VK_IMAGE_ASPECT_PLANE_0_BIT_KHR,
+ ename:VK_IMAGE_ASPECT_PLANE_1_BIT_KHR, or
+ ename:VK_IMAGE_ASPECT_PLANE_2_BIT_KHR for "`etext:_3PLANE`" formats)
+ * [[VUID-VkBindImagePlaneMemoryInfoKHR-None-01643]] A single call to flink:vkBindImageMemory2KHR must: bind all or none of
+ the planes of an image (i.e. bindings to all planes of an image must: be
+ made in a single flink:vkBindImageMemory2KHR call), as separate bindings
+****
+
+include::../validity/structs/VkBindImagePlaneMemoryInfoKHR.txt[]
+--
+
+endif::VK_KHR_sampler_ycbcr_conversion[]
+
[open,refpage='VkBindImageMemorySwapchainInfoKHX',desc='Structure specifying swapchain image memory to bind to',type='structs']
--
-If the pname:pNext chain of slink:VkBindImageMemoryInfoKHX includes a
+If the pname:pNext chain of slink:VkBindImageMemoryInfoKHR includes a
sname:VkBindImageMemorySwapchainInfoKHX structure, then that structure
includes a swapchain handle and image index indicating that the image will
be bound to memory from that swapchain.
@@ -2949,23 +3640,19 @@ are used to determine the memory that the image is bound to, instead of
pname:memory and pname:memoryOffset.
Memory can: be bound to a swapchain and use the pname:pDeviceIndices or
-pname:pSFRRects members of slink:VkBindImageMemoryInfoKHX.
+pname:pSFRRects members of slink:VkBindImageMemoryDeviceGroupInfoKHX.
.Valid Usage
****
- * [[VUID-VkBindImageMemorySwapchainInfoKHX-swapchain-01067]]
- At least one of pname:swapchain and
- slink:VkBindImageMemoryInfoKHX::pname:memory must: be
- dlink:VK_NULL_HANDLE
- * [[VUID-VkBindImageMemorySwapchainInfoKHX-imageIndex-01068]]
- pname:imageIndex must: be less than the number of images in
+ * [[VUID-VkBindImageMemorySwapchainInfoKHX-imageIndex-01644]] pname:imageIndex must: be less than the number of images in
pname:swapchain
****
include::../validity/structs/VkBindImageMemorySwapchainInfoKHX.txt[]
--
-endif::VK_KHX_device_group[]
+endif::VK_KHR_device_group[]
+endif::VK_KHR_bind_memory2[]
[[resources-bufferimagegranularity,Buffer-Image Granularity]]
@@ -3217,6 +3904,46 @@ If two aliases are both host-accessible, then they interpret the contents of
the memory in consistent ways, and data written to one alias can: be read by
the other alias.
+ifdef::VK_KHR_bind_memory2[]
+[[resources-memory-aliasing-consistency]]
+If two aliases are both images that were created with identical creation
+parameters, both were created with the ename:VK_IMAGE_CREATE_ALIAS_BIT_KHR
+flag set, and both are bound identically to memory
+ifdef::VK_KHX_device_group[]
+except for slink:VkBindImageMemoryDeviceGroupInfoKHX::pname:pDeviceIndices
+and slink:VkBindImageMemoryDeviceGroupInfoKHX::pname:pSFRRects,
+endif::VK_KHX_device_group[]
+then they interpret the contents of the memory in consistent ways, and data
+written to one alias can: be read by the other alias.
+
+ifdef::VK_KHR_sampler_ycbcr_conversion[]
+[[resources-memory-aliasing-consistency-planes]]
+Additionally, if an invididual plane of a multi-planar image and a
+single-plane image alias the same memory, then they also interpret the
+contents of the memory in consistent ways under the same conditions, but
+with the following modifications:
+
+ * Both must: have been created with the
+ ename:VK_IMAGE_CREATE_DISJOINT_BIT_KHR flag.
+ * The single-plane image must: have an elink:VkFormat that is
+ <<features-formats-compatible-planes,equivalent>> to that of the
+ multi-planar image's individual plane.
+ * The single-plane image and the individual plane of the multi-planar
+ image must: be bound identically to memory
+ifdef::VK_KHX_device_group[]
+ except for
+ slink:VkBindImageMemoryDeviceGroupInfoKHX::pname:pDeviceIndices and
+ slink:VkBindImageMemoryDeviceGroupInfoKHX::pname:pSFRRects.
+endif::VK_KHX_device_group[]
+ * The pname:width and pname:height of the single-plane image are derived
+ from the multi-planar image's dimensions in the manner listed for
+ <<features-formats-compatible-planes,plane compatibility>> for the
+ aliased plane.
+ * All other creation parameters must: be identical
+
+endif::VK_KHR_sampler_ycbcr_conversion[]
+endif::VK_KHR_bind_memory2[]
+
ifdef::VK_KHR_external_memory[]
Aliases created by binding the same memory to resources in multiple Vulkan
instances or external APIs using external memory handle export and import
diff --git a/doc/specs/vulkan/chapters/samplers.txt b/doc/specs/vulkan/chapters/samplers.txt
index 29ae255..2688604 100644
--- a/doc/specs/vulkan/chapters/samplers.txt
+++ b/doc/specs/vulkan/chapters/samplers.txt
@@ -100,6 +100,9 @@ include::../api/structs/VkSamplerCreateInfo.txt[]
ename:VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER.
** pname:anisotropyEnable must: be ename:VK_FALSE.
** pname:compareEnable must: be ename:VK_FALSE.
+ifdef::VK_KHR_sampler_ycbcr_conversion[]
+ ** The sampler must: not enable sampler Y'C~B~C~R~ conversion.
+endif::VK_KHR_sampler_ycbcr_conversion[]
* When pname:unnormalizedCoordinates is ename:VK_TRUE, images the sampler
is used with in the shader have the following requirements:
** The pname:viewType must: be either ename:VK_IMAGE_VIEW_TYPE_1D or
@@ -164,6 +167,13 @@ pname:maxSamplerAllocationCount limit.
If pname:anisotropyEnable is ename:VK_TRUE, pname:maxAnisotropy must: be
between `1.0` and
sname:VkPhysicalDeviceLimits::pname:maxSamplerAnisotropy, inclusive
+ifdef::VK_KHR_sampler_ycbcr_conversion[]
+ * [[VUID-VkSamplerCreateInfo-minFilter-01645]] If <<samplers-YCbCr-conversion,sampler Y'C~B~C~R~ conversion>> is
+ enabled and
+ ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHR
+ is not set for the format, pname:minFilter and pname:magFilter must: be
+ equal to the sampler Y'C~B~C~R~ conversion's pname:chromaFilter
+endif::VK_KHR_sampler_ycbcr_conversion[]
* [[VUID-VkSamplerCreateInfo-unnormalizedCoordinates-01072]]
If pname:unnormalizedCoordinates is ename:VK_TRUE, pname:minFilter and
pname:magFilter must: be equal
@@ -188,6 +198,18 @@ pname:maxSamplerAllocationCount limit.
If any of pname:addressModeU, pname:addressModeV or pname:addressModeW
are ename:VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER, pname:borderColor
must: be a valid elink:VkBorderColor value
+ifdef::VK_KHR_sampler_ycbcr_conversion[]
+ * [[VUID-VkSamplerCreateInfo-addressModeU-01646]] If <<samplers-YCbCr-conversion,sampler Y'C~B~C~R~ conversion>> is
+ enabled, pname:addressModeU, pname:addressModeV, and pname:addressModeW
+ must: be ename:VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE,
+ pname:anisotropyEnable must: be ename:VK_FALSE, and
+ pname:unnormalizedCoordinates must: be ename:VK_FALSE
+ifdef::VK_EXT_sampler_filter_minmax[]
+ * [[VUID-VkSamplerCreateInfo-None-01647]] The sampler reduction mode must: be set to
+ ename:VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT if
+ <<samplers-YCbCr-conversion,sampler Y'C~B~C~R~ conversion>> is enabled
+endif::VK_EXT_sampler_filter_minmax[]
+endif::VK_KHR_sampler_ycbcr_conversion[]
* [[VUID-VkSamplerCreateInfo-addressModeU-01079]]
If the +VK_KHR_sampler_mirror_clamp_to_edge+ extension is not enabled,
pname:addressModeU, pname:addressModeV and pname:addressModeW must: not
@@ -374,3 +396,295 @@ include::../api/protos/vkDestroySampler.txt[]
include::../validity/protos/vkDestroySampler.txt[]
--
+
+
+ifdef::VK_KHR_sampler_ycbcr_conversion[]
+
+[[samplers-YCbCr-conversion]]
+== Sampler Y'C~B~C~R~ conversion
+
+[open,refpage='VkSamplerYcbcrConversionInfoKHR',desc='Structure specifying Y\'CbCr conversion to a sampler or image view',type='structs']
+--
+
+To create a sampler with Y'C~B~C~R~ conversion enabled, add a
+slink:VkSamplerYcbcrConversionInfoKHR to the pname:pNext chain of the
+slink:VkSamplerCreateInfo structure.
+To create a sampler Y'C~B~C~R~ conversion, the
+<<features-features-sampler-YCbCr-conversion,pname:samplerYcbcrConversion
+feature>> must: be enabled.
+Conversion must: be fixed at pipeline creation time, through use of a
+combined image sampler with an immutable sampler in
+sname:VkDescriptorSetLayoutBinding.
+
+A slink:VkSamplerYcbcrConversionInfoKHR must: be provided for samplers to be
+used with image views that access ename:VK_IMAGE_ASPECT_COLOR_BIT if the
+format appears in <<features-formats-requiring-sampler-ycbcr-conversion>>.
+
+The sname:VkSamplerYcbcrConversionInfoKHR structure is defined as:
+
+include::../api/structs/VkSamplerYcbcrConversionInfoKHR.txt[]
+
+ * pname:sType is the type of this structure.
+ * pname:pNext is 'NULL' or a pointer to an extension-specific structure.
+ * pname:conversion is a slink:VkSamplerYcbcrConversionKHR handle created
+ with flink:vkCreateSamplerYcbcrConversionKHR.
+
+include::../validity/structs/VkSamplerYcbcrConversionInfoKHR.txt[]
+
+--
+
+[open,refpage='VkSamplerYcbcrConversionKHR',desc='',type='handles']
+--
+
+A sampler Y'C~B~C~R~ conversion is an opaque representation of a
+device-specific sampler Y'C~B~C~R~ conversion description, represented as a
+sname:VkSamplerYcbcrConversionKHR handle:
+
+include::../api/handles/VkSamplerYcbcrConversionKHR.txt[]
+
+--
+
+[open,refpage='vkCreateSamplerYcbcrConversionKHR',desc='Create a new Ycbcr conversion',type='protos']
+--
+
+To create a slink:VkSamplerYcbcrConversionKHR, call:
+
+include::../api/protos/vkCreateSamplerYcbcrConversionKHR.txt[]
+
+ * pname:device is the logical device that creates the sampler Y'C~B~C~R~
+ conversion.
+ * pname:pCreateInfo is a pointer to an instance of the
+ slink:VkSamplerYcbcrConversionCreateInfoKHR specifying the requested
+ sampler Y'C~B~C~R~ conversion.
+ * pname:pAllocator controls host memory allocation as described in the
+ <<memory-allocation, Memory Allocation>> chapter.
+ * pname:pYcbcrConversion points to a slink:VkSamplerYcbcrConversionKHR
+ handle in which the resulting sampler Y'C~B~C~R~ conversion is returned.
+
+The interpretation of the configured sampler Y'C~B~C~R~ conversion is
+described in more detail in <<textures-sampler-YCbCr-conversion,the
+description of sampler Y'C~B~C~R~ conversion>> in the <<textures,Image
+Operations>> chapter.
+
+.Valid Usage
+****
+ * [[VUID-vkCreateSamplerYcbcrConversionKHR-None-01648]] The <<features-features-sampler-YCbCr-conversion, sampler Y'C~B~C~R~
+ conversion feature>> must: be enabled
+****
+
+include::../validity/protos/vkCreateSamplerYcbcrConversionKHR.txt[]
+
+--
+
+[open,refpage='VkSamplerYcbcrConversionCreateInfoKHR',desc='Structure specifying the parameters of the newly created conversion',type='structs']
+--
+
+The sname:VkSamplerYcbcrConversionCreateInfoKHR structure is defined as:
+
+include::../api/structs/VkSamplerYcbcrConversionCreateInfoKHR.txt[]
+
+ * pname:sType is the type of this structure.
+ * pname:pNext is `NULL` or a pointer to an extension-specific structure.
+ * pname:format is the format of the image from which color information
+ will be retrieved.
+ * pname:ycbcrModel describes the color matrix for conversion between color
+ models.
+ * pname:ycbcrRange describes whether the encoded values have headroom and
+ foot room, or whether the encoding uses the full numerical range.
+ * pname:components applies a _swizzle_ based on elink:VkComponentSwizzle
+ enums prior to range expansion and color model conversion.
+ * pname:xChromaOffset describes the
+ <<textures-chroma-reconstruction,sample location>> associated with
+ downsampled chroma channels in the x dimension.
+ pname:xChromaOffset has no effect for formats in which chroma channels
+ are the same resolution as the luma channel.
+ * pname:yChromaOffset describes the
+ <<textures-chroma-reconstruction,sample location>> associated with
+ downsampled chroma channels in the y dimension.
+ pname:yChromaOffset has no effect for formats in which the chroma
+ channels are not downsampled vertically.
+ * pname:chromaFilter is the filter for chroma reconstruction.
+ * pname:forceExplicitReconstruction can: be used to ensure that
+ reconstruction is done explicitly, if supported.
+
+.Note
+[NOTE]
+====
+Setting pname:forceExplicitReconstruction to ename:VK_TRUE may: have a
+performance penalty on implementations where explicit reconstruction is not
+the default mode of operation.
+====
+
+.Valid Usage
+****
+ * [[VUID-VkSamplerYcbcrConversionCreateInfoKHR-format-01649]] pname:format must: not be ename:VK_FORMAT_UNDEFINED
+ * [[VUID-VkSamplerYcbcrConversionCreateInfoKHR-format-01650]] pname:format must: support
+ ename:VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT_KHR or
+ ename:VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT_KHR
+ * [[VUID-VkSamplerYcbcrConversionCreateInfoKHR-xChromaOffset-01651]] If the format does not support
+ ename:VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT_KHR,
+ pname:xChromaOffset and pname:yChromaOffset must: not be
+ ename:VK_CHROMA_LOCATION_COSITED_EVEN_KHR
+ * [[VUID-VkSamplerYcbcrConversionCreateInfoKHR-xChromaOffset-01652]] If the format does not support
+ ename:VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT_KHR,
+ pname:xChromaOffset and pname:yChromaOffset must: not be
+ ename:VK_CHROMA_LOCATION_MIDPOINT_KHR
+ * [[VUID-VkSamplerYcbcrConversionCreateInfoKHR-format-01653]] pname:format must: represent unsigned normalized values (i.e. the format
+ must be a etext:UNORM format)
+ * [[VUID-VkSamplerYcbcrConversionCreateInfoKHR-None-01654]] If the format has a _422 or _420 suffix:
+ ** pname:components.g must: be ename:VK_COMPONENT_SWIZZLE_IDENTITY
+ ** pname:components.a must: be ename:VK_COMPONENT_SWIZZLE_IDENTITY,
+ ename:VK_COMPONENT_SWIZZLE_ONE, or ename:VK_COMPONENT_SWIZZLE_ZERO
+ ** pname:components.r must: be ename:VK_COMPONENT_SWIZZLE_IDENTITY or
+ ename:VK_COMPONENT_SWIZZLE_B
+ ** pname:components.b must: be ename:VK_COMPONENT_SWIZZLE_IDENTITY or
+ ename:VK_COMPONENT_SWIZZLE_R
+ ** If either pname:components.r or pname:components.b is
+ ename:VK_COMPONENT_SWIZZLE_IDENTITY, both values must: be
+ ename:VK_COMPONENT_SWIZZLE_IDENTITY
+ * [[VUID-VkSamplerYcbcrConversionCreateInfoKHR-ycbcrModel-01655]] If pname:ycbcrModel is not
+ ename:VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY_KHR, then
+ pname:components.r, pname:components.g, and pname:components.b must:
+ correspond to channels of the pname:format; that is, pname:components.r,
+ pname:components.g, and pname:components.b must: not be
+ ename:VK_COMPONENT_SWIZZLE_ZERO or ename:VK_COMPONENT_SWIZZLE_ONE, and
+ must: not correspond to a channel which contains zero or one as a
+ consequence of <<textures-conversion-to-rgba,conversion to RGBA>>
+ * [[VUID-VkSamplerYcbcrConversionCreateInfoKHR-forceExplicitReconstruction-01656]] If the format does not support
+ ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT_KHR,
+ pname:forceExplicitReconstruction must: be FALSE
+ * [[VUID-VkSamplerYcbcrConversionCreateInfoKHR-chromaFilter-01657]] If the format does not support
+ ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHR,
+ pname:chromaFilter must: be ename:VK_FILTER_NEAREST
+****
+
+include::../validity/structs/VkSamplerYcbcrConversionCreateInfoKHR.txt[]
+
+If pname:chromaFilter is ename:VK_FILTER_NEAREST, chroma samples are
+reconstructed to luma channel resolution using nearest-neighbour sampling.
+Otherwise, chroma samples are reconstructed using interpolation.
+More details can be found in <<textures-sampler-YCbCr-conversion,the
+description of sampler Y'C~B~C~R~ conversion>> in the <<textures,Image
+Operations>> chapter.
+
+--
+
+[open,refpage='VkSamplerYcbcrModelConversionKHR',desc='Color model component of a color space',type='enums']
+--
+
+elink:VkSamplerYcbcrModelConversionKHR defines the conversion from the
+source color model to the shader color model.
+Possible values are:
+
+include::../api/enums/VkSamplerYcbcrModelConversionKHR.txt[]
+
+ * ename:VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY_KHR specifies that
+ the input values to the conversion are unmodified.
+ * ename:VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY_KHR specifies no
+ model conversion but the inputs are range expanded as for Y'C~B~C~R~.
+ * ename:VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709_KHR specifies the
+ color model conversion from Y'C~B~C~R~ to R'G'B' defined in BT.709 and
+ described in the "`BT.709 Y’C~B~C~R~ conversion`" section of the
+ <<data-format,Khronos Data Format Specification>>.
+ * ename:VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601_KHR specifies the
+ color model conversion from Y'C~B~C~R~ to R'G'B' defined in BT.601 and
+ described in the "`BT.601 Y’C~B~C~R~ conversion`" section of the
+ <<data-format,Khronos Data Format Specification>>.
+ * ename:VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020_KHR specifies the
+ color model conversion from Y'C~B~C~R~ to R'G'B' defined in BT.2020 and
+ described in the "`BT.2020 Y’C~B~C~R~ conversion`" section of the
+ <<data-format,Khronos Data Format Specification>>.
+
+In the etext:VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_*_KHR color models, for
+the input to the sampler Y'C~B~C~R~ range expansion and model conversion:
+
+ * the Y (Y' luma) channel corresponds to the G channel of an RGB image.
+ * the CB (C~B~ or "`U`" blue color difference) channel corresponds to the
+ B channel of an RGB image.
+ * the CR (C~R~ or "`V`" red color difference) channel corresponds to the R
+ channel of an RGB image.
+ * the alpha channel, if present, is not modified by color model
+ conversion.
+
+These rules reflect the mapping of channels after the channel swizzle
+operation (controlled by
+slink:VkSamplerYcbcrConversionCreateInfoKHR::pname:components).
+
+[NOTE]
+.Note
+====
+For example, an "YUVA" 32-bit format comprising four 8-bit channels can be
+implemented as ename:VK_FORMAT_R8G8B8A8_UNORM with a component mapping:
+
+ * pname:components.a = ename:VK_COMPONENT_SWIZZLE_IDENTITY
+ * pname:components.r = ename:VK_COMPONENT_SWIZZLE_B
+ * pname:components.g = ename:VK_COMPONENT_SWIZZLE_R
+ * pname:components.b = ename:VK_COMPONENT_SWIZZLE_G
+====
+
+--
+
+[open,refpage='VkSamplerYcbcrRangeKHR',desc='Range of encoded values in a color space',type='enums']
+--
+
+The elink:VkSamplerYcbcrRangeKHR enum describes whether color channels are
+encoded using the full range of numerical values or whether values are
+reserved for headroom and foot room.
+elink:VkSamplerYcbcrRangeKHR is defined as:
+
+include::../api/enums/VkSamplerYcbcrRangeKHR.txt[]
+
+ * ename:VK_SAMPLER_YCBCR_RANGE_ITU_FULL_KHR indicates that the full range
+ of the encoded values are valid and interpreted according to the ITU
+ "`full range`" quantization rules.
+ * ename:VK_SAMPLER_YCBCR_RANGE_ITU_NARROW_KHR indicates that headroom and
+ foot room are reserved in the numerical range of encoded values, and the
+ remaining values are expanded according to the ITU "`narrow range`"
+ quantization rules.
+
+The formulae for these conversions is described in the
+<<textures-sampler-YCbCr-conversion-rangeexpand,Sampler Y'C~B~C~R~ Range
+Expansion>> section of the <<textures,Image Operations>> chapter.
+
+No range modification takes place if pname:ycbcrModel is
+ename:VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY_KHR; the
+pname:ycbcrRange field of sname:VkSamplerYcbcrConversionCreateInfoKHR is
+ignored in this case.
+
+--
+
+[open,refpage='VkChromaLocationKHR',desc='Position of downsampled chroma samples',type='enums']
+--
+
+The elink:VkChromaLocationKHR enum, which defines the location of
+downsampled chroma channel samples relative to the luma samples, is defined
+as:
+
+include::../api/enums/VkChromaLocationKHR.txt[]
+
+ * ename:VK_CHROMA_LOCATION_COSITED_EVEN_KHR indicates that downsampled
+ chroma samples are aligned with luma samples with even coordinates.
+ * ename:VK_CHROMA_LOCATION_MIDPOINT_KHR indicates that downsampled chroma
+ samples are located half way between each even luma sample and the
+ nearest higher odd luma sample.
+
+--
+
+[open,refpage='vkDestroySamplerYcbcrConversionKHR',desc='Destroy a created Y\'CbCr conversion',type='protos']
+--
+
+To destroy a sampler Y'C~B~C~R~ conversion, call:
+
+include::../api/protos/vkDestroySamplerYcbcrConversionKHR.txt[]
+
+ * pname:device is the logical device that destroys the Y'C~B~C~R~
+ conversion.
+ * pname:ycbcrConversion is the conversion to destroy.
+ * pname:pAllocator controls host memory allocation as described in the
+ <<memory-allocation, Memory Allocation>> chapter.
+
+include::../validity/protos/vkDestroySamplerYcbcrConversionKHR.txt[]
+
+--
+
+endif::VK_KHR_sampler_ycbcr_conversion[]
diff --git a/doc/specs/vulkan/chapters/synchronization.txt b/doc/specs/vulkan/chapters/synchronization.txt
index c5ee068..df99307 100644
--- a/doc/specs/vulkan/chapters/synchronization.txt
+++ b/doc/specs/vulkan/chapters/synchronization.txt
@@ -3709,6 +3709,16 @@ endif::VK_KHR_external_memory[]
ename:VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL then pname:image
must: have been created with
ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT set
+ifdef::VK_KHR_maintenance2[]
+ * [[VUID-VkImageMemoryBarrier-oldLayout-01658]] If either pname:oldLayout or pname:newLayout is
+ ename:VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL_KHR
+ then pname:image must: have been created with
+ ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT set
+ * [[VUID-VkImageMemoryBarrier-oldLayout-01659]] If either pname:oldLayout or pname:newLayout is
+ ename:VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL_KHR
+ then pname:image must: have been created with
+ ename:VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT set
+endif::VK_KHR_maintenance2[]
* [[VUID-VkImageMemoryBarrier-oldLayout-01211]]
If either pname:oldLayout or pname:newLayout is
ename:VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL then pname:image must:
diff --git a/doc/specs/vulkan/chapters/tessellation.txt b/doc/specs/vulkan/chapters/tessellation.txt
index 3311821..0772093 100644
--- a/doc/specs/vulkan/chapters/tessellation.txt
+++ b/doc/specs/vulkan/chapters/tessellation.txt
@@ -75,17 +75,31 @@ invocations that share a line).
Each vertex produced by the tessellator has an associated (u,v,w) or (u,v)
position in a normalized parameter space, with parameter values in the range
-[eq]#[0,1]#, as illustrated in figure <<img-tessellation-topology-ul>>.
+[eq]#[0,1]#, as illustrated
+ifdef::VK_KHR_maintenance2[]
+in figures <<img-tessellation-topology-ul>> and
+<<img-tessellation-topology-ll>>.
+The domain space can: have either an upper-left or lower-left origin,
+selected by the pname:domainOrigin member of
+slink:VkPipelineTessellationDomainOriginStateCreateInfoKHR.
+endif::VK_KHR_maintenance2[]
+ifndef::VK_KHR_maintenance2[]
+in figure <<img-tessellation-topology-ul>>.
The domain space has an upper-left origin.
+endif::VK_KHR_maintenance2[]
[[img-tessellation-topology-ul]]
image::images/tessparamUL.svg[align="center",title="Domain parameterization for tessellation primitive modes (upper-left origin)",{fullimagewidth}]
+ifdef::VK_KHR_maintenance2[]
+[[img-tessellation-topology-ll]]
+image::images/tessparam.svg[align="center",title="Domain parameterization for tessellation primitive modes (lower-left origin)",{fullimagewidth}]
+endif::VK_KHR_maintenance2[]
+
.Caption
****
-In the <<img-tessellation-topology-ul,Domain parameterization>> diagram, the
-coordinates illustrate the value of code:TessCoord at the corners of the
-domain.
+In the domain parameterization diagrams, the coordinates illustrate the
+value of code:TessCoord at the corners of the domain.
The labels on the edges indicate the inner (IL0 and IL1) and outer (OL0
through OL3) tessellation level values used to control the number of
subdivisions along each edge of the domain.
@@ -169,7 +183,8 @@ will have clockwise ordering in (u,v) or (u,v,w) space.
If the order is code:VertexOrderCcw, the vertices will have
counter-clockwise ordering.
-The vertices of a triangle have counter-clockwise ordering if
+If the tessellation domain has an upper-left origin, the vertices of a
+triangle have counter-clockwise ordering if
:: [eq]#a = u~0~ v~1~ - u~1~ v~0~ {plus} u~1~ v~2~ - u~2~ v~1~ {plus} u~2~
v~0~ - u~0~ v~2~#
@@ -177,6 +192,11 @@ The vertices of a triangle have counter-clockwise ordering if
is negative, and clockwise ordering if [eq]#a# is positive.
[eq]#u~i~# and [eq]#v~i~# are the [eq]#u# and [eq]#v# coordinates in
normalized parameter space of the [eq]##i##th vertex of the triangle.
+ifdef::VK_KHR_maintenance2[]
+If the tessellation domain has a lower-left origin, the vertices of a
+triangle have counter-clockwise ordering if [eq]#a# is positive, and
+clockwise ordering if [eq]#a# is negative.
+endif::VK_KHR_maintenance2[]
[NOTE]
.Note
@@ -494,3 +514,51 @@ include::../api/structs/VkPipelineTessellationStateCreateInfo.txt[]
include::../validity/structs/VkPipelineTessellationStateCreateInfo.txt[]
--
+
+ifdef::VK_KHR_maintenance2[]
+
+[open,refpage='VkPipelineTessellationDomainOriginStateCreateInfoKHR',desc='Structure specifying the orientation of the tessellation domain',type='structs']
+--
+
+The sname:VkPipelineTessellationDomainOriginStateCreateInfoKHR structure is
+defined as:
+
+include::../api/structs/VkPipelineTessellationDomainOriginStateCreateInfoKHR.txt[]
+
+ * pname:sType is the type of this structure.
+ * pname:pNext is `NULL` or a pointer to an extension-specific structure.
+ * pname:domainOrigin controls the origin of the tessellation domain space,
+ and is of type elink:VkTessellationDomainOriginKHR.
+
+If the sname:VkPipelineTessellationDomainOriginStateCreateInfoKHR structure
+is included in the pname:pNext chain of
+slink:VkPipelineTessellationStateCreateInfo, it controls the origin of the
+tessellation domain.
+If this structure is not present, it is as if pname:domainOrigin were
+ename:VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT_KHR.
+
+include::../validity/structs/VkPipelineTessellationDomainOriginStateCreateInfoKHR.txt[]
+--
+
+[open,refpage='VkTessellationDomainOriginKHR',desc='Enum describing tessellation domain origin',type='enums']
+--
+
+The possible tessellation domain origins are specified by the
+elink:VkTessellationDomainOriginKHR enumeration:
+
+include::../api/enums/VkTessellationDomainOriginKHR.txt[]
+
+ * ename:VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT_KHR indicates that the
+ origin of the domain space is in the upper left corner, flipped
+ vertically from what is shown in figure <<img-tessellation-topology>>.
+ * ename:VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT_KHR indicates that the
+ origin of the domain space is in the lower left corner, as shown in
+ figure <<img-tessellation-topology>>.
+
+This enum affects how the code:VertexOrderCw and code:VertexOrderCcw
+tessellation execution modes are interpreted, since the winding is defined
+relative to the orientation of the domain.
+
+--
+
+endif::VK_KHR_maintenance2[]
diff --git a/doc/specs/vulkan/chapters/textures.txt b/doc/specs/vulkan/chapters/textures.txt
index 935b7f8..1678bce 100644
--- a/doc/specs/vulkan/chapters/textures.txt
+++ b/doc/specs/vulkan/chapters/textures.txt
@@ -155,6 +155,17 @@ two dimensional image.
four texels selected by the offset are [eq]#i~0~j'~0~#,
[eq]#i~1~j'~0~#, [eq]#i~0~j'~1~#, and [eq]#i~1~j'~1~#.
+ifdef::VK_KHR_sampler_ycbcr_conversion[]
+[NOTE]
+.Note
+====
+For formats with reduced-resolution channels, [eq]#{DeltaUpper}~i~# and
+[eq]#{DeltaUpper}~j~# are relative to the resolution of the
+highest-resolution channel, and therefore may be divided by two relative to
+the unnormalized coordinate space of the lower-resolution channels.
+====
+endif::VK_KHR_sampler_ycbcr_conversion[]
+
image::images/vulkantexture1.png[align="center",title="Texel Coordinate Systems",{fullimagewidth}]
The Texel Coordinate Systems - For the example shown of an 8{times}4 texel
@@ -314,6 +325,10 @@ They include the following steps, which are performed in the listed order:
* <<textures-depth-compare-operation,Depth comparison>>
* <<textures-conversion-to-rgba,Conversion to RGBA>>
* <<textures-component-swizzle,Component swizzle>>
+ifdef::VK_KHR_sampler_ycbcr_conversion[]
+ * <<textures-chroma-reconstruction,Chroma reconstruction>>
+ * <<textures-sampler-YCbCr-conversion,Y'C~B~C~R~ conversion>>
+endif::VK_KHR_sampler_ycbcr_conversion[]
For texel input instructions involving multiple texels (for sampling or
gathering), these steps are applied for each texel that is used in the
@@ -322,6 +337,13 @@ Depending on the type of image instruction, other steps are conditionally
performed between these steps or involving multiple coordinate or texel
values.
+ifdef::VK_KHR_sampler_ycbcr_conversion[]
+If <<textures-chroma-reconstruction,Chroma Reconstruction>> is implicit,
+<<textures-filtering, Texel Filtering>> instead takes place during chroma
+reconstruction, before <<textures-sampler-YCbCr-conversion,sampler
+Y'C~B~C~R~ conversion>> occurs.
+endif::VK_KHR_sampler_ycbcr_conversion[]
+
[[textures-input-validation]]
=== Texel Input Validation Operations
@@ -394,6 +416,20 @@ These cases include:
not equal to ename:VK_SAMPLE_COUNT_1_BIT, the instruction must: have
code:MS = 1.
+ifdef::VK_KHR_sampler_ycbcr_conversion[]
+Only code:OpImageSample* and code:OpImageSparseSample* can: be used with a
+sampler that enables <<samplers-YCbCr-conversion,sampler Y'C~B~C~R~
+conversion>>.
+
+code:OpImageFetch, code:OpImageSparseFetch, code:OpImage*code:Gather, and
+code:OpImageSparse*code:Gather must: not be used with a sampler that enables
+<<samplers-YCbCr-conversion,sampler Y'C~B~C~R~ conversion>>.
+
+The code:ConstOffset and code:Offset operands must: not be used with a
+sampler that enables <<samplers-YCbCr-conversion,sampler Y'C~B~C~R~
+conversion>>.
+endif::VK_KHR_sampler_ycbcr_conversion[]
+
[[textures-integer-coordinate-validation]]
==== Integer Texel Coordinate Validation
@@ -525,8 +561,8 @@ Signed integer components smaller than 32 bits are sign-extended.
If the image format is sRGB, the color components are first converted as if
they are UNORM, and then sRGB to linear conversion is applied to the R, G,
-and B components as described in the "`KHR_DF_TRANSFER_SRGB`" section of the
-<<data-format,Khronos Data Format Specification>>.
+and B components as described in the "`sRGB EOTF`" section of
+the <<data-format,Khronos Data Format Specification>>.
The A component, if present, is unchanged.
If the image view format is block-compressed, then the texel value is first
@@ -676,9 +712,25 @@ where [eq]#one = 1.0f# for floating-point formats and depth aspects, and
[[textures-component-swizzle]]
=== Component Swizzle
+ifndef::VK_KHR_sampler_ycbcr_conversion[]
All texel input instructions apply a _swizzle_ based on the
elink:VkComponentSwizzle enums in the pname:components member of the
slink:VkImageViewCreateInfo structure for the image being read.
+endif::VK_KHR_sampler_ycbcr_conversion[]
+ifdef::VK_KHR_sampler_ycbcr_conversion[]
+All texel input instructions apply a _swizzle_ based on:
+
+ * the elink:VkComponentSwizzle enums in the pname:components member of the
+ slink:VkImageViewCreateInfo structure for the image being read if
+ <<samplers-YCbCr-conversion,sampler Y'C~B~C~R~ conversion>> is not
+ enabled, and
+ * the elink:VkComponentSwizzle enums in the pname:components member of the
+ slink:VkSamplerYcbcrConversionCreateInfoKHR structure for the
+ <<samplers-YCbCr-conversion,sampler Y'C~B~C~R~ conversion>> if sampler
+ Y'C~B~C~R~ conversion is enabled.
+
+endif::VK_KHR_sampler_ycbcr_conversion[]
+
The swizzle can: rearrange the components of the texel, or substitute zero
and one for any components.
It is defined as follows for the R component, and operates similarly for the
@@ -736,6 +788,406 @@ This code can: be interpreted by the code:OpImageSparseTexelsResident
instruction which converts the residency code to a boolean value.
+ifdef::VK_KHR_sampler_ycbcr_conversion[]
+[[textures-chroma-reconstruction]]
+=== Chroma Reconstruction
+
+In some color models, the color representation is defined in terms of
+monochromatic light intensity (often called "`luma`") and color differences
+relative to this intensity, often called "`chroma`".
+It is common for color models other than RGB to represent the chroma
+channels at lower spatial resolution than the luma channel.
+This approach is used to take advantage of the eye's lower spatial
+sensitivity to color compared with its sensitivity to brightness.
+Less commonly, the same approach is used with additive color, since the
+green channel dominates the eye's sensitivity to light intensity and the
+spatial sensitivity to color introduced by red and blue is lower.
+
+Lower-resolution channels are "`downsampled`" by resizing them to a lower
+spatial resolution than the channel representing luminance.
+The process of reconstructing a full color value for texture access involves
+accessing both chroma and luma values at the same location.
+To generate the color accurately, the values of the lower-resolution
+channels at the location of the luma samples must be reconstructed from the
+lower-resolution sample locations, an operation known here as "`chroma
+reconstruction`" irrespective of the actual color model.
+
+The location of the chroma samples relative to the luma coordinates is
+determined by the pname:xChromaOffset and pname:yChromaOffset members of the
+slink:VkSamplerYcbcrConversionCreateInfoKHR structure used to create the
+sampler Y'C~B~C~R~ conversion.
+
+The following diagrams show the relationship between unnormalized (_u_,_v_)
+coordinates and (_i_,_j_) integer texel positions in the luma channel (shown
+in black, with circles showing integer sample positions) and the texel
+coordinates of reduced-resolution chroma channels, shown as crosses in red.
+
+[NOTE]
+.Note
+====
+If the chroma values are reconstructed at the locations of the luma samples
+by means of interpolation, chroma samples from outside the image bounds are
+needed; these are determined according to <<textures-wrapping-operation>>.
+These diagrams represent this by showing the bounds of the "`chroma texel`"
+extending beyond the image bounds, and including additional chroma sample
+positions where required for interpolation.
+The limits of a sample for etext:NEAREST sampling is shown as a grid.
+====
+
+image::images/chromasamples_422_cosited.svg[align="center",title="422 downsampling, xChromaOffset=COSITED_EVEN",width="400"]
+
+image::images/chromasamples_422_midpoint.svg[align="center",title="422 downsampling, xChromaOffset=MIDPOINT",width="400"]
+
+image::images/chromasamples_420_xcosited_ycosited.svg[align="center",title="420 downsampling, xChromaOffset=COSITED_EVEN, yChromaOffset=COSITED_EVEN",width="400"]
+
+image::images/chromasamples_420_xmidpoint_ycosited.svg[align="center",title="420 downsampling, xChromaOffset=MIDPOINT, yChromaOffset=COSITED_EVEN",width="400"]
+
+image::images/chromasamples_420_xcosited_ymidpoint.svg[align="center",title="420 downsampling, xChromaOffset=COSITED_EVEN, yChromaOffset=MIDPOINT",width="400"]
+
+image::images/chromasamples_420_xmidpoint_ymidpoint.svg[align="center",title="420 downsampling, xChromaOffset=MIDPOINT, yChromaOffset=MIDPOINT",width="400"]
+
+Reconstruction is implemented in one of two ways:
+
+If the format of the image that is to be sampled sets
+ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT_KHR,
+or the sname:VkSamplerYcbcrConversionCreateInfoKHR's
+pname:forceExplicitReconstruction is set to ename:VK_TRUE, reconstruction is
+performed as an explicit step independent of filtering, described in the
+<<textures-explict-reconstruction,Explicit Reconstruction>> section.
+
+If the format of the image that is to be sampled does not set
+ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT_KHR
+and if the sname:VkSamplerYcbcrConversionCreateInfoKHR's
+pname:forceExplicitReconstruction is set to ename:VK_FALSE, reconstruction
+is performed as an implicit part of filtering prior to color model
+conversion, with no separate post-conversion texel filtering step, as
+described in the <<textures-implict-reconstruction,Implicit Reconstruction>>
+section.
+
+[[textures-explicit-reconstruction]]
+==== Explicit Reconstruction
+
+ * If the pname:chromaFilter member of the
+ slink:VkSamplerYcbcrConversionCreateInfoKHR structure is
+ ename:VK_FILTER_NEAREST:
+ ** If the format's R and B channels are reduced in resolution in just
+ width by a factor of two relative to the G channel (i.e. this is a
+ "`etext:_422`" format), the latexmath:[\tau_{ijk}[level\]] values
+ accessed by <<textures-texel-filtering,texel filtering>> are
+ reconstructed as follows:
++
+[latexmath]
+++++++++++++++
+\begin{aligned}
+\tau_R'(i, j) & = \tau_R(\lfloor{i\times 0.5}\rfloor, j)[level] \\
+\tau_B'(i, j) & = \tau_B(\lfloor{i\times 0.5}\rfloor, j)[level]
+\end{aligned}
+++++++++++++++
+
+ ** If the format's R and B channels are reduced in resolution in width
+ and height by a factor of two relative to the G channel (i.e. this is
+ a "`etext:_420`" format), the latexmath:[\tau_{ijk}[level\]] values
+ accessed by <<textures-texel-filtering,texel filtering>> are
+ reconstructed as follows:
++
+[latexmath]
+++++++++++++++
+\begin{aligned}
+\tau_R'(i, j) & = \tau_R(\lfloor{i\times 0.5}\rfloor, \lfloor{j\times 0.5}\rfloor)[level] \\
+\tau_B'(i, j) & = \tau_B(\lfloor{i\times 0.5}\rfloor, \lfloor{j\times 0.5}\rfloor)[level]
+\end{aligned}
+++++++++++++++
++
+[NOTE]
+.Note
+====
+pname:xChromaOffset and pname:yChromaOffset have no effect if
+pname:chromaFilter is ename:VK_FILTER_NEAREST for explicit reconstruction.
+====
+
+ * If the pname:chromaFilter member of the
+ slink:VkSamplerYcbcrConversionCreateInfoKHR structure is
+ ename:VK_FILTER_LINEAR:
+ ** If the format's R and B channels are reduced in resolution in just
+ width by a factor of two relative to the G channel (i.e. this is a
+ "`422`" format):
+ *** If pname:xChromaOffset is ename:VK_CHROMA_LOCATION_COSITED_EVEN_KHR:
++
+[latexmath]
++++++
+\tau_{RB}'(i,j) = \begin{cases}
+\tau_{RB}(\lfloor{i\times 0.5}\rfloor,j)[level], & 0.5 \times i = \lfloor{0.5 \times i}\rfloor\\
+0.5\times\tau_{RB}(\lfloor{i\times 0.5}\rfloor,j)[level] + \\
+0.5\times\tau_{RB}(\lfloor{i\times 0.5}\rfloor + 1,j)[level], & 0.5 \times i \neq \lfloor{0.5 \times i}\rfloor
+\end{cases}
++++++
++
+ *** If pname:xChromaOffset is ename:VK_CHROMA_LOCATION_MIDPOINT_KHR:
++
+[latexmath]
++++++
+\tau_{RB}(i,j)' = \begin{cases}
+0.25 \times \tau_{RB}(\lfloor{i\times 0.5}\rfloor - 1,j)[level] + \\
+0.75 \times \tau_{RB}(\lfloor{i\times 0.5}\rfloor,j)[level], & 0.5 \times i = \lfloor{0.5 \times i}\rfloor\\
+0.75 \times \tau_{RB}(\lfloor{i\times 0.5}\rfloor,j)[level] + \\
+0.25 \times \tau_{RB}(\lfloor{i\times 0.5}\rfloor + 1,j)[level], & 0.5 \times i \neq \lfloor{0.5 \times i}\rfloor
+\end{cases}
++++++
+
+ ** If the format's R and B channels are reduced in resolution in width and
+ height by a factor of two relative to the G channel (i.e. this is a
+ "`420`" format), a similar relationship applies.
+ Due to the number of options, these formulae are expressed more
+ concisely as follows:
++
+[width="30%",options="header",cols="5,1"]
+|==========
+| pname:xChromaOffset | &#948;~i~
+| etext:COSITED_EVEN | 0
+| etext:MIDPOINT | 0.5
+|==========
++
+[width="30%",options="header",cols="5,1"]
+|==========
+| pname:yChromaOffset | &#948;~j~
+| etext:COSITED_EVEN | 0
+| etext:MIDPOINT | 0.5
+|==========
++
+[latexmath]
++++++
+\begin{aligned}
+\tau_{RB}'(i,j) = &\\
+&\tau_{RB}(\lfloor 0.5\times(i-\delta_i)\rfloor, \lfloor 0.5\times(j-\delta_j)\rfloor)[level]
+&& \times (1 - (0.5\times(i-\delta_i) - \lfloor 0.5\times(i-\delta_i)\rfloor))
+&& \times (1 - (0.5\times(j-\delta_j) - \lfloor 0.5\times(j-\delta_j)\rfloor)) +\\
+&\tau_{RB}(1+\lfloor 0.5\times(i-\delta_i)\rfloor, \lfloor 0.5\times(j-\delta_j)\rfloor)[level]
+&& \times (0.5\times(i-\delta_i) - \lfloor 0.5\times(i-\delta_i)\rfloor)
+&& \times (1 - (0.5\times(j-\delta_j) - \lfloor 0.5\times(j-\delta_j)\rfloor)) +\\
+&\tau_{RB}(\lfloor 0.5\times(i-\delta_i)\rfloor, 1+\lfloor 0.5\times(j-\delta_j)\rfloor)[level]
+&& \times (1 - (0.5\times(i-\delta_i) - \lfloor 0.5\times(i-\delta_i)\rfloor))
+&& \times (0.5\times(j-\delta_j) - \lfloor 0.5\times(j-\delta_j)\rfloor) +\\
+&\tau_{RB}(1+\lfloor 0.5\times(i-\delta_i)\rfloor, 1+\lfloor 0.5\times(j-\delta_j)\rfloor)[level]
+&& \times (0.5\times(i-\delta_i) - \lfloor 0.5\times(i-\delta_i)\rfloor)
+&& \times (0.5\times(j-\delta_j) - \lfloor 0.5\times(j-\delta_j)\rfloor)
+\end{aligned}
++++++
+
+[NOTE]
+======
+In the case where the texture itself is bilinearly interpolated as described
+in <<textures-texel-filtering,Texel Filtering>>, thus requiring four
+full-color samples for the filtering operation, and where the reconstruction
+of these samples uses bilinear interpolation in the chroma channels due to
+pname:chromaFilter=ename:VK_FILTER_LINEAR, up to nine chroma samples may be
+required, depending on the sample location.
+======
+
+
+[[textures-implict-reconstruction]]
+==== Implicit Reconstruction
+
+Implicit reconstruction takes place by the samples being interpolated, as
+required by the filter settings of the sampler, except that
+pname:chromaFilter takes precedence for the chroma samples.
+The sample coordinates are adjusted by the downsample factor of the channel
+(such that, for example, the sample coordinates are divided by two if the
+channel has a downsample factor of two relative to the luma channel):
+
+[latexmath]
+++++++
+\begin{aligned}
+u_{RB}' (422/420) &=
+ \begin{cases}
+ 0.5\times (u + 0.5), & \textrm{xChromaOffset = COSITED}\_\textrm{EVEN} \\
+ 0.5\times u, & \textrm{xChromaOffset = MIDPOINT}
+ \end{cases} \\
+v_{RB}' (420) &=
+ \begin{cases}
+ 0.5\times (v + 0.5), & \textrm{yChromaOffset = COSITED}\_\textrm{EVEN} \\
+ 0.5\times v, & \textrm{yChromaOffset = MIDPOINT}
+ \end{cases}
+\end{aligned}
+++++++
+
+
+[[textures-sampler-YCbCr-conversion]]
+=== Sampler Y'C~B~C~R~ Conversion
+
+Sampler Y'C~B~C~R~ conversion performs the following operations, which an
+implementation may: combine into a single mathematical operation:
+
+ * <<textures-sampler-YCbCr-conversion-rangeexpand,Sampler Y'C~B~C~R~ Range
+ Expansion>>
+ * <<textures-sampler-YCbCr-conversion-modelconversion,Sampler Y'C~B~C~R~
+ Model Conversion>>
+
+[[textures-sampler-YCbCr-conversion-rangeexpand]]
+==== Sampler Y'C~B~C~R~ Range Expansion
+
+Sampler Y'C~B~C~R~ range expansion is applied to color channel values after
+all texel input operations which are not specific to sampler Y'C~B~C~R~
+conversion.
+For example, the input values to this stage have been converted using the
+normal <<textures-format-conversion,format conversion>> rules.
+
+Sampler Y'C~B~C~R~ range expansion is not applied if pname:ycbcrModel is
+ename:VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY_KHR.
+That is, the shader receives the vector C'~rgba~ as output by the Component
+Swizzle stage without further modification.
+
+For other values of pname:ycbcrModel, range expansion is applied to the
+texel channel values output by the <<textures-component-swizzle,Component
+Swizzle>> defined by the pname:components member of
+slink:VkSamplerYcbcrConversionCreateInfoKHR.
+Range expansion applies independently to each channel of the image.
+For the purposes of range expansion and Y'C~B~C~R~ model conversion, the R
+and B channels contain color difference (chroma) values and the G channel
+contains luma.
+The A channel is not modified by sampler Y'C~B~C~R~ range expansion.
+
+The range expansion to be applied is defined by the pname:ycbcrRange member
+of the sname:VkSamplerYcbcrConversionCreateInfoKHR structure:
+
+ * If pname:ycbcrRange is ename:VK_SAMPLER_YCBCR_RANGE_ITU_FULL_KHR, the
+ following transformations are applied:
++
+[latexmath]
++++++++++++++++++++
+\begin{aligned}
+Y' &= C'_{rgba}[G] \\
+C_B &= C'_{rgba}[B] - {{2^{(n-1)}}\over{(2^n) - 1}} \\
+C_R &= C'_{rgba}[R] - {{2^{(n-1)}}\over{(2^n) - 1}}
+\end{aligned}
++++++++++++++++++++
++
+[NOTE]
+.Note
+====
+These formulae correspond to the "`full range`" encoding in the
+<<data-format,Khronos Data Format Specification>>.
+
+Should any future amendments be made to the ITU specifications from which
+these equations are derived, the formulae used by Vulkan may: also be
+updated to maintain parity.
+====
+ * If pname:ycbcrRange is ename:VK_SAMPLER_YCBCR_RANGE_ITU_NARROW_KHR, the
+ following transformations are applied:
++
+[latexmath]
++++++++++++++++++++
+\begin{aligned}
+Y' &= {{C'_{rgba}[G] \times (2^n-1) - 16\times 2^{n-8}}\over{219\times 2^{n-8}}} \\
+C_B &= {{C'_{rgba}[B] \times \left(2^n-1\right) - 128\times 2^{n-8}}\over{224\times 2^{n-8}}} \\
+C_R &= {{C'_{rgba}[R] \times \left(2^n-1\right) - 128\times 2^{n-8}}\over{224\times 2^{n-8}}}
+\end{aligned}
++++++++++++++++++++
++
+[NOTE]
+.Note
+====
+These formulae correspond to the "`narrow range`" encoding in the
+<<data-format,Khronos Data Format Specification>>.
+====
+ * _n_ is the bit-depth of the channels in the format.
+
+The precision of the operations performed during range expansion must: be at
+least that of the source format.
+
+An implementation may: clamp the results of these range expansion operations
+such that Y' falls in the range [0,1], and/or such that C~B~ and C~R~ fall
+in the range [-0.5,0.5].
+
+[[textures-sampler-YCbCr-conversion-modelconversion]]
+==== Sampler Y'C~B~C~R~ Model Conversion
+
+The range-expanded values are converted between color models, according to
+the color model conversion specified in the pname:ycbcrModel member:
+
+ename:VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY_KHR::
+ The color channels are not modified by the color model conversion since
+ they are assumed already to represent the desired color model in which the
+ shader is operating; Y'C~B~C~R~ range expansion is also ignored.
+ename:VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY_KHR::
+ The color channels are not modified by the color model conversion and are
+ assumed to be treated as though in Y'C~B~C~R~ form both in memory and in
+ the shader; Y'C~B~C~R~ range expansion is applied to the channels as for
+ other Y'C~B~C~R~ models, with the vector (C~R~,Y',C~B~,A) provided to the
+ shader.
+ename:VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709_KHR::
+ The color channels are transformed from a Y'C~B~C~R~ representation to an
+ R'G'B' representation as described in the "`BT.709 Y'C~B~C~R~ conversion`"
+ section of the <<data-format,Khronos Data Format Specification>>.
+ename:VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601_KHR::
+ The color channels are transformed from a Y'C~B~C~R~ representation to an
+ R'G'B' representation as described in the "`BT.601 Y'C~B~C~R~ conversion`"
+ section of the <<data-format,Khronos Data Format Specification>>.
+ename:VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020_KHR::
+ The color channels are transformed from a Y'C~B~C~R~ representation to an
+ R'G'B' representation as described in the "`BT.2020 Y'C~B~C~R~
+ conversion`" section of the <<data-format,Khronos Data Format
+ Specification>>.
+
+In this operation, each output channel is dependent on each input channel.
+
+An implementation may: clamp the R'G'B' results of these conversions to the
+range [0,1].
+
+The precision of the operations performed during model conversion must: be
+at least that of the source format.
+
+The alpha channel is not modified by these model conversions.
+
+[NOTE]
+.Note
+====
+Sampling operations in a non-linear color space can introduce color and
+intensity shifts at sharp transition boundaries.
+To avoid this issue, the technically precise color correction sequence
+described in the "`Introduction to Color Conversions`" chapter of the
+<<data-format,Khronos Data Format Specification>> may be performed as
+follows:
+
+ * Calculate the <<textures-normalized-to-unnormalized,unnormalized texel
+ coordinates>> corresponding to the desired sample position.
+ * For a pname:minFilter/pname:magFilter of ename:VK_FILTER_NEAREST:
+ . Calculate (_i_,_j_) for the sample location as described under the
+ "`nearest filtering`" formulae in <<textures-unnormalized-to-integer>>
+ . Calculate the normalized texel coordinates corresponding to these
+ integer coordinates.
+ . Sample using <<samplers-YCbCr-conversion,sampler Y'C~B~C~R~
+ conversion>> at this location.
+ * For a pname:minFilter/pname:magFilter of ename:VK_FILTER_LINEAR:
+ . Calculate (_i~[0,1]~_,_j~[0,1]~_) for the sample location as described
+ under the "`linear filtering`" formulae in
+ <<textures-unnormalized-to-integer>>
+ . Calculate the normalized texel coordinates corresponding to these
+ integer coordinates.
+ . Sample using <<samplers-YCbCr-conversion,sampler Y'C~B~C~R~
+ conversion>> at each of these locations.
+ . Convert the non-linear AR'G'B' outputs of the Y'C~B~C~R~ conversions to
+ linear ARGB values as described in the "`Transfer Functions`" chapter
+ of the <<data-format,Khronos Data Format Specification>>.
+ . Interpolate the linear ARGB values using the [eq]#{alpha}# and
+ [eq]#{beta}# values described in the "`linear filtering`" section of
+ <<textures-unnormalized-to-integer>> and the equations in
+ <<textures-texel-filtering>>.
+
+The additional calculations and, especially, additional number of sampling
+operations in the ename:VK_FILTER_LINEAR case can be expected to have a
+performance impact compared with using the outputs directly; since the
+variation from "`correct`" results are subtle for most content, the
+application author should determine whether a more costly implementation is
+strictly necessary.
+Note that if pname:chromaFilter and pname:minFilter/pname:magFilter are both
+ename:VK_FILTER_NEAREST, these operations are redundant and sampling using
+<<samplers-YCbCr-conversion,sampler Y'C~B~C~R~ conversion>> at the desired
+sample coordinates will produce the "`correct`" results without further
+processing.
+====
+endif::VK_KHR_sampler_ycbcr_conversion[]
+
+
== Texel Output Operations
_Texel output instructions_ are SPIR-V image instructions that write to an
@@ -864,6 +1316,11 @@ Implementations must: make the same choice of either coarse or fine for both
code:OpDPdx and code:OpDPdy, and implementations should: make the choice
that is more efficient to compute.
+ifdef::VK_KHR_sampler_ycbcr_conversion[]
+For multi-planar formats, the derivatives are computed based on the plane
+with the largest dimensions.
+endif::VK_KHR_sampler_ycbcr_conversion[]
+
[[textures-normalized-operations]]
== Normalized Texel Coordinate Operations
@@ -1540,6 +1997,11 @@ comp & \,\text{from SPIR-V operand Component}
\end{aligned}
++++++++++++++++++++++++
+ifdef::VK_KHR_sampler_ycbcr_conversion[]
+code:OpImage*Gather must: not be used on a sampled image with
+<<samplers-YCbCr-conversion,sampler Y'C~B~C~R~ conversion>> enabled.
+endif::VK_KHR_sampler_ycbcr_conversion[]
+
[[textures-texel-filtering]]
=== Texel Filtering
diff --git a/doc/specs/vulkan/chapters/vertexpostproc.txt b/doc/specs/vulkan/chapters/vertexpostproc.txt
index e7c6300..b5ee8e2 100644
--- a/doc/specs/vulkan/chapters/vertexpostproc.txt
+++ b/doc/specs/vulkan/chapters/vertexpostproc.txt
@@ -267,8 +267,33 @@ If the primitive under consideration is a point or line segment, then
clipping passes it unchanged if its vertices lie entirely within the clip
volume.
+ifndef::VK_KHR_maintenance2[]
If a point's vertex lies outside of the clip volume, the entire primitive
may: be discarded.
+endif::VK_KHR_maintenance2[]
+
+ifdef::VK_KHR_maintenance2[]
+
+[open,refpage='VkPointClippingBehaviorKHR',desc='Enum specifying the point clipping behaviour',type='enums']
+--
+
+Possible values of
+slink:VkPhysicalDevicePointClippingPropertiesKHR::pname:pointClippingBehavior,
+specifying clipping behavior of a point primitive whose vertex lies outside
+the clip volume, are:
+
+include::../api/enums/VkPointClippingBehaviorKHR.txt[]
+
+ * ename:VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES_KHR specifies that the
+ primitive is discarded if the vertex lies outside any clip plane,
+ including the planes bounding the view volume.
+ * ename:VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY_KHR specifies that
+ the primitive is discarded only if the vertex lies outside any user clip
+ plane.
+
+--
+
+endif::VK_KHR_maintenance2[]
If either of a line segment's vertices lie outside of the clip volume, the
line segment may: be clipped, with new vertex coordinates computed for each
diff --git a/doc/specs/vulkan/images/chromasamples_420_xcosited_ycosited.svg b/doc/specs/vulkan/images/chromasamples_420_xcosited_ycosited.svg
new file mode 100644
index 0000000..20cc31f
--- /dev/null
+++ b/doc/specs/vulkan/images/chromasamples_420_xcosited_ycosited.svg
@@ -0,0 +1,1191 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ width="92.042mm"
+ height="70.124992mm"
+ viewBox="0 0 326.13307 248.47438"
+ id="svg2"
+ version="1.1">
+ <defs
+ id="defs4" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <rect
+ y="0.44288287"
+ x="24.509056"
+ height="248.03149"
+ width="283.46457"
+ id="rect4690"
+ style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ y="89.025558"
+ x="59.942123"
+ height="35.433071"
+ width="35.433071"
+ id="rect3338" />
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ y="89.025558"
+ x="95.375198"
+ height="35.433071"
+ width="35.433071"
+ id="rect3338-3" />
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ y="89.025558"
+ x="130.80826"
+ height="35.433071"
+ width="35.433071"
+ id="rect3338-6" />
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ y="89.025558"
+ x="166.24132"
+ height="35.433071"
+ width="35.433071"
+ id="rect3338-7" />
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ y="89.025558"
+ x="201.67439"
+ height="35.433071"
+ width="35.433071"
+ id="rect3338-5" />
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ y="89.025558"
+ x="237.10748"
+ height="35.433071"
+ width="35.433071"
+ id="rect3338-35" />
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ y="53.59251"
+ x="59.942123"
+ height="35.433071"
+ width="35.433071"
+ id="rect3338-62" />
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ y="53.59251"
+ x="95.375198"
+ height="35.433071"
+ width="35.433071"
+ id="rect3338-3-9" />
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ y="53.59251"
+ x="130.80826"
+ height="35.433071"
+ width="35.433071"
+ id="rect3338-6-1" />
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ y="53.59251"
+ x="166.24132"
+ height="35.433071"
+ width="35.433071"
+ id="rect3338-7-2" />
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ y="53.59251"
+ x="201.67439"
+ height="35.433071"
+ width="35.433071"
+ id="rect3338-5-7" />
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ y="53.59251"
+ x="237.10748"
+ height="35.433071"
+ width="35.433071"
+ id="rect3338-35-0" />
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ y="18.159405"
+ x="59.942123"
+ height="35.433071"
+ width="35.433071"
+ id="rect3338-9" />
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ y="18.159405"
+ x="95.375198"
+ height="35.433071"
+ width="35.433071"
+ id="rect3338-3-3" />
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ y="18.159405"
+ x="130.80826"
+ height="35.433071"
+ width="35.433071"
+ id="rect3338-6-6" />
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ y="18.159405"
+ x="166.24132"
+ height="35.433071"
+ width="35.433071"
+ id="rect3338-7-0" />
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ y="18.159405"
+ x="201.67439"
+ height="35.433071"
+ width="35.433071"
+ id="rect3338-5-6" />
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ y="18.159405"
+ x="237.10748"
+ height="35.433071"
+ width="35.433071"
+ id="rect3338-35-2" />
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ y="124.4586"
+ x="59.942123"
+ height="35.433071"
+ width="35.433071"
+ id="rect3338-61" />
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ y="124.4586"
+ x="95.375198"
+ height="35.433071"
+ width="35.433071"
+ id="rect3338-3-8" />
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ y="124.4586"
+ x="130.80826"
+ height="35.433071"
+ width="35.433071"
+ id="rect3338-6-7" />
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ y="124.4586"
+ x="166.24132"
+ height="35.433071"
+ width="35.433071"
+ id="rect3338-7-9" />
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ y="124.4586"
+ x="201.67439"
+ height="35.433071"
+ width="35.433071"
+ id="rect3338-5-2" />
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ y="124.4586"
+ x="237.10748"
+ height="35.433071"
+ width="35.433071"
+ id="rect3338-35-02" />
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ y="159.89168"
+ x="59.942123"
+ height="35.433071"
+ width="35.433071"
+ id="rect3338-37" />
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ y="159.89168"
+ x="95.375198"
+ height="35.433071"
+ width="35.433071"
+ id="rect3338-3-5" />
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ y="159.89168"
+ x="130.80826"
+ height="35.433071"
+ width="35.433071"
+ id="rect3338-6-9" />
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ y="159.89168"
+ x="166.24132"
+ height="35.433071"
+ width="35.433071"
+ id="rect3338-7-22" />
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ y="159.89168"
+ x="201.67439"
+ height="35.433071"
+ width="35.433071"
+ id="rect3338-5-8" />
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ y="159.89168"
+ x="237.10748"
+ height="35.433071"
+ width="35.433071"
+ id="rect3338-35-9" />
+ <circle
+ r="3.5433071"
+ cy="35.875957"
+ cx="77.658661"
+ id="path4477"
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <circle
+ r="3.5433071"
+ cy="35.875957"
+ cx="113.09172"
+ id="path4477-4"
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <circle
+ r="3.5433071"
+ cy="35.875957"
+ cx="148.5248"
+ id="path4477-0"
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <circle
+ r="3.5433071"
+ cy="35.875957"
+ cx="183.95787"
+ id="path4477-6"
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <circle
+ r="3.5433071"
+ cy="35.875957"
+ cx="219.39093"
+ id="path4477-2"
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <circle
+ r="3.5433071"
+ cy="35.875957"
+ cx="254.82401"
+ id="path4477-67"
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <circle
+ r="3.5433071"
+ cy="71.309067"
+ cx="77.658661"
+ id="path4477-5"
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <circle
+ r="3.5433071"
+ cy="71.309067"
+ cx="113.09172"
+ id="path4477-4-6"
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <circle
+ r="3.5433071"
+ cy="71.309067"
+ cx="148.5248"
+ id="path4477-0-9"
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <circle
+ r="3.5433071"
+ cy="71.309067"
+ cx="183.95787"
+ id="path4477-6-8"
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <circle
+ r="3.5433071"
+ cy="71.309067"
+ cx="219.39093"
+ id="path4477-2-7"
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <circle
+ r="3.5433071"
+ cy="71.309067"
+ cx="254.82401"
+ id="path4477-67-2"
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <circle
+ r="3.5433071"
+ cy="106.74208"
+ cx="77.658661"
+ id="path4477-8"
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <circle
+ r="3.5433071"
+ cy="106.74208"
+ cx="113.09172"
+ id="path4477-4-2"
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <circle
+ r="3.5433071"
+ cy="106.74208"
+ cx="148.5248"
+ id="path4477-0-99"
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <circle
+ r="3.5433071"
+ cy="106.74208"
+ cx="183.95787"
+ id="path4477-6-6"
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <circle
+ r="3.5433071"
+ cy="106.74208"
+ cx="219.39093"
+ id="path4477-2-0"
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <circle
+ r="3.5433071"
+ cy="106.74208"
+ cx="254.82401"
+ id="path4477-67-27"
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <circle
+ r="3.5433071"
+ cy="142.17513"
+ cx="77.658661"
+ id="path4477-61"
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <circle
+ r="3.5433071"
+ cy="142.17513"
+ cx="113.09172"
+ id="path4477-4-3"
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <circle
+ r="3.5433071"
+ cy="142.17513"
+ cx="148.5248"
+ id="path4477-0-2"
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <circle
+ r="3.5433071"
+ cy="142.17513"
+ cx="183.95787"
+ id="path4477-6-1"
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <circle
+ r="3.5433071"
+ cy="142.17513"
+ cx="219.39093"
+ id="path4477-2-5"
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <circle
+ r="3.5433071"
+ cy="142.17513"
+ cx="254.82401"
+ id="path4477-67-9"
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <circle
+ r="3.5433071"
+ cy="177.60823"
+ cx="77.658661"
+ id="path4477-9"
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <circle
+ r="3.5433071"
+ cy="177.60823"
+ cx="113.09172"
+ id="path4477-4-1"
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <circle
+ r="3.5433071"
+ cy="177.60823"
+ cx="148.5248"
+ id="path4477-0-4"
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <circle
+ r="3.5433071"
+ cy="177.60823"
+ cx="183.95787"
+ id="path4477-6-9"
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <circle
+ r="3.5433071"
+ cy="177.60823"
+ cx="219.39093"
+ id="path4477-2-1"
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <circle
+ r="3.5433071"
+ cy="177.60823"
+ cx="254.82401"
+ id="path4477-67-0"
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ id="path4262-6"
+ d="m 20.965751,230.75786 255.118119,0"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000012px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ id="path4264-7"
+ d="m 24.509054,234.30114 0,-219.685038"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.99999994px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ id="path4266-5"
+ d="m 59.942124,234.30115 0,-7.08661"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ id="path4268-3"
+ d="m 95.375194,227.21454 0,7.08661"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ id="path4270-5"
+ d="m 130.80827,227.21454 0,7.08661"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ id="path4272-6"
+ d="m 166.24134,227.21454 0,7.08661"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ id="path4274-2"
+ d="m 201.67441,227.21454 0,7.08661"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ id="path4276-9"
+ d="m 237.10748,227.21454 0,7.08661"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ id="path4278-1"
+ d="m 20.965748,195.32477 7.086614,0"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ id="path4280-2"
+ d="m 20.965748,159.8917 7.086614,0"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ id="path4282-7"
+ d="m 20.965748,124.45863 7.086614,0"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ id="path4284-0"
+ d="m 20.965748,89.025562 7.086614,0"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ id="path4286-9"
+ d="m 20.965748,53.592492 7.086614,0"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <text
+ id="text4288-36"
+ y="243.15956"
+ x="59.936287"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-size:10px;text-align:center;text-anchor:middle"
+ y="243.15956"
+ x="59.936287"
+ id="tspan4290-06">0.0</tspan></text>
+ <text
+ id="text4288-6-2"
+ y="243.15956"
+ x="95.369339"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-size:10px;text-align:center;text-anchor:middle"
+ y="243.15956"
+ x="95.369339"
+ id="tspan4290-1-6">1.0</tspan></text>
+ <text
+ id="text4288-3-1"
+ y="243.15956"
+ x="130.80243"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-size:10px;text-align:center;text-anchor:middle"
+ y="243.15956"
+ x="130.80243"
+ id="tspan4290-19-8">2.0</tspan></text>
+ <text
+ id="text4288-4-7"
+ y="243.15956"
+ x="166.23549"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-size:10px;text-align:center;text-anchor:middle"
+ y="243.15956"
+ x="166.23549"
+ id="tspan4290-7-9">3.0</tspan></text>
+ <text
+ id="text4288-8-2"
+ y="243.15956"
+ x="201.66856"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-size:10px;text-align:center;text-anchor:middle"
+ y="243.15956"
+ x="201.66856"
+ id="tspan4290-4-0">4.0</tspan></text>
+ <text
+ id="text4288-5-2"
+ y="243.15956"
+ x="237.10162"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-size:10px;text-align:center;text-anchor:middle"
+ y="243.15956"
+ x="237.10162"
+ id="tspan4290-0-3">5.0</tspan></text>
+ <text
+ id="text4358-7"
+ y="198.86806"
+ x="3.215332"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-size:10px"
+ y="198.86806"
+ x="3.215332"
+ id="tspan4360-59">0.0</tspan></text>
+ <text
+ id="text4358-1-2"
+ y="163.43501"
+ x="3.125"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-size:10px"
+ y="163.43501"
+ x="3.125"
+ id="tspan4360-0-2">1.0</tspan></text>
+ <text
+ id="text4358-6-8"
+ y="128.00191"
+ x="3.347168"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-size:10px"
+ y="128.00191"
+ x="3.347168"
+ id="tspan4360-3-9">2.0</tspan></text>
+ <text
+ id="text4358-2-7"
+ y="92.568863"
+ x="3.2324219"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-size:10px"
+ y="92.568863"
+ x="3.2324219"
+ id="tspan4360-06-3">3.0</tspan></text>
+ <text
+ id="text4358-15-6"
+ y="57.135754"
+ x="3.2495117"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-size:10px"
+ y="57.135754"
+ x="3.2495117"
+ id="tspan4360-5-1">4.0</tspan></text>
+ <text
+ id="text4358-1-4-2"
+ y="234.30116"
+ x="-0.48828125"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-size:10px"
+ y="234.30116"
+ x="-0.48828125"
+ id="tspan4360-0-7-9">-1.0</tspan></text>
+ <text
+ id="text4288-6-6-3"
+ y="243.15944"
+ x="22.503197"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-size:10px;text-align:center;text-anchor:middle"
+ y="243.15944"
+ x="22.503197"
+ id="tspan4290-1-5-1">-1.0</tspan></text>
+ <rect
+ y="227.21449"
+ x="141.43819"
+ height="7.0866141"
+ width="14.173228"
+ id="rect4448-9"
+ style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <text
+ id="text4450-4"
+ y="233.81941"
+ x="146.21129"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10px;font-family:serif;-inkscape-font-specification:'serif Italic'"
+ y="233.81941"
+ x="146.21129"
+ id="tspan4452-7">u</tspan></text>
+ <rect
+ y="99.655472"
+ x="17.422443"
+ height="14.173228"
+ width="14.173228"
+ id="rect4457-8"
+ style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <text
+ id="text4450-6-4"
+ y="108.74208"
+ x="21.840561"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10px;font-family:serif;-inkscape-font-specification:'serif Italic'"
+ y="108.74208"
+ x="21.840561"
+ id="tspan4452-6-5">v</tspan></text>
+ <path
+ id="path4286-9-0"
+ d="m 20.965748,18.159422 7.086614,0"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <text
+ id="text4358-15-6-3"
+ y="21.702679"
+ x="3.2495117"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-size:10px"
+ y="21.702679"
+ x="3.2495117"
+ id="tspan4360-5-1-6">5.0</tspan></text>
+ <path
+ id="path4276-9-1"
+ d="m 272.54055,227.21454 0,7.08661"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <text
+ id="text4288-5-2-0"
+ y="243.15956"
+ x="272.5347"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-size:10px;text-align:center;text-anchor:middle"
+ y="243.15956"
+ x="272.5347"
+ id="tspan4290-0-3-6">6.0</tspan></text>
+ <rect
+ y="159.89168"
+ x="42.225594"
+ height="35.433071"
+ width="70.866142"
+ id="rect5238"
+ style="fill:none;fill-opacity:1;stroke:#ff0000;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ id="path8122"
+ d="m 70.572044,170.52162 14.17323,14.17323"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.88582677;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ id="path8124"
+ d="m 70.572044,184.69485 14.17323,-14.17323"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.88582677;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ y="142.17519"
+ x="42.225594"
+ height="70.866142"
+ width="70.866142"
+ id="rect8126"
+ style="fill:none;fill-opacity:1;stroke:#ff0000;stroke-width:0.88582677;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <text
+ id="text8128"
+ y="170.52162"
+ x="77.658661"
+ style="font-style:normal;font-weight:normal;font-size:7.5px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="fill:#ff0000;fill-opacity:1"
+ y="170.52162"
+ x="77.658661"
+ id="tspan8130">0,0</tspan></text>
+ <path
+ id="path8122-6"
+ d="m 141.43818,170.52162 14.17323,14.17323"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.88582677;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ id="path8124-7"
+ d="m 141.43818,184.69485 14.17323,-14.17323"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.88582677;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ y="142.17519"
+ x="113.09174"
+ height="70.866142"
+ width="70.866142"
+ id="rect8126-7"
+ style="fill:none;fill-opacity:1;stroke:#ff0000;stroke-width:0.88582677;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <text
+ id="text8128-4"
+ y="170.52162"
+ x="148.5248"
+ style="font-style:normal;font-weight:normal;font-size:7.5px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="fill:#ff0000;fill-opacity:1"
+ y="170.52162"
+ x="148.5248"
+ id="tspan8130-0">1,0</tspan></text>
+ <path
+ id="path8122-64"
+ d="m 212.30432,170.52162 14.17323,14.17323"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.88582677;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ id="path8124-74"
+ d="m 212.30432,184.69485 14.17323,-14.17323"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.88582677;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ y="142.17519"
+ x="183.95787"
+ height="70.866142"
+ width="70.866142"
+ id="rect8126-8"
+ style="fill:none;fill-opacity:1;stroke:#ff0000;stroke-width:0.88582677;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <text
+ id="text8128-5"
+ y="170.52162"
+ x="219.39093"
+ style="font-style:normal;font-weight:normal;font-size:7.5px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="fill:#ff0000;fill-opacity:1"
+ y="170.52162"
+ x="219.39093"
+ id="tspan8130-8">2,0</tspan></text>
+ <path
+ id="path8122-2"
+ d="m 283.17046,170.52162 14.17323,14.17323"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.88582677;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ id="path8124-6"
+ d="m 283.17046,184.69485 14.17323,-14.17323"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.88582677;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ y="142.17519"
+ x="254.82401"
+ height="70.866142"
+ width="70.866142"
+ id="rect8126-0"
+ style="fill:none;fill-opacity:1;stroke:#ff0000;stroke-width:0.88582677;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <text
+ id="text8128-6"
+ y="170.52162"
+ x="290.25708"
+ style="font-style:normal;font-weight:normal;font-size:7.5px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="fill:#ff0000;fill-opacity:1"
+ y="170.52162"
+ x="290.25708"
+ id="tspan8130-6">3,0</tspan></text>
+ <path
+ id="path8122-4"
+ d="m 283.17046,99.655482 14.17323,14.173228"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.88582677;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ id="path8124-62"
+ d="M 283.17046,113.82871 297.34369,99.655482"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.88582677;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ y="71.309036"
+ x="254.82401"
+ height="70.866142"
+ width="70.866142"
+ id="rect8126-89"
+ style="fill:none;fill-opacity:1;stroke:#ff0000;stroke-width:0.88582677;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <text
+ id="text8128-60"
+ y="99.655472"
+ x="290.25708"
+ style="font-style:normal;font-weight:normal;font-size:7.5px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="fill:#ff0000;fill-opacity:1"
+ y="99.655472"
+ x="290.25708"
+ id="tspan8130-7">3,1</tspan></text>
+ <path
+ id="path8122-0"
+ d="m 283.17046,28.789342 14.17323,14.17323"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.88582677;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ id="path8124-1"
+ d="m 283.17046,42.962572 14.17323,-14.17323"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.88582677;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ y="0.44291338"
+ x="254.82401"
+ height="70.866142"
+ width="70.866142"
+ id="rect8126-01"
+ style="fill:none;fill-opacity:1;stroke:#ff0000;stroke-width:0.88582677;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <text
+ id="text8128-3"
+ y="28.789349"
+ x="290.25708"
+ style="font-style:normal;font-weight:normal;font-size:7.5px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="fill:#ff0000;fill-opacity:1"
+ y="28.789349"
+ x="290.25708"
+ id="tspan8130-77">3,2</tspan></text>
+ <path
+ id="path8122-26"
+ d="m 212.30432,28.789342 14.17323,14.17323"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.88582677;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ id="path8124-4"
+ d="m 212.30432,42.962572 14.17323,-14.17323"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.88582677;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ y="0.44291338"
+ x="183.95787"
+ height="70.866142"
+ width="70.866142"
+ id="rect8126-5"
+ style="fill:none;fill-opacity:1;stroke:#ff0000;stroke-width:0.88582677;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <text
+ id="text8128-2"
+ y="28.789349"
+ x="219.39093"
+ style="font-style:normal;font-weight:normal;font-size:7.5px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="fill:#ff0000;fill-opacity:1"
+ y="28.789349"
+ x="219.39093"
+ id="tspan8130-02">2,2</tspan></text>
+ <path
+ id="path8122-9"
+ d="m 212.30432,99.655482 14.17323,14.173228"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.88582677;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ id="path8124-0"
+ d="M 212.30432,113.82871 226.47755,99.655482"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.88582677;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ y="71.309036"
+ x="183.95787"
+ height="70.866142"
+ width="70.866142"
+ id="rect8126-9"
+ style="fill:none;fill-opacity:1;stroke:#ff0000;stroke-width:0.88582677;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <text
+ id="text8128-9"
+ y="99.655472"
+ x="219.39093"
+ style="font-style:normal;font-weight:normal;font-size:7.5px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="fill:#ff0000;fill-opacity:1"
+ y="99.655472"
+ x="219.39093"
+ id="tspan8130-4">2,1</tspan></text>
+ <path
+ id="path8122-5"
+ d="m 141.43818,99.655482 14.17323,14.173228"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.88582677;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ id="path8124-10"
+ d="M 141.43818,113.82871 155.61141,99.655482"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.88582677;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ y="71.309036"
+ x="113.09174"
+ height="70.866142"
+ width="70.866142"
+ id="rect8126-3"
+ style="fill:none;fill-opacity:1;stroke:#ff0000;stroke-width:0.88582677;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <text
+ id="text8128-7"
+ y="99.655472"
+ x="148.5248"
+ style="font-style:normal;font-weight:normal;font-size:7.5px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="fill:#ff0000;fill-opacity:1"
+ y="99.655472"
+ x="148.5248"
+ id="tspan8130-88">1,1</tspan></text>
+ <path
+ id="path8122-60"
+ d="m 70.572044,99.655482 14.17323,14.173228"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.88582677;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ id="path8124-46"
+ d="M 70.572044,113.82871 84.745274,99.655482"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.88582677;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ y="71.309036"
+ x="42.225594"
+ height="70.866142"
+ width="70.866142"
+ id="rect8126-76"
+ style="fill:none;fill-opacity:1;stroke:#ff0000;stroke-width:0.88582677;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <text
+ id="text8128-0"
+ y="99.655472"
+ x="77.658661"
+ style="font-style:normal;font-weight:normal;font-size:7.5px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="fill:#ff0000;fill-opacity:1"
+ y="99.655472"
+ x="77.658661"
+ id="tspan8130-9">0,1</tspan></text>
+ <path
+ id="path8122-7"
+ d="m 70.572044,28.789342 14.17323,14.17323"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.88582677;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ id="path8124-5"
+ d="m 70.572044,42.962572 14.17323,-14.17323"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.88582677;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ y="0.44291338"
+ x="42.225594"
+ height="70.866142"
+ width="70.866142"
+ id="rect8126-97"
+ style="fill:none;fill-opacity:1;stroke:#ff0000;stroke-width:0.88582677;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <text
+ id="text8128-8"
+ y="28.789349"
+ x="77.658661"
+ style="font-style:normal;font-weight:normal;font-size:7.5px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="fill:#ff0000;fill-opacity:1"
+ y="28.789349"
+ x="77.658661"
+ id="tspan8130-5">0,2</tspan></text>
+ <path
+ id="path8122-3"
+ d="m 141.43818,28.789342 14.17323,14.17323"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.88582677;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ id="path8124-3"
+ d="m 141.43818,42.962572 14.17323,-14.17323"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.88582677;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ y="0.44291338"
+ x="113.09174"
+ height="70.866142"
+ width="70.866142"
+ id="rect8126-83"
+ style="fill:none;fill-opacity:1;stroke:#ff0000;stroke-width:0.88582677;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <text
+ id="text8128-79"
+ y="28.789349"
+ x="148.5248"
+ style="font-style:normal;font-weight:normal;font-size:7.5px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="fill:#ff0000;fill-opacity:1"
+ y="28.789349"
+ x="148.5248"
+ id="tspan8130-3">1,2</tspan></text>
+ <path
+ id="path4266"
+ d="m 77.658664,216.58462 0,-7.08661"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ id="path4268"
+ d="m 113.09173,209.49801 0,7.08661"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ id="path4270"
+ d="m 148.5248,209.49801 0,7.08661"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ id="path4272"
+ d="m 183.95787,209.49801 0,7.08661"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ id="path4274"
+ d="m 219.39094,209.49801 0,7.08661"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ id="path4276"
+ d="m 254.82401,209.49801 0,7.08661"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <text
+ id="text4288"
+ y="225.44301"
+ x="77.652817"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-size:10px;text-align:center;text-anchor:middle"
+ y="225.44301"
+ x="77.652817"
+ id="tspan4290">0</tspan></text>
+ <text
+ id="text4288-6"
+ y="225.44301"
+ x="113.08588"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-size:10px;text-align:center;text-anchor:middle"
+ y="225.44301"
+ x="113.08588"
+ id="tspan4290-1">1</tspan></text>
+ <text
+ id="text4288-3"
+ y="225.44301"
+ x="148.51895"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-size:10px;text-align:center;text-anchor:middle"
+ y="225.44301"
+ x="148.51895"
+ id="tspan4290-19">2</tspan></text>
+ <text
+ id="text4288-4"
+ y="225.44301"
+ x="183.95201"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-size:10px;text-align:center;text-anchor:middle"
+ y="225.44301"
+ x="183.95201"
+ id="tspan4290-7">3</tspan></text>
+ <text
+ id="text4288-8"
+ y="225.44301"
+ x="219.3851"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-size:10px;text-align:center;text-anchor:middle"
+ y="225.44301"
+ x="219.3851"
+ id="tspan4290-4">4</tspan></text>
+ <text
+ id="text4288-5"
+ y="225.44301"
+ x="254.81818"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-size:10px;text-align:center;text-anchor:middle"
+ y="225.44301"
+ x="254.81818"
+ id="tspan4290-0">5</tspan></text>
+ <text
+ id="text4288-6-6"
+ y="225.44301"
+ x="40.219734"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-size:10px;text-align:center;text-anchor:middle"
+ y="225.44301"
+ x="40.219734"
+ id="tspan4290-1-5">-1</tspan></text>
+ <path
+ id="path4264"
+ d="m 42.22559,216.58462 0,-201.968498"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ id="path4278"
+ d="m 38.682283,177.60824 7.086614,0"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ id="path4280"
+ d="m 38.682283,142.17517 7.086614,0"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ id="path4282"
+ d="m 38.682283,106.7421 7.086614,0"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ id="path4284"
+ d="m 38.682283,71.309032 7.086614,0"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ id="path4286"
+ d="m 38.682283,35.875962 7.086614,0"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <text
+ id="text4358"
+ y="181.1515"
+ x="31.561493"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-size:10px"
+ y="181.1515"
+ x="31.561493"
+ id="tspan4360">0</tspan></text>
+ <text
+ id="text4358-1"
+ y="145.71846"
+ x="31.471161"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-size:10px"
+ y="145.71846"
+ x="31.471161"
+ id="tspan4360-0">1</tspan></text>
+ <text
+ id="text4358-6"
+ y="110.28539"
+ x="31.693329"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-size:10px"
+ y="110.28539"
+ x="31.693329"
+ id="tspan4360-3">2</tspan></text>
+ <text
+ id="text4358-2"
+ y="74.852341"
+ x="31.578583"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-size:10px"
+ y="74.852341"
+ x="31.578583"
+ id="tspan4360-06">3</tspan></text>
+ <text
+ id="text4358-15"
+ y="39.419231"
+ x="31.595673"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-size:10px"
+ y="39.419231"
+ x="31.595673"
+ id="tspan4360-5">4</tspan></text>
+ <text
+ id="text4358-1-4"
+ y="216.58461"
+ x="27.85788"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-size:10px"
+ y="216.58461"
+ x="27.85788"
+ id="tspan4360-0-7">-1</tspan></text>
+ <path
+ id="path4262"
+ d="m 38.682283,213.04131 237.401567,0"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <rect
+ y="209.49794"
+ x="159.15471"
+ height="7.0866141"
+ width="14.173228"
+ id="rect4448"
+ style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <text
+ id="text4450"
+ y="215.04128"
+ x="164.63731"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10px;font-family:serif;-inkscape-font-specification:'serif Italic'"
+ y="215.04128"
+ x="164.63731"
+ id="tspan4452">i</tspan></text>
+ <rect
+ y="78.395676"
+ x="35.138977"
+ height="21.259821"
+ width="14.173228"
+ id="rect4457"
+ style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <text
+ id="text4450-6"
+ y="91.025558"
+ x="40.621574"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10px;font-family:serif;-inkscape-font-specification:'serif Italic'"
+ y="91.025558"
+ x="40.621574"
+ id="tspan4452-6">j</tspan></text>
+</svg>
diff --git a/doc/specs/vulkan/images/chromasamples_420_xcosited_ymidpoint.svg b/doc/specs/vulkan/images/chromasamples_420_xcosited_ymidpoint.svg
new file mode 100644
index 0000000..215de15
--- /dev/null
+++ b/doc/specs/vulkan/images/chromasamples_420_xcosited_ymidpoint.svg
@@ -0,0 +1,1411 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ width="95.125mm"
+ height="80.25mm"
+ viewBox="0 0 337.05709 284.35039"
+ id="svg2"
+ version="1.1">
+ <defs
+ id="defs4" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <rect
+ y="0.44292408"
+ x="0"
+ height="283.46457"
+ width="318.89764"
+ id="rect4690"
+ style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <g
+ transform="translate(-35.433071,-353.88779)"
+ id="g10498">
+ <rect
+ id="rect3338"
+ width="35.433071"
+ height="35.433071"
+ x="106.29921"
+ y="460.62991"
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ id="rect3338-3"
+ width="35.433071"
+ height="35.433071"
+ x="141.73228"
+ y="460.62991"
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ id="rect3338-6"
+ width="35.433071"
+ height="35.433071"
+ x="177.16534"
+ y="460.62991"
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ id="rect3338-7"
+ width="35.433071"
+ height="35.433071"
+ x="212.5984"
+ y="460.62991"
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ id="rect3338-5"
+ width="35.433071"
+ height="35.433071"
+ x="248.03148"
+ y="460.62991"
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ id="rect3338-35"
+ width="35.433071"
+ height="35.433071"
+ x="283.46457"
+ y="460.62991"
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ id="rect3338-62"
+ width="35.433071"
+ height="35.433071"
+ x="106.29921"
+ y="425.19687"
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ id="rect3338-3-9"
+ width="35.433071"
+ height="35.433071"
+ x="141.73228"
+ y="425.19687"
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ id="rect3338-6-1"
+ width="35.433071"
+ height="35.433071"
+ x="177.16534"
+ y="425.19687"
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ id="rect3338-7-2"
+ width="35.433071"
+ height="35.433071"
+ x="212.5984"
+ y="425.19687"
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ id="rect3338-5-7"
+ width="35.433071"
+ height="35.433071"
+ x="248.03148"
+ y="425.19687"
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ id="rect3338-35-0"
+ width="35.433071"
+ height="35.433071"
+ x="283.46457"
+ y="425.19687"
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ id="rect3338-9"
+ width="35.433071"
+ height="35.433071"
+ x="106.29921"
+ y="389.76376"
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ id="rect3338-3-3"
+ width="35.433071"
+ height="35.433071"
+ x="141.73228"
+ y="389.76376"
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ id="rect3338-6-6"
+ width="35.433071"
+ height="35.433071"
+ x="177.16534"
+ y="389.76376"
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ id="rect3338-7-0"
+ width="35.433071"
+ height="35.433071"
+ x="212.5984"
+ y="389.76376"
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ id="rect3338-5-6"
+ width="35.433071"
+ height="35.433071"
+ x="248.03148"
+ y="389.76376"
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ id="rect3338-35-2"
+ width="35.433071"
+ height="35.433071"
+ x="283.46457"
+ y="389.76376"
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ id="rect3338-61"
+ width="35.433071"
+ height="35.433071"
+ x="106.29921"
+ y="496.06296"
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ id="rect3338-3-8"
+ width="35.433071"
+ height="35.433071"
+ x="141.73228"
+ y="496.06296"
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ id="rect3338-6-7"
+ width="35.433071"
+ height="35.433071"
+ x="177.16534"
+ y="496.06296"
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ id="rect3338-7-9"
+ width="35.433071"
+ height="35.433071"
+ x="212.5984"
+ y="496.06296"
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ id="rect3338-5-2"
+ width="35.433071"
+ height="35.433071"
+ x="248.03148"
+ y="496.06296"
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ id="rect3338-35-02"
+ width="35.433071"
+ height="35.433071"
+ x="283.46457"
+ y="496.06296"
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ id="rect3338-37"
+ width="35.433071"
+ height="35.433071"
+ x="106.29921"
+ y="531.49603"
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ id="rect3338-3-5"
+ width="35.433071"
+ height="35.433071"
+ x="141.73228"
+ y="531.49603"
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ id="rect3338-6-9"
+ width="35.433071"
+ height="35.433071"
+ x="177.16534"
+ y="531.49603"
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ id="rect3338-7-22"
+ width="35.433071"
+ height="35.433071"
+ x="212.5984"
+ y="531.49603"
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ id="rect3338-5-8"
+ width="35.433071"
+ height="35.433071"
+ x="248.03148"
+ y="531.49603"
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ id="rect3338-35-9"
+ width="35.433071"
+ height="35.433071"
+ x="283.46457"
+ y="531.49603"
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <circle
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4477"
+ cx="124.01575"
+ cy="407.48032"
+ r="3.5433071" />
+ <circle
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4477-4"
+ cx="159.44881"
+ cy="407.48032"
+ r="3.5433071" />
+ <circle
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4477-0"
+ cx="194.88188"
+ cy="407.48032"
+ r="3.5433071" />
+ <circle
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4477-6"
+ cx="230.31496"
+ cy="407.48032"
+ r="3.5433071" />
+ <circle
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4477-2"
+ cx="265.74802"
+ cy="407.48032"
+ r="3.5433071" />
+ <circle
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4477-67"
+ cx="301.18109"
+ cy="407.48032"
+ r="3.5433071" />
+ <circle
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4477-5"
+ cx="124.01575"
+ cy="442.91342"
+ r="3.5433071" />
+ <circle
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4477-4-6"
+ cx="159.44881"
+ cy="442.91342"
+ r="3.5433071" />
+ <circle
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4477-0-9"
+ cx="194.88188"
+ cy="442.91342"
+ r="3.5433071" />
+ <circle
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4477-6-8"
+ cx="230.31496"
+ cy="442.91342"
+ r="3.5433071" />
+ <circle
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4477-2-7"
+ cx="265.74802"
+ cy="442.91342"
+ r="3.5433071" />
+ <circle
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4477-67-2"
+ cx="301.18109"
+ cy="442.91342"
+ r="3.5433071" />
+ <circle
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4477-8"
+ cx="124.01575"
+ cy="478.34644"
+ r="3.5433071" />
+ <circle
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4477-4-2"
+ cx="159.44881"
+ cy="478.34644"
+ r="3.5433071" />
+ <circle
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4477-0-99"
+ cx="194.88188"
+ cy="478.34644"
+ r="3.5433071" />
+ <circle
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4477-6-6"
+ cx="230.31496"
+ cy="478.34644"
+ r="3.5433071" />
+ <circle
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4477-2-0"
+ cx="265.74802"
+ cy="478.34644"
+ r="3.5433071" />
+ <circle
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4477-67-27"
+ cx="301.18109"
+ cy="478.34644"
+ r="3.5433071" />
+ <circle
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4477-61"
+ cx="124.01575"
+ cy="513.77948"
+ r="3.5433071" />
+ <circle
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4477-4-3"
+ cx="159.44881"
+ cy="513.77948"
+ r="3.5433071" />
+ <circle
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4477-0-2"
+ cx="194.88188"
+ cy="513.77948"
+ r="3.5433071" />
+ <circle
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4477-6-1"
+ cx="230.31496"
+ cy="513.77948"
+ r="3.5433071" />
+ <circle
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4477-2-5"
+ cx="265.74802"
+ cy="513.77948"
+ r="3.5433071" />
+ <circle
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4477-67-9"
+ cx="301.18109"
+ cy="513.77948"
+ r="3.5433071" />
+ <circle
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4477-9"
+ cx="124.01575"
+ cy="549.21259"
+ r="3.5433071" />
+ <circle
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4477-4-1"
+ cx="159.44881"
+ cy="549.21259"
+ r="3.5433071" />
+ <circle
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4477-0-4"
+ cx="194.88188"
+ cy="549.21259"
+ r="3.5433071" />
+ <circle
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4477-6-9"
+ cx="230.31496"
+ cy="549.21259"
+ r="3.5433071" />
+ <circle
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4477-2-1"
+ cx="265.74802"
+ cy="549.21259"
+ r="3.5433071" />
+ <circle
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4477-67-0"
+ cx="301.18109"
+ cy="549.21259"
+ r="3.5433071" />
+ </g>
+ <text
+ id="text10669"
+ y="170.52162"
+ x="88.582672"
+ style="font-style:normal;font-weight:normal;font-size:7.5px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="fill:#ff0000;fill-opacity:1"
+ y="170.52162"
+ x="88.582672"
+ id="tspan10671">0,0</tspan></text>
+ <g
+ id="g10679"
+ transform="translate(-53.149602,-353.88779)">
+ <g
+ id="g10675">
+ <path
+ id="path10665"
+ d="m 134.64567,524.40945 14.17323,14.17323"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ id="path10667"
+ d="M 134.64567,538.58268 148.8189,524.40945"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ </g>
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#ff0000;stroke-width:0.88582677;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect10673"
+ width="70.866142"
+ height="70.866142"
+ x="106.29921"
+ y="496.06299" />
+ </g>
+ <text
+ id="text10669-7"
+ y="170.52162"
+ x="159.44882"
+ style="font-style:normal;font-weight:normal;font-size:7.5px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="fill:#ff0000;fill-opacity:1"
+ y="170.52162"
+ x="159.44882"
+ id="tspan10671-8">1,0</tspan></text>
+ <g
+ id="g10679-7"
+ transform="translate(17.716543,-353.88779)">
+ <g
+ id="g10675-4">
+ <path
+ id="path10665-1"
+ d="m 134.64567,524.40945 14.17323,14.17323"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ id="path10667-9"
+ d="M 134.64567,538.58268 148.8189,524.40945"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ </g>
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#ff0000;stroke-width:0.88582677;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect10673-0"
+ width="70.866142"
+ height="70.866142"
+ x="106.29921"
+ y="496.06299" />
+ </g>
+ <text
+ id="text10669-9"
+ y="170.52162"
+ x="230.31497"
+ style="font-style:normal;font-weight:normal;font-size:7.5px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="fill:#ff0000;fill-opacity:1"
+ y="170.52162"
+ x="230.31497"
+ id="tspan10671-88">2,0</tspan></text>
+ <g
+ id="g10679-5"
+ transform="translate(88.582689,-353.88779)">
+ <g
+ id="g10675-8">
+ <path
+ id="path10665-4"
+ d="m 134.64567,524.40945 14.17323,14.17323"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ id="path10667-3"
+ d="M 134.64567,538.58268 148.8189,524.40945"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ </g>
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#ff0000;stroke-width:0.88582677;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect10673-7"
+ width="70.866142"
+ height="70.866142"
+ x="106.29921"
+ y="496.06299" />
+ </g>
+ <text
+ id="text10669-2"
+ y="241.38777"
+ x="88.582672"
+ style="font-style:normal;font-weight:normal;font-size:7.5px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="fill:#ff0000;fill-opacity:1"
+ y="241.38777"
+ x="88.582672"
+ id="tspan10671-0">0,-1</tspan></text>
+ <g
+ id="g10679-2"
+ transform="translate(-53.149598,-283.02165)">
+ <g
+ id="g10675-1">
+ <path
+ id="path10665-75"
+ d="m 134.64567,524.40945 14.17323,14.17323"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ id="path10667-17"
+ d="M 134.64567,538.58268 148.8189,524.40945"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ </g>
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#ff0000;stroke-width:0.88582677;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect10673-4"
+ width="70.866142"
+ height="70.866142"
+ x="106.29921"
+ y="496.06299" />
+ </g>
+ <text
+ id="text10669-17"
+ y="241.38777"
+ x="159.44882"
+ style="font-style:normal;font-weight:normal;font-size:7.5px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="fill:#ff0000;fill-opacity:1"
+ y="241.38777"
+ x="159.44882"
+ id="tspan10671-1">1,-1</tspan></text>
+ <g
+ id="g10679-1"
+ transform="translate(17.716543,-283.02165)">
+ <g
+ id="g10675-17">
+ <path
+ id="path10665-0"
+ d="m 134.64567,524.40945 14.17323,14.17323"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ id="path10667-4"
+ d="M 134.64567,538.58268 148.8189,524.40945"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ </g>
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#ff0000;stroke-width:0.88582677;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect10673-08"
+ width="70.866142"
+ height="70.866142"
+ x="106.29921"
+ y="496.06299" />
+ </g>
+ <text
+ id="text10669-5"
+ y="241.38777"
+ x="230.31497"
+ style="font-style:normal;font-weight:normal;font-size:7.5px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="fill:#ff0000;fill-opacity:1"
+ y="241.38777"
+ x="230.31497"
+ id="tspan10671-16">2,-1</tspan></text>
+ <g
+ id="g10679-6"
+ transform="translate(88.582689,-283.02165)">
+ <g
+ id="g10675-2">
+ <path
+ id="path10665-19"
+ d="m 134.64567,524.40945 14.17323,14.17323"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ id="path10667-6"
+ d="M 134.64567,538.58268 148.8189,524.40945"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ </g>
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#ff0000;stroke-width:0.88582677;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect10673-48"
+ width="70.866142"
+ height="70.866142"
+ x="106.29921"
+ y="496.06299" />
+ </g>
+ <text
+ id="text10669-0"
+ y="241.38777"
+ x="301.18109"
+ style="font-style:normal;font-weight:normal;font-size:7.5px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="fill:#ff0000;fill-opacity:1"
+ y="241.38777"
+ x="301.18109"
+ id="tspan10671-81">3,-1</tspan></text>
+ <g
+ id="g10679-0"
+ transform="translate(159.44883,-283.02165)">
+ <g
+ id="g10675-22">
+ <path
+ id="path10665-97"
+ d="m 134.64567,524.40945 14.17323,14.17323"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ id="path10667-5"
+ d="M 134.64567,538.58268 148.8189,524.40945"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ </g>
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#ff0000;stroke-width:0.88582677;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect10673-6"
+ width="70.866142"
+ height="70.866142"
+ x="106.29921"
+ y="496.06299" />
+ </g>
+ <text
+ id="text10669-4"
+ y="170.52162"
+ x="301.18109"
+ style="font-style:normal;font-weight:normal;font-size:7.5px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="fill:#ff0000;fill-opacity:1"
+ y="170.52162"
+ x="301.18109"
+ id="tspan10671-6">3,0</tspan></text>
+ <g
+ id="g10679-3"
+ transform="translate(159.44883,-353.88779)">
+ <g
+ id="g10675-7">
+ <path
+ id="path10665-974"
+ d="m 134.64567,524.40945 14.17323,14.17323"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ id="path10667-91"
+ d="M 134.64567,538.58268 148.8189,524.40945"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ </g>
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#ff0000;stroke-width:0.88582677;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect10673-70"
+ width="70.866142"
+ height="70.866142"
+ x="106.29921"
+ y="496.06299" />
+ </g>
+ <text
+ id="text10669-55"
+ y="99.655479"
+ x="88.582672"
+ style="font-style:normal;font-weight:normal;font-size:7.5px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="fill:#ff0000;fill-opacity:1"
+ y="99.655479"
+ x="88.582672"
+ id="tspan10671-4">0,1</tspan></text>
+ <g
+ id="g10679-9"
+ transform="translate(-53.149598,-424.75393)">
+ <g
+ id="g10675-83">
+ <path
+ id="path10665-8"
+ d="m 134.64567,524.40945 14.17323,14.17323"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ id="path10667-52"
+ d="M 134.64567,538.58268 148.8189,524.40945"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ </g>
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#ff0000;stroke-width:0.88582677;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect10673-22"
+ width="70.866142"
+ height="70.866142"
+ x="106.29921"
+ y="496.06299" />
+ </g>
+ <text
+ id="text10669-70"
+ y="99.655479"
+ x="159.44882"
+ style="font-style:normal;font-weight:normal;font-size:7.5px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="fill:#ff0000;fill-opacity:1"
+ y="99.655479"
+ x="159.44882"
+ id="tspan10671-34">1,1</tspan></text>
+ <g
+ id="g10679-63"
+ transform="translate(17.716543,-424.75393)">
+ <g
+ id="g10675-6">
+ <path
+ id="path10665-3"
+ d="m 134.64567,524.40945 14.17323,14.17323"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ id="path10667-34"
+ d="M 134.64567,538.58268 148.8189,524.40945"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ </g>
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#ff0000;stroke-width:0.88582677;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect10673-43"
+ width="70.866142"
+ height="70.866142"
+ x="106.29921"
+ y="496.06299" />
+ </g>
+ <text
+ id="text10669-97"
+ y="99.655479"
+ x="230.31497"
+ style="font-style:normal;font-weight:normal;font-size:7.5px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="fill:#ff0000;fill-opacity:1"
+ y="99.655479"
+ x="230.31497"
+ id="tspan10671-25">2,1</tspan></text>
+ <g
+ id="g10679-89"
+ transform="translate(88.582689,-424.75393)">
+ <g
+ id="g10675-02">
+ <path
+ id="path10665-47"
+ d="m 134.64567,524.40945 14.17323,14.17323"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ id="path10667-65"
+ d="M 134.64567,538.58268 148.8189,524.40945"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ </g>
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#ff0000;stroke-width:0.88582677;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect10673-71"
+ width="70.866142"
+ height="70.866142"
+ x="106.29921"
+ y="496.06299" />
+ </g>
+ <text
+ id="text10669-3"
+ y="99.655479"
+ x="301.18109"
+ style="font-style:normal;font-weight:normal;font-size:7.5px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="fill:#ff0000;fill-opacity:1"
+ y="99.655479"
+ x="301.18109"
+ id="tspan10671-33">3,1</tspan></text>
+ <g
+ id="g10679-85"
+ transform="translate(159.44883,-424.75393)">
+ <g
+ id="g10675-10">
+ <path
+ id="path10665-87"
+ d="m 134.64567,524.40945 14.17323,14.17323"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ id="path10667-63"
+ d="M 134.64567,538.58268 148.8189,524.40945"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ </g>
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#ff0000;stroke-width:0.88582677;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect10673-5"
+ width="70.866142"
+ height="70.866142"
+ x="106.29921"
+ y="496.06299" />
+ </g>
+ <text
+ id="text10669-08"
+ y="28.78933"
+ x="301.18109"
+ style="font-style:normal;font-weight:normal;font-size:7.5px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="fill:#ff0000;fill-opacity:1"
+ y="28.78933"
+ x="301.18109"
+ id="tspan10671-04">3,2</tspan></text>
+ <g
+ id="g10679-11"
+ transform="translate(159.44883,-495.62007)">
+ <g
+ id="g10675-35">
+ <path
+ id="path10665-93"
+ d="m 134.64567,524.40945 14.17323,14.17323"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ id="path10667-41"
+ d="M 134.64567,538.58268 148.8189,524.40945"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ </g>
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#ff0000;stroke-width:0.88582677;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect10673-50"
+ width="70.866142"
+ height="70.866142"
+ x="106.29921"
+ y="496.06299" />
+ </g>
+ <text
+ id="text10669-8"
+ y="28.78933"
+ x="230.31497"
+ style="font-style:normal;font-weight:normal;font-size:7.5px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="fill:#ff0000;fill-opacity:1"
+ y="28.78933"
+ x="230.31497"
+ id="tspan10671-35">2,2</tspan></text>
+ <g
+ id="g10679-65"
+ transform="translate(88.582689,-495.62007)">
+ <g
+ id="g10675-99">
+ <path
+ id="path10665-07"
+ d="m 134.64567,524.40945 14.17323,14.17323"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ id="path10667-637"
+ d="M 134.64567,538.58268 148.8189,524.40945"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ </g>
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#ff0000;stroke-width:0.88582677;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect10673-61"
+ width="70.866142"
+ height="70.866142"
+ x="106.29921"
+ y="496.06299" />
+ </g>
+ <text
+ id="text10669-50"
+ y="28.78933"
+ x="159.44882"
+ style="font-style:normal;font-weight:normal;font-size:7.5px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="fill:#ff0000;fill-opacity:1"
+ y="28.78933"
+ x="159.44882"
+ id="tspan10671-65">1,2</tspan></text>
+ <g
+ id="g10679-08"
+ transform="translate(17.716543,-495.62007)">
+ <g
+ id="g10675-12">
+ <path
+ id="path10665-2"
+ d="m 134.64567,524.40945 14.17323,14.17323"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ id="path10667-69"
+ d="M 134.64567,538.58268 148.8189,524.40945"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ </g>
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#ff0000;stroke-width:0.88582677;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect10673-10"
+ width="70.866142"
+ height="70.866142"
+ x="106.29921"
+ y="496.06299" />
+ </g>
+ <text
+ id="text10669-42"
+ y="28.78933"
+ x="88.582672"
+ style="font-style:normal;font-weight:normal;font-size:7.5px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="fill:#ff0000;fill-opacity:1"
+ y="28.78933"
+ x="88.582672"
+ id="tspan10671-7">0,2</tspan></text>
+ <g
+ id="g10679-40"
+ transform="translate(-53.149598,-495.62007)">
+ <g
+ id="g10675-32">
+ <path
+ id="path10665-80"
+ d="m 134.64567,524.40945 14.17323,14.17323"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ id="path10667-37"
+ d="M 134.64567,538.58268 148.8189,524.40945"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ </g>
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#ff0000;stroke-width:0.88582677;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect10673-00"
+ width="70.866142"
+ height="70.866142"
+ x="106.29921"
+ y="496.06299" />
+ </g>
+ <g
+ transform="translate(-35.433071,-353.88779)"
+ id="g10560">
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 85.039369,584.64567 237.401571,0"
+ id="path4262" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 88.582676,588.18898 0,-201.9685"
+ id="path4264" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 124.01575,588.18898 0,-7.08661"
+ id="path4266" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 159.44882,581.10237 0,7.08661"
+ id="path4268" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 194.88189,581.10237 0,7.08661"
+ id="path4270" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 230.31496,581.10237 0,7.08661"
+ id="path4272" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 265.74803,581.10237 0,7.08661"
+ id="path4274" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 301.1811,581.10237 0,7.08661"
+ id="path4276" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 85.039369,549.2126 7.086614,0"
+ id="path4278" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 85.039369,513.77953 7.086614,0"
+ id="path4280" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 85.039369,478.34646 7.086614,0"
+ id="path4282" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 85.039369,442.91339 7.086614,0"
+ id="path4284" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 85.039369,407.48032 7.086614,0"
+ id="path4286" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="124.0099"
+ y="597.04736"
+ id="text4288"><tspan
+ id="tspan4290"
+ x="124.0099"
+ y="597.04736"
+ style="font-size:10px;text-align:center;text-anchor:middle">0</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="159.44296"
+ y="597.04736"
+ id="text4288-6"><tspan
+ id="tspan4290-1"
+ x="159.44296"
+ y="597.04736"
+ style="font-size:10px;text-align:center;text-anchor:middle">1</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="194.87604"
+ y="597.04736"
+ id="text4288-3"><tspan
+ id="tspan4290-19"
+ x="194.87604"
+ y="597.04736"
+ style="font-size:10px;text-align:center;text-anchor:middle">2</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="230.3091"
+ y="597.04736"
+ id="text4288-4"><tspan
+ id="tspan4290-7"
+ x="230.3091"
+ y="597.04736"
+ style="font-size:10px;text-align:center;text-anchor:middle">3</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="265.74219"
+ y="597.04736"
+ id="text4288-8"><tspan
+ id="tspan4290-4"
+ x="265.74219"
+ y="597.04736"
+ style="font-size:10px;text-align:center;text-anchor:middle">4</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="301.17526"
+ y="597.04736"
+ id="text4288-5"><tspan
+ id="tspan4290-0"
+ x="301.17526"
+ y="597.04736"
+ style="font-size:10px;text-align:center;text-anchor:middle">5</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="77.918579"
+ y="552.75586"
+ id="text4358"><tspan
+ id="tspan4360"
+ x="77.918579"
+ y="552.75586"
+ style="font-size:10px">0</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="77.828247"
+ y="517.32281"
+ id="text4358-1"><tspan
+ id="tspan4360-0"
+ x="77.828247"
+ y="517.32281"
+ style="font-size:10px">1</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="78.050415"
+ y="481.88974"
+ id="text4358-6"><tspan
+ id="tspan4360-3"
+ x="78.050415"
+ y="481.88974"
+ style="font-size:10px">2</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="77.935669"
+ y="446.4567"
+ id="text4358-2"><tspan
+ id="tspan4360-06"
+ x="77.935669"
+ y="446.4567"
+ style="font-size:10px">3</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="77.952759"
+ y="411.02359"
+ id="text4358-15"><tspan
+ id="tspan4360-5"
+ x="77.952759"
+ y="411.02359"
+ style="font-size:10px">4</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="74.214966"
+ y="588.18896"
+ id="text4358-1-4"><tspan
+ id="tspan4360-0-7"
+ x="74.214966"
+ y="588.18896"
+ style="font-size:10px">-1</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="86.57682"
+ y="597.04736"
+ id="text4288-6-6"><tspan
+ id="tspan4290-1-5"
+ x="86.57682"
+ y="597.04736"
+ style="font-size:10px;text-align:center;text-anchor:middle">-1</tspan></text>
+ <rect
+ style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect4448"
+ width="14.173228"
+ height="7.0866141"
+ x="205.5118"
+ y="581.10229" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="210.9944"
+ y="586.64563"
+ id="text4450"><tspan
+ id="tspan4452"
+ x="210.9944"
+ y="586.64563"
+ style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10px;font-family:serif;-inkscape-font-specification:'serif Italic'">i</tspan></text>
+ <rect
+ style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect4457"
+ width="14.173228"
+ height="21.259821"
+ x="81.496063"
+ y="450.00003" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="86.978661"
+ y="462.62991"
+ id="text4450-6"><tspan
+ id="tspan4452-6"
+ x="86.978661"
+ y="462.62991"
+ style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10px;font-family:serif;-inkscape-font-specification:'serif Italic'">j</tspan></text>
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000012px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 67.322837,602.36222 255.118123,0"
+ id="path4262-6" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.99999994px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 70.86614,605.9055 0,-219.68504"
+ id="path4264-7" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 106.29921,605.90551 0,-7.08661"
+ id="path4266-5" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 141.73228,598.8189 0,7.08661"
+ id="path4268-3" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 177.16536,598.8189 0,7.08661"
+ id="path4270-5" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 212.59843,598.8189 0,7.08661"
+ id="path4272-6" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 248.0315,598.8189 0,7.08661"
+ id="path4274-2" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 283.46457,598.8189 0,7.08661"
+ id="path4276-9" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 67.322834,566.92913 7.086614,0"
+ id="path4278-1" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 67.322834,531.49606 7.086614,0"
+ id="path4280-2" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 67.322834,496.06299 7.086614,0"
+ id="path4282-7" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 67.322834,460.62992 7.086614,0"
+ id="path4284-0" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 67.322834,425.19685 7.086614,0"
+ id="path4286-9" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="106.29337"
+ y="614.76392"
+ id="text4288-36"><tspan
+ id="tspan4290-06"
+ x="106.29337"
+ y="614.76392"
+ style="font-size:10px;text-align:center;text-anchor:middle">0.0</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="141.72643"
+ y="614.76392"
+ id="text4288-6-2"><tspan
+ id="tspan4290-1-6"
+ x="141.72643"
+ y="614.76392"
+ style="font-size:10px;text-align:center;text-anchor:middle">1.0</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="177.15952"
+ y="614.76392"
+ id="text4288-3-1"><tspan
+ id="tspan4290-19-8"
+ x="177.15952"
+ y="614.76392"
+ style="font-size:10px;text-align:center;text-anchor:middle">2.0</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="212.59258"
+ y="614.76392"
+ id="text4288-4-7"><tspan
+ id="tspan4290-7-9"
+ x="212.59258"
+ y="614.76392"
+ style="font-size:10px;text-align:center;text-anchor:middle">3.0</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="248.02565"
+ y="614.76392"
+ id="text4288-8-2"><tspan
+ id="tspan4290-4-0"
+ x="248.02565"
+ y="614.76392"
+ style="font-size:10px;text-align:center;text-anchor:middle">4.0</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="283.45871"
+ y="614.76392"
+ id="text4288-5-2"><tspan
+ id="tspan4290-0-3"
+ x="283.45871"
+ y="614.76392"
+ style="font-size:10px;text-align:center;text-anchor:middle">5.0</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="49.572418"
+ y="570.47241"
+ id="text4358-7"><tspan
+ id="tspan4360-59"
+ x="49.572418"
+ y="570.47241"
+ style="font-size:10px">0.0</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="49.482086"
+ y="535.03937"
+ id="text4358-1-2"><tspan
+ id="tspan4360-0-2"
+ x="49.482086"
+ y="535.03937"
+ style="font-size:10px">1.0</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="49.704254"
+ y="499.60626"
+ id="text4358-6-8"><tspan
+ id="tspan4360-3-9"
+ x="49.704254"
+ y="499.60626"
+ style="font-size:10px">2.0</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="49.589508"
+ y="464.17322"
+ id="text4358-2-7"><tspan
+ id="tspan4360-06-3"
+ x="49.589508"
+ y="464.17322"
+ style="font-size:10px">3.0</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="49.606598"
+ y="428.74011"
+ id="text4358-15-6"><tspan
+ id="tspan4360-5-1"
+ x="49.606598"
+ y="428.74011"
+ style="font-size:10px">4.0</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="45.868805"
+ y="605.90552"
+ id="text4358-1-4-2"><tspan
+ id="tspan4360-0-7-9"
+ x="45.868805"
+ y="605.90552"
+ style="font-size:10px">-1.0</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="68.860283"
+ y="614.76379"
+ id="text4288-6-6-3"><tspan
+ id="tspan4290-1-5-1"
+ x="68.860283"
+ y="614.76379"
+ style="font-size:10px;text-align:center;text-anchor:middle">-1.0</tspan></text>
+ <rect
+ style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect4448-9"
+ width="14.173228"
+ height="7.0866141"
+ x="187.79527"
+ y="598.81885" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="192.56837"
+ y="605.42377"
+ id="text4450-4"><tspan
+ id="tspan4452-7"
+ x="192.56837"
+ y="605.42377"
+ style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10px;font-family:serif;-inkscape-font-specification:'serif Italic'">u</tspan></text>
+ <rect
+ style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect4457-8"
+ width="14.173228"
+ height="14.173228"
+ x="63.77953"
+ y="471.25983" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="68.197647"
+ y="480.34644"
+ id="text4450-6-4"><tspan
+ id="tspan4452-6-5"
+ x="68.197647"
+ y="480.34644"
+ style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10px;font-family:serif;-inkscape-font-specification:'serif Italic'">v</tspan></text>
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 67.322834,389.76378 7.086614,0"
+ id="path4286-9-0" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="49.606598"
+ y="393.30704"
+ id="text4358-15-6-3"><tspan
+ id="tspan4360-5-1-6"
+ x="49.606598"
+ y="393.30704"
+ style="font-size:10px">5.0</tspan></text>
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 318.89764,598.8189 0,7.08661"
+ id="path4276-9-1" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="318.89178"
+ y="614.76392"
+ id="text4288-5-2-0"><tspan
+ id="tspan4290-0-3-6"
+ x="318.89178"
+ y="614.76392"
+ style="font-size:10px;text-align:center;text-anchor:middle">6.0</tspan></text>
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#ff0000;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect5238"
+ width="70.866142"
+ height="35.433071"
+ x="88.58268"
+ y="531.49603" />
+ </g>
+</svg>
diff --git a/doc/specs/vulkan/images/chromasamples_420_xmidpoint_ycosited.svg b/doc/specs/vulkan/images/chromasamples_420_xmidpoint_ycosited.svg
new file mode 100644
index 0000000..db7b739
--- /dev/null
+++ b/doc/specs/vulkan/images/chromasamples_420_xmidpoint_ycosited.svg
@@ -0,0 +1,1379 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ width="100.25mm"
+ height="75.125mm"
+ viewBox="0 0 355.21653 266.19093"
+ id="svg2"
+ version="1.1">
+ <defs
+ id="defs4" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <rect
+ y="0.28343511"
+ x="0.4429138"
+ height="265.9075"
+ width="318.89764"
+ id="rect4690"
+ style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <g
+ transform="translate(-34.990157,-371.60433)"
+ id="g10498">
+ <rect
+ id="rect3338"
+ width="35.433071"
+ height="35.433071"
+ x="106.29921"
+ y="460.62991"
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ id="rect3338-3"
+ width="35.433071"
+ height="35.433071"
+ x="141.73228"
+ y="460.62991"
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ id="rect3338-6"
+ width="35.433071"
+ height="35.433071"
+ x="177.16534"
+ y="460.62991"
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ id="rect3338-7"
+ width="35.433071"
+ height="35.433071"
+ x="212.5984"
+ y="460.62991"
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ id="rect3338-5"
+ width="35.433071"
+ height="35.433071"
+ x="248.03148"
+ y="460.62991"
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ id="rect3338-35"
+ width="35.433071"
+ height="35.433071"
+ x="283.46457"
+ y="460.62991"
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ id="rect3338-62"
+ width="35.433071"
+ height="35.433071"
+ x="106.29921"
+ y="425.19687"
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ id="rect3338-3-9"
+ width="35.433071"
+ height="35.433071"
+ x="141.73228"
+ y="425.19687"
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ id="rect3338-6-1"
+ width="35.433071"
+ height="35.433071"
+ x="177.16534"
+ y="425.19687"
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ id="rect3338-7-2"
+ width="35.433071"
+ height="35.433071"
+ x="212.5984"
+ y="425.19687"
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ id="rect3338-5-7"
+ width="35.433071"
+ height="35.433071"
+ x="248.03148"
+ y="425.19687"
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ id="rect3338-35-0"
+ width="35.433071"
+ height="35.433071"
+ x="283.46457"
+ y="425.19687"
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ id="rect3338-9"
+ width="35.433071"
+ height="35.433071"
+ x="106.29921"
+ y="389.76376"
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ id="rect3338-3-3"
+ width="35.433071"
+ height="35.433071"
+ x="141.73228"
+ y="389.76376"
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ id="rect3338-6-6"
+ width="35.433071"
+ height="35.433071"
+ x="177.16534"
+ y="389.76376"
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ id="rect3338-7-0"
+ width="35.433071"
+ height="35.433071"
+ x="212.5984"
+ y="389.76376"
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ id="rect3338-5-6"
+ width="35.433071"
+ height="35.433071"
+ x="248.03148"
+ y="389.76376"
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ id="rect3338-35-2"
+ width="35.433071"
+ height="35.433071"
+ x="283.46457"
+ y="389.76376"
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ id="rect3338-61"
+ width="35.433071"
+ height="35.433071"
+ x="106.29921"
+ y="496.06296"
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ id="rect3338-3-8"
+ width="35.433071"
+ height="35.433071"
+ x="141.73228"
+ y="496.06296"
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ id="rect3338-6-7"
+ width="35.433071"
+ height="35.433071"
+ x="177.16534"
+ y="496.06296"
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ id="rect3338-7-9"
+ width="35.433071"
+ height="35.433071"
+ x="212.5984"
+ y="496.06296"
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ id="rect3338-5-2"
+ width="35.433071"
+ height="35.433071"
+ x="248.03148"
+ y="496.06296"
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ id="rect3338-35-02"
+ width="35.433071"
+ height="35.433071"
+ x="283.46457"
+ y="496.06296"
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ id="rect3338-37"
+ width="35.433071"
+ height="35.433071"
+ x="106.29921"
+ y="531.49603"
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ id="rect3338-3-5"
+ width="35.433071"
+ height="35.433071"
+ x="141.73228"
+ y="531.49603"
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ id="rect3338-6-9"
+ width="35.433071"
+ height="35.433071"
+ x="177.16534"
+ y="531.49603"
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ id="rect3338-7-22"
+ width="35.433071"
+ height="35.433071"
+ x="212.5984"
+ y="531.49603"
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ id="rect3338-5-8"
+ width="35.433071"
+ height="35.433071"
+ x="248.03148"
+ y="531.49603"
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ id="rect3338-35-9"
+ width="35.433071"
+ height="35.433071"
+ x="283.46457"
+ y="531.49603"
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <circle
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4477"
+ cx="124.01575"
+ cy="407.48032"
+ r="3.5433071" />
+ <circle
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4477-4"
+ cx="159.44881"
+ cy="407.48032"
+ r="3.5433071" />
+ <circle
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4477-0"
+ cx="194.88188"
+ cy="407.48032"
+ r="3.5433071" />
+ <circle
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4477-6"
+ cx="230.31496"
+ cy="407.48032"
+ r="3.5433071" />
+ <circle
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4477-2"
+ cx="265.74802"
+ cy="407.48032"
+ r="3.5433071" />
+ <circle
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4477-67"
+ cx="301.18109"
+ cy="407.48032"
+ r="3.5433071" />
+ <circle
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4477-5"
+ cx="124.01575"
+ cy="442.91342"
+ r="3.5433071" />
+ <circle
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4477-4-6"
+ cx="159.44881"
+ cy="442.91342"
+ r="3.5433071" />
+ <circle
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4477-0-9"
+ cx="194.88188"
+ cy="442.91342"
+ r="3.5433071" />
+ <circle
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4477-6-8"
+ cx="230.31496"
+ cy="442.91342"
+ r="3.5433071" />
+ <circle
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4477-2-7"
+ cx="265.74802"
+ cy="442.91342"
+ r="3.5433071" />
+ <circle
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4477-67-2"
+ cx="301.18109"
+ cy="442.91342"
+ r="3.5433071" />
+ <circle
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4477-8"
+ cx="124.01575"
+ cy="478.34644"
+ r="3.5433071" />
+ <circle
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4477-4-2"
+ cx="159.44881"
+ cy="478.34644"
+ r="3.5433071" />
+ <circle
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4477-0-99"
+ cx="194.88188"
+ cy="478.34644"
+ r="3.5433071" />
+ <circle
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4477-6-6"
+ cx="230.31496"
+ cy="478.34644"
+ r="3.5433071" />
+ <circle
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4477-2-0"
+ cx="265.74802"
+ cy="478.34644"
+ r="3.5433071" />
+ <circle
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4477-67-27"
+ cx="301.18109"
+ cy="478.34644"
+ r="3.5433071" />
+ <circle
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4477-61"
+ cx="124.01575"
+ cy="513.77948"
+ r="3.5433071" />
+ <circle
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4477-4-3"
+ cx="159.44881"
+ cy="513.77948"
+ r="3.5433071" />
+ <circle
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4477-0-2"
+ cx="194.88188"
+ cy="513.77948"
+ r="3.5433071" />
+ <circle
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4477-6-1"
+ cx="230.31496"
+ cy="513.77948"
+ r="3.5433071" />
+ <circle
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4477-2-5"
+ cx="265.74802"
+ cy="513.77948"
+ r="3.5433071" />
+ <circle
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4477-67-9"
+ cx="301.18109"
+ cy="513.77948"
+ r="3.5433071" />
+ <circle
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4477-9"
+ cx="124.01575"
+ cy="549.21259"
+ r="3.5433071" />
+ <circle
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4477-4-1"
+ cx="159.44881"
+ cy="549.21259"
+ r="3.5433071" />
+ <circle
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4477-0-4"
+ cx="194.88188"
+ cy="549.21259"
+ r="3.5433071" />
+ <circle
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4477-6-9"
+ cx="230.31496"
+ cy="549.21259"
+ r="3.5433071" />
+ <circle
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4477-2-1"
+ cx="265.74802"
+ cy="549.21259"
+ r="3.5433071" />
+ <circle
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4477-67-0"
+ cx="301.18109"
+ cy="549.21259"
+ r="3.5433071" />
+ </g>
+ <text
+ id="text10669"
+ y="170.52164"
+ x="106.74213"
+ style="font-style:normal;font-weight:normal;font-size:7.5px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="fill:#ff0000;fill-opacity:1"
+ y="170.52164"
+ x="106.74213"
+ id="tspan10671">0,0</tspan></text>
+ <g
+ id="g10679"
+ transform="translate(-34.990153,-353.88779)">
+ <g
+ id="g10675">
+ <path
+ id="path10665"
+ d="m 134.64567,524.40945 14.17323,14.17323"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ id="path10667"
+ d="M 134.64567,538.58268 148.8189,524.40945"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ </g>
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#ff0000;stroke-width:0.88582677;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect10673"
+ width="70.866142"
+ height="70.866142"
+ x="106.29921"
+ y="496.06299" />
+ </g>
+ <text
+ id="text10669-7"
+ y="170.52164"
+ x="177.60828"
+ style="font-style:normal;font-weight:normal;font-size:7.5px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="fill:#ff0000;fill-opacity:1"
+ y="170.52164"
+ x="177.60828"
+ id="tspan10671-8">1,0</tspan></text>
+ <g
+ id="g10679-7"
+ transform="translate(35.875992,-353.88779)">
+ <g
+ id="g10675-4">
+ <path
+ id="path10665-1"
+ d="m 134.64567,524.40945 14.17323,14.17323"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ id="path10667-9"
+ d="M 134.64567,538.58268 148.8189,524.40945"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ </g>
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#ff0000;stroke-width:0.88582677;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect10673-0"
+ width="70.866142"
+ height="70.866142"
+ x="106.29921"
+ y="496.06299" />
+ </g>
+ <text
+ id="text10669-9"
+ y="170.52164"
+ x="248.47441"
+ style="font-style:normal;font-weight:normal;font-size:7.5px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="fill:#ff0000;fill-opacity:1"
+ y="170.52164"
+ x="248.47441"
+ id="tspan10671-88">2,0</tspan></text>
+ <g
+ id="g10679-5"
+ transform="translate(106.74213,-353.88779)">
+ <g
+ id="g10675-8">
+ <path
+ id="path10665-4"
+ d="m 134.64567,524.40945 14.17323,14.17323"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ id="path10667-3"
+ d="M 134.64567,538.58268 148.8189,524.40945"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ </g>
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#ff0000;stroke-width:0.88582677;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect10673-7"
+ width="70.866142"
+ height="70.866142"
+ x="106.29921"
+ y="496.06299" />
+ </g>
+ <text
+ id="text10669-1"
+ y="170.52164"
+ x="35.875999"
+ style="font-style:normal;font-weight:normal;font-size:7.5px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="fill:#ff0000;fill-opacity:1"
+ y="170.52164"
+ x="35.875999"
+ id="tspan10671-3">-1,0</tspan></text>
+ <g
+ id="g10679-8"
+ transform="translate(-105.8563,-353.88779)">
+ <g
+ id="g10675-0">
+ <path
+ id="path10665-9"
+ d="m 134.64567,524.40945 14.17323,14.17323"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ id="path10667-7"
+ d="M 134.64567,538.58268 148.8189,524.40945"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ </g>
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#ff0000;stroke-width:0.88582677;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect10673-9"
+ width="70.866142"
+ height="70.866142"
+ x="106.29921"
+ y="496.06299" />
+ </g>
+ <text
+ id="text10669-4"
+ y="170.52164"
+ x="319.34055"
+ style="font-style:normal;font-weight:normal;font-size:7.5px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="fill:#ff0000;fill-opacity:1"
+ y="170.52164"
+ x="319.34055"
+ id="tspan10671-6">3,0</tspan></text>
+ <g
+ id="g10679-3"
+ transform="translate(177.60827,-353.88779)">
+ <g
+ id="g10675-7">
+ <path
+ id="path10665-974"
+ d="m 134.64567,524.40945 14.17323,14.17323"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ id="path10667-91"
+ d="M 134.64567,538.58268 148.8189,524.40945"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ </g>
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#ff0000;stroke-width:0.88582677;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect10673-70"
+ width="70.866142"
+ height="70.866142"
+ x="106.29921"
+ y="496.06299" />
+ </g>
+ <text
+ id="text10669-6"
+ y="99.655457"
+ x="35.875999"
+ style="font-style:normal;font-weight:normal;font-size:7.5px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="fill:#ff0000;fill-opacity:1"
+ y="99.655457"
+ x="35.875999"
+ id="tspan10671-08">-1,1</tspan></text>
+ <g
+ id="g10679-53"
+ transform="translate(-105.8563,-424.75393)">
+ <g
+ id="g10675-9">
+ <path
+ id="path10665-41"
+ d="m 134.64567,524.40945 14.17323,14.17323"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ id="path10667-54"
+ d="M 134.64567,538.58268 148.8189,524.40945"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ </g>
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#ff0000;stroke-width:0.88582677;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect10673-1"
+ width="70.866142"
+ height="70.866142"
+ x="106.29921"
+ y="496.06299" />
+ </g>
+ <text
+ id="text10669-55"
+ y="99.655457"
+ x="106.74213"
+ style="font-style:normal;font-weight:normal;font-size:7.5px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="fill:#ff0000;fill-opacity:1"
+ y="99.655457"
+ x="106.74213"
+ id="tspan10671-4">0,1</tspan></text>
+ <g
+ id="g10679-9"
+ transform="translate(-34.990149,-424.75393)">
+ <g
+ id="g10675-83">
+ <path
+ id="path10665-8"
+ d="m 134.64567,524.40945 14.17323,14.17323"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ id="path10667-52"
+ d="M 134.64567,538.58268 148.8189,524.40945"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ </g>
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#ff0000;stroke-width:0.88582677;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect10673-22"
+ width="70.866142"
+ height="70.866142"
+ x="106.29921"
+ y="496.06299" />
+ </g>
+ <text
+ id="text10669-70"
+ y="99.655457"
+ x="177.60828"
+ style="font-style:normal;font-weight:normal;font-size:7.5px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="fill:#ff0000;fill-opacity:1"
+ y="99.655457"
+ x="177.60828"
+ id="tspan10671-34">1,1</tspan></text>
+ <g
+ id="g10679-63"
+ transform="translate(35.875992,-424.75393)">
+ <g
+ id="g10675-6">
+ <path
+ id="path10665-3"
+ d="m 134.64567,524.40945 14.17323,14.17323"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ id="path10667-34"
+ d="M 134.64567,538.58268 148.8189,524.40945"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ </g>
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#ff0000;stroke-width:0.88582677;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect10673-43"
+ width="70.866142"
+ height="70.866142"
+ x="106.29921"
+ y="496.06299" />
+ </g>
+ <text
+ id="text10669-97"
+ y="99.655457"
+ x="248.47441"
+ style="font-style:normal;font-weight:normal;font-size:7.5px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="fill:#ff0000;fill-opacity:1"
+ y="99.655457"
+ x="248.47441"
+ id="tspan10671-25">2,1</tspan></text>
+ <g
+ id="g10679-89"
+ transform="translate(106.74213,-424.75393)">
+ <g
+ id="g10675-02">
+ <path
+ id="path10665-47"
+ d="m 134.64567,524.40945 14.17323,14.17323"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ id="path10667-65"
+ d="M 134.64567,538.58268 148.8189,524.40945"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ </g>
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#ff0000;stroke-width:0.88582677;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect10673-71"
+ width="70.866142"
+ height="70.866142"
+ x="106.29921"
+ y="496.06299" />
+ </g>
+ <text
+ id="text10669-3"
+ y="99.655457"
+ x="319.34055"
+ style="font-style:normal;font-weight:normal;font-size:7.5px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="fill:#ff0000;fill-opacity:1"
+ y="99.655457"
+ x="319.34055"
+ id="tspan10671-33">3,1</tspan></text>
+ <g
+ id="g10679-85"
+ transform="translate(177.60827,-424.75393)">
+ <g
+ id="g10675-10">
+ <path
+ id="path10665-87"
+ d="m 134.64567,524.40945 14.17323,14.17323"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ id="path10667-63"
+ d="M 134.64567,538.58268 148.8189,524.40945"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ </g>
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#ff0000;stroke-width:0.88582677;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect10673-5"
+ width="70.866142"
+ height="70.866142"
+ x="106.29921"
+ y="496.06299" />
+ </g>
+ <text
+ id="text10669-08"
+ y="28.789309"
+ x="319.34055"
+ style="font-style:normal;font-weight:normal;font-size:7.5px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="fill:#ff0000;fill-opacity:1"
+ y="28.789309"
+ x="319.34055"
+ id="tspan10671-04">3,2</tspan></text>
+ <g
+ id="g10679-11"
+ transform="translate(177.60827,-495.62007)">
+ <g
+ id="g10675-35">
+ <path
+ id="path10665-93"
+ d="m 134.64567,524.40945 14.17323,14.17323"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ id="path10667-41"
+ d="M 134.64567,538.58268 148.8189,524.40945"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ </g>
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#ff0000;stroke-width:0.88582677;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect10673-50"
+ width="70.866142"
+ height="70.866142"
+ x="106.29921"
+ y="496.06299" />
+ </g>
+ <text
+ id="text10669-8"
+ y="28.789309"
+ x="248.47441"
+ style="font-style:normal;font-weight:normal;font-size:7.5px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="fill:#ff0000;fill-opacity:1"
+ y="28.789309"
+ x="248.47441"
+ id="tspan10671-35">2,2</tspan></text>
+ <g
+ id="g10679-65"
+ transform="translate(106.74213,-495.62007)">
+ <g
+ id="g10675-99">
+ <path
+ id="path10665-07"
+ d="m 134.64567,524.40945 14.17323,14.17323"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ id="path10667-637"
+ d="M 134.64567,538.58268 148.8189,524.40945"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ </g>
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#ff0000;stroke-width:0.88582677;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect10673-61"
+ width="70.866142"
+ height="70.866142"
+ x="106.29921"
+ y="496.06299" />
+ </g>
+ <text
+ id="text10669-50"
+ y="28.789309"
+ x="177.60828"
+ style="font-style:normal;font-weight:normal;font-size:7.5px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="fill:#ff0000;fill-opacity:1"
+ y="28.789309"
+ x="177.60828"
+ id="tspan10671-65">1,2</tspan></text>
+ <g
+ id="g10679-08"
+ transform="translate(35.875992,-495.62007)">
+ <g
+ id="g10675-12">
+ <path
+ id="path10665-2"
+ d="m 134.64567,524.40945 14.17323,14.17323"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ id="path10667-69"
+ d="M 134.64567,538.58268 148.8189,524.40945"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ </g>
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#ff0000;stroke-width:0.88582677;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect10673-10"
+ width="70.866142"
+ height="70.866142"
+ x="106.29921"
+ y="496.06299" />
+ </g>
+ <text
+ id="text10669-42"
+ y="28.789309"
+ x="106.74213"
+ style="font-style:normal;font-weight:normal;font-size:7.5px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="fill:#ff0000;fill-opacity:1"
+ y="28.789309"
+ x="106.74213"
+ id="tspan10671-7">0,2</tspan></text>
+ <g
+ id="g10679-40"
+ transform="translate(-34.990149,-495.62007)">
+ <g
+ id="g10675-32">
+ <path
+ id="path10665-80"
+ d="m 134.64567,524.40945 14.17323,14.17323"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ id="path10667-37"
+ d="M 134.64567,538.58268 148.8189,524.40945"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ </g>
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#ff0000;stroke-width:0.88582677;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect10673-00"
+ width="70.866142"
+ height="70.866142"
+ x="106.29921"
+ y="496.06299" />
+ </g>
+ <text
+ id="text10669-34"
+ y="28.789309"
+ x="35.875999"
+ style="font-style:normal;font-weight:normal;font-size:7.5px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="fill:#ff0000;fill-opacity:1"
+ y="28.789309"
+ x="35.875999"
+ id="tspan10671-9">-1,2</tspan></text>
+ <g
+ id="g10679-27"
+ transform="translate(-105.8563,-495.62007)">
+ <g
+ id="g10675-42">
+ <path
+ id="path10665-5"
+ d="m 134.64567,524.40945 14.17323,14.17323"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ id="path10667-2"
+ d="M 134.64567,538.58268 148.8189,524.40945"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ </g>
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#ff0000;stroke-width:0.88582677;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect10673-44"
+ width="70.866142"
+ height="70.866142"
+ x="106.29921"
+ y="496.06299" />
+ </g>
+ <g
+ transform="translate(-34.990157,-371.60433)"
+ id="g10560">
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 85.039369,584.64567 237.401571,0"
+ id="path4262" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 88.582676,588.18898 0,-201.9685"
+ id="path4264" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 124.01575,588.18898 0,-7.08661"
+ id="path4266" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 159.44882,581.10237 0,7.08661"
+ id="path4268" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 194.88189,581.10237 0,7.08661"
+ id="path4270" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 230.31496,581.10237 0,7.08661"
+ id="path4272" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 265.74803,581.10237 0,7.08661"
+ id="path4274" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 301.1811,581.10237 0,7.08661"
+ id="path4276" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 85.039369,549.2126 7.086614,0"
+ id="path4278" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 85.039369,513.77953 7.086614,0"
+ id="path4280" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 85.039369,478.34646 7.086614,0"
+ id="path4282" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 85.039369,442.91339 7.086614,0"
+ id="path4284" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 85.039369,407.48032 7.086614,0"
+ id="path4286" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="124.0099"
+ y="597.04736"
+ id="text4288"><tspan
+ id="tspan4290"
+ x="124.0099"
+ y="597.04736"
+ style="font-size:10px;text-align:center;text-anchor:middle">0</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="159.44296"
+ y="597.04736"
+ id="text4288-6"><tspan
+ id="tspan4290-1"
+ x="159.44296"
+ y="597.04736"
+ style="font-size:10px;text-align:center;text-anchor:middle">1</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="194.87604"
+ y="597.04736"
+ id="text4288-3"><tspan
+ id="tspan4290-19"
+ x="194.87604"
+ y="597.04736"
+ style="font-size:10px;text-align:center;text-anchor:middle">2</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="230.3091"
+ y="597.04736"
+ id="text4288-4"><tspan
+ id="tspan4290-7"
+ x="230.3091"
+ y="597.04736"
+ style="font-size:10px;text-align:center;text-anchor:middle">3</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="265.74219"
+ y="597.04736"
+ id="text4288-8"><tspan
+ id="tspan4290-4"
+ x="265.74219"
+ y="597.04736"
+ style="font-size:10px;text-align:center;text-anchor:middle">4</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="301.17526"
+ y="597.04736"
+ id="text4288-5"><tspan
+ id="tspan4290-0"
+ x="301.17526"
+ y="597.04736"
+ style="font-size:10px;text-align:center;text-anchor:middle">5</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="77.918579"
+ y="552.75586"
+ id="text4358"><tspan
+ id="tspan4360"
+ x="77.918579"
+ y="552.75586"
+ style="font-size:10px">0</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="77.828247"
+ y="517.32281"
+ id="text4358-1"><tspan
+ id="tspan4360-0"
+ x="77.828247"
+ y="517.32281"
+ style="font-size:10px">1</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="78.050415"
+ y="481.88974"
+ id="text4358-6"><tspan
+ id="tspan4360-3"
+ x="78.050415"
+ y="481.88974"
+ style="font-size:10px">2</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="77.935669"
+ y="446.4567"
+ id="text4358-2"><tspan
+ id="tspan4360-06"
+ x="77.935669"
+ y="446.4567"
+ style="font-size:10px">3</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="77.952759"
+ y="411.02359"
+ id="text4358-15"><tspan
+ id="tspan4360-5"
+ x="77.952759"
+ y="411.02359"
+ style="font-size:10px">4</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="74.214966"
+ y="588.18896"
+ id="text4358-1-4"><tspan
+ id="tspan4360-0-7"
+ x="74.214966"
+ y="588.18896"
+ style="font-size:10px">-1</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="86.57682"
+ y="597.04736"
+ id="text4288-6-6"><tspan
+ id="tspan4290-1-5"
+ x="86.57682"
+ y="597.04736"
+ style="font-size:10px;text-align:center;text-anchor:middle">-1</tspan></text>
+ <rect
+ style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect4448"
+ width="14.173228"
+ height="7.0866141"
+ x="205.5118"
+ y="581.10229" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="210.9944"
+ y="586.64563"
+ id="text4450"><tspan
+ id="tspan4452"
+ x="210.9944"
+ y="586.64563"
+ style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10px;font-family:serif;-inkscape-font-specification:'serif Italic'">i</tspan></text>
+ <rect
+ style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect4457"
+ width="14.173228"
+ height="21.259821"
+ x="81.496063"
+ y="450.00003" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="86.978661"
+ y="462.62991"
+ id="text4450-6"><tspan
+ id="tspan4452-6"
+ x="86.978661"
+ y="462.62991"
+ style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10px;font-family:serif;-inkscape-font-specification:'serif Italic'">j</tspan></text>
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000012px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 67.322837,602.36222 255.118123,0"
+ id="path4262-6" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.99999994px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 70.86614,605.9055 0,-219.68504"
+ id="path4264-7" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 106.29921,605.90551 0,-7.08661"
+ id="path4266-5" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 141.73228,598.8189 0,7.08661"
+ id="path4268-3" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 177.16536,598.8189 0,7.08661"
+ id="path4270-5" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 212.59843,598.8189 0,7.08661"
+ id="path4272-6" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 248.0315,598.8189 0,7.08661"
+ id="path4274-2" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 283.46457,598.8189 0,7.08661"
+ id="path4276-9" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 67.322834,566.92913 7.086614,0"
+ id="path4278-1" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 67.322834,531.49606 7.086614,0"
+ id="path4280-2" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 67.322834,496.06299 7.086614,0"
+ id="path4282-7" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 67.322834,460.62992 7.086614,0"
+ id="path4284-0" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 67.322834,425.19685 7.086614,0"
+ id="path4286-9" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="106.29337"
+ y="614.76392"
+ id="text4288-36"><tspan
+ id="tspan4290-06"
+ x="106.29337"
+ y="614.76392"
+ style="font-size:10px;text-align:center;text-anchor:middle">0.0</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="141.72643"
+ y="614.76392"
+ id="text4288-6-2"><tspan
+ id="tspan4290-1-6"
+ x="141.72643"
+ y="614.76392"
+ style="font-size:10px;text-align:center;text-anchor:middle">1.0</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="177.15952"
+ y="614.76392"
+ id="text4288-3-1"><tspan
+ id="tspan4290-19-8"
+ x="177.15952"
+ y="614.76392"
+ style="font-size:10px;text-align:center;text-anchor:middle">2.0</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="212.59258"
+ y="614.76392"
+ id="text4288-4-7"><tspan
+ id="tspan4290-7-9"
+ x="212.59258"
+ y="614.76392"
+ style="font-size:10px;text-align:center;text-anchor:middle">3.0</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="248.02565"
+ y="614.76392"
+ id="text4288-8-2"><tspan
+ id="tspan4290-4-0"
+ x="248.02565"
+ y="614.76392"
+ style="font-size:10px;text-align:center;text-anchor:middle">4.0</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="283.45871"
+ y="614.76392"
+ id="text4288-5-2"><tspan
+ id="tspan4290-0-3"
+ x="283.45871"
+ y="614.76392"
+ style="font-size:10px;text-align:center;text-anchor:middle">5.0</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="49.572418"
+ y="570.47241"
+ id="text4358-7"><tspan
+ id="tspan4360-59"
+ x="49.572418"
+ y="570.47241"
+ style="font-size:10px">0.0</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="49.482086"
+ y="535.03937"
+ id="text4358-1-2"><tspan
+ id="tspan4360-0-2"
+ x="49.482086"
+ y="535.03937"
+ style="font-size:10px">1.0</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="49.704254"
+ y="499.60626"
+ id="text4358-6-8"><tspan
+ id="tspan4360-3-9"
+ x="49.704254"
+ y="499.60626"
+ style="font-size:10px">2.0</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="49.589508"
+ y="464.17322"
+ id="text4358-2-7"><tspan
+ id="tspan4360-06-3"
+ x="49.589508"
+ y="464.17322"
+ style="font-size:10px">3.0</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="49.606598"
+ y="428.74011"
+ id="text4358-15-6"><tspan
+ id="tspan4360-5-1"
+ x="49.606598"
+ y="428.74011"
+ style="font-size:10px">4.0</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="45.868805"
+ y="605.90552"
+ id="text4358-1-4-2"><tspan
+ id="tspan4360-0-7-9"
+ x="45.868805"
+ y="605.90552"
+ style="font-size:10px">-1.0</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="68.860283"
+ y="614.76379"
+ id="text4288-6-6-3"><tspan
+ id="tspan4290-1-5-1"
+ x="68.860283"
+ y="614.76379"
+ style="font-size:10px;text-align:center;text-anchor:middle">-1.0</tspan></text>
+ <rect
+ style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect4448-9"
+ width="14.173228"
+ height="7.0866141"
+ x="187.79527"
+ y="598.81885" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="192.56837"
+ y="605.42377"
+ id="text4450-4"><tspan
+ id="tspan4452-7"
+ x="192.56837"
+ y="605.42377"
+ style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10px;font-family:serif;-inkscape-font-specification:'serif Italic'">u</tspan></text>
+ <rect
+ style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect4457-8"
+ width="14.173228"
+ height="14.173228"
+ x="63.77953"
+ y="471.25983" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="68.197647"
+ y="480.34644"
+ id="text4450-6-4"><tspan
+ id="tspan4452-6-5"
+ x="68.197647"
+ y="480.34644"
+ style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10px;font-family:serif;-inkscape-font-specification:'serif Italic'">v</tspan></text>
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 67.322834,389.76378 7.086614,0"
+ id="path4286-9-0" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="49.606598"
+ y="393.30704"
+ id="text4358-15-6-3"><tspan
+ id="tspan4360-5-1-6"
+ x="49.606598"
+ y="393.30704"
+ style="font-size:10px">5.0</tspan></text>
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 318.89764,598.8189 0,7.08661"
+ id="path4276-9-1" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="318.89178"
+ y="614.76392"
+ id="text4288-5-2-0"><tspan
+ id="tspan4290-0-3-6"
+ x="318.89178"
+ y="614.76392"
+ style="font-size:10px;text-align:center;text-anchor:middle">6.0</tspan></text>
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#ff0000;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect5238"
+ width="70.866142"
+ height="35.433071"
+ x="88.58268"
+ y="531.49603" />
+ </g>
+</svg>
diff --git a/doc/specs/vulkan/images/chromasamples_420_xmidpoint_ymidpoint.svg b/doc/specs/vulkan/images/chromasamples_420_xmidpoint_ymidpoint.svg
new file mode 100644
index 0000000..13bede4
--- /dev/null
+++ b/doc/specs/vulkan/images/chromasamples_420_xmidpoint_ymidpoint.svg
@@ -0,0 +1,1539 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ width="100.25mm"
+ height="80.25mm"
+ viewBox="0 0 355.21653 284.35039"
+ id="svg2"
+ version="1.1">
+ <defs
+ id="defs4" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <rect
+ y="0.44292408"
+ x="0.44291192"
+ height="283.46457"
+ width="318.89764"
+ id="rect4690"
+ style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <g
+ transform="translate(-34.990159,-353.88779)"
+ id="g10498">
+ <rect
+ id="rect3338"
+ width="35.433071"
+ height="35.433071"
+ x="106.29921"
+ y="460.62991"
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ id="rect3338-3"
+ width="35.433071"
+ height="35.433071"
+ x="141.73228"
+ y="460.62991"
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ id="rect3338-6"
+ width="35.433071"
+ height="35.433071"
+ x="177.16534"
+ y="460.62991"
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ id="rect3338-7"
+ width="35.433071"
+ height="35.433071"
+ x="212.5984"
+ y="460.62991"
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ id="rect3338-5"
+ width="35.433071"
+ height="35.433071"
+ x="248.03148"
+ y="460.62991"
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ id="rect3338-35"
+ width="35.433071"
+ height="35.433071"
+ x="283.46457"
+ y="460.62991"
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ id="rect3338-62"
+ width="35.433071"
+ height="35.433071"
+ x="106.29921"
+ y="425.19687"
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ id="rect3338-3-9"
+ width="35.433071"
+ height="35.433071"
+ x="141.73228"
+ y="425.19687"
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ id="rect3338-6-1"
+ width="35.433071"
+ height="35.433071"
+ x="177.16534"
+ y="425.19687"
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ id="rect3338-7-2"
+ width="35.433071"
+ height="35.433071"
+ x="212.5984"
+ y="425.19687"
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ id="rect3338-5-7"
+ width="35.433071"
+ height="35.433071"
+ x="248.03148"
+ y="425.19687"
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ id="rect3338-35-0"
+ width="35.433071"
+ height="35.433071"
+ x="283.46457"
+ y="425.19687"
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ id="rect3338-9"
+ width="35.433071"
+ height="35.433071"
+ x="106.29921"
+ y="389.76376"
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ id="rect3338-3-3"
+ width="35.433071"
+ height="35.433071"
+ x="141.73228"
+ y="389.76376"
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ id="rect3338-6-6"
+ width="35.433071"
+ height="35.433071"
+ x="177.16534"
+ y="389.76376"
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ id="rect3338-7-0"
+ width="35.433071"
+ height="35.433071"
+ x="212.5984"
+ y="389.76376"
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ id="rect3338-5-6"
+ width="35.433071"
+ height="35.433071"
+ x="248.03148"
+ y="389.76376"
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ id="rect3338-35-2"
+ width="35.433071"
+ height="35.433071"
+ x="283.46457"
+ y="389.76376"
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ id="rect3338-61"
+ width="35.433071"
+ height="35.433071"
+ x="106.29921"
+ y="496.06296"
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ id="rect3338-3-8"
+ width="35.433071"
+ height="35.433071"
+ x="141.73228"
+ y="496.06296"
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ id="rect3338-6-7"
+ width="35.433071"
+ height="35.433071"
+ x="177.16534"
+ y="496.06296"
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ id="rect3338-7-9"
+ width="35.433071"
+ height="35.433071"
+ x="212.5984"
+ y="496.06296"
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ id="rect3338-5-2"
+ width="35.433071"
+ height="35.433071"
+ x="248.03148"
+ y="496.06296"
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ id="rect3338-35-02"
+ width="35.433071"
+ height="35.433071"
+ x="283.46457"
+ y="496.06296"
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ id="rect3338-37"
+ width="35.433071"
+ height="35.433071"
+ x="106.29921"
+ y="531.49603"
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ id="rect3338-3-5"
+ width="35.433071"
+ height="35.433071"
+ x="141.73228"
+ y="531.49603"
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ id="rect3338-6-9"
+ width="35.433071"
+ height="35.433071"
+ x="177.16534"
+ y="531.49603"
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ id="rect3338-7-22"
+ width="35.433071"
+ height="35.433071"
+ x="212.5984"
+ y="531.49603"
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ id="rect3338-5-8"
+ width="35.433071"
+ height="35.433071"
+ x="248.03148"
+ y="531.49603"
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ id="rect3338-35-9"
+ width="35.433071"
+ height="35.433071"
+ x="283.46457"
+ y="531.49603"
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <circle
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4477"
+ cx="124.01575"
+ cy="407.48032"
+ r="3.5433071" />
+ <circle
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4477-4"
+ cx="159.44881"
+ cy="407.48032"
+ r="3.5433071" />
+ <circle
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4477-0"
+ cx="194.88188"
+ cy="407.48032"
+ r="3.5433071" />
+ <circle
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4477-6"
+ cx="230.31496"
+ cy="407.48032"
+ r="3.5433071" />
+ <circle
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4477-2"
+ cx="265.74802"
+ cy="407.48032"
+ r="3.5433071" />
+ <circle
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4477-67"
+ cx="301.18109"
+ cy="407.48032"
+ r="3.5433071" />
+ <circle
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4477-5"
+ cx="124.01575"
+ cy="442.91342"
+ r="3.5433071" />
+ <circle
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4477-4-6"
+ cx="159.44881"
+ cy="442.91342"
+ r="3.5433071" />
+ <circle
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4477-0-9"
+ cx="194.88188"
+ cy="442.91342"
+ r="3.5433071" />
+ <circle
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4477-6-8"
+ cx="230.31496"
+ cy="442.91342"
+ r="3.5433071" />
+ <circle
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4477-2-7"
+ cx="265.74802"
+ cy="442.91342"
+ r="3.5433071" />
+ <circle
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4477-67-2"
+ cx="301.18109"
+ cy="442.91342"
+ r="3.5433071" />
+ <circle
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4477-8"
+ cx="124.01575"
+ cy="478.34644"
+ r="3.5433071" />
+ <circle
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4477-4-2"
+ cx="159.44881"
+ cy="478.34644"
+ r="3.5433071" />
+ <circle
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4477-0-99"
+ cx="194.88188"
+ cy="478.34644"
+ r="3.5433071" />
+ <circle
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4477-6-6"
+ cx="230.31496"
+ cy="478.34644"
+ r="3.5433071" />
+ <circle
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4477-2-0"
+ cx="265.74802"
+ cy="478.34644"
+ r="3.5433071" />
+ <circle
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4477-67-27"
+ cx="301.18109"
+ cy="478.34644"
+ r="3.5433071" />
+ <circle
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4477-61"
+ cx="124.01575"
+ cy="513.77948"
+ r="3.5433071" />
+ <circle
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4477-4-3"
+ cx="159.44881"
+ cy="513.77948"
+ r="3.5433071" />
+ <circle
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4477-0-2"
+ cx="194.88188"
+ cy="513.77948"
+ r="3.5433071" />
+ <circle
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4477-6-1"
+ cx="230.31496"
+ cy="513.77948"
+ r="3.5433071" />
+ <circle
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4477-2-5"
+ cx="265.74802"
+ cy="513.77948"
+ r="3.5433071" />
+ <circle
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4477-67-9"
+ cx="301.18109"
+ cy="513.77948"
+ r="3.5433071" />
+ <circle
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4477-9"
+ cx="124.01575"
+ cy="549.21259"
+ r="3.5433071" />
+ <circle
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4477-4-1"
+ cx="159.44881"
+ cy="549.21259"
+ r="3.5433071" />
+ <circle
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4477-0-4"
+ cx="194.88188"
+ cy="549.21259"
+ r="3.5433071" />
+ <circle
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4477-6-9"
+ cx="230.31496"
+ cy="549.21259"
+ r="3.5433071" />
+ <circle
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4477-2-1"
+ cx="265.74802"
+ cy="549.21259"
+ r="3.5433071" />
+ <circle
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4477-67-0"
+ cx="301.18109"
+ cy="549.21259"
+ r="3.5433071" />
+ </g>
+ <text
+ id="text10669"
+ y="170.52162"
+ x="106.74213"
+ style="font-style:normal;font-weight:normal;font-size:7.5px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="fill:#ff0000;fill-opacity:1"
+ y="170.52162"
+ x="106.74213"
+ id="tspan10671">0,0</tspan></text>
+ <g
+ transform="translate(-34.990159,-353.88779)"
+ id="g10679">
+ <g
+ id="g10675">
+ <path
+ id="path10665"
+ d="m 134.64567,524.40945 14.17323,14.17323"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ id="path10667"
+ d="M 134.64567,538.58268 148.8189,524.40945"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ </g>
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#ff0000;stroke-width:0.88582677;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect10673"
+ width="70.866142"
+ height="70.866142"
+ x="106.29921"
+ y="496.06299" />
+ </g>
+ <text
+ id="text10669-7"
+ y="170.52162"
+ x="177.60828"
+ style="font-style:normal;font-weight:normal;font-size:7.5px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="fill:#ff0000;fill-opacity:1"
+ y="170.52162"
+ x="177.60828"
+ id="tspan10671-8">1,0</tspan></text>
+ <g
+ id="g10679-7"
+ transform="translate(35.875986,-353.88779)">
+ <g
+ id="g10675-4">
+ <path
+ id="path10665-1"
+ d="m 134.64567,524.40945 14.17323,14.17323"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ id="path10667-9"
+ d="M 134.64567,538.58268 148.8189,524.40945"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ </g>
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#ff0000;stroke-width:0.88582677;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect10673-0"
+ width="70.866142"
+ height="70.866142"
+ x="106.29921"
+ y="496.06299" />
+ </g>
+ <text
+ id="text10669-9"
+ y="170.52162"
+ x="248.47441"
+ style="font-style:normal;font-weight:normal;font-size:7.5px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="fill:#ff0000;fill-opacity:1"
+ y="170.52162"
+ x="248.47441"
+ id="tspan10671-88">2,0</tspan></text>
+ <g
+ id="g10679-5"
+ transform="translate(106.74213,-353.88779)">
+ <g
+ id="g10675-8">
+ <path
+ id="path10665-4"
+ d="m 134.64567,524.40945 14.17323,14.17323"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ id="path10667-3"
+ d="M 134.64567,538.58268 148.8189,524.40945"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ </g>
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#ff0000;stroke-width:0.88582677;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect10673-7"
+ width="70.866142"
+ height="70.866142"
+ x="106.29921"
+ y="496.06299" />
+ </g>
+ <text
+ id="text10669-1"
+ y="170.52162"
+ x="35.875992"
+ style="font-style:normal;font-weight:normal;font-size:7.5px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="fill:#ff0000;fill-opacity:1"
+ y="170.52162"
+ x="35.875992"
+ id="tspan10671-3">-1,0</tspan></text>
+ <g
+ id="g10679-8"
+ transform="translate(-105.8563,-353.88779)">
+ <g
+ id="g10675-0">
+ <path
+ id="path10665-9"
+ d="m 134.64567,524.40945 14.17323,14.17323"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ id="path10667-7"
+ d="M 134.64567,538.58268 148.8189,524.40945"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ </g>
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#ff0000;stroke-width:0.88582677;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect10673-9"
+ width="70.866142"
+ height="70.866142"
+ x="106.29921"
+ y="496.06299" />
+ </g>
+ <text
+ id="text10669-93"
+ y="241.38777"
+ x="35.875992"
+ style="font-style:normal;font-weight:normal;font-size:7.5px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="fill:#ff0000;fill-opacity:1"
+ y="241.38777"
+ x="35.875992"
+ id="tspan10671-2">-1,-1</tspan></text>
+ <g
+ id="g10679-4"
+ transform="translate(-105.8563,-283.02165)">
+ <g
+ id="g10675-3">
+ <path
+ id="path10665-7"
+ d="m 134.64567,524.40945 14.17323,14.17323"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ id="path10667-1"
+ d="M 134.64567,538.58268 148.8189,524.40945"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ </g>
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#ff0000;stroke-width:0.88582677;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect10673-2"
+ width="70.866142"
+ height="70.866142"
+ x="106.29921"
+ y="496.06299" />
+ </g>
+ <text
+ id="text10669-2"
+ y="241.38777"
+ x="106.74213"
+ style="font-style:normal;font-weight:normal;font-size:7.5px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="fill:#ff0000;fill-opacity:1"
+ y="241.38777"
+ x="106.74213"
+ id="tspan10671-0">0,-1</tspan></text>
+ <g
+ id="g10679-2"
+ transform="translate(-34.990155,-283.02165)">
+ <g
+ id="g10675-1">
+ <path
+ id="path10665-75"
+ d="m 134.64567,524.40945 14.17323,14.17323"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ id="path10667-17"
+ d="M 134.64567,538.58268 148.8189,524.40945"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ </g>
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#ff0000;stroke-width:0.88582677;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect10673-4"
+ width="70.866142"
+ height="70.866142"
+ x="106.29921"
+ y="496.06299" />
+ </g>
+ <text
+ id="text10669-17"
+ y="241.38777"
+ x="177.60828"
+ style="font-style:normal;font-weight:normal;font-size:7.5px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="fill:#ff0000;fill-opacity:1"
+ y="241.38777"
+ x="177.60828"
+ id="tspan10671-1">1,-1</tspan></text>
+ <g
+ id="g10679-1"
+ transform="translate(35.875986,-283.02165)">
+ <g
+ id="g10675-17">
+ <path
+ id="path10665-0"
+ d="m 134.64567,524.40945 14.17323,14.17323"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ id="path10667-4"
+ d="M 134.64567,538.58268 148.8189,524.40945"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ </g>
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#ff0000;stroke-width:0.88582677;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect10673-08"
+ width="70.866142"
+ height="70.866142"
+ x="106.29921"
+ y="496.06299" />
+ </g>
+ <text
+ id="text10669-5"
+ y="241.38777"
+ x="248.47441"
+ style="font-style:normal;font-weight:normal;font-size:7.5px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="fill:#ff0000;fill-opacity:1"
+ y="241.38777"
+ x="248.47441"
+ id="tspan10671-16">2,-1</tspan></text>
+ <g
+ id="g10679-6"
+ transform="translate(106.74213,-283.02165)">
+ <g
+ id="g10675-2">
+ <path
+ id="path10665-19"
+ d="m 134.64567,524.40945 14.17323,14.17323"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ id="path10667-6"
+ d="M 134.64567,538.58268 148.8189,524.40945"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ </g>
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#ff0000;stroke-width:0.88582677;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect10673-48"
+ width="70.866142"
+ height="70.866142"
+ x="106.29921"
+ y="496.06299" />
+ </g>
+ <text
+ id="text10669-0"
+ y="241.38777"
+ x="319.34055"
+ style="font-style:normal;font-weight:normal;font-size:7.5px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="fill:#ff0000;fill-opacity:1"
+ y="241.38777"
+ x="319.34055"
+ id="tspan10671-81">3,-1</tspan></text>
+ <g
+ id="g10679-0"
+ transform="translate(177.60827,-283.02165)">
+ <g
+ id="g10675-22">
+ <path
+ id="path10665-97"
+ d="m 134.64567,524.40945 14.17323,14.17323"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ id="path10667-5"
+ d="M 134.64567,538.58268 148.8189,524.40945"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ </g>
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#ff0000;stroke-width:0.88582677;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect10673-6"
+ width="70.866142"
+ height="70.866142"
+ x="106.29921"
+ y="496.06299" />
+ </g>
+ <text
+ id="text10669-4"
+ y="170.52162"
+ x="319.34055"
+ style="font-style:normal;font-weight:normal;font-size:7.5px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="fill:#ff0000;fill-opacity:1"
+ y="170.52162"
+ x="319.34055"
+ id="tspan10671-6">3,0</tspan></text>
+ <g
+ id="g10679-3"
+ transform="translate(177.60827,-353.88779)">
+ <g
+ id="g10675-7">
+ <path
+ id="path10665-974"
+ d="m 134.64567,524.40945 14.17323,14.17323"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ id="path10667-91"
+ d="M 134.64567,538.58268 148.8189,524.40945"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ </g>
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#ff0000;stroke-width:0.88582677;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect10673-70"
+ width="70.866142"
+ height="70.866142"
+ x="106.29921"
+ y="496.06299" />
+ </g>
+ <text
+ id="text10669-6"
+ y="99.655479"
+ x="35.875992"
+ style="font-style:normal;font-weight:normal;font-size:7.5px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="fill:#ff0000;fill-opacity:1"
+ y="99.655479"
+ x="35.875992"
+ id="tspan10671-08">-1,1</tspan></text>
+ <g
+ id="g10679-53"
+ transform="translate(-105.8563,-424.75393)">
+ <g
+ id="g10675-9">
+ <path
+ id="path10665-41"
+ d="m 134.64567,524.40945 14.17323,14.17323"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ id="path10667-54"
+ d="M 134.64567,538.58268 148.8189,524.40945"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ </g>
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#ff0000;stroke-width:0.88582677;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect10673-1"
+ width="70.866142"
+ height="70.866142"
+ x="106.29921"
+ y="496.06299" />
+ </g>
+ <text
+ id="text10669-55"
+ y="99.655479"
+ x="106.74213"
+ style="font-style:normal;font-weight:normal;font-size:7.5px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="fill:#ff0000;fill-opacity:1"
+ y="99.655479"
+ x="106.74213"
+ id="tspan10671-4">0,1</tspan></text>
+ <g
+ id="g10679-9"
+ transform="translate(-34.990155,-424.75393)">
+ <g
+ id="g10675-83">
+ <path
+ id="path10665-8"
+ d="m 134.64567,524.40945 14.17323,14.17323"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ id="path10667-52"
+ d="M 134.64567,538.58268 148.8189,524.40945"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ </g>
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#ff0000;stroke-width:0.88582677;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect10673-22"
+ width="70.866142"
+ height="70.866142"
+ x="106.29921"
+ y="496.06299" />
+ </g>
+ <text
+ id="text10669-70"
+ y="99.655479"
+ x="177.60828"
+ style="font-style:normal;font-weight:normal;font-size:7.5px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="fill:#ff0000;fill-opacity:1"
+ y="99.655479"
+ x="177.60828"
+ id="tspan10671-34">1,1</tspan></text>
+ <g
+ id="g10679-63"
+ transform="translate(35.875986,-424.75393)">
+ <g
+ id="g10675-6">
+ <path
+ id="path10665-3"
+ d="m 134.64567,524.40945 14.17323,14.17323"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ id="path10667-34"
+ d="M 134.64567,538.58268 148.8189,524.40945"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ </g>
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#ff0000;stroke-width:0.88582677;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect10673-43"
+ width="70.866142"
+ height="70.866142"
+ x="106.29921"
+ y="496.06299" />
+ </g>
+ <text
+ id="text10669-97"
+ y="99.655479"
+ x="248.47441"
+ style="font-style:normal;font-weight:normal;font-size:7.5px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="fill:#ff0000;fill-opacity:1"
+ y="99.655479"
+ x="248.47441"
+ id="tspan10671-25">2,1</tspan></text>
+ <g
+ id="g10679-89"
+ transform="translate(106.74213,-424.75393)">
+ <g
+ id="g10675-02">
+ <path
+ id="path10665-47"
+ d="m 134.64567,524.40945 14.17323,14.17323"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ id="path10667-65"
+ d="M 134.64567,538.58268 148.8189,524.40945"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ </g>
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#ff0000;stroke-width:0.88582677;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect10673-71"
+ width="70.866142"
+ height="70.866142"
+ x="106.29921"
+ y="496.06299" />
+ </g>
+ <text
+ id="text10669-3"
+ y="99.655479"
+ x="319.34055"
+ style="font-style:normal;font-weight:normal;font-size:7.5px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="fill:#ff0000;fill-opacity:1"
+ y="99.655479"
+ x="319.34055"
+ id="tspan10671-33">3,1</tspan></text>
+ <g
+ id="g10679-85"
+ transform="translate(177.60827,-424.75393)">
+ <g
+ id="g10675-10">
+ <path
+ id="path10665-87"
+ d="m 134.64567,524.40945 14.17323,14.17323"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ id="path10667-63"
+ d="M 134.64567,538.58268 148.8189,524.40945"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ </g>
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#ff0000;stroke-width:0.88582677;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect10673-5"
+ width="70.866142"
+ height="70.866142"
+ x="106.29921"
+ y="496.06299" />
+ </g>
+ <text
+ id="text10669-08"
+ y="28.78933"
+ x="319.34055"
+ style="font-style:normal;font-weight:normal;font-size:7.5px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="fill:#ff0000;fill-opacity:1"
+ y="28.78933"
+ x="319.34055"
+ id="tspan10671-04">3,2</tspan></text>
+ <g
+ id="g10679-11"
+ transform="translate(177.60827,-495.62007)">
+ <g
+ id="g10675-35">
+ <path
+ id="path10665-93"
+ d="m 134.64567,524.40945 14.17323,14.17323"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ id="path10667-41"
+ d="M 134.64567,538.58268 148.8189,524.40945"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ </g>
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#ff0000;stroke-width:0.88582677;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect10673-50"
+ width="70.866142"
+ height="70.866142"
+ x="106.29921"
+ y="496.06299" />
+ </g>
+ <text
+ id="text10669-8"
+ y="28.78933"
+ x="248.47441"
+ style="font-style:normal;font-weight:normal;font-size:7.5px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="fill:#ff0000;fill-opacity:1"
+ y="28.78933"
+ x="248.47441"
+ id="tspan10671-35">2,2</tspan></text>
+ <g
+ id="g10679-65"
+ transform="translate(106.74213,-495.62007)">
+ <g
+ id="g10675-99">
+ <path
+ id="path10665-07"
+ d="m 134.64567,524.40945 14.17323,14.17323"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ id="path10667-637"
+ d="M 134.64567,538.58268 148.8189,524.40945"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ </g>
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#ff0000;stroke-width:0.88582677;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect10673-61"
+ width="70.866142"
+ height="70.866142"
+ x="106.29921"
+ y="496.06299" />
+ </g>
+ <text
+ id="text10669-50"
+ y="28.78933"
+ x="177.60828"
+ style="font-style:normal;font-weight:normal;font-size:7.5px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="fill:#ff0000;fill-opacity:1"
+ y="28.78933"
+ x="177.60828"
+ id="tspan10671-65">1,2</tspan></text>
+ <g
+ id="g10679-08"
+ transform="translate(35.875986,-495.62007)">
+ <g
+ id="g10675-12">
+ <path
+ id="path10665-2"
+ d="m 134.64567,524.40945 14.17323,14.17323"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ id="path10667-69"
+ d="M 134.64567,538.58268 148.8189,524.40945"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ </g>
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#ff0000;stroke-width:0.88582677;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect10673-10"
+ width="70.866142"
+ height="70.866142"
+ x="106.29921"
+ y="496.06299" />
+ </g>
+ <text
+ id="text10669-42"
+ y="28.78933"
+ x="106.74213"
+ style="font-style:normal;font-weight:normal;font-size:7.5px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="fill:#ff0000;fill-opacity:1"
+ y="28.78933"
+ x="106.74213"
+ id="tspan10671-7">0,2</tspan></text>
+ <g
+ id="g10679-40"
+ transform="translate(-34.990155,-495.62007)">
+ <g
+ id="g10675-32">
+ <path
+ id="path10665-80"
+ d="m 134.64567,524.40945 14.17323,14.17323"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ id="path10667-37"
+ d="M 134.64567,538.58268 148.8189,524.40945"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ </g>
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#ff0000;stroke-width:0.88582677;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect10673-00"
+ width="70.866142"
+ height="70.866142"
+ x="106.29921"
+ y="496.06299" />
+ </g>
+ <text
+ id="text10669-34"
+ y="28.78933"
+ x="35.875992"
+ style="font-style:normal;font-weight:normal;font-size:7.5px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="fill:#ff0000;fill-opacity:1"
+ y="28.78933"
+ x="35.875992"
+ id="tspan10671-9">-1,2</tspan></text>
+ <g
+ id="g10679-27"
+ transform="translate(-105.8563,-495.62007)">
+ <g
+ id="g10675-42">
+ <path
+ id="path10665-5"
+ d="m 134.64567,524.40945 14.17323,14.17323"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ id="path10667-2"
+ d="M 134.64567,538.58268 148.8189,524.40945"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ </g>
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#ff0000;stroke-width:0.88582677;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect10673-44"
+ width="70.866142"
+ height="70.866142"
+ x="106.29921"
+ y="496.06299" />
+ </g>
+ <g
+ transform="translate(-34.990159,-353.88779)"
+ id="g10560">
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 85.039369,584.64567 237.401571,0"
+ id="path4262" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 88.582676,588.18898 0,-201.9685"
+ id="path4264" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 124.01575,588.18898 0,-7.08661"
+ id="path4266" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 159.44882,581.10237 0,7.08661"
+ id="path4268" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 194.88189,581.10237 0,7.08661"
+ id="path4270" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 230.31496,581.10237 0,7.08661"
+ id="path4272" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 265.74803,581.10237 0,7.08661"
+ id="path4274" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 301.1811,581.10237 0,7.08661"
+ id="path4276" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 85.039369,549.2126 7.086614,0"
+ id="path4278" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 85.039369,513.77953 7.086614,0"
+ id="path4280" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 85.039369,478.34646 7.086614,0"
+ id="path4282" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 85.039369,442.91339 7.086614,0"
+ id="path4284" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 85.039369,407.48032 7.086614,0"
+ id="path4286" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="124.0099"
+ y="597.04736"
+ id="text4288"><tspan
+ id="tspan4290"
+ x="124.0099"
+ y="597.04736"
+ style="font-size:10px;text-align:center;text-anchor:middle">0</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="159.44296"
+ y="597.04736"
+ id="text4288-6"><tspan
+ id="tspan4290-1"
+ x="159.44296"
+ y="597.04736"
+ style="font-size:10px;text-align:center;text-anchor:middle">1</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="194.87604"
+ y="597.04736"
+ id="text4288-3"><tspan
+ id="tspan4290-19"
+ x="194.87604"
+ y="597.04736"
+ style="font-size:10px;text-align:center;text-anchor:middle">2</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="230.3091"
+ y="597.04736"
+ id="text4288-4"><tspan
+ id="tspan4290-7"
+ x="230.3091"
+ y="597.04736"
+ style="font-size:10px;text-align:center;text-anchor:middle">3</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="265.74219"
+ y="597.04736"
+ id="text4288-8"><tspan
+ id="tspan4290-4"
+ x="265.74219"
+ y="597.04736"
+ style="font-size:10px;text-align:center;text-anchor:middle">4</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="301.17526"
+ y="597.04736"
+ id="text4288-5"><tspan
+ id="tspan4290-0"
+ x="301.17526"
+ y="597.04736"
+ style="font-size:10px;text-align:center;text-anchor:middle">5</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="77.918579"
+ y="552.75586"
+ id="text4358"><tspan
+ id="tspan4360"
+ x="77.918579"
+ y="552.75586"
+ style="font-size:10px">0</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="77.828247"
+ y="517.32281"
+ id="text4358-1"><tspan
+ id="tspan4360-0"
+ x="77.828247"
+ y="517.32281"
+ style="font-size:10px">1</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="78.050415"
+ y="481.88974"
+ id="text4358-6"><tspan
+ id="tspan4360-3"
+ x="78.050415"
+ y="481.88974"
+ style="font-size:10px">2</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="77.935669"
+ y="446.4567"
+ id="text4358-2"><tspan
+ id="tspan4360-06"
+ x="77.935669"
+ y="446.4567"
+ style="font-size:10px">3</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="77.952759"
+ y="411.02359"
+ id="text4358-15"><tspan
+ id="tspan4360-5"
+ x="77.952759"
+ y="411.02359"
+ style="font-size:10px">4</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="74.214966"
+ y="588.18896"
+ id="text4358-1-4"><tspan
+ id="tspan4360-0-7"
+ x="74.214966"
+ y="588.18896"
+ style="font-size:10px">-1</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="86.57682"
+ y="597.04736"
+ id="text4288-6-6"><tspan
+ id="tspan4290-1-5"
+ x="86.57682"
+ y="597.04736"
+ style="font-size:10px;text-align:center;text-anchor:middle">-1</tspan></text>
+ <rect
+ style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect4448"
+ width="14.173228"
+ height="7.0866141"
+ x="205.5118"
+ y="581.10229" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="210.9944"
+ y="586.64563"
+ id="text4450"><tspan
+ id="tspan4452"
+ x="210.9944"
+ y="586.64563"
+ style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10px;font-family:serif;-inkscape-font-specification:'serif Italic'">i</tspan></text>
+ <rect
+ style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect4457"
+ width="14.173228"
+ height="21.259821"
+ x="81.496063"
+ y="450.00003" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="86.978661"
+ y="462.62991"
+ id="text4450-6"><tspan
+ id="tspan4452-6"
+ x="86.978661"
+ y="462.62991"
+ style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10px;font-family:serif;-inkscape-font-specification:'serif Italic'">j</tspan></text>
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000012px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 67.322837,602.36222 255.118123,0"
+ id="path4262-6" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.99999994px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 70.86614,605.9055 0,-219.68504"
+ id="path4264-7" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 106.29921,605.90551 0,-7.08661"
+ id="path4266-5" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 141.73228,598.8189 0,7.08661"
+ id="path4268-3" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 177.16536,598.8189 0,7.08661"
+ id="path4270-5" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 212.59843,598.8189 0,7.08661"
+ id="path4272-6" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 248.0315,598.8189 0,7.08661"
+ id="path4274-2" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 283.46457,598.8189 0,7.08661"
+ id="path4276-9" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 67.322834,566.92913 7.086614,0"
+ id="path4278-1" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 67.322834,531.49606 7.086614,0"
+ id="path4280-2" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 67.322834,496.06299 7.086614,0"
+ id="path4282-7" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 67.322834,460.62992 7.086614,0"
+ id="path4284-0" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 67.322834,425.19685 7.086614,0"
+ id="path4286-9" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="106.29337"
+ y="614.76392"
+ id="text4288-36"><tspan
+ id="tspan4290-06"
+ x="106.29337"
+ y="614.76392"
+ style="font-size:10px;text-align:center;text-anchor:middle">0.0</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="141.72643"
+ y="614.76392"
+ id="text4288-6-2"><tspan
+ id="tspan4290-1-6"
+ x="141.72643"
+ y="614.76392"
+ style="font-size:10px;text-align:center;text-anchor:middle">1.0</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="177.15952"
+ y="614.76392"
+ id="text4288-3-1"><tspan
+ id="tspan4290-19-8"
+ x="177.15952"
+ y="614.76392"
+ style="font-size:10px;text-align:center;text-anchor:middle">2.0</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="212.59258"
+ y="614.76392"
+ id="text4288-4-7"><tspan
+ id="tspan4290-7-9"
+ x="212.59258"
+ y="614.76392"
+ style="font-size:10px;text-align:center;text-anchor:middle">3.0</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="248.02565"
+ y="614.76392"
+ id="text4288-8-2"><tspan
+ id="tspan4290-4-0"
+ x="248.02565"
+ y="614.76392"
+ style="font-size:10px;text-align:center;text-anchor:middle">4.0</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="283.45871"
+ y="614.76392"
+ id="text4288-5-2"><tspan
+ id="tspan4290-0-3"
+ x="283.45871"
+ y="614.76392"
+ style="font-size:10px;text-align:center;text-anchor:middle">5.0</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="49.572418"
+ y="570.47241"
+ id="text4358-7"><tspan
+ id="tspan4360-59"
+ x="49.572418"
+ y="570.47241"
+ style="font-size:10px">0.0</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="49.482086"
+ y="535.03937"
+ id="text4358-1-2"><tspan
+ id="tspan4360-0-2"
+ x="49.482086"
+ y="535.03937"
+ style="font-size:10px">1.0</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="49.704254"
+ y="499.60626"
+ id="text4358-6-8"><tspan
+ id="tspan4360-3-9"
+ x="49.704254"
+ y="499.60626"
+ style="font-size:10px">2.0</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="49.589508"
+ y="464.17322"
+ id="text4358-2-7"><tspan
+ id="tspan4360-06-3"
+ x="49.589508"
+ y="464.17322"
+ style="font-size:10px">3.0</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="49.606598"
+ y="428.74011"
+ id="text4358-15-6"><tspan
+ id="tspan4360-5-1"
+ x="49.606598"
+ y="428.74011"
+ style="font-size:10px">4.0</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="45.868805"
+ y="605.90552"
+ id="text4358-1-4-2"><tspan
+ id="tspan4360-0-7-9"
+ x="45.868805"
+ y="605.90552"
+ style="font-size:10px">-1.0</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="68.860283"
+ y="614.76379"
+ id="text4288-6-6-3"><tspan
+ id="tspan4290-1-5-1"
+ x="68.860283"
+ y="614.76379"
+ style="font-size:10px;text-align:center;text-anchor:middle">-1.0</tspan></text>
+ <rect
+ style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect4448-9"
+ width="14.173228"
+ height="7.0866141"
+ x="187.79527"
+ y="598.81885" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="192.56837"
+ y="605.42377"
+ id="text4450-4"><tspan
+ id="tspan4452-7"
+ x="192.56837"
+ y="605.42377"
+ style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10px;font-family:serif;-inkscape-font-specification:'serif Italic'">u</tspan></text>
+ <rect
+ style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect4457-8"
+ width="14.173228"
+ height="14.173228"
+ x="63.77953"
+ y="471.25983" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="68.197647"
+ y="480.34644"
+ id="text4450-6-4"><tspan
+ id="tspan4452-6-5"
+ x="68.197647"
+ y="480.34644"
+ style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10px;font-family:serif;-inkscape-font-specification:'serif Italic'">v</tspan></text>
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 67.322834,389.76378 7.086614,0"
+ id="path4286-9-0" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="49.606598"
+ y="393.30704"
+ id="text4358-15-6-3"><tspan
+ id="tspan4360-5-1-6"
+ x="49.606598"
+ y="393.30704"
+ style="font-size:10px">5.0</tspan></text>
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 318.89764,598.8189 0,7.08661"
+ id="path4276-9-1" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="318.89178"
+ y="614.76392"
+ id="text4288-5-2-0"><tspan
+ id="tspan4290-0-3-6"
+ x="318.89178"
+ y="614.76392"
+ style="font-size:10px;text-align:center;text-anchor:middle">6.0</tspan></text>
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#ff0000;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect5238"
+ width="70.866142"
+ height="35.433071"
+ x="88.58268"
+ y="531.49603" />
+ </g>
+</svg>
diff --git a/doc/specs/vulkan/images/chromasamples_422_cosited.svg b/doc/specs/vulkan/images/chromasamples_422_cosited.svg
new file mode 100644
index 0000000..d95586e
--- /dev/null
+++ b/doc/specs/vulkan/images/chromasamples_422_cosited.svg
@@ -0,0 +1,1391 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ width="92.042mm"
+ height="70mm"
+ viewBox="0 0 326.13307 248.03149"
+ id="svg2"
+ version="1.1">
+ <defs
+ id="defs4" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <rect
+ y="0"
+ x="24.509056"
+ height="248.03149"
+ width="283.46457"
+ id="rect4690"
+ style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ y="88.582672"
+ x="59.942123"
+ height="35.433071"
+ width="35.433071"
+ id="rect3338" />
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ y="88.582672"
+ x="95.375198"
+ height="35.433071"
+ width="35.433071"
+ id="rect3338-3" />
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ y="88.582672"
+ x="130.80826"
+ height="35.433071"
+ width="35.433071"
+ id="rect3338-6" />
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ y="88.582672"
+ x="166.24132"
+ height="35.433071"
+ width="35.433071"
+ id="rect3338-7" />
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ y="88.582672"
+ x="201.67439"
+ height="35.433071"
+ width="35.433071"
+ id="rect3338-5" />
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ y="88.582672"
+ x="237.10748"
+ height="35.433071"
+ width="35.433071"
+ id="rect3338-35" />
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ y="53.149628"
+ x="59.942123"
+ height="35.433071"
+ width="35.433071"
+ id="rect3338-62" />
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ y="53.149628"
+ x="95.375198"
+ height="35.433071"
+ width="35.433071"
+ id="rect3338-3-9" />
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ y="53.149628"
+ x="130.80826"
+ height="35.433071"
+ width="35.433071"
+ id="rect3338-6-1" />
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ y="53.149628"
+ x="166.24132"
+ height="35.433071"
+ width="35.433071"
+ id="rect3338-7-2" />
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ y="53.149628"
+ x="201.67439"
+ height="35.433071"
+ width="35.433071"
+ id="rect3338-5-7" />
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ y="53.149628"
+ x="237.10748"
+ height="35.433071"
+ width="35.433071"
+ id="rect3338-35-0" />
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ y="17.716522"
+ x="59.942123"
+ height="35.433071"
+ width="35.433071"
+ id="rect3338-9" />
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ y="17.716522"
+ x="95.375198"
+ height="35.433071"
+ width="35.433071"
+ id="rect3338-3-3" />
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ y="17.716522"
+ x="130.80826"
+ height="35.433071"
+ width="35.433071"
+ id="rect3338-6-6" />
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ y="17.716522"
+ x="166.24132"
+ height="35.433071"
+ width="35.433071"
+ id="rect3338-7-0" />
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ y="17.716522"
+ x="201.67439"
+ height="35.433071"
+ width="35.433071"
+ id="rect3338-5-6" />
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ y="17.716522"
+ x="237.10748"
+ height="35.433071"
+ width="35.433071"
+ id="rect3338-35-2" />
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ y="124.01572"
+ x="59.942123"
+ height="35.433071"
+ width="35.433071"
+ id="rect3338-61" />
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ y="124.01572"
+ x="95.375198"
+ height="35.433071"
+ width="35.433071"
+ id="rect3338-3-8" />
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ y="124.01572"
+ x="130.80826"
+ height="35.433071"
+ width="35.433071"
+ id="rect3338-6-7" />
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ y="124.01572"
+ x="166.24132"
+ height="35.433071"
+ width="35.433071"
+ id="rect3338-7-9" />
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ y="124.01572"
+ x="201.67439"
+ height="35.433071"
+ width="35.433071"
+ id="rect3338-5-2" />
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ y="124.01572"
+ x="237.10748"
+ height="35.433071"
+ width="35.433071"
+ id="rect3338-35-02" />
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ y="159.44879"
+ x="59.942123"
+ height="35.433071"
+ width="35.433071"
+ id="rect3338-37" />
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ y="159.44879"
+ x="95.375198"
+ height="35.433071"
+ width="35.433071"
+ id="rect3338-3-5" />
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ y="159.44879"
+ x="130.80826"
+ height="35.433071"
+ width="35.433071"
+ id="rect3338-6-9" />
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ y="159.44879"
+ x="166.24132"
+ height="35.433071"
+ width="35.433071"
+ id="rect3338-7-22" />
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ y="159.44879"
+ x="201.67439"
+ height="35.433071"
+ width="35.433071"
+ id="rect3338-5-8" />
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ y="159.44879"
+ x="237.10748"
+ height="35.433071"
+ width="35.433071"
+ id="rect3338-35-9" />
+ <path
+ id="path4262"
+ d="m 38.682283,212.59843 237.401567,0"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ id="path4266"
+ d="m 77.658664,216.14174 0,-7.08661"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ id="path4268"
+ d="m 113.09173,209.05513 0,7.08661"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ id="path4270"
+ d="m 148.5248,209.05513 0,7.08661"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ id="path4272"
+ d="m 183.95787,209.05513 0,7.08661"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ id="path4274"
+ d="m 219.39094,209.05513 0,7.08661"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ id="path4276"
+ d="m 254.82401,209.05513 0,7.08661"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <text
+ id="text4288"
+ y="225.00012"
+ x="77.652817"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-size:10px;text-align:center;text-anchor:middle"
+ y="225.00012"
+ x="77.652817"
+ id="tspan4290">0</tspan></text>
+ <text
+ id="text4288-6"
+ y="225.00012"
+ x="113.08588"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-size:10px;text-align:center;text-anchor:middle"
+ y="225.00012"
+ x="113.08588"
+ id="tspan4290-1">1</tspan></text>
+ <text
+ id="text4288-3"
+ y="225.00012"
+ x="148.51895"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-size:10px;text-align:center;text-anchor:middle"
+ y="225.00012"
+ x="148.51895"
+ id="tspan4290-19">2</tspan></text>
+ <text
+ id="text4288-4"
+ y="225.00012"
+ x="183.95201"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-size:10px;text-align:center;text-anchor:middle"
+ y="225.00012"
+ x="183.95201"
+ id="tspan4290-7">3</tspan></text>
+ <text
+ id="text4288-8"
+ y="225.00012"
+ x="219.3851"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-size:10px;text-align:center;text-anchor:middle"
+ y="225.00012"
+ x="219.3851"
+ id="tspan4290-4">4</tspan></text>
+ <text
+ id="text4288-5"
+ y="225.00012"
+ x="254.81818"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-size:10px;text-align:center;text-anchor:middle"
+ y="225.00012"
+ x="254.81818"
+ id="tspan4290-0">5</tspan></text>
+ <text
+ id="text4358-1-4"
+ y="216.14172"
+ x="27.85788"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-size:10px"
+ y="216.14172"
+ x="27.85788"
+ id="tspan4360-0-7">-1</tspan></text>
+ <text
+ id="text4288-6-6"
+ y="225.00012"
+ x="40.219734"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-size:10px;text-align:center;text-anchor:middle"
+ y="225.00012"
+ x="40.219734"
+ id="tspan4290-1-5">-1</tspan></text>
+ <rect
+ y="209.05505"
+ x="159.15471"
+ height="7.0866141"
+ width="14.173228"
+ id="rect4448"
+ style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <text
+ id="text4450"
+ y="214.59839"
+ x="164.63731"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10px;font-family:serif;-inkscape-font-specification:'serif Italic'"
+ y="214.59839"
+ x="164.63731"
+ id="tspan4452">i</tspan></text>
+ <circle
+ r="3.5433071"
+ cy="35.433075"
+ cx="77.658661"
+ id="path4477"
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <circle
+ r="3.5433071"
+ cy="35.433075"
+ cx="113.09172"
+ id="path4477-4"
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <circle
+ r="3.5433071"
+ cy="35.433075"
+ cx="148.5248"
+ id="path4477-0"
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <circle
+ r="3.5433071"
+ cy="35.433075"
+ cx="183.95787"
+ id="path4477-6"
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <circle
+ r="3.5433071"
+ cy="35.433075"
+ cx="219.39093"
+ id="path4477-2"
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <circle
+ r="3.5433071"
+ cy="35.433075"
+ cx="254.82401"
+ id="path4477-67"
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <circle
+ r="3.5433071"
+ cy="70.86618"
+ cx="77.658661"
+ id="path4477-5"
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <circle
+ r="3.5433071"
+ cy="70.86618"
+ cx="113.09172"
+ id="path4477-4-6"
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <circle
+ r="3.5433071"
+ cy="70.86618"
+ cx="148.5248"
+ id="path4477-0-9"
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <circle
+ r="3.5433071"
+ cy="70.86618"
+ cx="183.95787"
+ id="path4477-6-8"
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <circle
+ r="3.5433071"
+ cy="70.86618"
+ cx="219.39093"
+ id="path4477-2-7"
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <circle
+ r="3.5433071"
+ cy="70.86618"
+ cx="254.82401"
+ id="path4477-67-2"
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <circle
+ r="3.5433071"
+ cy="106.29919"
+ cx="77.658661"
+ id="path4477-8"
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <circle
+ r="3.5433071"
+ cy="106.29919"
+ cx="113.09172"
+ id="path4477-4-2"
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <circle
+ r="3.5433071"
+ cy="106.29919"
+ cx="148.5248"
+ id="path4477-0-99"
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <circle
+ r="3.5433071"
+ cy="106.29919"
+ cx="183.95787"
+ id="path4477-6-6"
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <circle
+ r="3.5433071"
+ cy="106.29919"
+ cx="219.39093"
+ id="path4477-2-0"
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <circle
+ r="3.5433071"
+ cy="106.29919"
+ cx="254.82401"
+ id="path4477-67-27"
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <circle
+ r="3.5433071"
+ cy="141.73224"
+ cx="77.658661"
+ id="path4477-61"
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <circle
+ r="3.5433071"
+ cy="141.73224"
+ cx="113.09172"
+ id="path4477-4-3"
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <circle
+ r="3.5433071"
+ cy="141.73224"
+ cx="148.5248"
+ id="path4477-0-2"
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <circle
+ r="3.5433071"
+ cy="141.73224"
+ cx="183.95787"
+ id="path4477-6-1"
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <circle
+ r="3.5433071"
+ cy="141.73224"
+ cx="219.39093"
+ id="path4477-2-5"
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <circle
+ r="3.5433071"
+ cy="141.73224"
+ cx="254.82401"
+ id="path4477-67-9"
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <circle
+ r="3.5433071"
+ cy="177.16534"
+ cx="77.658661"
+ id="path4477-9"
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <circle
+ r="3.5433071"
+ cy="177.16534"
+ cx="113.09172"
+ id="path4477-4-1"
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <circle
+ r="3.5433071"
+ cy="177.16534"
+ cx="148.5248"
+ id="path4477-0-4"
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <circle
+ r="3.5433071"
+ cy="177.16534"
+ cx="183.95787"
+ id="path4477-6-9"
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <circle
+ r="3.5433071"
+ cy="177.16534"
+ cx="219.39093"
+ id="path4477-2-1"
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <circle
+ r="3.5433071"
+ cy="177.16534"
+ cx="254.82401"
+ id="path4477-67-0"
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ id="path4262-6"
+ d="m 20.965751,230.31498 255.118119,0"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000012px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ id="path4264-7"
+ d="m 24.509054,233.85826 0,-219.685041"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.99999994px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ id="path4266-5"
+ d="m 59.942124,233.85827 0,-7.08661"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ id="path4268-3"
+ d="m 95.375194,226.77166 0,7.08661"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ id="path4270-5"
+ d="m 130.80827,226.77166 0,7.08661"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ id="path4272-6"
+ d="m 166.24134,226.77166 0,7.08661"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ id="path4274-2"
+ d="m 201.67441,226.77166 0,7.08661"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ id="path4276-9"
+ d="m 237.10748,226.77166 0,7.08661"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ id="path4278-1"
+ d="m 20.965748,194.88189 7.086614,0"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ id="path4280-2"
+ d="m 20.965748,159.44882 7.086614,0"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ id="path4282-7"
+ d="m 20.965748,124.01575 7.086614,0"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ id="path4284-0"
+ d="m 20.965748,88.582679 7.086614,0"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ id="path4286-9"
+ d="m 20.965748,53.149609 7.086614,0"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <text
+ id="text4288-36"
+ y="242.71667"
+ x="59.936287"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-size:10px;text-align:center;text-anchor:middle"
+ y="242.71667"
+ x="59.936287"
+ id="tspan4290-06">0.0</tspan></text>
+ <text
+ id="text4288-6-2"
+ y="242.71667"
+ x="95.369339"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-size:10px;text-align:center;text-anchor:middle"
+ y="242.71667"
+ x="95.369339"
+ id="tspan4290-1-6">1.0</tspan></text>
+ <text
+ id="text4288-3-1"
+ y="242.71667"
+ x="130.80243"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-size:10px;text-align:center;text-anchor:middle"
+ y="242.71667"
+ x="130.80243"
+ id="tspan4290-19-8">2.0</tspan></text>
+ <text
+ id="text4288-4-7"
+ y="242.71667"
+ x="166.23549"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-size:10px;text-align:center;text-anchor:middle"
+ y="242.71667"
+ x="166.23549"
+ id="tspan4290-7-9">3.0</tspan></text>
+ <text
+ id="text4288-8-2"
+ y="242.71667"
+ x="201.66856"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-size:10px;text-align:center;text-anchor:middle"
+ y="242.71667"
+ x="201.66856"
+ id="tspan4290-4-0">4.0</tspan></text>
+ <text
+ id="text4288-5-2"
+ y="242.71667"
+ x="237.10162"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-size:10px;text-align:center;text-anchor:middle"
+ y="242.71667"
+ x="237.10162"
+ id="tspan4290-0-3">5.0</tspan></text>
+ <text
+ id="text4358-7"
+ y="198.42517"
+ x="3.215332"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-size:10px"
+ y="198.42517"
+ x="3.215332"
+ id="tspan4360-59">0.0</tspan></text>
+ <text
+ id="text4358-1-2"
+ y="162.99213"
+ x="3.125"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-size:10px"
+ y="162.99213"
+ x="3.125"
+ id="tspan4360-0-2">1.0</tspan></text>
+ <text
+ id="text4358-6-8"
+ y="127.55902"
+ x="3.347168"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-size:10px"
+ y="127.55902"
+ x="3.347168"
+ id="tspan4360-3-9">2.0</tspan></text>
+ <text
+ id="text4358-2-7"
+ y="92.125977"
+ x="3.2324219"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-size:10px"
+ y="92.125977"
+ x="3.2324219"
+ id="tspan4360-06-3">3.0</tspan></text>
+ <text
+ id="text4358-15-6"
+ y="56.692871"
+ x="3.2495117"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-size:10px"
+ y="56.692871"
+ x="3.2495117"
+ id="tspan4360-5-1">4.0</tspan></text>
+ <text
+ id="text4358-1-4-2"
+ y="233.85828"
+ x="-0.48828125"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-size:10px"
+ y="233.85828"
+ x="-0.48828125"
+ id="tspan4360-0-7-9">-1.0</tspan></text>
+ <text
+ id="text4288-6-6-3"
+ y="242.71655"
+ x="22.503197"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-size:10px;text-align:center;text-anchor:middle"
+ y="242.71655"
+ x="22.503197"
+ id="tspan4290-1-5-1">-1.0</tspan></text>
+ <rect
+ y="226.77161"
+ x="141.43819"
+ height="7.0866141"
+ width="14.173228"
+ id="rect4448-9"
+ style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <text
+ id="text4450-4"
+ y="233.37653"
+ x="146.21129"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10px;font-family:serif;-inkscape-font-specification:'serif Italic'"
+ y="233.37653"
+ x="146.21129"
+ id="tspan4452-7">u</tspan></text>
+ <rect
+ y="99.212585"
+ x="17.422443"
+ height="14.173228"
+ width="14.173228"
+ id="rect4457-8"
+ style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <text
+ id="text4450-6-4"
+ y="108.29919"
+ x="21.840561"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10px;font-family:serif;-inkscape-font-specification:'serif Italic'"
+ y="108.29919"
+ x="21.840561"
+ id="tspan4452-6-5">v</tspan></text>
+ <path
+ id="path4286-9-0"
+ d="m 20.965748,17.716539 7.086614,0"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <text
+ id="text4358-15-6-3"
+ y="21.259796"
+ x="3.2495117"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-size:10px"
+ y="21.259796"
+ x="3.2495117"
+ id="tspan4360-5-1-6">5.0</tspan></text>
+ <path
+ id="path4276-9-1"
+ d="m 272.54055,226.77166 0,7.08661"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <text
+ id="text4288-5-2-0"
+ y="242.71667"
+ x="272.5347"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-size:10px;text-align:center;text-anchor:middle"
+ y="242.71667"
+ x="272.5347"
+ id="tspan4290-0-3-6">6.0</tspan></text>
+ <rect
+ y="159.44879"
+ x="42.225594"
+ height="35.433071"
+ width="70.866142"
+ id="rect5238"
+ style="fill:none;fill-opacity:1;stroke:#ff0000;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ y="159.44879"
+ x="42.225594"
+ height="35.433071"
+ width="70.866142"
+ id="rect5569"
+ style="fill:none;fill-opacity:1;stroke:#ff0000;stroke-width:0.88582677;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ id="path5571"
+ d="m 70.572044,170.07874 14.17323,14.17323"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.88582677;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ id="path5573"
+ d="m 84.745274,170.07874 -14.17323,14.17323"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.88582677;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <text
+ id="text5575"
+ y="170.07874"
+ x="77.658661"
+ style="font-style:normal;font-weight:normal;font-size:7.5px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="fill:#ff0000;fill-opacity:1"
+ y="170.07874"
+ x="77.658661"
+ id="tspan5577">0,0</tspan></text>
+ <rect
+ y="159.44879"
+ x="113.09174"
+ height="35.433071"
+ width="70.866142"
+ id="rect5569-7"
+ style="fill:none;fill-opacity:1;stroke:#ff0000;stroke-width:0.88582677;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ id="path5571-7"
+ d="m 141.43818,170.07874 14.17323,14.17323"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.88582677;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ id="path5573-6"
+ d="m 155.61141,170.07874 -14.17323,14.17323"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.88582677;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <text
+ id="text5575-4"
+ y="170.07874"
+ x="148.5248"
+ style="font-style:normal;font-weight:normal;font-size:7.5px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="fill:#ff0000;fill-opacity:1"
+ y="170.07874"
+ x="148.5248"
+ id="tspan5577-3">1,0</tspan></text>
+ <rect
+ y="159.44879"
+ x="183.95787"
+ height="35.433071"
+ width="70.866142"
+ id="rect5569-0"
+ style="fill:none;fill-opacity:1;stroke:#ff0000;stroke-width:0.88582677;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ id="path5571-3"
+ d="m 212.30432,170.07874 14.17323,14.17323"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.88582677;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ id="path5573-0"
+ d="m 226.47755,170.07874 -14.17323,14.17323"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.88582677;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <text
+ id="text5575-9"
+ y="170.07874"
+ x="219.39093"
+ style="font-style:normal;font-weight:normal;font-size:7.5px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="fill:#ff0000;fill-opacity:1"
+ y="170.07874"
+ x="219.39093"
+ id="tspan5577-2">2,0</tspan></text>
+ <rect
+ y="159.44879"
+ x="254.82401"
+ height="35.433071"
+ width="70.866142"
+ id="rect5569-5"
+ style="fill:none;fill-opacity:1;stroke:#ff0000;stroke-width:0.88582677;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ id="path5571-4"
+ d="m 283.17046,170.07874 14.17323,14.17323"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.88582677;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ id="path5573-05"
+ d="m 297.34369,170.07874 -14.17323,14.17323"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.88582677;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <text
+ id="text5575-94"
+ y="170.07874"
+ x="290.25708"
+ style="font-style:normal;font-weight:normal;font-size:7.5px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="fill:#ff0000;fill-opacity:1"
+ y="170.07874"
+ x="290.25708"
+ id="tspan5577-6">3,0</tspan></text>
+ <rect
+ y="124.01572"
+ x="254.82401"
+ height="35.433071"
+ width="70.866142"
+ id="rect5569-9"
+ style="fill:none;fill-opacity:1;stroke:#ff0000;stroke-width:0.88582677;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ id="path5571-2"
+ d="m 283.17046,134.64567 14.17323,14.17323"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.88582677;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ id="path5573-2"
+ d="M 297.34369,134.64567 283.17046,148.8189"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.88582677;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <text
+ id="text5575-47"
+ y="134.64566"
+ x="290.25708"
+ style="font-style:normal;font-weight:normal;font-size:7.5px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="fill:#ff0000;fill-opacity:1"
+ y="134.64566"
+ x="290.25708"
+ id="tspan5577-7">3,1</tspan></text>
+ <rect
+ y="88.582642"
+ x="254.82401"
+ height="35.433071"
+ width="70.866142"
+ id="rect5569-54"
+ style="fill:none;fill-opacity:1;stroke:#ff0000;stroke-width:0.88582677;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ id="path5571-8"
+ d="m 283.17046,99.212599 14.17323,14.173231"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.88582677;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ id="path5573-1"
+ d="M 297.34369,99.212599 283.17046,113.38583"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.88582677;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <text
+ id="text5575-2"
+ y="99.212585"
+ x="290.25708"
+ style="font-style:normal;font-weight:normal;font-size:7.5px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="fill:#ff0000;fill-opacity:1"
+ y="99.212585"
+ x="290.25708"
+ id="tspan5577-8">3,2</tspan></text>
+ <rect
+ y="53.149567"
+ x="254.82401"
+ height="35.433071"
+ width="70.866142"
+ id="rect5569-93"
+ style="fill:none;fill-opacity:1;stroke:#ff0000;stroke-width:0.88582677;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ id="path5571-6"
+ d="m 283.17046,63.779529 14.17323,14.17323"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.88582677;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ id="path5573-8"
+ d="m 297.34369,63.779529 -14.17323,14.17323"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.88582677;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <text
+ id="text5575-0"
+ y="63.77951"
+ x="290.25708"
+ style="font-style:normal;font-weight:normal;font-size:7.5px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="fill:#ff0000;fill-opacity:1"
+ y="63.77951"
+ x="290.25708"
+ id="tspan5577-21">3,3</tspan></text>
+ <rect
+ y="17.716492"
+ x="254.82401"
+ height="35.433071"
+ width="70.866142"
+ id="rect5569-05"
+ style="fill:none;fill-opacity:1;stroke:#ff0000;stroke-width:0.88582677;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ id="path5571-1"
+ d="m 283.17046,28.346449 14.17323,14.17323"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.88582677;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ id="path5573-10"
+ d="m 297.34369,28.346449 -14.17323,14.17323"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.88582677;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <text
+ id="text5575-8"
+ y="28.346436"
+ x="290.25708"
+ style="font-style:normal;font-weight:normal;font-size:7.5px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="fill:#ff0000;fill-opacity:1"
+ y="28.346436"
+ x="290.25708"
+ id="tspan5577-5">3,4</tspan></text>
+ <rect
+ y="17.716492"
+ x="183.95787"
+ height="35.433071"
+ width="70.866142"
+ id="rect5569-06"
+ style="fill:none;fill-opacity:1;stroke:#ff0000;stroke-width:0.88582677;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ id="path5571-46"
+ d="m 212.30432,28.346449 14.17323,14.17323"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.88582677;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ id="path5573-25"
+ d="m 226.47755,28.346449 -14.17323,14.17323"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.88582677;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <text
+ id="text5575-86"
+ y="28.346436"
+ x="219.39093"
+ style="font-style:normal;font-weight:normal;font-size:7.5px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="fill:#ff0000;fill-opacity:1"
+ y="28.346436"
+ x="219.39093"
+ id="tspan5577-28">2,4</tspan></text>
+ <rect
+ y="53.149567"
+ x="183.95787"
+ height="35.433071"
+ width="70.866142"
+ id="rect5569-4"
+ style="fill:none;fill-opacity:1;stroke:#ff0000;stroke-width:0.88582677;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ id="path5571-72"
+ d="m 212.30432,63.779529 14.17323,14.17323"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.88582677;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ id="path5573-4"
+ d="m 226.47755,63.779529 -14.17323,14.17323"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.88582677;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <text
+ id="text5575-06"
+ y="63.77951"
+ x="219.39093"
+ style="font-style:normal;font-weight:normal;font-size:7.5px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="fill:#ff0000;fill-opacity:1"
+ y="63.77951"
+ x="219.39093"
+ id="tspan5577-29">2,3</tspan></text>
+ <rect
+ y="88.582642"
+ x="183.95787"
+ height="35.433071"
+ width="70.866142"
+ id="rect5569-90"
+ style="fill:none;fill-opacity:1;stroke:#ff0000;stroke-width:0.88582677;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ id="path5571-81"
+ d="m 212.30432,99.212599 14.17323,14.173231"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.88582677;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ id="path5573-3"
+ d="M 226.47755,99.212599 212.30432,113.38583"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.88582677;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <text
+ id="text5575-1"
+ y="99.212585"
+ x="219.39093"
+ style="font-style:normal;font-weight:normal;font-size:7.5px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="fill:#ff0000;fill-opacity:1"
+ y="99.212585"
+ x="219.39093"
+ id="tspan5577-1">2,2</tspan></text>
+ <rect
+ y="124.01572"
+ x="183.95787"
+ height="35.433071"
+ width="70.866142"
+ id="rect5569-03"
+ style="fill:none;fill-opacity:1;stroke:#ff0000;stroke-width:0.88582677;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ id="path5571-40"
+ d="m 212.30432,134.64567 14.17323,14.17323"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.88582677;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ id="path5573-39"
+ d="M 226.47755,134.64567 212.30432,148.8189"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.88582677;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <text
+ id="text5575-19"
+ y="134.64566"
+ x="219.39093"
+ style="font-style:normal;font-weight:normal;font-size:7.5px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="fill:#ff0000;fill-opacity:1"
+ y="134.64566"
+ x="219.39093"
+ id="tspan5577-69">2,1</tspan></text>
+ <rect
+ y="124.01572"
+ x="113.09174"
+ height="35.433071"
+ width="70.866142"
+ id="rect5569-3"
+ style="fill:none;fill-opacity:1;stroke:#ff0000;stroke-width:0.88582677;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ id="path5571-38"
+ d="m 141.43818,134.64567 14.17323,14.17323"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.88582677;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ id="path5573-056"
+ d="M 155.61141,134.64567 141.43818,148.8189"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.88582677;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <text
+ id="text5575-6"
+ y="134.64566"
+ x="148.5248"
+ style="font-style:normal;font-weight:normal;font-size:7.5px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="fill:#ff0000;fill-opacity:1"
+ y="134.64566"
+ x="148.5248"
+ id="tspan5577-4">1,1</tspan></text>
+ <rect
+ y="124.01572"
+ x="42.225594"
+ height="35.433071"
+ width="70.866142"
+ id="rect5569-00"
+ style="fill:none;fill-opacity:1;stroke:#ff0000;stroke-width:0.88582677;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ id="path5571-462"
+ d="m 70.572044,134.64567 14.17323,14.17323"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.88582677;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ id="path5573-67"
+ d="M 84.745274,134.64567 70.572044,148.8189"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.88582677;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <text
+ id="text5575-5"
+ y="134.64566"
+ x="77.658661"
+ style="font-style:normal;font-weight:normal;font-size:7.5px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="fill:#ff0000;fill-opacity:1"
+ y="134.64566"
+ x="77.658661"
+ id="tspan5577-698">0,1</tspan></text>
+ <rect
+ y="88.582642"
+ x="42.225594"
+ height="35.433071"
+ width="70.866142"
+ id="rect5569-72"
+ style="fill:none;fill-opacity:1;stroke:#ff0000;stroke-width:0.88582677;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ id="path5571-82"
+ d="m 70.572044,99.212599 14.17323,14.173231"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.88582677;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ id="path5573-9"
+ d="M 84.745274,99.212599 70.572044,113.38583"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.88582677;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <text
+ id="text5575-96"
+ y="99.212585"
+ x="77.658661"
+ style="font-style:normal;font-weight:normal;font-size:7.5px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="fill:#ff0000;fill-opacity:1"
+ y="99.212585"
+ x="77.658661"
+ id="tspan5577-0">0,2</tspan></text>
+ <rect
+ y="88.582642"
+ x="113.09174"
+ height="35.433071"
+ width="70.866142"
+ id="rect5569-2"
+ style="fill:none;fill-opacity:1;stroke:#ff0000;stroke-width:0.88582677;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ id="path5571-76"
+ d="m 141.43818,99.212599 14.17323,14.173231"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.88582677;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ id="path5573-13"
+ d="M 155.61141,99.212599 141.43818,113.38583"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.88582677;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <text
+ id="text5575-21"
+ y="99.212585"
+ x="148.5248"
+ style="font-style:normal;font-weight:normal;font-size:7.5px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="fill:#ff0000;fill-opacity:1"
+ y="99.212585"
+ x="148.5248"
+ id="tspan5577-59">1,2</tspan></text>
+ <rect
+ y="53.149567"
+ x="113.09174"
+ height="35.433071"
+ width="70.866142"
+ id="rect5569-91"
+ style="fill:none;fill-opacity:1;stroke:#ff0000;stroke-width:0.88582677;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ id="path5571-49"
+ d="m 141.43818,63.779529 14.17323,14.17323"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.88582677;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ id="path5573-107"
+ d="m 155.61141,63.779529 -14.17323,14.17323"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.88582677;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <text
+ id="text5575-58"
+ y="63.77951"
+ x="148.5248"
+ style="font-style:normal;font-weight:normal;font-size:7.5px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="fill:#ff0000;fill-opacity:1"
+ y="63.77951"
+ x="148.5248"
+ id="tspan5577-70">1,3</tspan></text>
+ <rect
+ y="53.149567"
+ x="42.225594"
+ height="35.433071"
+ width="70.866142"
+ id="rect5569-48"
+ style="fill:none;fill-opacity:1;stroke:#ff0000;stroke-width:0.88582677;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ id="path5571-0"
+ d="m 70.572044,63.779529 14.17323,14.17323"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.88582677;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ id="path5573-42"
+ d="m 84.745274,63.779529 -14.17323,14.17323"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.88582677;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <text
+ id="text5575-961"
+ y="63.77951"
+ x="77.658661"
+ style="font-style:normal;font-weight:normal;font-size:7.5px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="fill:#ff0000;fill-opacity:1"
+ y="63.77951"
+ x="77.658661"
+ id="tspan5577-04">0,3</tspan></text>
+ <rect
+ y="17.716492"
+ x="42.225594"
+ height="35.433071"
+ width="70.866142"
+ id="rect5569-22"
+ style="fill:none;fill-opacity:1;stroke:#ff0000;stroke-width:0.88582677;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ id="path5571-20"
+ d="m 70.572044,28.346449 14.17323,14.17323"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.88582677;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ id="path5573-5"
+ d="m 84.745274,28.346449 -14.17323,14.17323"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.88582677;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <text
+ id="text5575-52"
+ y="28.346436"
+ x="77.658661"
+ style="font-style:normal;font-weight:normal;font-size:7.5px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="fill:#ff0000;fill-opacity:1"
+ y="28.346436"
+ x="77.658661"
+ id="tspan5577-9">0,4</tspan></text>
+ <rect
+ y="17.716492"
+ x="113.09174"
+ height="35.433071"
+ width="70.866142"
+ id="rect5569-02"
+ style="fill:none;fill-opacity:1;stroke:#ff0000;stroke-width:0.88582677;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ id="path5571-83"
+ d="m 141.43818,28.346449 14.17323,14.17323"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.88582677;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ id="path5573-80"
+ d="m 155.61141,28.346449 -14.17323,14.17323"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.88582677;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <text
+ id="text5575-40"
+ y="28.346436"
+ x="148.5248"
+ style="font-style:normal;font-weight:normal;font-size:7.5px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="fill:#ff0000;fill-opacity:1"
+ y="28.346436"
+ x="148.5248"
+ id="tspan5577-91">1,4</tspan></text>
+ <path
+ id="path4264"
+ d="m 42.22559,216.14174 0,-201.968501"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ id="path4278"
+ d="m 38.682283,177.16536 7.086614,0"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ id="path4280"
+ d="m 38.682283,141.73229 7.086614,0"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ id="path4282"
+ d="m 38.682283,106.29922 7.086614,0"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ id="path4284"
+ d="m 38.682283,70.866149 7.086614,0"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ id="path4286"
+ d="m 38.682283,35.433079 7.086614,0"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <text
+ id="text4358"
+ y="180.70862"
+ x="31.561493"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-size:10px"
+ y="180.70862"
+ x="31.561493"
+ id="tspan4360">0</tspan></text>
+ <text
+ id="text4358-1"
+ y="145.27557"
+ x="31.471161"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-size:10px"
+ y="145.27557"
+ x="31.471161"
+ id="tspan4360-0">1</tspan></text>
+ <text
+ id="text4358-6"
+ y="109.8425"
+ x="31.693329"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-size:10px"
+ y="109.8425"
+ x="31.693329"
+ id="tspan4360-3">2</tspan></text>
+ <text
+ id="text4358-2"
+ y="74.409454"
+ x="31.578583"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-size:10px"
+ y="74.409454"
+ x="31.578583"
+ id="tspan4360-06">3</tspan></text>
+ <text
+ id="text4358-15"
+ y="38.976349"
+ x="31.595673"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-size:10px"
+ y="38.976349"
+ x="31.595673"
+ id="tspan4360-5">4</tspan></text>
+ <rect
+ y="77.952789"
+ x="35.138977"
+ height="21.259821"
+ width="14.173228"
+ id="rect4457"
+ style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <text
+ id="text4450-6"
+ y="90.582672"
+ x="40.621574"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10px;font-family:serif;-inkscape-font-specification:'serif Italic'"
+ y="90.582672"
+ x="40.621574"
+ id="tspan4452-6">j</tspan></text>
+</svg>
diff --git a/doc/specs/vulkan/images/chromasamples_422_midpoint.svg b/doc/specs/vulkan/images/chromasamples_422_midpoint.svg
new file mode 100644
index 0000000..a3886e2
--- /dev/null
+++ b/doc/specs/vulkan/images/chromasamples_422_midpoint.svg
@@ -0,0 +1,1516 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ width="100.25mm"
+ height="70mm"
+ viewBox="0 0 355.21653 248.03149"
+ id="svg2"
+ version="1.1">
+ <defs
+ id="defs4" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <rect
+ y="0"
+ x="35.87598"
+ height="248.03149"
+ width="283.46457"
+ id="rect4690"
+ style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ y="88.582672"
+ x="71.309052"
+ height="35.433071"
+ width="35.433071"
+ id="rect3338" />
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ y="88.582672"
+ x="106.74213"
+ height="35.433071"
+ width="35.433071"
+ id="rect3338-3" />
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ y="88.582672"
+ x="142.17519"
+ height="35.433071"
+ width="35.433071"
+ id="rect3338-6" />
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ y="88.582672"
+ x="177.60825"
+ height="35.433071"
+ width="35.433071"
+ id="rect3338-7" />
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ y="88.582672"
+ x="213.04132"
+ height="35.433071"
+ width="35.433071"
+ id="rect3338-5" />
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ y="88.582672"
+ x="248.47441"
+ height="35.433071"
+ width="35.433071"
+ id="rect3338-35" />
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ y="53.149628"
+ x="71.309052"
+ height="35.433071"
+ width="35.433071"
+ id="rect3338-62" />
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ y="53.149628"
+ x="106.74213"
+ height="35.433071"
+ width="35.433071"
+ id="rect3338-3-9" />
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ y="53.149628"
+ x="142.17519"
+ height="35.433071"
+ width="35.433071"
+ id="rect3338-6-1" />
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ y="53.149628"
+ x="177.60825"
+ height="35.433071"
+ width="35.433071"
+ id="rect3338-7-2" />
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ y="53.149628"
+ x="213.04132"
+ height="35.433071"
+ width="35.433071"
+ id="rect3338-5-7" />
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ y="53.149628"
+ x="248.47441"
+ height="35.433071"
+ width="35.433071"
+ id="rect3338-35-0" />
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ y="17.716522"
+ x="71.309052"
+ height="35.433071"
+ width="35.433071"
+ id="rect3338-9" />
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ y="17.716522"
+ x="106.74213"
+ height="35.433071"
+ width="35.433071"
+ id="rect3338-3-3" />
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ y="17.716522"
+ x="142.17519"
+ height="35.433071"
+ width="35.433071"
+ id="rect3338-6-6" />
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ y="17.716522"
+ x="177.60825"
+ height="35.433071"
+ width="35.433071"
+ id="rect3338-7-0" />
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ y="17.716522"
+ x="213.04132"
+ height="35.433071"
+ width="35.433071"
+ id="rect3338-5-6" />
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ y="17.716522"
+ x="248.47441"
+ height="35.433071"
+ width="35.433071"
+ id="rect3338-35-2" />
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ y="124.01572"
+ x="71.309052"
+ height="35.433071"
+ width="35.433071"
+ id="rect3338-61" />
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ y="124.01572"
+ x="106.74213"
+ height="35.433071"
+ width="35.433071"
+ id="rect3338-3-8" />
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ y="124.01572"
+ x="142.17519"
+ height="35.433071"
+ width="35.433071"
+ id="rect3338-6-7" />
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ y="124.01572"
+ x="177.60825"
+ height="35.433071"
+ width="35.433071"
+ id="rect3338-7-9" />
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ y="124.01572"
+ x="213.04132"
+ height="35.433071"
+ width="35.433071"
+ id="rect3338-5-2" />
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ y="124.01572"
+ x="248.47441"
+ height="35.433071"
+ width="35.433071"
+ id="rect3338-35-02" />
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ y="159.44879"
+ x="71.309052"
+ height="35.433071"
+ width="35.433071"
+ id="rect3338-37" />
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ y="159.44879"
+ x="106.74213"
+ height="35.433071"
+ width="35.433071"
+ id="rect3338-3-5" />
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ y="159.44879"
+ x="142.17519"
+ height="35.433071"
+ width="35.433071"
+ id="rect3338-6-9" />
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ y="159.44879"
+ x="177.60825"
+ height="35.433071"
+ width="35.433071"
+ id="rect3338-7-22" />
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ y="159.44879"
+ x="213.04132"
+ height="35.433071"
+ width="35.433071"
+ id="rect3338-5-8" />
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#808080;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ y="159.44879"
+ x="248.47441"
+ height="35.433071"
+ width="35.433071"
+ id="rect3338-35-9" />
+ <path
+ id="path4262"
+ d="m 50.049207,212.59843 237.401573,0"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ id="path4266"
+ d="m 89.025588,216.14174 0,-7.08661"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ id="path4268"
+ d="m 124.45866,209.05513 0,7.08661"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ id="path4270"
+ d="m 159.89173,209.05513 0,7.08661"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ id="path4272"
+ d="m 195.3248,209.05513 0,7.08661"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ id="path4274"
+ d="m 230.75787,209.05513 0,7.08661"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ id="path4276"
+ d="m 266.19094,209.05513 0,7.08661"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <text
+ id="text4288"
+ y="225.00012"
+ x="89.019745"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-size:10px;text-align:center;text-anchor:middle"
+ y="225.00012"
+ x="89.019745"
+ id="tspan4290">0</tspan></text>
+ <text
+ id="text4288-6"
+ y="225.00012"
+ x="124.4528"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-size:10px;text-align:center;text-anchor:middle"
+ y="225.00012"
+ x="124.4528"
+ id="tspan4290-1">1</tspan></text>
+ <text
+ id="text4288-3"
+ y="225.00012"
+ x="159.88588"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-size:10px;text-align:center;text-anchor:middle"
+ y="225.00012"
+ x="159.88588"
+ id="tspan4290-19">2</tspan></text>
+ <text
+ id="text4288-4"
+ y="225.00012"
+ x="195.31894"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-size:10px;text-align:center;text-anchor:middle"
+ y="225.00012"
+ x="195.31894"
+ id="tspan4290-7">3</tspan></text>
+ <text
+ id="text4288-8"
+ y="225.00012"
+ x="230.75203"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-size:10px;text-align:center;text-anchor:middle"
+ y="225.00012"
+ x="230.75203"
+ id="tspan4290-4">4</tspan></text>
+ <text
+ id="text4288-5"
+ y="225.00012"
+ x="266.18509"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-size:10px;text-align:center;text-anchor:middle"
+ y="225.00012"
+ x="266.18509"
+ id="tspan4290-0">5</tspan></text>
+ <text
+ id="text4358-1-4"
+ y="216.14172"
+ x="39.224804"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-size:10px"
+ y="216.14172"
+ x="39.224804"
+ id="tspan4360-0-7">-1</tspan></text>
+ <text
+ id="text4288-6-6"
+ y="225.00012"
+ x="51.586658"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-size:10px;text-align:center;text-anchor:middle"
+ y="225.00012"
+ x="51.586658"
+ id="tspan4290-1-5">-1</tspan></text>
+ <rect
+ y="209.05505"
+ x="170.52164"
+ height="7.0866141"
+ width="14.173228"
+ id="rect4448"
+ style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <text
+ id="text4450"
+ y="214.59839"
+ x="176.00424"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10px;font-family:serif;-inkscape-font-specification:'serif Italic'"
+ y="214.59839"
+ x="176.00424"
+ id="tspan4452">i</tspan></text>
+ <rect
+ y="77.952789"
+ x="46.505901"
+ height="21.259821"
+ width="14.173228"
+ id="rect4457"
+ style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <circle
+ r="3.5433071"
+ cy="35.433075"
+ cx="89.025589"
+ id="path4477"
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <circle
+ r="3.5433071"
+ cy="35.433075"
+ cx="124.45865"
+ id="path4477-4"
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <circle
+ r="3.5433071"
+ cy="35.433075"
+ cx="159.89172"
+ id="path4477-0"
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <circle
+ r="3.5433071"
+ cy="35.433075"
+ cx="195.3248"
+ id="path4477-6"
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <circle
+ r="3.5433071"
+ cy="35.433075"
+ cx="230.75786"
+ id="path4477-2"
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <circle
+ r="3.5433071"
+ cy="35.433075"
+ cx="266.19092"
+ id="path4477-67"
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <circle
+ r="3.5433071"
+ cy="70.86618"
+ cx="89.025589"
+ id="path4477-5"
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <circle
+ r="3.5433071"
+ cy="70.86618"
+ cx="124.45865"
+ id="path4477-4-6"
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <circle
+ r="3.5433071"
+ cy="70.86618"
+ cx="159.89172"
+ id="path4477-0-9"
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <circle
+ r="3.5433071"
+ cy="70.86618"
+ cx="195.3248"
+ id="path4477-6-8"
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <circle
+ r="3.5433071"
+ cy="70.86618"
+ cx="230.75786"
+ id="path4477-2-7"
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <circle
+ r="3.5433071"
+ cy="70.86618"
+ cx="266.19092"
+ id="path4477-67-2"
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <circle
+ r="3.5433071"
+ cy="106.29919"
+ cx="89.025589"
+ id="path4477-8"
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <circle
+ r="3.5433071"
+ cy="106.29919"
+ cx="124.45865"
+ id="path4477-4-2"
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <circle
+ r="3.5433071"
+ cy="106.29919"
+ cx="159.89172"
+ id="path4477-0-99"
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <circle
+ r="3.5433071"
+ cy="106.29919"
+ cx="195.3248"
+ id="path4477-6-6"
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <circle
+ r="3.5433071"
+ cy="106.29919"
+ cx="230.75786"
+ id="path4477-2-0"
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <circle
+ r="3.5433071"
+ cy="106.29919"
+ cx="266.19092"
+ id="path4477-67-27"
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <circle
+ r="3.5433071"
+ cy="141.73224"
+ cx="89.025589"
+ id="path4477-61"
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <circle
+ r="3.5433071"
+ cy="141.73224"
+ cx="124.45865"
+ id="path4477-4-3"
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <circle
+ r="3.5433071"
+ cy="141.73224"
+ cx="159.89172"
+ id="path4477-0-2"
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <circle
+ r="3.5433071"
+ cy="141.73224"
+ cx="195.3248"
+ id="path4477-6-1"
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <circle
+ r="3.5433071"
+ cy="141.73224"
+ cx="230.75786"
+ id="path4477-2-5"
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <circle
+ r="3.5433071"
+ cy="141.73224"
+ cx="266.19092"
+ id="path4477-67-9"
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <circle
+ r="3.5433071"
+ cy="177.16534"
+ cx="89.025589"
+ id="path4477-9"
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <circle
+ r="3.5433071"
+ cy="177.16534"
+ cx="124.45865"
+ id="path4477-4-1"
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <circle
+ r="3.5433071"
+ cy="177.16534"
+ cx="159.89172"
+ id="path4477-0-4"
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <circle
+ r="3.5433071"
+ cy="177.16534"
+ cx="195.3248"
+ id="path4477-6-9"
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <circle
+ r="3.5433071"
+ cy="177.16534"
+ cx="230.75786"
+ id="path4477-2-1"
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <circle
+ r="3.5433071"
+ cy="177.16534"
+ cx="266.19092"
+ id="path4477-67-0"
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ id="path4262-6"
+ d="m 32.332675,230.31498 255.118125,0"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000012px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ id="path4266-5"
+ d="m 71.309048,233.85827 0,-7.08661"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ id="path4268-3"
+ d="m 106.74212,226.77166 0,7.08661"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ id="path4270-5"
+ d="m 142.1752,226.77166 0,7.08661"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ id="path4272-6"
+ d="m 177.60827,226.77166 0,7.08661"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ id="path4274-2"
+ d="m 213.04134,226.77166 0,7.08661"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ id="path4276-9"
+ d="m 248.47441,226.77166 0,7.08661"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <text
+ id="text4288-36"
+ y="242.71667"
+ x="71.303215"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-size:10px;text-align:center;text-anchor:middle"
+ y="242.71667"
+ x="71.303215"
+ id="tspan4290-06">0.0</tspan></text>
+ <text
+ id="text4288-6-2"
+ y="242.71667"
+ x="106.73627"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-size:10px;text-align:center;text-anchor:middle"
+ y="242.71667"
+ x="106.73627"
+ id="tspan4290-1-6">1.0</tspan></text>
+ <text
+ id="text4288-3-1"
+ y="242.71667"
+ x="142.16936"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-size:10px;text-align:center;text-anchor:middle"
+ y="242.71667"
+ x="142.16936"
+ id="tspan4290-19-8">2.0</tspan></text>
+ <text
+ id="text4288-4-7"
+ y="242.71667"
+ x="177.60242"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-size:10px;text-align:center;text-anchor:middle"
+ y="242.71667"
+ x="177.60242"
+ id="tspan4290-7-9">3.0</tspan></text>
+ <text
+ id="text4288-8-2"
+ y="242.71667"
+ x="213.03549"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-size:10px;text-align:center;text-anchor:middle"
+ y="242.71667"
+ x="213.03549"
+ id="tspan4290-4-0">4.0</tspan></text>
+ <text
+ id="text4288-5-2"
+ y="242.71667"
+ x="248.46855"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-size:10px;text-align:center;text-anchor:middle"
+ y="242.71667"
+ x="248.46855"
+ id="tspan4290-0-3">5.0</tspan></text>
+ <text
+ id="text4358-1-4-2"
+ y="233.85828"
+ x="10.878643"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-size:10px"
+ y="233.85828"
+ x="10.878643"
+ id="tspan4360-0-7-9">-1.0</tspan></text>
+ <text
+ id="text4288-6-6-3"
+ y="242.71655"
+ x="33.870121"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-size:10px;text-align:center;text-anchor:middle"
+ y="242.71655"
+ x="33.870121"
+ id="tspan4290-1-5-1">-1.0</tspan></text>
+ <rect
+ y="226.77161"
+ x="152.80511"
+ height="7.0866141"
+ width="14.173228"
+ id="rect4448-9"
+ style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.77165353;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <text
+ id="text4450-4"
+ y="233.37653"
+ x="157.57822"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:10px;font-family:serif;-inkscape-font-specification:'serif Italic'"
+ y="233.37653"
+ x="157.57822"
+ id="tspan4452-7">u</tspan></text>
+ <path
+ id="path4276-9-1"
+ d="m 283.90748,226.77166 0,7.08661"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <text
+ id="text4288-5-2-0"
+ y="242.71667"
+ x="283.90161"
+ style="font-style:normal;font-weight:normal;font-size:5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-size:10px;text-align:center;text-anchor:middle"
+ y="242.71667"
+ x="283.90161"
+ id="tspan4290-0-3-6">6.0</tspan></text>
+ <rect
+ y="159.44879"
+ x="53.592518"
+ height="35.433071"
+ width="70.866142"
+ id="rect5238"
+ style="fill:none;fill-opacity:1;stroke:#ff0000;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ id="path6740"
+ d="m 99.655508,170.07874 14.173232,14.17323"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.88582677;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ id="path6742"
+ d="M 99.655508,184.25197 113.82874,170.07874"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.88582677;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <text
+ id="text6744"
+ y="170.07874"
+ x="106.74213"
+ style="font-style:normal;font-weight:normal;font-size:7.5px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="fill:#ff0000;fill-opacity:1"
+ y="170.07874"
+ x="106.74213"
+ id="tspan6746">0,0</tspan></text>
+ <rect
+ y="159.44879"
+ x="71.309059"
+ height="35.433071"
+ width="70.866142"
+ id="rect6748"
+ style="fill:none;fill-opacity:1;stroke:#ff0000;stroke-width:0.88582677;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ id="path6740-9"
+ d="m 28.789362,170.07874 14.17323,14.17323"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.88582677;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ id="path6742-6"
+ d="m 28.789362,184.25197 14.17323,-14.17323"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.88582677;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <text
+ id="text6744-2"
+ y="170.07874"
+ x="35.87598"
+ style="font-style:normal;font-weight:normal;font-size:7.5px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="fill:#ff0000;fill-opacity:1"
+ y="170.07874"
+ x="35.87598"
+ id="tspan6746-5">-1,0</tspan></text>
+ <rect
+ y="159.44879"
+ x="0.44291338"
+ height="35.433071"
+ width="70.866142"
+ id="rect6748-4"
+ style="fill:none;fill-opacity:1;stroke:#ff0000;stroke-width:0.88582677;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ id="path6740-4"
+ d="m 170.52165,170.07874 14.17323,14.17323"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.88582677;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ id="path6742-9"
+ d="m 170.52165,184.25197 14.17323,-14.17323"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.88582677;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <text
+ id="text6744-9"
+ y="170.07874"
+ x="177.60826"
+ style="font-style:normal;font-weight:normal;font-size:7.5px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="fill:#ff0000;fill-opacity:1"
+ y="170.07874"
+ x="177.60826"
+ id="tspan6746-3">1,0</tspan></text>
+ <rect
+ y="159.44879"
+ x="142.1752"
+ height="35.433071"
+ width="70.866142"
+ id="rect6748-6"
+ style="fill:none;fill-opacity:1;stroke:#ff0000;stroke-width:0.88582677;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ id="path6740-0"
+ d="m 241.38779,170.07874 14.17323,14.17323"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.88582677;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ id="path6742-5"
+ d="m 241.38779,184.25197 14.17323,-14.17323"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.88582677;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <text
+ id="text6744-0"
+ y="170.07874"
+ x="248.47441"
+ style="font-style:normal;font-weight:normal;font-size:7.5px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="fill:#ff0000;fill-opacity:1"
+ y="170.07874"
+ x="248.47441"
+ id="tspan6746-2">2,0</tspan></text>
+ <rect
+ y="159.44879"
+ x="213.04134"
+ height="35.433071"
+ width="70.866142"
+ id="rect6748-9"
+ style="fill:none;fill-opacity:1;stroke:#ff0000;stroke-width:0.88582677;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ id="path6740-43"
+ d="m 312.25393,170.07874 14.17323,14.17323"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.88582677;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ id="path6742-51"
+ d="m 312.25393,184.25197 14.17323,-14.17323"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.88582677;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <text
+ id="text6744-7"
+ y="170.07874"
+ x="319.34055"
+ style="font-style:normal;font-weight:normal;font-size:7.5px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="fill:#ff0000;fill-opacity:1"
+ y="170.07874"
+ x="319.34055"
+ id="tspan6746-4">3,0</tspan></text>
+ <rect
+ y="159.44879"
+ x="283.90747"
+ height="35.433071"
+ width="70.866142"
+ id="rect6748-3"
+ style="fill:none;fill-opacity:1;stroke:#ff0000;stroke-width:0.88582677;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ id="path6740-1"
+ d="M 99.655508,134.64567 113.82874,148.8189"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.88582677;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ id="path6742-4"
+ d="M 99.655508,148.8189 113.82874,134.64567"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.88582677;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <text
+ id="text6744-6"
+ y="134.64566"
+ x="106.74213"
+ style="font-style:normal;font-weight:normal;font-size:7.5px;line-height:125%;font-family:sans-serif;text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="fill:#ff0000;fill-opacity:1"
+ y="134.64566"
+ x="106.74213"
+ id="tspan6746-9">0,1</tspan></text>
+ <rect
+ y="124.01572"
+ x="71.309059"
+ height="35.433071"
+ width="70.866142"
+ id="rect6748-42"
+ style="fill:none;fill-opacity:1;stroke:#ff0000;stroke-width:0.88582677;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ id="path6740-9-2"
+ d="m 28.789362,134.64567 14.17323,14.17323"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.88582677;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ id="path6742-6-6"
+ d="m 28.789362,148.8189 14.17323,-14.17323"
+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.88582677;stroke-linecap:butt;stroke-linejoin:miter;stroke-mite