vulkan-3.27: src/Vulkan/Extensions/VK_KHR_surface.hs
{-# language CPP #-}
-- | = Name
--
-- VK_KHR_surface - instance extension
--
-- = VK_KHR_surface
--
-- [__Name String__]
-- @VK_KHR_surface@
--
-- [__Extension Type__]
-- Instance extension
--
-- [__Registered Extension Number__]
-- 1
--
-- [__Revision__]
-- 25
--
-- [__Ratification Status__]
-- Ratified
--
-- [__Extension and Version Dependencies__]
-- None
--
-- [__Contact__]
--
-- - James Jones
-- <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_KHR_surface] @cubanismo%0A*Here describe the issue or question you have about the VK_KHR_surface extension* >
--
-- - Ian Elliott
-- <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_KHR_surface] @ianelliottus%0A*Here describe the issue or question you have about the VK_KHR_surface extension* >
--
-- == Other Extension Metadata
--
-- [__Last Modified Date__]
-- 2016-08-25
--
-- [__IP Status__]
-- No known IP claims.
--
-- [__Contributors__]
--
-- - Patrick Doane, Blizzard
--
-- - Ian Elliott, LunarG
--
-- - Jesse Hall, Google
--
-- - James Jones, NVIDIA
--
-- - David Mao, AMD
--
-- - Norbert Nopper, Freescale
--
-- - Alon Or-bach, Samsung
--
-- - Daniel Rakos, AMD
--
-- - Graham Sellers, AMD
--
-- - Jeff Vigil, Qualcomm
--
-- - Chia-I Wu, LunarG
--
-- - Faith Ekstrand, Intel
--
-- == Description
--
-- The @VK_KHR_surface@ extension is an instance extension. It introduces
-- 'Vulkan.Extensions.Handles.SurfaceKHR' objects, which abstract native
-- platform surface or window objects for use with Vulkan. It also provides
-- a way to determine whether a queue family in a physical device supports
-- presenting to particular surface.
--
-- Separate extensions for each platform provide the mechanisms for
-- creating 'Vulkan.Extensions.Handles.SurfaceKHR' objects, but once
-- created they may be used in this and other platform-independent
-- extensions, in particular the @VK_KHR_swapchain@ extension.
--
-- == New Object Types
--
-- - 'Vulkan.Extensions.Handles.SurfaceKHR'
--
-- == New Commands
--
-- - 'destroySurfaceKHR'
--
-- - 'getPhysicalDeviceSurfaceCapabilitiesKHR'
--
-- - 'getPhysicalDeviceSurfaceFormatsKHR'
--
-- - 'getPhysicalDeviceSurfacePresentModesKHR'
--
-- - 'getPhysicalDeviceSurfaceSupportKHR'
--
-- == New Structures
--
-- - 'SurfaceCapabilitiesKHR'
--
-- - 'SurfaceFormatKHR'
--
-- == New Enums
--
-- - 'ColorSpaceKHR'
--
-- - 'CompositeAlphaFlagBitsKHR'
--
-- - 'PresentModeKHR'
--
-- - 'SurfaceTransformFlagBitsKHR'
--
-- == New Bitmasks
--
-- - 'CompositeAlphaFlagsKHR'
--
-- - 'SurfaceTransformFlagsKHR'
--
-- == New Enum Constants
--
-- - 'KHR_SURFACE_EXTENSION_NAME'
--
-- - 'KHR_SURFACE_SPEC_VERSION'
--
-- - Extending 'Vulkan.Core10.Enums.ObjectType.ObjectType':
--
-- - 'Vulkan.Core10.Enums.ObjectType.OBJECT_TYPE_SURFACE_KHR'
--
-- - Extending 'Vulkan.Core10.Enums.Result.Result':
--
-- - 'Vulkan.Core10.Enums.Result.ERROR_NATIVE_WINDOW_IN_USE_KHR'
--
-- - 'Vulkan.Core10.Enums.Result.ERROR_SURFACE_LOST_KHR'
--
-- == Examples
--
-- The example code for the @VK_KHR_surface@ and @VK_KHR_swapchain@
-- extensions was removed from the appendix after revision 1.0.29. This WSI
-- example code was ported to the cube demo that is shipped with the
-- official Khronos SDK, and is being kept up-to-date in that location
-- (see:
-- <https://github.com/KhronosGroup/Vulkan-Tools/blob/main/cube/cube.c>).
--
-- == Issues
--
-- 1) Should this extension include a method to query whether a physical
-- device supports presenting to a specific window or native surface on a
-- given platform?
--
-- __RESOLVED__: Yes. Without this, applications would need to create a
-- device instance to determine whether a particular window can be
-- presented to. Knowing that a device supports presentation to a platform
-- in general is not sufficient, as a single machine might support multiple
-- seats, or instances of the platform that each use different underlying
-- physical devices. Additionally, on some platforms, such as the X Window
-- System, different drivers and devices might be used for different
-- windows depending on which section of the desktop they exist on.
--
-- 2) Should the 'getPhysicalDeviceSurfaceCapabilitiesKHR',
-- 'getPhysicalDeviceSurfaceFormatsKHR', and
-- 'getPhysicalDeviceSurfacePresentModesKHR' functions be in this extension
-- and operate on physical devices, rather than being in @VK_KHR_swapchain@
-- (i.e. device extension) and being dependent on
-- 'Vulkan.Core10.Handles.Device'?
--
-- __RESOLVED__: Yes. While it might be useful to depend on
-- 'Vulkan.Core10.Handles.Device' (and therefore on enabled extensions and
-- features) for the queries, Vulkan was released only with the
-- 'Vulkan.Core10.Handles.PhysicalDevice' versions. Many cases can be
-- resolved by a Valid Usage statement, and\/or by a separate @pNext@ chain
-- version of the query structure specific to a given extension or
-- parameters, via extensible versions of the queries:
-- 'Vulkan.Extensions.VK_EXT_full_screen_exclusive.getPhysicalDeviceSurfacePresentModes2EXT',
-- 'Vulkan.Extensions.VK_KHR_get_surface_capabilities2.getPhysicalDeviceSurfaceCapabilities2KHR',
-- and
-- 'Vulkan.Extensions.VK_KHR_get_surface_capabilities2.getPhysicalDeviceSurfaceFormats2KHR'.
--
-- 3) Should Vulkan support Xlib or XCB as the API for accessing the X
-- Window System platform?
--
-- __RESOLVED__: Both. XCB is a more modern and efficient API, but Xlib
-- usage is deeply ingrained in many applications and likely will remain in
-- use for the foreseeable future. Not all drivers necessarily need to
-- support both, but including both as options in the core specification
-- will probably encourage support, which should in turn ease adoption of
-- the Vulkan API in older codebases. Additionally, the performance
-- improvements possible with XCB likely will not have a measurable impact
-- on the performance of Vulkan presentation and other minimal window
-- system interactions defined here.
--
-- 4) Should the GBM platform be included in the list of platform enums?
--
-- __RESOLVED__: Deferred, and will be addressed with a platform-specific
-- extension to be written in the future.
--
-- == Version History
--
-- - Revision 1, 2015-05-20 (James Jones)
--
-- - Initial draft, based on LunarG KHR spec, other KHR specs,
-- patches attached to bugs.
--
-- - Revision 2, 2015-05-22 (Ian Elliott)
--
-- - Created initial Description section.
--
-- - Removed query for whether a platform requires the use of a queue
-- for presentation, since it was decided that presentation will
-- always be modeled as being part of the queue.
--
-- - Fixed typos and other minor mistakes.
--
-- - Revision 3, 2015-05-26 (Ian Elliott)
--
-- - Improved the Description section.
--
-- - Revision 4, 2015-05-27 (James Jones)
--
-- - Fixed compilation errors in example code.
--
-- - Revision 5, 2015-06-01 (James Jones)
--
-- - Added issues 1 and 2 and made related spec updates.
--
-- - Revision 6, 2015-06-01 (James Jones)
--
-- - Merged the platform type mappings table previously removed from
-- VK_KHR_swapchain with the platform description table in this
-- spec.
--
-- - Added issues 3 and 4 documenting choices made when building the
-- initial list of native platforms supported.
--
-- - Revision 7, 2015-06-11 (Ian Elliott)
--
-- - Updated table 1 per input from the KHR TSG.
--
-- - Updated issue 4 (GBM) per discussion with Daniel Stone. He will
-- create a platform-specific extension sometime in the future.
--
-- - Revision 8, 2015-06-17 (James Jones)
--
-- - Updated enum-extending values using new convention.
--
-- - Fixed the value of VK_SURFACE_PLATFORM_INFO_TYPE_SUPPORTED_KHR.
--
-- - Revision 9, 2015-06-17 (James Jones)
--
-- - Rebased on Vulkan API version 126.
--
-- - Revision 10, 2015-06-18 (James Jones)
--
-- - Marked issues 2 and 3 resolved.
--
-- - Revision 11, 2015-06-23 (Ian Elliott)
--
-- - Examples now show use of function pointers for extension
-- functions.
--
-- - Eliminated extraneous whitespace.
--
-- - Revision 12, 2015-07-07 (Daniel Rakos)
--
-- - Added error section describing when each error is expected to be
-- reported.
--
-- - Replaced the term “queue node index” with “queue family index”
-- in the spec as that is the agreed term to be used in the latest
-- version of the core header and spec.
--
-- - Replaced bool32_t with VkBool32.
--
-- - Revision 13, 2015-08-06 (Daniel Rakos)
--
-- - Updated spec against latest core API header version.
--
-- - Revision 14, 2015-08-20 (Ian Elliott)
--
-- - Renamed this extension and all of its enumerations, types,
-- functions, etc. This makes it compliant with the proposed
-- standard for Vulkan extensions.
--
-- - Switched from “revision” to “version”, including use of the
-- VK_MAKE_VERSION macro in the header file.
--
-- - Did miscellaneous cleanup, etc.
--
-- - Revision 15, 2015-08-20 (Ian Elliott—porting a 2015-07-29 change
-- from James Jones)
--
-- - Moved the surface transform enums here from VK_WSI_swapchain so
-- they could be reused by VK_WSI_display.
--
-- - Revision 16, 2015-09-01 (James Jones)
--
-- - Restore single-field revision number.
--
-- - Revision 17, 2015-09-01 (James Jones)
--
-- - Fix example code compilation errors.
--
-- - Revision 18, 2015-09-26 (Jesse Hall)
--
-- - Replaced VkSurfaceDescriptionKHR with the VkSurfaceKHR object,
-- which is created via layered extensions. Added
-- VkDestroySurfaceKHR.
--
-- - Revision 19, 2015-09-28 (Jesse Hall)
--
-- - Renamed from VK_EXT_KHR_swapchain to VK_EXT_KHR_surface.
--
-- - Revision 20, 2015-09-30 (Jeff Vigil)
--
-- - Add error result VK_ERROR_SURFACE_LOST_KHR.
--
-- - Revision 21, 2015-10-15 (Daniel Rakos)
--
-- - Updated the resolution of issue #2 and include the surface
-- capability queries in this extension.
--
-- - Renamed SurfaceProperties to SurfaceCapabilities as it better
-- reflects that the values returned are the capabilities of the
-- surface on a particular device.
--
-- - Other minor cleanup and consistency changes.
--
-- - Revision 22, 2015-10-26 (Ian Elliott)
--
-- - Renamed from VK_EXT_KHR_surface to VK_KHR_surface.
--
-- - Revision 23, 2015-11-03 (Daniel Rakos)
--
-- - Added allocation callbacks to vkDestroySurfaceKHR.
--
-- - Revision 24, 2015-11-10 (Jesse Hall)
--
-- - Removed VkSurfaceTransformKHR. Use VkSurfaceTransformFlagBitsKHR
-- instead.
--
-- - Rename VkSurfaceCapabilitiesKHR member maxImageArraySize to
-- maxImageArrayLayers.
--
-- - Revision 25, 2016-01-14 (James Jones)
--
-- - Moved VK_ERROR_NATIVE_WINDOW_IN_USE_KHR from the
-- VK_KHR_android_surface to the VK_KHR_surface extension.
--
-- - 2016-08-23 (Ian Elliott)
--
-- - Update the example code, to not have so many characters per
-- line, and to split out a new example to show how to obtain
-- function pointers.
--
-- - 2016-08-25 (Ian Elliott)
--
-- - A note was added at the beginning of the example code, stating
-- that it will be removed from future versions of the appendix.
--
-- == See Also
--
-- No cross-references are available
--
-- == Document Notes
--
-- For more information, see the
-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#VK_KHR_surface Vulkan Specification>.
--
-- This page is a generated document. Fixes and changes should be made to
-- the generator scripts, not directly.
module Vulkan.Extensions.VK_KHR_surface ( destroySurfaceKHR
, getPhysicalDeviceSurfaceSupportKHR
, getPhysicalDeviceSurfaceCapabilitiesKHR
, getPhysicalDeviceSurfaceFormatsKHR
, getPhysicalDeviceSurfacePresentModesKHR
, pattern COLORSPACE_SRGB_NONLINEAR_KHR
, SurfaceCapabilitiesKHR(..)
, SurfaceFormatKHR(..)
, PresentModeKHR( PRESENT_MODE_IMMEDIATE_KHR
, PRESENT_MODE_MAILBOX_KHR
, PRESENT_MODE_FIFO_KHR
, PRESENT_MODE_FIFO_RELAXED_KHR
, PRESENT_MODE_FIFO_LATEST_READY_KHR
, PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR
, PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR
, ..
)
, ColorSpaceKHR( COLOR_SPACE_SRGB_NONLINEAR_KHR
, COLOR_SPACE_DISPLAY_NATIVE_AMD
, COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT
, COLOR_SPACE_PASS_THROUGH_EXT
, COLOR_SPACE_ADOBERGB_NONLINEAR_EXT
, COLOR_SPACE_ADOBERGB_LINEAR_EXT
, COLOR_SPACE_HDR10_HLG_EXT
, COLOR_SPACE_DOLBYVISION_EXT
, COLOR_SPACE_HDR10_ST2084_EXT
, COLOR_SPACE_BT2020_LINEAR_EXT
, COLOR_SPACE_BT709_NONLINEAR_EXT
, COLOR_SPACE_BT709_LINEAR_EXT
, COLOR_SPACE_DCI_P3_NONLINEAR_EXT
, COLOR_SPACE_DISPLAY_P3_LINEAR_EXT
, COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT
, COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT
, ..
)
, CompositeAlphaFlagsKHR
, CompositeAlphaFlagBitsKHR( COMPOSITE_ALPHA_OPAQUE_BIT_KHR
, COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR
, COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR
, COMPOSITE_ALPHA_INHERIT_BIT_KHR
, ..
)
, SurfaceTransformFlagsKHR
, SurfaceTransformFlagBitsKHR( SURFACE_TRANSFORM_IDENTITY_BIT_KHR
, SURFACE_TRANSFORM_ROTATE_90_BIT_KHR
, SURFACE_TRANSFORM_ROTATE_180_BIT_KHR
, SURFACE_TRANSFORM_ROTATE_270_BIT_KHR
, SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR
, SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR
, SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR
, SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR
, SURFACE_TRANSFORM_INHERIT_BIT_KHR
, ..
)
, KHR_SURFACE_SPEC_VERSION
, pattern KHR_SURFACE_SPEC_VERSION
, KHR_SURFACE_EXTENSION_NAME
, pattern KHR_SURFACE_EXTENSION_NAME
, SurfaceKHR(..)
) where
import Data.Bits (Bits)
import Data.Bits (FiniteBits)
import Vulkan.Internal.Utils (enumReadPrec)
import Vulkan.Internal.Utils (enumShowsPrec)
import Vulkan.Internal.Utils (traceAroundEvent)
import Control.Exception.Base (bracket)
import Control.Monad (unless)
import Control.Monad.IO.Class (liftIO)
import Foreign.Marshal.Alloc (allocaBytes)
import Foreign.Marshal.Alloc (callocBytes)
import Foreign.Marshal.Alloc (free)
import GHC.Base (when)
import GHC.IO (throwIO)
import GHC.Ptr (nullFunPtr)
import Foreign.Ptr (nullPtr)
import Foreign.Ptr (plusPtr)
import GHC.Show (showString)
import GHC.Show (showsPrec)
import Numeric (showHex)
import Control.Monad.Trans.Class (lift)
import Control.Monad.Trans.Cont (evalContT)
import Data.Vector (generateM)
import Vulkan.CStruct (FromCStruct)
import Vulkan.CStruct (FromCStruct(..))
import Vulkan.CStruct (ToCStruct)
import Vulkan.CStruct (ToCStruct(..))
import Vulkan.Zero (Zero)
import Vulkan.Zero (Zero(..))
import Control.Monad.IO.Class (MonadIO)
import Data.String (IsString)
import Data.Typeable (Typeable)
import Foreign.Storable (Storable)
import Foreign.Storable (Storable(peek))
import Foreign.Storable (Storable(poke))
import qualified Foreign.Storable (Storable(..))
import GHC.Generics (Generic)
import GHC.IO.Exception (IOErrorType(..))
import GHC.IO.Exception (IOException(..))
import Data.Int (Int32)
import Foreign.Ptr (FunPtr)
import Foreign.Ptr (Ptr)
import GHC.Read (Read(readPrec))
import GHC.Show (Show(showsPrec))
import Data.Word (Word32)
import Data.Kind (Type)
import Control.Monad.Trans.Cont (ContT(..))
import Data.Vector (Vector)
import Vulkan.CStruct.Utils (advancePtrBytes)
import Vulkan.Core10.FundamentalTypes (bool32ToBool)
import Vulkan.NamedType ((:::))
import Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)
import Vulkan.Core10.FundamentalTypes (Bool32)
import Vulkan.Core10.FundamentalTypes (Bool32(..))
import Vulkan.Core10.FundamentalTypes (Extent2D)
import Vulkan.Core10.FundamentalTypes (Flags)
import Vulkan.Core10.Enums.Format (Format)
import Vulkan.Core10.Enums.ImageUsageFlagBits (ImageUsageFlags)
import Vulkan.Core10.Handles (Instance)
import Vulkan.Core10.Handles (Instance(..))
import Vulkan.Core10.Handles (Instance(Instance))
import Vulkan.Dynamic (InstanceCmds(pVkDestroySurfaceKHR))
import Vulkan.Dynamic (InstanceCmds(pVkGetPhysicalDeviceSurfaceCapabilitiesKHR))
import Vulkan.Dynamic (InstanceCmds(pVkGetPhysicalDeviceSurfaceFormatsKHR))
import Vulkan.Dynamic (InstanceCmds(pVkGetPhysicalDeviceSurfacePresentModesKHR))
import Vulkan.Dynamic (InstanceCmds(pVkGetPhysicalDeviceSurfaceSupportKHR))
import Vulkan.Core10.Handles (Instance_T)
import Vulkan.Core10.Handles (PhysicalDevice)
import Vulkan.Core10.Handles (PhysicalDevice(..))
import Vulkan.Core10.Handles (PhysicalDevice(PhysicalDevice))
import Vulkan.Core10.Handles (PhysicalDevice_T)
import Vulkan.Core10.Enums.Result (Result)
import Vulkan.Core10.Enums.Result (Result(..))
import Vulkan.Extensions.Handles (SurfaceKHR)
import Vulkan.Extensions.Handles (SurfaceKHR(..))
import Vulkan.Exception (VulkanException(..))
import Vulkan.Core10.Enums.Result (Result(SUCCESS))
import Vulkan.Extensions.Handles (SurfaceKHR(..))
foreign import ccall
#if !defined(SAFE_FOREIGN_CALLS)
unsafe
#endif
"dynamic" mkVkDestroySurfaceKHR
:: FunPtr (Ptr Instance_T -> SurfaceKHR -> Ptr AllocationCallbacks -> IO ()) -> Ptr Instance_T -> SurfaceKHR -> Ptr AllocationCallbacks -> IO ()
-- | vkDestroySurfaceKHR - Destroy a VkSurfaceKHR object
--
-- = Description
--
-- Destroying a 'Vulkan.Extensions.Handles.SurfaceKHR' merely severs the
-- connection between Vulkan and the native surface, and does not imply
-- destroying the native surface, closing a window, or similar behavior.
--
-- == Valid Usage
--
-- - #VUID-vkDestroySurfaceKHR-surface-01266# All
-- 'Vulkan.Extensions.Handles.SwapchainKHR' objects created for
-- @surface@ /must/ have been destroyed prior to destroying @surface@
--
-- - #VUID-vkDestroySurfaceKHR-surface-01267# If
-- 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks' were
-- provided when @surface@ was created, a compatible set of callbacks
-- /must/ be provided here
--
-- - #VUID-vkDestroySurfaceKHR-surface-01268# If no
-- 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks' were
-- provided when @surface@ was created, @pAllocator@ /must/ be @NULL@
--
-- == Valid Usage (Implicit)
--
-- - #VUID-vkDestroySurfaceKHR-instance-parameter# @instance@ /must/ be a
-- valid 'Vulkan.Core10.Handles.Instance' handle
--
-- - #VUID-vkDestroySurfaceKHR-surface-parameter# If @surface@ is not
-- 'Vulkan.Core10.APIConstants.NULL_HANDLE', @surface@ /must/ be a
-- valid 'Vulkan.Extensions.Handles.SurfaceKHR' handle
--
-- - #VUID-vkDestroySurfaceKHR-pAllocator-parameter# If @pAllocator@ is
-- not @NULL@, @pAllocator@ /must/ be a valid pointer to a valid
-- 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks' structure
--
-- - #VUID-vkDestroySurfaceKHR-surface-parent# If @surface@ is a valid
-- handle, it /must/ have been created, allocated, or retrieved from
-- @instance@
--
-- == Host Synchronization
--
-- - Host access to @surface@ /must/ be externally synchronized
--
-- = See Also
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_surface VK_KHR_surface>,
-- 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',
-- 'Vulkan.Core10.Handles.Instance', 'Vulkan.Extensions.Handles.SurfaceKHR'
destroySurfaceKHR :: forall io
. (MonadIO io)
=> -- | @instance@ is the instance used to create the surface.
Instance
-> -- | @surface@ is the surface to destroy.
SurfaceKHR
-> -- | @pAllocator@ is the allocator used for host memory allocated for the
-- surface object when there is no more specific allocator available (see
-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#memory-allocation Memory Allocation>).
("allocator" ::: Maybe AllocationCallbacks)
-> io ()
destroySurfaceKHR instance' surface allocator = liftIO . evalContT $ do
let vkDestroySurfaceKHRPtr = pVkDestroySurfaceKHR (case instance' of Instance{instanceCmds} -> instanceCmds)
lift $ unless (vkDestroySurfaceKHRPtr /= nullFunPtr) $
throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkDestroySurfaceKHR is null" Nothing Nothing
let vkDestroySurfaceKHR' = mkVkDestroySurfaceKHR vkDestroySurfaceKHRPtr
pAllocator <- case (allocator) of
Nothing -> pure nullPtr
Just j -> ContT $ withCStruct (j)
lift $ traceAroundEvent "vkDestroySurfaceKHR" (vkDestroySurfaceKHR'
(instanceHandle (instance'))
(surface)
pAllocator)
pure $ ()
foreign import ccall
#if !defined(SAFE_FOREIGN_CALLS)
unsafe
#endif
"dynamic" mkVkGetPhysicalDeviceSurfaceSupportKHR
:: FunPtr (Ptr PhysicalDevice_T -> Word32 -> SurfaceKHR -> Ptr Bool32 -> IO Result) -> Ptr PhysicalDevice_T -> Word32 -> SurfaceKHR -> Ptr Bool32 -> IO Result
-- | vkGetPhysicalDeviceSurfaceSupportKHR - Query if presentation is
-- supported
--
-- == Valid Usage
--
-- - #VUID-vkGetPhysicalDeviceSurfaceSupportKHR-queueFamilyIndex-01269#
-- @queueFamilyIndex@ /must/ be less than @pQueueFamilyPropertyCount@
-- returned by
-- 'Vulkan.Core10.DeviceInitialization.getPhysicalDeviceQueueFamilyProperties'
-- for the given @physicalDevice@
--
-- == Valid Usage (Implicit)
--
-- - #VUID-vkGetPhysicalDeviceSurfaceSupportKHR-physicalDevice-parameter#
-- @physicalDevice@ /must/ be a valid
-- 'Vulkan.Core10.Handles.PhysicalDevice' handle
--
-- - #VUID-vkGetPhysicalDeviceSurfaceSupportKHR-surface-parameter#
-- @surface@ /must/ be a valid 'Vulkan.Extensions.Handles.SurfaceKHR'
-- handle
--
-- - #VUID-vkGetPhysicalDeviceSurfaceSupportKHR-pSupported-parameter#
-- @pSupported@ /must/ be a valid pointer to a
-- 'Vulkan.Core10.FundamentalTypes.Bool32' value
--
-- - #VUID-vkGetPhysicalDeviceSurfaceSupportKHR-commonparent# Both of
-- @physicalDevice@, and @surface@ /must/ have been created, allocated,
-- or retrieved from the same 'Vulkan.Core10.Handles.Instance'
--
-- == Return Codes
--
-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]
--
-- - 'Vulkan.Core10.Enums.Result.SUCCESS'
--
-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
--
-- - 'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
--
-- - 'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
--
-- - 'Vulkan.Core10.Enums.Result.ERROR_SURFACE_LOST_KHR'
--
-- - 'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
--
-- - 'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
--
-- = See Also
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_surface VK_KHR_surface>,
-- 'Vulkan.Core10.FundamentalTypes.Bool32',
-- 'Vulkan.Core10.Handles.PhysicalDevice',
-- 'Vulkan.Extensions.Handles.SurfaceKHR'
getPhysicalDeviceSurfaceSupportKHR :: forall io
. (MonadIO io)
=> -- | @physicalDevice@ is the physical device.
PhysicalDevice
-> -- | @queueFamilyIndex@ is the queue family.
("queueFamilyIndex" ::: Word32)
-> -- | @surface@ is the surface.
SurfaceKHR
-> io (("supported" ::: Bool))
getPhysicalDeviceSurfaceSupportKHR physicalDevice
queueFamilyIndex
surface = liftIO . evalContT $ do
let vkGetPhysicalDeviceSurfaceSupportKHRPtr = pVkGetPhysicalDeviceSurfaceSupportKHR (case physicalDevice of PhysicalDevice{instanceCmds} -> instanceCmds)
lift $ unless (vkGetPhysicalDeviceSurfaceSupportKHRPtr /= nullFunPtr) $
throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetPhysicalDeviceSurfaceSupportKHR is null" Nothing Nothing
let vkGetPhysicalDeviceSurfaceSupportKHR' = mkVkGetPhysicalDeviceSurfaceSupportKHR vkGetPhysicalDeviceSurfaceSupportKHRPtr
pPSupported <- ContT $ bracket (callocBytes @Bool32 4) free
r <- lift $ traceAroundEvent "vkGetPhysicalDeviceSurfaceSupportKHR" (vkGetPhysicalDeviceSurfaceSupportKHR'
(physicalDeviceHandle (physicalDevice))
(queueFamilyIndex)
(surface)
(pPSupported))
lift $ when (r < SUCCESS) (throwIO (VulkanException r))
pSupported <- lift $ peek @Bool32 pPSupported
pure $ ((bool32ToBool pSupported))
foreign import ccall
#if !defined(SAFE_FOREIGN_CALLS)
unsafe
#endif
"dynamic" mkVkGetPhysicalDeviceSurfaceCapabilitiesKHR
:: FunPtr (Ptr PhysicalDevice_T -> SurfaceKHR -> Ptr SurfaceCapabilitiesKHR -> IO Result) -> Ptr PhysicalDevice_T -> SurfaceKHR -> Ptr SurfaceCapabilitiesKHR -> IO Result
-- | vkGetPhysicalDeviceSurfaceCapabilitiesKHR - Query surface capabilities
--
-- == Valid Usage
--
-- - #VUID-vkGetPhysicalDeviceSurfaceCapabilitiesKHR-surface-06211#
-- @surface@ /must/ be supported by @physicalDevice@, as reported by
-- 'getPhysicalDeviceSurfaceSupportKHR' or an equivalent
-- platform-specific mechanism
--
-- == Valid Usage (Implicit)
--
-- - #VUID-vkGetPhysicalDeviceSurfaceCapabilitiesKHR-physicalDevice-parameter#
-- @physicalDevice@ /must/ be a valid
-- 'Vulkan.Core10.Handles.PhysicalDevice' handle
--
-- - #VUID-vkGetPhysicalDeviceSurfaceCapabilitiesKHR-surface-parameter#
-- @surface@ /must/ be a valid 'Vulkan.Extensions.Handles.SurfaceKHR'
-- handle
--
-- - #VUID-vkGetPhysicalDeviceSurfaceCapabilitiesKHR-pSurfaceCapabilities-parameter#
-- @pSurfaceCapabilities@ /must/ be a valid pointer to a
-- 'SurfaceCapabilitiesKHR' structure
--
-- - #VUID-vkGetPhysicalDeviceSurfaceCapabilitiesKHR-commonparent# Both
-- of @physicalDevice@, and @surface@ /must/ have been created,
-- allocated, or retrieved from the same
-- 'Vulkan.Core10.Handles.Instance'
--
-- == Return Codes
--
-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]
--
-- - 'Vulkan.Core10.Enums.Result.SUCCESS'
--
-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
--
-- - 'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
--
-- - 'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
--
-- - 'Vulkan.Core10.Enums.Result.ERROR_SURFACE_LOST_KHR'
--
-- - 'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
--
-- - 'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
--
-- = See Also
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_surface VK_KHR_surface>,
-- 'Vulkan.Core10.Handles.PhysicalDevice', 'SurfaceCapabilitiesKHR',
-- 'Vulkan.Extensions.Handles.SurfaceKHR'
getPhysicalDeviceSurfaceCapabilitiesKHR :: forall io
. (MonadIO io)
=> -- | @physicalDevice@ is the physical device that will be associated with the
-- swapchain to be created, as described for
-- 'Vulkan.Extensions.VK_KHR_swapchain.createSwapchainKHR'.
PhysicalDevice
-> -- | @surface@ is the surface that will be associated with the swapchain.
SurfaceKHR
-> io (SurfaceCapabilitiesKHR)
getPhysicalDeviceSurfaceCapabilitiesKHR physicalDevice
surface = liftIO . evalContT $ do
let vkGetPhysicalDeviceSurfaceCapabilitiesKHRPtr = pVkGetPhysicalDeviceSurfaceCapabilitiesKHR (case physicalDevice of PhysicalDevice{instanceCmds} -> instanceCmds)
lift $ unless (vkGetPhysicalDeviceSurfaceCapabilitiesKHRPtr /= nullFunPtr) $
throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetPhysicalDeviceSurfaceCapabilitiesKHR is null" Nothing Nothing
let vkGetPhysicalDeviceSurfaceCapabilitiesKHR' = mkVkGetPhysicalDeviceSurfaceCapabilitiesKHR vkGetPhysicalDeviceSurfaceCapabilitiesKHRPtr
pPSurfaceCapabilities <- ContT (withZeroCStruct @SurfaceCapabilitiesKHR)
r <- lift $ traceAroundEvent "vkGetPhysicalDeviceSurfaceCapabilitiesKHR" (vkGetPhysicalDeviceSurfaceCapabilitiesKHR'
(physicalDeviceHandle (physicalDevice))
(surface)
(pPSurfaceCapabilities))
lift $ when (r < SUCCESS) (throwIO (VulkanException r))
pSurfaceCapabilities <- lift $ peekCStruct @SurfaceCapabilitiesKHR pPSurfaceCapabilities
pure $ (pSurfaceCapabilities)
foreign import ccall
#if !defined(SAFE_FOREIGN_CALLS)
unsafe
#endif
"dynamic" mkVkGetPhysicalDeviceSurfaceFormatsKHR
:: FunPtr (Ptr PhysicalDevice_T -> SurfaceKHR -> Ptr Word32 -> Ptr SurfaceFormatKHR -> IO Result) -> Ptr PhysicalDevice_T -> SurfaceKHR -> Ptr Word32 -> Ptr SurfaceFormatKHR -> IO Result
-- | vkGetPhysicalDeviceSurfaceFormatsKHR - Query color formats supported by
-- surface
--
-- = Description
--
-- If @pSurfaceFormats@ is @NULL@, then the number of format pairs
-- supported for the given @surface@ is returned in @pSurfaceFormatCount@.
-- Otherwise, @pSurfaceFormatCount@ /must/ point to a variable set by the
-- application to the number of elements in the @pSurfaceFormats@ array,
-- and on return the variable is overwritten with the number of structures
-- actually written to @pSurfaceFormats@. If the value of
-- @pSurfaceFormatCount@ is less than the number of format pairs supported,
-- at most @pSurfaceFormatCount@ structures will be written, and
-- 'Vulkan.Core10.Enums.Result.INCOMPLETE' will be returned instead of
-- 'Vulkan.Core10.Enums.Result.SUCCESS', to indicate that not all the
-- available format pairs were returned.
--
-- The number of format pairs supported /must/ be greater than or equal to
-- 1. @pSurfaceFormats@ /must/ not contain an entry whose value for
-- @format@ is 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'.
--
-- If @pSurfaceFormats@ includes an entry whose value for @colorSpace@ is
-- 'COLOR_SPACE_SRGB_NONLINEAR_KHR' and whose value for @format@ is a UNORM
-- (or SRGB) format and the corresponding SRGB (or UNORM) format is a color
-- renderable format for
-- 'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_OPTIMAL', then
-- @pSurfaceFormats@ /must/ also contain an entry with the same value for
-- @colorSpace@ and @format@ equal to the corresponding SRGB (or UNORM)
-- format.
--
-- If the @VK_GOOGLE_surfaceless_query@ extension is enabled, the values
-- returned in @pSurfaceFormats@ will be identical for every valid surface
-- created on this physical device, and so @surface@ /can/ be
-- 'Vulkan.Core10.APIConstants.NULL_HANDLE'.
--
-- == Valid Usage
--
-- - #VUID-vkGetPhysicalDeviceSurfaceFormatsKHR-surface-06524# If the
-- @VK_GOOGLE_surfaceless_query@ extension is not enabled, @surface@
-- /must/ be a valid 'Vulkan.Extensions.Handles.SurfaceKHR' handle
--
-- - #VUID-vkGetPhysicalDeviceSurfaceFormatsKHR-surface-06525# If
-- @surface@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', @surface@
-- /must/ be supported by @physicalDevice@, as reported by
-- 'getPhysicalDeviceSurfaceSupportKHR' or an equivalent
-- platform-specific mechanism
--
-- == Valid Usage (Implicit)
--
-- - #VUID-vkGetPhysicalDeviceSurfaceFormatsKHR-physicalDevice-parameter#
-- @physicalDevice@ /must/ be a valid
-- 'Vulkan.Core10.Handles.PhysicalDevice' handle
--
-- - #VUID-vkGetPhysicalDeviceSurfaceFormatsKHR-surface-parameter# If
-- @surface@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', @surface@
-- /must/ be a valid 'Vulkan.Extensions.Handles.SurfaceKHR' handle
--
-- - #VUID-vkGetPhysicalDeviceSurfaceFormatsKHR-pSurfaceFormatCount-parameter#
-- @pSurfaceFormatCount@ /must/ be a valid pointer to a @uint32_t@
-- value
--
-- - #VUID-vkGetPhysicalDeviceSurfaceFormatsKHR-pSurfaceFormats-parameter#
-- If the value referenced by @pSurfaceFormatCount@ is not @0@, and
-- @pSurfaceFormats@ is not @NULL@, @pSurfaceFormats@ /must/ be a valid
-- pointer to an array of @pSurfaceFormatCount@ 'SurfaceFormatKHR'
-- structures
--
-- - #VUID-vkGetPhysicalDeviceSurfaceFormatsKHR-commonparent# Both of
-- @physicalDevice@, and @surface@ that are valid handles of
-- non-ignored parameters /must/ have been created, allocated, or
-- retrieved from the same 'Vulkan.Core10.Handles.Instance'
--
-- == Return Codes
--
-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]
--
-- - 'Vulkan.Core10.Enums.Result.INCOMPLETE'
--
-- - 'Vulkan.Core10.Enums.Result.SUCCESS'
--
-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
--
-- - 'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
--
-- - 'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
--
-- - 'Vulkan.Core10.Enums.Result.ERROR_SURFACE_LOST_KHR'
--
-- - 'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
--
-- - 'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
--
-- = See Also
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_surface VK_KHR_surface>,
-- 'Vulkan.Core10.Handles.PhysicalDevice', 'SurfaceFormatKHR',
-- 'Vulkan.Extensions.Handles.SurfaceKHR'
getPhysicalDeviceSurfaceFormatsKHR :: forall io
. (MonadIO io)
=> -- | @physicalDevice@ is the physical device that will be associated with the
-- swapchain to be created, as described for
-- 'Vulkan.Extensions.VK_KHR_swapchain.createSwapchainKHR'.
PhysicalDevice
-> -- | @surface@ is the surface that will be associated with the swapchain.
SurfaceKHR
-> io (Result, ("surfaceFormats" ::: Vector SurfaceFormatKHR))
getPhysicalDeviceSurfaceFormatsKHR physicalDevice
surface = liftIO . evalContT $ do
let vkGetPhysicalDeviceSurfaceFormatsKHRPtr = pVkGetPhysicalDeviceSurfaceFormatsKHR (case physicalDevice of PhysicalDevice{instanceCmds} -> instanceCmds)
lift $ unless (vkGetPhysicalDeviceSurfaceFormatsKHRPtr /= nullFunPtr) $
throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetPhysicalDeviceSurfaceFormatsKHR is null" Nothing Nothing
let vkGetPhysicalDeviceSurfaceFormatsKHR' = mkVkGetPhysicalDeviceSurfaceFormatsKHR vkGetPhysicalDeviceSurfaceFormatsKHRPtr
let physicalDevice' = physicalDeviceHandle (physicalDevice)
pPSurfaceFormatCount <- ContT $ bracket (callocBytes @Word32 4) free
r <- lift $ traceAroundEvent "vkGetPhysicalDeviceSurfaceFormatsKHR" (vkGetPhysicalDeviceSurfaceFormatsKHR'
physicalDevice'
(surface)
(pPSurfaceFormatCount)
(nullPtr))
lift $ when (r < SUCCESS) (throwIO (VulkanException r))
pSurfaceFormatCount <- lift $ peek @Word32 pPSurfaceFormatCount
pPSurfaceFormats <- ContT $ bracket (callocBytes @SurfaceFormatKHR ((fromIntegral (pSurfaceFormatCount)) * 8)) free
_ <- traverse (\i -> ContT $ pokeZeroCStruct (pPSurfaceFormats `advancePtrBytes` (i * 8) :: Ptr SurfaceFormatKHR) . ($ ())) [0..(fromIntegral (pSurfaceFormatCount)) - 1]
r' <- lift $ traceAroundEvent "vkGetPhysicalDeviceSurfaceFormatsKHR" (vkGetPhysicalDeviceSurfaceFormatsKHR'
physicalDevice'
(surface)
(pPSurfaceFormatCount)
((pPSurfaceFormats)))
lift $ when (r' < SUCCESS) (throwIO (VulkanException r'))
pSurfaceFormatCount' <- lift $ peek @Word32 pPSurfaceFormatCount
pSurfaceFormats' <- lift $ generateM (fromIntegral (pSurfaceFormatCount')) (\i -> peekCStruct @SurfaceFormatKHR (((pPSurfaceFormats) `advancePtrBytes` (8 * (i)) :: Ptr SurfaceFormatKHR)))
pure $ ((r'), pSurfaceFormats')
foreign import ccall
#if !defined(SAFE_FOREIGN_CALLS)
unsafe
#endif
"dynamic" mkVkGetPhysicalDeviceSurfacePresentModesKHR
:: FunPtr (Ptr PhysicalDevice_T -> SurfaceKHR -> Ptr Word32 -> Ptr PresentModeKHR -> IO Result) -> Ptr PhysicalDevice_T -> SurfaceKHR -> Ptr Word32 -> Ptr PresentModeKHR -> IO Result
-- | vkGetPhysicalDeviceSurfacePresentModesKHR - Query supported presentation
-- modes
--
-- = Description
--
-- If @pPresentModes@ is @NULL@, then the number of presentation modes
-- supported for the given @surface@ is returned in @pPresentModeCount@.
-- Otherwise, @pPresentModeCount@ /must/ point to a variable set by the
-- application to the number of elements in the @pPresentModes@ array, and
-- on return the variable is overwritten with the number of values actually
-- written to @pPresentModes@. If the value of @pPresentModeCount@ is less
-- than the number of presentation modes supported, at most
-- @pPresentModeCount@ values will be written, and
-- 'Vulkan.Core10.Enums.Result.INCOMPLETE' will be returned instead of
-- 'Vulkan.Core10.Enums.Result.SUCCESS', to indicate that not all the
-- available modes were returned.
--
-- If the @VK_GOOGLE_surfaceless_query@ extension is enabled and @surface@
-- is 'Vulkan.Core10.APIConstants.NULL_HANDLE', the values returned in
-- @pPresentModes@ will only indicate support for 'PRESENT_MODE_FIFO_KHR',
-- 'PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR', and
-- 'PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR'. To query support for any
-- other present mode, a valid handle /must/ be provided in @surface@.
--
-- == Valid Usage
--
-- - #VUID-vkGetPhysicalDeviceSurfacePresentModesKHR-surface-06524# If
-- the @VK_GOOGLE_surfaceless_query@ extension is not enabled,
-- @surface@ /must/ be a valid 'Vulkan.Extensions.Handles.SurfaceKHR'
-- handle
--
-- - #VUID-vkGetPhysicalDeviceSurfacePresentModesKHR-surface-06525# If
-- @surface@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', @surface@
-- /must/ be supported by @physicalDevice@, as reported by
-- 'getPhysicalDeviceSurfaceSupportKHR' or an equivalent
-- platform-specific mechanism
--
-- == Valid Usage (Implicit)
--
-- - #VUID-vkGetPhysicalDeviceSurfacePresentModesKHR-physicalDevice-parameter#
-- @physicalDevice@ /must/ be a valid
-- 'Vulkan.Core10.Handles.PhysicalDevice' handle
--
-- - #VUID-vkGetPhysicalDeviceSurfacePresentModesKHR-surface-parameter#
-- If @surface@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',
-- @surface@ /must/ be a valid 'Vulkan.Extensions.Handles.SurfaceKHR'
-- handle
--
-- - #VUID-vkGetPhysicalDeviceSurfacePresentModesKHR-pPresentModeCount-parameter#
-- @pPresentModeCount@ /must/ be a valid pointer to a @uint32_t@ value
--
-- - #VUID-vkGetPhysicalDeviceSurfacePresentModesKHR-pPresentModes-parameter#
-- If the value referenced by @pPresentModeCount@ is not @0@, and
-- @pPresentModes@ is not @NULL@, @pPresentModes@ /must/ be a valid
-- pointer to an array of @pPresentModeCount@ 'PresentModeKHR' values
--
-- - #VUID-vkGetPhysicalDeviceSurfacePresentModesKHR-commonparent# Both
-- of @physicalDevice@, and @surface@ that are valid handles of
-- non-ignored parameters /must/ have been created, allocated, or
-- retrieved from the same 'Vulkan.Core10.Handles.Instance'
--
-- == Return Codes
--
-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]
--
-- - 'Vulkan.Core10.Enums.Result.INCOMPLETE'
--
-- - 'Vulkan.Core10.Enums.Result.SUCCESS'
--
-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
--
-- - 'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
--
-- - 'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
--
-- - 'Vulkan.Core10.Enums.Result.ERROR_SURFACE_LOST_KHR'
--
-- - 'Vulkan.Core10.Enums.Result.ERROR_UNKNOWN'
--
-- - 'Vulkan.Core10.Enums.Result.ERROR_VALIDATION_FAILED'
--
-- = See Also
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_surface VK_KHR_surface>,
-- 'Vulkan.Core10.Handles.PhysicalDevice', 'PresentModeKHR',
-- 'Vulkan.Extensions.Handles.SurfaceKHR'
getPhysicalDeviceSurfacePresentModesKHR :: forall io
. (MonadIO io)
=> -- | @physicalDevice@ is the physical device that will be associated with the
-- swapchain to be created, as described for
-- 'Vulkan.Extensions.VK_KHR_swapchain.createSwapchainKHR'.
PhysicalDevice
-> -- | @surface@ is the surface that will be associated with the swapchain.
SurfaceKHR
-> io (Result, ("presentModes" ::: Vector PresentModeKHR))
getPhysicalDeviceSurfacePresentModesKHR physicalDevice
surface = liftIO . evalContT $ do
let vkGetPhysicalDeviceSurfacePresentModesKHRPtr = pVkGetPhysicalDeviceSurfacePresentModesKHR (case physicalDevice of PhysicalDevice{instanceCmds} -> instanceCmds)
lift $ unless (vkGetPhysicalDeviceSurfacePresentModesKHRPtr /= nullFunPtr) $
throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetPhysicalDeviceSurfacePresentModesKHR is null" Nothing Nothing
let vkGetPhysicalDeviceSurfacePresentModesKHR' = mkVkGetPhysicalDeviceSurfacePresentModesKHR vkGetPhysicalDeviceSurfacePresentModesKHRPtr
let physicalDevice' = physicalDeviceHandle (physicalDevice)
pPPresentModeCount <- ContT $ bracket (callocBytes @Word32 4) free
r <- lift $ traceAroundEvent "vkGetPhysicalDeviceSurfacePresentModesKHR" (vkGetPhysicalDeviceSurfacePresentModesKHR'
physicalDevice'
(surface)
(pPPresentModeCount)
(nullPtr))
lift $ when (r < SUCCESS) (throwIO (VulkanException r))
pPresentModeCount <- lift $ peek @Word32 pPPresentModeCount
pPPresentModes <- ContT $ bracket (callocBytes @PresentModeKHR ((fromIntegral (pPresentModeCount)) * 4)) free
r' <- lift $ traceAroundEvent "vkGetPhysicalDeviceSurfacePresentModesKHR" (vkGetPhysicalDeviceSurfacePresentModesKHR'
physicalDevice'
(surface)
(pPPresentModeCount)
(pPPresentModes))
lift $ when (r' < SUCCESS) (throwIO (VulkanException r'))
pPresentModeCount' <- lift $ peek @Word32 pPPresentModeCount
pPresentModes' <- lift $ generateM (fromIntegral (pPresentModeCount')) (\i -> peek @PresentModeKHR ((pPPresentModes `advancePtrBytes` (4 * (i)) :: Ptr PresentModeKHR)))
pure $ ((r'), pPresentModes')
-- No documentation found for TopLevel "VK_COLORSPACE_SRGB_NONLINEAR_KHR"
pattern COLORSPACE_SRGB_NONLINEAR_KHR = COLOR_SPACE_SRGB_NONLINEAR_KHR
-- | VkSurfaceCapabilitiesKHR - Structure describing capabilities of a
-- surface
--
-- = Description
--
-- Supported usage flags of a presentable image when using
-- 'PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR' or
-- 'PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR' presentation mode are
-- provided by
-- 'Vulkan.Extensions.VK_KHR_shared_presentable_image.SharedPresentSurfaceCapabilitiesKHR'::@sharedPresentSupportedUsageFlags@.
--
-- Formulas such as min(N, @maxImageCount@) are not correct, since
-- @maxImageCount@ /may/ be zero.
--
-- = See Also
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_surface VK_KHR_surface>,
-- 'CompositeAlphaFlagsKHR', 'Vulkan.Core10.FundamentalTypes.Extent2D',
-- 'Vulkan.Core10.Enums.ImageUsageFlagBits.ImageUsageFlags',
-- 'Vulkan.Extensions.VK_KHR_get_surface_capabilities2.SurfaceCapabilities2KHR',
-- 'SurfaceTransformFlagBitsKHR', 'SurfaceTransformFlagsKHR',
-- 'getPhysicalDeviceSurfaceCapabilitiesKHR'
data SurfaceCapabilitiesKHR = SurfaceCapabilitiesKHR
{ -- | @minImageCount@ is the minimum number of images the specified device
-- supports for a swapchain created for the surface, and will be at least
-- one.
minImageCount :: Word32
, -- | @maxImageCount@ is the maximum number of images the specified device
-- supports for a swapchain created for the surface, and will be either 0,
-- or greater than or equal to @minImageCount@. A value of 0 means that
-- there is no limit on the number of images, though there /may/ be limits
-- related to the total amount of memory used by presentable images.
maxImageCount :: Word32
, -- | @currentExtent@ is the current width and height of the surface, or the
-- special value (0xFFFFFFFF, 0xFFFFFFFF) indicating that the surface size
-- will be determined by the extent of a swapchain targeting the surface.
currentExtent :: Extent2D
, -- | @minImageExtent@ contains the smallest valid swapchain extent for the
-- surface on the specified device. The @width@ and @height@ of the extent
-- will each be less than or equal to the corresponding @width@ and
-- @height@ of @currentExtent@, unless @currentExtent@ has the special
-- value described above.
minImageExtent :: Extent2D
, -- | @maxImageExtent@ contains the largest valid swapchain extent for the
-- surface on the specified device. The @width@ and @height@ of the extent
-- will each be greater than or equal to the corresponding @width@ and
-- @height@ of @minImageExtent@. The @width@ and @height@ of the extent
-- will each be greater than or equal to the corresponding @width@ and
-- @height@ of @currentExtent@, unless @currentExtent@ has the special
-- value described above.
maxImageExtent :: Extent2D
, -- | @maxImageArrayLayers@ is the maximum number of layers presentable images
-- /can/ have for a swapchain created for this device and surface, and will
-- be at least one.
maxImageArrayLayers :: Word32
, -- | @supportedTransforms@ is a bitmask of 'SurfaceTransformFlagBitsKHR'
-- indicating the presentation transforms supported for the surface on the
-- specified device. At least one bit will be set.
supportedTransforms :: SurfaceTransformFlagsKHR
, -- | @currentTransform@ is 'SurfaceTransformFlagBitsKHR' value indicating the
-- surface’s current transform relative to the presentation engine’s
-- natural orientation.
currentTransform :: SurfaceTransformFlagBitsKHR
, -- | @supportedCompositeAlpha@ is a bitmask of 'CompositeAlphaFlagBitsKHR',
-- representing the alpha compositing modes supported by the presentation
-- engine for the surface on the specified device, and at least one bit
-- will be set. Opaque composition /can/ be achieved in any alpha
-- compositing mode by either using an image format that has no alpha
-- component, or by ensuring that all pixels in the presentable images have
-- an alpha value of 1.0.
supportedCompositeAlpha :: CompositeAlphaFlagsKHR
, -- | @supportedUsageFlags@ is a bitmask of
-- 'Vulkan.Core10.Enums.ImageUsageFlagBits.ImageUsageFlagBits' representing
-- the ways the application /can/ use the presentable images of a swapchain
-- created with 'PresentModeKHR' set to
-- 'PRESENT_MODE_FIFO_LATEST_READY_KHR', 'PRESENT_MODE_IMMEDIATE_KHR',
-- 'PRESENT_MODE_MAILBOX_KHR', 'PRESENT_MODE_FIFO_KHR' or
-- 'PRESENT_MODE_FIFO_RELAXED_KHR' for the surface on the specified device.
-- 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_COLOR_ATTACHMENT_BIT'
-- /must/ be included in the set. Implementations /may/ support additional
-- usages.
supportedUsageFlags :: ImageUsageFlags
}
deriving (Typeable)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (SurfaceCapabilitiesKHR)
#endif
deriving instance Show SurfaceCapabilitiesKHR
instance ToCStruct SurfaceCapabilitiesKHR where
withCStruct x f = allocaBytes 52 $ \p -> pokeCStruct p x (f p)
pokeCStruct p SurfaceCapabilitiesKHR{..} f = do
poke ((p `plusPtr` 0 :: Ptr Word32)) (minImageCount)
poke ((p `plusPtr` 4 :: Ptr Word32)) (maxImageCount)
poke ((p `plusPtr` 8 :: Ptr Extent2D)) (currentExtent)
poke ((p `plusPtr` 16 :: Ptr Extent2D)) (minImageExtent)
poke ((p `plusPtr` 24 :: Ptr Extent2D)) (maxImageExtent)
poke ((p `plusPtr` 32 :: Ptr Word32)) (maxImageArrayLayers)
poke ((p `plusPtr` 36 :: Ptr SurfaceTransformFlagsKHR)) (supportedTransforms)
poke ((p `plusPtr` 40 :: Ptr SurfaceTransformFlagBitsKHR)) (currentTransform)
poke ((p `plusPtr` 44 :: Ptr CompositeAlphaFlagsKHR)) (supportedCompositeAlpha)
poke ((p `plusPtr` 48 :: Ptr ImageUsageFlags)) (supportedUsageFlags)
f
cStructSize = 52
cStructAlignment = 4
pokeZeroCStruct p f = do
poke ((p `plusPtr` 0 :: Ptr Word32)) (zero)
poke ((p `plusPtr` 4 :: Ptr Word32)) (zero)
poke ((p `plusPtr` 8 :: Ptr Extent2D)) (zero)
poke ((p `plusPtr` 16 :: Ptr Extent2D)) (zero)
poke ((p `plusPtr` 24 :: Ptr Extent2D)) (zero)
poke ((p `plusPtr` 32 :: Ptr Word32)) (zero)
poke ((p `plusPtr` 36 :: Ptr SurfaceTransformFlagsKHR)) (zero)
poke ((p `plusPtr` 40 :: Ptr SurfaceTransformFlagBitsKHR)) (zero)
poke ((p `plusPtr` 44 :: Ptr CompositeAlphaFlagsKHR)) (zero)
poke ((p `plusPtr` 48 :: Ptr ImageUsageFlags)) (zero)
f
instance FromCStruct SurfaceCapabilitiesKHR where
peekCStruct p = do
minImageCount <- peek @Word32 ((p `plusPtr` 0 :: Ptr Word32))
maxImageCount <- peek @Word32 ((p `plusPtr` 4 :: Ptr Word32))
currentExtent <- peekCStruct @Extent2D ((p `plusPtr` 8 :: Ptr Extent2D))
minImageExtent <- peekCStruct @Extent2D ((p `plusPtr` 16 :: Ptr Extent2D))
maxImageExtent <- peekCStruct @Extent2D ((p `plusPtr` 24 :: Ptr Extent2D))
maxImageArrayLayers <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))
supportedTransforms <- peek @SurfaceTransformFlagsKHR ((p `plusPtr` 36 :: Ptr SurfaceTransformFlagsKHR))
currentTransform <- peek @SurfaceTransformFlagBitsKHR ((p `plusPtr` 40 :: Ptr SurfaceTransformFlagBitsKHR))
supportedCompositeAlpha <- peek @CompositeAlphaFlagsKHR ((p `plusPtr` 44 :: Ptr CompositeAlphaFlagsKHR))
supportedUsageFlags <- peek @ImageUsageFlags ((p `plusPtr` 48 :: Ptr ImageUsageFlags))
pure $ SurfaceCapabilitiesKHR
minImageCount
maxImageCount
currentExtent
minImageExtent
maxImageExtent
maxImageArrayLayers
supportedTransforms
currentTransform
supportedCompositeAlpha
supportedUsageFlags
instance Storable SurfaceCapabilitiesKHR where
sizeOf ~_ = 52
alignment ~_ = 4
peek = peekCStruct
poke ptr poked = pokeCStruct ptr poked (pure ())
instance Zero SurfaceCapabilitiesKHR where
zero = SurfaceCapabilitiesKHR
zero
zero
zero
zero
zero
zero
zero
zero
zero
zero
-- | VkSurfaceFormatKHR - Structure describing a supported swapchain
-- format-color space pair
--
-- = See Also
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_surface VK_KHR_surface>,
-- 'ColorSpaceKHR', 'Vulkan.Core10.Enums.Format.Format',
-- 'Vulkan.Extensions.VK_KHR_get_surface_capabilities2.SurfaceFormat2KHR',
-- 'getPhysicalDeviceSurfaceFormatsKHR'
data SurfaceFormatKHR = SurfaceFormatKHR
{ -- | @format@ is a 'Vulkan.Core10.Enums.Format.Format' that is compatible
-- with the specified surface.
format :: Format
, -- | @colorSpace@ is a presentation 'ColorSpaceKHR' that is compatible with
-- the surface.
colorSpace :: ColorSpaceKHR
}
deriving (Typeable, Eq)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (SurfaceFormatKHR)
#endif
deriving instance Show SurfaceFormatKHR
instance ToCStruct SurfaceFormatKHR where
withCStruct x f = allocaBytes 8 $ \p -> pokeCStruct p x (f p)
pokeCStruct p SurfaceFormatKHR{..} f = do
poke ((p `plusPtr` 0 :: Ptr Format)) (format)
poke ((p `plusPtr` 4 :: Ptr ColorSpaceKHR)) (colorSpace)
f
cStructSize = 8
cStructAlignment = 4
pokeZeroCStruct p f = do
poke ((p `plusPtr` 0 :: Ptr Format)) (zero)
poke ((p `plusPtr` 4 :: Ptr ColorSpaceKHR)) (zero)
f
instance FromCStruct SurfaceFormatKHR where
peekCStruct p = do
format <- peek @Format ((p `plusPtr` 0 :: Ptr Format))
colorSpace <- peek @ColorSpaceKHR ((p `plusPtr` 4 :: Ptr ColorSpaceKHR))
pure $ SurfaceFormatKHR
format colorSpace
instance Storable SurfaceFormatKHR where
sizeOf ~_ = 8
alignment ~_ = 4
peek = peekCStruct
poke ptr poked = pokeCStruct ptr poked (pure ())
instance Zero SurfaceFormatKHR where
zero = SurfaceFormatKHR
zero
zero
-- | VkPresentModeKHR - Presentation mode supported for a surface
--
-- = Description
--
-- - 'PRESENT_MODE_IMMEDIATE_KHR' specifies that the presentation engine
-- does not wait for a vertical blanking period to update the current
-- image, meaning this mode /may/ result in visible tearing. No
-- internal queuing of presentation requests is needed, as the requests
-- are applied immediately.
--
-- - 'PRESENT_MODE_MAILBOX_KHR' specifies that the presentation engine
-- waits for the next vertical blanking period to update the current
-- image. Tearing /cannot/ be observed. An internal single-entry queue
-- is used to hold pending presentation requests. If the queue is full
-- when a new presentation request is received, the new request
-- replaces the existing entry, and any images associated with the
-- prior entry become available for reuse by the application. One
-- request is removed from the queue and processed during each vertical
-- blanking period in which the queue is non-empty.
--
-- - 'PRESENT_MODE_FIFO_KHR' specifies that the presentation engine waits
-- for the next vertical blanking period to update the current image.
-- Tearing /cannot/ be observed. An internal queue is used to hold
-- pending presentation requests. New requests are appended to the end
-- of the queue, and one request is removed from the beginning of the
-- queue and processed during each vertical blanking period in which
-- the queue is non-empty. This is the only value of @presentMode@ that
-- is /required/ to be supported.
--
-- - 'PRESENT_MODE_FIFO_RELAXED_KHR' specifies that the presentation
-- engine generally waits for the next vertical blanking period to
-- update the current image. If a vertical blanking period has already
-- passed since the last update of the current image then the
-- presentation engine does not wait for another vertical blanking
-- period for the update, meaning this mode /may/ result in visible
-- tearing in this case. This mode is useful for reducing visual
-- stutter with an application that will mostly present a new image
-- before the next vertical blanking period, but may occasionally be
-- late, and present a new image just after the next vertical blanking
-- period. An internal queue is used to hold pending presentation
-- requests. New requests are appended to the end of the queue, and one
-- request is removed from the beginning of the queue and processed
-- during or after each vertical blanking period in which the queue is
-- non-empty.
--
-- - 'PRESENT_MODE_FIFO_LATEST_READY_KHR' specifies that the presentation
-- engine waits for the next vertical blanking period to update the
-- current image. Tearing /cannot/ be observed. An internal queue is
-- used to hold pending presentation requests. New requests are
-- appended to the end of the queue. At each vertical blanking period,
-- the presentation engine dequeues all successive requests that are
-- ready to be presented from the beginning of the queue. If using the
-- @VK_GOOGLE_display_timing@ extension or the
-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#features-presentAtAbsoluteTime presentAtAbsoluteTime>
-- feature to provide a target present time, the presentation engine
-- checks the specified time for each image. If the target present time
-- is less-than or equal-to the current time, the presentation engine
-- dequeues the image and checks the next one. The image of the last
-- dequeued request is presented. The other dequeued requests are
-- dropped.
--
-- - 'PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR' specifies that the
-- presentation engine and application have concurrent access to a
-- single image, which is referred to as a /shared presentable image/.
-- The presentation engine is only required to update the current image
-- after a new presentation request is received. Therefore the
-- application /must/ make a presentation request whenever an update is
-- required. However, the presentation engine /may/ update the current
-- image at any point, meaning this mode /may/ result in visible
-- tearing.
--
-- - 'PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR' specifies that the
-- presentation engine and application have concurrent access to a
-- single image, which is referred to as a /shared presentable image/.
-- The presentation engine periodically updates the current image on
-- its regular refresh cycle. The application is only required to make
-- one initial presentation request, after which the presentation
-- engine /must/ update the current image without any need for further
-- presentation requests. The application /can/ indicate the image
-- contents have been updated by making a presentation request, but
-- this does not guarantee the timing of when it will be updated. This
-- mode /may/ result in visible tearing if rendering to the image is
-- not timed correctly.
--
-- The supported
-- 'Vulkan.Core10.Enums.ImageUsageFlagBits.ImageUsageFlagBits' of the
-- presentable images of a swapchain created for a surface /may/ differ
-- depending on the presentation mode, and can be determined as per the
-- table below:
--
-- +----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+
-- | Presentation mode | Image usage flags |
-- +==============================================+=============================================================================================================================+
-- | 'PRESENT_MODE_IMMEDIATE_KHR' | 'SurfaceCapabilitiesKHR'::@supportedUsageFlags@ |
-- +----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+
-- | 'PRESENT_MODE_MAILBOX_KHR' | 'SurfaceCapabilitiesKHR'::@supportedUsageFlags@ |
-- +----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+
-- | 'PRESENT_MODE_FIFO_KHR' | 'SurfaceCapabilitiesKHR'::@supportedUsageFlags@ |
-- +----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+
-- | 'PRESENT_MODE_FIFO_RELAXED_KHR' | 'SurfaceCapabilitiesKHR'::@supportedUsageFlags@ |
-- +----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+
-- | 'PRESENT_MODE_FIFO_LATEST_READY_KHR' | 'SurfaceCapabilitiesKHR'::@supportedUsageFlags@ |
-- +----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+
-- | 'PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR' | 'Vulkan.Extensions.VK_KHR_shared_presentable_image.SharedPresentSurfaceCapabilitiesKHR'::@sharedPresentSupportedUsageFlags@ |
-- +----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+
-- | 'PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR' | 'Vulkan.Extensions.VK_KHR_shared_presentable_image.SharedPresentSurfaceCapabilitiesKHR'::@sharedPresentSupportedUsageFlags@ |
-- +----------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+
--
-- Presentable Image Usage Queries
--
-- For reference, the mode indicated by 'PRESENT_MODE_FIFO_KHR' is
-- equivalent to the behavior of {wgl|glX|egl}SwapBuffers with a swap
-- interval of 1, while the mode indicated by
-- 'PRESENT_MODE_FIFO_RELAXED_KHR' is equivalent to the behavior of
-- {wgl|glX}SwapBuffers with a swap interval of -1 (from the
-- {WGL|GLX}_EXT_swap_control_tear extensions).
--
-- = See Also
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_surface VK_KHR_surface>,
-- 'Vulkan.Extensions.VK_NV_low_latency2.LatencySurfaceCapabilitiesNV',
-- 'Vulkan.Extensions.VK_KHR_surface_maintenance1.SurfacePresentModeCompatibilityKHR',
-- 'Vulkan.Extensions.VK_KHR_surface_maintenance1.SurfacePresentModeKHR',
-- 'Vulkan.Extensions.VK_KHR_swapchain.SwapchainCreateInfoKHR',
-- 'Vulkan.Extensions.VK_KHR_swapchain_maintenance1.SwapchainPresentModeInfoKHR',
-- 'Vulkan.Extensions.VK_KHR_swapchain_maintenance1.SwapchainPresentModesCreateInfoKHR',
-- 'Vulkan.Extensions.VK_EXT_full_screen_exclusive.getPhysicalDeviceSurfacePresentModes2EXT',
-- 'getPhysicalDeviceSurfacePresentModesKHR'
newtype PresentModeKHR = PresentModeKHR Int32
deriving newtype (Eq, Ord, Storable, Zero)
-- No documentation found for Nested "VkPresentModeKHR" "VK_PRESENT_MODE_IMMEDIATE_KHR"
pattern PRESENT_MODE_IMMEDIATE_KHR = PresentModeKHR 0
-- No documentation found for Nested "VkPresentModeKHR" "VK_PRESENT_MODE_MAILBOX_KHR"
pattern PRESENT_MODE_MAILBOX_KHR = PresentModeKHR 1
-- No documentation found for Nested "VkPresentModeKHR" "VK_PRESENT_MODE_FIFO_KHR"
pattern PRESENT_MODE_FIFO_KHR = PresentModeKHR 2
-- No documentation found for Nested "VkPresentModeKHR" "VK_PRESENT_MODE_FIFO_RELAXED_KHR"
pattern PRESENT_MODE_FIFO_RELAXED_KHR = PresentModeKHR 3
-- No documentation found for Nested "VkPresentModeKHR" "VK_PRESENT_MODE_FIFO_LATEST_READY_KHR"
pattern PRESENT_MODE_FIFO_LATEST_READY_KHR = PresentModeKHR 1000361000
-- No documentation found for Nested "VkPresentModeKHR" "VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR"
pattern PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR = PresentModeKHR 1000111001
-- No documentation found for Nested "VkPresentModeKHR" "VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR"
pattern PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR = PresentModeKHR 1000111000
{-# COMPLETE
PRESENT_MODE_IMMEDIATE_KHR
, PRESENT_MODE_MAILBOX_KHR
, PRESENT_MODE_FIFO_KHR
, PRESENT_MODE_FIFO_RELAXED_KHR
, PRESENT_MODE_FIFO_LATEST_READY_KHR
, PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR
, PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR ::
PresentModeKHR
#-}
conNamePresentModeKHR :: String
conNamePresentModeKHR = "PresentModeKHR"
enumPrefixPresentModeKHR :: String
enumPrefixPresentModeKHR = "PRESENT_MODE_"
showTablePresentModeKHR :: [(PresentModeKHR, String)]
showTablePresentModeKHR =
[ (PRESENT_MODE_IMMEDIATE_KHR, "IMMEDIATE_KHR")
, (PRESENT_MODE_MAILBOX_KHR, "MAILBOX_KHR")
, (PRESENT_MODE_FIFO_KHR, "FIFO_KHR")
, (PRESENT_MODE_FIFO_RELAXED_KHR, "FIFO_RELAXED_KHR")
,
( PRESENT_MODE_FIFO_LATEST_READY_KHR
, "FIFO_LATEST_READY_KHR"
)
,
( PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR
, "SHARED_CONTINUOUS_REFRESH_KHR"
)
,
( PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR
, "SHARED_DEMAND_REFRESH_KHR"
)
]
instance Show PresentModeKHR where
showsPrec =
enumShowsPrec
enumPrefixPresentModeKHR
showTablePresentModeKHR
conNamePresentModeKHR
(\(PresentModeKHR x) -> x)
(showsPrec 11)
instance Read PresentModeKHR where
readPrec =
enumReadPrec
enumPrefixPresentModeKHR
showTablePresentModeKHR
conNamePresentModeKHR
PresentModeKHR
-- | VkColorSpaceKHR - Supported color space of the presentation engine
--
-- = Description
--
-- - 'COLOR_SPACE_SRGB_NONLINEAR_KHR' specifies support for the images in
-- sRGB color space, encoded according to the sRGB specification.
--
-- - 'COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT' specifies support for the
-- images in Display-P3 color space, encoded using a Display-P3
-- transfer function.
--
-- - 'COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT' specifies support for the
-- images in extended sRGB color space, encoded using a linear transfer
-- function.
--
-- - 'COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT' specifies support for the
-- images in extended sRGB color space, encoded according to the scRGB
-- specification.
--
-- - 'COLOR_SPACE_DISPLAY_P3_LINEAR_EXT' specifies support for the images
-- in Display-P3 color space, encoded using a linear transfer function.
--
-- - 'COLOR_SPACE_DCI_P3_NONLINEAR_EXT' specifies support for the images
-- in DCI-P3 color space, encoded according to the DCI-P3
-- specification. Note that values in such an image are interpreted as
-- XYZ encoded color data by the presentation engine.
--
-- - 'COLOR_SPACE_BT709_LINEAR_EXT' specifies support for the images in
-- BT709 color space, encoded using a linear transfer function.
--
-- - 'COLOR_SPACE_BT709_NONLINEAR_EXT' specifies support for the images
-- in BT709 color space, encoded according to the BT709 specification.
--
-- - 'COLOR_SPACE_BT2020_LINEAR_EXT' specifies support for the images in
-- BT2020 color space, encoded using a linear transfer function.
--
-- - 'COLOR_SPACE_HDR10_ST2084_EXT' specifies support for the images in
-- HDR10 (BT2020) color space, encoded according to SMPTE ST2084
-- Perceptual Quantizer (PQ) specification.
--
-- - 'COLOR_SPACE_HDR10_HLG_EXT' specifies support for the images in
-- HDR10 (BT2020) color space, encoded according to the Hybrid Log
-- Gamma (HLG) specification.
--
-- - 'COLOR_SPACE_ADOBERGB_LINEAR_EXT' specifies support for images in
-- Adobe RGB color space, encoded using a linear transfer function.
--
-- - 'COLOR_SPACE_ADOBERGB_NONLINEAR_EXT' specifies support for the
-- images in Adobe RGB color space, encoded according to the Adobe RGB
-- specification (approximately Gamma 2.2).
--
-- - 'COLOR_SPACE_PASS_THROUGH_EXT' specifies that color components are
-- used “as is”. This is intended to allow applications to supply data
-- for color spaces not described here.
--
-- - 'COLOR_SPACE_DISPLAY_NATIVE_AMD' specifies support for the display’s
-- native color space. This matches the color space expectations of
-- AMD’s FreeSync2 standard, for displays supporting it.
--
-- In the initial release of the @VK_KHR_surface@ and @VK_KHR_swapchain@
-- extensions, the token 'COLORSPACE_SRGB_NONLINEAR_KHR' was used. Starting
-- in the 2016-05-13 updates to the extension branches, matching release
-- 1.0.13 of the core API specification, 'COLOR_SPACE_SRGB_NONLINEAR_KHR'
-- is used instead for consistency with Vulkan naming rules. The older enum
-- is still available for backwards compatibility.
--
-- In older versions of this extension 'COLOR_SPACE_DISPLAY_P3_LINEAR_EXT'
-- was misnamed
-- 'Vulkan.Extensions.VK_EXT_swapchain_colorspace.COLOR_SPACE_DCI_P3_LINEAR_EXT'.
-- This has been updated to indicate that it uses RGB color encoding, not
-- XYZ. The old name is legacy but is maintained for backwards
-- compatibility.
--
-- In older versions of the @VK_EXT_swapchain_colorspace@ extension,
-- 'COLOR_SPACE_DOLBYVISION_EXT' was exposed. The intent was to indicate
-- the presentation engine shall decode an image using the SMPTE ST 2084
-- Perceptual Quantizer (PQ) EOTF, and then apply a proprietary OOTF to
-- process the image. However, Dolby Vision profile 8.4 describes an
-- encoding using the Hybrid Log Gamma (HLG) OETF, and there is no
-- swapchain extension for signaling Dolby Vision metadata to be used by a
-- proprietary OOTF. This enum is legacy but is maintained for backwards
-- compatibility.
--
-- For a traditional “Linear” or non-gamma transfer function color space
-- use 'COLOR_SPACE_PASS_THROUGH_EXT'.
--
-- On Wayland, 'COLOR_SPACE_PASS_THROUGH_EXT' can be used to disable color
-- management by the WSI on a surface, which makes it possible for the
-- application to create a @wp_color_management_surface_v1@ object without
-- triggering a @surface_exists@ protocol error.
--
-- See 'Vulkan.Extensions.VK_KHR_wayland_surface.createWaylandSurfaceKHR'
--
-- The presentation engine interprets the pixel values of the R, G, and B
-- components as having been encoded using an appropriate transfer
-- function. Applications /should/ ensure that the appropriate transfer
-- function has been applied.
-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#images-texel-encode Texel encode>
-- requires that all implementations implicitly apply the sRGB EOTF-1 on R,
-- G, and B components when shaders write to an sRGB pixel format image,
-- which is useful for sRGB color spaces. For sRGB color spaces with other
-- pixel formats, or other non-linear color spaces, applications /can/
-- apply the transfer function explicitly in a shader. The A channel is
-- always interpreted as linearly encoded.
--
-- This extension defines enums for 'ColorSpaceKHR' that correspond to the
-- following color spaces:
--
-- +--------------+----------+----------+----------+-------------+------------+
-- | Name | Red | Green | Blue | White-point | Transfer |
-- | | Primary | Primary | Primary | | function |
-- +==============+==========+==========+==========+=============+============+
-- | DCI-P3 | 1.000, | 0.000, | 0.000, | 0.3333, | DCI P3 |
-- | | 0.000 | 1.000 | 0.000 | 0.3333 | |
-- +--------------+----------+----------+----------+-------------+------------+
-- | Display-P3 | 0.680, | 0.265, | 0.150, | 0.3127, | Display-P3 |
-- | | 0.320 | 0.690 | 0.060 | 0.3290 | |
-- | | | | | (D65) | |
-- +--------------+----------+----------+----------+-------------+------------+
-- | BT709 | 0.640, | 0.300, | 0.150, | 0.3127, | BT709 |
-- | | 0.330 | 0.600 | 0.060 | 0.3290 | |
-- | | | | | (D65) | |
-- +--------------+----------+----------+----------+-------------+------------+
-- | sRGB | 0.640, | 0.300, | 0.150, | 0.3127, | sRGB |
-- | | 0.330 | 0.600 | 0.060 | 0.3290 | |
-- | | | | | (D65) | |
-- +--------------+----------+----------+----------+-------------+------------+
-- | extended | 0.640, | 0.300, | 0.150, | 0.3127, | scRGB |
-- | sRGB | 0.330 | 0.600 | 0.060 | 0.3290 | |
-- | | | | | (D65) | |
-- +--------------+----------+----------+----------+-------------+------------+
-- | HDR10_ST2084 | 0.708, | 0.170, | 0.131, | 0.3127, | ST2084 PQ |
-- | | 0.292 | 0.797 | 0.046 | 0.3290 | |
-- | | | | | (D65) | |
-- +--------------+----------+----------+----------+-------------+------------+
-- | HDR10_HLG | 0.708, | 0.170, | 0.131, | 0.3127, | HLG |
-- | | 0.292 | 0.797 | 0.046 | 0.3290 | |
-- | | | | | (D65) | |
-- +--------------+----------+----------+----------+-------------+------------+
-- | Adobe RGB | 0.640, | 0.210, | 0.150, | 0.3127, | Adobe RGB |
-- | | 0.330 | 0.710 | 0.060 | 0.3290 | |
-- | | | | | (D65) | |
-- +--------------+----------+----------+----------+-------------+------------+
--
-- Color Spaces and Attributes
--
-- The transfer functions are described in the “Transfer Functions” chapter
-- of the
-- <https://registry.khronos.org/vulkan/specs/latest/html/vkspec.html#data-format Khronos Data Format Specification>.
--
-- Except Display-P3 OETF, which is:
--
-- \[\begin{aligned}
-- E & =
-- \begin{cases}
-- 1.055 \times L^{1 \over 2.4} - 0.055 & \text{for}\ 0.0030186 \leq L \leq 1 \\
-- 12.92 \times L & \text{for}\ 0 \leq L < 0.0030186
-- \end{cases}
-- \end{aligned}\]
--
-- where L is the linear value of a color component and E is the encoded
-- value (as stored in the image in memory).
--
-- For most uses, the sRGB OETF is equivalent.
--
-- = See Also
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_surface VK_KHR_surface>,
-- 'SurfaceFormatKHR',
-- 'Vulkan.Extensions.VK_KHR_swapchain.SwapchainCreateInfoKHR'
newtype ColorSpaceKHR = ColorSpaceKHR Int32
deriving newtype (Eq, Ord, Storable, Zero)
-- No documentation found for Nested "VkColorSpaceKHR" "VK_COLOR_SPACE_SRGB_NONLINEAR_KHR"
pattern COLOR_SPACE_SRGB_NONLINEAR_KHR = ColorSpaceKHR 0
-- No documentation found for Nested "VkColorSpaceKHR" "VK_COLOR_SPACE_DISPLAY_NATIVE_AMD"
pattern COLOR_SPACE_DISPLAY_NATIVE_AMD = ColorSpaceKHR 1000213000
-- No documentation found for Nested "VkColorSpaceKHR" "VK_COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT"
pattern COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT = ColorSpaceKHR 1000104014
-- No documentation found for Nested "VkColorSpaceKHR" "VK_COLOR_SPACE_PASS_THROUGH_EXT"
pattern COLOR_SPACE_PASS_THROUGH_EXT = ColorSpaceKHR 1000104013
-- No documentation found for Nested "VkColorSpaceKHR" "VK_COLOR_SPACE_ADOBERGB_NONLINEAR_EXT"
pattern COLOR_SPACE_ADOBERGB_NONLINEAR_EXT = ColorSpaceKHR 1000104012
-- No documentation found for Nested "VkColorSpaceKHR" "VK_COLOR_SPACE_ADOBERGB_LINEAR_EXT"
pattern COLOR_SPACE_ADOBERGB_LINEAR_EXT = ColorSpaceKHR 1000104011
-- No documentation found for Nested "VkColorSpaceKHR" "VK_COLOR_SPACE_HDR10_HLG_EXT"
pattern COLOR_SPACE_HDR10_HLG_EXT = ColorSpaceKHR 1000104010
-- No documentation found for Nested "VkColorSpaceKHR" "VK_COLOR_SPACE_DOLBYVISION_EXT"
pattern COLOR_SPACE_DOLBYVISION_EXT = ColorSpaceKHR 1000104009
-- No documentation found for Nested "VkColorSpaceKHR" "VK_COLOR_SPACE_HDR10_ST2084_EXT"
pattern COLOR_SPACE_HDR10_ST2084_EXT = ColorSpaceKHR 1000104008
-- No documentation found for Nested "VkColorSpaceKHR" "VK_COLOR_SPACE_BT2020_LINEAR_EXT"
pattern COLOR_SPACE_BT2020_LINEAR_EXT = ColorSpaceKHR 1000104007
-- No documentation found for Nested "VkColorSpaceKHR" "VK_COLOR_SPACE_BT709_NONLINEAR_EXT"
pattern COLOR_SPACE_BT709_NONLINEAR_EXT = ColorSpaceKHR 1000104006
-- No documentation found for Nested "VkColorSpaceKHR" "VK_COLOR_SPACE_BT709_LINEAR_EXT"
pattern COLOR_SPACE_BT709_LINEAR_EXT = ColorSpaceKHR 1000104005
-- No documentation found for Nested "VkColorSpaceKHR" "VK_COLOR_SPACE_DCI_P3_NONLINEAR_EXT"
pattern COLOR_SPACE_DCI_P3_NONLINEAR_EXT = ColorSpaceKHR 1000104004
-- No documentation found for Nested "VkColorSpaceKHR" "VK_COLOR_SPACE_DISPLAY_P3_LINEAR_EXT"
pattern COLOR_SPACE_DISPLAY_P3_LINEAR_EXT = ColorSpaceKHR 1000104003
-- No documentation found for Nested "VkColorSpaceKHR" "VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT"
pattern COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT = ColorSpaceKHR 1000104002
-- No documentation found for Nested "VkColorSpaceKHR" "VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT"
pattern COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT = ColorSpaceKHR 1000104001
{-# COMPLETE
COLOR_SPACE_SRGB_NONLINEAR_KHR
, COLOR_SPACE_DISPLAY_NATIVE_AMD
, COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT
, COLOR_SPACE_PASS_THROUGH_EXT
, COLOR_SPACE_ADOBERGB_NONLINEAR_EXT
, COLOR_SPACE_ADOBERGB_LINEAR_EXT
, COLOR_SPACE_HDR10_HLG_EXT
, COLOR_SPACE_DOLBYVISION_EXT
, COLOR_SPACE_HDR10_ST2084_EXT
, COLOR_SPACE_BT2020_LINEAR_EXT
, COLOR_SPACE_BT709_NONLINEAR_EXT
, COLOR_SPACE_BT709_LINEAR_EXT
, COLOR_SPACE_DCI_P3_NONLINEAR_EXT
, COLOR_SPACE_DISPLAY_P3_LINEAR_EXT
, COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT
, COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT ::
ColorSpaceKHR
#-}
conNameColorSpaceKHR :: String
conNameColorSpaceKHR = "ColorSpaceKHR"
enumPrefixColorSpaceKHR :: String
enumPrefixColorSpaceKHR = "COLOR_SPACE_"
showTableColorSpaceKHR :: [(ColorSpaceKHR, String)]
showTableColorSpaceKHR =
[
( COLOR_SPACE_SRGB_NONLINEAR_KHR
, "SRGB_NONLINEAR_KHR"
)
,
( COLOR_SPACE_DISPLAY_NATIVE_AMD
, "DISPLAY_NATIVE_AMD"
)
,
( COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT
, "EXTENDED_SRGB_NONLINEAR_EXT"
)
, (COLOR_SPACE_PASS_THROUGH_EXT, "PASS_THROUGH_EXT")
,
( COLOR_SPACE_ADOBERGB_NONLINEAR_EXT
, "ADOBERGB_NONLINEAR_EXT"
)
,
( COLOR_SPACE_ADOBERGB_LINEAR_EXT
, "ADOBERGB_LINEAR_EXT"
)
, (COLOR_SPACE_HDR10_HLG_EXT, "HDR10_HLG_EXT")
, (COLOR_SPACE_DOLBYVISION_EXT, "DOLBYVISION_EXT")
, (COLOR_SPACE_HDR10_ST2084_EXT, "HDR10_ST2084_EXT")
, (COLOR_SPACE_BT2020_LINEAR_EXT, "BT2020_LINEAR_EXT")
,
( COLOR_SPACE_BT709_NONLINEAR_EXT
, "BT709_NONLINEAR_EXT"
)
, (COLOR_SPACE_BT709_LINEAR_EXT, "BT709_LINEAR_EXT")
,
( COLOR_SPACE_DCI_P3_NONLINEAR_EXT
, "DCI_P3_NONLINEAR_EXT"
)
,
( COLOR_SPACE_DISPLAY_P3_LINEAR_EXT
, "DISPLAY_P3_LINEAR_EXT"
)
,
( COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT
, "EXTENDED_SRGB_LINEAR_EXT"
)
,
( COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT
, "DISPLAY_P3_NONLINEAR_EXT"
)
]
instance Show ColorSpaceKHR where
showsPrec =
enumShowsPrec
enumPrefixColorSpaceKHR
showTableColorSpaceKHR
conNameColorSpaceKHR
(\(ColorSpaceKHR x) -> x)
(showsPrec 11)
instance Read ColorSpaceKHR where
readPrec =
enumReadPrec
enumPrefixColorSpaceKHR
showTableColorSpaceKHR
conNameColorSpaceKHR
ColorSpaceKHR
type CompositeAlphaFlagsKHR = CompositeAlphaFlagBitsKHR
-- | VkCompositeAlphaFlagBitsKHR - Alpha compositing modes supported on a
-- device
--
-- = Description
--
-- These values are described as follows:
--
-- - 'COMPOSITE_ALPHA_OPAQUE_BIT_KHR': The alpha component, if it exists,
-- of the images is ignored in the compositing process. Instead, the
-- image is treated as if it has a constant alpha of 1.0.
--
-- - 'COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR': The alpha component, if it
-- exists, of the images is respected in the compositing process. The
-- non-alpha components of the image are expected to already be
-- multiplied by the alpha component by the application.
--
-- - 'COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR': The alpha component, if
-- it exists, of the images is respected in the compositing process.
-- The non-alpha components of the image are not expected to already be
-- multiplied by the alpha component by the application; instead, the
-- compositor will multiply the non-alpha components of the image by
-- the alpha component during compositing.
--
-- - 'COMPOSITE_ALPHA_INHERIT_BIT_KHR': The way in which the presentation
-- engine treats the alpha component in the images is unknown to the
-- Vulkan API. Instead, the application is responsible for setting the
-- composite alpha blending mode using native window system commands.
-- If the application does not set the blending mode using native
-- window system commands, then a platform-specific default will be
-- used.
--
-- = See Also
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_surface VK_KHR_surface>,
-- 'CompositeAlphaFlagsKHR',
-- 'Vulkan.Extensions.VK_KHR_swapchain.SwapchainCreateInfoKHR'
newtype CompositeAlphaFlagBitsKHR = CompositeAlphaFlagBitsKHR Flags
deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
-- No documentation found for Nested "VkCompositeAlphaFlagBitsKHR" "VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR"
pattern COMPOSITE_ALPHA_OPAQUE_BIT_KHR = CompositeAlphaFlagBitsKHR 0x00000001
-- No documentation found for Nested "VkCompositeAlphaFlagBitsKHR" "VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR"
pattern COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR = CompositeAlphaFlagBitsKHR 0x00000002
-- No documentation found for Nested "VkCompositeAlphaFlagBitsKHR" "VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR"
pattern COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR = CompositeAlphaFlagBitsKHR 0x00000004
-- No documentation found for Nested "VkCompositeAlphaFlagBitsKHR" "VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR"
pattern COMPOSITE_ALPHA_INHERIT_BIT_KHR = CompositeAlphaFlagBitsKHR 0x00000008
conNameCompositeAlphaFlagBitsKHR :: String
conNameCompositeAlphaFlagBitsKHR = "CompositeAlphaFlagBitsKHR"
enumPrefixCompositeAlphaFlagBitsKHR :: String
enumPrefixCompositeAlphaFlagBitsKHR = "COMPOSITE_ALPHA_"
showTableCompositeAlphaFlagBitsKHR :: [(CompositeAlphaFlagBitsKHR, String)]
showTableCompositeAlphaFlagBitsKHR =
[
( COMPOSITE_ALPHA_OPAQUE_BIT_KHR
, "OPAQUE_BIT_KHR"
)
,
( COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR
, "PRE_MULTIPLIED_BIT_KHR"
)
,
( COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR
, "POST_MULTIPLIED_BIT_KHR"
)
,
( COMPOSITE_ALPHA_INHERIT_BIT_KHR
, "INHERIT_BIT_KHR"
)
]
instance Show CompositeAlphaFlagBitsKHR where
showsPrec =
enumShowsPrec
enumPrefixCompositeAlphaFlagBitsKHR
showTableCompositeAlphaFlagBitsKHR
conNameCompositeAlphaFlagBitsKHR
(\(CompositeAlphaFlagBitsKHR x) -> x)
(\x -> showString "0x" . showHex x)
instance Read CompositeAlphaFlagBitsKHR where
readPrec =
enumReadPrec
enumPrefixCompositeAlphaFlagBitsKHR
showTableCompositeAlphaFlagBitsKHR
conNameCompositeAlphaFlagBitsKHR
CompositeAlphaFlagBitsKHR
type SurfaceTransformFlagsKHR = SurfaceTransformFlagBitsKHR
-- | VkSurfaceTransformFlagBitsKHR - Presentation transforms supported on a
-- device
--
-- = Description
--
-- - 'SURFACE_TRANSFORM_IDENTITY_BIT_KHR' specifies that image content is
-- presented without being transformed.
--
-- - 'SURFACE_TRANSFORM_ROTATE_90_BIT_KHR' specifies that image content
-- is rotated 90 degrees clockwise.
--
-- - 'SURFACE_TRANSFORM_ROTATE_180_BIT_KHR' specifies that image content
-- is rotated 180 degrees clockwise.
--
-- - 'SURFACE_TRANSFORM_ROTATE_270_BIT_KHR' specifies that image content
-- is rotated 270 degrees clockwise.
--
-- - 'SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR' specifies that image
-- content is mirrored horizontally.
--
-- - 'SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR' specifies
-- that image content is mirrored horizontally, then rotated 90 degrees
-- clockwise.
--
-- - 'SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR' specifies
-- that image content is mirrored horizontally, then rotated 180
-- degrees clockwise.
--
-- - 'SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR' specifies
-- that image content is mirrored horizontally, then rotated 270
-- degrees clockwise.
--
-- - 'SURFACE_TRANSFORM_INHERIT_BIT_KHR' specifies that the presentation
-- transform is not specified, and is instead determined by
-- platform-specific considerations and mechanisms outside Vulkan.
--
-- = See Also
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_surface VK_KHR_surface>,
-- 'Vulkan.Extensions.VK_QCOM_render_pass_transform.CommandBufferInheritanceRenderPassTransformInfoQCOM',
-- 'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM',
-- 'Vulkan.Extensions.VK_KHR_display.DisplaySurfaceCreateInfoKHR',
-- 'Vulkan.Extensions.VK_QCOM_render_pass_transform.RenderPassTransformBeginInfoQCOM',
-- 'Vulkan.Extensions.VK_EXT_display_surface_counter.SurfaceCapabilities2EXT',
-- 'SurfaceCapabilitiesKHR', 'SurfaceTransformFlagsKHR',
-- 'Vulkan.Extensions.VK_KHR_swapchain.SwapchainCreateInfoKHR'
newtype SurfaceTransformFlagBitsKHR = SurfaceTransformFlagBitsKHR Flags
deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
-- No documentation found for Nested "VkSurfaceTransformFlagBitsKHR" "VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR"
pattern SURFACE_TRANSFORM_IDENTITY_BIT_KHR = SurfaceTransformFlagBitsKHR 0x00000001
-- No documentation found for Nested "VkSurfaceTransformFlagBitsKHR" "VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR"
pattern SURFACE_TRANSFORM_ROTATE_90_BIT_KHR = SurfaceTransformFlagBitsKHR 0x00000002
-- No documentation found for Nested "VkSurfaceTransformFlagBitsKHR" "VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR"
pattern SURFACE_TRANSFORM_ROTATE_180_BIT_KHR = SurfaceTransformFlagBitsKHR 0x00000004
-- No documentation found for Nested "VkSurfaceTransformFlagBitsKHR" "VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR"
pattern SURFACE_TRANSFORM_ROTATE_270_BIT_KHR = SurfaceTransformFlagBitsKHR 0x00000008
-- No documentation found for Nested "VkSurfaceTransformFlagBitsKHR" "VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR"
pattern SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR = SurfaceTransformFlagBitsKHR 0x00000010
-- No documentation found for Nested "VkSurfaceTransformFlagBitsKHR" "VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR"
pattern SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR = SurfaceTransformFlagBitsKHR 0x00000020
-- No documentation found for Nested "VkSurfaceTransformFlagBitsKHR" "VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR"
pattern SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR = SurfaceTransformFlagBitsKHR 0x00000040
-- No documentation found for Nested "VkSurfaceTransformFlagBitsKHR" "VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR"
pattern SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR = SurfaceTransformFlagBitsKHR 0x00000080
-- No documentation found for Nested "VkSurfaceTransformFlagBitsKHR" "VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR"
pattern SURFACE_TRANSFORM_INHERIT_BIT_KHR = SurfaceTransformFlagBitsKHR 0x00000100
conNameSurfaceTransformFlagBitsKHR :: String
conNameSurfaceTransformFlagBitsKHR = "SurfaceTransformFlagBitsKHR"
enumPrefixSurfaceTransformFlagBitsKHR :: String
enumPrefixSurfaceTransformFlagBitsKHR = "SURFACE_TRANSFORM_"
showTableSurfaceTransformFlagBitsKHR :: [(SurfaceTransformFlagBitsKHR, String)]
showTableSurfaceTransformFlagBitsKHR =
[
( SURFACE_TRANSFORM_IDENTITY_BIT_KHR
, "IDENTITY_BIT_KHR"
)
,
( SURFACE_TRANSFORM_ROTATE_90_BIT_KHR
, "ROTATE_90_BIT_KHR"
)
,
( SURFACE_TRANSFORM_ROTATE_180_BIT_KHR
, "ROTATE_180_BIT_KHR"
)
,
( SURFACE_TRANSFORM_ROTATE_270_BIT_KHR
, "ROTATE_270_BIT_KHR"
)
,
( SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR
, "HORIZONTAL_MIRROR_BIT_KHR"
)
,
( SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR
, "HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR"
)
,
( SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR
, "HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR"
)
,
( SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR
, "HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR"
)
,
( SURFACE_TRANSFORM_INHERIT_BIT_KHR
, "INHERIT_BIT_KHR"
)
]
instance Show SurfaceTransformFlagBitsKHR where
showsPrec =
enumShowsPrec
enumPrefixSurfaceTransformFlagBitsKHR
showTableSurfaceTransformFlagBitsKHR
conNameSurfaceTransformFlagBitsKHR
(\(SurfaceTransformFlagBitsKHR x) -> x)
(\x -> showString "0x" . showHex x)
instance Read SurfaceTransformFlagBitsKHR where
readPrec =
enumReadPrec
enumPrefixSurfaceTransformFlagBitsKHR
showTableSurfaceTransformFlagBitsKHR
conNameSurfaceTransformFlagBitsKHR
SurfaceTransformFlagBitsKHR
type KHR_SURFACE_SPEC_VERSION = 25
-- No documentation found for TopLevel "VK_KHR_SURFACE_SPEC_VERSION"
pattern KHR_SURFACE_SPEC_VERSION :: forall a . Integral a => a
pattern KHR_SURFACE_SPEC_VERSION = 25
type KHR_SURFACE_EXTENSION_NAME = "VK_KHR_surface"
-- No documentation found for TopLevel "VK_KHR_SURFACE_EXTENSION_NAME"
pattern KHR_SURFACE_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
pattern KHR_SURFACE_EXTENSION_NAME = "VK_KHR_surface"