diff --git a/docs/gallium/drivers/zink.rst b/docs/gallium/drivers/zink.rst index 0756c52b232..18f3d433d89 100644 --- a/docs/gallium/drivers/zink.rst +++ b/docs/gallium/drivers/zink.rst @@ -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 `_ 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