KhronosGroup / KhronosGroup/Vulkan-Portability

Required Vulkan Spec Documentation Modifications

Open
#24 3 comments 2 reactions 0 assignees View on GitHub
CTS
Dominant language
No language data
Stars
45
Forks
7
PR merge metrics
No merged PRs in 30d

Description

This is a list of Vulkan modifications for portability that can be accomplished through changes to the Vulkan spec documentation, without requiring the need for additional feature flags or values. Typically, this applies to the loosening of required features or formats, or of required numerical limits.

Vulkan spec wording and VU's would be adjusted to include wording similar to:

>If the `VK_KHR_portability_subset` extension is enabled, this feature/format is not required.

>If the `VK_KHR_portability_subset` extension is enabled, the required limit is nnnn.

Such changes also require changes to the appropriate CTS test in order to apply the adjusted requirements. In each entry here, the CTS Tests Affected is listed for investigative purposes. A single issue may actually affect multiple CTS tests, and all may not be listed here if the expectation is that fixing one should fix them all.

| Description | Vulkan spec | Portability spec | CTS Tests Affected | Status |
|:--- |:--- |:--- |:--- |:--- |
| `VkPhysicalDeviceLimits:: maxSamplerAllocationCount` | Min 4000 required | 1024 | `dEQP-VK.info.device_properties` | |
| `VK_FORMAT_B4G4R4A4_UNORM_PACK16`
`VK_FORMAT_R5G6B5_UNORM_PACK16`
`VK_FORMAT_A1R5G5B5_UNORM_PACK16` | Requires minimal `VkFormatFeatureFlags` | Not required | `dEQP-VK.api.info.format_properties.b4g4r4a4_unorm_pack16`
`dEQP-VK.api.info.format_properties.r5g6b5_unorm_pack16`
`dEQP-VK.api.info.format_properties.a1r5g5b5_unorm_pack16`
`dEQP-VK.texture.explicit_lod.2d.formats.b4g4r4a4_unorm_pack16_nearest`
`dEQP-VK.texture.explicit_lod.2d.formats.b4g4r4a4_unorm_pack16_linear` | |
| `VK_FORMAT_R32_UINT`
`VK_FORMAT_R32_SINT` | `VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT` required in `optimalTilingFeatures` | Not required | `dEQP-VK.api.info.format_properties.r32_uint`
`dEQP-VK.api.info.format_properties.r32_sint` | |
| On some platforms, primitive restart cannot always be disabled | `VkPipelineInputAssemblyStateCreateInfo.primitiveRestartEnable` and `vkCmdSetPrimitiveRestartEnableEXT()` can be set to `VK_FALSE` | `VkPipelineInputAssemblyStateCreateInfo.primitiveRestartEnable` and `vkCmdSetPrimitiveRestartEnableEXT()` must always be set to `VK_TRUE` | None. All CTS primitive restart tests only test enabling. | |
| `VkVertexInputBindingDescription::stride` must be a multiple of `4` | `VkVertexInputBindingDescription::stride` can be any value | `VkVertexInputBindingDescription::stride` must be a multiple of `4` (see also #30 re zero value) | CTS tests currently using `VkPhysicalDevicePortabilitySubsetPropertiesKHR::minVertexInputBindingStrideAlignment` should macro-define a fixed value (currently known to be `4`) . | |
| Vulkan prohibits `multiViewport` without geometry shaders but Metal does not (see #23) | `multiViewport` prohibited without geometry shaders | `multiViewport` allowed for other uses without geometry shaders in main spec, with or without `VK_KHR_portability subset` | `dEQP-VK.info.device_features` | |

Contributor guide

No contributing guide indexed for this repository

Research direction

Start with the issue's table of Vulkan spec modifications and the listed CTS tests, reviewing each requirement and its corresponding portability wording. Done means the applicable spec and validation-unit wording is updated and the affected CTS expectations reflect the adjusted requirements.

Written by the indexing model from the issue text.

Assessment

Domain
documentation, testing-qa
Issue type
Documentation
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.