vulkan
Safe HaskellSafe-Inferred
LanguageHaskell2010

Vulkan.Extensions.VK_EXT_legacy_dithering

Description

Name

VK_EXT_legacy_dithering - device extension

VK_EXT_legacy_dithering

Name String
VK_EXT_legacy_dithering
Extension Type
Device extension
Registered Extension Number
466
Revision
2
Ratification Status
Not 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_KHR_dynamic_rendering
  • Interacts with VK_KHR_maintenance5
Special Use
Contact
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

New Enum Constants

If VK_KHR_dynamic_rendering or Vulkan Version 1.3 and VK_KHR_maintenance5 is supported:

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.

Synopsis

Documentation

data PhysicalDeviceLegacyDitheringFeaturesEXT Source #

VkPhysicalDeviceLegacyDitheringFeaturesEXT - Structure describing support for legacy dithering

Members

This structure describes the following feature:

Description

If the PhysicalDeviceLegacyDitheringFeaturesEXT structure is included in the pNext chain of the PhysicalDeviceFeatures2 structure passed to getPhysicalDeviceFeatures2, it is filled in to indicate whether each corresponding feature is supported. PhysicalDeviceLegacyDitheringFeaturesEXT can also be used in the pNext chain of DeviceCreateInfo to selectively enable these features.

Valid Usage (Implicit)

See Also

VK_EXT_legacy_dithering, Bool32, StructureType

Constructors

PhysicalDeviceLegacyDitheringFeaturesEXT 

Fields

Instances

Instances details
Storable PhysicalDeviceLegacyDitheringFeaturesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_legacy_dithering

Show PhysicalDeviceLegacyDitheringFeaturesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_legacy_dithering

Eq PhysicalDeviceLegacyDitheringFeaturesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_legacy_dithering

FromCStruct PhysicalDeviceLegacyDitheringFeaturesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_legacy_dithering

ToCStruct PhysicalDeviceLegacyDitheringFeaturesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_legacy_dithering

Zero PhysicalDeviceLegacyDitheringFeaturesEXT Source # 
Instance details

Defined in Vulkan.Extensions.VK_EXT_legacy_dithering

type EXT_LEGACY_DITHERING_EXTENSION_NAME = "VK_EXT_legacy_dithering" Source #

pattern EXT_LEGACY_DITHERING_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a Source #

newtype PipelineCreateFlagBits2KHR Source #

VkPipelineCreateFlagBits2KHR - Bitmask controlling how a pipeline is created

Description

It is valid to set both PIPELINE_CREATE_2_ALLOW_DERIVATIVES_BIT_KHR and PIPELINE_CREATE_2_DERIVATIVE_BIT_KHR. This allows a pipeline to be both a parent and possibly a child in a pipeline hierarchy. See Pipeline Derivatives for more information.

When an implementation is looking up a pipeline in a pipeline cache, if that pipeline is being created using linked libraries, implementations should always return an equivalent pipeline created with PIPELINE_CREATE_2_LINK_TIME_OPTIMIZATION_BIT_EXT if available, whether or not that bit was specified.

Using PIPELINE_CREATE_2_LINK_TIME_OPTIMIZATION_BIT_EXT (or not) when linking pipeline libraries is intended as a performance tradeoff between host and device. If the bit is omitted, linking should be faster and produce a pipeline more rapidly, but performance of the pipeline on the target device may be reduced. If the bit is included, linking may be slower but should produce a pipeline with device performance comparable to a monolithically created pipeline. Using both options can allow latency-sensitive applications to generate a suboptimal but usable pipeline quickly, and then perform an optimal link in the background, substituting the result for the suboptimally linked pipeline as soon as it is available.

See Also

VK_KHR_maintenance5, PipelineCreateFlags2KHR

Bundled Patterns

pattern PIPELINE_CREATE_2_DISABLE_OPTIMIZATION_BIT_KHR :: PipelineCreateFlagBits2KHR 
pattern PIPELINE_CREATE_2_ALLOW_DERIVATIVES_BIT_KHR :: PipelineCreateFlagBits2KHR 
pattern PIPELINE_CREATE_2_DERIVATIVE_BIT_KHR :: PipelineCreateFlagBits2KHR 
pattern PIPELINE_CREATE_2_INDIRECT_BINDABLE_BIT_EXT :: PipelineCreateFlagBits2KHR 
pattern PIPELINE_CREATE_2_CAPTURE_DATA_BIT_KHR :: PipelineCreateFlagBits2KHR 
pattern PIPELINE_CREATE_2_DESCRIPTOR_BUFFER_BIT_EXT :: PipelineCreateFlagBits2KHR 
pattern PIPELINE_CREATE_2_RAY_TRACING_DISPLACEMENT_MICROMAP_BIT_NV :: PipelineCreateFlagBits2KHR 
pattern PIPELINE_CREATE_2_PROTECTED_ACCESS_ONLY_BIT_EXT :: PipelineCreateFlagBits2KHR 
pattern PIPELINE_CREATE_2_NO_PROTECTED_ACCESS_BIT_EXT :: PipelineCreateFlagBits2KHR 
pattern PIPELINE_CREATE_2_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT :: PipelineCreateFlagBits2KHR 
pattern PIPELINE_CREATE_2_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT :: PipelineCreateFlagBits2KHR 
pattern PIPELINE_CREATE_2_RAY_TRACING_OPACITY_MICROMAP_BIT_EXT :: PipelineCreateFlagBits2KHR 
pattern PIPELINE_CREATE_2_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT :: PipelineCreateFlagBits2KHR 
pattern PIPELINE_CREATE_2_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR :: PipelineCreateFlagBits2KHR 
pattern PIPELINE_CREATE_2_RAY_TRACING_ALLOW_MOTION_BIT_NV :: PipelineCreateFlagBits2KHR 
pattern PIPELINE_CREATE_2_INDIRECT_BINDABLE_BIT_NV :: PipelineCreateFlagBits2KHR 
pattern PIPELINE_CREATE_2_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR :: PipelineCreateFlagBits2KHR 
pattern PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR :: PipelineCreateFlagBits2KHR 
pattern PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR :: PipelineCreateFlagBits2KHR 
pattern PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR :: PipelineCreateFlagBits2KHR 
pattern PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR :: PipelineCreateFlagBits2KHR 
pattern PIPELINE_CREATE_2_RAY_TRACING_SKIP_AABBS_BIT_KHR :: PipelineCreateFlagBits2KHR 
pattern PIPELINE_CREATE_2_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR :: PipelineCreateFlagBits2KHR 
pattern PIPELINE_CREATE_2_LIBRARY_BIT_KHR :: PipelineCreateFlagBits2KHR 
pattern PIPELINE_CREATE_2_RETAIN_LINK_TIME_OPTIMIZATION_INFO_BIT_EXT :: PipelineCreateFlagBits2KHR 
pattern PIPELINE_CREATE_2_LINK_TIME_OPTIMIZATION_BIT_EXT :: PipelineCreateFlagBits2KHR 
pattern PIPELINE_CREATE_2_EARLY_RETURN_ON_FAILURE_BIT_KHR :: PipelineCreateFlagBits2KHR 
pattern PIPELINE_CREATE_2_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_KHR :: PipelineCreateFlagBits2KHR 
pattern PIPELINE_CREATE_2_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR :: PipelineCreateFlagBits2KHR 
pattern PIPELINE_CREATE_2_CAPTURE_STATISTICS_BIT_KHR :: PipelineCreateFlagBits2KHR 
pattern PIPELINE_CREATE_2_DEFER_COMPILE_BIT_NV :: PipelineCreateFlagBits2KHR 
pattern PIPELINE_CREATE_2_DISPATCH_BASE_BIT_KHR :: PipelineCreateFlagBits2KHR 
pattern PIPELINE_CREATE_2_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR :: PipelineCreateFlagBits2KHR 
pattern PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT :: PipelineCreateFlagBits2KHR 
pattern PIPELINE_CREATE_2_EXECUTION_GRAPH_BIT_AMDX :: PipelineCreateFlagBits2KHR 

Instances

Instances details
Storable PipelineCreateFlagBits2KHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_maintenance5

Bits PipelineCreateFlagBits2KHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_maintenance5

Methods

(.&.) :: PipelineCreateFlagBits2KHR -> PipelineCreateFlagBits2KHR -> PipelineCreateFlagBits2KHR #

(.|.) :: PipelineCreateFlagBits2KHR -> PipelineCreateFlagBits2KHR -> PipelineCreateFlagBits2KHR #

xor :: PipelineCreateFlagBits2KHR -> PipelineCreateFlagBits2KHR -> PipelineCreateFlagBits2KHR #

complement :: PipelineCreateFlagBits2KHR -> PipelineCreateFlagBits2KHR #

shift :: PipelineCreateFlagBits2KHR -> Int -> PipelineCreateFlagBits2KHR #

rotate :: PipelineCreateFlagBits2KHR -> Int -> PipelineCreateFlagBits2KHR #

zeroBits :: PipelineCreateFlagBits2KHR #

bit :: Int -> PipelineCreateFlagBits2KHR #

setBit :: PipelineCreateFlagBits2KHR -> Int -> PipelineCreateFlagBits2KHR #

clearBit :: PipelineCreateFlagBits2KHR -> Int -> PipelineCreateFlagBits2KHR #

complementBit :: PipelineCreateFlagBits2KHR -> Int -> PipelineCreateFlagBits2KHR #

testBit :: PipelineCreateFlagBits2KHR -> Int -> Bool #

bitSizeMaybe :: PipelineCreateFlagBits2KHR -> Maybe Int #

bitSize :: PipelineCreateFlagBits2KHR -> Int #

isSigned :: PipelineCreateFlagBits2KHR -> Bool #

shiftL :: PipelineCreateFlagBits2KHR -> Int -> PipelineCreateFlagBits2KHR #

unsafeShiftL :: PipelineCreateFlagBits2KHR -> Int -> PipelineCreateFlagBits2KHR #

shiftR :: PipelineCreateFlagBits2KHR -> Int -> PipelineCreateFlagBits2KHR #

unsafeShiftR :: PipelineCreateFlagBits2KHR -> Int -> PipelineCreateFlagBits2KHR #

rotateL :: PipelineCreateFlagBits2KHR -> Int -> PipelineCreateFlagBits2KHR #

rotateR :: PipelineCreateFlagBits2KHR -> Int -> PipelineCreateFlagBits2KHR #

popCount :: PipelineCreateFlagBits2KHR -> Int #

FiniteBits PipelineCreateFlagBits2KHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_maintenance5

Read PipelineCreateFlagBits2KHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_maintenance5

Show PipelineCreateFlagBits2KHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_maintenance5

Eq PipelineCreateFlagBits2KHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_maintenance5

Ord PipelineCreateFlagBits2KHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_maintenance5

Zero PipelineCreateFlagBits2KHR Source # 
Instance details

Defined in Vulkan.Extensions.VK_KHR_maintenance5