zink: add feature-documentation

This adds some documentation for the current feature-set in Zink,
explaining what extensions are currently needed for what functionality.

Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7116>
This commit is contained in:
Erik Faye-Lund
2020-10-13 18:09:05 +02:00
committed by Marge Bot
parent f85488ab82
commit d50e8554b9

View File

@@ -8,6 +8,55 @@ The Zink driver is a Gallium driver that emits Vulkan API calls instead
of targeting a specific GPU architecture. This can be used to get full
desktop OpenGL support on devices that only support Vulkan.
Features
--------
The feature-level of Zink depends on two things; what's implemented in Zink,
as well as the features of the Vulkan driver.
OpenGL 2.1
^^^^^^^^^^
OpenGL 2.1 is the minimum version Zink can support, and will always be
exposed, given Vulkan support. There's a few features that are required
for correct behavior, but not all of these are validated; instead you'll
see rendering-issues and likely validation error, or even crashes.
Here's a list of those requirements:
* Vulkan 1.0
* ``VkPhysicalDeviceFeatures``:
* ``logicOp``
* ``fillModeNonSolid``
* ``wideLines``
* ``largePoints``
* ``alphaToOne``
* ``shaderClipDistance``
* ``VkPhysicalDeviceLimits``:
* ``maxClipDistances`` ≥ 6
* Instance extensions:
* `VK_KHR_get_physical_device_properties2`_
* `VK_KHR_external_memory_capabilities`_
* Device extensions:
* `VK_KHR_maintenance1`_
* `VK_KHR_external_memory`_
OpenGL 3.0
^^^^^^^^^^
For OpenGL 3.0 support, the following additional device extensions are
required to be exposed and fully supported:
* `VK_EXT_transform_feedback`_
* `VK_EXT_conditional_rendering`_
Debugging
---------
@@ -43,3 +92,11 @@ In order to make things a bit easier to follow, we have decided to create our
own IRC channel. If you're interested in contributing, or have any technical
questions, don't hesitate to visit `#zink on FreeNode
<irc://irc.freenode.net/zink>`_ and say hi!
.. _VK_KHR_get_physical_device_properties2: https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VK_KHR_get_physical_device_properties2.html
.. _VK_KHR_external_memory_capabilities: https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VK_KHR_external_memory_capabilities.html
.. _VK_KHR_maintenance1: https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VK_KHR_maintenance1.html
.. _VK_KHR_external_memory: https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VK_KHR_external_memory.html
.. _VK_EXT_transform_feedback: https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VK_EXT_transform_feedback.html
.. _VK_EXT_conditional_rendering: https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VK_EXT_conditional_rendering.html