core_validation_error_enums.h revision 7bd96b29f4b8df99339ff1f7bc64f2f8940f8d25
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@google.com>
19 * Author: Tobin Ehlis <tobine@google.com>
20 * Author: Chris Forbes <chrisf@ijw.co.nz>
21 * Author: Mark Lobodzinski <mark@lunarg.com>
22 */
23#ifndef CORE_VALIDATION_ERROR_ENUMS_H_
24#define CORE_VALIDATION_ERROR_ENUMS_H_
25
26// Mem Tracker ERROR codes
27enum 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_OBJECT_NOT_BOUND,             // Image or Buffer used without having memory bound to it
44};
45
46// Draw State ERROR codes
47enum DRAW_STATE_ERROR {
48    // TODO: Remove the comments here or expand them. There isn't any additional information in the
49    // comments than in the name in almost all cases.
50    DRAWSTATE_NONE,                          // Used for INFO & other non-error messages
51    DRAWSTATE_INTERNAL_ERROR,                // Error with DrawState internal data structures
52    DRAWSTATE_NO_PIPELINE_BOUND,             // Unable to identify a bound pipeline
53    DRAWSTATE_INVALID_SET,                   // Invalid DS
54    DRAWSTATE_INVALID_RENDER_AREA,           // Invalid renderArea
55    DRAWSTATE_INVALID_LAYOUT,                // Invalid DS layout
56    DRAWSTATE_INVALID_IMAGE_LAYOUT,          // Invalid Image layout
57    DRAWSTATE_INVALID_PIPELINE,              // Invalid Pipeline handle referenced
58    DRAWSTATE_INVALID_PIPELINE_CREATE_STATE, // Attempt to create a pipeline
59                                             // with invalid state
60    DRAWSTATE_INVALID_COMMAND_BUFFER,        // Invalid CommandBuffer referenced
61    DRAWSTATE_INVALID_BARRIER,               // Invalid Barrier
62    DRAWSTATE_INVALID_BUFFER,                // Invalid Buffer
63    DRAWSTATE_INVALID_QUERY,                 // Invalid Query
64    DRAWSTATE_INVALID_FENCE,                 // Invalid Fence
65    DRAWSTATE_INVALID_EVENT,                 // Invalid Event
66    DRAWSTATE_VTX_INDEX_OUT_OF_BOUNDS,       // binding in vkCmdBindVertexData() too
67                                             // large for PSO's
68                                             // pVertexBindingDescriptions array
69    DRAWSTATE_VTX_INDEX_ALIGNMENT_ERROR,     // binding offset in
70                                             // vkCmdBindIndexBuffer() out of
71                                             // alignment based on indexType
72    // DRAWSTATE_MISSING_DOT_PROGRAM,              // No "dot" program in order
73    // to generate png image
74    DRAWSTATE_OUT_OF_MEMORY,                          // malloc failed
75    DRAWSTATE_INVALID_DESCRIPTOR_SET,                 // Descriptor Set handle is unknown
76    DRAWSTATE_DESCRIPTOR_TYPE_MISMATCH,               // Type in layout vs. update are not the
77                                                      // same
78    DRAWSTATE_DESCRIPTOR_STAGEFLAGS_MISMATCH,         // StageFlags in layout are not
79                                                      // the same throughout a single
80                                                      // VkWriteDescriptorSet update
81    DRAWSTATE_DESCRIPTOR_UPDATE_OUT_OF_BOUNDS,        // Descriptors set for update out
82                                                      // of bounds for corresponding
83                                                      // layout section
84    DRAWSTATE_DESCRIPTOR_POOL_EMPTY,                  // Attempt to allocate descriptor from a
85                                                      // pool with no more descriptors of that
86                                                      // type available
87    DRAWSTATE_CANT_FREE_FROM_NON_FREE_POOL,           // Invalid to call
88                                                      // vkFreeDescriptorSets on Sets
89                                                      // allocated from a NON_FREE Pool
90    DRAWSTATE_INVALID_WRITE_UPDATE,                   // Attempting a write update to a descriptor
91                                                      // set with invalid update state
92    DRAWSTATE_INVALID_COPY_UPDATE,                    // Attempting copy update to a descriptor set
93                                                      // with invalid state
94    DRAWSTATE_INVALID_UPDATE_STRUCT,                  // Struct in DS Update tree is of invalid
95                                                      // type
96    DRAWSTATE_NUM_SAMPLES_MISMATCH,                   // Number of samples in bound PSO does not
97                                                      // match number in FB of current RenderPass
98    DRAWSTATE_NO_END_COMMAND_BUFFER,                  // Must call vkEndCommandBuffer() before
99                                                      // QueueSubmit on that commandBuffer
100    DRAWSTATE_NO_BEGIN_COMMAND_BUFFER,                // Binding cmds or calling End on CB that
101                                                      // never had vkBeginCommandBuffer()
102                                                      // called on it
103    DRAWSTATE_COMMAND_BUFFER_SINGLE_SUBMIT_VIOLATION, // Cmd Buffer created with
104    // VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT
105    // flag is submitted
106    // multiple times
107    DRAWSTATE_INVALID_SECONDARY_COMMAND_BUFFER, // vkCmdExecuteCommands() called
108                                                // with a primary commandBuffer
109                                                // in pCommandBuffers array
110    DRAWSTATE_VIEWPORT_NOT_BOUND,               // Draw submitted with no viewport state bound
111    DRAWSTATE_SCISSOR_NOT_BOUND,                // Draw submitted with no scissor state bound
112    DRAWSTATE_LINE_WIDTH_NOT_BOUND,             // Draw submitted with no line width state
113                                                // bound
114    DRAWSTATE_DEPTH_BIAS_NOT_BOUND,             // Draw submitted with no depth bias state
115                                                // bound
116    DRAWSTATE_BLEND_NOT_BOUND,                  // Draw submitted with no blend state bound when
117                                                // color write enabled
118    DRAWSTATE_DEPTH_BOUNDS_NOT_BOUND,           // Draw submitted with no depth bounds
119                                                // state bound when depth enabled
120    DRAWSTATE_STENCIL_NOT_BOUND,                // Draw submitted with no stencil state bound
121                                                // when stencil enabled
122    DRAWSTATE_INDEX_BUFFER_NOT_BOUND,           // Draw submitted with no depth-stencil
123                                                // state bound when depth write enabled
124    DRAWSTATE_PIPELINE_LAYOUTS_INCOMPATIBLE,    // Draw submitted PSO Pipeline
125                                                // layout that's not compatible
126                                                // with layout from
127                                                // BindDescriptorSets
128    DRAWSTATE_RENDERPASS_INCOMPATIBLE,          // Incompatible renderpasses between
129                                                // secondary cmdBuffer and primary
130                                                // cmdBuffer or framebuffer
131    DRAWSTATE_FRAMEBUFFER_INCOMPATIBLE,         // Incompatible framebuffer between
132                                                // secondary cmdBuffer and active
133                                                // renderPass
134    DRAWSTATE_INVALID_FRAMEBUFFER_CREATE_INFO,  // Invalid VkFramebufferCreateInfo state
135    DRAWSTATE_INVALID_RENDERPASS,               // Use of a NULL or otherwise invalid
136                                                // RenderPass object
137    DRAWSTATE_INVALID_RENDERPASS_CMD,           // Invalid cmd submitted while a
138                                                // RenderPass is active
139    DRAWSTATE_NO_ACTIVE_RENDERPASS,             // Rendering cmd submitted without an active
140                                                // RenderPass
141    DRAWSTATE_INVALID_IMAGE_USAGE,              // Image attachment location conflicts with
142                                                // image's USAGE flags
143    DRAWSTATE_INVALID_ATTACHMENT_INDEX,         // Attachment reference contains an index
144                                                // that is out-of-bounds
145    DRAWSTATE_DESCRIPTOR_SET_NOT_UPDATED,       // DescriptorSet bound but it was
146                                                // never updated. This is a warning
147                                                // code.
148    DRAWSTATE_DESCRIPTOR_SET_NOT_BOUND,         // DescriptorSet used by pipeline at
149                                                // draw time is not bound, or has been
150                                                // disturbed (which would have flagged
151                                                // previous warning)
152    DRAWSTATE_INVALID_DYNAMIC_OFFSET_COUNT,     // DescriptorSets bound with
153                                                // different number of dynamic
154                                                // descriptors that were included in
155                                                // dynamicOffsetCount
156    DRAWSTATE_CLEAR_CMD_BEFORE_DRAW,            // Clear cmd issued before any Draw in
157                                                // CommandBuffer, should use RenderPass Ops
158                                                // instead
159    DRAWSTATE_BEGIN_CB_INVALID_STATE,           // CB state at Begin call is bad. Can be
160                                                // Primary/Secondary CB created with
161                                                // mismatched FB/RP information or CB in
162                                                // RECORDING state
163    DRAWSTATE_INVALID_CB_SIMULTANEOUS_USE,      // CmdBuffer is being used in
164                                                // violation of
165    // VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT
166    // rules (i.e. simultaneous use w/o
167    // that bit set)
168    DRAWSTATE_INVALID_COMMAND_BUFFER_RESET, // Attempting to call Reset (or
169                                            // Begin on recorded cmdBuffer) that
170                                            // was allocated from Pool w/o
171    // VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT
172    // bit set
173    DRAWSTATE_VIEWPORT_SCISSOR_MISMATCH,             // Count for viewports and scissors
174                                                     // mismatch and/or state doesn't match
175                                                     // count
176    DRAWSTATE_INVALID_IMAGE_ASPECT,                  // Image aspect is invalid for the current
177                                                     // operation
178    DRAWSTATE_MISSING_ATTACHMENT_REFERENCE,          // Attachment reference must be
179                                                     // present in active subpass
180    DRAWSTATE_SAMPLER_DESCRIPTOR_ERROR,              // A Descriptor of *_SAMPLER type is
181                                                     // being updated with an invalid or bad
182                                                     // Sampler
183    DRAWSTATE_INCONSISTENT_IMMUTABLE_SAMPLER_UPDATE, // Descriptors of
184                                                     // *COMBINED_IMAGE_SAMPLER
185                                                     // type are being updated
186                                                     // where some, but not all,
187                                                     // of the updates use
188                                                     // immutable samplers
189    DRAWSTATE_IMAGEVIEW_DESCRIPTOR_ERROR,            // A Descriptor of *_IMAGE or
190                                                     // *_ATTACHMENT type is being updated
191                                                     // with an invalid or bad ImageView
192    DRAWSTATE_BUFFERVIEW_DESCRIPTOR_ERROR,           // A Descriptor of *_TEXEL_BUFFER
193                                                     // type is being updated with an
194                                                     // invalid or bad BufferView
195    DRAWSTATE_BUFFERINFO_DESCRIPTOR_ERROR,           // A Descriptor of
196    // *_[UNIFORM|STORAGE]_BUFFER_[DYNAMIC]
197    // type is being updated with an
198    // invalid or bad BufferView
199    DRAWSTATE_DYNAMIC_OFFSET_OVERFLOW,       // At draw time the dynamic offset
200                                             // combined with buffer offset and range
201                                             // oversteps size of buffer
202    DRAWSTATE_DOUBLE_DESTROY,                // Destroying an object twice
203    DRAWSTATE_OBJECT_INUSE,                  // Destroying or modifying an object in use by a
204                                             // command buffer
205    DRAWSTATE_QUEUE_FORWARD_PROGRESS,        // Queue cannot guarantee forward progress
206    DRAWSTATE_INVALID_BUFFER_MEMORY_OFFSET,  // Dynamic Buffer Offset
207                                             // violates memory requirements limit
208    DRAWSTATE_INVALID_TEXEL_BUFFER_OFFSET,   // Dynamic Texel Buffer Offsets
209                                             // violate device limit
210    DRAWSTATE_INVALID_UNIFORM_BUFFER_OFFSET, // Dynamic Uniform Buffer Offsets
211                                             // violate device limit
212    DRAWSTATE_INVALID_STORAGE_BUFFER_OFFSET, // Dynamic Storage Buffer Offsets
213                                             // violate device limit
214    DRAWSTATE_INDEPENDENT_BLEND,             // If independent blending is not enabled, all
215                                             // elements of pAttachmentsMustBeIdentical
216    DRAWSTATE_DISABLED_LOGIC_OP,             // If logic operations is not enabled, logicOpEnable
217                                             // must be VK_FALSE
218    DRAWSTATE_INVALID_LOGIC_OP,              // If logicOpEnable is VK_TRUE, logicOp must
219                                             // must be a valid VkLogicOp value
220    DRAWSTATE_INVALID_QUEUE_INDEX,           // Specified queue index exceeds number
221                                             // of queried queue families
222    DRAWSTATE_INVALID_QUEUE_FAMILY,          // Command buffer submitted on queue is from
223                                             // a different queue family
224    DRAWSTATE_PUSH_CONSTANTS_ERROR,          // Push constants exceed maxPushConstantSize
225};
226
227// Shader Checker ERROR codes
228enum SHADER_CHECKER_ERROR {
229    SHADER_CHECKER_NONE,
230    SHADER_CHECKER_INTERFACE_TYPE_MISMATCH,    // Type mismatch between shader stages or shader and pipeline
231    SHADER_CHECKER_OUTPUT_NOT_CONSUMED,        // Entry appears in output interface, but missing in input
232    SHADER_CHECKER_INPUT_NOT_PRODUCED,         // Entry appears in input interface, but missing in output
233    SHADER_CHECKER_NON_SPIRV_SHADER,           // Shader image is not SPIR-V
234    SHADER_CHECKER_INCONSISTENT_SPIRV,         // General inconsistency within a SPIR-V module
235    SHADER_CHECKER_UNKNOWN_STAGE,              // Stage is not supported by analysis
236    SHADER_CHECKER_INCONSISTENT_VI,            // VI state contains conflicting binding or attrib descriptions
237    SHADER_CHECKER_MISSING_DESCRIPTOR,         // Shader attempts to use a descriptor binding not declared in the layout
238    SHADER_CHECKER_BAD_SPECIALIZATION,         // Specialization map entry points outside specialization data block
239    SHADER_CHECKER_MISSING_ENTRYPOINT,         // Shader module does not contain the requested entrypoint
240    SHADER_CHECKER_PUSH_CONSTANT_OUT_OF_RANGE, // Push constant variable is not in a push constant range
241    SHADER_CHECKER_PUSH_CONSTANT_NOT_ACCESSIBLE_FROM_STAGE, // Push constant range exists, but not accessible from stage
242    SHADER_CHECKER_DESCRIPTOR_TYPE_MISMATCH,                // Descriptor type does not match shader resource type
243    SHADER_CHECKER_DESCRIPTOR_NOT_ACCESSIBLE_FROM_STAGE,    // Descriptor used by shader, but not accessible from stage
244    SHADER_CHECKER_FEATURE_NOT_ENABLED,                     // Shader uses capability requiring a feature not enabled on device
245    SHADER_CHECKER_BAD_CAPABILITY,                          // Shader uses capability not supported by Vulkan (OpenCL features)
246};
247
248// Device Limits ERROR codes
249enum DEV_LIMITS_ERROR {
250    DEVLIMITS_NONE,                          // Used for INFO & other non-error messages
251    DEVLIMITS_INVALID_INSTANCE,              // Invalid instance used
252    DEVLIMITS_INVALID_PHYSICAL_DEVICE,       // Invalid physical device used
253    DEVLIMITS_MISSING_QUERY_COUNT,           // Did not make initial call to an API to query the count
254    DEVLIMITS_MUST_QUERY_COUNT,              // Failed to make initial call to an API to query the count
255    DEVLIMITS_INVALID_FEATURE_REQUESTED,     // App requested a feature not supported by physical device
256    DEVLIMITS_COUNT_MISMATCH,                // App requesting a count value different than actual value
257    DEVLIMITS_INVALID_QUEUE_CREATE_REQUEST,  // Invalid queue requested based on queue family properties
258};
259#endif // CORE_VALIDATION_ERROR_ENUMS_H_
260