Safe Haskell | None |
---|---|
Language | Haskell2010 |
Name
VK_KHR_descriptor_update_template - device extension
VK_KHR_descriptor_update_template
- Name String
VK_KHR_descriptor_update_template
- Extension Type
- Device extension
- Registered Extension Number
- 86
- Revision
- 1
- Extension and Version Dependencies
- Requires Vulkan 1.0
- Deprecation state
- Promoted to Vulkan 1.1
- Contact
Other Extension Metadata
- Last Modified Date
- 2017-09-05
- IP Status
- No known IP claims.
- Interactions and External Dependencies
- Interacts with
VK_KHR_push_descriptor
- Promoted to Vulkan 1.1 Core
- Interacts with
- Contributors
- Jeff Bolz, NVIDIA
- Michael Worcester, Imagination Technologies
Description
Applications may wish to update a fixed set of descriptors in a large
number of descriptors sets very frequently, i.e. during initializaton
phase or if it is required to rebuild descriptor sets for each frame.
For those cases it is also not unlikely that all information required to
update a single descriptor set is stored in a single struct. This
extension provides a way to update a fixed set of descriptors in a
single DescriptorSet
with a pointer to a user
defined data structure describing the new descriptors.
Promotion to Vulkan 1.1
cmdPushDescriptorSetWithTemplateKHR
is included as an interaction with VK_KHR_push_descriptor
. If Vulkan
1.1 and VK_KHR_push_descriptor
are supported, this is included by
VK_KHR_push_descriptor
.
The base functionality in this extension is included in core Vulkan 1.1, with the KHR suffix omitted. The original type, enum and command names are still available as aliases of the core functionality.
New Object Types
New Commands
If VK_KHR_push_descriptor is supported:
New Structures
New Enums
New Bitmasks
New Enum Constants
KHR_DESCRIPTOR_UPDATE_TEMPLATE_SPEC_VERSION
Extending
DescriptorUpdateTemplateType
:Extending
ObjectType
:Extending
StructureType
:
If VK_EXT_debug_report is supported:
If VK_KHR_push_descriptor is supported:
Version History
Revision 1, 2016-01-11 (Markus Tavenrath)
- Initial draft
See Also
DescriptorUpdateTemplateCreateFlagsKHR
,
DescriptorUpdateTemplateCreateInfoKHR
,
DescriptorUpdateTemplateEntryKHR
, DescriptorUpdateTemplateKHR
,
DescriptorUpdateTemplateTypeKHR
, createDescriptorUpdateTemplateKHR
,
destroyDescriptorUpdateTemplateKHR
,
updateDescriptorSetWithTemplateKHR
Document Notes
For more information, see the Vulkan Specification
This page is a generated document. Fixes and changes should be made to the generator scripts, not directly.
Synopsis
- pattern STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR :: StructureType
- pattern OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR :: ObjectType
- pattern DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET_KHR :: DescriptorUpdateTemplateType
- pattern DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR_EXT :: DebugReportObjectTypeEXT
- createDescriptorUpdateTemplateKHR :: MonadIO io => Device -> DescriptorUpdateTemplateCreateInfo -> ("allocator" ::: Maybe AllocationCallbacks) -> io DescriptorUpdateTemplate
- destroyDescriptorUpdateTemplateKHR :: MonadIO io => Device -> DescriptorUpdateTemplate -> ("allocator" ::: Maybe AllocationCallbacks) -> io ()
- updateDescriptorSetWithTemplateKHR :: MonadIO io => Device -> DescriptorSet -> DescriptorUpdateTemplate -> ("data" ::: Ptr ()) -> io ()
- type DescriptorUpdateTemplateCreateFlagsKHR = DescriptorUpdateTemplateCreateFlags
- type DescriptorUpdateTemplateKHR = DescriptorUpdateTemplate
- type DescriptorUpdateTemplateTypeKHR = DescriptorUpdateTemplateType
- type DescriptorUpdateTemplateEntryKHR = DescriptorUpdateTemplateEntry
- type DescriptorUpdateTemplateCreateInfoKHR = DescriptorUpdateTemplateCreateInfo
- type KHR_DESCRIPTOR_UPDATE_TEMPLATE_SPEC_VERSION = 1
- pattern KHR_DESCRIPTOR_UPDATE_TEMPLATE_SPEC_VERSION :: forall a. Integral a => a
- type KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME = "VK_KHR_descriptor_update_template"
- pattern KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a
- cmdPushDescriptorSetWithTemplateKHR :: forall io. MonadIO io => CommandBuffer -> DescriptorUpdateTemplate -> PipelineLayout -> ("set" ::: Word32) -> ("data" ::: Ptr ()) -> io ()
- newtype DebugReportObjectTypeEXT where
- DebugReportObjectTypeEXT Int32
- pattern DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT :: DebugReportObjectTypeEXT
- pattern DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT :: DebugReportObjectTypeEXT
- pattern DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT :: DebugReportObjectTypeEXT
- pattern DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT :: DebugReportObjectTypeEXT
- pattern DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT :: DebugReportObjectTypeEXT
- pattern DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT :: DebugReportObjectTypeEXT
- pattern DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT :: DebugReportObjectTypeEXT
- pattern DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT :: DebugReportObjectTypeEXT
- pattern DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT :: DebugReportObjectTypeEXT
- pattern DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT :: DebugReportObjectTypeEXT
- pattern DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT :: DebugReportObjectTypeEXT
- pattern DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT :: DebugReportObjectTypeEXT
- pattern DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT :: DebugReportObjectTypeEXT
- pattern DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT :: DebugReportObjectTypeEXT
- pattern DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT :: DebugReportObjectTypeEXT
- pattern DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT :: DebugReportObjectTypeEXT
- pattern DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT :: DebugReportObjectTypeEXT
- pattern DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT :: DebugReportObjectTypeEXT
- pattern DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT :: DebugReportObjectTypeEXT
- pattern DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT :: DebugReportObjectTypeEXT
- pattern DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT :: DebugReportObjectTypeEXT
- pattern DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT :: DebugReportObjectTypeEXT
- pattern DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT :: DebugReportObjectTypeEXT
- pattern DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT :: DebugReportObjectTypeEXT
- pattern DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT :: DebugReportObjectTypeEXT
- pattern DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT :: DebugReportObjectTypeEXT
- pattern DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT :: DebugReportObjectTypeEXT
- pattern DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT :: DebugReportObjectTypeEXT
- pattern DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT :: DebugReportObjectTypeEXT
- pattern DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT :: DebugReportObjectTypeEXT
- pattern DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT :: DebugReportObjectTypeEXT
- pattern DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT :: DebugReportObjectTypeEXT
- pattern DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV_EXT :: DebugReportObjectTypeEXT
- pattern DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT :: DebugReportObjectTypeEXT
- pattern DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR_EXT :: DebugReportObjectTypeEXT
- pattern DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT :: DebugReportObjectTypeEXT
Documentation
pattern DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR_EXT :: DebugReportObjectTypeEXT Source #
createDescriptorUpdateTemplateKHR :: MonadIO io => Device -> DescriptorUpdateTemplateCreateInfo -> ("allocator" ::: Maybe AllocationCallbacks) -> io DescriptorUpdateTemplate Source #
destroyDescriptorUpdateTemplateKHR :: MonadIO io => Device -> DescriptorUpdateTemplate -> ("allocator" ::: Maybe AllocationCallbacks) -> io () Source #
updateDescriptorSetWithTemplateKHR :: MonadIO io => Device -> DescriptorSet -> DescriptorUpdateTemplate -> ("data" ::: Ptr ()) -> io () Source #
pattern KHR_DESCRIPTOR_UPDATE_TEMPLATE_SPEC_VERSION :: forall a. Integral a => a Source #
type KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME = "VK_KHR_descriptor_update_template" Source #
pattern KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME :: forall a. (Eq a, IsString a) => a Source #
cmdPushDescriptorSetWithTemplateKHR Source #
:: forall io. MonadIO io | |
=> CommandBuffer |
|
-> DescriptorUpdateTemplate |
|
-> PipelineLayout |
|
-> ("set" ::: Word32) |
|
-> ("data" ::: Ptr ()) |
|
-> io () |
vkCmdPushDescriptorSetWithTemplateKHR - Pushes descriptor updates into a command buffer using a descriptor update template
Valid Usage
- The
pipelineBindPoint
specified during the creation of the descriptor update template must be supported by thecommandBuffer
’s parentCommandPool
’s queue family
-
pData
must be a valid pointer to a memory containing one or more valid instances ofDescriptorImageInfo
,DescriptorBufferInfo
, orBufferView
in a layout defined bydescriptorUpdateTemplate
when it was created withcreateDescriptorUpdateTemplateKHR
Valid Usage (Implicit)
-
commandBuffer
must be a validCommandBuffer
handle
-
descriptorUpdateTemplate
must be a validDescriptorUpdateTemplate
handle -
layout
must be a validPipelineLayout
handle -
commandBuffer
must be in the recording state -
The
CommandPool
thatcommandBuffer
was allocated from must support graphics, or compute operations - Each of
commandBuffer
,descriptorUpdateTemplate
, andlayout
must have been created, allocated, or retrieved from the sameDevice
Host Synchronization
- Host access to
commandBuffer
must be externally synchronized
- Host access to the
CommandPool
thatcommandBuffer
was allocated from must be externally synchronized
Command Properties
'
Command Buffer Levels | Render Pass Scope | Supported Queue Types | Pipeline Type |
---|---|---|---|
Primary Secondary | Both | Graphics Compute |
API example
struct AppDataStructure { VkDescriptorImageInfo imageInfo; // a single image info // ... some more application related data }; const VkDescriptorUpdateTemplateEntry descriptorUpdateTemplateEntries[] = { // binding to a single image descriptor { 0, // binding 0, // dstArrayElement 1, // descriptorCount VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, // descriptorType offsetof(AppDataStructure, imageInfo), // offset 0 // stride is not required if descriptorCount is 1 } }; // create a descriptor update template for descriptor set updates const VkDescriptorUpdateTemplateCreateInfo createInfo = { VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO, // sType NULL, // pNext 0, // flags 1, // descriptorUpdateEntryCount descriptorUpdateTemplateEntries, // pDescriptorUpdateEntries VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR, // templateType 0, // descriptorSetLayout, ignored by given templateType VK_PIPELINE_BIND_POINT_GRAPHICS, // pipelineBindPoint myPipelineLayout, // pipelineLayout 0, // set }; VkDescriptorUpdateTemplate myDescriptorUpdateTemplate; myResult = vkCreateDescriptorUpdateTemplate( myDevice, &createInfo, NULL, &myDescriptorUpdateTemplate); } AppDataStructure appData; // fill appData here or cache it in your engine vkCmdPushDescriptorSetWithTemplateKHR(myCmdBuffer, myDescriptorUpdateTemplate, myPipelineLayout, 0,&appData);
See Also
newtype DebugReportObjectTypeEXT Source #
VkDebugReportObjectTypeEXT - Specify the type of an object handle
Description
'
DebugReportObjectTypeEXT
and Vulkan Handle Relationship
Note
The primary expected use of
ERROR_VALIDATION_FAILED_EXT
is for
validation layer testing. It is not expected that an application would
see this error code during normal use of the validation layers.
See Also
DebugMarkerObjectNameInfoEXT
,
DebugMarkerObjectTagInfoEXT
,
debugReportMessageEXT