{-# language CPP #-}
module Vulkan.Extensions.VK_NV_external_memory_capabilities  ( getPhysicalDeviceExternalImageFormatPropertiesNV
                                                             , ExternalImageFormatPropertiesNV(..)
                                                             , ExternalMemoryHandleTypeFlagBitsNV( EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV
                                                                                                 , EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV
                                                                                                 , EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV
                                                                                                 , EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV
                                                                                                 , ..
                                                                                                 )
                                                             , ExternalMemoryHandleTypeFlagsNV
                                                             , ExternalMemoryFeatureFlagBitsNV( EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV
                                                                                              , EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV
                                                                                              , EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV
                                                                                              , ..
                                                                                              )
                                                             , ExternalMemoryFeatureFlagsNV
                                                             , NV_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION
                                                             , pattern NV_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION
                                                             , NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME
                                                             , pattern NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME
                                                             ) where

import Control.Monad (unless)
import Control.Monad.IO.Class (liftIO)
import Foreign.Marshal.Alloc (allocaBytesAligned)
import GHC.Base (when)
import GHC.IO (throwIO)
import GHC.Ptr (nullFunPtr)
import Foreign.Ptr (plusPtr)
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 Control.Monad.Trans.Class (lift)
import Control.Monad.Trans.Cont (evalContT)
import Control.Monad.IO.Class (MonadIO)
import Data.Bits (Bits)
import Data.String (IsString)
import Data.Typeable (Typeable)
import Foreign.Storable (Storable)
import Foreign.Storable (Storable(peek))
import Foreign.Storable (Storable(poke))
import GHC.Generics (Generic)
import GHC.IO.Exception (IOErrorType(..))
import GHC.IO.Exception (IOException(..))
import Foreign.Ptr (FunPtr)
import Foreign.Ptr (Ptr)
import GHC.Read (Read(readPrec))
import Text.Read.Lex (Lexeme(Ident))
import Data.Kind (Type)
import Control.Monad.Trans.Cont (ContT(..))
import Vulkan.NamedType ((:::))
import Vulkan.Core10.FundamentalTypes (Flags)
import Vulkan.Core10.Enums.Format (Format)
import Vulkan.Core10.Enums.Format (Format(..))
import Vulkan.CStruct (FromCStruct)
import Vulkan.CStruct (FromCStruct(..))
import Vulkan.Core10.Enums.ImageCreateFlagBits (ImageCreateFlagBits(..))
import Vulkan.Core10.Enums.ImageCreateFlagBits (ImageCreateFlags)
import Vulkan.Core10.DeviceInitialization (ImageFormatProperties)
import Vulkan.Core10.Enums.ImageTiling (ImageTiling)
import Vulkan.Core10.Enums.ImageTiling (ImageTiling(..))
import Vulkan.Core10.Enums.ImageType (ImageType)
import Vulkan.Core10.Enums.ImageType (ImageType(..))
import Vulkan.Core10.Enums.ImageUsageFlagBits (ImageUsageFlagBits(..))
import Vulkan.Core10.Enums.ImageUsageFlagBits (ImageUsageFlags)
import Vulkan.Dynamic (InstanceCmds(pVkGetPhysicalDeviceExternalImageFormatPropertiesNV))
import Vulkan.Core10.Handles (PhysicalDevice)
import Vulkan.Core10.Handles (PhysicalDevice(..))
import Vulkan.Core10.Handles (PhysicalDevice_T)
import Vulkan.Core10.Enums.Result (Result)
import Vulkan.Core10.Enums.Result (Result(..))
import Vulkan.CStruct (ToCStruct)
import Vulkan.CStruct (ToCStruct(..))
import Vulkan.Exception (VulkanException(..))
import Vulkan.Zero (Zero)
import Vulkan.Zero (Zero(..))
import Vulkan.Core10.Enums.Result (Result(SUCCESS))
foreign import ccall
#if !defined(SAFE_FOREIGN_CALLS)
  unsafe
#endif
  "dynamic" mkVkGetPhysicalDeviceExternalImageFormatPropertiesNV
  :: FunPtr (Ptr PhysicalDevice_T -> Format -> ImageType -> ImageTiling -> ImageUsageFlags -> ImageCreateFlags -> ExternalMemoryHandleTypeFlagsNV -> Ptr ExternalImageFormatPropertiesNV -> IO Result) -> Ptr PhysicalDevice_T -> Format -> ImageType -> ImageTiling -> ImageUsageFlags -> ImageCreateFlags -> ExternalMemoryHandleTypeFlagsNV -> Ptr ExternalImageFormatPropertiesNV -> IO Result

-- | vkGetPhysicalDeviceExternalImageFormatPropertiesNV - determine image
-- capabilities compatible with external memory handle types
--
-- = Description
--
-- If @externalHandleType@ is 0,
-- @pExternalImageFormatProperties->imageFormatProperties@ will return the
-- same values as a call to
-- 'Vulkan.Core10.DeviceInitialization.getPhysicalDeviceImageFormatProperties',
-- and the other members of @pExternalImageFormatProperties@ will all be 0.
-- Otherwise, they are filled in as described for
-- 'ExternalImageFormatPropertiesNV'.
--
-- == 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_HOST_MEMORY'
--
--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'
--
--     -   'Vulkan.Core10.Enums.Result.ERROR_FORMAT_NOT_SUPPORTED'
--
-- = See Also
--
-- 'ExternalImageFormatPropertiesNV', 'ExternalMemoryHandleTypeFlagsNV',
-- 'Vulkan.Core10.Enums.Format.Format',
-- 'Vulkan.Core10.Enums.ImageCreateFlagBits.ImageCreateFlags',
-- 'Vulkan.Core10.Enums.ImageTiling.ImageTiling',
-- 'Vulkan.Core10.Enums.ImageType.ImageType',
-- 'Vulkan.Core10.Enums.ImageUsageFlagBits.ImageUsageFlags',
-- 'Vulkan.Core10.Handles.PhysicalDevice'
getPhysicalDeviceExternalImageFormatPropertiesNV :: forall io
                                                  . (MonadIO io)
                                                 => -- | @physicalDevice@ is the physical device from which to query the image
                                                    -- capabilities
                                                    --
                                                    -- @physicalDevice@ /must/ be a valid
                                                    -- 'Vulkan.Core10.Handles.PhysicalDevice' handle
                                                    PhysicalDevice
                                                 -> -- | @format@ is the image format, corresponding to
                                                    -- 'Vulkan.Core10.Image.ImageCreateInfo'::@format@.
                                                    --
                                                    -- @format@ /must/ be a valid 'Vulkan.Core10.Enums.Format.Format' value
                                                    Format
                                                 -> -- | @type@ is the image type, corresponding to
                                                    -- 'Vulkan.Core10.Image.ImageCreateInfo'::@imageType@.
                                                    --
                                                    -- @type@ /must/ be a valid 'Vulkan.Core10.Enums.ImageType.ImageType' value
                                                    ImageType
                                                 -> -- | @tiling@ is the image tiling, corresponding to
                                                    -- 'Vulkan.Core10.Image.ImageCreateInfo'::@tiling@.
                                                    --
                                                    -- @tiling@ /must/ be a valid 'Vulkan.Core10.Enums.ImageTiling.ImageTiling'
                                                    -- value
                                                    ImageTiling
                                                 -> -- | @usage@ is the intended usage of the image, corresponding to
                                                    -- 'Vulkan.Core10.Image.ImageCreateInfo'::@usage@.
                                                    --
                                                    -- @usage@ /must/ be a valid combination of
                                                    -- 'Vulkan.Core10.Enums.ImageUsageFlagBits.ImageUsageFlagBits' values
                                                    --
                                                    -- @usage@ /must/ not be @0@
                                                    ImageUsageFlags
                                                 -> -- | @flags@ is a bitmask describing additional parameters of the image,
                                                    -- corresponding to 'Vulkan.Core10.Image.ImageCreateInfo'::@flags@.
                                                    --
                                                    -- @flags@ /must/ be a valid combination of
                                                    -- 'Vulkan.Core10.Enums.ImageCreateFlagBits.ImageCreateFlagBits' values
                                                    ImageCreateFlags
                                                 -> -- | @externalHandleType@ is either one of the bits from
                                                    -- 'ExternalMemoryHandleTypeFlagBitsNV', or 0.
                                                    --
                                                    -- @externalHandleType@ /must/ be a valid combination of
                                                    -- 'ExternalMemoryHandleTypeFlagBitsNV' values
                                                    ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
                                                 -> io (ExternalImageFormatPropertiesNV)
getPhysicalDeviceExternalImageFormatPropertiesNV :: PhysicalDevice
-> Format
-> ImageType
-> ImageTiling
-> ImageUsageFlags
-> ImageCreateFlags
-> ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> io ExternalImageFormatPropertiesNV
getPhysicalDeviceExternalImageFormatPropertiesNV physicalDevice :: PhysicalDevice
physicalDevice format :: Format
format type' :: ImageType
type' tiling :: ImageTiling
tiling usage :: ImageUsageFlags
usage flags :: ImageCreateFlags
flags externalHandleType :: "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV
externalHandleType = IO ExternalImageFormatPropertiesNV
-> io ExternalImageFormatPropertiesNV
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO ExternalImageFormatPropertiesNV
 -> io ExternalImageFormatPropertiesNV)
-> (ContT
      ExternalImageFormatPropertiesNV IO ExternalImageFormatPropertiesNV
    -> IO ExternalImageFormatPropertiesNV)
-> ContT
     ExternalImageFormatPropertiesNV IO ExternalImageFormatPropertiesNV
-> io ExternalImageFormatPropertiesNV
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ContT
  ExternalImageFormatPropertiesNV IO ExternalImageFormatPropertiesNV
-> IO ExternalImageFormatPropertiesNV
forall (m :: * -> *) r. Monad m => ContT r m r -> m r
evalContT (ContT
   ExternalImageFormatPropertiesNV IO ExternalImageFormatPropertiesNV
 -> io ExternalImageFormatPropertiesNV)
-> ContT
     ExternalImageFormatPropertiesNV IO ExternalImageFormatPropertiesNV
-> io ExternalImageFormatPropertiesNV
forall a b. (a -> b) -> a -> b
$ do
  let vkGetPhysicalDeviceExternalImageFormatPropertiesNVPtr :: FunPtr
  (Ptr PhysicalDevice_T
   -> Format
   -> ImageType
   -> ImageTiling
   -> ImageUsageFlags
   -> ImageCreateFlags
   -> ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
   -> ("pExternalImageFormatProperties"
       ::: Ptr ExternalImageFormatPropertiesNV)
   -> IO Result)
vkGetPhysicalDeviceExternalImageFormatPropertiesNVPtr = InstanceCmds
-> FunPtr
     (Ptr PhysicalDevice_T
      -> Format
      -> ImageType
      -> ImageTiling
      -> ImageUsageFlags
      -> ImageCreateFlags
      -> ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
      -> ("pExternalImageFormatProperties"
          ::: Ptr ExternalImageFormatPropertiesNV)
      -> IO Result)
pVkGetPhysicalDeviceExternalImageFormatPropertiesNV (PhysicalDevice -> InstanceCmds
instanceCmds (PhysicalDevice
physicalDevice :: PhysicalDevice))
  IO () -> ContT ExternalImageFormatPropertiesNV IO ()
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT ExternalImageFormatPropertiesNV IO ())
-> IO () -> ContT ExternalImageFormatPropertiesNV IO ()
forall a b. (a -> b) -> a -> b
$ Bool -> IO () -> IO ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
unless (FunPtr
  (Ptr PhysicalDevice_T
   -> Format
   -> ImageType
   -> ImageTiling
   -> ImageUsageFlags
   -> ImageCreateFlags
   -> ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
   -> ("pExternalImageFormatProperties"
       ::: Ptr ExternalImageFormatPropertiesNV)
   -> IO Result)
vkGetPhysicalDeviceExternalImageFormatPropertiesNVPtr FunPtr
  (Ptr PhysicalDevice_T
   -> Format
   -> ImageType
   -> ImageTiling
   -> ImageUsageFlags
   -> ImageCreateFlags
   -> ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
   -> ("pExternalImageFormatProperties"
       ::: Ptr ExternalImageFormatPropertiesNV)
   -> IO Result)
-> FunPtr
     (Ptr PhysicalDevice_T
      -> Format
      -> ImageType
      -> ImageTiling
      -> ImageUsageFlags
      -> ImageCreateFlags
      -> ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
      -> ("pExternalImageFormatProperties"
          ::: Ptr ExternalImageFormatPropertiesNV)
      -> IO Result)
-> Bool
forall a. Eq a => a -> a -> Bool
/= FunPtr
  (Ptr PhysicalDevice_T
   -> Format
   -> ImageType
   -> ImageTiling
   -> ImageUsageFlags
   -> ImageCreateFlags
   -> ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
   -> ("pExternalImageFormatProperties"
       ::: Ptr ExternalImageFormatPropertiesNV)
   -> IO Result)
forall a. FunPtr a
nullFunPtr) (IO () -> IO ()) -> IO () -> IO ()
forall a b. (a -> b) -> a -> b
$
    IOException -> IO ()
forall e a. Exception e => e -> IO a
throwIO (IOException -> IO ()) -> IOException -> IO ()
forall a b. (a -> b) -> a -> b
$ Maybe Handle
-> IOErrorType
-> String
-> String
-> Maybe CInt
-> Maybe String
-> IOException
IOError Maybe Handle
forall a. Maybe a
Nothing IOErrorType
InvalidArgument "" "The function pointer for vkGetPhysicalDeviceExternalImageFormatPropertiesNV is null" Maybe CInt
forall a. Maybe a
Nothing Maybe String
forall a. Maybe a
Nothing
  let vkGetPhysicalDeviceExternalImageFormatPropertiesNV' :: Ptr PhysicalDevice_T
-> Format
-> ImageType
-> ImageTiling
-> ImageUsageFlags
-> ImageCreateFlags
-> ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> ("pExternalImageFormatProperties"
    ::: Ptr ExternalImageFormatPropertiesNV)
-> IO Result
vkGetPhysicalDeviceExternalImageFormatPropertiesNV' = FunPtr
  (Ptr PhysicalDevice_T
   -> Format
   -> ImageType
   -> ImageTiling
   -> ImageUsageFlags
   -> ImageCreateFlags
   -> ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
   -> ("pExternalImageFormatProperties"
       ::: Ptr ExternalImageFormatPropertiesNV)
   -> IO Result)
-> Ptr PhysicalDevice_T
-> Format
-> ImageType
-> ImageTiling
-> ImageUsageFlags
-> ImageCreateFlags
-> ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> ("pExternalImageFormatProperties"
    ::: Ptr ExternalImageFormatPropertiesNV)
-> IO Result
mkVkGetPhysicalDeviceExternalImageFormatPropertiesNV FunPtr
  (Ptr PhysicalDevice_T
   -> Format
   -> ImageType
   -> ImageTiling
   -> ImageUsageFlags
   -> ImageCreateFlags
   -> ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
   -> ("pExternalImageFormatProperties"
       ::: Ptr ExternalImageFormatPropertiesNV)
   -> IO Result)
vkGetPhysicalDeviceExternalImageFormatPropertiesNVPtr
  "pExternalImageFormatProperties"
::: Ptr ExternalImageFormatPropertiesNV
pPExternalImageFormatProperties <- ((("pExternalImageFormatProperties"
   ::: Ptr ExternalImageFormatPropertiesNV)
  -> IO ExternalImageFormatPropertiesNV)
 -> IO ExternalImageFormatPropertiesNV)
-> ContT
     ExternalImageFormatPropertiesNV
     IO
     ("pExternalImageFormatProperties"
      ::: Ptr ExternalImageFormatPropertiesNV)
forall k (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (forall b.
ToCStruct ExternalImageFormatPropertiesNV =>
(("pExternalImageFormatProperties"
  ::: Ptr ExternalImageFormatPropertiesNV)
 -> IO b)
-> IO b
forall a b. ToCStruct a => (Ptr a -> IO b) -> IO b
withZeroCStruct @ExternalImageFormatPropertiesNV)
  Result
r <- IO Result -> ContT ExternalImageFormatPropertiesNV IO Result
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO Result -> ContT ExternalImageFormatPropertiesNV IO Result)
-> IO Result -> ContT ExternalImageFormatPropertiesNV IO Result
forall a b. (a -> b) -> a -> b
$ Ptr PhysicalDevice_T
-> Format
-> ImageType
-> ImageTiling
-> ImageUsageFlags
-> ImageCreateFlags
-> ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> ("pExternalImageFormatProperties"
    ::: Ptr ExternalImageFormatPropertiesNV)
-> IO Result
vkGetPhysicalDeviceExternalImageFormatPropertiesNV' (PhysicalDevice -> Ptr PhysicalDevice_T
physicalDeviceHandle (PhysicalDevice
physicalDevice)) (Format
format) (ImageType
type') (ImageTiling
tiling) (ImageUsageFlags
usage) (ImageCreateFlags
flags) ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV
externalHandleType) ("pExternalImageFormatProperties"
::: Ptr ExternalImageFormatPropertiesNV
pPExternalImageFormatProperties)
  IO () -> ContT ExternalImageFormatPropertiesNV IO ()
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT ExternalImageFormatPropertiesNV IO ())
-> IO () -> ContT ExternalImageFormatPropertiesNV IO ()
forall a b. (a -> b) -> a -> b
$ Bool -> IO () -> IO ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
when (Result
r Result -> Result -> Bool
forall a. Ord a => a -> a -> Bool
< Result
SUCCESS) (VulkanException -> IO ()
forall e a. Exception e => e -> IO a
throwIO (Result -> VulkanException
VulkanException Result
r))
  ExternalImageFormatPropertiesNV
pExternalImageFormatProperties <- IO ExternalImageFormatPropertiesNV
-> ContT
     ExternalImageFormatPropertiesNV IO ExternalImageFormatPropertiesNV
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO ExternalImageFormatPropertiesNV
 -> ContT
      ExternalImageFormatPropertiesNV IO ExternalImageFormatPropertiesNV)
-> IO ExternalImageFormatPropertiesNV
-> ContT
     ExternalImageFormatPropertiesNV IO ExternalImageFormatPropertiesNV
forall a b. (a -> b) -> a -> b
$ ("pExternalImageFormatProperties"
 ::: Ptr ExternalImageFormatPropertiesNV)
-> IO ExternalImageFormatPropertiesNV
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct @ExternalImageFormatPropertiesNV "pExternalImageFormatProperties"
::: Ptr ExternalImageFormatPropertiesNV
pPExternalImageFormatProperties
  ExternalImageFormatPropertiesNV
-> ContT
     ExternalImageFormatPropertiesNV IO ExternalImageFormatPropertiesNV
forall (f :: * -> *) a. Applicative f => a -> f a
pure (ExternalImageFormatPropertiesNV
 -> ContT
      ExternalImageFormatPropertiesNV IO ExternalImageFormatPropertiesNV)
-> ExternalImageFormatPropertiesNV
-> ContT
     ExternalImageFormatPropertiesNV IO ExternalImageFormatPropertiesNV
forall a b. (a -> b) -> a -> b
$ (ExternalImageFormatPropertiesNV
pExternalImageFormatProperties)


-- | VkExternalImageFormatPropertiesNV - Structure specifying external image
-- format properties
--
-- = See Also
--
-- 'ExternalMemoryFeatureFlagsNV', 'ExternalMemoryHandleTypeFlagsNV',
-- 'Vulkan.Core10.DeviceInitialization.ImageFormatProperties',
-- 'getPhysicalDeviceExternalImageFormatPropertiesNV'
data ExternalImageFormatPropertiesNV = ExternalImageFormatPropertiesNV
  { -- | @imageFormatProperties@ will be filled in as when calling
    -- 'Vulkan.Core10.DeviceInitialization.getPhysicalDeviceImageFormatProperties',
    -- but the values returned /may/ vary depending on the external handle type
    -- requested.
    ExternalImageFormatPropertiesNV -> ImageFormatProperties
imageFormatProperties :: ImageFormatProperties
  , -- | @externalMemoryFeatures@ is a bitmask of
    -- 'ExternalMemoryFeatureFlagBitsNV', indicating properties of the external
    -- memory handle type
    -- ('getPhysicalDeviceExternalImageFormatPropertiesNV'::@externalHandleType@)
    -- being queried, or 0 if the external memory handle type is 0.
    ExternalImageFormatPropertiesNV -> ExternalMemoryFeatureFlagsNV
externalMemoryFeatures :: ExternalMemoryFeatureFlagsNV
  , -- | @exportFromImportedHandleTypes@ is a bitmask of
    -- 'ExternalMemoryHandleTypeFlagBitsNV' containing a bit set for every
    -- external handle type that /may/ be used to create memory from which the
    -- handles of the type specified in
    -- 'getPhysicalDeviceExternalImageFormatPropertiesNV'::@externalHandleType@
    -- /can/ be exported, or 0 if the external memory handle type is 0.
    ExternalImageFormatPropertiesNV
-> "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV
exportFromImportedHandleTypes :: ExternalMemoryHandleTypeFlagsNV
  , -- | @compatibleHandleTypes@ is a bitmask of
    -- 'ExternalMemoryHandleTypeFlagBitsNV' containing a bit set for every
    -- external handle type that /may/ be specified simultaneously with the
    -- handle type specified by
    -- 'getPhysicalDeviceExternalImageFormatPropertiesNV'::@externalHandleType@
    -- when calling 'Vulkan.Core10.Memory.allocateMemory', or 0 if the external
    -- memory handle type is 0. @compatibleHandleTypes@ will always contain
    -- 'getPhysicalDeviceExternalImageFormatPropertiesNV'::@externalHandleType@
    ExternalImageFormatPropertiesNV
-> "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV
compatibleHandleTypes :: ExternalMemoryHandleTypeFlagsNV
  }
  deriving (Typeable)
#if defined(GENERIC_INSTANCES)
deriving instance Generic (ExternalImageFormatPropertiesNV)
#endif
deriving instance Show ExternalImageFormatPropertiesNV

instance ToCStruct ExternalImageFormatPropertiesNV where
  withCStruct :: ExternalImageFormatPropertiesNV
-> (("pExternalImageFormatProperties"
     ::: Ptr ExternalImageFormatPropertiesNV)
    -> IO b)
-> IO b
withCStruct x :: ExternalImageFormatPropertiesNV
x f :: ("pExternalImageFormatProperties"
 ::: Ptr ExternalImageFormatPropertiesNV)
-> IO b
f = Int
-> Int
-> (("pExternalImageFormatProperties"
     ::: Ptr ExternalImageFormatPropertiesNV)
    -> IO b)
-> IO b
forall a b. Int -> Int -> (Ptr a -> IO b) -> IO b
allocaBytesAligned 48 8 ((("pExternalImageFormatProperties"
   ::: Ptr ExternalImageFormatPropertiesNV)
  -> IO b)
 -> IO b)
-> (("pExternalImageFormatProperties"
     ::: Ptr ExternalImageFormatPropertiesNV)
    -> IO b)
-> IO b
forall a b. (a -> b) -> a -> b
$ \p :: "pExternalImageFormatProperties"
::: Ptr ExternalImageFormatPropertiesNV
p -> ("pExternalImageFormatProperties"
 ::: Ptr ExternalImageFormatPropertiesNV)
-> ExternalImageFormatPropertiesNV -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct "pExternalImageFormatProperties"
::: Ptr ExternalImageFormatPropertiesNV
p ExternalImageFormatPropertiesNV
x (("pExternalImageFormatProperties"
 ::: Ptr ExternalImageFormatPropertiesNV)
-> IO b
f "pExternalImageFormatProperties"
::: Ptr ExternalImageFormatPropertiesNV
p)
  pokeCStruct :: ("pExternalImageFormatProperties"
 ::: Ptr ExternalImageFormatPropertiesNV)
-> ExternalImageFormatPropertiesNV -> IO b -> IO b
pokeCStruct p :: "pExternalImageFormatProperties"
::: Ptr ExternalImageFormatPropertiesNV
p ExternalImageFormatPropertiesNV{..} f :: IO b
f = ContT b IO b -> IO b
forall (m :: * -> *) r. Monad m => ContT r m r -> m r
evalContT (ContT b IO b -> IO b) -> ContT b IO b -> IO b
forall a b. (a -> b) -> a -> b
$ do
    ((() -> IO b) -> IO b) -> ContT b IO ()
forall k (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((() -> IO b) -> IO b) -> ContT b IO ())
-> ((() -> IO b) -> IO b) -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr ImageFormatProperties -> ImageFormatProperties -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct (("pExternalImageFormatProperties"
::: Ptr ExternalImageFormatPropertiesNV
p ("pExternalImageFormatProperties"
 ::: Ptr ExternalImageFormatPropertiesNV)
-> Int -> Ptr ImageFormatProperties
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 0 :: Ptr ImageFormatProperties)) (ImageFormatProperties
imageFormatProperties) (IO b -> IO b) -> ((() -> IO b) -> IO b) -> (() -> IO b) -> IO b
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ((() -> IO b) -> () -> IO b
forall a b. (a -> b) -> a -> b
$ ())
    IO () -> ContT b IO ()
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr ExternalMemoryFeatureFlagsNV
-> ExternalMemoryFeatureFlagsNV -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (("pExternalImageFormatProperties"
::: Ptr ExternalImageFormatPropertiesNV
p ("pExternalImageFormatProperties"
 ::: Ptr ExternalImageFormatPropertiesNV)
-> Int -> Ptr ExternalMemoryFeatureFlagsNV
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 32 :: Ptr ExternalMemoryFeatureFlagsNV)) (ExternalMemoryFeatureFlagsNV
externalMemoryFeatures)
    IO () -> ContT b IO ()
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (("pExternalImageFormatProperties"
::: Ptr ExternalImageFormatPropertiesNV
p ("pExternalImageFormatProperties"
 ::: Ptr ExternalImageFormatPropertiesNV)
-> Int
-> Ptr ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 36 :: Ptr ExternalMemoryHandleTypeFlagsNV)) ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV
exportFromImportedHandleTypes)
    IO () -> ContT b IO ()
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> ContT b IO ()) -> IO () -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (("pExternalImageFormatProperties"
::: Ptr ExternalImageFormatPropertiesNV
p ("pExternalImageFormatProperties"
 ::: Ptr ExternalImageFormatPropertiesNV)
-> Int
-> Ptr ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 40 :: Ptr ExternalMemoryHandleTypeFlagsNV)) ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV
compatibleHandleTypes)
    IO b -> ContT b IO b
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO b -> ContT b IO b) -> IO b -> ContT b IO b
forall a b. (a -> b) -> a -> b
$ IO b
f
  cStructSize :: Int
cStructSize = 48
  cStructAlignment :: Int
cStructAlignment = 8
  pokeZeroCStruct :: ("pExternalImageFormatProperties"
 ::: Ptr ExternalImageFormatPropertiesNV)
-> IO b -> IO b
pokeZeroCStruct p :: "pExternalImageFormatProperties"
::: Ptr ExternalImageFormatPropertiesNV
p f :: IO b
f = ContT b IO b -> IO b
forall (m :: * -> *) r. Monad m => ContT r m r -> m r
evalContT (ContT b IO b -> IO b) -> ContT b IO b -> IO b
forall a b. (a -> b) -> a -> b
$ do
    ((() -> IO b) -> IO b) -> ContT b IO ()
forall k (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (((() -> IO b) -> IO b) -> ContT b IO ())
-> ((() -> IO b) -> IO b) -> ContT b IO ()
forall a b. (a -> b) -> a -> b
$ Ptr ImageFormatProperties -> ImageFormatProperties -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct (("pExternalImageFormatProperties"
::: Ptr ExternalImageFormatPropertiesNV
p ("pExternalImageFormatProperties"
 ::: Ptr ExternalImageFormatPropertiesNV)
-> Int -> Ptr ImageFormatProperties
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 0 :: Ptr ImageFormatProperties)) (ImageFormatProperties
forall a. Zero a => a
zero) (IO b -> IO b) -> ((() -> IO b) -> IO b) -> (() -> IO b) -> IO b
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ((() -> IO b) -> () -> IO b
forall a b. (a -> b) -> a -> b
$ ())
    IO b -> ContT b IO b
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO b -> ContT b IO b) -> IO b -> ContT b IO b
forall a b. (a -> b) -> a -> b
$ IO b
f

instance FromCStruct ExternalImageFormatPropertiesNV where
  peekCStruct :: ("pExternalImageFormatProperties"
 ::: Ptr ExternalImageFormatPropertiesNV)
-> IO ExternalImageFormatPropertiesNV
peekCStruct p :: "pExternalImageFormatProperties"
::: Ptr ExternalImageFormatPropertiesNV
p = do
    ImageFormatProperties
imageFormatProperties <- Ptr ImageFormatProperties -> IO ImageFormatProperties
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct @ImageFormatProperties (("pExternalImageFormatProperties"
::: Ptr ExternalImageFormatPropertiesNV
p ("pExternalImageFormatProperties"
 ::: Ptr ExternalImageFormatPropertiesNV)
-> Int -> Ptr ImageFormatProperties
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 0 :: Ptr ImageFormatProperties))
    ExternalMemoryFeatureFlagsNV
externalMemoryFeatures <- Ptr ExternalMemoryFeatureFlagsNV -> IO ExternalMemoryFeatureFlagsNV
forall a. Storable a => Ptr a -> IO a
peek @ExternalMemoryFeatureFlagsNV (("pExternalImageFormatProperties"
::: Ptr ExternalImageFormatPropertiesNV
p ("pExternalImageFormatProperties"
 ::: Ptr ExternalImageFormatPropertiesNV)
-> Int -> Ptr ExternalMemoryFeatureFlagsNV
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 32 :: Ptr ExternalMemoryFeatureFlagsNV))
    "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV
exportFromImportedHandleTypes <- Ptr ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> IO ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
forall a. Storable a => Ptr a -> IO a
peek @ExternalMemoryHandleTypeFlagsNV (("pExternalImageFormatProperties"
::: Ptr ExternalImageFormatPropertiesNV
p ("pExternalImageFormatProperties"
 ::: Ptr ExternalImageFormatPropertiesNV)
-> Int
-> Ptr ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 36 :: Ptr ExternalMemoryHandleTypeFlagsNV))
    "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV
compatibleHandleTypes <- Ptr ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> IO ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
forall a. Storable a => Ptr a -> IO a
peek @ExternalMemoryHandleTypeFlagsNV (("pExternalImageFormatProperties"
::: Ptr ExternalImageFormatPropertiesNV
p ("pExternalImageFormatProperties"
 ::: Ptr ExternalImageFormatPropertiesNV)
-> Int
-> Ptr ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 40 :: Ptr ExternalMemoryHandleTypeFlagsNV))
    ExternalImageFormatPropertiesNV
-> IO ExternalImageFormatPropertiesNV
forall (f :: * -> *) a. Applicative f => a -> f a
pure (ExternalImageFormatPropertiesNV
 -> IO ExternalImageFormatPropertiesNV)
-> ExternalImageFormatPropertiesNV
-> IO ExternalImageFormatPropertiesNV
forall a b. (a -> b) -> a -> b
$ ImageFormatProperties
-> ExternalMemoryFeatureFlagsNV
-> ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> ExternalImageFormatPropertiesNV
ExternalImageFormatPropertiesNV
             ImageFormatProperties
imageFormatProperties ExternalMemoryFeatureFlagsNV
externalMemoryFeatures "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV
exportFromImportedHandleTypes "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV
compatibleHandleTypes

instance Zero ExternalImageFormatPropertiesNV where
  zero :: ExternalImageFormatPropertiesNV
zero = ImageFormatProperties
-> ExternalMemoryFeatureFlagsNV
-> ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> ExternalImageFormatPropertiesNV
ExternalImageFormatPropertiesNV
           ImageFormatProperties
forall a. Zero a => a
zero
           ExternalMemoryFeatureFlagsNV
forall a. Zero a => a
zero
           "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV
forall a. Zero a => a
zero
           "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV
forall a. Zero a => a
zero


-- | VkExternalMemoryHandleTypeFlagBitsNV - Bitmask specifying external
-- memory handle types
--
-- = See Also
--
-- 'ExternalMemoryHandleTypeFlagsNV'
newtype ExternalMemoryHandleTypeFlagBitsNV = ExternalMemoryHandleTypeFlagBitsNV Flags
  deriving newtype (("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> Bool
(("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
 -> ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
 -> Bool)
-> (("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
    -> ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
    -> Bool)
-> Eq ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> Bool
$c/= :: ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> Bool
== :: ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> Bool
$c== :: ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> Bool
Eq, Eq ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
Eq ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV) =>
(("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
 -> ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
 -> Ordering)
-> (("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
    -> ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
    -> Bool)
-> (("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
    -> ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
    -> Bool)
-> (("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
    -> ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
    -> Bool)
-> (("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
    -> ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
    -> Bool)
-> (("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
    -> ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
    -> "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> (("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
    -> ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
    -> "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> Ord ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> Bool
("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> Ordering
("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV
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 :: ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV
$cmin :: ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV
max :: ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV
$cmax :: ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV
>= :: ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> Bool
$c>= :: ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> Bool
> :: ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> Bool
$c> :: ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> Bool
<= :: ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> Bool
$c<= :: ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> Bool
< :: ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> Bool
$c< :: ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> Bool
compare :: ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> Ordering
$ccompare :: ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> Ordering
$cp1Ord :: Eq ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
Ord, Ptr b
-> Int
-> IO ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
Ptr b
-> Int
-> ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> IO ()
Ptr ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> IO ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
Ptr ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> Int
-> IO ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
Ptr ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> Int
-> ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> IO ()
Ptr ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> IO ()
("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV) -> Int
(("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV) -> Int)
-> (("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
    -> Int)
-> (Ptr ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
    -> Int
    -> IO ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV))
-> (Ptr ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
    -> Int
    -> ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
    -> IO ())
-> (forall b.
    Ptr b
    -> Int
    -> IO ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV))
-> (forall b.
    Ptr b
    -> Int
    -> ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
    -> IO ())
-> (Ptr ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
    -> IO ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV))
-> (Ptr ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
    -> ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
    -> IO ())
-> Storable
     ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
forall b.
Ptr b
-> Int
-> IO ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
forall b.
Ptr b
-> Int
-> ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> 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 ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> IO ()
$cpoke :: Ptr ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> IO ()
peek :: Ptr ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> IO ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
$cpeek :: Ptr ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> IO ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
pokeByteOff :: Ptr b
-> Int
-> ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> IO ()
$cpokeByteOff :: forall b.
Ptr b
-> Int
-> ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> IO ()
peekByteOff :: Ptr b
-> Int
-> IO ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
$cpeekByteOff :: forall b.
Ptr b
-> Int
-> IO ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
pokeElemOff :: Ptr ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> Int
-> ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> IO ()
$cpokeElemOff :: Ptr ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> Int
-> ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> IO ()
peekElemOff :: Ptr ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> Int
-> IO ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
$cpeekElemOff :: Ptr ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> Int
-> IO ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
alignment :: ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV) -> Int
$calignment :: ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV) -> Int
sizeOf :: ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV) -> Int
$csizeOf :: ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV) -> Int
Storable, "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV
("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> Zero ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
forall a. a -> Zero a
zero :: "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV
$czero :: "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV
Zero, Eq ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
"externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV
Eq ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV) =>
(("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
 -> ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
 -> "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> (("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
    -> ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
    -> "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> (("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
    -> ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
    -> "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> (("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
    -> "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> (("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
    -> Int -> "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> (("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
    -> Int -> "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> (Int
    -> "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> (("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
    -> Int -> "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> (("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
    -> Int -> "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> (("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
    -> Int -> "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> (("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
    -> Int -> Bool)
-> (("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
    -> Maybe Int)
-> (("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
    -> Int)
-> (("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
    -> Bool)
-> (("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
    -> Int -> "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> (("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
    -> Int -> "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> (("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
    -> Int -> "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> (("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
    -> Int -> "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> (("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
    -> Int -> "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> (("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
    -> Int -> "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> (("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
    -> Int)
-> Bits ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
Int -> "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV
("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV) -> Bool
("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV) -> Int
("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> Maybe Int
("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV
("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> Int -> Bool
("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> Int -> "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV
("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV
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 :: ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV) -> Int
$cpopCount :: ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV) -> Int
rotateR :: ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> Int -> "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV
$crotateR :: ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> Int -> "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV
rotateL :: ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> Int -> "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV
$crotateL :: ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> Int -> "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV
unsafeShiftR :: ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> Int -> "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV
$cunsafeShiftR :: ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> Int -> "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV
shiftR :: ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> Int -> "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV
$cshiftR :: ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> Int -> "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV
unsafeShiftL :: ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> Int -> "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV
$cunsafeShiftL :: ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> Int -> "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV
shiftL :: ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> Int -> "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV
$cshiftL :: ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> Int -> "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV
isSigned :: ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV) -> Bool
$cisSigned :: ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV) -> Bool
bitSize :: ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV) -> Int
$cbitSize :: ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV) -> Int
bitSizeMaybe :: ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> Maybe Int
$cbitSizeMaybe :: ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> Maybe Int
testBit :: ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> Int -> Bool
$ctestBit :: ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> Int -> Bool
complementBit :: ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> Int -> "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV
$ccomplementBit :: ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> Int -> "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV
clearBit :: ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> Int -> "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV
$cclearBit :: ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> Int -> "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV
setBit :: ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> Int -> "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV
$csetBit :: ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> Int -> "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV
bit :: Int -> "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV
$cbit :: Int -> "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV
zeroBits :: "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV
$czeroBits :: "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV
rotate :: ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> Int -> "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV
$crotate :: ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> Int -> "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV
shift :: ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> Int -> "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV
$cshift :: ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> Int -> "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV
complement :: ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV
$ccomplement :: ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV
xor :: ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV
$cxor :: ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV
.|. :: ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV
$c.|. :: ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV
.&. :: ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV
$c.&. :: ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV
$cp1Bits :: Eq ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
Bits)

-- | 'EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV' specifies a handle to
-- memory returned by
-- 'Vulkan.Extensions.VK_NV_external_memory_win32.getMemoryWin32HandleNV',
-- or one duplicated from such a handle using @DuplicateHandle()@.
pattern $bEXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV :: "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV
$mEXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV :: forall r.
("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> (Void# -> r) -> (Void# -> r) -> r
EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV = ExternalMemoryHandleTypeFlagBitsNV 0x00000001
-- | 'EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV' specifies a handle
-- to memory returned by
-- 'Vulkan.Extensions.VK_NV_external_memory_win32.getMemoryWin32HandleNV'.
pattern $bEXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV :: "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV
$mEXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV :: forall r.
("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> (Void# -> r) -> (Void# -> r) -> r
EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV = ExternalMemoryHandleTypeFlagBitsNV 0x00000002
-- | 'EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV' specifies a valid NT
-- handle to memory returned by @IDXGIResource1::CreateSharedHandle@, or a
-- handle duplicated from such a handle using @DuplicateHandle()@.
pattern $bEXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV :: "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV
$mEXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV :: forall r.
("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> (Void# -> r) -> (Void# -> r) -> r
EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV = ExternalMemoryHandleTypeFlagBitsNV 0x00000004
-- | 'EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV' specifies a handle
-- to memory returned by @IDXGIResource::GetSharedHandle()@.
pattern $bEXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV :: "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV
$mEXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV :: forall r.
("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> (Void# -> r) -> (Void# -> r) -> r
EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV = ExternalMemoryHandleTypeFlagBitsNV 0x00000008

type ExternalMemoryHandleTypeFlagsNV = ExternalMemoryHandleTypeFlagBitsNV

instance Show ExternalMemoryHandleTypeFlagBitsNV where
  showsPrec :: Int
-> ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> ShowS
showsPrec p :: Int
p = \case
    EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV -> String -> ShowS
showString "EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV"
    EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV -> String -> ShowS
showString "EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV"
    EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV -> String -> ShowS
showString "EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV"
    EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV -> String -> ShowS
showString "EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV"
    ExternalMemoryHandleTypeFlagBitsNV x :: Flags
x -> Bool -> ShowS -> ShowS
showParen (Int
p Int -> Int -> Bool
forall a. Ord a => a -> a -> Bool
>= 11) (String -> ShowS
showString "ExternalMemoryHandleTypeFlagBitsNV 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 ExternalMemoryHandleTypeFlagBitsNV where
  readPrec :: ReadPrec ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
readPrec = ReadPrec ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> ReadPrec
     ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
forall a. ReadPrec a -> ReadPrec a
parens ([(String,
  ReadPrec
    ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV))]
-> ReadPrec
     ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
forall a. [(String, ReadPrec a)] -> ReadPrec a
choose [("EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV", ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> ReadPrec
     ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
forall (f :: * -> *) a. Applicative f => a -> f a
pure "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV
EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV)
                            , ("EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV", ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> ReadPrec
     ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
forall (f :: * -> *) a. Applicative f => a -> f a
pure "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV
EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV)
                            , ("EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV", ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> ReadPrec
     ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
forall (f :: * -> *) a. Applicative f => a -> f a
pure "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV
EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV)
                            , ("EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV", ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> ReadPrec
     ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
forall (f :: * -> *) a. Applicative f => a -> f a
pure "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV
EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV)]
                     ReadPrec ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> ReadPrec
     ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> ReadPrec
     ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
forall a. ReadPrec a -> ReadPrec a -> ReadPrec a
+++
                     Int
-> ReadPrec
     ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> ReadPrec
     ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
forall a. Int -> ReadPrec a -> ReadPrec a
prec 10 (do
                       Lexeme -> ReadPrec ()
expectP (String -> Lexeme
Ident "ExternalMemoryHandleTypeFlagBitsNV")
                       Flags
v <- ReadPrec Flags -> ReadPrec Flags
forall a. ReadPrec a -> ReadPrec a
step ReadPrec Flags
forall a. Read a => ReadPrec a
readPrec
                       ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> ReadPrec
     ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
forall (f :: * -> *) a. Applicative f => a -> f a
pure (Flags -> "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV
ExternalMemoryHandleTypeFlagBitsNV Flags
v)))


-- | VkExternalMemoryFeatureFlagBitsNV - Bitmask specifying external memory
-- features
--
-- = See Also
--
-- 'ExternalImageFormatPropertiesNV', 'ExternalMemoryFeatureFlagsNV',
-- 'getPhysicalDeviceExternalImageFormatPropertiesNV'
newtype ExternalMemoryFeatureFlagBitsNV = ExternalMemoryFeatureFlagBitsNV Flags
  deriving newtype (ExternalMemoryFeatureFlagsNV
-> ExternalMemoryFeatureFlagsNV -> Bool
(ExternalMemoryFeatureFlagsNV
 -> ExternalMemoryFeatureFlagsNV -> Bool)
-> (ExternalMemoryFeatureFlagsNV
    -> ExternalMemoryFeatureFlagsNV -> Bool)
-> Eq ExternalMemoryFeatureFlagsNV
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ExternalMemoryFeatureFlagsNV
-> ExternalMemoryFeatureFlagsNV -> Bool
$c/= :: ExternalMemoryFeatureFlagsNV
-> ExternalMemoryFeatureFlagsNV -> Bool
== :: ExternalMemoryFeatureFlagsNV
-> ExternalMemoryFeatureFlagsNV -> Bool
$c== :: ExternalMemoryFeatureFlagsNV
-> ExternalMemoryFeatureFlagsNV -> Bool
Eq, Eq ExternalMemoryFeatureFlagsNV
Eq ExternalMemoryFeatureFlagsNV =>
(ExternalMemoryFeatureFlagsNV
 -> ExternalMemoryFeatureFlagsNV -> Ordering)
-> (ExternalMemoryFeatureFlagsNV
    -> ExternalMemoryFeatureFlagsNV -> Bool)
-> (ExternalMemoryFeatureFlagsNV
    -> ExternalMemoryFeatureFlagsNV -> Bool)
-> (ExternalMemoryFeatureFlagsNV
    -> ExternalMemoryFeatureFlagsNV -> Bool)
-> (ExternalMemoryFeatureFlagsNV
    -> ExternalMemoryFeatureFlagsNV -> Bool)
-> (ExternalMemoryFeatureFlagsNV
    -> ExternalMemoryFeatureFlagsNV -> ExternalMemoryFeatureFlagsNV)
-> (ExternalMemoryFeatureFlagsNV
    -> ExternalMemoryFeatureFlagsNV -> ExternalMemoryFeatureFlagsNV)
-> Ord ExternalMemoryFeatureFlagsNV
ExternalMemoryFeatureFlagsNV
-> ExternalMemoryFeatureFlagsNV -> Bool
ExternalMemoryFeatureFlagsNV
-> ExternalMemoryFeatureFlagsNV -> Ordering
ExternalMemoryFeatureFlagsNV
-> ExternalMemoryFeatureFlagsNV -> ExternalMemoryFeatureFlagsNV
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 :: ExternalMemoryFeatureFlagsNV
-> ExternalMemoryFeatureFlagsNV -> ExternalMemoryFeatureFlagsNV
$cmin :: ExternalMemoryFeatureFlagsNV
-> ExternalMemoryFeatureFlagsNV -> ExternalMemoryFeatureFlagsNV
max :: ExternalMemoryFeatureFlagsNV
-> ExternalMemoryFeatureFlagsNV -> ExternalMemoryFeatureFlagsNV
$cmax :: ExternalMemoryFeatureFlagsNV
-> ExternalMemoryFeatureFlagsNV -> ExternalMemoryFeatureFlagsNV
>= :: ExternalMemoryFeatureFlagsNV
-> ExternalMemoryFeatureFlagsNV -> Bool
$c>= :: ExternalMemoryFeatureFlagsNV
-> ExternalMemoryFeatureFlagsNV -> Bool
> :: ExternalMemoryFeatureFlagsNV
-> ExternalMemoryFeatureFlagsNV -> Bool
$c> :: ExternalMemoryFeatureFlagsNV
-> ExternalMemoryFeatureFlagsNV -> Bool
<= :: ExternalMemoryFeatureFlagsNV
-> ExternalMemoryFeatureFlagsNV -> Bool
$c<= :: ExternalMemoryFeatureFlagsNV
-> ExternalMemoryFeatureFlagsNV -> Bool
< :: ExternalMemoryFeatureFlagsNV
-> ExternalMemoryFeatureFlagsNV -> Bool
$c< :: ExternalMemoryFeatureFlagsNV
-> ExternalMemoryFeatureFlagsNV -> Bool
compare :: ExternalMemoryFeatureFlagsNV
-> ExternalMemoryFeatureFlagsNV -> Ordering
$ccompare :: ExternalMemoryFeatureFlagsNV
-> ExternalMemoryFeatureFlagsNV -> Ordering
$cp1Ord :: Eq ExternalMemoryFeatureFlagsNV
Ord, Ptr b -> Int -> IO ExternalMemoryFeatureFlagsNV
Ptr b -> Int -> ExternalMemoryFeatureFlagsNV -> IO ()
Ptr ExternalMemoryFeatureFlagsNV -> IO ExternalMemoryFeatureFlagsNV
Ptr ExternalMemoryFeatureFlagsNV
-> Int -> IO ExternalMemoryFeatureFlagsNV
Ptr ExternalMemoryFeatureFlagsNV
-> Int -> ExternalMemoryFeatureFlagsNV -> IO ()
Ptr ExternalMemoryFeatureFlagsNV
-> ExternalMemoryFeatureFlagsNV -> IO ()
ExternalMemoryFeatureFlagsNV -> Int
(ExternalMemoryFeatureFlagsNV -> Int)
-> (ExternalMemoryFeatureFlagsNV -> Int)
-> (Ptr ExternalMemoryFeatureFlagsNV
    -> Int -> IO ExternalMemoryFeatureFlagsNV)
-> (Ptr ExternalMemoryFeatureFlagsNV
    -> Int -> ExternalMemoryFeatureFlagsNV -> IO ())
-> (forall b. Ptr b -> Int -> IO ExternalMemoryFeatureFlagsNV)
-> (forall b.
    Ptr b -> Int -> ExternalMemoryFeatureFlagsNV -> IO ())
-> (Ptr ExternalMemoryFeatureFlagsNV
    -> IO ExternalMemoryFeatureFlagsNV)
-> (Ptr ExternalMemoryFeatureFlagsNV
    -> ExternalMemoryFeatureFlagsNV -> IO ())
-> Storable ExternalMemoryFeatureFlagsNV
forall b. Ptr b -> Int -> IO ExternalMemoryFeatureFlagsNV
forall b. Ptr b -> Int -> ExternalMemoryFeatureFlagsNV -> 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 ExternalMemoryFeatureFlagsNV
-> ExternalMemoryFeatureFlagsNV -> IO ()
$cpoke :: Ptr ExternalMemoryFeatureFlagsNV
-> ExternalMemoryFeatureFlagsNV -> IO ()
peek :: Ptr ExternalMemoryFeatureFlagsNV -> IO ExternalMemoryFeatureFlagsNV
$cpeek :: Ptr ExternalMemoryFeatureFlagsNV -> IO ExternalMemoryFeatureFlagsNV
pokeByteOff :: Ptr b -> Int -> ExternalMemoryFeatureFlagsNV -> IO ()
$cpokeByteOff :: forall b. Ptr b -> Int -> ExternalMemoryFeatureFlagsNV -> IO ()
peekByteOff :: Ptr b -> Int -> IO ExternalMemoryFeatureFlagsNV
$cpeekByteOff :: forall b. Ptr b -> Int -> IO ExternalMemoryFeatureFlagsNV
pokeElemOff :: Ptr ExternalMemoryFeatureFlagsNV
-> Int -> ExternalMemoryFeatureFlagsNV -> IO ()
$cpokeElemOff :: Ptr ExternalMemoryFeatureFlagsNV
-> Int -> ExternalMemoryFeatureFlagsNV -> IO ()
peekElemOff :: Ptr ExternalMemoryFeatureFlagsNV
-> Int -> IO ExternalMemoryFeatureFlagsNV
$cpeekElemOff :: Ptr ExternalMemoryFeatureFlagsNV
-> Int -> IO ExternalMemoryFeatureFlagsNV
alignment :: ExternalMemoryFeatureFlagsNV -> Int
$calignment :: ExternalMemoryFeatureFlagsNV -> Int
sizeOf :: ExternalMemoryFeatureFlagsNV -> Int
$csizeOf :: ExternalMemoryFeatureFlagsNV -> Int
Storable, ExternalMemoryFeatureFlagsNV
ExternalMemoryFeatureFlagsNV -> Zero ExternalMemoryFeatureFlagsNV
forall a. a -> Zero a
zero :: ExternalMemoryFeatureFlagsNV
$czero :: ExternalMemoryFeatureFlagsNV
Zero, Eq ExternalMemoryFeatureFlagsNV
ExternalMemoryFeatureFlagsNV
Eq ExternalMemoryFeatureFlagsNV =>
(ExternalMemoryFeatureFlagsNV
 -> ExternalMemoryFeatureFlagsNV -> ExternalMemoryFeatureFlagsNV)
-> (ExternalMemoryFeatureFlagsNV
    -> ExternalMemoryFeatureFlagsNV -> ExternalMemoryFeatureFlagsNV)
-> (ExternalMemoryFeatureFlagsNV
    -> ExternalMemoryFeatureFlagsNV -> ExternalMemoryFeatureFlagsNV)
-> (ExternalMemoryFeatureFlagsNV -> ExternalMemoryFeatureFlagsNV)
-> (ExternalMemoryFeatureFlagsNV
    -> Int -> ExternalMemoryFeatureFlagsNV)
-> (ExternalMemoryFeatureFlagsNV
    -> Int -> ExternalMemoryFeatureFlagsNV)
-> ExternalMemoryFeatureFlagsNV
-> (Int -> ExternalMemoryFeatureFlagsNV)
-> (ExternalMemoryFeatureFlagsNV
    -> Int -> ExternalMemoryFeatureFlagsNV)
-> (ExternalMemoryFeatureFlagsNV
    -> Int -> ExternalMemoryFeatureFlagsNV)
-> (ExternalMemoryFeatureFlagsNV
    -> Int -> ExternalMemoryFeatureFlagsNV)
-> (ExternalMemoryFeatureFlagsNV -> Int -> Bool)
-> (ExternalMemoryFeatureFlagsNV -> Maybe Int)
-> (ExternalMemoryFeatureFlagsNV -> Int)
-> (ExternalMemoryFeatureFlagsNV -> Bool)
-> (ExternalMemoryFeatureFlagsNV
    -> Int -> ExternalMemoryFeatureFlagsNV)
-> (ExternalMemoryFeatureFlagsNV
    -> Int -> ExternalMemoryFeatureFlagsNV)
-> (ExternalMemoryFeatureFlagsNV
    -> Int -> ExternalMemoryFeatureFlagsNV)
-> (ExternalMemoryFeatureFlagsNV
    -> Int -> ExternalMemoryFeatureFlagsNV)
-> (ExternalMemoryFeatureFlagsNV
    -> Int -> ExternalMemoryFeatureFlagsNV)
-> (ExternalMemoryFeatureFlagsNV
    -> Int -> ExternalMemoryFeatureFlagsNV)
-> (ExternalMemoryFeatureFlagsNV -> Int)
-> Bits ExternalMemoryFeatureFlagsNV
Int -> ExternalMemoryFeatureFlagsNV
ExternalMemoryFeatureFlagsNV -> Bool
ExternalMemoryFeatureFlagsNV -> Int
ExternalMemoryFeatureFlagsNV -> Maybe Int
ExternalMemoryFeatureFlagsNV -> ExternalMemoryFeatureFlagsNV
ExternalMemoryFeatureFlagsNV -> Int -> Bool
ExternalMemoryFeatureFlagsNV -> Int -> ExternalMemoryFeatureFlagsNV
ExternalMemoryFeatureFlagsNV
-> ExternalMemoryFeatureFlagsNV -> ExternalMemoryFeatureFlagsNV
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 :: ExternalMemoryFeatureFlagsNV -> Int
$cpopCount :: ExternalMemoryFeatureFlagsNV -> Int
rotateR :: ExternalMemoryFeatureFlagsNV -> Int -> ExternalMemoryFeatureFlagsNV
$crotateR :: ExternalMemoryFeatureFlagsNV -> Int -> ExternalMemoryFeatureFlagsNV
rotateL :: ExternalMemoryFeatureFlagsNV -> Int -> ExternalMemoryFeatureFlagsNV
$crotateL :: ExternalMemoryFeatureFlagsNV -> Int -> ExternalMemoryFeatureFlagsNV
unsafeShiftR :: ExternalMemoryFeatureFlagsNV -> Int -> ExternalMemoryFeatureFlagsNV
$cunsafeShiftR :: ExternalMemoryFeatureFlagsNV -> Int -> ExternalMemoryFeatureFlagsNV
shiftR :: ExternalMemoryFeatureFlagsNV -> Int -> ExternalMemoryFeatureFlagsNV
$cshiftR :: ExternalMemoryFeatureFlagsNV -> Int -> ExternalMemoryFeatureFlagsNV
unsafeShiftL :: ExternalMemoryFeatureFlagsNV -> Int -> ExternalMemoryFeatureFlagsNV
$cunsafeShiftL :: ExternalMemoryFeatureFlagsNV -> Int -> ExternalMemoryFeatureFlagsNV
shiftL :: ExternalMemoryFeatureFlagsNV -> Int -> ExternalMemoryFeatureFlagsNV
$cshiftL :: ExternalMemoryFeatureFlagsNV -> Int -> ExternalMemoryFeatureFlagsNV
isSigned :: ExternalMemoryFeatureFlagsNV -> Bool
$cisSigned :: ExternalMemoryFeatureFlagsNV -> Bool
bitSize :: ExternalMemoryFeatureFlagsNV -> Int
$cbitSize :: ExternalMemoryFeatureFlagsNV -> Int
bitSizeMaybe :: ExternalMemoryFeatureFlagsNV -> Maybe Int
$cbitSizeMaybe :: ExternalMemoryFeatureFlagsNV -> Maybe Int
testBit :: ExternalMemoryFeatureFlagsNV -> Int -> Bool
$ctestBit :: ExternalMemoryFeatureFlagsNV -> Int -> Bool
complementBit :: ExternalMemoryFeatureFlagsNV -> Int -> ExternalMemoryFeatureFlagsNV
$ccomplementBit :: ExternalMemoryFeatureFlagsNV -> Int -> ExternalMemoryFeatureFlagsNV
clearBit :: ExternalMemoryFeatureFlagsNV -> Int -> ExternalMemoryFeatureFlagsNV
$cclearBit :: ExternalMemoryFeatureFlagsNV -> Int -> ExternalMemoryFeatureFlagsNV
setBit :: ExternalMemoryFeatureFlagsNV -> Int -> ExternalMemoryFeatureFlagsNV
$csetBit :: ExternalMemoryFeatureFlagsNV -> Int -> ExternalMemoryFeatureFlagsNV
bit :: Int -> ExternalMemoryFeatureFlagsNV
$cbit :: Int -> ExternalMemoryFeatureFlagsNV
zeroBits :: ExternalMemoryFeatureFlagsNV
$czeroBits :: ExternalMemoryFeatureFlagsNV
rotate :: ExternalMemoryFeatureFlagsNV -> Int -> ExternalMemoryFeatureFlagsNV
$crotate :: ExternalMemoryFeatureFlagsNV -> Int -> ExternalMemoryFeatureFlagsNV
shift :: ExternalMemoryFeatureFlagsNV -> Int -> ExternalMemoryFeatureFlagsNV
$cshift :: ExternalMemoryFeatureFlagsNV -> Int -> ExternalMemoryFeatureFlagsNV
complement :: ExternalMemoryFeatureFlagsNV -> ExternalMemoryFeatureFlagsNV
$ccomplement :: ExternalMemoryFeatureFlagsNV -> ExternalMemoryFeatureFlagsNV
xor :: ExternalMemoryFeatureFlagsNV
-> ExternalMemoryFeatureFlagsNV -> ExternalMemoryFeatureFlagsNV
$cxor :: ExternalMemoryFeatureFlagsNV
-> ExternalMemoryFeatureFlagsNV -> ExternalMemoryFeatureFlagsNV
.|. :: ExternalMemoryFeatureFlagsNV
-> ExternalMemoryFeatureFlagsNV -> ExternalMemoryFeatureFlagsNV
$c.|. :: ExternalMemoryFeatureFlagsNV
-> ExternalMemoryFeatureFlagsNV -> ExternalMemoryFeatureFlagsNV
.&. :: ExternalMemoryFeatureFlagsNV
-> ExternalMemoryFeatureFlagsNV -> ExternalMemoryFeatureFlagsNV
$c.&. :: ExternalMemoryFeatureFlagsNV
-> ExternalMemoryFeatureFlagsNV -> ExternalMemoryFeatureFlagsNV
$cp1Bits :: Eq ExternalMemoryFeatureFlagsNV
Bits)

-- | 'EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV' specifies that external
-- memory of the specified type /must/ be created as a dedicated allocation
-- when used in the manner specified.
pattern $bEXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV :: ExternalMemoryFeatureFlagsNV
$mEXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV :: forall r.
ExternalMemoryFeatureFlagsNV -> (Void# -> r) -> (Void# -> r) -> r
EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV = ExternalMemoryFeatureFlagBitsNV 0x00000001
-- | 'EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV' specifies that the
-- implementation supports exporting handles of the specified type.
pattern $bEXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV :: ExternalMemoryFeatureFlagsNV
$mEXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV :: forall r.
ExternalMemoryFeatureFlagsNV -> (Void# -> r) -> (Void# -> r) -> r
EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV = ExternalMemoryFeatureFlagBitsNV 0x00000002
-- | 'EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV' specifies that the
-- implementation supports importing handles of the specified type.
pattern $bEXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV :: ExternalMemoryFeatureFlagsNV
$mEXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV :: forall r.
ExternalMemoryFeatureFlagsNV -> (Void# -> r) -> (Void# -> r) -> r
EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV = ExternalMemoryFeatureFlagBitsNV 0x00000004

type ExternalMemoryFeatureFlagsNV = ExternalMemoryFeatureFlagBitsNV

instance Show ExternalMemoryFeatureFlagBitsNV where
  showsPrec :: Int -> ExternalMemoryFeatureFlagsNV -> ShowS
showsPrec p :: Int
p = \case
    EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV -> String -> ShowS
showString "EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV"
    EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV -> String -> ShowS
showString "EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV"
    EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV -> String -> ShowS
showString "EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV"
    ExternalMemoryFeatureFlagBitsNV x :: Flags
x -> Bool -> ShowS -> ShowS
showParen (Int
p Int -> Int -> Bool
forall a. Ord a => a -> a -> Bool
>= 11) (String -> ShowS
showString "ExternalMemoryFeatureFlagBitsNV 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 ExternalMemoryFeatureFlagBitsNV where
  readPrec :: ReadPrec ExternalMemoryFeatureFlagsNV
readPrec = ReadPrec ExternalMemoryFeatureFlagsNV
-> ReadPrec ExternalMemoryFeatureFlagsNV
forall a. ReadPrec a -> ReadPrec a
parens ([(String, ReadPrec ExternalMemoryFeatureFlagsNV)]
-> ReadPrec ExternalMemoryFeatureFlagsNV
forall a. [(String, ReadPrec a)] -> ReadPrec a
choose [("EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV", ExternalMemoryFeatureFlagsNV
-> ReadPrec ExternalMemoryFeatureFlagsNV
forall (f :: * -> *) a. Applicative f => a -> f a
pure ExternalMemoryFeatureFlagsNV
EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV)
                            , ("EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV", ExternalMemoryFeatureFlagsNV
-> ReadPrec ExternalMemoryFeatureFlagsNV
forall (f :: * -> *) a. Applicative f => a -> f a
pure ExternalMemoryFeatureFlagsNV
EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV)
                            , ("EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV", ExternalMemoryFeatureFlagsNV
-> ReadPrec ExternalMemoryFeatureFlagsNV
forall (f :: * -> *) a. Applicative f => a -> f a
pure ExternalMemoryFeatureFlagsNV
EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV)]
                     ReadPrec ExternalMemoryFeatureFlagsNV
-> ReadPrec ExternalMemoryFeatureFlagsNV
-> ReadPrec ExternalMemoryFeatureFlagsNV
forall a. ReadPrec a -> ReadPrec a -> ReadPrec a
+++
                     Int
-> ReadPrec ExternalMemoryFeatureFlagsNV
-> ReadPrec ExternalMemoryFeatureFlagsNV
forall a. Int -> ReadPrec a -> ReadPrec a
prec 10 (do
                       Lexeme -> ReadPrec ()
expectP (String -> Lexeme
Ident "ExternalMemoryFeatureFlagBitsNV")
                       Flags
v <- ReadPrec Flags -> ReadPrec Flags
forall a. ReadPrec a -> ReadPrec a
step ReadPrec Flags
forall a. Read a => ReadPrec a
readPrec
                       ExternalMemoryFeatureFlagsNV
-> ReadPrec ExternalMemoryFeatureFlagsNV
forall (f :: * -> *) a. Applicative f => a -> f a
pure (Flags -> ExternalMemoryFeatureFlagsNV
ExternalMemoryFeatureFlagBitsNV Flags
v)))


type NV_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION = 1

-- No documentation found for TopLevel "VK_NV_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION"
pattern NV_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION :: forall a . Integral a => a
pattern $bNV_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION :: a
$mNV_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION :: forall r a. Integral a => a -> (Void# -> r) -> (Void# -> r) -> r
NV_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION = 1


type NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME = "VK_NV_external_memory_capabilities"

-- No documentation found for TopLevel "VK_NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME"
pattern NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
pattern $bNV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME :: a
$mNV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME :: forall r a.
(Eq a, IsString a) =>
a -> (Void# -> r) -> (Void# -> r) -> r
NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME = "VK_NV_external_memory_capabilities"