{-# language CPP #-} module Vulkan.Core11.Enums.ExternalFenceHandleTypeFlagBits ( ExternalFenceHandleTypeFlagBits( EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT , EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT , EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT , EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT , .. ) , ExternalFenceHandleTypeFlags ) where import GHC.Read (choose) import GHC.Read (expectP) import GHC.Read (parens) import GHC.Show (showParen) import GHC.Show (showString) import Numeric (showHex) import Text.ParserCombinators.ReadPrec ((+++)) import Text.ParserCombinators.ReadPrec (prec) import Text.ParserCombinators.ReadPrec (step) import Data.Bits (Bits) import Foreign.Storable (Storable) import GHC.Read (Read(readPrec)) import Text.Read.Lex (Lexeme(Ident)) import Vulkan.Core10.FundamentalTypes (Flags) import Vulkan.Zero (Zero) -- | VkExternalFenceHandleTypeFlagBits - Bitmask of valid external fence -- handle types -- -- = Description -- -- Some external fence handle types can only be shared within the same -- underlying physical device and\/or the same driver version, as defined -- in the following table: -- -- +---------------------------------------------------+------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+ -- | Handle type | 'Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.PhysicalDeviceIDProperties'::@driverUUID@ | 'Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.PhysicalDeviceIDProperties'::@deviceUUID@ | -- +---------------------------------------------------+------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+ -- | 'EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT' | Must match | Must match | -- +---------------------------------------------------+------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+ -- | 'EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT' | Must match | Must match | -- +---------------------------------------------------+------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+ -- | 'EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT' | Must match | Must match | -- +---------------------------------------------------+------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+ -- | 'EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT' | No restriction | No restriction | -- +---------------------------------------------------+------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+ -- -- External fence handle types compatibility -- -- = See Also -- -- 'ExternalFenceHandleTypeFlags', -- 'Vulkan.Extensions.VK_KHR_external_fence_fd.FenceGetFdInfoKHR', -- 'Vulkan.Extensions.VK_KHR_external_fence_win32.FenceGetWin32HandleInfoKHR', -- 'Vulkan.Extensions.VK_KHR_external_fence_fd.ImportFenceFdInfoKHR', -- 'Vulkan.Extensions.VK_KHR_external_fence_win32.ImportFenceWin32HandleInfoKHR', -- 'Vulkan.Core11.Promoted_From_VK_KHR_external_fence_capabilities.PhysicalDeviceExternalFenceInfo' newtype ExternalFenceHandleTypeFlagBits = ExternalFenceHandleTypeFlagBits Flags deriving newtype (Eq, Ord, Storable, Zero, Bits) -- | 'EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT' specifies a POSIX file -- descriptor handle that has only limited valid usage outside of Vulkan -- and other compatible APIs. It /must/ be compatible with the POSIX system -- calls @dup@, @dup2@, @close@, and the non-standard system call @dup3@. -- Additionally, it /must/ be transportable over a socket using an -- @SCM_RIGHTS@ control message. It owns a reference to the underlying -- synchronization primitive represented by its Vulkan fence object. pattern EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT = ExternalFenceHandleTypeFlagBits 0x00000001 -- | 'EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT' specifies an NT handle -- that has only limited valid usage outside of Vulkan and other compatible -- APIs. It /must/ be compatible with the functions @DuplicateHandle@, -- @CloseHandle@, @CompareObjectHandles@, @GetHandleInformation@, and -- @SetHandleInformation@. It owns a reference to the underlying -- synchronization primitive represented by its Vulkan fence object. pattern EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT = ExternalFenceHandleTypeFlagBits 0x00000002 -- | 'EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT' specifies a global -- share handle that has only limited valid usage outside of Vulkan and -- other compatible APIs. It is not compatible with any native APIs. It -- does not own a reference to the underlying synchronization primitive -- represented by its Vulkan fence object, and will therefore become -- invalid when all Vulkan fence objects associated with it are destroyed. pattern EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = ExternalFenceHandleTypeFlagBits 0x00000004 -- | 'EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT' specifies a POSIX file -- descriptor handle to a Linux Sync File or Android Fence. It can be used -- with any native API accepting a valid sync file or fence as input. It -- owns a reference to the underlying synchronization primitive associated -- with the file descriptor. Implementations which support importing this -- handle type /must/ accept any type of sync or fence FD supported by the -- native system they are running on. pattern EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT = ExternalFenceHandleTypeFlagBits 0x00000008 type ExternalFenceHandleTypeFlags = ExternalFenceHandleTypeFlagBits instance Show ExternalFenceHandleTypeFlagBits where showsPrec p = \case EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT -> showString "EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT" EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT -> showString "EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT" EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT -> showString "EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT" EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT -> showString "EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT" ExternalFenceHandleTypeFlagBits x -> showParen (p >= 11) (showString "ExternalFenceHandleTypeFlagBits 0x" . showHex x) instance Read ExternalFenceHandleTypeFlagBits where readPrec = parens (choose [("EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT", pure EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT) , ("EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT", pure EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT) , ("EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT", pure EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT) , ("EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT", pure EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT)] +++ prec 10 (do expectP (Ident "ExternalFenceHandleTypeFlagBits") v <- step readPrec pure (ExternalFenceHandleTypeFlagBits v)))