{-# language CPP #-}
-- No documentation found for Chapter "ExternalMemoryHandleTypeFlagBits"
module Vulkan.Core11.Enums.ExternalMemoryHandleTypeFlagBits  ( ExternalMemoryHandleTypeFlags
                                                             , 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
                                                                                               , ..
                                                                                               )
                                                             ) where

import Vulkan.Internal.Utils (enumReadPrec)
import Vulkan.Internal.Utils (enumShowsPrec)
import GHC.Show (showString)
import Numeric (showHex)
import Vulkan.Zero (Zero)
import Data.Bits (Bits)
import Data.Bits (FiniteBits)
import Foreign.Storable (Storable)
import GHC.Read (Read(readPrec))
import GHC.Show (Show(showsPrec))
import Vulkan.Core10.FundamentalTypes (Flags)
type ExternalMemoryHandleTypeFlags = ExternalMemoryHandleTypeFlagBits

-- | 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, Bits ExternalMemoryHandleTypeFlagBits
Bits ExternalMemoryHandleTypeFlagBits =>
(ExternalMemoryHandleTypeFlagBits -> Int)
-> (ExternalMemoryHandleTypeFlagBits -> Int)
-> (ExternalMemoryHandleTypeFlagBits -> Int)
-> FiniteBits ExternalMemoryHandleTypeFlagBits
ExternalMemoryHandleTypeFlagBits -> Int
forall b.
Bits b =>
(b -> Int) -> (b -> Int) -> (b -> Int) -> FiniteBits b
countTrailingZeros :: ExternalMemoryHandleTypeFlagBits -> Int
$ccountTrailingZeros :: ExternalMemoryHandleTypeFlagBits -> Int
countLeadingZeros :: ExternalMemoryHandleTypeFlagBits -> Int
$ccountLeadingZeros :: ExternalMemoryHandleTypeFlagBits -> Int
finiteBitSize :: ExternalMemoryHandleTypeFlagBits -> Int
$cfiniteBitSize :: ExternalMemoryHandleTypeFlagBits -> Int
$cp1FiniteBits :: Bits ExternalMemoryHandleTypeFlagBits
FiniteBits)

-- | '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

conNameExternalMemoryHandleTypeFlagBits :: String
conNameExternalMemoryHandleTypeFlagBits :: String
conNameExternalMemoryHandleTypeFlagBits = "ExternalMemoryHandleTypeFlagBits"

enumPrefixExternalMemoryHandleTypeFlagBits :: String
enumPrefixExternalMemoryHandleTypeFlagBits :: String
enumPrefixExternalMemoryHandleTypeFlagBits = "EXTERNAL_MEMORY_HANDLE_TYPE_"

showTableExternalMemoryHandleTypeFlagBits :: [(ExternalMemoryHandleTypeFlagBits, String)]
showTableExternalMemoryHandleTypeFlagBits :: [(ExternalMemoryHandleTypeFlagBits, String)]
showTableExternalMemoryHandleTypeFlagBits =
  [ (ExternalMemoryHandleTypeFlagBits
EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT                      , "OPAQUE_FD_BIT")
  , (ExternalMemoryHandleTypeFlagBits
EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT                   , "OPAQUE_WIN32_BIT")
  , (ExternalMemoryHandleTypeFlagBits
EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT               , "OPAQUE_WIN32_KMT_BIT")
  , (ExternalMemoryHandleTypeFlagBits
EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT                  , "D3D11_TEXTURE_BIT")
  , (ExternalMemoryHandleTypeFlagBits
EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT              , "D3D11_TEXTURE_KMT_BIT")
  , (ExternalMemoryHandleTypeFlagBits
EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT                     , "D3D12_HEAP_BIT")
  , (ExternalMemoryHandleTypeFlagBits
EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT                 , "D3D12_RESOURCE_BIT")
  , (ExternalMemoryHandleTypeFlagBits
EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT , "HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT")
  , (ExternalMemoryHandleTypeFlagBits
EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT            , "HOST_ALLOCATION_BIT_EXT")
  , (ExternalMemoryHandleTypeFlagBits
EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID, "ANDROID_HARDWARE_BUFFER_BIT_ANDROID")
  , (ExternalMemoryHandleTypeFlagBits
EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT                    , "DMA_BUF_BIT_EXT")
  ]

instance Show ExternalMemoryHandleTypeFlagBits where
  showsPrec :: Int -> ExternalMemoryHandleTypeFlagBits -> ShowS
showsPrec = String
-> [(ExternalMemoryHandleTypeFlagBits, String)]
-> String
-> (ExternalMemoryHandleTypeFlagBits -> Flags)
-> (Flags -> ShowS)
-> Int
-> ExternalMemoryHandleTypeFlagBits
-> ShowS
forall a i.
Eq a =>
String
-> [(a, String)]
-> String
-> (a -> i)
-> (i -> ShowS)
-> Int
-> a
-> ShowS
enumShowsPrec String
enumPrefixExternalMemoryHandleTypeFlagBits
                            [(ExternalMemoryHandleTypeFlagBits, String)]
showTableExternalMemoryHandleTypeFlagBits
                            String
conNameExternalMemoryHandleTypeFlagBits
                            (\(ExternalMemoryHandleTypeFlagBits x :: Flags
x) -> Flags
x)
                            (\x :: Flags
x -> String -> ShowS
showString "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 = String
-> [(ExternalMemoryHandleTypeFlagBits, String)]
-> String
-> (Flags -> ExternalMemoryHandleTypeFlagBits)
-> ReadPrec ExternalMemoryHandleTypeFlagBits
forall i a.
Read i =>
String -> [(a, String)] -> String -> (i -> a) -> ReadPrec a
enumReadPrec String
enumPrefixExternalMemoryHandleTypeFlagBits
                          [(ExternalMemoryHandleTypeFlagBits, String)]
showTableExternalMemoryHandleTypeFlagBits
                          String
conNameExternalMemoryHandleTypeFlagBits
                          Flags -> ExternalMemoryHandleTypeFlagBits
ExternalMemoryHandleTypeFlagBits