Zink-aGalliumdriverThatEmitsVulkanAPIcalls
(2023-05-22 11:48:09)
标签:
it |
分类: 技术 |
Zink-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.
OpenGL 2.1 is the minimum version Zink can support, and will
always be exposed, given Vulkan support.
Here's a list of those requirements:
Vulkan 1.0
VkPhysicalDeviceFeatures:
logicOp
fillModeNonSolid
alphaToOne
shaderClipDistance
Device extensions:
VK_KHR_maintenance1
VK_KHR_create_renderpass2
VK_KHR_imageless_framebuffer
VK_KHR_timeline_semaphore
VK_EXT_custom_border_color with
customBorderColorWithoutFormat
VK_EXT_provoking_vertex
VK_EXT_line_rasterization, with the following
VkPhysicalDeviceLineRasterizationFeaturesEXT:
rectangularLines
bresenhamLines
smoothLines
stippledRectangularLines
stippledBresenhamLines
stippledSmoothLines
VK_KHR_swapchain_mutable_format
VK_EXT_border_color_swizzle
VK_KHR_descriptor_update_template
In addition to this, VK_KHR_external_memory is required to
support the DRI code-path.
We also require either the VK_EXT_scalar_block_layout
extension or Vulkan 1.2, with the scalarBlockLayout feature.
OpenGL 3.0
For OpenGL 3.0 support, the following additional requirements
must be met:
VkPhysicalDeviceFeatures:
independentBlend
Device extensions:
VK_EXT_transform_feedback
VK_EXT_conditional_rendering
OpenGL 3.1
For OpenGL 3.1 support, the following additional
VkPhysicalDeviceLimits are required:
maxPerStageDescriptorSamplers ≥ 16
OpenGL 3.2
For OpenGL 3.2 support, the following additional requirements
must be met, although some of these might not actually get
verified:
VkPhysicalDeviceFeatures:
depthClamp
geometryShader
shaderTessellationAndGeometryPointSize
Device extensions:
VK_EXT_depth_clip_enable
OpenGL 3.3
For OpenGL 3.3 support, the following additional requirements
must be met, although some of these might not actually get
verified:
VkPhysicalDeviceFeatures:
dualSrcBlend
Device extensions:
VK_EXT_vertex_attribute_divisor
OpenGL 4.0
For OpenGL 4.0 support, the following additional requirements
must be met:
VkPhysicalDeviceFeatures:
sampleRateShading
tessellationShader
imageCubeArray
Device extensions:
VK_KHR_maintenance2
Formats requiring
VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT:
VK_FORMAT_R32G32B32_SFLOAT
VK_FORMAT_R32G32B32_SINT
VK_FORMAT_R32G32B32_UINT
OpenGL 4.1
For OpenGL 4.1 support, the following additional requirements
must be met:
VkPhysicalDeviceFeatures:
multiViewport
VkPhysicalDeviceLimits
maxImageDimension1D ≥ 16384
maxImageDimension2D ≥ 16384
maxImageDimension3D ≥ 2048
maxImageDimensionCube ≥ 16384
maxImageArrayLayers ≥ 2048
maxViewports ≥ 16
OpenGL 4.2
For OpenGL 4.2 support, the following additional requirements
must be met:
Device extensions:
VK_EXT_image_2d_view_of_3d
VkPhysicalDeviceLimits:
shaderStorageImageExtendedFormats
shaderStorageImageWriteWithoutFormat
vertexPipelineStoresAndAtomics
fragmentStoresAndAtomics
For Vulkan 1.2 and above:
VkPhysicalDeviceVulkan11Features:
shaderDrawParameters
For Vulkan 1.1 and below:
Device extensions:
VK_KHR_shader_draw_parameters
OpenGL 4.3
For OpenGL 4.3 support, the following additional requirements
must be met:
VkPhysicalDeviceFeatures:
robustBufferAccess
Formats requiring VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT:
VK_FORMAT_R8G8B8A8_UNORM
VK_FORMAT_R8G8B8A8_SRGB
VK_FORMAT_R16_UNORM
VK_FORMAT_R16G16_UNORM
VK_FORMAT_R16_SNORM
VK_FORMAT_R16G16_SNORM
VK_FORMAT_D32_SFLOAT_S8_UINT
OpenGL 4.4
For OpenGL 4.4 support, the following additional requirements
must be met:
Formats requiring VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT:
VK_FORMAT_B10G11R11_UFLOAT_PACK32
For Vulkan 1.2 and above:
VkPhysicalDeviceVulkan12Features:
samplerMirrorClampToEdge
For Vulkan 1.1 and below:
Device extensions:
VK_KHR_sampler_mirror_clamp_to_edge
OpenGL 4.5
For OpenGL 4.5 support, the following additional
VkPhysicalDeviceFeatures are required to be supported
shaderCullDistance
OpenGL 4.6
For OpenGL 4.6 support, the following additional requirements
must be met:
VkPhysicalDeviceFeatures:
samplerAnisotropy
depthBiasClamp
Device extensions:
VK_KHR_draw_indirect_count