{-# language CPP #-}
-- | = Name
--
-- VK_NV_external_memory_capabilities - instance extension
--
-- == VK_NV_external_memory_capabilities
--
-- [__Name String__]
--     @VK_NV_external_memory_capabilities@
--
-- [__Extension Type__]
--     Instance extension
--
-- [__Registered Extension Number__]
--     56
--
-- [__Revision__]
--     1
--
-- [__Ratification Status__]
--     Not ratified
--
-- [__Extension and Version Dependencies__]
--     None
--
-- [__Deprecation State__]
--
--     -   /Deprecated/ by
--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_external_memory_capabilities VK_KHR_external_memory_capabilities>
--         extension
--
--         -   Which in turn was /promoted/ to
--             <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.1-promotions Vulkan 1.1>
--
-- [__Contact__]
--
--     -   James Jones
--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_NV_external_memory_capabilities] @cubanismo%0A*Here describe the issue or question you have about the VK_NV_external_memory_capabilities extension* >
--
-- == Other Extension Metadata
--
-- [__Last Modified Date__]
--     2016-08-19
--
-- [__IP Status__]
--     No known IP claims.
--
-- [__Interactions and External Dependencies__]
--
--     -   Interacts with Vulkan 1.1.
--
--     -   Interacts with @VK_KHR_dedicated_allocation@.
--
--     -   Interacts with @VK_NV_dedicated_allocation@.
--
-- [__Contributors__]
--
--     -   James Jones, NVIDIA
--
-- == Description
--
-- Applications may wish to import memory from the Direct 3D API, or export
-- memory to other Vulkan instances. This extension provides a set of
-- capability queries that allow applications determine what types of win32
-- memory handles an implementation supports for a given set of use cases.
--
-- == New Commands
--
-- -   'getPhysicalDeviceExternalImageFormatPropertiesNV'
--
-- == New Structures
--
-- -   'ExternalImageFormatPropertiesNV'
--
-- == New Enums
--
-- -   'ExternalMemoryFeatureFlagBitsNV'
--
-- -   'ExternalMemoryHandleTypeFlagBitsNV'
--
-- == New Bitmasks
--
-- -   'ExternalMemoryFeatureFlagsNV'
--
-- -   'ExternalMemoryHandleTypeFlagsNV'
--
-- == New Enum Constants
--
-- -   'NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME'
--
-- -   'NV_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION'
--
-- == Issues
--
-- 1) Why do so many external memory capabilities need to be queried on a
-- per-memory-handle-type basis?
--
-- __RESOLVED__: This is because some handle types are based on OS-native
-- objects that have far more limited capabilities than the very generic
-- Vulkan memory objects. Not all memory handle types can name memory
-- objects that support 3D images, for example. Some handle types cannot
-- even support the deferred image and memory binding behavior of Vulkan
-- and require specifying the image when allocating or importing the memory
-- object.
--
-- 2) Does the 'ExternalImageFormatPropertiesNV' struct need to include a
-- list of memory type bits that support the given handle type?
--
-- __RESOLVED__: No. The memory types that do not support the handle types
-- will simply be filtered out of the results returned by
-- 'Vulkan.Core10.MemoryManagement.getImageMemoryRequirements' when a set
-- of handle types was specified at image creation time.
--
-- 3) Should the non-opaque handle types be moved to their own extension?
--
-- __RESOLVED__: Perhaps. However, defining the handle type bits does very
-- little and does not require any platform-specific types on its own, and
-- it is easier to maintain the bitmask values in a single extension for
-- now. Presumably more handle types could be added by separate extensions
-- though, and it would be midly weird to have some platform-specific ones
-- defined in the core spec and some in extensions
--
-- == Version History
--
-- -   Revision 1, 2016-08-19 (James Jones)
--
--     -   Initial version
--
-- == See Also
--
-- 'ExternalImageFormatPropertiesNV', 'ExternalMemoryFeatureFlagBitsNV',
-- 'ExternalMemoryFeatureFlagsNV', 'ExternalMemoryHandleTypeFlagBitsNV',
-- 'ExternalMemoryHandleTypeFlagsNV',
-- 'getPhysicalDeviceExternalImageFormatPropertiesNV'
--
-- == Document Notes
--
-- For more information, see the
-- <https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_external_memory_capabilities Vulkan Specification>
--
-- This page is a generated document. Fixes and changes should be made to
-- the generator scripts, not directly.
module Vulkan.Extensions.VK_NV_external_memory_capabilities  ( getPhysicalDeviceExternalImageFormatPropertiesNV
                                                             , ExternalImageFormatPropertiesNV(..)
                                                             , ExternalMemoryHandleTypeFlagsNV
                                                             , 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
                                                                                                 , ..
                                                                                                 )
                                                             , ExternalMemoryFeatureFlagsNV
                                                             , ExternalMemoryFeatureFlagBitsNV( EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV
                                                                                              , EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV
                                                                                              , EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV
                                                                                              , ..
                                                                                              )
                                                             , 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 Data.Bits (Bits)
import Data.Bits (FiniteBits)
import Vulkan.Internal.Utils (enumReadPrec)
import Vulkan.Internal.Utils (enumShowsPrec)
import Vulkan.Internal.Utils (traceAroundEvent)
import Control.Monad (unless)
import Control.Monad.IO.Class (liftIO)
import Foreign.Marshal.Alloc (allocaBytes)
import GHC.Base (when)
import GHC.IO (throwIO)
import GHC.Ptr (nullFunPtr)
import Foreign.Ptr (plusPtr)
import GHC.Show (showString)
import Numeric (showHex)
import Control.Monad.Trans.Class (lift)
import Control.Monad.Trans.Cont (evalContT)
import Vulkan.CStruct (FromCStruct)
import Vulkan.CStruct (FromCStruct(..))
import Vulkan.CStruct (ToCStruct)
import Vulkan.CStruct (ToCStruct(..))
import Vulkan.Zero (Zero)
import Vulkan.Zero (Zero(..))
import Control.Monad.IO.Class (MonadIO)
import Data.String (IsString)
import Data.Typeable (Typeable)
import Foreign.Storable (Storable)
import Foreign.Storable (Storable(peek))
import Foreign.Storable (Storable(poke))
import qualified Foreign.Storable (Storable(..))
import GHC.Generics (Generic)
import GHC.IO.Exception (IOErrorType(..))
import GHC.IO.Exception (IOException(..))
import Foreign.Ptr (FunPtr)
import Foreign.Ptr (Ptr)
import GHC.Read (Read(readPrec))
import GHC.Show (Show(showsPrec))
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.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(PhysicalDevice))
import Vulkan.Core10.Handles (PhysicalDevice_T)
import Vulkan.Core10.Enums.Result (Result)
import Vulkan.Core10.Enums.Result (Result(..))
import Vulkan.Exception (VulkanException(..))
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
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_external_memory_capabilities VK_NV_external_memory_capabilities>,
-- '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
                                                    --
                                                    -- #VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-physicalDevice-parameter#
                                                    -- @physicalDevice@ /must/ be a valid
                                                    -- 'Vulkan.Core10.Handles.PhysicalDevice' handle
                                                    PhysicalDevice
                                                 -> -- | @format@ is the image format, corresponding to
                                                    -- 'Vulkan.Core10.Image.ImageCreateInfo'::@format@.
                                                    --
                                                    -- #VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-format-parameter#
                                                    -- @format@ /must/ be a valid 'Vulkan.Core10.Enums.Format.Format' value
                                                    Format
                                                 -> -- | @type@ is the image type, corresponding to
                                                    -- 'Vulkan.Core10.Image.ImageCreateInfo'::@imageType@.
                                                    --
                                                    -- #VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-type-parameter#
                                                    -- @type@ /must/ be a valid 'Vulkan.Core10.Enums.ImageType.ImageType' value
                                                    ImageType
                                                 -> -- | @tiling@ is the image tiling, corresponding to
                                                    -- 'Vulkan.Core10.Image.ImageCreateInfo'::@tiling@.
                                                    --
                                                    -- #VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-tiling-parameter#
                                                    -- @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@.
                                                    --
                                                    -- #VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-usage-parameter#
                                                    -- @usage@ /must/ be a valid combination of
                                                    -- 'Vulkan.Core10.Enums.ImageUsageFlagBits.ImageUsageFlagBits' values
                                                    --
                                                    -- #VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-usage-requiredbitmask#
                                                    -- @usage@ /must/ not be @0@
                                                    ImageUsageFlags
                                                 -> -- | @flags@ is a bitmask describing additional parameters of the image,
                                                    -- corresponding to 'Vulkan.Core10.Image.ImageCreateInfo'::@flags@.
                                                    --
                                                    -- #VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-flags-parameter#
                                                    -- @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.
                                                    --
                                                    -- #VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-externalHandleType-07721#
                                                    -- @externalHandleType@ /must/ not have more than one bit set
                                                    --
                                                    -- #VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-externalHandleType-parameter#
                                                    -- @externalHandleType@ /must/ be a valid combination of
                                                    -- 'ExternalMemoryHandleTypeFlagBitsNV' values
                                                    ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
                                                 -> io (ExternalImageFormatPropertiesNV)
getPhysicalDeviceExternalImageFormatPropertiesNV :: forall (io :: * -> *).
MonadIO io =>
PhysicalDevice
-> Format
-> ImageType
-> ImageTiling
-> ImageUsageFlags
-> ImageCreateFlags
-> ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> io ExternalImageFormatPropertiesNV
getPhysicalDeviceExternalImageFormatPropertiesNV PhysicalDevice
physicalDevice
                                                   Format
format
                                                   ImageType
type'
                                                   ImageTiling
tiling
                                                   ImageUsageFlags
usage
                                                   ImageCreateFlags
flags
                                                   "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV
externalHandleType = IO ExternalImageFormatPropertiesNV
-> io ExternalImageFormatPropertiesNV
forall a. IO a -> io a
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)
   -> Ptr ExternalImageFormatPropertiesNV
   -> IO Result)
vkGetPhysicalDeviceExternalImageFormatPropertiesNVPtr = InstanceCmds
-> FunPtr
     (Ptr PhysicalDevice_T
      -> Format
      -> ImageType
      -> ImageTiling
      -> ImageUsageFlags
      -> ImageCreateFlags
      -> ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
      -> Ptr ExternalImageFormatPropertiesNV
      -> IO Result)
pVkGetPhysicalDeviceExternalImageFormatPropertiesNV (case PhysicalDevice
physicalDevice of PhysicalDevice{InstanceCmds
instanceCmds :: InstanceCmds
$sel:instanceCmds:PhysicalDevice :: PhysicalDevice -> InstanceCmds
instanceCmds} -> InstanceCmds
instanceCmds)
  IO () -> ContT ExternalImageFormatPropertiesNV IO ()
forall (m :: * -> *) a.
Monad m =>
m a -> ContT ExternalImageFormatPropertiesNV m a
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)
   -> Ptr ExternalImageFormatPropertiesNV
   -> IO Result)
vkGetPhysicalDeviceExternalImageFormatPropertiesNVPtr FunPtr
  (Ptr PhysicalDevice_T
   -> Format
   -> ImageType
   -> ImageTiling
   -> ImageUsageFlags
   -> ImageCreateFlags
   -> ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
   -> Ptr ExternalImageFormatPropertiesNV
   -> IO Result)
-> FunPtr
     (Ptr PhysicalDevice_T
      -> Format
      -> ImageType
      -> ImageTiling
      -> ImageUsageFlags
      -> ImageCreateFlags
      -> ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
      -> Ptr ExternalImageFormatPropertiesNV
      -> IO Result)
-> Bool
forall a. Eq a => a -> a -> Bool
/= FunPtr
  (Ptr PhysicalDevice_T
   -> Format
   -> ImageType
   -> ImageTiling
   -> ImageUsageFlags
   -> ImageCreateFlags
   -> ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
   -> 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 String
"" String
"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)
-> Ptr ExternalImageFormatPropertiesNV
-> IO Result
vkGetPhysicalDeviceExternalImageFormatPropertiesNV' = FunPtr
  (Ptr PhysicalDevice_T
   -> Format
   -> ImageType
   -> ImageTiling
   -> ImageUsageFlags
   -> ImageCreateFlags
   -> ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
   -> Ptr ExternalImageFormatPropertiesNV
   -> IO Result)
-> Ptr PhysicalDevice_T
-> Format
-> ImageType
-> ImageTiling
-> ImageUsageFlags
-> ImageCreateFlags
-> ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> Ptr ExternalImageFormatPropertiesNV
-> IO Result
mkVkGetPhysicalDeviceExternalImageFormatPropertiesNV FunPtr
  (Ptr PhysicalDevice_T
   -> Format
   -> ImageType
   -> ImageTiling
   -> ImageUsageFlags
   -> ImageCreateFlags
   -> ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
   -> Ptr ExternalImageFormatPropertiesNV
   -> IO Result)
vkGetPhysicalDeviceExternalImageFormatPropertiesNVPtr
  Ptr ExternalImageFormatPropertiesNV
pPExternalImageFormatProperties <- ((Ptr ExternalImageFormatPropertiesNV
  -> IO ExternalImageFormatPropertiesNV)
 -> IO ExternalImageFormatPropertiesNV)
-> ContT
     ExternalImageFormatPropertiesNV
     IO
     (Ptr ExternalImageFormatPropertiesNV)
forall {k} (r :: k) (m :: k -> *) a.
((a -> m r) -> m r) -> ContT r m a
ContT (forall a b. ToCStruct a => (Ptr a -> IO b) -> IO b
withZeroCStruct @ExternalImageFormatPropertiesNV)
  Result
r <- IO Result -> ContT ExternalImageFormatPropertiesNV IO Result
forall (m :: * -> *) a.
Monad m =>
m a -> ContT ExternalImageFormatPropertiesNV m a
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
$ String -> IO Result -> IO Result
forall a. String -> IO a -> IO a
traceAroundEvent String
"vkGetPhysicalDeviceExternalImageFormatPropertiesNV" (Ptr PhysicalDevice_T
-> Format
-> ImageType
-> ImageTiling
-> ImageUsageFlags
-> ImageCreateFlags
-> ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> 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)
                                                                                       (Ptr ExternalImageFormatPropertiesNV
pPExternalImageFormatProperties))
  IO () -> ContT ExternalImageFormatPropertiesNV IO ()
forall (m :: * -> *) a.
Monad m =>
m a -> ContT ExternalImageFormatPropertiesNV m a
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 (m :: * -> *) a.
Monad m =>
m a -> ContT ExternalImageFormatPropertiesNV m a
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
$ forall a. FromCStruct a => Ptr a -> IO a
peekCStruct @ExternalImageFormatPropertiesNV Ptr ExternalImageFormatPropertiesNV
pPExternalImageFormatProperties
  ExternalImageFormatPropertiesNV
-> ContT
     ExternalImageFormatPropertiesNV IO ExternalImageFormatPropertiesNV
forall a. a -> ContT ExternalImageFormatPropertiesNV IO a
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
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_external_memory_capabilities VK_NV_external_memory_capabilities>,
-- '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 :: forall b.
ExternalImageFormatPropertiesNV
-> (Ptr ExternalImageFormatPropertiesNV -> IO b) -> IO b
withCStruct ExternalImageFormatPropertiesNV
x Ptr ExternalImageFormatPropertiesNV -> IO b
f = Int -> (Ptr ExternalImageFormatPropertiesNV -> IO b) -> IO b
forall a b. Int -> (Ptr a -> IO b) -> IO b
allocaBytes Int
48 ((Ptr ExternalImageFormatPropertiesNV -> IO b) -> IO b)
-> (Ptr ExternalImageFormatPropertiesNV -> IO b) -> IO b
forall a b. (a -> b) -> a -> b
$ \Ptr ExternalImageFormatPropertiesNV
p -> Ptr ExternalImageFormatPropertiesNV
-> ExternalImageFormatPropertiesNV -> IO b -> IO b
forall b.
Ptr ExternalImageFormatPropertiesNV
-> ExternalImageFormatPropertiesNV -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr ExternalImageFormatPropertiesNV
p ExternalImageFormatPropertiesNV
x (Ptr ExternalImageFormatPropertiesNV -> IO b
f Ptr ExternalImageFormatPropertiesNV
p)
  pokeCStruct :: forall b.
Ptr ExternalImageFormatPropertiesNV
-> ExternalImageFormatPropertiesNV -> IO b -> IO b
pokeCStruct Ptr ExternalImageFormatPropertiesNV
p ExternalImageFormatPropertiesNV{"externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV
ImageFormatProperties
ExternalMemoryFeatureFlagsNV
$sel:imageFormatProperties:ExternalImageFormatPropertiesNV :: ExternalImageFormatPropertiesNV -> ImageFormatProperties
$sel:externalMemoryFeatures:ExternalImageFormatPropertiesNV :: ExternalImageFormatPropertiesNV -> ExternalMemoryFeatureFlagsNV
$sel:exportFromImportedHandleTypes:ExternalImageFormatPropertiesNV :: ExternalImageFormatPropertiesNV
-> "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV
$sel:compatibleHandleTypes:ExternalImageFormatPropertiesNV :: ExternalImageFormatPropertiesNV
-> "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV
imageFormatProperties :: ImageFormatProperties
externalMemoryFeatures :: ExternalMemoryFeatureFlagsNV
exportFromImportedHandleTypes :: "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV
compatibleHandleTypes :: "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV
..} IO b
f = do
    Ptr ImageFormatProperties -> ImageFormatProperties -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr ExternalImageFormatPropertiesNV
p Ptr ExternalImageFormatPropertiesNV
-> Int -> Ptr ImageFormatProperties
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr ImageFormatProperties)) (ImageFormatProperties
imageFormatProperties)
    Ptr ExternalMemoryFeatureFlagsNV
-> ExternalMemoryFeatureFlagsNV -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr ExternalImageFormatPropertiesNV
p Ptr ExternalImageFormatPropertiesNV
-> Int -> Ptr ExternalMemoryFeatureFlagsNV
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
32 :: Ptr ExternalMemoryFeatureFlagsNV)) (ExternalMemoryFeatureFlagsNV
externalMemoryFeatures)
    Ptr ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr ExternalImageFormatPropertiesNV
p Ptr ExternalImageFormatPropertiesNV
-> Int
-> Ptr ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
36 :: Ptr ExternalMemoryHandleTypeFlagsNV)) ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV
exportFromImportedHandleTypes)
    Ptr ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr ExternalImageFormatPropertiesNV
p Ptr ExternalImageFormatPropertiesNV
-> Int
-> Ptr ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
40 :: Ptr ExternalMemoryHandleTypeFlagsNV)) ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV
compatibleHandleTypes)
    IO b
f
  cStructSize :: Int
cStructSize = Int
48
  cStructAlignment :: Int
cStructAlignment = Int
8
  pokeZeroCStruct :: forall b. Ptr ExternalImageFormatPropertiesNV -> IO b -> IO b
pokeZeroCStruct Ptr ExternalImageFormatPropertiesNV
p IO b
f = do
    Ptr ImageFormatProperties -> ImageFormatProperties -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke ((Ptr ExternalImageFormatPropertiesNV
p Ptr ExternalImageFormatPropertiesNV
-> Int -> Ptr ImageFormatProperties
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr ImageFormatProperties)) (ImageFormatProperties
forall a. Zero a => a
zero)
    IO b
f

instance FromCStruct ExternalImageFormatPropertiesNV where
  peekCStruct :: Ptr ExternalImageFormatPropertiesNV
-> IO ExternalImageFormatPropertiesNV
peekCStruct Ptr ExternalImageFormatPropertiesNV
p = do
    ImageFormatProperties
imageFormatProperties <- forall a. FromCStruct a => Ptr a -> IO a
peekCStruct @ImageFormatProperties ((Ptr ExternalImageFormatPropertiesNV
p Ptr ExternalImageFormatPropertiesNV
-> Int -> Ptr ImageFormatProperties
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: Ptr ImageFormatProperties))
    ExternalMemoryFeatureFlagsNV
externalMemoryFeatures <- forall a. Storable a => Ptr a -> IO a
peek @ExternalMemoryFeatureFlagsNV ((Ptr ExternalImageFormatPropertiesNV
p Ptr ExternalImageFormatPropertiesNV
-> Int -> Ptr ExternalMemoryFeatureFlagsNV
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
32 :: Ptr ExternalMemoryFeatureFlagsNV))
    "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV
exportFromImportedHandleTypes <- forall a. Storable a => Ptr a -> IO a
peek @ExternalMemoryHandleTypeFlagsNV ((Ptr ExternalImageFormatPropertiesNV
p Ptr ExternalImageFormatPropertiesNV
-> Int
-> Ptr ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
36 :: Ptr ExternalMemoryHandleTypeFlagsNV))
    "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV
compatibleHandleTypes <- forall a. Storable a => Ptr a -> IO a
peek @ExternalMemoryHandleTypeFlagsNV ((Ptr ExternalImageFormatPropertiesNV
p Ptr ExternalImageFormatPropertiesNV
-> Int
-> Ptr ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
40 :: Ptr ExternalMemoryHandleTypeFlagsNV))
    ExternalImageFormatPropertiesNV
-> IO ExternalImageFormatPropertiesNV
forall a. a -> IO a
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 Storable ExternalImageFormatPropertiesNV where
  sizeOf :: ExternalImageFormatPropertiesNV -> Int
sizeOf ~ExternalImageFormatPropertiesNV
_ = Int
48
  alignment :: ExternalImageFormatPropertiesNV -> Int
alignment ~ExternalImageFormatPropertiesNV
_ = Int
8
  peek :: Ptr ExternalImageFormatPropertiesNV
-> IO ExternalImageFormatPropertiesNV
peek = Ptr ExternalImageFormatPropertiesNV
-> IO ExternalImageFormatPropertiesNV
forall a. FromCStruct a => Ptr a -> IO a
peekCStruct
  poke :: Ptr ExternalImageFormatPropertiesNV
-> ExternalImageFormatPropertiesNV -> IO ()
poke Ptr ExternalImageFormatPropertiesNV
ptr ExternalImageFormatPropertiesNV
poked = Ptr ExternalImageFormatPropertiesNV
-> ExternalImageFormatPropertiesNV -> IO () -> IO ()
forall b.
Ptr ExternalImageFormatPropertiesNV
-> ExternalImageFormatPropertiesNV -> IO b -> IO b
forall a b. ToCStruct a => Ptr a -> a -> IO b -> IO b
pokeCStruct Ptr ExternalImageFormatPropertiesNV
ptr ExternalImageFormatPropertiesNV
poked (() -> IO ()
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ())

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


type ExternalMemoryHandleTypeFlagsNV = ExternalMemoryHandleTypeFlagBitsNV

-- | VkExternalMemoryHandleTypeFlagBitsNV - Bitmask specifying external
-- memory handle types
--
-- = See Also
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_external_memory_capabilities VK_NV_external_memory_capabilities>,
-- '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
$c== :: ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> Bool
== :: ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> Bool
$c/= :: ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> Bool
/= :: ("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
$ccompare :: ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> Ordering
compare :: ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> Ordering
$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
>= :: ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> Bool
$cmax :: ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV
max :: ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV
$cmin :: ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV
min :: ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV
Ord, 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
$csizeOf :: ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV) -> Int
sizeOf :: ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV) -> Int
$calignment :: ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV) -> Int
alignment :: ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV) -> Int
$cpeekElemOff :: Ptr ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> Int
-> IO ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
peekElemOff :: Ptr ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> Int
-> IO ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
$cpokeElemOff :: Ptr ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> Int
-> ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> IO ()
pokeElemOff :: Ptr ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> Int
-> ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> IO ()
$cpeekByteOff :: forall b.
Ptr b
-> Int
-> IO ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
peekByteOff :: forall b.
Ptr b
-> Int
-> IO ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
$cpokeByteOff :: forall b.
Ptr b
-> Int
-> ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> IO ()
pokeByteOff :: forall b.
Ptr b
-> Int
-> ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> IO ()
$cpeek :: Ptr ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> IO ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
peek :: Ptr ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> IO ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
$cpoke :: Ptr ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> IO ()
poke :: Ptr ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> IO ()
Storable, "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV
("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> Zero ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
forall a. a -> Zero a
$czero :: "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV
zero :: "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
$c.&. :: ("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
$cxor :: ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV
xor :: ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV
$ccomplement :: ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV
complement :: ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV
$cshift :: ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> Int -> "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV
shift :: ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> Int -> "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV
$crotate :: ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> Int -> "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV
rotate :: ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> Int -> "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV
$czeroBits :: "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV
zeroBits :: "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV
$cbit :: Int -> "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV
bit :: Int -> "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV
$csetBit :: ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> Int -> "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV
setBit :: ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> Int -> "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV
$cclearBit :: ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> Int -> "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV
clearBit :: ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> Int -> "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV
$ccomplementBit :: ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> Int -> "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV
complementBit :: ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> Int -> "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV
$ctestBit :: ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> Int -> Bool
testBit :: ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> Int -> Bool
$cbitSizeMaybe :: ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> Maybe Int
bitSizeMaybe :: ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> Maybe Int
$cbitSize :: ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV) -> Int
bitSize :: ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV) -> Int
$cisSigned :: ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV) -> Bool
isSigned :: ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV) -> Bool
$cshiftL :: ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> Int -> "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV
shiftL :: ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> Int -> "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV
$cunsafeShiftL :: ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> Int -> "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV
unsafeShiftL :: ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> Int -> "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV
$cshiftR :: ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> Int -> "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV
shiftR :: ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> Int -> "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV
$cunsafeShiftR :: ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> Int -> "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV
unsafeShiftR :: ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> Int -> "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV
$crotateL :: ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> Int -> "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV
rotateL :: ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> Int -> "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV
$crotateR :: ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> Int -> "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV
rotateR :: ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> Int -> "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV
$cpopCount :: ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV) -> Int
popCount :: ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV) -> Int
Bits, Bits ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
Bits ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV) =>
(("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV) -> Int)
-> (("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
    -> Int)
-> (("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
    -> Int)
-> FiniteBits
     ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV) -> Int
forall b.
Bits b =>
(b -> Int) -> (b -> Int) -> (b -> Int) -> FiniteBits b
$cfiniteBitSize :: ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV) -> Int
finiteBitSize :: ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV) -> Int
$ccountLeadingZeros :: ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV) -> Int
countLeadingZeros :: ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV) -> Int
$ccountTrailingZeros :: ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV) -> Int
countTrailingZeros :: ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV) -> Int
FiniteBits)

-- | '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)
-> ((# #) -> r) -> ((# #) -> 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)
-> ((# #) -> r) -> ((# #) -> 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)
-> ((# #) -> r) -> ((# #) -> 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)
-> ((# #) -> r) -> ((# #) -> r) -> r
EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV = ExternalMemoryHandleTypeFlagBitsNV 0x00000008

conNameExternalMemoryHandleTypeFlagBitsNV :: String
conNameExternalMemoryHandleTypeFlagBitsNV :: String
conNameExternalMemoryHandleTypeFlagBitsNV = String
"ExternalMemoryHandleTypeFlagBitsNV"

enumPrefixExternalMemoryHandleTypeFlagBitsNV :: String
enumPrefixExternalMemoryHandleTypeFlagBitsNV :: String
enumPrefixExternalMemoryHandleTypeFlagBitsNV = String
"EXTERNAL_MEMORY_HANDLE_TYPE_"

showTableExternalMemoryHandleTypeFlagBitsNV :: [(ExternalMemoryHandleTypeFlagBitsNV, String)]
showTableExternalMemoryHandleTypeFlagBitsNV :: [("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV,
  String)]
showTableExternalMemoryHandleTypeFlagBitsNV =
  [
    ( "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV
EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV
    , String
"OPAQUE_WIN32_BIT_NV"
    )
  ,
    ( "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV
EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV
    , String
"OPAQUE_WIN32_KMT_BIT_NV"
    )
  ,
    ( "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV
EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV
    , String
"D3D11_IMAGE_BIT_NV"
    )
  ,
    ( "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV
EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV
    , String
"D3D11_IMAGE_KMT_BIT_NV"
    )
  ]

instance Show ExternalMemoryHandleTypeFlagBitsNV where
  showsPrec :: Int
-> ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> ShowS
showsPrec =
    String
-> [("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV,
     String)]
-> String
-> (("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
    -> Flags)
-> (Flags -> ShowS)
-> Int
-> ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> ShowS
forall a i.
Eq a =>
String
-> [(a, String)]
-> String
-> (a -> i)
-> (i -> ShowS)
-> Int
-> a
-> ShowS
enumShowsPrec
      String
enumPrefixExternalMemoryHandleTypeFlagBitsNV
      [("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV,
  String)]
showTableExternalMemoryHandleTypeFlagBitsNV
      String
conNameExternalMemoryHandleTypeFlagBitsNV
      (\(ExternalMemoryHandleTypeFlagBitsNV Flags
x) -> Flags
x)
      (\Flags
x -> String -> ShowS
showString String
"0x" ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Flags -> ShowS
forall a. Integral a => a -> ShowS
showHex Flags
x)

instance Read ExternalMemoryHandleTypeFlagBitsNV where
  readPrec :: ReadPrec ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
readPrec =
    String
-> [("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV,
     String)]
-> String
-> (Flags
    -> "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
-> ReadPrec
     ("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV)
forall i a.
Read i =>
String -> [(a, String)] -> String -> (i -> a) -> ReadPrec a
enumReadPrec
      String
enumPrefixExternalMemoryHandleTypeFlagBitsNV
      [("externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV,
  String)]
showTableExternalMemoryHandleTypeFlagBitsNV
      String
conNameExternalMemoryHandleTypeFlagBitsNV
      Flags -> "externalHandleType" ::: ExternalMemoryHandleTypeFlagsNV
ExternalMemoryHandleTypeFlagBitsNV

type ExternalMemoryFeatureFlagsNV = ExternalMemoryFeatureFlagBitsNV

-- | VkExternalMemoryFeatureFlagBitsNV - Bitmask specifying external memory
-- features
--
-- = See Also
--
-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_external_memory_capabilities VK_NV_external_memory_capabilities>,
-- '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
$c== :: ExternalMemoryFeatureFlagsNV
-> ExternalMemoryFeatureFlagsNV -> Bool
== :: ExternalMemoryFeatureFlagsNV
-> ExternalMemoryFeatureFlagsNV -> Bool
$c/= :: ExternalMemoryFeatureFlagsNV
-> ExternalMemoryFeatureFlagsNV -> Bool
/= :: 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
$ccompare :: ExternalMemoryFeatureFlagsNV
-> ExternalMemoryFeatureFlagsNV -> Ordering
compare :: ExternalMemoryFeatureFlagsNV
-> ExternalMemoryFeatureFlagsNV -> Ordering
$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
>= :: ExternalMemoryFeatureFlagsNV
-> ExternalMemoryFeatureFlagsNV -> Bool
$cmax :: ExternalMemoryFeatureFlagsNV
-> ExternalMemoryFeatureFlagsNV -> ExternalMemoryFeatureFlagsNV
max :: ExternalMemoryFeatureFlagsNV
-> ExternalMemoryFeatureFlagsNV -> ExternalMemoryFeatureFlagsNV
$cmin :: ExternalMemoryFeatureFlagsNV
-> ExternalMemoryFeatureFlagsNV -> ExternalMemoryFeatureFlagsNV
min :: ExternalMemoryFeatureFlagsNV
-> ExternalMemoryFeatureFlagsNV -> ExternalMemoryFeatureFlagsNV
Ord, 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
$csizeOf :: ExternalMemoryFeatureFlagsNV -> Int
sizeOf :: ExternalMemoryFeatureFlagsNV -> Int
$calignment :: ExternalMemoryFeatureFlagsNV -> Int
alignment :: ExternalMemoryFeatureFlagsNV -> Int
$cpeekElemOff :: Ptr ExternalMemoryFeatureFlagsNV
-> Int -> IO ExternalMemoryFeatureFlagsNV
peekElemOff :: Ptr ExternalMemoryFeatureFlagsNV
-> Int -> IO ExternalMemoryFeatureFlagsNV
$cpokeElemOff :: Ptr ExternalMemoryFeatureFlagsNV
-> Int -> ExternalMemoryFeatureFlagsNV -> IO ()
pokeElemOff :: Ptr ExternalMemoryFeatureFlagsNV
-> Int -> ExternalMemoryFeatureFlagsNV -> IO ()
$cpeekByteOff :: forall b. Ptr b -> Int -> IO ExternalMemoryFeatureFlagsNV
peekByteOff :: forall b. Ptr b -> Int -> IO ExternalMemoryFeatureFlagsNV
$cpokeByteOff :: forall b. Ptr b -> Int -> ExternalMemoryFeatureFlagsNV -> IO ()
pokeByteOff :: forall b. Ptr b -> Int -> ExternalMemoryFeatureFlagsNV -> IO ()
$cpeek :: Ptr ExternalMemoryFeatureFlagsNV -> IO ExternalMemoryFeatureFlagsNV
peek :: Ptr ExternalMemoryFeatureFlagsNV -> IO ExternalMemoryFeatureFlagsNV
$cpoke :: Ptr ExternalMemoryFeatureFlagsNV
-> ExternalMemoryFeatureFlagsNV -> IO ()
poke :: Ptr ExternalMemoryFeatureFlagsNV
-> ExternalMemoryFeatureFlagsNV -> IO ()
Storable, ExternalMemoryFeatureFlagsNV
ExternalMemoryFeatureFlagsNV -> Zero ExternalMemoryFeatureFlagsNV
forall a. a -> Zero a
$czero :: ExternalMemoryFeatureFlagsNV
zero :: 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
$c.&. :: ExternalMemoryFeatureFlagsNV
-> ExternalMemoryFeatureFlagsNV -> ExternalMemoryFeatureFlagsNV
.&. :: ExternalMemoryFeatureFlagsNV
-> ExternalMemoryFeatureFlagsNV -> ExternalMemoryFeatureFlagsNV
$c.|. :: ExternalMemoryFeatureFlagsNV
-> ExternalMemoryFeatureFlagsNV -> ExternalMemoryFeatureFlagsNV
.|. :: ExternalMemoryFeatureFlagsNV
-> ExternalMemoryFeatureFlagsNV -> ExternalMemoryFeatureFlagsNV
$cxor :: ExternalMemoryFeatureFlagsNV
-> ExternalMemoryFeatureFlagsNV -> ExternalMemoryFeatureFlagsNV
xor :: ExternalMemoryFeatureFlagsNV
-> ExternalMemoryFeatureFlagsNV -> ExternalMemoryFeatureFlagsNV
$ccomplement :: ExternalMemoryFeatureFlagsNV -> ExternalMemoryFeatureFlagsNV
complement :: ExternalMemoryFeatureFlagsNV -> ExternalMemoryFeatureFlagsNV
$cshift :: ExternalMemoryFeatureFlagsNV -> Int -> ExternalMemoryFeatureFlagsNV
shift :: ExternalMemoryFeatureFlagsNV -> Int -> ExternalMemoryFeatureFlagsNV
$crotate :: ExternalMemoryFeatureFlagsNV -> Int -> ExternalMemoryFeatureFlagsNV
rotate :: ExternalMemoryFeatureFlagsNV -> Int -> ExternalMemoryFeatureFlagsNV
$czeroBits :: ExternalMemoryFeatureFlagsNV
zeroBits :: ExternalMemoryFeatureFlagsNV
$cbit :: Int -> ExternalMemoryFeatureFlagsNV
bit :: Int -> ExternalMemoryFeatureFlagsNV
$csetBit :: ExternalMemoryFeatureFlagsNV -> Int -> ExternalMemoryFeatureFlagsNV
setBit :: ExternalMemoryFeatureFlagsNV -> Int -> ExternalMemoryFeatureFlagsNV
$cclearBit :: ExternalMemoryFeatureFlagsNV -> Int -> ExternalMemoryFeatureFlagsNV
clearBit :: ExternalMemoryFeatureFlagsNV -> Int -> ExternalMemoryFeatureFlagsNV
$ccomplementBit :: ExternalMemoryFeatureFlagsNV -> Int -> ExternalMemoryFeatureFlagsNV
complementBit :: ExternalMemoryFeatureFlagsNV -> Int -> ExternalMemoryFeatureFlagsNV
$ctestBit :: ExternalMemoryFeatureFlagsNV -> Int -> Bool
testBit :: ExternalMemoryFeatureFlagsNV -> Int -> Bool
$cbitSizeMaybe :: ExternalMemoryFeatureFlagsNV -> Maybe Int
bitSizeMaybe :: ExternalMemoryFeatureFlagsNV -> Maybe Int
$cbitSize :: ExternalMemoryFeatureFlagsNV -> Int
bitSize :: ExternalMemoryFeatureFlagsNV -> Int
$cisSigned :: ExternalMemoryFeatureFlagsNV -> Bool
isSigned :: ExternalMemoryFeatureFlagsNV -> Bool
$cshiftL :: ExternalMemoryFeatureFlagsNV -> Int -> ExternalMemoryFeatureFlagsNV
shiftL :: ExternalMemoryFeatureFlagsNV -> Int -> ExternalMemoryFeatureFlagsNV
$cunsafeShiftL :: ExternalMemoryFeatureFlagsNV -> Int -> ExternalMemoryFeatureFlagsNV
unsafeShiftL :: ExternalMemoryFeatureFlagsNV -> Int -> ExternalMemoryFeatureFlagsNV
$cshiftR :: ExternalMemoryFeatureFlagsNV -> Int -> ExternalMemoryFeatureFlagsNV
shiftR :: ExternalMemoryFeatureFlagsNV -> Int -> ExternalMemoryFeatureFlagsNV
$cunsafeShiftR :: ExternalMemoryFeatureFlagsNV -> Int -> ExternalMemoryFeatureFlagsNV
unsafeShiftR :: ExternalMemoryFeatureFlagsNV -> Int -> ExternalMemoryFeatureFlagsNV
$crotateL :: ExternalMemoryFeatureFlagsNV -> Int -> ExternalMemoryFeatureFlagsNV
rotateL :: ExternalMemoryFeatureFlagsNV -> Int -> ExternalMemoryFeatureFlagsNV
$crotateR :: ExternalMemoryFeatureFlagsNV -> Int -> ExternalMemoryFeatureFlagsNV
rotateR :: ExternalMemoryFeatureFlagsNV -> Int -> ExternalMemoryFeatureFlagsNV
$cpopCount :: ExternalMemoryFeatureFlagsNV -> Int
popCount :: ExternalMemoryFeatureFlagsNV -> Int
Bits, Bits ExternalMemoryFeatureFlagsNV
Bits ExternalMemoryFeatureFlagsNV =>
(ExternalMemoryFeatureFlagsNV -> Int)
-> (ExternalMemoryFeatureFlagsNV -> Int)
-> (ExternalMemoryFeatureFlagsNV -> Int)
-> FiniteBits ExternalMemoryFeatureFlagsNV
ExternalMemoryFeatureFlagsNV -> Int
forall b.
Bits b =>
(b -> Int) -> (b -> Int) -> (b -> Int) -> FiniteBits b
$cfiniteBitSize :: ExternalMemoryFeatureFlagsNV -> Int
finiteBitSize :: ExternalMemoryFeatureFlagsNV -> Int
$ccountLeadingZeros :: ExternalMemoryFeatureFlagsNV -> Int
countLeadingZeros :: ExternalMemoryFeatureFlagsNV -> Int
$ccountTrailingZeros :: ExternalMemoryFeatureFlagsNV -> Int
countTrailingZeros :: ExternalMemoryFeatureFlagsNV -> Int
FiniteBits)

-- | '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 -> ((# #) -> r) -> ((# #) -> 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 -> ((# #) -> r) -> ((# #) -> 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 -> ((# #) -> r) -> ((# #) -> r) -> r
EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV = ExternalMemoryFeatureFlagBitsNV 0x00000004

conNameExternalMemoryFeatureFlagBitsNV :: String
conNameExternalMemoryFeatureFlagBitsNV :: String
conNameExternalMemoryFeatureFlagBitsNV = String
"ExternalMemoryFeatureFlagBitsNV"

enumPrefixExternalMemoryFeatureFlagBitsNV :: String
enumPrefixExternalMemoryFeatureFlagBitsNV :: String
enumPrefixExternalMemoryFeatureFlagBitsNV = String
"EXTERNAL_MEMORY_FEATURE_"

showTableExternalMemoryFeatureFlagBitsNV :: [(ExternalMemoryFeatureFlagBitsNV, String)]
showTableExternalMemoryFeatureFlagBitsNV :: [(ExternalMemoryFeatureFlagsNV, String)]
showTableExternalMemoryFeatureFlagBitsNV =
  [
    ( ExternalMemoryFeatureFlagsNV
EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV
    , String
"DEDICATED_ONLY_BIT_NV"
    )
  ,
    ( ExternalMemoryFeatureFlagsNV
EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV
    , String
"EXPORTABLE_BIT_NV"
    )
  ,
    ( ExternalMemoryFeatureFlagsNV
EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV
    , String
"IMPORTABLE_BIT_NV"
    )
  ]

instance Show ExternalMemoryFeatureFlagBitsNV where
  showsPrec :: Int -> ExternalMemoryFeatureFlagsNV -> ShowS
showsPrec =
    String
-> [(ExternalMemoryFeatureFlagsNV, String)]
-> String
-> (ExternalMemoryFeatureFlagsNV -> Flags)
-> (Flags -> ShowS)
-> Int
-> ExternalMemoryFeatureFlagsNV
-> ShowS
forall a i.
Eq a =>
String
-> [(a, String)]
-> String
-> (a -> i)
-> (i -> ShowS)
-> Int
-> a
-> ShowS
enumShowsPrec
      String
enumPrefixExternalMemoryFeatureFlagBitsNV
      [(ExternalMemoryFeatureFlagsNV, String)]
showTableExternalMemoryFeatureFlagBitsNV
      String
conNameExternalMemoryFeatureFlagBitsNV
      (\(ExternalMemoryFeatureFlagBitsNV Flags
x) -> Flags
x)
      (\Flags
x -> String -> ShowS
showString String
"0x" ShowS -> ShowS -> ShowS
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Flags -> ShowS
forall a. Integral a => a -> ShowS
showHex Flags
x)

instance Read ExternalMemoryFeatureFlagBitsNV where
  readPrec :: ReadPrec ExternalMemoryFeatureFlagsNV
readPrec =
    String
-> [(ExternalMemoryFeatureFlagsNV, String)]
-> String
-> (Flags -> ExternalMemoryFeatureFlagsNV)
-> ReadPrec ExternalMemoryFeatureFlagsNV
forall i a.
Read i =>
String -> [(a, String)] -> String -> (i -> a) -> ReadPrec a
enumReadPrec
      String
enumPrefixExternalMemoryFeatureFlagBitsNV
      [(ExternalMemoryFeatureFlagsNV, String)]
showTableExternalMemoryFeatureFlagBitsNV
      String
conNameExternalMemoryFeatureFlagBitsNV
      Flags -> ExternalMemoryFeatureFlagsNV
ExternalMemoryFeatureFlagBitsNV

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 :: forall a. Integral a => a
$mNV_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION :: forall {r} {a}.
Integral a =>
a -> ((# #) -> r) -> ((# #) -> 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 :: forall a. (Eq a, IsString a) => a
$mNV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME :: forall {r} {a}.
(Eq a, IsString a) =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME = "VK_NV_external_memory_capabilities"