| /* Copyright (c) 2015-2021 The Khronos Group Inc. |
| * Copyright (c) 2015-2021 Valve Corporation |
| * Copyright (c) 2015-2021 LunarG, Inc. |
| * Copyright (C) 2015-2021 Google Inc. |
| * Modifications Copyright (C) 2020 Advanced Micro Devices, Inc. All rights reserved. |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| * |
| * Author: Camden Stocker <camden@lunarg.com> |
| * Author: Nadav Geva <nadav.geva@amd.com> |
| */ |
| |
| #ifndef BEST_PRACTICES_ERROR_ENUMS_H_ |
| #define BEST_PRACTICES_ERROR_ENUMS_H_ |
| |
| // Suppress unused warning on Linux |
| #if defined(__GNUC__) |
| #define DECORATE_UNUSED __attribute__((unused)) |
| #else |
| #define DECORATE_UNUSED |
| #endif |
| |
| static const char DECORATE_UNUSED *kVUID_BestPractices_CreateInstance_ExtensionMismatch = |
| "UNASSIGNED-BestPractices-vkCreateInstance-extension-mismatch"; |
| static const char DECORATE_UNUSED *kVUID_BestPractices_CreateDevice_ExtensionMismatch = |
| "UNASSIGNED-BestPractices-vkCreateDevice-extension-mismatch"; |
| static const char DECORATE_UNUSED *kVUID_BestPractices_CreateInstance_DeprecatedExtension = |
| "UNASSIGNED-BestPractices-vkCreateInstance-deprecated-extension"; |
| static const char DECORATE_UNUSED *kVUID_BestPractices_CreateDevice_DeprecatedExtension = |
| "UNASSIGNED-BestPractices-vkCreateDevice-deprecated-extension"; |
| static const char DECORATE_UNUSED *kVUID_BestPractices_CreateInstance_SpecialUseExtension_CADSupport = |
| "UNASSIGNED-BestPractices-vkCreateInstance-specialuse-extension-cadsupport"; |
| static const char DECORATE_UNUSED *kVUID_BestPractices_CreateInstance_SpecialUseExtension_D3DEmulation = |
| "UNASSIGNED-BestPractices-vkCreateInstance-specialuse-extension-d3demulation"; |
| static const char DECORATE_UNUSED *kVUID_BestPractices_CreateInstance_SpecialUseExtension_DevTools = |
| "UNASSIGNED-BestPractices-vkCreateInstance-specialuse-extension-devtools"; |
| static const char DECORATE_UNUSED *kVUID_BestPractices_CreateInstance_SpecialUseExtension_Debugging = |
| "UNASSIGNED-BestPractices-vkCreateInstance-specialuse-extension-debugging"; |
| static const char DECORATE_UNUSED *kVUID_BestPractices_CreateInstance_SpecialUseExtension_GLEmulation = |
| "UNASSIGNED-BestPractices-vkCreateInstance-specialuse-extension-glemulation"; |
| static const char DECORATE_UNUSED *kVUID_BestPractices_CreateDevice_SpecialUseExtension_CADSupport = |
| "UNASSIGNED-BestPractices-vkCreateDevice-specialuse-extension-cadsupport"; |
| static const char DECORATE_UNUSED *kVUID_BestPractices_CreateDevice_SpecialUseExtension_D3DEmulation = |
| "UNASSIGNED-BestPractices-vkCreateDevice-specialuse-extension-d3demulation"; |
| static const char DECORATE_UNUSED *kVUID_BestPractices_CreateDevice_SpecialUseExtension_DevTools = |
| "UNASSIGNED-BestPractices-vkCreateDevice-specialuse-extension-devtools"; |
| static const char DECORATE_UNUSED *kVUID_BestPractices_CreateDevice_SpecialUseExtension_Debugging = |
| "UNASSIGNED-BestPractices-vkCreateDevice-specialuse-extension-debugging"; |
| static const char DECORATE_UNUSED *kVUID_BestPractices_CreateDevice_SpecialUseExtension_GLEmulation = |
| "UNASSIGNED-BestPractices-vkCreateDevice-specialuse-extension-glemulation"; |
| static const char DECORATE_UNUSED *kVUID_BestPractices_CreateDevice_API_Mismatch = |
| "UNASSIGNED-BestPractices-vkCreateDevice-API-version-mismatch"; |
| static const char DECORATE_UNUSED *kVUID_BestPractices_SharingModeExclusive = |
| "UNASSIGNED-BestPractices-vkCreateBuffer-sharing-mode-exclusive"; |
| static const char DECORATE_UNUSED *kVUID_BestPractices_RenderPass_Attatchment = |
| "UNASSIGNED-BestPractices-vkCreateRenderPass-attatchment"; |
| static const char DECORATE_UNUSED *kVUID_BestPractices_AllocateMemory_TooManyObjects = |
| "UNASSIGNED-BestPractices-vkAllocateMemory-too-many-objects"; |
| static const char DECORATE_UNUSED *kVUID_BestPractices_CreatePipelines_MultiplePipelines = |
| "UNASSIGNED-BestPractices-vkCreatePipelines-multiple-pipelines-no-cache"; |
| static const char DECORATE_UNUSED *kVUID_BestPractices_PipelineStageFlags = "UNASSIGNED-BestPractices-pipeline-stage-flags"; |
| static const char DECORATE_UNUSED *kVUID_BestPractices_CmdDraw_InstanceCountZero = |
| "UNASSIGNED-BestPractices-vkCmdDraw-instance-count-zero"; |
| static const char DECORATE_UNUSED *kVUID_BestPractices_CmdDraw_DrawCountZero = "UNASSIGNED-BestPractices-vkCmdDraw-draw-count-zero"; |
| static const char DECORATE_UNUSED *kVUID_BestPractices_CmdDispatch_GroupCountZero = |
| "UNASSIGNED-BestPractices-vkCmdDispatch-group-count-zero"; |
| static const char DECORATE_UNUSED *kVUID_BestPractices_CreateDevice_PDFeaturesNotCalled = |
| "UNASSIGNED-BestPractices-vkCreateDevice-physical-device-features-not-retrieved"; |
| static const char DECORATE_UNUSED *kVUID_BestPractices_Swapchain_GetSurfaceNotCalled = |
| "UNASSIGNED-BestPractices-vkCreateSwapchainKHR-surface-not-retrieved"; |
| static const char DECORATE_UNUSED *kVUID_BestPractices_DisplayPlane_PropertiesNotCalled = |
| "UNASSIGNED-BestPractices-vkGetDisplayPlaneSupportedDisplaysKHR-properties-not-retrieved"; |
| static const char DECORATE_UNUSED *kVUID_BestPractices_BufferMemReqNotCalled = |
| "UNASSIGNED-BestPractices-vkBindBufferMemory-requirements-not-retrieved"; |
| static const char DECORATE_UNUSED *kVUID_BestPractices_ImageMemReqNotCalled = |
| "UNASSIGNED-BestPractices-vkBindImageMemory-requirements-not-retrieved"; |
| static const char DECORATE_UNUSED *kVUID_BestPractices_BindAccelNV_NoMemReqQuery = |
| "UNASSIGNED-BestPractices-BindAccelerationStructureMemoryNV-requirements-not-retrieved"; |
| static const char DECORATE_UNUSED *kVUID_BestPractices_DrawState_VtxIndexOutOfBounds = |
| "UNASSIGNED-BestPractices-DrawState-VtxIndexOutOfBounds"; |
| static const char DECORATE_UNUSED *kVUID_BestPractices_DrawState_ClearCmdBeforeDraw = |
| "UNASSIGNED-BestPractices-DrawState-ClearCmdBeforeDraw"; |
| static const char DECORATE_UNUSED *kVUID_BestPractices_CreateCommandPool_CommandBufferReset = |
| "UNASSIGNED-BestPractices-vkCreateCommandPool-command-buffer-reset"; |
| static const char DECORATE_UNUSED *kVUID_BestPractices_BeginCommandBuffer_SimultaneousUse = |
| "UNASSIGNED-BestPractices-vkBeginCommandBuffer-simultaneous-use"; |
| static const char DECORATE_UNUSED *kVUID_BestPractices_AllocateMemory_SmallAllocation = |
| "UNASSIGNED-BestPractices-vkAllocateMemory-small-allocation"; |
| static const char DECORATE_UNUSED *kVUID_BestPractices_SmallDedicatedAllocation = |
| "UNASSIGNED-BestPractices-vkBindMemory-small-dedicated-allocation"; |
| static const char DECORATE_UNUSED *kVUID_BestPractices_NonLazyTransientImage = |
| "UNASSIGNED-BestPractices-vkBindImageMemory-non-lazy-transient-image"; |
| static const char DECORATE_UNUSED *kVUID_BestPractices_CreateRenderPass_ImageRequiresMemory = |
| "UNASSIGNED-BestPractices-vkCreateRenderPass-image-requires-memory"; |
| static const char DECORATE_UNUSED *kVUID_BestPractices_CreateFramebuffer_AttachmentShouldBeTransient = |
| "UNASSIGNED-BestPractices-vkCreateFramebuffer-attachment-should-be-transient"; |
| static const char DECORATE_UNUSED *kVUID_BestPractices_CreateFramebuffer_AttachmentShouldNotBeTransient = |
| "UNASSIGNED-BestPractices-vkCreateFramebuffer-attachment-should-not-be-transient"; |
| static const char DECORATE_UNUSED *kVUID_BestPractices_CreatePipelines_TooManyInstancedVertexBuffers = |
| "UNASSIGNED-BestPractices-vkCreateGraphicsPipelines-too-many-instanced-vertex-buffers"; |
| static const char DECORATE_UNUSED *kVUID_BestPractices_ClearAttachments_ClearAfterLoad = |
| "UNASSIGNED-BestPractices-vkCmdClearAttachments-clear-after-load"; |
| static const char DECORATE_UNUSED *kVUID_BestPractices_Error_Result = "UNASSIGNED-BestPractices-Error-Result"; |
| static const char DECORATE_UNUSED *kVUID_BestPractices_Failure_Result = "UNASSIGNED-BestPractices-Failure-Result"; |
| static const char DECORATE_UNUSED *kVUID_BestPractices_NonSuccess_Result = "UNASSIGNED-BestPractices-NonSuccess-Result"; |
| static const char DECORATE_UNUSED *kVUID_BestPractices_SuboptimalSwapchain = "UNASSIGNED-BestPractices-SuboptimalSwapchain"; |
| static const char DECORATE_UNUSED *kVUID_BestPractices_SuboptimalSwapchainImageCount = |
| "UNASSIGNED-BestPractices-vkCreateSwapchainKHR-suboptimal-swapchain-image-count"; |
| static const char DECORATE_UNUSED *kVUID_BestPractices_Swapchain_InvalidCount = "UNASSIGNED-BestPractices-SwapchainInvalidCount"; |
| static const char DECORATE_UNUSED *kVUID_BestPractices_DepthBiasNoAttachment = "UNASSIGNED-BestPractices-DepthBiasNoAttachment"; |
| |
| // Arm-specific best practice |
| static const char DECORATE_UNUSED *kVUID_BestPractices_AllocateDescriptorSets_SuboptimalReuse = |
| "UNASSIGNED-BestPractices-vkAllocateDescriptorSets-suboptimal-reuse"; |
| static const char DECORATE_UNUSED *kVUID_BestPractices_CreateComputePipelines_ComputeThreadGroupAlignment = |
| "UNASSIGNED-BestPractices-vkCreateComputePipelines-compute-thread-group-alignment"; |
| static const char DECORATE_UNUSED *kVUID_BestPractices_CreateComputePipelines_ComputeWorkGroupSize = |
| "UNASSIGNED-BestPractices-vkCreateComputePipelines-compute-work-group-size"; |
| static const char DECORATE_UNUSED *kVUID_BestPractices_CreateComputePipelines_ComputeSpatialLocality = |
| "UNASSIGNED-BestPractices-vkCreateComputePipelines-compute-spatial-locality"; |
| static const char DECORATE_UNUSED *kVUID_BestPractices_CreatePipelines_MultisampledBlending = |
| "UNASSIGNED-BestPractices-vkCreatePipelines-multisampled-blending"; |
| static const char DECORATE_UNUSED *kVUID_BestPractices_CreateImage_TooLargeSampleCount = |
| "UNASSIGNED-BestPractices-vkCreateImage-too-large-sample-count"; |
| static const char DECORATE_UNUSED *kVUID_BestPractices_CreateImage_NonTransientMSImage = |
| "UNASSIGNED-BestPractices-vkCreateImage-non-transient-ms-image"; |
| static const char DECORATE_UNUSED *kVUID_BestPractices_CreateSampler_DifferentWrappingModes = |
| "UNASSIGNED-BestPractices-vkCreateSampler-different-wrapping-modes"; |
| static const char DECORATE_UNUSED *kVUID_BestPractices_CreateSampler_LodClamping = |
| "UNASSIGNED-BestPractices-vkCreateSampler-lod-clamping"; |
| static const char DECORATE_UNUSED *kVUID_BestPractices_CreateSampler_LodBias = "UNASSIGNED-BestPractices-vkCreateSampler-lod-bias"; |
| static const char DECORATE_UNUSED *kVUID_BestPractices_CreateSampler_BorderClampColor = |
| "UNASSIGNED-BestPractices-vkCreateSampler-border-clamp-color"; |
| static const char DECORATE_UNUSED *kVUID_BestPractices_CreateSampler_UnnormalizedCoordinates = |
| "UNASSIGNED-BestPractices-vkCreateSampler-unnormalized-coordinates"; |
| static const char DECORATE_UNUSED *kVUID_BestPractices_CreateSampler_Anisotropy = |
| "UNASSIGNED-BestPractices-vkCreateSampler-anisotropy"; |
| static const char DECORATE_UNUSED *kVUID_BestPractices_CmdResolveImage_ResolvingImage = |
| "UNASSIGNED-BestPractices-vkCmdResolveImage-resolving-image"; |
| static const char DECORATE_UNUSED *kVUID_BestPractices_CmdResolveImage2KHR_ResolvingImage = |
| "UNASSIGNED-BestPractices-vkCmdResolveImage2KHR-resolving-image"; |
| static const char DECORATE_UNUSED *kVUID_BestPractices_CmdDrawIndexed_ManySmallIndexedDrawcalls = |
| "UNASSIGNED-BestPractices-vkCmdDrawIndexed-many-small-indexed-drawcalls"; |
| static const char DECORATE_UNUSED *kVUID_BestPractices_CmdDrawIndexed_SparseIndexBuffer = |
| "UNASSIGNED-BestPractices-vkCmdDrawIndexed-sparse-index-buffer"; |
| static const char DECORATE_UNUSED *kVUID_BestPractices_CmdDrawIndexed_PostTransformCacheThrashing = |
| "UNASSIGNED-BestPractices-vkCmdDrawIndexed-post-transform-cache-thrashing"; |
| static const char DECORATE_UNUSED *kVUID_BestPractices_BeginCommandBuffer_OneTimeSubmit = |
| "UNASSIGNED-BestPractices-vkBeginCommandBuffer-one-time-submit"; |
| static const char DECORATE_UNUSED *kVUID_BestPractices_BeginRenderPass_ZeroSizeRenderArea = |
| "UNASSIGNED-BestPractices-vkCmdBeginRenderPass-zero-size-render-area"; |
| static const char DECORATE_UNUSED *kVUID_BestPractices_BeginRenderPass_AttachmentNeedsReadback = |
| "UNASSIGNED-BestPractices-vkCmdBeginRenderPass-attachment-needs-readback"; |
| static const char DECORATE_UNUSED *kVUID_BestPractices_CreateSwapchain_PresentMode = |
| "UNASSIGNED-BestPractices-vkCreateSwapchainKHR-swapchain-presentmode-not-fifo"; |
| static const char DECORATE_UNUSED *kVUID_BestPractices_CreatePipelines_DepthBias_Zero = |
| "UNASSIGNED-BestPractices-vkCreatePipelines-depthbias-zero"; |
| static const char DECORATE_UNUSED *kVUID_BestPractices_CreateDevice_RobustBufferAccess = |
| "UNASSIGNED-BestPractices-vkCreateDevice-RobustBufferAccess"; |
| static const char DECORATE_UNUSED *kVUID_BestPractices_EndRenderPass_DepthPrePassUsage = |
| "UNASSIGNED-BestPractices-vkCmdEndRenderPass-depth-pre-pass-usage"; |
| static const char DECORATE_UNUSED *kVUID_BestPractices_EndRenderPass_RedundantAttachmentOnTile = |
| "UNASSIGNED-BestPractices-vkCmdEndRenderPass-redundant-attachment-on-tile"; |
| static const char DECORATE_UNUSED *kVUID_BestPractices_RenderPass_RedundantStore = |
| "UNASSIGNED-BestPractices-RenderPass-redundant-store"; |
| static const char DECORATE_UNUSED *kVUID_BestPractices_RenderPass_RedundantClear = |
| "UNASSIGNED-BestPractices-RenderPass-redundant-clear"; |
| static const char DECORATE_UNUSED *kVUID_BestPractices_RenderPass_InefficientClear = |
| "UNASSIGNED-BestPractices-RenderPass-inefficient-clear"; |
| static const char DECORATE_UNUSED *kVUID_BestPractices_RenderPass_BlitImage_LoadOpLoad = |
| "UNASSIGNED-BestPractices-RenderPass-blitimage-loadopload"; |
| static const char DECORATE_UNUSED *kVUID_BestPractices_RenderPass_CopyImage_LoadOpLoad = |
| "UNASSIGNED-BestPractices-RenderPass-copyimage-loadopload"; |
| static const char DECORATE_UNUSED *kVUID_BestPractices_RenderPass_ResolveImage_LoadOpLoad = |
| "UNASSIGNED-BestPractices-RenderPass-resolveimage-loadopload"; |
| |
| |
| // AMD-specific best practice |
| static const char DECORATE_UNUSED *kVUID_BestPractices_CmdBuffer_AvoidTinyCmdBuffers = |
| "UNASSIGNED-BestPractices-VkCommandBuffer-AvoidTinyCmdBuffers"; |
| static const char DECORATE_UNUSED *kVUID_BestPractices_CmdBuffer_AvoidSecondaryCmdBuffers = |
| "UNASSIGNED-BestPractices-VkCommandBuffer-AvoidSecondaryCmdBuffers"; |
| static const char DECORATE_UNUSED *kVUID_BestPractices_CmdBuffer_AvoidSmallSecondaryCmdBuffers = |
| "UNASSIGNED-BestPractices-VkCommandBuffer-AvoidSmallSecondaryCmdBuffers"; |
| static const char DECORATE_UNUSED *kVUID_BestPractices_CmdBuffer_AvoidClearSecondaryCmdBuffers = |
| "UNASSIGNED-BestPractices-VkCommandBuffer-AvoidClearSecondaryCmdBuffers"; |
| static const char DECORATE_UNUSED *kVUID_BestPractices_DrawState_AvoidVertexBindEveryDraw = |
| "UNASSIGNED-BestPractices-DrawState-AvoidVertexBindEveryDraw"; |
| static const char DECORATE_UNUSED *kVUID_BestPractices_CmdPool_DisparateSizedCmdBuffers = |
| "UNASSIGNED-BestPractices-CmdPool-DisparateSizedCmdBuffers"; |
| static const char DECORATE_UNUSED *kVUID_BestPractices_CreatePipelines_TooManyPipelines = |
| "UNASSIGNED-BestPractices-CreatePipelines-TooManyPipelines"; |
| static const char DECORATE_UNUSED *kVUID_BestPractices_CreatePipelines_MultiplePipelineCaches = |
| "UNASSIGNED-BestPractices-vkCreatePipelines-multiple-pipelines-caches"; |
| static const char DECORATE_UNUSED *kVUID_BestPractices_vkImage_DontUseMutableRenderTargets = |
| "UNASSIGNED-BestPractices-vkImage-DontUseMutableRenderTargets"; |
| static const char DECORATE_UNUSED *kVUID_BestPractices_vkImage_AvoidImageToImageCopy = |
| "UNASSIGNED-BestPractices-vkImage-AvoidImageToImageCopy"; |
| static const char DECORATE_UNUSED *kVUID_BestPractices_vkImage_AvoidConcurrentRenderTargets = |
| "UNASSIGNED-BestPractices-vkImage-AvoidConcurrentRenderTargets"; |
| static const char DECORATE_UNUSED *kVUID_BestPractices_vkImage_DontUseStorageRenderTargets = |
| "UNASSIGNED-BestPractices-vkImage-DontUseStorageRenderTargets"; |
| static const char DECORATE_UNUSED *kVUID_BestPractices_vkImage_AvoidGeneral = "UNASSIGNED-BestPractices-vkImage-AvoidGeneral"; |
| static const char DECORATE_UNUSED *kVUID_BestPractices_CreatePipelines_AvoidPrimitiveRestart = |
| "UNASSIGNED-BestPractices-CreatePipelines-AvoidPrimitiveRestart"; |
| static const char DECORATE_UNUSED *kVUID_BestPractices_CreatePipelines_MinimizeNumDynamicStates = |
| "UNASSIGNED-BestPractices-CreatePipelines-MinimizeNumDynamicStates"; |
| static const char DECORATE_UNUSED *kVUID_BestPractices_CreatePipelinesLayout_KeepLayoutSmall = |
| "UNASSIGNED-BestPractices-CreatePipelinesLayout-KeepLayoutSmall"; |
| static const char DECORATE_UNUSED *kVUID_BestPractices_UpdateDescriptors_AvoidCopyingDescriptors = |
| "UNASSIGNED-BestPractices-UpdateDescriptors-AvoidCopyingDescriptors"; |
| static const char DECORATE_UNUSED *kVUID_BestPractices_UpdateDescriptors_PreferNonTemplate = |
| "UNASSIGNED-BestPractices-UpdateDescriptors-PreferNonTemplate"; |
| static const char DECORATE_UNUSED *kVUID_BestPractices_ClearAttachment_FastClearValues = |
| "UNASSIGNED-BestPractices-ClearAttachment-FastClearValues"; |
| static const char DECORATE_UNUSED *kVUID_BestPractices_ClearAttachment_ClearImage = |
| "UNASSIGNED-BestPractices-ClearAttachment-ClearImage"; |
| static const char DECORATE_UNUSED *kVUID_BestPractices_CmdBuffer_backToBackBarrier = |
| "UNASSIGNED-BestPractices-CmdBuffer-backToBackBarrier"; |
| static const char DECORATE_UNUSED *kVUID_BestPractices_CmdBuffer_highBarrierCount = |
| "UNASSIGNED-BestPractices-CmdBuffer-highBarrierCount"; |
| static const char DECORATE_UNUSED *kVUID_BestPractices_PipelineBarrier_readToReadBarrier = |
| "UNASSIGNED-BestPractices-PipelineBarrier-readToReadBarrier"; |
| static const char DECORATE_UNUSED *kVUID_BestPractices_Submission_ReduceNumberOfSubmissions = |
| "UNASSIGNED-BestPractices-Submission-ReduceNumberOfSubmissions"; |
| static const char DECORATE_UNUSED *kVUID_BestPractices_Pipeline_SortAndBind = "UNASSIGNED-BestPractices-Pipeline-SortAndBind"; |
| static const char DECORATE_UNUSED *kVUID_BestPractices_Pipeline_WorkPerPipelineChange = |
| "UNASSIGNED-BestPractices-Pipeline-WorkPerPipelineChange"; |
| static const char DECORATE_UNUSED *kVUID_BestPractices_SyncObjects_HighNumberOfFences = |
| "UNASSIGNED-BestPractices-SyncObjects-HighNumberOfFences"; |
| static const char DECORATE_UNUSED *kVUID_BestPractices_SyncObjects_HighNumberOfSemaphores = |
| "UNASSIGNED-BestPractices-SyncObjects-HighNumberOfSemaphores"; |
| |
| #endif |