Home | History | Annotate | Download | only in layers
      1 /* Copyright (c) 2015-2016 The Khronos Group Inc.
      2  * Copyright (c) 2015-2016 Valve Corporation
      3  * Copyright (c) 2015-2016 LunarG, Inc.
      4  * Copyright (C) 2015-2016 Google Inc.
      5  *
      6  * Licensed under the Apache License, Version 2.0 (the "License");
      7  * you may not use this file except in compliance with the License.
      8  * You may obtain a copy of the License at
      9  *
     10  *     http://www.apache.org/licenses/LICENSE-2.0
     11  *
     12  * Unless required by applicable law or agreed to in writing, software
     13  * distributed under the License is distributed on an "AS IS" BASIS,
     14  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     15  * See the License for the specific language governing permissions and
     16  * limitations under the License.
     17  *
     18  * Author: Courtney Goeltzenleuchter <courtneygo (at) google.com>
     19  * Author: Tobin Ehlis <tobine (at) google.com>
     20  * Author: Chris Forbes <chrisf (at) ijw.co.nz>
     21  * Author: Mark Lobodzinski <mark (at) lunarg.com>
     22  */
     23 #ifndef CORE_VALIDATION_ERROR_ENUMS_H_
     24 #define CORE_VALIDATION_ERROR_ENUMS_H_
     25 
     26 // Mem Tracker ERROR codes
     27 enum MEM_TRACK_ERROR {
     28     MEMTRACK_NONE,                         // Used for INFO & other non-error messages
     29     MEMTRACK_INVALID_CB,                   // Cmd Buffer invalid
     30     MEMTRACK_INVALID_MEM_OBJ,              // Invalid Memory Object
     31     MEMTRACK_INVALID_ALIASING,             // Invalid Memory Aliasing
     32     MEMTRACK_INTERNAL_ERROR,               // Bug in Mem Track Layer internal data structures
     33     MEMTRACK_FREED_MEM_REF,                // MEM Obj freed while it still has obj and/or CB refs
     34     MEMTRACK_INVALID_OBJECT,               // Attempting to reference generic VK Object that is invalid
     35     MEMTRACK_MEMORY_LEAK,                  // Failure to call vkFreeMemory on Mem Obj prior to DestroyDevice
     36     MEMTRACK_INVALID_STATE,                // Memory not in the correct state
     37     MEMTRACK_RESET_CB_WHILE_IN_FLIGHT,     // vkResetCommandBuffer() called on a CB that hasn't completed
     38     MEMTRACK_INVALID_FENCE_STATE,          // Invalid Fence State signaled or used
     39     MEMTRACK_REBIND_OBJECT,                // Non-sparse object bindings are immutable
     40     MEMTRACK_INVALID_USAGE_FLAG,           // Usage flags specified at image/buffer create conflict w/ use of object
     41     MEMTRACK_INVALID_MAP,                  // Size flag specified at alloc is too small for mapping range
     42     MEMTRACK_INVALID_MEM_TYPE,             // Memory Type mismatch
     43     MEMTRACK_INVALID_MEM_REGION,           // Memory region for object bound to an allocation is invalid
     44     MEMTRACK_OBJECT_NOT_BOUND,             // Image or Buffer used without having memory bound to it
     45 };
     46 
     47 // Draw State ERROR codes
     48 enum DRAW_STATE_ERROR {
     49     // TODO: Remove the comments here or expand them. There isn't any additional information in the
     50     // comments than in the name in almost all cases.
     51     DRAWSTATE_NONE,                          // Used for INFO & other non-error messages
     52     DRAWSTATE_INTERNAL_ERROR,                // Error with DrawState internal data structures
     53     DRAWSTATE_NO_PIPELINE_BOUND,             // Unable to identify a bound pipeline
     54     DRAWSTATE_INVALID_SET,                   // Invalid DS
     55     DRAWSTATE_INVALID_RENDER_AREA,           // Invalid renderArea
     56     DRAWSTATE_INVALID_LAYOUT,                // Invalid DS layout
     57     DRAWSTATE_INVALID_IMAGE_LAYOUT,          // Invalid Image layout
     58     DRAWSTATE_INVALID_PIPELINE,              // Invalid Pipeline handle referenced
     59     DRAWSTATE_INVALID_PIPELINE_CREATE_STATE, // Attempt to create a pipeline
     60                                              // with invalid state
     61     DRAWSTATE_INVALID_COMMAND_BUFFER,        // Invalid CommandBuffer referenced
     62     DRAWSTATE_INVALID_BARRIER,               // Invalid Barrier
     63     DRAWSTATE_INVALID_BUFFER,                // Invalid Buffer
     64     DRAWSTATE_INVALID_IMAGE,                 // Invalid Image
     65     DRAWSTATE_INVALID_BUFFER_VIEW,           // Invalid BufferView
     66     DRAWSTATE_INVALID_IMAGE_VIEW,            // Invalid ImageView
     67     DRAWSTATE_INVALID_QUERY,                 // Invalid Query
     68     DRAWSTATE_INVALID_QUERY_POOL,            // Invalid QueryPool
     69     DRAWSTATE_INVALID_DESCRIPTOR_POOL,       // Invalid DescriptorPool
     70     DRAWSTATE_INVALID_COMMAND_POOL,          // Invalid CommandPool
     71     DRAWSTATE_INVALID_FENCE,                 // Invalid Fence
     72     DRAWSTATE_INVALID_EVENT,                 // Invalid Event
     73     DRAWSTATE_INVALID_SAMPLER,               // Invalid Sampler
     74     DRAWSTATE_INVALID_FRAMEBUFFER,           // Invalid Framebuffer
     75     DRAWSTATE_INVALID_DEVICE_MEMORY,         // Invalid DeviceMemory
     76     DRAWSTATE_VTX_INDEX_OUT_OF_BOUNDS,       // binding in vkCmdBindVertexData() too
     77                                              // large for PSO's
     78                                              // pVertexBindingDescriptions array
     79     DRAWSTATE_VTX_INDEX_ALIGNMENT_ERROR,     // binding offset in
     80                                              // vkCmdBindIndexBuffer() out of
     81                                              // alignment based on indexType
     82     // DRAWSTATE_MISSING_DOT_PROGRAM,              // No "dot" program in order
     83     // to generate png image
     84     DRAWSTATE_OUT_OF_MEMORY,                          // malloc failed
     85     DRAWSTATE_INVALID_DESCRIPTOR_SET,                 // Descriptor Set handle is unknown
     86     DRAWSTATE_DESCRIPTOR_TYPE_MISMATCH,               // Type in layout vs. update are not the
     87                                                       // same
     88     DRAWSTATE_DESCRIPTOR_STAGEFLAGS_MISMATCH,         // StageFlags in layout are not
     89                                                       // the same throughout a single
     90                                                       // VkWriteDescriptorSet update
     91     DRAWSTATE_DESCRIPTOR_UPDATE_OUT_OF_BOUNDS,        // Descriptors set for update out
     92                                                       // of bounds for corresponding
     93                                                       // layout section
     94     DRAWSTATE_DESCRIPTOR_POOL_EMPTY,                  // Attempt to allocate descriptor from a
     95                                                       // pool with no more descriptors of that
     96                                                       // type available
     97     DRAWSTATE_CANT_FREE_FROM_NON_FREE_POOL,           // Invalid to call
     98                                                       // vkFreeDescriptorSets on Sets
     99                                                       // allocated from a NON_FREE Pool
    100     DRAWSTATE_INVALID_WRITE_UPDATE,                   // Attempting a write update to a descriptor
    101                                                       // set with invalid update state
    102     DRAWSTATE_INVALID_COPY_UPDATE,                    // Attempting copy update to a descriptor set
    103                                                       // with invalid state
    104     DRAWSTATE_INVALID_UPDATE_STRUCT,                  // Struct in DS Update tree is of invalid
    105                                                       // type
    106     DRAWSTATE_NUM_SAMPLES_MISMATCH,                   // Number of samples in bound PSO does not
    107                                                       // match number in FB of current RenderPass
    108     DRAWSTATE_NO_END_COMMAND_BUFFER,                  // Must call vkEndCommandBuffer() before
    109                                                       // QueueSubmit on that commandBuffer
    110     DRAWSTATE_NO_BEGIN_COMMAND_BUFFER,                // Binding cmds or calling End on CB that
    111                                                       // never had vkBeginCommandBuffer()
    112                                                       // called on it
    113     DRAWSTATE_COMMAND_BUFFER_SINGLE_SUBMIT_VIOLATION, // Cmd Buffer created with
    114     // VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT
    115     // flag is submitted
    116     // multiple times
    117     DRAWSTATE_INVALID_SECONDARY_COMMAND_BUFFER, // vkCmdExecuteCommands() called
    118                                                 // with a primary commandBuffer
    119                                                 // in pCommandBuffers array
    120     DRAWSTATE_VIEWPORT_NOT_BOUND,               // Draw submitted with no viewport state bound
    121     DRAWSTATE_SCISSOR_NOT_BOUND,                // Draw submitted with no scissor state bound
    122     DRAWSTATE_LINE_WIDTH_NOT_BOUND,             // Draw submitted with no line width state
    123                                                 // bound
    124     DRAWSTATE_DEPTH_BIAS_NOT_BOUND,             // Draw submitted with no depth bias state
    125                                                 // bound
    126     DRAWSTATE_BLEND_NOT_BOUND,                  // Draw submitted with no blend state bound when
    127                                                 // color write enabled
    128     DRAWSTATE_DEPTH_BOUNDS_NOT_BOUND,           // Draw submitted with no depth bounds
    129                                                 // state bound when depth enabled
    130     DRAWSTATE_STENCIL_NOT_BOUND,                // Draw submitted with no stencil state bound
    131                                                 // when stencil enabled
    132     DRAWSTATE_INDEX_BUFFER_NOT_BOUND,           // Draw submitted with no depth-stencil
    133                                                 // state bound when depth write enabled
    134     DRAWSTATE_PIPELINE_LAYOUTS_INCOMPATIBLE,    // Draw submitted PSO Pipeline
    135                                                 // layout that's not compatible
    136                                                 // with layout from
    137                                                 // BindDescriptorSets
    138     DRAWSTATE_RENDERPASS_INCOMPATIBLE,          // Incompatible renderpasses between
    139                                                 // secondary cmdBuffer and primary
    140                                                 // cmdBuffer or framebuffer
    141     DRAWSTATE_FRAMEBUFFER_INCOMPATIBLE,         // Incompatible framebuffer between
    142                                                 // secondary cmdBuffer and active
    143                                                 // renderPass
    144     DRAWSTATE_INVALID_FRAMEBUFFER_CREATE_INFO,  // Invalid VkFramebufferCreateInfo state
    145     DRAWSTATE_INVALID_RENDERPASS,               // Use of a NULL or otherwise invalid
    146                                                 // RenderPass object
    147     DRAWSTATE_INVALID_RENDERPASS_CMD,           // Invalid cmd submitted while a
    148                                                 // RenderPass is active
    149     DRAWSTATE_NO_ACTIVE_RENDERPASS,             // Rendering cmd submitted without an active
    150                                                 // RenderPass
    151     DRAWSTATE_INVALID_IMAGE_USAGE,              // Image attachment location conflicts with
    152                                                 // image's USAGE flags
    153     DRAWSTATE_INVALID_ATTACHMENT_INDEX,         // Attachment reference contains an index
    154                                                 // that is out-of-bounds
    155     DRAWSTATE_DESCRIPTOR_SET_NOT_UPDATED,       // DescriptorSet bound but it was
    156                                                 // never updated. This is a warning
    157                                                 // code.
    158     DRAWSTATE_DESCRIPTOR_SET_NOT_BOUND,         // DescriptorSet used by pipeline at
    159                                                 // draw time is not bound, or has been
    160                                                 // disturbed (which would have flagged
    161                                                 // previous warning)
    162     DRAWSTATE_INVALID_DYNAMIC_OFFSET_COUNT,     // DescriptorSets bound with
    163                                                 // different number of dynamic
    164                                                 // descriptors that were included in
    165                                                 // dynamicOffsetCount
    166     DRAWSTATE_CLEAR_CMD_BEFORE_DRAW,            // Clear cmd issued before any Draw in
    167                                                 // CommandBuffer, should use RenderPass Ops
    168                                                 // instead
    169     DRAWSTATE_BEGIN_CB_INVALID_STATE,           // CB state at Begin call is bad. Can be
    170                                                 // Primary/Secondary CB created with
    171                                                 // mismatched FB/RP information or CB in
    172                                                 // RECORDING state
    173     DRAWSTATE_INVALID_CB_SIMULTANEOUS_USE,      // CmdBuffer is being used in
    174                                                 // violation of
    175     // VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT
    176     // rules (i.e. simultaneous use w/o
    177     // that bit set)
    178     DRAWSTATE_INVALID_COMMAND_BUFFER_RESET, // Attempting to call Reset (or
    179                                             // Begin on recorded cmdBuffer) that
    180                                             // was allocated from Pool w/o
    181     // VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT
    182     // bit set
    183     DRAWSTATE_VIEWPORT_SCISSOR_MISMATCH,             // Count for viewports and scissors
    184                                                      // mismatch and/or state doesn't match
    185                                                      // count
    186     DRAWSTATE_INVALID_IMAGE_ASPECT,                  // Image aspect is invalid for the current
    187                                                      // operation
    188     DRAWSTATE_MISSING_ATTACHMENT_REFERENCE,          // Attachment reference must be
    189                                                      // present in active subpass
    190     DRAWSTATE_SAMPLER_DESCRIPTOR_ERROR,              // A Descriptor of *_SAMPLER type is
    191                                                      // being updated with an invalid or bad
    192                                                      // Sampler
    193     DRAWSTATE_INCONSISTENT_IMMUTABLE_SAMPLER_UPDATE, // Descriptors of
    194                                                      // *COMBINED_IMAGE_SAMPLER
    195                                                      // type are being updated
    196                                                      // where some, but not all,
    197                                                      // of the updates use
    198                                                      // immutable samplers
    199     DRAWSTATE_IMAGEVIEW_DESCRIPTOR_ERROR,            // A Descriptor of *_IMAGE or
    200                                                      // *_ATTACHMENT type is being updated
    201                                                      // with an invalid or bad ImageView
    202     DRAWSTATE_BUFFERVIEW_DESCRIPTOR_ERROR,           // A Descriptor of *_TEXEL_BUFFER
    203                                                      // type is being updated with an
    204                                                      // invalid or bad BufferView
    205     DRAWSTATE_BUFFERINFO_DESCRIPTOR_ERROR,           // A Descriptor of
    206     // *_[UNIFORM|STORAGE]_BUFFER_[DYNAMIC]
    207     // type is being updated with an
    208     // invalid or bad BufferView
    209     DRAWSTATE_DYNAMIC_OFFSET_OVERFLOW,       // At draw time the dynamic offset
    210                                              // combined with buffer offset and range
    211                                              // oversteps size of buffer
    212     DRAWSTATE_DOUBLE_DESTROY,                // Destroying an object twice
    213     DRAWSTATE_OBJECT_INUSE,                  // Destroying or modifying an object in use by a
    214                                              // command buffer
    215     DRAWSTATE_QUEUE_FORWARD_PROGRESS,        // Queue cannot guarantee forward progress
    216     DRAWSTATE_INVALID_BUFFER_MEMORY_OFFSET,  // Dynamic Buffer Offset
    217                                              // violates memory requirements limit
    218     DRAWSTATE_INVALID_TEXEL_BUFFER_OFFSET,   // Dynamic Texel Buffer Offsets
    219                                              // violate device limit
    220     DRAWSTATE_INVALID_UNIFORM_BUFFER_OFFSET, // Dynamic Uniform Buffer Offsets
    221                                              // violate device limit
    222     DRAWSTATE_INVALID_STORAGE_BUFFER_OFFSET, // Dynamic Storage Buffer Offsets
    223                                              // violate device limit
    224     DRAWSTATE_INDEPENDENT_BLEND,             // If independent blending is not enabled, all
    225                                              // elements of pAttachmentsMustBeIdentical
    226     DRAWSTATE_DISABLED_LOGIC_OP,             // If logic operations is not enabled, logicOpEnable
    227                                              // must be VK_FALSE
    228     DRAWSTATE_INVALID_QUEUE_INDEX,           // Specified queue index exceeds number
    229                                              // of queried queue families
    230     DRAWSTATE_INVALID_QUEUE_FAMILY,          // Command buffer submitted on queue is from
    231                                              // a different queue family
    232     DRAWSTATE_IMAGE_TRANSFER_GRANULARITY,    // Violation of queue family's image transfer
    233                                              // granularity
    234     DRAWSTATE_PUSH_CONSTANTS_ERROR,          // Push constants exceed maxPushConstantSize
    235     DRAWSTATE_INVALID_SUBPASS_INDEX,         // Stepping beyond last subpass, or not reaching it
    236     DRAWSTATE_SWAPCHAIN_NO_SYNC_FOR_ACQUIRE, // AcquireNextImageKHR with no sync object
    237     DRAWSTATE_SWAPCHAIN_INVALID_IMAGE,       // QueuePresentKHR with image index out of range
    238     DRAWSTATE_SWAPCHAIN_IMAGE_NOT_ACQUIRED,  // QueuePresentKHR with image not acquired by app
    239     DRAWSTATE_SWAPCHAIN_ALREADY_EXISTS,      // Surface has an existing swapchain that is not being replaced
    240     DRAWSTATE_SWAPCHAIN_WRONG_SURFACE,       // Swapchain being replaced is not attached to the same surface
    241 };
    242 
    243 // Shader Checker ERROR codes
    244 enum SHADER_CHECKER_ERROR {
    245     SHADER_CHECKER_NONE,
    246     SHADER_CHECKER_INTERFACE_TYPE_MISMATCH,    // Type mismatch between shader stages or shader and pipeline
    247     SHADER_CHECKER_OUTPUT_NOT_CONSUMED,        // Entry appears in output interface, but missing in input
    248     SHADER_CHECKER_INPUT_NOT_PRODUCED,         // Entry appears in input interface, but missing in output
    249     SHADER_CHECKER_NON_SPIRV_SHADER,           // Shader image is not SPIR-V
    250     SHADER_CHECKER_INCONSISTENT_SPIRV,         // General inconsistency within a SPIR-V module
    251     SHADER_CHECKER_UNKNOWN_STAGE,              // Stage is not supported by analysis
    252     SHADER_CHECKER_INCONSISTENT_VI,            // VI state contains conflicting binding or attrib descriptions
    253     SHADER_CHECKER_MISSING_DESCRIPTOR,         // Shader attempts to use a descriptor binding not declared in the layout
    254     SHADER_CHECKER_BAD_SPECIALIZATION,         // Specialization map entry points outside specialization data block
    255     SHADER_CHECKER_MISSING_ENTRYPOINT,         // Shader module does not contain the requested entrypoint
    256     SHADER_CHECKER_PUSH_CONSTANT_OUT_OF_RANGE, // Push constant variable is not in a push constant range
    257     SHADER_CHECKER_PUSH_CONSTANT_NOT_ACCESSIBLE_FROM_STAGE, // Push constant range exists, but not accessible from stage
    258     SHADER_CHECKER_DESCRIPTOR_TYPE_MISMATCH,                // Descriptor type does not match shader resource type
    259     SHADER_CHECKER_DESCRIPTOR_NOT_ACCESSIBLE_FROM_STAGE,    // Descriptor used by shader, but not accessible from stage
    260     SHADER_CHECKER_FEATURE_NOT_ENABLED,                     // Shader uses capability requiring a feature not enabled on device
    261     SHADER_CHECKER_BAD_CAPABILITY,                          // Shader uses capability not supported by Vulkan (OpenCL features)
    262     SHADER_CHECKER_MISSING_INPUT_ATTACHMENT,   // Shader uses an input attachment but not declared in subpass
    263     SHADER_CHECKER_INPUT_ATTACHMENT_TYPE_MISMATCH,          // Shader input attachment type does not match subpass format
    264 };
    265 
    266 // Device Limits ERROR codes
    267 enum DEV_LIMITS_ERROR {
    268     DEVLIMITS_NONE,                          // Used for INFO & other non-error messages
    269     DEVLIMITS_INVALID_INSTANCE,              // Invalid instance used
    270     DEVLIMITS_INVALID_PHYSICAL_DEVICE,       // Invalid physical device used
    271     DEVLIMITS_MISSING_QUERY_COUNT,           // Did not make initial call to an API to query the count
    272     DEVLIMITS_MUST_QUERY_COUNT,              // Failed to make initial call to an API to query the count
    273     DEVLIMITS_INVALID_FEATURE_REQUESTED,     // App requested a feature not supported by physical device
    274     DEVLIMITS_COUNT_MISMATCH,                // App requesting a count value different than actual value
    275     DEVLIMITS_INVALID_QUEUE_CREATE_REQUEST,  // Invalid queue requested based on queue family properties
    276 };
    277 #endif // CORE_VALIDATION_ERROR_ENUMS_H_
    278