{-# language CPP #-}
module Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits  ( ExternalMemoryHandleTypeFlagBits( EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT
                                                                                               , EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT
                                                                                               , EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT
                                                                                               , EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT
                                                                                               , EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT
                                                                                               , EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT
                                                                                               , EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT
                                                                                               , EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT
                                                                                               , EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT
                                                                                               , EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID
                                                                                               , EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT
                                                                                               , ..
                                                                                               )
                                                             , ExternalMemoryHandleTypeFlags
                                                             ) 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)
-- | VkExternalMemoryHandleTypeFlagBits - Bit specifying external memory
-- handle types
--
-- = Description
--
-- Some external memory 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_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT'                       | Must match                                                                                                 | Must match                                                                                                 |
-- +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+
-- | 'EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT'                    | Must match                                                                                                 | Must match                                                                                                 |
-- +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+
-- | 'EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT'                | Must match                                                                                                 | Must match                                                                                                 |
-- +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+
-- | 'EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT'                   | Must match                                                                                                 | Must match                                                                                                 |
-- +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+
-- | 'EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT'               | Must match                                                                                                 | Must match                                                                                                 |
-- +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+
-- | 'EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT'                      | Must match                                                                                                 | Must match                                                                                                 |
-- +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+
-- | 'EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT'                  | Must match                                                                                                 | Must match                                                                                                 |
-- +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+
-- | 'EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT'             | No restriction                                                                                             | No restriction                                                                                             |
-- +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+
-- | 'EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT'  | No restriction                                                                                             | No restriction                                                                                             |
-- +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+
-- | 'EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT'                     | No restriction                                                                                             | No restriction                                                                                             |
-- +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+
-- | 'EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID' | No restriction                                                                                             | No restriction                                                                                             |
-- +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+
--
-- External memory handle types compatibility
--
-- Note
--
-- The above table does not restrict the drivers and devices with which
-- 'EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT' and
-- 'EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT' /may/
-- be shared, as these handle types inherently mean memory that does not
-- come from the same device, as they import memory from the host or a
-- foreign device, respectively.
--
-- Note
--
-- Even though the above table does not restrict the drivers and devices
-- with which 'EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT' /may/ be
-- shared, query mechanisms exist in the Vulkan API that prevent the import
-- of incompatible dma-bufs (such as
-- 'Vulkan.Extensions.VK_KHR_external_memory_fd.getMemoryFdPropertiesKHR')
-- and that prevent incompatible usage of dma-bufs (such as
-- 'Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.PhysicalDeviceExternalBufferInfo'
-- and
-- 'Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.PhysicalDeviceExternalImageFormatInfo').
--
-- = See Also
--
-- 'ExternalMemoryHandleTypeFlags',
-- 'Vulkan.Extensions.VK_KHR_external_memory_fd.ImportMemoryFdInfoKHR',
-- 'Vulkan.Extensions.VK_EXT_external_memory_host.ImportMemoryHostPointerInfoEXT',
-- 'Vulkan.Extensions.VK_KHR_external_memory_win32.ImportMemoryWin32HandleInfoKHR',
-- 'Vulkan.Extensions.VK_KHR_external_memory_fd.MemoryGetFdInfoKHR',
-- 'Vulkan.Extensions.VK_KHR_external_memory_win32.MemoryGetWin32HandleInfoKHR',
-- 'Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.PhysicalDeviceExternalBufferInfo',
-- 'Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.PhysicalDeviceExternalImageFormatInfo',
-- 'Vulkan.Extensions.VK_KHR_external_memory_fd.getMemoryFdPropertiesKHR',
-- 'Vulkan.Extensions.VK_EXT_external_memory_host.getMemoryHostPointerPropertiesEXT',
-- 'Vulkan.Extensions.VK_KHR_external_memory_win32.getMemoryWin32HandlePropertiesKHR'
newtype ExternalMemoryHandleTypeFlagBits = ExternalMemoryHandleTypeFlagBits Flags
  deriving newtype (ExternalMemoryHandleTypeFlagBits
-> ExternalMemoryHandleTypeFlagBits -> Bool
(ExternalMemoryHandleTypeFlagBits
 -> ExternalMemoryHandleTypeFlagBits -> Bool)
-> (ExternalMemoryHandleTypeFlagBits
    -> ExternalMemoryHandleTypeFlagBits -> Bool)
-> Eq ExternalMemoryHandleTypeFlagBits
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ExternalMemoryHandleTypeFlagBits
-> ExternalMemoryHandleTypeFlagBits -> Bool
$c/= :: ExternalMemoryHandleTypeFlagBits
-> ExternalMemoryHandleTypeFlagBits -> Bool
== :: ExternalMemoryHandleTypeFlagBits
-> ExternalMemoryHandleTypeFlagBits -> Bool
$c== :: ExternalMemoryHandleTypeFlagBits
-> ExternalMemoryHandleTypeFlagBits -> Bool
Eq, Eq ExternalMemoryHandleTypeFlagBits
Eq ExternalMemoryHandleTypeFlagBits =>
(ExternalMemoryHandleTypeFlagBits
 -> ExternalMemoryHandleTypeFlagBits -> Ordering)
-> (ExternalMemoryHandleTypeFlagBits
    -> ExternalMemoryHandleTypeFlagBits -> Bool)
-> (ExternalMemoryHandleTypeFlagBits
    -> ExternalMemoryHandleTypeFlagBits -> Bool)
-> (ExternalMemoryHandleTypeFlagBits
    -> ExternalMemoryHandleTypeFlagBits -> Bool)
-> (ExternalMemoryHandleTypeFlagBits
    -> ExternalMemoryHandleTypeFlagBits -> Bool)
-> (ExternalMemoryHandleTypeFlagBits
    -> ExternalMemoryHandleTypeFlagBits
    -> ExternalMemoryHandleTypeFlagBits)
-> (ExternalMemoryHandleTypeFlagBits
    -> ExternalMemoryHandleTypeFlagBits
    -> ExternalMemoryHandleTypeFlagBits)
-> Ord ExternalMemoryHandleTypeFlagBits
ExternalMemoryHandleTypeFlagBits
-> ExternalMemoryHandleTypeFlagBits -> Bool
ExternalMemoryHandleTypeFlagBits
-> ExternalMemoryHandleTypeFlagBits -> Ordering
ExternalMemoryHandleTypeFlagBits
-> ExternalMemoryHandleTypeFlagBits
-> ExternalMemoryHandleTypeFlagBits
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: ExternalMemoryHandleTypeFlagBits
-> ExternalMemoryHandleTypeFlagBits
-> ExternalMemoryHandleTypeFlagBits
$cmin :: ExternalMemoryHandleTypeFlagBits
-> ExternalMemoryHandleTypeFlagBits
-> ExternalMemoryHandleTypeFlagBits
max :: ExternalMemoryHandleTypeFlagBits
-> ExternalMemoryHandleTypeFlagBits
-> ExternalMemoryHandleTypeFlagBits
$cmax :: ExternalMemoryHandleTypeFlagBits
-> ExternalMemoryHandleTypeFlagBits
-> ExternalMemoryHandleTypeFlagBits
>= :: ExternalMemoryHandleTypeFlagBits
-> ExternalMemoryHandleTypeFlagBits -> Bool
$c>= :: ExternalMemoryHandleTypeFlagBits
-> ExternalMemoryHandleTypeFlagBits -> Bool
> :: ExternalMemoryHandleTypeFlagBits
-> ExternalMemoryHandleTypeFlagBits -> Bool
$c> :: ExternalMemoryHandleTypeFlagBits
-> ExternalMemoryHandleTypeFlagBits -> Bool
<= :: ExternalMemoryHandleTypeFlagBits
-> ExternalMemoryHandleTypeFlagBits -> Bool
$c<= :: ExternalMemoryHandleTypeFlagBits
-> ExternalMemoryHandleTypeFlagBits -> Bool
< :: ExternalMemoryHandleTypeFlagBits
-> ExternalMemoryHandleTypeFlagBits -> Bool
$c< :: ExternalMemoryHandleTypeFlagBits
-> ExternalMemoryHandleTypeFlagBits -> Bool
compare :: ExternalMemoryHandleTypeFlagBits
-> ExternalMemoryHandleTypeFlagBits -> Ordering
$ccompare :: ExternalMemoryHandleTypeFlagBits
-> ExternalMemoryHandleTypeFlagBits -> Ordering
$cp1Ord :: Eq ExternalMemoryHandleTypeFlagBits
Ord, Ptr b -> Int -> IO ExternalMemoryHandleTypeFlagBits
Ptr b -> Int -> ExternalMemoryHandleTypeFlagBits -> IO ()
Ptr ExternalMemoryHandleTypeFlagBits
-> IO ExternalMemoryHandleTypeFlagBits
Ptr ExternalMemoryHandleTypeFlagBits
-> Int -> IO ExternalMemoryHandleTypeFlagBits
Ptr ExternalMemoryHandleTypeFlagBits
-> Int -> ExternalMemoryHandleTypeFlagBits -> IO ()
Ptr ExternalMemoryHandleTypeFlagBits
-> ExternalMemoryHandleTypeFlagBits -> IO ()
ExternalMemoryHandleTypeFlagBits -> Int
(ExternalMemoryHandleTypeFlagBits -> Int)
-> (ExternalMemoryHandleTypeFlagBits -> Int)
-> (Ptr ExternalMemoryHandleTypeFlagBits
    -> Int -> IO ExternalMemoryHandleTypeFlagBits)
-> (Ptr ExternalMemoryHandleTypeFlagBits
    -> Int -> ExternalMemoryHandleTypeFlagBits -> IO ())
-> (forall b. Ptr b -> Int -> IO ExternalMemoryHandleTypeFlagBits)
-> (forall b.
    Ptr b -> Int -> ExternalMemoryHandleTypeFlagBits -> IO ())
-> (Ptr ExternalMemoryHandleTypeFlagBits
    -> IO ExternalMemoryHandleTypeFlagBits)
-> (Ptr ExternalMemoryHandleTypeFlagBits
    -> ExternalMemoryHandleTypeFlagBits -> IO ())
-> Storable ExternalMemoryHandleTypeFlagBits
forall b. Ptr b -> Int -> IO ExternalMemoryHandleTypeFlagBits
forall b. Ptr b -> Int -> ExternalMemoryHandleTypeFlagBits -> IO ()
forall a.
(a -> Int)
-> (a -> Int)
-> (Ptr a -> Int -> IO a)
-> (Ptr a -> Int -> a -> IO ())
-> (forall b. Ptr b -> Int -> IO a)
-> (forall b. Ptr b -> Int -> a -> IO ())
-> (Ptr a -> IO a)
-> (Ptr a -> a -> IO ())
-> Storable a
poke :: Ptr ExternalMemoryHandleTypeFlagBits
-> ExternalMemoryHandleTypeFlagBits -> IO ()
$cpoke :: Ptr ExternalMemoryHandleTypeFlagBits
-> ExternalMemoryHandleTypeFlagBits -> IO ()
peek :: Ptr ExternalMemoryHandleTypeFlagBits
-> IO ExternalMemoryHandleTypeFlagBits
$cpeek :: Ptr ExternalMemoryHandleTypeFlagBits
-> IO ExternalMemoryHandleTypeFlagBits
pokeByteOff :: Ptr b -> Int -> ExternalMemoryHandleTypeFlagBits -> IO ()
$cpokeByteOff :: forall b. Ptr b -> Int -> ExternalMemoryHandleTypeFlagBits -> IO ()
peekByteOff :: Ptr b -> Int -> IO ExternalMemoryHandleTypeFlagBits
$cpeekByteOff :: forall b. Ptr b -> Int -> IO ExternalMemoryHandleTypeFlagBits
pokeElemOff :: Ptr ExternalMemoryHandleTypeFlagBits
-> Int -> ExternalMemoryHandleTypeFlagBits -> IO ()
$cpokeElemOff :: Ptr ExternalMemoryHandleTypeFlagBits
-> Int -> ExternalMemoryHandleTypeFlagBits -> IO ()
peekElemOff :: Ptr ExternalMemoryHandleTypeFlagBits
-> Int -> IO ExternalMemoryHandleTypeFlagBits
$cpeekElemOff :: Ptr ExternalMemoryHandleTypeFlagBits
-> Int -> IO ExternalMemoryHandleTypeFlagBits
alignment :: ExternalMemoryHandleTypeFlagBits -> Int
$calignment :: ExternalMemoryHandleTypeFlagBits -> Int
sizeOf :: ExternalMemoryHandleTypeFlagBits -> Int
$csizeOf :: ExternalMemoryHandleTypeFlagBits -> Int
Storable, ExternalMemoryHandleTypeFlagBits
ExternalMemoryHandleTypeFlagBits
-> Zero ExternalMemoryHandleTypeFlagBits
forall a. a -> Zero a
zero :: ExternalMemoryHandleTypeFlagBits
$czero :: ExternalMemoryHandleTypeFlagBits
Zero, Eq ExternalMemoryHandleTypeFlagBits
ExternalMemoryHandleTypeFlagBits
Eq ExternalMemoryHandleTypeFlagBits =>
(ExternalMemoryHandleTypeFlagBits
 -> ExternalMemoryHandleTypeFlagBits
 -> ExternalMemoryHandleTypeFlagBits)
-> (ExternalMemoryHandleTypeFlagBits
    -> ExternalMemoryHandleTypeFlagBits
    -> ExternalMemoryHandleTypeFlagBits)
-> (ExternalMemoryHandleTypeFlagBits
    -> ExternalMemoryHandleTypeFlagBits
    -> ExternalMemoryHandleTypeFlagBits)
-> (ExternalMemoryHandleTypeFlagBits
    -> ExternalMemoryHandleTypeFlagBits)
-> (ExternalMemoryHandleTypeFlagBits
    -> Int -> ExternalMemoryHandleTypeFlagBits)
-> (ExternalMemoryHandleTypeFlagBits
    -> Int -> ExternalMemoryHandleTypeFlagBits)
-> ExternalMemoryHandleTypeFlagBits
-> (Int -> ExternalMemoryHandleTypeFlagBits)
-> (ExternalMemoryHandleTypeFlagBits
    -> Int -> ExternalMemoryHandleTypeFlagBits)
-> (ExternalMemoryHandleTypeFlagBits
    -> Int -> ExternalMemoryHandleTypeFlagBits)
-> (ExternalMemoryHandleTypeFlagBits
    -> Int -> ExternalMemoryHandleTypeFlagBits)
-> (ExternalMemoryHandleTypeFlagBits -> Int -> Bool)
-> (ExternalMemoryHandleTypeFlagBits -> Maybe Int)
-> (ExternalMemoryHandleTypeFlagBits -> Int)
-> (ExternalMemoryHandleTypeFlagBits -> Bool)
-> (ExternalMemoryHandleTypeFlagBits
    -> Int -> ExternalMemoryHandleTypeFlagBits)
-> (ExternalMemoryHandleTypeFlagBits
    -> Int -> ExternalMemoryHandleTypeFlagBits)
-> (ExternalMemoryHandleTypeFlagBits
    -> Int -> ExternalMemoryHandleTypeFlagBits)
-> (ExternalMemoryHandleTypeFlagBits
    -> Int -> ExternalMemoryHandleTypeFlagBits)
-> (ExternalMemoryHandleTypeFlagBits
    -> Int -> ExternalMemoryHandleTypeFlagBits)
-> (ExternalMemoryHandleTypeFlagBits
    -> Int -> ExternalMemoryHandleTypeFlagBits)
-> (ExternalMemoryHandleTypeFlagBits -> Int)
-> Bits ExternalMemoryHandleTypeFlagBits
Int -> ExternalMemoryHandleTypeFlagBits
ExternalMemoryHandleTypeFlagBits -> Bool
ExternalMemoryHandleTypeFlagBits -> Int
ExternalMemoryHandleTypeFlagBits -> Maybe Int
ExternalMemoryHandleTypeFlagBits
-> ExternalMemoryHandleTypeFlagBits
ExternalMemoryHandleTypeFlagBits -> Int -> Bool
ExternalMemoryHandleTypeFlagBits
-> Int -> ExternalMemoryHandleTypeFlagBits
ExternalMemoryHandleTypeFlagBits
-> ExternalMemoryHandleTypeFlagBits
-> ExternalMemoryHandleTypeFlagBits
forall a.
Eq a =>
(a -> a -> a)
-> (a -> a -> a)
-> (a -> a -> a)
-> (a -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> a
-> (Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> Bool)
-> (a -> Maybe Int)
-> (a -> Int)
-> (a -> Bool)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int)
-> Bits a
popCount :: ExternalMemoryHandleTypeFlagBits -> Int
$cpopCount :: ExternalMemoryHandleTypeFlagBits -> Int
rotateR :: ExternalMemoryHandleTypeFlagBits
-> Int -> ExternalMemoryHandleTypeFlagBits
$crotateR :: ExternalMemoryHandleTypeFlagBits
-> Int -> ExternalMemoryHandleTypeFlagBits
rotateL :: ExternalMemoryHandleTypeFlagBits
-> Int -> ExternalMemoryHandleTypeFlagBits
$crotateL :: ExternalMemoryHandleTypeFlagBits
-> Int -> ExternalMemoryHandleTypeFlagBits
unsafeShiftR :: ExternalMemoryHandleTypeFlagBits
-> Int -> ExternalMemoryHandleTypeFlagBits
$cunsafeShiftR :: ExternalMemoryHandleTypeFlagBits
-> Int -> ExternalMemoryHandleTypeFlagBits
shiftR :: ExternalMemoryHandleTypeFlagBits
-> Int -> ExternalMemoryHandleTypeFlagBits
$cshiftR :: ExternalMemoryHandleTypeFlagBits
-> Int -> ExternalMemoryHandleTypeFlagBits
unsafeShiftL :: ExternalMemoryHandleTypeFlagBits
-> Int -> ExternalMemoryHandleTypeFlagBits
$cunsafeShiftL :: ExternalMemoryHandleTypeFlagBits
-> Int -> ExternalMemoryHandleTypeFlagBits
shiftL :: ExternalMemoryHandleTypeFlagBits
-> Int -> ExternalMemoryHandleTypeFlagBits
$cshiftL :: ExternalMemoryHandleTypeFlagBits
-> Int -> ExternalMemoryHandleTypeFlagBits
isSigned :: ExternalMemoryHandleTypeFlagBits -> Bool
$cisSigned :: ExternalMemoryHandleTypeFlagBits -> Bool
bitSize :: ExternalMemoryHandleTypeFlagBits -> Int
$cbitSize :: ExternalMemoryHandleTypeFlagBits -> Int
bitSizeMaybe :: ExternalMemoryHandleTypeFlagBits -> Maybe Int
$cbitSizeMaybe :: ExternalMemoryHandleTypeFlagBits -> Maybe Int
testBit :: ExternalMemoryHandleTypeFlagBits -> Int -> Bool
$ctestBit :: ExternalMemoryHandleTypeFlagBits -> Int -> Bool
complementBit :: ExternalMemoryHandleTypeFlagBits
-> Int -> ExternalMemoryHandleTypeFlagBits
$ccomplementBit :: ExternalMemoryHandleTypeFlagBits
-> Int -> ExternalMemoryHandleTypeFlagBits
clearBit :: ExternalMemoryHandleTypeFlagBits
-> Int -> ExternalMemoryHandleTypeFlagBits
$cclearBit :: ExternalMemoryHandleTypeFlagBits
-> Int -> ExternalMemoryHandleTypeFlagBits
setBit :: ExternalMemoryHandleTypeFlagBits
-> Int -> ExternalMemoryHandleTypeFlagBits
$csetBit :: ExternalMemoryHandleTypeFlagBits
-> Int -> ExternalMemoryHandleTypeFlagBits
bit :: Int -> ExternalMemoryHandleTypeFlagBits
$cbit :: Int -> ExternalMemoryHandleTypeFlagBits
zeroBits :: ExternalMemoryHandleTypeFlagBits
$czeroBits :: ExternalMemoryHandleTypeFlagBits
rotate :: ExternalMemoryHandleTypeFlagBits
-> Int -> ExternalMemoryHandleTypeFlagBits
$crotate :: ExternalMemoryHandleTypeFlagBits
-> Int -> ExternalMemoryHandleTypeFlagBits
shift :: ExternalMemoryHandleTypeFlagBits
-> Int -> ExternalMemoryHandleTypeFlagBits
$cshift :: ExternalMemoryHandleTypeFlagBits
-> Int -> ExternalMemoryHandleTypeFlagBits
complement :: ExternalMemoryHandleTypeFlagBits
-> ExternalMemoryHandleTypeFlagBits
$ccomplement :: ExternalMemoryHandleTypeFlagBits
-> ExternalMemoryHandleTypeFlagBits
xor :: ExternalMemoryHandleTypeFlagBits
-> ExternalMemoryHandleTypeFlagBits
-> ExternalMemoryHandleTypeFlagBits
$cxor :: ExternalMemoryHandleTypeFlagBits
-> ExternalMemoryHandleTypeFlagBits
-> ExternalMemoryHandleTypeFlagBits
.|. :: ExternalMemoryHandleTypeFlagBits
-> ExternalMemoryHandleTypeFlagBits
-> ExternalMemoryHandleTypeFlagBits
$c.|. :: ExternalMemoryHandleTypeFlagBits
-> ExternalMemoryHandleTypeFlagBits
-> ExternalMemoryHandleTypeFlagBits
.&. :: ExternalMemoryHandleTypeFlagBits
-> ExternalMemoryHandleTypeFlagBits
-> ExternalMemoryHandleTypeFlagBits
$c.&. :: ExternalMemoryHandleTypeFlagBits
-> ExternalMemoryHandleTypeFlagBits
-> ExternalMemoryHandleTypeFlagBits
$cp1Bits :: Eq ExternalMemoryHandleTypeFlagBits
Bits)

-- | 'EXTERNAL_MEMORY_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
-- memory resource represented by its Vulkan memory object.
pattern $bEXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT :: ExternalMemoryHandleTypeFlagBits
$mEXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT :: forall r.
ExternalMemoryHandleTypeFlagBits
-> (Void# -> r) -> (Void# -> r) -> r
EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT = ExternalMemoryHandleTypeFlagBits 0x00000001
-- | 'EXTERNAL_MEMORY_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 memory
-- resource represented by its Vulkan memory object.
pattern $bEXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT :: ExternalMemoryHandleTypeFlagBits
$mEXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT :: forall r.
ExternalMemoryHandleTypeFlagBits
-> (Void# -> r) -> (Void# -> r) -> r
EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT = ExternalMemoryHandleTypeFlagBits 0x00000002
-- | 'EXTERNAL_MEMORY_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 memory resource represented
-- its Vulkan memory object, and will therefore become invalid when all
-- Vulkan memory objects associated with it are destroyed.
pattern $bEXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT :: ExternalMemoryHandleTypeFlagBits
$mEXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT :: forall r.
ExternalMemoryHandleTypeFlagBits
-> (Void# -> r) -> (Void# -> r) -> r
EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = ExternalMemoryHandleTypeFlagBits 0x00000004
-- | 'EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT' specifies an NT handle
-- returned by @IDXGIResource1@::@CreateSharedHandle@ referring to a
-- Direct3D 10 or 11 texture resource. It owns a reference to the memory
-- used by the Direct3D resource.
pattern $bEXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT :: ExternalMemoryHandleTypeFlagBits
$mEXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT :: forall r.
ExternalMemoryHandleTypeFlagBits
-> (Void# -> r) -> (Void# -> r) -> r
EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT = ExternalMemoryHandleTypeFlagBits 0x00000008
-- | 'EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT' specifies a global
-- share handle returned by @IDXGIResource@::@GetSharedHandle@ referring to
-- a Direct3D 10 or 11 texture resource. It does not own a reference to the
-- underlying Direct3D resource, and will therefore become invalid when all
-- Vulkan memory objects and Direct3D resources associated with it are
-- destroyed.
pattern $bEXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT :: ExternalMemoryHandleTypeFlagBits
$mEXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT :: forall r.
ExternalMemoryHandleTypeFlagBits
-> (Void# -> r) -> (Void# -> r) -> r
EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT = ExternalMemoryHandleTypeFlagBits 0x00000010
-- | 'EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT' specifies an NT handle
-- returned by @ID3D12Device@::@CreateSharedHandle@ referring to a Direct3D
-- 12 heap resource. It owns a reference to the resources used by the
-- Direct3D heap.
pattern $bEXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT :: ExternalMemoryHandleTypeFlagBits
$mEXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT :: forall r.
ExternalMemoryHandleTypeFlagBits
-> (Void# -> r) -> (Void# -> r) -> r
EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT = ExternalMemoryHandleTypeFlagBits 0x00000020
-- | 'EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT' specifies an NT handle
-- returned by @ID3D12Device@::@CreateSharedHandle@ referring to a Direct3D
-- 12 committed resource. It owns a reference to the memory used by the
-- Direct3D resource.
pattern $bEXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT :: ExternalMemoryHandleTypeFlagBits
$mEXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT :: forall r.
ExternalMemoryHandleTypeFlagBits
-> (Void# -> r) -> (Void# -> r) -> r
EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT = ExternalMemoryHandleTypeFlagBits 0x00000040
-- | 'EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT'
-- specifies a host pointer to /host mapped foreign memory/. It does not
-- own a reference to the underlying memory resource, and will therefore
-- become invalid if the foreign memory is unmapped or otherwise becomes no
-- longer available.
pattern $bEXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT :: ExternalMemoryHandleTypeFlagBits
$mEXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT :: forall r.
ExternalMemoryHandleTypeFlagBits
-> (Void# -> r) -> (Void# -> r) -> r
EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT = ExternalMemoryHandleTypeFlagBits 0x00000100
-- | 'EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT' specifies a host
-- pointer returned by a host memory allocation command. It does not own a
-- reference to the underlying memory resource, and will therefore become
-- invalid if the host memory is freed.
pattern $bEXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT :: ExternalMemoryHandleTypeFlagBits
$mEXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT :: forall r.
ExternalMemoryHandleTypeFlagBits
-> (Void# -> r) -> (Void# -> r) -> r
EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT = ExternalMemoryHandleTypeFlagBits 0x00000080
-- | 'EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID'
-- specifies an
-- 'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.AHardwareBuffer'
-- object defined by the Android NDK. See
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-external-android-hardware-buffer Android Hardware Buffers>
-- for more details of this handle type.
pattern $bEXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID :: ExternalMemoryHandleTypeFlagBits
$mEXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID :: forall r.
ExternalMemoryHandleTypeFlagBits
-> (Void# -> r) -> (Void# -> r) -> r
EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID = ExternalMemoryHandleTypeFlagBits 0x00000400
-- | 'EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT' is a file descriptor for a
-- Linux dma_buf. It owns a reference to the underlying memory resource
-- represented by its Vulkan memory object.
pattern $bEXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT :: ExternalMemoryHandleTypeFlagBits
$mEXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT :: forall r.
ExternalMemoryHandleTypeFlagBits
-> (Void# -> r) -> (Void# -> r) -> r
EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT = ExternalMemoryHandleTypeFlagBits 0x00000200

type ExternalMemoryHandleTypeFlags = ExternalMemoryHandleTypeFlagBits

instance Show ExternalMemoryHandleTypeFlagBits where
  showsPrec :: Int -> ExternalMemoryHandleTypeFlagBits -> ShowS
showsPrec p :: Int
p = \case
    EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT -> String -> ShowS
showString "EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT"
    EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT -> String -> ShowS
showString "EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT"
    EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT -> String -> ShowS
showString "EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT"
    EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT -> String -> ShowS
showString "EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT"
    EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT -> String -> ShowS
showString "EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT"
    EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT -> String -> ShowS
showString "EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT"
    EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT -> String -> ShowS
showString "EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT"
    EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT -> String -> ShowS
showString "EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT"
    EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT -> String -> ShowS
showString "EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT"
    EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID -> String -> ShowS
showString "EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID"
    EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT -> String -> ShowS
showString "EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT"
    ExternalMemoryHandleTypeFlagBits x :: Flags
x -> Bool -> ShowS -> ShowS
showParen (Int
p Int -> Int -> Bool
forall a. Ord a => a -> a -> Bool
>= 11) (String -> ShowS
showString "ExternalMemoryHandleTypeFlagBits 0x" ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Flags -> ShowS
forall a. (Integral a, Show a) => a -> ShowS
showHex Flags
x)

instance Read ExternalMemoryHandleTypeFlagBits where
  readPrec :: ReadPrec ExternalMemoryHandleTypeFlagBits
readPrec = ReadPrec ExternalMemoryHandleTypeFlagBits
-> ReadPrec ExternalMemoryHandleTypeFlagBits
forall a. ReadPrec a -> ReadPrec a
parens ([(String, ReadPrec ExternalMemoryHandleTypeFlagBits)]
-> ReadPrec ExternalMemoryHandleTypeFlagBits
forall a. [(String, ReadPrec a)] -> ReadPrec a
choose [("EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT", ExternalMemoryHandleTypeFlagBits
-> ReadPrec ExternalMemoryHandleTypeFlagBits
forall (f :: * -> *) a. Applicative f => a -> f a
pure ExternalMemoryHandleTypeFlagBits
EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT)
                            , ("EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT", ExternalMemoryHandleTypeFlagBits
-> ReadPrec ExternalMemoryHandleTypeFlagBits
forall (f :: * -> *) a. Applicative f => a -> f a
pure ExternalMemoryHandleTypeFlagBits
EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT)
                            , ("EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT", ExternalMemoryHandleTypeFlagBits
-> ReadPrec ExternalMemoryHandleTypeFlagBits
forall (f :: * -> *) a. Applicative f => a -> f a
pure ExternalMemoryHandleTypeFlagBits
EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT)
                            , ("EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT", ExternalMemoryHandleTypeFlagBits
-> ReadPrec ExternalMemoryHandleTypeFlagBits
forall (f :: * -> *) a. Applicative f => a -> f a
pure ExternalMemoryHandleTypeFlagBits
EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT)
                            , ("EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT", ExternalMemoryHandleTypeFlagBits
-> ReadPrec ExternalMemoryHandleTypeFlagBits
forall (f :: * -> *) a. Applicative f => a -> f a
pure ExternalMemoryHandleTypeFlagBits
EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT)
                            , ("EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT", ExternalMemoryHandleTypeFlagBits
-> ReadPrec ExternalMemoryHandleTypeFlagBits
forall (f :: * -> *) a. Applicative f => a -> f a
pure ExternalMemoryHandleTypeFlagBits
EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT)
                            , ("EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT", ExternalMemoryHandleTypeFlagBits
-> ReadPrec ExternalMemoryHandleTypeFlagBits
forall (f :: * -> *) a. Applicative f => a -> f a
pure ExternalMemoryHandleTypeFlagBits
EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT)
                            , ("EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT", ExternalMemoryHandleTypeFlagBits
-> ReadPrec ExternalMemoryHandleTypeFlagBits
forall (f :: * -> *) a. Applicative f => a -> f a
pure ExternalMemoryHandleTypeFlagBits
EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT)
                            , ("EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT", ExternalMemoryHandleTypeFlagBits
-> ReadPrec ExternalMemoryHandleTypeFlagBits
forall (f :: * -> *) a. Applicative f => a -> f a
pure ExternalMemoryHandleTypeFlagBits
EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT)
                            , ("EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID", ExternalMemoryHandleTypeFlagBits
-> ReadPrec ExternalMemoryHandleTypeFlagBits
forall (f :: * -> *) a. Applicative f => a -> f a
pure ExternalMemoryHandleTypeFlagBits
EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID)
                            , ("EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT", ExternalMemoryHandleTypeFlagBits
-> ReadPrec ExternalMemoryHandleTypeFlagBits
forall (f :: * -> *) a. Applicative f => a -> f a
pure ExternalMemoryHandleTypeFlagBits
EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT)]
                     ReadPrec ExternalMemoryHandleTypeFlagBits
-> ReadPrec ExternalMemoryHandleTypeFlagBits
-> ReadPrec ExternalMemoryHandleTypeFlagBits
forall a. ReadPrec a -> ReadPrec a -> ReadPrec a
+++
                     Int
-> ReadPrec ExternalMemoryHandleTypeFlagBits
-> ReadPrec ExternalMemoryHandleTypeFlagBits
forall a. Int -> ReadPrec a -> ReadPrec a
prec 10 (do
                       Lexeme -> ReadPrec ()
expectP (String -> Lexeme
Ident "ExternalMemoryHandleTypeFlagBits")
                       Flags
v <- ReadPrec Flags -> ReadPrec Flags
forall a. ReadPrec a -> ReadPrec a
step ReadPrec Flags
forall a. Read a => ReadPrec a
readPrec
                       ExternalMemoryHandleTypeFlagBits
-> ReadPrec ExternalMemoryHandleTypeFlagBits
forall (f :: * -> *) a. Applicative f => a -> f a
pure (Flags -> ExternalMemoryHandleTypeFlagBits
ExternalMemoryHandleTypeFlagBits Flags
v)))