| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Vulkan.Extensions.VK_NV_cuda_kernel_launch
Description
Name
VK_NV_cuda_kernel_launch - device extension
VK_NV_cuda_kernel_launch
- Name String
VK_NV_cuda_kernel_launch
- Extension Type
- Device extension
- Registered Extension Number
- 308
- Revision
- 2
- Ratification Status
- Not ratified
- Extension and Version Dependencies
- VK_KHR_get_physical_device_properties2
or
Vulkan Version 1.1
- __This is a provisional extension and must be used with caution. See the description of provisional header files for enablement and stability details.__
- API Interactions
- Interacts with VK_EXT_debug_report
- Contact
Other Extension Metadata
- Last Modified Date
- 2020-09-30
- Contributors
- Eric Werness, NVIDIA
Description
Interoperability between APIs can sometimes create additional overhead depending on the platform used. This extension targets deployment of existing CUDA kernels via Vulkan, with a way to directly upload PTX kernels and dispatch the kernels from Vulkan’s command buffer without the need to use interoperability between the Vulkan and CUDA contexts. However, we do encourage actual development using the native CUDA runtime for the purpose of debugging and profiling.
The application will first have to create a CUDA module using
createCudaModuleNV then create the CUDA function entry point with
createCudaFunctionNV.
Then in order to dispatch this function, the application will create a
command buffer where it will launch the kernel with
cmdCudaLaunchKernelNV.
When done, the application will then destroy the function handle, as
well as the CUDA module handle with destroyCudaFunctionNV and
destroyCudaModuleNV.
To reduce the impact of compilation time, this extension offers the
capability to return a binary cache from the PTX that was provided. For
this, a first query for the required cache size is made with
getCudaModuleCacheNV with a NULL pointer to a buffer and with a
valid pointer receiving the size; then another call of the same function
with a valid pointer to a buffer to retrieve the data. The resulting
cache could then be used later for further runs of this application by
sending this cache instead of the PTX code (using the same
createCudaModuleNV), thus significantly speeding up the initialization
of the CUDA module.
As with PipelineCache, the binary cache depends
on the hardware architecture. The application must assume the cache
might fail, and need to handle falling back to the original PTX code as
necessary. Most often, the cache will succeed if the same GPU driver and
architecture is used between the cache generation from PTX and the use
of this cache. In the event of a new driver version, or if using a
different GPU architecture, the cache is likely to become invalid.
New Object Types
New Commands
New Structures
CudaLaunchInfoNVCudaModuleCreateInfoNVExtending
PhysicalDeviceFeatures2,DeviceCreateInfo:Extending
PhysicalDeviceProperties2:
New Enum Constants
NV_CUDA_KERNEL_LAUNCH_SPEC_VERSIONExtending
ObjectType:Extending
StructureType:
If VK_EXT_debug_report is supported:
Extending
DebugReportObjectTypeEXT:
Issues
None.
Version History
- Revision 1, 2020-03-01 (Tristan Lorach)
- Revision 2, 2020-09-30 (Tristan Lorach)
See Also
No cross-references are available
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
- createCudaModuleNV :: MonadIO io => Device -> CudaModuleCreateInfoNV -> ("allocator" ::: Maybe AllocationCallbacks) -> io CudaModuleNV
- withCudaModuleNV :: MonadIO io => Device -> CudaModuleCreateInfoNV -> Maybe AllocationCallbacks -> (io CudaModuleNV -> (CudaModuleNV -> io ()) -> r) -> r
- getCudaModuleCacheNV :: MonadIO io => Device -> CudaModuleNV -> io (Result, "cacheData" ::: ByteString)
- createCudaFunctionNV :: MonadIO io => Device -> CudaFunctionCreateInfoNV -> ("allocator" ::: Maybe AllocationCallbacks) -> io CudaFunctionNV
- withCudaFunctionNV :: MonadIO io => Device -> CudaFunctionCreateInfoNV -> Maybe AllocationCallbacks -> (io CudaFunctionNV -> (CudaFunctionNV -> io ()) -> r) -> r
- destroyCudaModuleNV :: MonadIO io => Device -> CudaModuleNV -> ("allocator" ::: Maybe AllocationCallbacks) -> io ()
- destroyCudaFunctionNV :: MonadIO io => Device -> CudaFunctionNV -> ("allocator" ::: Maybe AllocationCallbacks) -> io ()
- cmdCudaLaunchKernelNV :: MonadIO io => CommandBuffer -> CudaLaunchInfoNV -> io ()
- data CudaModuleCreateInfoNV = CudaModuleCreateInfoNV {}
- data CudaFunctionCreateInfoNV = CudaFunctionCreateInfoNV {}
- data CudaLaunchInfoNV = CudaLaunchInfoNV {}
- data PhysicalDeviceCudaKernelLaunchFeaturesNV = PhysicalDeviceCudaKernelLaunchFeaturesNV {}
- data PhysicalDeviceCudaKernelLaunchPropertiesNV = PhysicalDeviceCudaKernelLaunchPropertiesNV {}
- type NV_CUDA_KERNEL_LAUNCH_SPEC_VERSION = 2
- pattern NV_CUDA_KERNEL_LAUNCH_SPEC_VERSION :: Integral a => a
- type NV_CUDA_KERNEL_LAUNCH_EXTENSION_NAME = "VK_NV_cuda_kernel_launch"
- pattern NV_CUDA_KERNEL_LAUNCH_EXTENSION_NAME :: (Eq a, IsString a) => a
- newtype CudaModuleNV = CudaModuleNV Word64
- newtype CudaFunctionNV = CudaFunctionNV Word64
- newtype DebugReportObjectTypeEXT where
- DebugReportObjectTypeEXT Int32
- pattern DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR_EXT :: DebugReportObjectTypeEXT
- pattern DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV_EXT :: DebugReportObjectTypeEXT
- pattern DEBUG_REPORT_OBJECT_TYPE_BUFFER_COLLECTION_FUCHSIA_EXT :: DebugReportObjectTypeEXT
- pattern DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT :: DebugReportObjectTypeEXT
- pattern DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT :: DebugReportObjectTypeEXT
- pattern DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT :: DebugReportObjectTypeEXT
- pattern DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT :: DebugReportObjectTypeEXT
- pattern DEBUG_REPORT_OBJECT_TYPE_CUDA_FUNCTION_NV_EXT :: DebugReportObjectTypeEXT
- pattern DEBUG_REPORT_OBJECT_TYPE_CUDA_MODULE_NV_EXT :: DebugReportObjectTypeEXT
- pattern DEBUG_REPORT_OBJECT_TYPE_CU_FUNCTION_NVX_EXT :: DebugReportObjectTypeEXT
- pattern DEBUG_REPORT_OBJECT_TYPE_CU_MODULE_NVX_EXT :: DebugReportObjectTypeEXT
- pattern DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_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_DESCRIPTOR_SET_LAYOUT_EXT :: DebugReportObjectTypeEXT
- pattern DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT :: DebugReportObjectTypeEXT
- pattern DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT :: DebugReportObjectTypeEXT
- pattern DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_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_EVENT_EXT :: DebugReportObjectTypeEXT
- pattern DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT :: DebugReportObjectTypeEXT
- pattern DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT :: DebugReportObjectTypeEXT
- pattern DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT :: DebugReportObjectTypeEXT
- pattern DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT :: DebugReportObjectTypeEXT
- pattern DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT :: DebugReportObjectTypeEXT
- pattern DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT :: DebugReportObjectTypeEXT
- pattern DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT :: DebugReportObjectTypeEXT
- pattern DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT :: DebugReportObjectTypeEXT
- pattern DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT :: DebugReportObjectTypeEXT
- pattern DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT :: DebugReportObjectTypeEXT
- pattern DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT :: DebugReportObjectTypeEXT
- pattern DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT :: DebugReportObjectTypeEXT
- pattern DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT :: DebugReportObjectTypeEXT
- pattern DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT :: DebugReportObjectTypeEXT
- pattern DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT :: DebugReportObjectTypeEXT
- pattern DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_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_UNKNOWN_EXT :: DebugReportObjectTypeEXT
- pattern DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT :: DebugReportObjectTypeEXT
Documentation
Arguments
| :: MonadIO io | |
| => Device |
|
| -> CudaModuleCreateInfoNV |
|
| -> ("allocator" ::: Maybe AllocationCallbacks) |
|
| -> io CudaModuleNV |
vkCreateCudaModuleNV - Creates a new CUDA module object
Description
Once a CUDA module has been created, the application may create the function entry point, which must refer to one function in the module.
Valid Usage (Implicit)
-
devicemust be a validDevicehandle
-
pCreateInfomust be a valid pointer to a validCudaModuleCreateInfoNVstructure - If
pAllocatoris notNULL,pAllocatormust be a valid pointer to a validAllocationCallbacksstructure -
pModulemust be a valid pointer to aCudaModuleNVhandle - The device must have
been created with at least
1queue
Return Codes
See Also
VK_NV_cuda_kernel_launch,
AllocationCallbacks,
CudaModuleCreateInfoNV, CudaModuleNV,
Device
withCudaModuleNV :: MonadIO io => Device -> CudaModuleCreateInfoNV -> Maybe AllocationCallbacks -> (io CudaModuleNV -> (CudaModuleNV -> io ()) -> r) -> r Source #
A convenience wrapper to make a compatible pair of calls to
createCudaModuleNV and destroyCudaModuleNV
To ensure that destroyCudaModuleNV is always called: pass
bracket (or the allocate function from your
favourite resource management library) as the last argument.
To just extract the pair pass (,) as the last argument.
Arguments
| :: MonadIO io | |
| => Device |
|
| -> CudaModuleNV |
|
| -> io (Result, "cacheData" ::: ByteString) |
vkGetCudaModuleCacheNV - Get CUDA module cache
Description
If pCacheData is NULL, then the size of the binary cache, in bytes,
is returned in pCacheSize. Otherwise, pCacheSize must point to a
variable set by the application to the size of the buffer, in bytes,
pointed to by pCacheData, and on return the variable is overwritten
with the amount of data actually written to pCacheData. If
pCacheSize is less than the size of the binary shader code, nothing is
written to pCacheData, and INCOMPLETE
will be returned instead of SUCCESS.
The returned cache may then be used later for further initialization
of the CUDA module, by sending this cache instead of the PTX code when
using createCudaModuleNV.
Using the binary cache instead of the original PTX code should significantly speed up initialization of the CUDA module, given that the whole compilation and validation will not be necessary.
As with PipelineCache, the binary cache depends
on the specific implementation. The application must assume the cache
upload might fail in many circumstances and thus may have to get ready
for falling back to the original PTX code if necessary. Most often, the
cache may succeed if the same device driver and architecture is used
between the cache generation from PTX and the use of this cache. In the
event of a new driver version or if using a different device
architecture, this cache may become invalid.
This query does not behave consistently with the behavior described in Opaque Binary Data Results, for historical reasons.
If the amount of data available is larger than the passed pDataSize,
the query returns a INCOMPLETE success
status instead of a
ERROR_NOT_ENOUGH_SPACE_KHR error status.
Valid Usage (Implicit)
-
devicemust be a validDevicehandle
-
modulemust be a validCudaModuleNVhandle -
pCacheSizemust be a valid pointer to asize_tvalue - If the value
referenced by
pCacheSizeis not0, andpCacheDatais notNULL,pCacheDatamust be a valid pointer to an array ofpCacheSizebytes -
modulemust have been created, allocated, or retrieved fromdevice
Return Codes
See Also
Arguments
| :: MonadIO io | |
| => Device |
|
| -> CudaFunctionCreateInfoNV |
|
| -> ("allocator" ::: Maybe AllocationCallbacks) |
|
| -> io CudaFunctionNV |
vkCreateCudaFunctionNV - Creates a new CUDA function object
Valid Usage (Implicit)
-
devicemust be a validDevicehandle
-
pCreateInfomust be a valid pointer to a validCudaFunctionCreateInfoNVstructure - If
pAllocatoris notNULL,pAllocatormust be a valid pointer to a validAllocationCallbacksstructure -
pFunctionmust be a valid pointer to aCudaFunctionNVhandle - The device must
have been created with at least
1queue
Return Codes
See Also
VK_NV_cuda_kernel_launch,
AllocationCallbacks,
CudaFunctionCreateInfoNV, CudaFunctionNV,
Device
withCudaFunctionNV :: MonadIO io => Device -> CudaFunctionCreateInfoNV -> Maybe AllocationCallbacks -> (io CudaFunctionNV -> (CudaFunctionNV -> io ()) -> r) -> r Source #
A convenience wrapper to make a compatible pair of calls to
createCudaFunctionNV and destroyCudaFunctionNV
To ensure that destroyCudaFunctionNV is always called: pass
bracket (or the allocate function from your
favourite resource management library) as the last argument.
To just extract the pair pass (,) as the last argument.
Arguments
| :: MonadIO io | |
| => Device |
|
| -> CudaModuleNV |
|
| -> ("allocator" ::: Maybe AllocationCallbacks) |
|
| -> io () |
vkDestroyCudaModuleNV - Destroy a CUDA module
Valid Usage (Implicit)
-
devicemust be a validDevicehandle
-
modulemust be a validCudaModuleNVhandle - If
pAllocatoris notNULL,pAllocatormust be a valid pointer to a validAllocationCallbacksstructure -
modulemust have been created, allocated, or retrieved fromdevice
See Also
VK_NV_cuda_kernel_launch,
AllocationCallbacks,
CudaModuleNV, Device
destroyCudaFunctionNV Source #
Arguments
| :: MonadIO io | |
| => Device |
|
| -> CudaFunctionNV |
|
| -> ("allocator" ::: Maybe AllocationCallbacks) |
|
| -> io () |
vkDestroyCudaFunctionNV - Destroy a CUDA function
Valid Usage (Implicit)
-
devicemust be a validDevicehandle
-
functionmust be a validCudaFunctionNVhandle - If
pAllocatoris notNULL,pAllocatormust be a valid pointer to a validAllocationCallbacksstructure -
functionmust have been created, allocated, or retrieved fromdevice
See Also
VK_NV_cuda_kernel_launch,
AllocationCallbacks,
CudaFunctionNV,
Device
cmdCudaLaunchKernelNV Source #
Arguments
| :: MonadIO io | |
| => CommandBuffer |
|
| -> CudaLaunchInfoNV |
|
| -> io () |
vkCmdCudaLaunchKernelNV - Dispatch compute work items
Description
When the command is executed, a global workgroup consisting of
gridDimX × gridDimY × gridDimZ local workgroups is assembled.
Valid Usage (Implicit)
-
commandBuffermust be a validCommandBufferhandle
-
pLaunchInfomust be a valid pointer to a validCudaLaunchInfoNVstructure -
commandBuffermust be in the recording state - The
CommandPoolthatcommandBufferwas allocated from must supportQUEUE_COMPUTE_BIT, orQUEUE_GRAPHICS_BIToperations - This command must not be called between suspended render pass instances
- This command must only be called outside of a video coding scope
Host Synchronization
- Host access to the
CommandPoolthatcommandBufferwas allocated from must be externally synchronized
Command Properties
'
| Command Buffer Levels | Render Pass Scope | Video Coding Scope | Supported Queue Types | Command Type |
|---|---|---|---|---|
| Primary Secondary | Both | Outside | VK_QUEUE_COMPUTE_BIT VK_QUEUE_GRAPHICS_BIT | Action |
Conditional Rendering
vkCmdCudaLaunchKernelNV is not affected by conditional rendering
See Also
data CudaModuleCreateInfoNV Source #
VkCudaModuleCreateInfoNV - Structure specifying the parameters to create a CUDA Module
Valid Usage (Implicit)
See Also
Constructors
| CudaModuleCreateInfoNV | |
Instances
data CudaFunctionCreateInfoNV Source #
VkCudaFunctionCreateInfoNV - Structure specifying the parameters to create a CUDA Function
Valid Usage (Implicit)
See Also
VK_NV_cuda_kernel_launch,
CudaModuleNV,
StructureType,
createCudaFunctionNV
Constructors
| CudaFunctionCreateInfoNV | |
Fields
| |
Instances
data CudaLaunchInfoNV Source #
VkCudaLaunchInfoNV - Structure specifying the parameters to launch a CUDA kernel
Description
Kernel parameters of function are specified via pParams, very much
the same way as described in
cuLaunchKernel
If function has N parameters, then pParams must be an array of N
pointers and paramCount must be N. Each of kernelParams[0] through
kernelParams[N-1] must point to a region of memory from which the
actual kernel parameter will be copied. The number of kernel parameters
and their offsets and sizes are not specified here as that information
is stored in the CudaFunctionNV object.
The application-owned memory pointed to by pParams and
kernelParams[0] through kernelParams[N-1] are consumed immediately,
and may be altered or freed after cmdCudaLaunchKernelNV has
returned.
Valid Usage (Implicit)
See Also
VK_NV_cuda_kernel_launch,
CudaFunctionNV,
StructureType,
cmdCudaLaunchKernelNV
Constructors
| CudaLaunchInfoNV | |
Fields
| |
Instances
| Show CudaLaunchInfoNV Source # | |
Defined in Vulkan.Extensions.VK_NV_cuda_kernel_launch Methods showsPrec :: Int -> CudaLaunchInfoNV -> ShowS # show :: CudaLaunchInfoNV -> String # showList :: [CudaLaunchInfoNV] -> ShowS # | |
| FromCStruct CudaLaunchInfoNV Source # | |
Defined in Vulkan.Extensions.VK_NV_cuda_kernel_launch Methods peekCStruct :: Ptr CudaLaunchInfoNV -> IO CudaLaunchInfoNV Source # | |
| ToCStruct CudaLaunchInfoNV Source # | |
Defined in Vulkan.Extensions.VK_NV_cuda_kernel_launch Methods withCStruct :: CudaLaunchInfoNV -> (Ptr CudaLaunchInfoNV -> IO b) -> IO b Source # pokeCStruct :: Ptr CudaLaunchInfoNV -> CudaLaunchInfoNV -> IO b -> IO b Source # withZeroCStruct :: (Ptr CudaLaunchInfoNV -> IO b) -> IO b Source # pokeZeroCStruct :: Ptr CudaLaunchInfoNV -> IO b -> IO b Source # cStructSize :: Int Source # | |
| Zero CudaLaunchInfoNV Source # | |
Defined in Vulkan.Extensions.VK_NV_cuda_kernel_launch Methods | |
data PhysicalDeviceCudaKernelLaunchFeaturesNV Source #
VkPhysicalDeviceCudaKernelLaunchFeaturesNV - Structure describing whether cuda kernel launch is supported by the implementation
Members
This structure describes the following features:
Description
If the PhysicalDeviceCudaKernelLaunchFeaturesNV structure is included
in the pNext chain of the
PhysicalDeviceFeatures2
structure passed to
getPhysicalDeviceFeatures2,
it is filled in to indicate whether each corresponding feature is
supported. If the application wishes to use a
Device with any features described by
PhysicalDeviceCudaKernelLaunchFeaturesNV, it must add an instance of
the structure, with the desired feature members set to
TRUE, to the pNext chain of
DeviceCreateInfo when creating the
Device.
Valid Usage (Implicit)
See Also
Constructors
| PhysicalDeviceCudaKernelLaunchFeaturesNV | |
Fields | |
Instances
data PhysicalDeviceCudaKernelLaunchPropertiesNV Source #
VkPhysicalDeviceCudaKernelLaunchPropertiesNV - Structure describing the compute capability version available
Members
The members of the PhysicalDeviceCudaKernelLaunchPropertiesNV
structure describe the following features:
Description
If the PhysicalDeviceCudaKernelLaunchPropertiesNV structure is
included in the pNext chain of the
PhysicalDeviceProperties2
structure passed to
getPhysicalDeviceProperties2,
it is filled in with each corresponding implementation-dependent
property.
Valid Usage (Implicit)
See Also
Constructors
| PhysicalDeviceCudaKernelLaunchPropertiesNV | |
Fields | |
Instances
type NV_CUDA_KERNEL_LAUNCH_SPEC_VERSION = 2 Source #
pattern NV_CUDA_KERNEL_LAUNCH_SPEC_VERSION :: Integral a => a Source #
type NV_CUDA_KERNEL_LAUNCH_EXTENSION_NAME = "VK_NV_cuda_kernel_launch" Source #
pattern NV_CUDA_KERNEL_LAUNCH_EXTENSION_NAME :: (Eq a, IsString a) => a Source #
newtype CudaModuleNV Source #
VkCudaModuleNV - Opaque handle to a CUDA module object
See Also
VK_DEFINE_NON_DISPATCHABLE_HANDLE,
VK_NV_cuda_kernel_launch,
CudaFunctionCreateInfoNV,
createCudaModuleNV,
destroyCudaModuleNV,
getCudaModuleCacheNV
Constructors
| CudaModuleNV Word64 |
Instances
newtype CudaFunctionNV Source #
VkCudaFunctionNV - Opaque handle to a CUDA function object
See Also
VK_DEFINE_NON_DISPATCHABLE_HANDLE,
VK_NV_cuda_kernel_launch,
CudaLaunchInfoNV,
createCudaFunctionNV,
destroyCudaFunctionNV
Constructors
| CudaFunctionNV Word64 |
Instances
newtype DebugReportObjectTypeEXT Source #
VkDebugReportObjectTypeEXT - Specify the type of an object handle
Description
'
DebugReportObjectTypeEXT and Vulkan Handle Relationship
The primary expected use of ERROR_VALIDATION_FAILED_EXT is for
validation layer testing to prevent invalid commands from reaching the
ICD. It is not expected that an application would see this error code
during normal use of the validation layers. If an application returns
TRUE in
DebugUtilsMessengerCallbackDataEXT,
the validation layers will return this error code instead of passing the
command down the dispatch chain.
See Also
PFN_vkDebugReportCallbackEXT,
VK_EXT_debug_marker,
VK_EXT_debug_report,
DebugMarkerObjectNameInfoEXT,
DebugMarkerObjectTagInfoEXT,
debugReportMessageEXT
Constructors
| DebugReportObjectTypeEXT Int32 |
Bundled Patterns