1e5c31af7Sopenharmony_ci// Copyright (c) 2014-2020 Khronos Group. 2e5c31af7Sopenharmony_ci// 3e5c31af7Sopenharmony_ci// SPDX-License-Identifier: CC-BY-4.0 4e5c31af7Sopenharmony_ci 5e5c31af7Sopenharmony_ci 6e5c31af7Sopenharmony_ci[[fault-handling]] 7e5c31af7Sopenharmony_ci== Fault Handling 8e5c31af7Sopenharmony_ci 9e5c31af7Sopenharmony_ciThe fault handling mechanism provides a method for the implementation to 10e5c31af7Sopenharmony_cipass fault information to the application. 11e5c31af7Sopenharmony_ciA fault indicates that an issue has occurred with the host or device that 12e5c31af7Sopenharmony_cicould impact the implementation's ability to function correctly. 13e5c31af7Sopenharmony_ciIt consists of a slink:VkFaultData structure that is used to communicate 14e5c31af7Sopenharmony_ciinformation about the fault between the implementation and the application, 15e5c31af7Sopenharmony_ciwith two methods to obtain the data. 16e5c31af7Sopenharmony_ciThe application can: obtain the fault data from the implementation using 17e5c31af7Sopenharmony_ciflink:vkGetFaultData. 18e5c31af7Sopenharmony_ciAlternatively, the implementation can: directly call a pre-registered fault 19e5c31af7Sopenharmony_cihandler function (tlink:PFN_vkFaultCallbackFunction) in the application when 20e5c31af7Sopenharmony_cia fault occurs. 21e5c31af7Sopenharmony_ci 22e5c31af7Sopenharmony_ciThe sname:VkFaultData structure provides categories the implementation must: 23e5c31af7Sopenharmony_ciset to provide basic information on a fault. 24e5c31af7Sopenharmony_ciThese allow the implementation to provide a coarse classification of a fault 25e5c31af7Sopenharmony_cito the application. 26e5c31af7Sopenharmony_ciAs the potential faults that could occur will vary between different 27e5c31af7Sopenharmony_ciplatforms, it is expected that an implementation would also provide 28e5c31af7Sopenharmony_ciadditional implementation-specific data on the fault, enabling the 29e5c31af7Sopenharmony_ciapplication to take appropriate action. 30e5c31af7Sopenharmony_ci 31e5c31af7Sopenharmony_ciThe implementation must: also define whether a particular fault results in 32e5c31af7Sopenharmony_cithe fault callback function being called, is communicated via 33e5c31af7Sopenharmony_ciflink:vkGetFaultData, or both. 34e5c31af7Sopenharmony_ciThis will be decided by several factors including: 35e5c31af7Sopenharmony_ci 36e5c31af7Sopenharmony_ci * the severity of the fault, 37e5c31af7Sopenharmony_ci * the application's ability to handle the fault, and 38e5c31af7Sopenharmony_ci * how the application should handle the fault. 39e5c31af7Sopenharmony_ci 40e5c31af7Sopenharmony_ciThe implementation must: document the implementation-specific fault data, 41e5c31af7Sopenharmony_cihow the faults are communicated, and expected responses from the application 42e5c31af7Sopenharmony_cifor each of the faults that it can: report. 43e5c31af7Sopenharmony_ci 44e5c31af7Sopenharmony_ci[[fault-data]] 45e5c31af7Sopenharmony_ci=== Fault Data 46e5c31af7Sopenharmony_ci 47e5c31af7Sopenharmony_ci[open,refpage='VkFaultData',desc='structure describing fault data',type='structs'] 48e5c31af7Sopenharmony_ci-- 49e5c31af7Sopenharmony_ciThe information on a single fault is returned using the sname:VkFaultData 50e5c31af7Sopenharmony_cistructure. 51e5c31af7Sopenharmony_ciThe sname:VkFaultData structure is defined as: 52e5c31af7Sopenharmony_ci 53e5c31af7Sopenharmony_ciinclude::{generated}/api/structs/VkFaultData.adoc[] 54e5c31af7Sopenharmony_ci 55e5c31af7Sopenharmony_ci * pname:sType is a elink:VkStructureType value identifying this structure. 56e5c31af7Sopenharmony_ci * pname:pNext is `NULL` or a pointer to a structure extending this 57e5c31af7Sopenharmony_ci structure that provides implementation-specific data on the fault. 58e5c31af7Sopenharmony_ci * pname:faultLevel is a elink:VkFaultLevel that provides the severity of 59e5c31af7Sopenharmony_ci the fault. 60e5c31af7Sopenharmony_ci * pname:faultType is a elink:VkFaultType that provides the type of the 61e5c31af7Sopenharmony_ci fault. 62e5c31af7Sopenharmony_ci 63e5c31af7Sopenharmony_ciTo retrieve implementation-specific fault data, pname:pNext can: point to 64e5c31af7Sopenharmony_cione or more implementation-defined fault structures or `NULL` to not 65e5c31af7Sopenharmony_ciretrieve implementation-specific data. 66e5c31af7Sopenharmony_ci 67e5c31af7Sopenharmony_ci.Valid Usage 68e5c31af7Sopenharmony_ci**** 69e5c31af7Sopenharmony_ci * [[VUID-VkFaultData-pNext-05019]] 70e5c31af7Sopenharmony_ci pname:pNext must: be `NULL` or a valid pointer to an 71e5c31af7Sopenharmony_ci implementation-specific structure 72e5c31af7Sopenharmony_ci**** 73e5c31af7Sopenharmony_ci 74e5c31af7Sopenharmony_ciinclude::{generated}/validity/structs/VkFaultData.adoc[] 75e5c31af7Sopenharmony_ci 76e5c31af7Sopenharmony_ci-- 77e5c31af7Sopenharmony_ci 78e5c31af7Sopenharmony_ci[open,refpage='VkFaultLevel',desc='The different fault severity levels that can be returned',type='enums'] 79e5c31af7Sopenharmony_ci-- 80e5c31af7Sopenharmony_ciPossible values of slink:VkFaultData::pname:faultLevel, specifying the fault 81e5c31af7Sopenharmony_ciseverity, are: 82e5c31af7Sopenharmony_ci 83e5c31af7Sopenharmony_ciinclude::{generated}/api/enums/VkFaultLevel.adoc[] 84e5c31af7Sopenharmony_ci 85e5c31af7Sopenharmony_ci * ename:VK_FAULT_LEVEL_UNASSIGNED A fault level has not been assigned. 86e5c31af7Sopenharmony_ci * ename:VK_FAULT_LEVEL_CRITICAL A fault that cannot: be recovered by the 87e5c31af7Sopenharmony_ci application. 88e5c31af7Sopenharmony_ci * ename:VK_FAULT_LEVEL_RECOVERABLE A fault that can: be recovered by the 89e5c31af7Sopenharmony_ci application. 90e5c31af7Sopenharmony_ci * ename:VK_FAULT_LEVEL_WARNING A fault that indicates a non-optimal 91e5c31af7Sopenharmony_ci condition has occurred, but no recovery is necessary at this point. 92e5c31af7Sopenharmony_ci 93e5c31af7Sopenharmony_ci-- 94e5c31af7Sopenharmony_ci 95e5c31af7Sopenharmony_ci[open,refpage='VkFaultType',desc='The different fault types that can be returned',type='enums'] 96e5c31af7Sopenharmony_ci-- 97e5c31af7Sopenharmony_ci 98e5c31af7Sopenharmony_ciPossible values of slink:VkFaultData::pname:faultType, specifying the fault 99e5c31af7Sopenharmony_citype, are: 100e5c31af7Sopenharmony_ci 101e5c31af7Sopenharmony_ciinclude::{generated}/api/enums/VkFaultType.adoc[] 102e5c31af7Sopenharmony_ci 103e5c31af7Sopenharmony_ci * ename:VK_FAULT_TYPE_INVALID The fault data does not contain a valid 104e5c31af7Sopenharmony_ci fault. 105e5c31af7Sopenharmony_ci * ename:VK_FAULT_TYPE_UNASSIGNED A fault type has not been assigned. 106e5c31af7Sopenharmony_ci * ename:VK_FAULT_TYPE_IMPLEMENTATION Implementation-defined fault. 107e5c31af7Sopenharmony_ci * ename:VK_FAULT_TYPE_SYSTEM A fault occurred in the system components. 108e5c31af7Sopenharmony_ci * ename:VK_FAULT_TYPE_PHYSICAL_DEVICE A fault occurred with the physical 109e5c31af7Sopenharmony_ci device. 110e5c31af7Sopenharmony_ci * ename:VK_FAULT_TYPE_COMMAND_BUFFER_FULL Command buffer memory was 111e5c31af7Sopenharmony_ci exhausted before flink:vkEndCommandBuffer was called. 112e5c31af7Sopenharmony_ci * ename:VK_FAULT_TYPE_INVALID_API_USAGE Invalid usage of the API was 113e5c31af7Sopenharmony_ci detected by the implementation. 114e5c31af7Sopenharmony_ci-- 115e5c31af7Sopenharmony_ci 116e5c31af7Sopenharmony_ci 117e5c31af7Sopenharmony_ci[[querrying-fault]] 118e5c31af7Sopenharmony_ci=== Querying Fault Status 119e5c31af7Sopenharmony_ci 120e5c31af7Sopenharmony_ci[open,refpage='vkGetFaultData',desc='Query fault information',type='protos'] 121e5c31af7Sopenharmony_ci-- 122e5c31af7Sopenharmony_ci:refpage: vkGetFaultData 123e5c31af7Sopenharmony_ci 124e5c31af7Sopenharmony_ciTo query the number of current faults and obtain the fault data, call 125e5c31af7Sopenharmony_ciflink:vkGetFaultData. 126e5c31af7Sopenharmony_ci 127e5c31af7Sopenharmony_ciinclude::{generated}/api/protos/vkGetFaultData.adoc[] 128e5c31af7Sopenharmony_ci 129e5c31af7Sopenharmony_ci * pname:device is the logical device to obtain faults from. 130e5c31af7Sopenharmony_ci * pname:faultQueryBehavior is a elink:VkFaultQueryBehavior that specifies 131e5c31af7Sopenharmony_ci the types of faults to obtain from the implementation, and how those 132e5c31af7Sopenharmony_ci faults should be handled. 133e5c31af7Sopenharmony_ci * pname:pUnrecordedFaults is a return boolean that specifies if the logged 134e5c31af7Sopenharmony_ci fault information is incomplete and does not contain entries for all 135e5c31af7Sopenharmony_ci faults that have been detected by the implementation and may: be 136e5c31af7Sopenharmony_ci reported via flink:vkGetFaultData. 137e5c31af7Sopenharmony_ci * pname:pFaultCount is a pointer to an integer that specifies the number 138e5c31af7Sopenharmony_ci of fault entries. 139e5c31af7Sopenharmony_ci * pname:pFaults is either `NULL` or a pointer to an array of 140e5c31af7Sopenharmony_ci pname:pFaultCount slink:VkFaultData structures to be updated with the 141e5c31af7Sopenharmony_ci recorded fault data. 142e5c31af7Sopenharmony_ci 143e5c31af7Sopenharmony_ciAccess to fault data is internally synchronized, meaning 144e5c31af7Sopenharmony_ciflink:vkGetFaultData can: be called from multiple threads simultaneously. 145e5c31af7Sopenharmony_ci 146e5c31af7Sopenharmony_ciThe implementation must: not record more than <<limits-maxQueryFaultCount, 147e5c31af7Sopenharmony_cipname:maxQueryFaultCount>> faults to be reported by flink:vkGetFaultData. 148e5c31af7Sopenharmony_ci 149e5c31af7Sopenharmony_cipname:pUnrecordedFaults is set to ename:VK_TRUE if the implementation has 150e5c31af7Sopenharmony_cidetected one or more faults since the last successful retrieval of fault 151e5c31af7Sopenharmony_cidata using this command, but was unable to record fault information for all 152e5c31af7Sopenharmony_cifaults. 153e5c31af7Sopenharmony_ciOtherwise, pname:pUnrecordedFaults is set to ename:VK_FALSE. 154e5c31af7Sopenharmony_ci 155e5c31af7Sopenharmony_ciIf pname:pFaults is `NULL`, then the number of faults with the specified 156e5c31af7Sopenharmony_cipname:faultQueryBehavior characteristics associated with pname:device is 157e5c31af7Sopenharmony_cireturned in pname:pFaultCount, and pname:pUnrecordedFaults is set as 158e5c31af7Sopenharmony_ciindicated above. 159e5c31af7Sopenharmony_ciOtherwise, pname:pFaultCount must: point to a variable set by the user to 160e5c31af7Sopenharmony_cithe number of elements in the pname:pFaults array, and on return the 161e5c31af7Sopenharmony_civariable is overwritten with the number of faults actually written to 162e5c31af7Sopenharmony_cipname:pFaults. 163e5c31af7Sopenharmony_ciIf pname:pFaultCount is less than the number of recorded pname:device faults 164e5c31af7Sopenharmony_ciwith the specified pname:faultQueryBehavior characteristics, at most 165e5c31af7Sopenharmony_cipname:pFaultCount faults will be written, and ename:VK_INCOMPLETE will be 166e5c31af7Sopenharmony_cireturned instead of ename:VK_SUCCESS, to indicate that not all the available 167e5c31af7Sopenharmony_cifaults were returned. 168e5c31af7Sopenharmony_ci 169e5c31af7Sopenharmony_ciOn success, the fault information stored by the implementation for the 170e5c31af7Sopenharmony_cifaults that were returned will be handled as specified by 171e5c31af7Sopenharmony_cipname:faultQueryBehavior. 172e5c31af7Sopenharmony_ci 173e5c31af7Sopenharmony_ciFor each filled pname:pFaults entry, if pname:pNext is not `NULL`, the 174e5c31af7Sopenharmony_ciimplementation will fill in any implementation-specific structures 175e5c31af7Sopenharmony_ciapplicable to that fault that are included in the pname:pNext chain. 176e5c31af7Sopenharmony_ci 177e5c31af7Sopenharmony_ci[NOTE] 178e5c31af7Sopenharmony_ci.Note 179e5c31af7Sopenharmony_ci==== 180e5c31af7Sopenharmony_ciIn order to simplify the application logic, an application could have a 181e5c31af7Sopenharmony_cistatic allocation sized to <<limits-maxQueryFaultCount, 182e5c31af7Sopenharmony_cipname:maxQueryFaultCount>> which it passes in to each call of 183e5c31af7Sopenharmony_ciflink:vkGetFaultData. 184e5c31af7Sopenharmony_ciThis allows an application to obtain all the faults available at this time 185e5c31af7Sopenharmony_ciin a single call to flink:vkGetFaultData. 186e5c31af7Sopenharmony_ciFurthermore, under this usage pattern, the command will never return 187e5c31af7Sopenharmony_ciename:VK_INCOMPLETE. 188e5c31af7Sopenharmony_ci==== 189e5c31af7Sopenharmony_ci 190e5c31af7Sopenharmony_ciinclude::{chapters}/commonvalidity/no_dynamic_allocations_common.adoc[] 191e5c31af7Sopenharmony_ci 192e5c31af7Sopenharmony_ci.Valid Usage 193e5c31af7Sopenharmony_ci**** 194e5c31af7Sopenharmony_ci * [[VUID-vkGetFaultData-pFaultCount-05020]] 195e5c31af7Sopenharmony_ci pname:pFaultCount must: be less than or equal to 196e5c31af7Sopenharmony_ci <<limits-maxQueryFaultCount,pname:maxQueryFaultCount>> 197e5c31af7Sopenharmony_ci**** 198e5c31af7Sopenharmony_ci 199e5c31af7Sopenharmony_ciinclude::{generated}/validity/protos/vkGetFaultData.adoc[] 200e5c31af7Sopenharmony_ci-- 201e5c31af7Sopenharmony_ci 202e5c31af7Sopenharmony_ci 203e5c31af7Sopenharmony_ci[open,refpage='VkFaultQueryBehavior',desc='Controls how the faults are retrieved by vkGetFaultData',type='enums'] 204e5c31af7Sopenharmony_ci-- 205e5c31af7Sopenharmony_ciPossible values that can: be set in elink:VkFaultQueryBehavior, specifying 206e5c31af7Sopenharmony_ciwhich faults to return, are: 207e5c31af7Sopenharmony_ci 208e5c31af7Sopenharmony_ciinclude::{generated}/api/enums/VkFaultQueryBehavior.adoc[] 209e5c31af7Sopenharmony_ci 210e5c31af7Sopenharmony_ci * ename:VK_FAULT_QUERY_BEHAVIOR_GET_AND_CLEAR_ALL_FAULTS All fault types 211e5c31af7Sopenharmony_ci and severities are reported and are cleared from the internal fault 212e5c31af7Sopenharmony_ci storage after retrieval. 213e5c31af7Sopenharmony_ci 214e5c31af7Sopenharmony_ci-- 215e5c31af7Sopenharmony_ci 216e5c31af7Sopenharmony_ci[[fault-callback]] 217e5c31af7Sopenharmony_ci=== Fault Callback 218e5c31af7Sopenharmony_ci 219e5c31af7Sopenharmony_ciThe slink:VkFaultCallbackInfo structure allows an application to register a 220e5c31af7Sopenharmony_cifunction at device creation that the implementation can call to report 221e5c31af7Sopenharmony_cifaults when they occur. 222e5c31af7Sopenharmony_ciA callback function is registered by attaching a valid 223e5c31af7Sopenharmony_cisname:VkFaultCallbackInfo structure to the pname:pNext chain of the 224e5c31af7Sopenharmony_cislink:VkDeviceCreateInfo structure. 225e5c31af7Sopenharmony_ciThe callback function is only called by the implementation during a call to 226e5c31af7Sopenharmony_cithe API, using the same thread that is making the API call. 227e5c31af7Sopenharmony_ciThe sname:VkFaultCallbackInfo structure provides the function pointer to be 228e5c31af7Sopenharmony_cicalled by the implementation, and optionally, application memory to store 229e5c31af7Sopenharmony_cifault data. 230e5c31af7Sopenharmony_ci 231e5c31af7Sopenharmony_ci[open,refpage='VkFaultCallbackInfo',desc='Fault call back information',type='structs'] 232e5c31af7Sopenharmony_ci-- 233e5c31af7Sopenharmony_ci 234e5c31af7Sopenharmony_ciThe sname:VkFaultCallbackInfo structure is defined as: 235e5c31af7Sopenharmony_ci 236e5c31af7Sopenharmony_ciinclude::{generated}/api/structs/VkFaultCallbackInfo.adoc[] 237e5c31af7Sopenharmony_ci 238e5c31af7Sopenharmony_ci * pname:sType is a elink:VkStructureType value identifying this structure. 239e5c31af7Sopenharmony_ci * pname:pNext is `NULL` or pointer to a structure extending this 240e5c31af7Sopenharmony_ci structure. 241e5c31af7Sopenharmony_ci * pname:faultCount is the number of reported faults in the array pointed 242e5c31af7Sopenharmony_ci to by pname:pFaults. 243e5c31af7Sopenharmony_ci * pname:pFaults is either `NULL` or a pointer to an array of 244e5c31af7Sopenharmony_ci pname:faultCount slink:VkFaultData structures. 245e5c31af7Sopenharmony_ci * pname:pfnFaultCallback is a function pointer to the fault handler 246e5c31af7Sopenharmony_ci function that will be called by the implementation when a fault occurs. 247e5c31af7Sopenharmony_ci 248e5c31af7Sopenharmony_ciIf provided, the implementation may: make use of the pname:pFaults array to 249e5c31af7Sopenharmony_cireturn fault data to the application when using the fault callback. 250e5c31af7Sopenharmony_ci 251e5c31af7Sopenharmony_ci[NOTE] 252e5c31af7Sopenharmony_ci.Note 253e5c31af7Sopenharmony_ci==== 254e5c31af7Sopenharmony_ciPrior to Vulkan SC 1.0.11, the application was required to provide the 255e5c31af7Sopenharmony_cipname:pFaults array for fault callback data. 256e5c31af7Sopenharmony_ciThis proved to be unwieldy for both applications and implementations and it 257e5c31af7Sopenharmony_ciwas made optional as of version 1.0.11. 258e5c31af7Sopenharmony_ciIt is expected that most implementations will ignore this and use stack or 259e5c31af7Sopenharmony_ciother preallocated memory for fault callback parameters. 260e5c31af7Sopenharmony_ci==== 261e5c31af7Sopenharmony_ci 262e5c31af7Sopenharmony_ciIf provided, the application memory referenced by pname:pFaults must: remain 263e5c31af7Sopenharmony_ciaccessible throughout the lifetime of the logical device that was created 264e5c31af7Sopenharmony_ciwith this structure. 265e5c31af7Sopenharmony_ci 266e5c31af7Sopenharmony_ci[NOTE] 267e5c31af7Sopenharmony_ci.Note 268e5c31af7Sopenharmony_ci==== 269e5c31af7Sopenharmony_ciThe memory pointed to by pname:pFaults will be updated by the implementation 270e5c31af7Sopenharmony_ciand should not be used or accessed by the application outside of the fault 271e5c31af7Sopenharmony_cihandling function pointed to by pname:pfnFaultCallback. 272e5c31af7Sopenharmony_ciThis restriction also applies to any implementation-specific structure 273e5c31af7Sopenharmony_cichained to an element of pname:pFaults by pname:pNext. 274e5c31af7Sopenharmony_ci 275e5c31af7Sopenharmony_ciIt is expected that implementations will maintain separate storage for fault 276e5c31af7Sopenharmony_ciinformation and populate the array pointed to by pname:pFaults ahead of 277e5c31af7Sopenharmony_cicalling the fault callback function. 278e5c31af7Sopenharmony_ci==== 279e5c31af7Sopenharmony_ci 280e5c31af7Sopenharmony_ci.Valid Usage 281e5c31af7Sopenharmony_ci**** 282e5c31af7Sopenharmony_ci * [[VUID-VkFaultCallbackInfo-faultCount-05138]] 283e5c31af7Sopenharmony_ci pname:faultCount must: either be 0, or equal to 284e5c31af7Sopenharmony_ci <<limits-maxCallbackFaultCount, 285e5c31af7Sopenharmony_ci sname:VkPhysicalDeviceVulkanSC10Properties::pname:maxCallbackFaultCount>> 286e5c31af7Sopenharmony_ci**** 287e5c31af7Sopenharmony_ci 288e5c31af7Sopenharmony_ciinclude::{generated}/validity/structs/VkFaultCallbackInfo.adoc[] 289e5c31af7Sopenharmony_ci-- 290e5c31af7Sopenharmony_ci 291e5c31af7Sopenharmony_ci[open,refpage='PFN_vkFaultCallbackFunction',desc='Fault Callback Function',type='funcpointers'] 292e5c31af7Sopenharmony_ci-- 293e5c31af7Sopenharmony_ci 294e5c31af7Sopenharmony_ciThe function pointer tlink:PFN_vkFaultCallbackFunction is defined as: 295e5c31af7Sopenharmony_ci 296e5c31af7Sopenharmony_ciinclude::{generated}/api/funcpointers/PFN_vkFaultCallbackFunction.adoc[] 297e5c31af7Sopenharmony_ci 298e5c31af7Sopenharmony_ci * pname:unrecordedFaults is a boolean that specifies if the supplied fault 299e5c31af7Sopenharmony_ci information is incomplete and does not contain entries for all faults 300e5c31af7Sopenharmony_ci that have been detected by the implementation and may: be reported via 301e5c31af7Sopenharmony_ci tlink:PFN_vkFaultCallbackFunction since the last call to this callback. 302e5c31af7Sopenharmony_ci * pname:faultCount will contain the number of reported faults in the array 303e5c31af7Sopenharmony_ci pointed to by pname:pFaults. 304e5c31af7Sopenharmony_ci * pname:pFaults will point to an array of pname:faultCount 305e5c31af7Sopenharmony_ci slink:VkFaultData structures containing the fault information. 306e5c31af7Sopenharmony_ci 307e5c31af7Sopenharmony_ciAn implementation must: only make calls to pname:pfnFaultCallback during the 308e5c31af7Sopenharmony_ciexecution of an API command. 309e5c31af7Sopenharmony_ciAn implementation must: only make calls into the application-provided fault 310e5c31af7Sopenharmony_cicallback from the same thread that called the API command. 311e5c31af7Sopenharmony_ciThe implementation should: not synchronize calls to the callback. 312e5c31af7Sopenharmony_ciIf synchronization is needed, the callback must: provide it. 313e5c31af7Sopenharmony_ci 314e5c31af7Sopenharmony_ciThe fault callback must: not call any Vulkan commands. 315e5c31af7Sopenharmony_ci 316e5c31af7Sopenharmony_ciIt is implementation-dependent whether faults reported by this callback are 317e5c31af7Sopenharmony_cialso reported via flink:vkGetFaultData, but each unique fault will be 318e5c31af7Sopenharmony_cireported by at most one callback. 319e5c31af7Sopenharmony_ci-- 320e5c31af7Sopenharmony_ci 321e5c31af7Sopenharmony_ciifdef::hidden[] 322e5c31af7Sopenharmony_ci// tag::scaddition[] 323e5c31af7Sopenharmony_ci * slink:VkFaultData <<SCID-6>> 324e5c31af7Sopenharmony_ci * slink:VkFaultCallbackInfo <<SCID-6>> 325e5c31af7Sopenharmony_ci * elink:VkFaultLevel <<SCID-6>> 326e5c31af7Sopenharmony_ci * elink:VkFaultType <<SCID-6>> 327e5c31af7Sopenharmony_ci * elink:VkFaultQueryBehavior <<SCID-6>> 328e5c31af7Sopenharmony_ci * tlink:PFN_vkFaultCallbackFunction <<SCID-6>> 329e5c31af7Sopenharmony_ci * flink:vkGetFaultData <<SCID-6>> 330e5c31af7Sopenharmony_ci// end::scaddition[] 331e5c31af7Sopenharmony_ciendif::hidden[] 332