{-# OPTIONS_HADDOCK not-home#-} {-# LANGUAGE DataKinds #-} {-# LANGUAGE ForeignFunctionInterface #-} {-# LANGUAGE MagicHash #-} {-# LANGUAGE PatternSynonyms #-} {-# LANGUAGE Strict #-} {-# LANGUAGE ViewPatterns #-} module Graphics.Vulkan.Ext.VK_NVX_device_generated_commands (-- * Vulkan extension: @VK_NVX_device_generated_commands@ -- | -- -- supported: @vulkan@ -- -- contact: @Christoph Kubisch @pixeljetstream@ -- -- author: @NVX@ -- -- type: @device@ -- -- Extension number: @87@ module Graphics.Vulkan.Types.BaseTypes, module Graphics.Vulkan.Types.Struct.VkCmdProcessCommandsInfoNVX, module Graphics.Vulkan.Types.Struct.VkCmdReserveSpaceForCommandsInfoNVX, module Graphics.Vulkan.Types.Struct.VkDeviceGeneratedCommandsFeaturesNVX, module Graphics.Vulkan.Types.Struct.VkDeviceGeneratedCommandsLimitsNVX, module Graphics.Vulkan.Types.Enum.VkIndexType, module Graphics.Vulkan.Types.Struct.VkIndirectCommandsLayoutCreateInfoNVX, module Graphics.Vulkan.Types.Struct.VkIndirectCommandsLayoutTokenNVX, module Graphics.Vulkan.Types.Enum.VkIndirectCommandsLayoutUsageFlagsNVX, module Graphics.Vulkan.Types.Struct.VkIndirectCommandsTokenNVX, module Graphics.Vulkan.Types.Enum.VkIndirectCommandsTokenTypeNVX, module Graphics.Vulkan.Types.Enum.VkObjectEntryTypeNVX, module Graphics.Vulkan.Types.Enum.VkObjectEntryUsageFlagsNVX, module Graphics.Vulkan.Types.Struct.VkObjectTableCreateInfoNVX, module Graphics.Vulkan.Types.Struct.VkObjectTableDescriptorSetEntryNVX, module Graphics.Vulkan.Types.Struct.VkObjectTableEntryNVX, module Graphics.Vulkan.Types.Struct.VkObjectTableIndexBufferEntryNVX, module Graphics.Vulkan.Types.Struct.VkObjectTablePipelineEntryNVX, module Graphics.Vulkan.Types.Struct.VkObjectTablePushConstantEntryNVX, module Graphics.Vulkan.Types.Struct.VkObjectTableVertexBufferEntryNVX, module Graphics.Vulkan.Types.Enum.VkPipelineBindPoint, module Graphics.Vulkan.Types.Enum.VkShaderStageFlags, module Graphics.Vulkan.Types.Enum.VkStructureType, -- > #include "vk_platform.h" vkCmdProcessCommandsNVX, vkCmdReserveSpaceForCommandsNVX, vkCreateIndirectCommandsLayoutNVX, vkDestroyIndirectCommandsLayoutNVX, vkCreateObjectTableNVX, vkDestroyObjectTableNVX, vkRegisterObjectsNVX, vkUnregisterObjectsNVX, vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX, module Graphics.Vulkan.Marshal, module Graphics.Vulkan.Types.Enum.VkInternalAllocationType, module Graphics.Vulkan.Types.Enum.VkResult, module Graphics.Vulkan.Types.Enum.VkSystemAllocationScope, module Graphics.Vulkan.Types.Funcpointers, module Graphics.Vulkan.Types.Handles, module Graphics.Vulkan.Types.Struct.VkAllocationCallbacks, VK_NVX_DEVICE_GENERATED_COMMANDS_SPEC_VERSION, pattern VK_NVX_DEVICE_GENERATED_COMMANDS_SPEC_VERSION, VK_NVX_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME, pattern VK_NVX_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME, pattern VK_STRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX, pattern VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX, pattern VK_STRUCTURE_TYPE_CMD_PROCESS_COMMANDS_INFO_NVX, pattern VK_STRUCTURE_TYPE_CMD_RESERVE_SPACE_FOR_COMMANDS_INFO_NVX, pattern VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_LIMITS_NVX, pattern VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_FEATURES_NVX, pattern VK_PIPELINE_STAGE_COMMAND_PROCESS_BIT_NVX, pattern VK_ACCESS_COMMAND_PROCESS_READ_BIT_NVX, pattern VK_ACCESS_COMMAND_PROCESS_WRITE_BIT_NVX, pattern VK_OBJECT_TYPE_OBJECT_TABLE_NVX, pattern VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX) where import GHC.Ptr (Ptr (..)) import Graphics.Vulkan.Marshal import Graphics.Vulkan.Types.BaseTypes import Graphics.Vulkan.Types.Enum.VkAccessFlags (VkAccessBitmask (..), VkAccessFlagBits) import Graphics.Vulkan.Types.Enum.VkIndexType import Graphics.Vulkan.Types.Enum.VkIndirectCommandsLayoutUsageFlagsNVX import Graphics.Vulkan.Types.Enum.VkIndirectCommandsTokenTypeNVX import Graphics.Vulkan.Types.Enum.VkInternalAllocationType import Graphics.Vulkan.Types.Enum.VkObjectEntryTypeNVX import Graphics.Vulkan.Types.Enum.VkObjectEntryUsageFlagsNVX import Graphics.Vulkan.Types.Enum.VkObjectType (VkObjectType (..)) import Graphics.Vulkan.Types.Enum.VkPipelineBindPoint import Graphics.Vulkan.Types.Enum.VkPipelineStageFlags (VkPipelineStageBitmask (..), VkPipelineStageFlagBits) import Graphics.Vulkan.Types.Enum.VkResult import Graphics.Vulkan.Types.Enum.VkShaderStageFlags import Graphics.Vulkan.Types.Enum.VkStructureType import Graphics.Vulkan.Types.Enum.VkSystemAllocationScope import Graphics.Vulkan.Types.Funcpointers import Graphics.Vulkan.Types.Handles import Graphics.Vulkan.Types.Struct.VkAllocationCallbacks import Graphics.Vulkan.Types.Struct.VkCmdProcessCommandsInfoNVX import Graphics.Vulkan.Types.Struct.VkCmdReserveSpaceForCommandsInfoNVX import Graphics.Vulkan.Types.Struct.VkDeviceGeneratedCommandsFeaturesNVX import Graphics.Vulkan.Types.Struct.VkDeviceGeneratedCommandsLimitsNVX import Graphics.Vulkan.Types.Struct.VkIndirectCommandsLayoutCreateInfoNVX import Graphics.Vulkan.Types.Struct.VkIndirectCommandsLayoutTokenNVX import Graphics.Vulkan.Types.Struct.VkIndirectCommandsTokenNVX import Graphics.Vulkan.Types.Struct.VkObjectTableCreateInfoNVX import Graphics.Vulkan.Types.Struct.VkObjectTableDescriptorSetEntryNVX import Graphics.Vulkan.Types.Struct.VkObjectTableEntryNVX import Graphics.Vulkan.Types.Struct.VkObjectTableIndexBufferEntryNVX import Graphics.Vulkan.Types.Struct.VkObjectTablePipelineEntryNVX import Graphics.Vulkan.Types.Struct.VkObjectTablePushConstantEntryNVX import Graphics.Vulkan.Types.Struct.VkObjectTableVertexBufferEntryNVX -- | queues: 'graphics', 'compute'. -- -- renderpass: @inside@ -- -- > () vkCmdProcessCommandsNVX -- > ( VkCommandBuffer commandBuffer -- > , const VkCmdProcessCommandsInfoNVX* pProcessCommandsInfo -- > ) -- -- foreign import ccall unsafe "vkCmdProcessCommandsNVX" vkCmdProcessCommandsNVX :: VkCommandBuffer -- ^ commandBuffer -> Ptr VkCmdProcessCommandsInfoNVX -- ^ pProcessCommandsInfo -> IO () -- | queues: 'graphics', 'compute'. -- -- renderpass: @inside@ -- -- > () vkCmdReserveSpaceForCommandsNVX -- > ( VkCommandBuffer commandBuffer -- > , const VkCmdReserveSpaceForCommandsInfoNVX* pReserveSpaceInfo -- > ) -- -- foreign import ccall unsafe "vkCmdReserveSpaceForCommandsNVX" vkCmdReserveSpaceForCommandsNVX :: VkCommandBuffer -- ^ commandBuffer -> Ptr VkCmdReserveSpaceForCommandsInfoNVX -- ^ pReserveSpaceInfo -> IO () -- | Success codes: 'VK_SUCCESS'. -- -- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'. -- -- > VkResult vkCreateIndirectCommandsLayoutNVX -- > ( VkDevice device -- > , const VkIndirectCommandsLayoutCreateInfoNVX* pCreateInfo -- > , const VkAllocationCallbacks* pAllocator -- > , VkIndirectCommandsLayoutNVX* pIndirectCommandsLayout -- > ) -- -- foreign import ccall unsafe "vkCreateIndirectCommandsLayoutNVX" vkCreateIndirectCommandsLayoutNVX :: VkDevice -- ^ device -> Ptr VkIndirectCommandsLayoutCreateInfoNVX -- ^ pCreateInfo -> Ptr VkAllocationCallbacks -- ^ pAllocator -> Ptr VkIndirectCommandsLayoutNVX -- ^ pIndirectCommandsLayout -> IO VkResult -- | > () vkDestroyIndirectCommandsLayoutNVX -- > ( VkDevice device -- > , VkIndirectCommandsLayoutNVX indirectCommandsLayout -- > , const VkAllocationCallbacks* pAllocator -- > ) -- -- foreign import ccall unsafe "vkDestroyIndirectCommandsLayoutNVX" vkDestroyIndirectCommandsLayoutNVX :: VkDevice -- ^ device -> VkIndirectCommandsLayoutNVX -- ^ indirectCommandsLayout -> Ptr VkAllocationCallbacks -- ^ pAllocator -> IO () -- | Success codes: 'VK_SUCCESS'. -- -- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'. -- -- > VkResult vkCreateObjectTableNVX -- > ( VkDevice device -- > , const VkObjectTableCreateInfoNVX* pCreateInfo -- > , const VkAllocationCallbacks* pAllocator -- > , VkObjectTableNVX* pObjectTable -- > ) -- -- foreign import ccall unsafe "vkCreateObjectTableNVX" vkCreateObjectTableNVX :: VkDevice -- ^ device -> Ptr VkObjectTableCreateInfoNVX -- ^ pCreateInfo -> Ptr VkAllocationCallbacks -- ^ pAllocator -> Ptr VkObjectTableNVX -- ^ pObjectTable -> IO VkResult -- | > () vkDestroyObjectTableNVX -- > ( VkDevice device -- > , VkObjectTableNVX objectTable -- > , const VkAllocationCallbacks* pAllocator -- > ) -- -- foreign import ccall unsafe "vkDestroyObjectTableNVX" vkDestroyObjectTableNVX :: VkDevice -- ^ device -> VkObjectTableNVX -- ^ objectTable -> Ptr VkAllocationCallbacks -- ^ pAllocator -> IO () -- | Success codes: 'VK_SUCCESS'. -- -- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'. -- -- > VkResult vkRegisterObjectsNVX -- > ( VkDevice device -- > , VkObjectTableNVX objectTable -- > , uint32_t objectCount -- > , const VkObjectTableEntryNVX* const* ppObjectTableEntries -- > , const uint32_t* pObjectIndices -- > ) -- -- foreign import ccall unsafe "vkRegisterObjectsNVX" vkRegisterObjectsNVX :: VkDevice -- ^ device -> VkObjectTableNVX -- ^ objectTable -> Word32 -- ^ objectCount -> Ptr (Ptr VkObjectTableEntryNVX) -- ^ ppObjectTableEntries -> Ptr Word32 -- ^ pObjectIndices -> IO VkResult -- | Success codes: 'VK_SUCCESS'. -- -- Error codes: 'VK_ERROR_OUT_OF_HOST_MEMORY', 'VK_ERROR_OUT_OF_DEVICE_MEMORY'. -- -- > VkResult vkUnregisterObjectsNVX -- > ( VkDevice device -- > , VkObjectTableNVX objectTable -- > , uint32_t objectCount -- > , const VkObjectEntryTypeNVX* pObjectEntryTypes -- > , const uint32_t* pObjectIndices -- > ) -- -- foreign import ccall unsafe "vkUnregisterObjectsNVX" vkUnregisterObjectsNVX :: VkDevice -- ^ device -> VkObjectTableNVX -- ^ objectTable -> Word32 -- ^ objectCount -> Ptr VkObjectEntryTypeNVX -- ^ pObjectEntryTypes -> Ptr Word32 -- ^ pObjectIndices -> IO VkResult -- | > () vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX -- > ( VkPhysicalDevice physicalDevice -- > , VkDeviceGeneratedCommandsFeaturesNVX* pFeatures -- > , VkDeviceGeneratedCommandsLimitsNVX* pLimits -- > ) -- -- foreign import ccall unsafe "vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX" vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX :: VkPhysicalDevice -- ^ physicalDevice -> Ptr VkDeviceGeneratedCommandsFeaturesNVX -- ^ pFeatures -> Ptr VkDeviceGeneratedCommandsLimitsNVX -- ^ pLimits -> IO () pattern VK_NVX_DEVICE_GENERATED_COMMANDS_SPEC_VERSION :: (Num a, Eq a) => a pattern VK_NVX_DEVICE_GENERATED_COMMANDS_SPEC_VERSION = 3 type VK_NVX_DEVICE_GENERATED_COMMANDS_SPEC_VERSION = 3 pattern VK_NVX_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME :: CString pattern VK_NVX_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME <- (is_VK_NVX_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME -> True) where VK_NVX_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME = _VK_NVX_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME {-# INLINE _VK_NVX_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME #-} _VK_NVX_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME :: CString _VK_NVX_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME = Ptr "VK_NVX_device_generated_commands\NUL"# {-# INLINE is_VK_NVX_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME #-} is_VK_NVX_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME :: CString -> Bool is_VK_NVX_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME = eqCStrings _VK_NVX_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME type VK_NVX_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME = "VK_NVX_device_generated_commands" pattern VK_STRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX :: VkStructureType pattern VK_STRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX = VkStructureType 1000086000 pattern VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX :: VkStructureType pattern VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX = VkStructureType 1000086001 pattern VK_STRUCTURE_TYPE_CMD_PROCESS_COMMANDS_INFO_NVX :: VkStructureType pattern VK_STRUCTURE_TYPE_CMD_PROCESS_COMMANDS_INFO_NVX = VkStructureType 1000086002 pattern VK_STRUCTURE_TYPE_CMD_RESERVE_SPACE_FOR_COMMANDS_INFO_NVX :: VkStructureType pattern VK_STRUCTURE_TYPE_CMD_RESERVE_SPACE_FOR_COMMANDS_INFO_NVX = VkStructureType 1000086003 pattern VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_LIMITS_NVX :: VkStructureType pattern VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_LIMITS_NVX = VkStructureType 1000086004 pattern VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_FEATURES_NVX :: VkStructureType pattern VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_FEATURES_NVX = VkStructureType 1000086005 -- | bitpos = @17@ pattern VK_PIPELINE_STAGE_COMMAND_PROCESS_BIT_NVX :: VkPipelineStageFlagBits pattern VK_PIPELINE_STAGE_COMMAND_PROCESS_BIT_NVX = VkPipelineStageFlagBits 131072 -- | bitpos = @17@ pattern VK_ACCESS_COMMAND_PROCESS_READ_BIT_NVX :: VkAccessFlagBits pattern VK_ACCESS_COMMAND_PROCESS_READ_BIT_NVX = VkAccessFlagBits 131072 -- | bitpos = @18@ pattern VK_ACCESS_COMMAND_PROCESS_WRITE_BIT_NVX :: VkAccessFlagBits pattern VK_ACCESS_COMMAND_PROCESS_WRITE_BIT_NVX = VkAccessFlagBits 262144 -- | VkobjectTableNVX pattern VK_OBJECT_TYPE_OBJECT_TABLE_NVX :: VkObjectType pattern VK_OBJECT_TYPE_OBJECT_TABLE_NVX = VkObjectType 1000086000 -- | VkIndirectCommandsLayoutNVX pattern VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX :: VkObjectType pattern VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX = VkObjectType 1000086001