| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Graphics.Vulkan.Core10.Device
Synopsis
- createDevice :: forall a io. (PokeChain a, MonadIO io) => PhysicalDevice -> DeviceCreateInfo a -> ("allocator" ::: Maybe AllocationCallbacks) -> io Device
- withDevice :: forall a io r. (PokeChain a, MonadIO io) => (io Device -> (Device -> io ()) -> r) -> PhysicalDevice -> DeviceCreateInfo a -> Maybe AllocationCallbacks -> r
- destroyDevice :: forall io. MonadIO io => Device -> ("allocator" ::: Maybe AllocationCallbacks) -> io ()
- data DeviceQueueCreateInfo (es :: [Type]) = DeviceQueueCreateInfo {}
- data DeviceCreateInfo (es :: [Type]) = DeviceCreateInfo {}
Documentation
createDevice :: forall a io. (PokeChain a, MonadIO io) => PhysicalDevice -> DeviceCreateInfo a -> ("allocator" ::: Maybe AllocationCallbacks) -> io Device Source #
vkCreateDevice - Create a new device instance
Parameters
physicalDevicemust be one of the device handles returned from a call toenumeratePhysicalDevices(see Physical Device Enumeration).
pCreateInfois a pointer to aDeviceCreateInfostructure containing information about how to create the device.pAllocatorcontrols host memory allocation as described in the Memory Allocation chapter.pDeviceis a pointer to a handle in which the createdDeviceis returned.
Description
createDevice verifies that extensions and features requested in the
ppEnabledExtensionNames and pEnabledFeatures members of
pCreateInfo, respectively, are supported by the implementation. If any
requested extension is not supported, createDevice must return
ERROR_EXTENSION_NOT_PRESENT. If
any requested feature is not supported, createDevice must return
ERROR_FEATURE_NOT_PRESENT. Support
for extensions can be checked before creating a device by querying
enumerateDeviceExtensionProperties.
Support for features can similarly be checked by querying
getPhysicalDeviceFeatures.
After verifying and enabling the extensions the
Device object is created and returned
to the application. If a requested extension is only supported by a
layer, both the layer and the extension need to be specified at
createInstance time for
the creation to succeed.
Multiple logical devices can be created from the same physical device.
Logical device creation may fail due to lack of device-specific
resources (in addition to the other errors). If that occurs,
createDevice will return
ERROR_TOO_MANY_OBJECTS.
Valid Usage
- All
required extensions
for each extension in the
DeviceCreateInfo::ppEnabledExtensionNameslist must also be present in that list
Valid Usage (Implicit)
physicalDevicemust be a validPhysicalDevicehandle
pCreateInfomust be a valid pointer to a validDeviceCreateInfostructure- If
pAllocatoris notNULL,pAllocatormust be a valid pointer to a validAllocationCallbacksstructure pDevicemust be a valid pointer to aDevicehandle
Return Codes
See Also
AllocationCallbacks,
Device, DeviceCreateInfo,
PhysicalDevice
withDevice :: forall a io r. (PokeChain a, MonadIO io) => (io Device -> (Device -> io ()) -> r) -> PhysicalDevice -> DeviceCreateInfo a -> Maybe AllocationCallbacks -> r Source #
A convenience wrapper to make a compatible pair of calls to
createDevice and destroyDevice
To ensure that destroyDevice is always called: pass
bracket (or the allocate function from your
favourite resource management library) as the first argument.
To just extract the pair pass '(,)' as the first argument.
destroyDevice :: forall io. MonadIO io => Device -> ("allocator" ::: Maybe AllocationCallbacks) -> io () Source #
vkDestroyDevice - Destroy a logical device
Parameters
deviceis the logical device to destroy.
pAllocatorcontrols host memory allocation as described in the Memory Allocation chapter.
Description
To ensure that no work is active on the device,
deviceWaitIdle can be used to gate the
destruction of the device. Prior to destroying a device, an application
is responsible for destroying/freeing any Vulkan objects that were
created using that device as the first parameter of the corresponding
vkCreate* or vkAllocate* command.
Note
The lifetime of each of these objects is bound by the lifetime of the
Device object. Therefore, to avoid
resource leaks, it is critical that an application explicitly free all
of these resources prior to calling destroyDevice.
Valid Usage
- All child objects created on
devicemust have been destroyed prior to destroyingdevice
- If
AllocationCallbackswere provided whendevicewas created, a compatible set of callbacks must be provided here - If no
AllocationCallbackswere provided whendevicewas created,pAllocatormust beNULL
Valid Usage (Implicit)
- If
deviceis notNULL,devicemust be a validDevicehandle
- If
pAllocatoris notNULL,pAllocatormust be a valid pointer to a validAllocationCallbacksstructure
Host Synchronization
- Host access to
devicemust be externally synchronized
See Also
data DeviceQueueCreateInfo (es :: [Type]) Source #
VkDeviceQueueCreateInfo - Structure specifying parameters of a newly created device queue
Valid Usage
queueFamilyIndexmust be less thanpQueueFamilyPropertyCountreturned bygetPhysicalDeviceQueueFamilyProperties
queueCountmust be less than or equal to thequeueCountmember of theQueueFamilyPropertiesstructure, as returned bygetPhysicalDeviceQueueFamilyPropertiesin thepQueueFamilyProperties[queueFamilyIndex]- Each element of
pQueuePrioritiesmust be between0.0and1.0inclusive - If the
protected memory
feature is not enabled, the
DEVICE_QUEUE_CREATE_PROTECTED_BITbit offlagsmust not be set
Valid Usage (Implicit)
sTypemust beSTRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO
pNextmust beNULLor a pointer to a valid instance ofDeviceQueueGlobalPriorityCreateInfoEXT- The
sTypevalue of each struct in thepNextchain must be unique flagsmust be a valid combination ofDeviceQueueCreateFlagBitsvaluespQueuePrioritiesmust be a valid pointer to an array ofqueueCountfloatvaluesqueueCountmust be greater than0
See Also
Constructors
| DeviceQueueCreateInfo | |
Fields
| |
Instances
data DeviceCreateInfo (es :: [Type]) Source #
VkDeviceCreateInfo - Structure specifying parameters of a newly created device
Valid Usage
- The
queueFamilyIndexmember of each element ofpQueueCreateInfosmust be unique withinpQueueCreateInfos, except that two members can share the samequeueFamilyIndexif one is a protected-capable queue and one is not a protected-capable queue
- If the
pNextchain includes aPhysicalDeviceFeatures2structure, thenpEnabledFeaturesmust beNULL ppEnabledExtensionNamesmust not containVK_AMD_negative_viewport_heightppEnabledExtensionNamesmust not contain bothVK_KHR_buffer_device_addressandVK_EXT_buffer_device_address- If the
pNextchain includes aPhysicalDeviceVulkan11Featuresstructure, then it must not include aPhysicalDevice16BitStorageFeatures,PhysicalDeviceMultiviewFeatures,PhysicalDeviceVariablePointersFeatures,PhysicalDeviceProtectedMemoryFeatures,PhysicalDeviceSamplerYcbcrConversionFeatures, orPhysicalDeviceShaderDrawParametersFeaturesstructure - If the
pNextchain includes aPhysicalDeviceVulkan12Featuresstructure, then it must not include aPhysicalDevice8BitStorageFeatures,PhysicalDeviceShaderAtomicInt64Features,PhysicalDeviceShaderFloat16Int8Features,PhysicalDeviceDescriptorIndexingFeatures,PhysicalDeviceScalarBlockLayoutFeatures,PhysicalDeviceImagelessFramebufferFeatures,PhysicalDeviceUniformBufferStandardLayoutFeatures,PhysicalDeviceShaderSubgroupExtendedTypesFeatures,PhysicalDeviceSeparateDepthStencilLayoutsFeatures,PhysicalDeviceHostQueryResetFeatures,PhysicalDeviceTimelineSemaphoreFeatures,PhysicalDeviceBufferDeviceAddressFeatures, orPhysicalDeviceVulkanMemoryModelFeaturesstructure - If
ppEnabledExtensionscontains"VK_KHR_draw_indirect_count"and thepNextchain includes aPhysicalDeviceVulkan12Featuresstructure, thenPhysicalDeviceVulkan12Features::drawIndirectCountmust beTRUE - If
ppEnabledExtensionscontains"VK_KHR_sampler_mirror_clamp_to_edge"and thepNextchain includes aPhysicalDeviceVulkan12Featuresstructure, thenPhysicalDeviceVulkan12Features::samplerMirrorClampToEdgemust beTRUE - If
ppEnabledExtensionscontains"VK_EXT_descriptor_indexing"and thepNextchain includes aPhysicalDeviceVulkan12Featuresstructure, thenPhysicalDeviceVulkan12Features::descriptorIndexingmust beTRUE - If
ppEnabledExtensionscontains"VK_EXT_sampler_filter_minmax"and thepNextchain includes aPhysicalDeviceVulkan12Featuresstructure, thenPhysicalDeviceVulkan12Features::samplerFilterMinmaxmust beTRUE - If
ppEnabledExtensionscontains"VK_EXT_shader_viewport_index_layer"and thepNextchain includes aPhysicalDeviceVulkan12Featuresstructure, thenPhysicalDeviceVulkan12Features::shaderOutputViewportIndexandPhysicalDeviceVulkan12Features::shaderOutputLayermust both beTRUE
Valid Usage (Implicit)
sTypemust beSTRUCTURE_TYPE_DEVICE_CREATE_INFO
- Each
pNextmember of any structure (including this one) in thepNextchain must be eitherNULLor a pointer to a valid instance ofDeviceDiagnosticsConfigCreateInfoNV,DeviceGroupDeviceCreateInfo,DeviceMemoryOverallocationCreateInfoAMD,PhysicalDevice16BitStorageFeatures,PhysicalDevice8BitStorageFeatures,PhysicalDeviceASTCDecodeFeaturesEXT,PhysicalDeviceBlendOperationAdvancedFeaturesEXT,PhysicalDeviceBufferDeviceAddressFeatures,PhysicalDeviceBufferDeviceAddressFeaturesEXT,PhysicalDeviceCoherentMemoryFeaturesAMD,PhysicalDeviceComputeShaderDerivativesFeaturesNV,PhysicalDeviceConditionalRenderingFeaturesEXT,PhysicalDeviceCooperativeMatrixFeaturesNV,PhysicalDeviceCornerSampledImageFeaturesNV,PhysicalDeviceCoverageReductionModeFeaturesNV,PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV,PhysicalDeviceDepthClipEnableFeaturesEXT,PhysicalDeviceDescriptorIndexingFeatures,PhysicalDeviceDeviceGeneratedCommandsFeaturesNV,PhysicalDeviceDiagnosticsConfigFeaturesNV,PhysicalDeviceExclusiveScissorFeaturesNV,PhysicalDeviceFeatures2,PhysicalDeviceFragmentDensityMapFeaturesEXT,PhysicalDeviceFragmentShaderBarycentricFeaturesNV,PhysicalDeviceFragmentShaderInterlockFeaturesEXT,PhysicalDeviceHostQueryResetFeatures,PhysicalDeviceImagelessFramebufferFeatures,PhysicalDeviceIndexTypeUint8FeaturesEXT,PhysicalDeviceInlineUniformBlockFeaturesEXT,PhysicalDeviceLineRasterizationFeaturesEXT,PhysicalDeviceMemoryPriorityFeaturesEXT,PhysicalDeviceMeshShaderFeaturesNV,PhysicalDeviceMultiviewFeatures,PhysicalDevicePerformanceQueryFeaturesKHR,PhysicalDevicePipelineCreationCacheControlFeaturesEXT,PhysicalDevicePipelineExecutablePropertiesFeaturesKHR,PhysicalDeviceProtectedMemoryFeatures,PhysicalDeviceRayTracingFeaturesKHR,PhysicalDeviceRepresentativeFragmentTestFeaturesNV,PhysicalDeviceRobustness2FeaturesEXT,PhysicalDeviceSamplerYcbcrConversionFeatures,PhysicalDeviceScalarBlockLayoutFeatures,PhysicalDeviceSeparateDepthStencilLayoutsFeatures,PhysicalDeviceShaderAtomicInt64Features,PhysicalDeviceShaderClockFeaturesKHR,PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT,PhysicalDeviceShaderDrawParametersFeatures,PhysicalDeviceShaderFloat16Int8Features,PhysicalDeviceShaderImageFootprintFeaturesNV,PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL,PhysicalDeviceShaderSMBuiltinsFeaturesNV,PhysicalDeviceShaderSubgroupExtendedTypesFeatures,PhysicalDeviceShadingRateImageFeaturesNV,PhysicalDeviceSubgroupSizeControlFeaturesEXT,PhysicalDeviceTexelBufferAlignmentFeaturesEXT,PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT,PhysicalDeviceTimelineSemaphoreFeatures,PhysicalDeviceTransformFeedbackFeaturesEXT,PhysicalDeviceUniformBufferStandardLayoutFeatures,PhysicalDeviceVariablePointersFeatures,PhysicalDeviceVertexAttributeDivisorFeaturesEXT,PhysicalDeviceVulkan11Features,PhysicalDeviceVulkan12Features,PhysicalDeviceVulkanMemoryModelFeatures, orPhysicalDeviceYcbcrImageArraysFeaturesEXT - The
sTypevalue of each struct in thepNextchain must be unique flagsmust be0pQueueCreateInfosmust be a valid pointer to an array ofqueueCreateInfoCountvalidDeviceQueueCreateInfostructures- If
enabledLayerCountis not0,ppEnabledLayerNamesmust be a valid pointer to an array ofenabledLayerCountnull-terminated UTF-8 strings - If
enabledExtensionCountis not0,ppEnabledExtensionNamesmust be a valid pointer to an array ofenabledExtensionCountnull-terminated UTF-8 strings - If
pEnabledFeaturesis notNULL,pEnabledFeaturesmust be a valid pointer to a validPhysicalDeviceFeaturesstructure queueCreateInfoCountmust be greater than0
See Also
DeviceCreateFlags,
DeviceQueueCreateInfo,
PhysicalDeviceFeatures,
StructureType,
createDevice
Constructors
| DeviceCreateInfo | |
Fields
| |