VK_EXT_legacy_dithering(3)

# VK_EXT_legacy_dithering(3) Manual Page

## Name

VK_EXT_legacy_dithering - device extension

## Registered Extension Number

466

## Revision

2

## Ratification Status

Ratified

## Extension and Version Dependencies

VK_KHR_get_physical_device_properties2
or
Vulkan Version 1.1

## API Interactions

- Interacts with VK_VERSION_1_3

- Interacts with VK_VERSION_1_4

- Interacts with VK_KHR_dynamic_rendering

- Interacts with VK_KHR_extended_flags

- Interacts with VK_KHR_maintenance5

## Special Use

- OpenGL / ES support

## Contact

- Shahbaz Youssefi [GitHub]syoussefi

## Extension Proposal

VK_EXT_legacy_dithering

## Other Extension Metadata

Last Modified Date

  2024-02-22

Contributors

  - Shahbaz Youssefi, Google

  - Graeme Leese, Broadcom

  - Jan-Harald Fredriksen, Arm

## Description

This extension exposes a hardware feature used by some vendors to implement OpenGL’s dithering. The purpose of this extension is to support layering OpenGL over Vulkan, by allowing the layer to take advantage of the same hardware feature and provide equivalent dithering to OpenGL applications.

## New Structures

- Extending VkPhysicalDeviceFeatures2, VkDeviceCreateInfo:

  - VkPhysicalDeviceLegacyDitheringFeaturesEXT

## New Enum Constants

- `VK_EXT_LEGACY_DITHERING_EXTENSION_NAME`

- `VK_EXT_LEGACY_DITHERING_SPEC_VERSION`

- Extending VkStructureType:

  - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_DITHERING_FEATURES_EXT

- Extending VkSubpassDescriptionFlagBits:

  - VK_SUBPASS_DESCRIPTION_ENABLE_LEGACY_DITHERING_BIT_EXT

If VK_KHR_dynamic_rendering or Vulkan Version 1.3 and Vulkan Version 1.4 or VK_KHR_extended_flags or VK_KHR_maintenance5 is supported:

- Extending VkPipelineCreateFlagBits2:

  - VK_PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT

- Extending VkRenderingFlagBits:

  - VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT

## Version History

- Revision 1, 2022-03-31 (Shahbaz Youssefi)

  - Internal revisions

- Revision 2, 2024-02-22 (Shahbaz Youssefi)

  - Added pipeline create flag to support dynamic rendering

## Issues

1) In OpenGL, the dither state can change dynamically. Should this extension add a pipeline state for dither?

RESOLVED: No. Changing dither state is rarely, if ever, done during rendering. Every surveyed Android application either entirely disables dither, explicitly enables it, or uses the default state (which is enabled). Additionally, on some hardware dither can only be specified in a render pass granularity, so a change in dither state would necessarily need to cause a render pass break. This extension considers dynamic changes in OpenGL dither state a theoretical situation, and expects the layer to break the render pass in such a situation without any practical downsides.

## See Also

No cross-references are available

## Document Notes

For more information, see the Vulkan Specification.

This page is a generated document. Fixes and changes should be made to the generator scripts, not directly.

## Copyright

Copyright 2014-2026 The Khronos Group Inc.

SPDX-License-Identifier: CC-BY-4.0