e88dafea3b39ce589e68789a6cfbcd4b1b659158
[platform/upstream/VK-GL-CTS.git] / external / vulkancts / framework / vulkan / vkStrUtilImpl.inl
1 /* WARNING: This is auto-generated file. Do not modify, since changes will
2  * be lost! Modify the generating script instead.
3  */
4 template<> const char*  getTypeName<VkInstance>                                         (void) { return "VkInstance";                                           }
5 template<> const char*  getTypeName<VkPhysicalDevice>                           (void) { return "VkPhysicalDevice";                                     }
6 template<> const char*  getTypeName<VkDevice>                                           (void) { return "VkDevice";                                                     }
7 template<> const char*  getTypeName<VkQueue>                                            (void) { return "VkQueue";                                                      }
8 template<> const char*  getTypeName<VkSemaphore>                                        (void) { return "VkSemaphore";                                          }
9 template<> const char*  getTypeName<VkCommandBuffer>                            (void) { return "VkCommandBuffer";                                      }
10 template<> const char*  getTypeName<VkFence>                                            (void) { return "VkFence";                                                      }
11 template<> const char*  getTypeName<VkDeviceMemory>                                     (void) { return "VkDeviceMemory";                                       }
12 template<> const char*  getTypeName<VkBuffer>                                           (void) { return "VkBuffer";                                                     }
13 template<> const char*  getTypeName<VkImage>                                            (void) { return "VkImage";                                                      }
14 template<> const char*  getTypeName<VkEvent>                                            (void) { return "VkEvent";                                                      }
15 template<> const char*  getTypeName<VkQueryPool>                                        (void) { return "VkQueryPool";                                          }
16 template<> const char*  getTypeName<VkBufferView>                                       (void) { return "VkBufferView";                                         }
17 template<> const char*  getTypeName<VkImageView>                                        (void) { return "VkImageView";                                          }
18 template<> const char*  getTypeName<VkShaderModule>                                     (void) { return "VkShaderModule";                                       }
19 template<> const char*  getTypeName<VkPipelineCache>                            (void) { return "VkPipelineCache";                                      }
20 template<> const char*  getTypeName<VkPipelineLayout>                           (void) { return "VkPipelineLayout";                                     }
21 template<> const char*  getTypeName<VkRenderPass>                                       (void) { return "VkRenderPass";                                         }
22 template<> const char*  getTypeName<VkPipeline>                                         (void) { return "VkPipeline";                                           }
23 template<> const char*  getTypeName<VkDescriptorSetLayout>                      (void) { return "VkDescriptorSetLayout";                        }
24 template<> const char*  getTypeName<VkSampler>                                          (void) { return "VkSampler";                                            }
25 template<> const char*  getTypeName<VkDescriptorPool>                           (void) { return "VkDescriptorPool";                                     }
26 template<> const char*  getTypeName<VkDescriptorSet>                            (void) { return "VkDescriptorSet";                                      }
27 template<> const char*  getTypeName<VkFramebuffer>                                      (void) { return "VkFramebuffer";                                        }
28 template<> const char*  getTypeName<VkCommandPool>                                      (void) { return "VkCommandPool";                                        }
29 template<> const char*  getTypeName<VkSurfaceKHR>                                       (void) { return "VkSurfaceKHR";                                         }
30 template<> const char*  getTypeName<VkSwapchainKHR>                                     (void) { return "VkSwapchainKHR";                                       }
31 template<> const char*  getTypeName<VkDisplayKHR>                                       (void) { return "VkDisplayKHR";                                         }
32 template<> const char*  getTypeName<VkDisplayModeKHR>                           (void) { return "VkDisplayModeKHR";                                     }
33 template<> const char*  getTypeName<VkDebugReportCallbackEXT>           (void) { return "VkDebugReportCallbackEXT";                     }
34 template<> const char*  getTypeName<VkObjectTableNVX>                           (void) { return "VkObjectTableNVX";                                     }
35 template<> const char*  getTypeName<VkIndirectCommandsLayoutNVX>        (void) { return "VkIndirectCommandsLayoutNVX";          }
36 template<> const char*  getTypeName<VkDescriptorUpdateTemplateKHR>      (void) { return "VkDescriptorUpdateTemplateKHR";        }
37
38 namespace pt
39 {
40 std::ostream& operator<< (std::ostream& s, XlibDisplayPtr                               v) { return s << tcu::toHex(v.internal); }
41 std::ostream& operator<< (std::ostream& s, XlibWindow                                   v) { return s << tcu::toHex(v.internal); }
42 std::ostream& operator<< (std::ostream& s, XlibVisualID                                 v) { return s << tcu::toHex(v.internal); }
43 std::ostream& operator<< (std::ostream& s, XcbConnectionPtr                             v) { return s << tcu::toHex(v.internal); }
44 std::ostream& operator<< (std::ostream& s, XcbWindow                                    v) { return s << tcu::toHex(v.internal); }
45 std::ostream& operator<< (std::ostream& s, XcbVisualid                                  v) { return s << tcu::toHex(v.internal); }
46 std::ostream& operator<< (std::ostream& s, WaylandDisplayPtr                    v) { return s << tcu::toHex(v.internal); }
47 std::ostream& operator<< (std::ostream& s, WaylandSurfacePtr                    v) { return s << tcu::toHex(v.internal); }
48 std::ostream& operator<< (std::ostream& s, MirConnectionPtr                             v) { return s << tcu::toHex(v.internal); }
49 std::ostream& operator<< (std::ostream& s, MirSurfacePtr                                v) { return s << tcu::toHex(v.internal); }
50 std::ostream& operator<< (std::ostream& s, AndroidNativeWindowPtr               v) { return s << tcu::toHex(v.internal); }
51 std::ostream& operator<< (std::ostream& s, Win32InstanceHandle                  v) { return s << tcu::toHex(v.internal); }
52 std::ostream& operator<< (std::ostream& s, Win32WindowHandle                    v) { return s << tcu::toHex(v.internal); }
53 std::ostream& operator<< (std::ostream& s, Win32Handle                                  v) { return s << tcu::toHex(v.internal); }
54 std::ostream& operator<< (std::ostream& s, Win32SecurityAttributesPtr   v) { return s << tcu::toHex(v.internal); }
55 }
56
57 const char* getPipelineCacheHeaderVersionName (VkPipelineCacheHeaderVersion value)
58 {
59         switch (value)
60         {
61                 case VK_PIPELINE_CACHE_HEADER_VERSION_ONE:      return "VK_PIPELINE_CACHE_HEADER_VERSION_ONE";
62                 default:                                                                        return DE_NULL;
63         }
64 }
65
66 const char* getResultName (VkResult value)
67 {
68         switch (value)
69         {
70                 case VK_SUCCESS:                                                return "VK_SUCCESS";
71                 case VK_NOT_READY:                                              return "VK_NOT_READY";
72                 case VK_TIMEOUT:                                                return "VK_TIMEOUT";
73                 case VK_EVENT_SET:                                              return "VK_EVENT_SET";
74                 case VK_EVENT_RESET:                                    return "VK_EVENT_RESET";
75                 case VK_INCOMPLETE:                                             return "VK_INCOMPLETE";
76                 case VK_ERROR_OUT_OF_HOST_MEMORY:               return "VK_ERROR_OUT_OF_HOST_MEMORY";
77                 case VK_ERROR_OUT_OF_DEVICE_MEMORY:             return "VK_ERROR_OUT_OF_DEVICE_MEMORY";
78                 case VK_ERROR_INITIALIZATION_FAILED:    return "VK_ERROR_INITIALIZATION_FAILED";
79                 case VK_ERROR_DEVICE_LOST:                              return "VK_ERROR_DEVICE_LOST";
80                 case VK_ERROR_MEMORY_MAP_FAILED:                return "VK_ERROR_MEMORY_MAP_FAILED";
81                 case VK_ERROR_LAYER_NOT_PRESENT:                return "VK_ERROR_LAYER_NOT_PRESENT";
82                 case VK_ERROR_EXTENSION_NOT_PRESENT:    return "VK_ERROR_EXTENSION_NOT_PRESENT";
83                 case VK_ERROR_FEATURE_NOT_PRESENT:              return "VK_ERROR_FEATURE_NOT_PRESENT";
84                 case VK_ERROR_INCOMPATIBLE_DRIVER:              return "VK_ERROR_INCOMPATIBLE_DRIVER";
85                 case VK_ERROR_TOO_MANY_OBJECTS:                 return "VK_ERROR_TOO_MANY_OBJECTS";
86                 case VK_ERROR_FORMAT_NOT_SUPPORTED:             return "VK_ERROR_FORMAT_NOT_SUPPORTED";
87                 case VK_ERROR_FRAGMENTED_POOL:                  return "VK_ERROR_FRAGMENTED_POOL";
88                 case VK_ERROR_SURFACE_LOST_KHR:                 return "VK_ERROR_SURFACE_LOST_KHR";
89                 case VK_ERROR_NATIVE_WINDOW_IN_USE_KHR: return "VK_ERROR_NATIVE_WINDOW_IN_USE_KHR";
90                 case VK_SUBOPTIMAL_KHR:                                 return "VK_SUBOPTIMAL_KHR";
91                 case VK_ERROR_OUT_OF_DATE_KHR:                  return "VK_ERROR_OUT_OF_DATE_KHR";
92                 case VK_ERROR_INCOMPATIBLE_DISPLAY_KHR: return "VK_ERROR_INCOMPATIBLE_DISPLAY_KHR";
93                 case VK_ERROR_VALIDATION_FAILED_EXT:    return "VK_ERROR_VALIDATION_FAILED_EXT";
94                 case VK_ERROR_INVALID_SHADER_NV:                return "VK_ERROR_INVALID_SHADER_NV";
95                 case VK_ERROR_OUT_OF_POOL_MEMORY_KHR:   return "VK_ERROR_OUT_OF_POOL_MEMORY_KHR";
96                 default:                                                                return DE_NULL;
97         }
98 }
99
100 const char* getStructureTypeName (VkStructureType value)
101 {
102         switch (value)
103         {
104                 case VK_STRUCTURE_TYPE_APPLICATION_INFO:                                                                                return "VK_STRUCTURE_TYPE_APPLICATION_INFO";
105                 case VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO:                                                                    return "VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO";
106                 case VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO:                                                                return "VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO";
107                 case VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO:                                                                              return "VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO";
108                 case VK_STRUCTURE_TYPE_SUBMIT_INFO:                                                                                             return "VK_STRUCTURE_TYPE_SUBMIT_INFO";
109                 case VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO:                                                                    return "VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO";
110                 case VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE:                                                                             return "VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE";
111                 case VK_STRUCTURE_TYPE_BIND_SPARSE_INFO:                                                                                return "VK_STRUCTURE_TYPE_BIND_SPARSE_INFO";
112                 case VK_STRUCTURE_TYPE_FENCE_CREATE_INFO:                                                                               return "VK_STRUCTURE_TYPE_FENCE_CREATE_INFO";
113                 case VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO:                                                                   return "VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO";
114                 case VK_STRUCTURE_TYPE_EVENT_CREATE_INFO:                                                                               return "VK_STRUCTURE_TYPE_EVENT_CREATE_INFO";
115                 case VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO:                                                                  return "VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO";
116                 case VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO:                                                                              return "VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO";
117                 case VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO:                                                                 return "VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO";
118                 case VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO:                                                                               return "VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO";
119                 case VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO:                                                                  return "VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO";
120                 case VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO:                                                               return "VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO";
121                 case VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO:                                                              return "VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO";
122                 case VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO:                                               return "VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO";
123                 case VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO:                                 return "VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO";
124                 case VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO:                               return "VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO";
125                 case VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO:                                 return "VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO";
126                 case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO:                                             return "VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO";
127                 case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO:                                return "VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO";
128                 case VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO:                                  return "VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO";
129                 case VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO:                                return "VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO";
130                 case VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO:                                  return "VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO";
131                 case VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO:                                              return "VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO";
132                 case VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO:                                                   return "VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO";
133                 case VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO:                                                    return "VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO";
134                 case VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO:                                                             return "VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO";
135                 case VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO:                                                                             return "VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO";
136                 case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO:                                               return "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO";
137                 case VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO:                                                             return "VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO";
138                 case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO:                                                    return "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO";
139                 case VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET:                                                                    return "VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET";
140                 case VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET:                                                                             return "VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET";
141                 case VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO:                                                                 return "VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO";
142                 case VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO:                                                                 return "VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO";
143                 case VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO:                                                                return "VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO";
144                 case VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO:                                                    return "VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO";
145                 case VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO:                                                 return "VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO";
146                 case VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO:                                                               return "VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO";
147                 case VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO:                                                                  return "VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO";
148                 case VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER:                                                                   return "VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER";
149                 case VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER:                                                                    return "VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER";
150                 case VK_STRUCTURE_TYPE_MEMORY_BARRIER:                                                                                  return "VK_STRUCTURE_TYPE_MEMORY_BARRIER";
151                 case VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO:                                                             return "VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO";
152                 case VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO:                                                               return "VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO";
153                 case VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR:                                                               return "VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR";
154                 case VK_STRUCTURE_TYPE_PRESENT_INFO_KHR:                                                                                return "VK_STRUCTURE_TYPE_PRESENT_INFO_KHR";
155                 case VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR:                                                    return "VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR";
156                 case VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR:                                                 return "VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR";
157                 case VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR:                                                                return "VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR";
158                 case VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR:                                                    return "VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR";
159                 case VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR:                                                             return "VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR";
160                 case VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR:                                                 return "VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR";
161                 case VK_STRUCTURE_TYPE_MIR_SURFACE_CREATE_INFO_KHR:                                                             return "VK_STRUCTURE_TYPE_MIR_SURFACE_CREATE_INFO_KHR";
162                 case VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR:                                                 return "VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR";
163                 case VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR:                                                   return "VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR";
164                 case VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT:                                   return "VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT";
165                 case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD:    return "VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD";
166                 case VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT:                                               return "VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT";
167                 case VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT:                                                return "VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT";
168                 case VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT:                                                    return "VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT";
169                 case VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV:                               return "VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV";
170                 case VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV:                              return "VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV";
171                 case VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV:                    return "VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV";
172                 case VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV:                                    return "VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV";
173                 case VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV:                                                  return "VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV";
174                 case VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV:                                              return "VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV";
175                 case VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV:                                              return "VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV";
176                 case VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV:                               return "VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV";
177                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR:                                                  return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR";
178                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHR:                                                return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHR";
179                 case VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2_KHR:                                                                 return "VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2_KHR";
180                 case VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2_KHR:                                                   return "VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2_KHR";
181                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2_KHR:                                 return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2_KHR";
182                 case VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2_KHR:                                                   return "VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2_KHR";
183                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2_KHR:                                 return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2_KHR";
184                 case VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2_KHR:                                    return "VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2_KHR";
185                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2_KHR:                  return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2_KHR";
186                 case VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT:                                                                    return "VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT";
187                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR:                  return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR";
188                 case VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR:                              return "VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR";
189                 case VK_STRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX:                                                    return "VK_STRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX";
190                 case VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX:                                return "VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX";
191                 case VK_STRUCTURE_TYPE_CMD_PROCESS_COMMANDS_INFO_NVX:                                                   return "VK_STRUCTURE_TYPE_CMD_PROCESS_COMMANDS_INFO_NVX";
192                 case VK_STRUCTURE_TYPE_CMD_RESERVE_SPACE_FOR_COMMANDS_INFO_NVX:                                 return "VK_STRUCTURE_TYPE_CMD_RESERVE_SPACE_FOR_COMMANDS_INFO_NVX";
193                 case VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_LIMITS_NVX:                                    return "VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_LIMITS_NVX";
194                 case VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_FEATURES_NVX:                                  return "VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_FEATURES_NVX";
195                 default:                                                                                                                                                return DE_NULL;
196         }
197 }
198
199 const char* getSystemAllocationScopeName (VkSystemAllocationScope value)
200 {
201         switch (value)
202         {
203                 case VK_SYSTEM_ALLOCATION_SCOPE_COMMAND:        return "VK_SYSTEM_ALLOCATION_SCOPE_COMMAND";
204                 case VK_SYSTEM_ALLOCATION_SCOPE_OBJECT:         return "VK_SYSTEM_ALLOCATION_SCOPE_OBJECT";
205                 case VK_SYSTEM_ALLOCATION_SCOPE_CACHE:          return "VK_SYSTEM_ALLOCATION_SCOPE_CACHE";
206                 case VK_SYSTEM_ALLOCATION_SCOPE_DEVICE:         return "VK_SYSTEM_ALLOCATION_SCOPE_DEVICE";
207                 case VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE:       return "VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE";
208                 default:                                                                        return DE_NULL;
209         }
210 }
211
212 const char* getInternalAllocationTypeName (VkInternalAllocationType value)
213 {
214         switch (value)
215         {
216                 case VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE:    return "VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE";
217                 default:                                                                                return DE_NULL;
218         }
219 }
220
221 const char* getFormatName (VkFormat value)
222 {
223         switch (value)
224         {
225                 case VK_FORMAT_UNDEFINED:                                       return "VK_FORMAT_UNDEFINED";
226                 case VK_FORMAT_R4G4_UNORM_PACK8:                        return "VK_FORMAT_R4G4_UNORM_PACK8";
227                 case VK_FORMAT_R4G4B4A4_UNORM_PACK16:           return "VK_FORMAT_R4G4B4A4_UNORM_PACK16";
228                 case VK_FORMAT_B4G4R4A4_UNORM_PACK16:           return "VK_FORMAT_B4G4R4A4_UNORM_PACK16";
229                 case VK_FORMAT_R5G6B5_UNORM_PACK16:                     return "VK_FORMAT_R5G6B5_UNORM_PACK16";
230                 case VK_FORMAT_B5G6R5_UNORM_PACK16:                     return "VK_FORMAT_B5G6R5_UNORM_PACK16";
231                 case VK_FORMAT_R5G5B5A1_UNORM_PACK16:           return "VK_FORMAT_R5G5B5A1_UNORM_PACK16";
232                 case VK_FORMAT_B5G5R5A1_UNORM_PACK16:           return "VK_FORMAT_B5G5R5A1_UNORM_PACK16";
233                 case VK_FORMAT_A1R5G5B5_UNORM_PACK16:           return "VK_FORMAT_A1R5G5B5_UNORM_PACK16";
234                 case VK_FORMAT_R8_UNORM:                                        return "VK_FORMAT_R8_UNORM";
235                 case VK_FORMAT_R8_SNORM:                                        return "VK_FORMAT_R8_SNORM";
236                 case VK_FORMAT_R8_USCALED:                                      return "VK_FORMAT_R8_USCALED";
237                 case VK_FORMAT_R8_SSCALED:                                      return "VK_FORMAT_R8_SSCALED";
238                 case VK_FORMAT_R8_UINT:                                         return "VK_FORMAT_R8_UINT";
239                 case VK_FORMAT_R8_SINT:                                         return "VK_FORMAT_R8_SINT";
240                 case VK_FORMAT_R8_SRGB:                                         return "VK_FORMAT_R8_SRGB";
241                 case VK_FORMAT_R8G8_UNORM:                                      return "VK_FORMAT_R8G8_UNORM";
242                 case VK_FORMAT_R8G8_SNORM:                                      return "VK_FORMAT_R8G8_SNORM";
243                 case VK_FORMAT_R8G8_USCALED:                            return "VK_FORMAT_R8G8_USCALED";
244                 case VK_FORMAT_R8G8_SSCALED:                            return "VK_FORMAT_R8G8_SSCALED";
245                 case VK_FORMAT_R8G8_UINT:                                       return "VK_FORMAT_R8G8_UINT";
246                 case VK_FORMAT_R8G8_SINT:                                       return "VK_FORMAT_R8G8_SINT";
247                 case VK_FORMAT_R8G8_SRGB:                                       return "VK_FORMAT_R8G8_SRGB";
248                 case VK_FORMAT_R8G8B8_UNORM:                            return "VK_FORMAT_R8G8B8_UNORM";
249                 case VK_FORMAT_R8G8B8_SNORM:                            return "VK_FORMAT_R8G8B8_SNORM";
250                 case VK_FORMAT_R8G8B8_USCALED:                          return "VK_FORMAT_R8G8B8_USCALED";
251                 case VK_FORMAT_R8G8B8_SSCALED:                          return "VK_FORMAT_R8G8B8_SSCALED";
252                 case VK_FORMAT_R8G8B8_UINT:                                     return "VK_FORMAT_R8G8B8_UINT";
253                 case VK_FORMAT_R8G8B8_SINT:                                     return "VK_FORMAT_R8G8B8_SINT";
254                 case VK_FORMAT_R8G8B8_SRGB:                                     return "VK_FORMAT_R8G8B8_SRGB";
255                 case VK_FORMAT_B8G8R8_UNORM:                            return "VK_FORMAT_B8G8R8_UNORM";
256                 case VK_FORMAT_B8G8R8_SNORM:                            return "VK_FORMAT_B8G8R8_SNORM";
257                 case VK_FORMAT_B8G8R8_USCALED:                          return "VK_FORMAT_B8G8R8_USCALED";
258                 case VK_FORMAT_B8G8R8_SSCALED:                          return "VK_FORMAT_B8G8R8_SSCALED";
259                 case VK_FORMAT_B8G8R8_UINT:                                     return "VK_FORMAT_B8G8R8_UINT";
260                 case VK_FORMAT_B8G8R8_SINT:                                     return "VK_FORMAT_B8G8R8_SINT";
261                 case VK_FORMAT_B8G8R8_SRGB:                                     return "VK_FORMAT_B8G8R8_SRGB";
262                 case VK_FORMAT_R8G8B8A8_UNORM:                          return "VK_FORMAT_R8G8B8A8_UNORM";
263                 case VK_FORMAT_R8G8B8A8_SNORM:                          return "VK_FORMAT_R8G8B8A8_SNORM";
264                 case VK_FORMAT_R8G8B8A8_USCALED:                        return "VK_FORMAT_R8G8B8A8_USCALED";
265                 case VK_FORMAT_R8G8B8A8_SSCALED:                        return "VK_FORMAT_R8G8B8A8_SSCALED";
266                 case VK_FORMAT_R8G8B8A8_UINT:                           return "VK_FORMAT_R8G8B8A8_UINT";
267                 case VK_FORMAT_R8G8B8A8_SINT:                           return "VK_FORMAT_R8G8B8A8_SINT";
268                 case VK_FORMAT_R8G8B8A8_SRGB:                           return "VK_FORMAT_R8G8B8A8_SRGB";
269                 case VK_FORMAT_B8G8R8A8_UNORM:                          return "VK_FORMAT_B8G8R8A8_UNORM";
270                 case VK_FORMAT_B8G8R8A8_SNORM:                          return "VK_FORMAT_B8G8R8A8_SNORM";
271                 case VK_FORMAT_B8G8R8A8_USCALED:                        return "VK_FORMAT_B8G8R8A8_USCALED";
272                 case VK_FORMAT_B8G8R8A8_SSCALED:                        return "VK_FORMAT_B8G8R8A8_SSCALED";
273                 case VK_FORMAT_B8G8R8A8_UINT:                           return "VK_FORMAT_B8G8R8A8_UINT";
274                 case VK_FORMAT_B8G8R8A8_SINT:                           return "VK_FORMAT_B8G8R8A8_SINT";
275                 case VK_FORMAT_B8G8R8A8_SRGB:                           return "VK_FORMAT_B8G8R8A8_SRGB";
276                 case VK_FORMAT_A8B8G8R8_UNORM_PACK32:           return "VK_FORMAT_A8B8G8R8_UNORM_PACK32";
277                 case VK_FORMAT_A8B8G8R8_SNORM_PACK32:           return "VK_FORMAT_A8B8G8R8_SNORM_PACK32";
278                 case VK_FORMAT_A8B8G8R8_USCALED_PACK32:         return "VK_FORMAT_A8B8G8R8_USCALED_PACK32";
279                 case VK_FORMAT_A8B8G8R8_SSCALED_PACK32:         return "VK_FORMAT_A8B8G8R8_SSCALED_PACK32";
280                 case VK_FORMAT_A8B8G8R8_UINT_PACK32:            return "VK_FORMAT_A8B8G8R8_UINT_PACK32";
281                 case VK_FORMAT_A8B8G8R8_SINT_PACK32:            return "VK_FORMAT_A8B8G8R8_SINT_PACK32";
282                 case VK_FORMAT_A8B8G8R8_SRGB_PACK32:            return "VK_FORMAT_A8B8G8R8_SRGB_PACK32";
283                 case VK_FORMAT_A2R10G10B10_UNORM_PACK32:        return "VK_FORMAT_A2R10G10B10_UNORM_PACK32";
284                 case VK_FORMAT_A2R10G10B10_SNORM_PACK32:        return "VK_FORMAT_A2R10G10B10_SNORM_PACK32";
285                 case VK_FORMAT_A2R10G10B10_USCALED_PACK32:      return "VK_FORMAT_A2R10G10B10_USCALED_PACK32";
286                 case VK_FORMAT_A2R10G10B10_SSCALED_PACK32:      return "VK_FORMAT_A2R10G10B10_SSCALED_PACK32";
287                 case VK_FORMAT_A2R10G10B10_UINT_PACK32:         return "VK_FORMAT_A2R10G10B10_UINT_PACK32";
288                 case VK_FORMAT_A2R10G10B10_SINT_PACK32:         return "VK_FORMAT_A2R10G10B10_SINT_PACK32";
289                 case VK_FORMAT_A2B10G10R10_UNORM_PACK32:        return "VK_FORMAT_A2B10G10R10_UNORM_PACK32";
290                 case VK_FORMAT_A2B10G10R10_SNORM_PACK32:        return "VK_FORMAT_A2B10G10R10_SNORM_PACK32";
291                 case VK_FORMAT_A2B10G10R10_USCALED_PACK32:      return "VK_FORMAT_A2B10G10R10_USCALED_PACK32";
292                 case VK_FORMAT_A2B10G10R10_SSCALED_PACK32:      return "VK_FORMAT_A2B10G10R10_SSCALED_PACK32";
293                 case VK_FORMAT_A2B10G10R10_UINT_PACK32:         return "VK_FORMAT_A2B10G10R10_UINT_PACK32";
294                 case VK_FORMAT_A2B10G10R10_SINT_PACK32:         return "VK_FORMAT_A2B10G10R10_SINT_PACK32";
295                 case VK_FORMAT_R16_UNORM:                                       return "VK_FORMAT_R16_UNORM";
296                 case VK_FORMAT_R16_SNORM:                                       return "VK_FORMAT_R16_SNORM";
297                 case VK_FORMAT_R16_USCALED:                                     return "VK_FORMAT_R16_USCALED";
298                 case VK_FORMAT_R16_SSCALED:                                     return "VK_FORMAT_R16_SSCALED";
299                 case VK_FORMAT_R16_UINT:                                        return "VK_FORMAT_R16_UINT";
300                 case VK_FORMAT_R16_SINT:                                        return "VK_FORMAT_R16_SINT";
301                 case VK_FORMAT_R16_SFLOAT:                                      return "VK_FORMAT_R16_SFLOAT";
302                 case VK_FORMAT_R16G16_UNORM:                            return "VK_FORMAT_R16G16_UNORM";
303                 case VK_FORMAT_R16G16_SNORM:                            return "VK_FORMAT_R16G16_SNORM";
304                 case VK_FORMAT_R16G16_USCALED:                          return "VK_FORMAT_R16G16_USCALED";
305                 case VK_FORMAT_R16G16_SSCALED:                          return "VK_FORMAT_R16G16_SSCALED";
306                 case VK_FORMAT_R16G16_UINT:                                     return "VK_FORMAT_R16G16_UINT";
307                 case VK_FORMAT_R16G16_SINT:                                     return "VK_FORMAT_R16G16_SINT";
308                 case VK_FORMAT_R16G16_SFLOAT:                           return "VK_FORMAT_R16G16_SFLOAT";
309                 case VK_FORMAT_R16G16B16_UNORM:                         return "VK_FORMAT_R16G16B16_UNORM";
310                 case VK_FORMAT_R16G16B16_SNORM:                         return "VK_FORMAT_R16G16B16_SNORM";
311                 case VK_FORMAT_R16G16B16_USCALED:                       return "VK_FORMAT_R16G16B16_USCALED";
312                 case VK_FORMAT_R16G16B16_SSCALED:                       return "VK_FORMAT_R16G16B16_SSCALED";
313                 case VK_FORMAT_R16G16B16_UINT:                          return "VK_FORMAT_R16G16B16_UINT";
314                 case VK_FORMAT_R16G16B16_SINT:                          return "VK_FORMAT_R16G16B16_SINT";
315                 case VK_FORMAT_R16G16B16_SFLOAT:                        return "VK_FORMAT_R16G16B16_SFLOAT";
316                 case VK_FORMAT_R16G16B16A16_UNORM:                      return "VK_FORMAT_R16G16B16A16_UNORM";
317                 case VK_FORMAT_R16G16B16A16_SNORM:                      return "VK_FORMAT_R16G16B16A16_SNORM";
318                 case VK_FORMAT_R16G16B16A16_USCALED:            return "VK_FORMAT_R16G16B16A16_USCALED";
319                 case VK_FORMAT_R16G16B16A16_SSCALED:            return "VK_FORMAT_R16G16B16A16_SSCALED";
320                 case VK_FORMAT_R16G16B16A16_UINT:                       return "VK_FORMAT_R16G16B16A16_UINT";
321                 case VK_FORMAT_R16G16B16A16_SINT:                       return "VK_FORMAT_R16G16B16A16_SINT";
322                 case VK_FORMAT_R16G16B16A16_SFLOAT:                     return "VK_FORMAT_R16G16B16A16_SFLOAT";
323                 case VK_FORMAT_R32_UINT:                                        return "VK_FORMAT_R32_UINT";
324                 case VK_FORMAT_R32_SINT:                                        return "VK_FORMAT_R32_SINT";
325                 case VK_FORMAT_R32_SFLOAT:                                      return "VK_FORMAT_R32_SFLOAT";
326                 case VK_FORMAT_R32G32_UINT:                                     return "VK_FORMAT_R32G32_UINT";
327                 case VK_FORMAT_R32G32_SINT:                                     return "VK_FORMAT_R32G32_SINT";
328                 case VK_FORMAT_R32G32_SFLOAT:                           return "VK_FORMAT_R32G32_SFLOAT";
329                 case VK_FORMAT_R32G32B32_UINT:                          return "VK_FORMAT_R32G32B32_UINT";
330                 case VK_FORMAT_R32G32B32_SINT:                          return "VK_FORMAT_R32G32B32_SINT";
331                 case VK_FORMAT_R32G32B32_SFLOAT:                        return "VK_FORMAT_R32G32B32_SFLOAT";
332                 case VK_FORMAT_R32G32B32A32_UINT:                       return "VK_FORMAT_R32G32B32A32_UINT";
333                 case VK_FORMAT_R32G32B32A32_SINT:                       return "VK_FORMAT_R32G32B32A32_SINT";
334                 case VK_FORMAT_R32G32B32A32_SFLOAT:                     return "VK_FORMAT_R32G32B32A32_SFLOAT";
335                 case VK_FORMAT_R64_UINT:                                        return "VK_FORMAT_R64_UINT";
336                 case VK_FORMAT_R64_SINT:                                        return "VK_FORMAT_R64_SINT";
337                 case VK_FORMAT_R64_SFLOAT:                                      return "VK_FORMAT_R64_SFLOAT";
338                 case VK_FORMAT_R64G64_UINT:                                     return "VK_FORMAT_R64G64_UINT";
339                 case VK_FORMAT_R64G64_SINT:                                     return "VK_FORMAT_R64G64_SINT";
340                 case VK_FORMAT_R64G64_SFLOAT:                           return "VK_FORMAT_R64G64_SFLOAT";
341                 case VK_FORMAT_R64G64B64_UINT:                          return "VK_FORMAT_R64G64B64_UINT";
342                 case VK_FORMAT_R64G64B64_SINT:                          return "VK_FORMAT_R64G64B64_SINT";
343                 case VK_FORMAT_R64G64B64_SFLOAT:                        return "VK_FORMAT_R64G64B64_SFLOAT";
344                 case VK_FORMAT_R64G64B64A64_UINT:                       return "VK_FORMAT_R64G64B64A64_UINT";
345                 case VK_FORMAT_R64G64B64A64_SINT:                       return "VK_FORMAT_R64G64B64A64_SINT";
346                 case VK_FORMAT_R64G64B64A64_SFLOAT:                     return "VK_FORMAT_R64G64B64A64_SFLOAT";
347                 case VK_FORMAT_B10G11R11_UFLOAT_PACK32:         return "VK_FORMAT_B10G11R11_UFLOAT_PACK32";
348                 case VK_FORMAT_E5B9G9R9_UFLOAT_PACK32:          return "VK_FORMAT_E5B9G9R9_UFLOAT_PACK32";
349                 case VK_FORMAT_D16_UNORM:                                       return "VK_FORMAT_D16_UNORM";
350                 case VK_FORMAT_X8_D24_UNORM_PACK32:                     return "VK_FORMAT_X8_D24_UNORM_PACK32";
351                 case VK_FORMAT_D32_SFLOAT:                                      return "VK_FORMAT_D32_SFLOAT";
352                 case VK_FORMAT_S8_UINT:                                         return "VK_FORMAT_S8_UINT";
353                 case VK_FORMAT_D16_UNORM_S8_UINT:                       return "VK_FORMAT_D16_UNORM_S8_UINT";
354                 case VK_FORMAT_D24_UNORM_S8_UINT:                       return "VK_FORMAT_D24_UNORM_S8_UINT";
355                 case VK_FORMAT_D32_SFLOAT_S8_UINT:                      return "VK_FORMAT_D32_SFLOAT_S8_UINT";
356                 case VK_FORMAT_BC1_RGB_UNORM_BLOCK:                     return "VK_FORMAT_BC1_RGB_UNORM_BLOCK";
357                 case VK_FORMAT_BC1_RGB_SRGB_BLOCK:                      return "VK_FORMAT_BC1_RGB_SRGB_BLOCK";
358                 case VK_FORMAT_BC1_RGBA_UNORM_BLOCK:            return "VK_FORMAT_BC1_RGBA_UNORM_BLOCK";
359                 case VK_FORMAT_BC1_RGBA_SRGB_BLOCK:                     return "VK_FORMAT_BC1_RGBA_SRGB_BLOCK";
360                 case VK_FORMAT_BC2_UNORM_BLOCK:                         return "VK_FORMAT_BC2_UNORM_BLOCK";
361                 case VK_FORMAT_BC2_SRGB_BLOCK:                          return "VK_FORMAT_BC2_SRGB_BLOCK";
362                 case VK_FORMAT_BC3_UNORM_BLOCK:                         return "VK_FORMAT_BC3_UNORM_BLOCK";
363                 case VK_FORMAT_BC3_SRGB_BLOCK:                          return "VK_FORMAT_BC3_SRGB_BLOCK";
364                 case VK_FORMAT_BC4_UNORM_BLOCK:                         return "VK_FORMAT_BC4_UNORM_BLOCK";
365                 case VK_FORMAT_BC4_SNORM_BLOCK:                         return "VK_FORMAT_BC4_SNORM_BLOCK";
366                 case VK_FORMAT_BC5_UNORM_BLOCK:                         return "VK_FORMAT_BC5_UNORM_BLOCK";
367                 case VK_FORMAT_BC5_SNORM_BLOCK:                         return "VK_FORMAT_BC5_SNORM_BLOCK";
368                 case VK_FORMAT_BC6H_UFLOAT_BLOCK:                       return "VK_FORMAT_BC6H_UFLOAT_BLOCK";
369                 case VK_FORMAT_BC6H_SFLOAT_BLOCK:                       return "VK_FORMAT_BC6H_SFLOAT_BLOCK";
370                 case VK_FORMAT_BC7_UNORM_BLOCK:                         return "VK_FORMAT_BC7_UNORM_BLOCK";
371                 case VK_FORMAT_BC7_SRGB_BLOCK:                          return "VK_FORMAT_BC7_SRGB_BLOCK";
372                 case VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK:         return "VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK";
373                 case VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK:          return "VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK";
374                 case VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK:       return "VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK";
375                 case VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK:        return "VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK";
376                 case VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK:       return "VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK";
377                 case VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK:        return "VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK";
378                 case VK_FORMAT_EAC_R11_UNORM_BLOCK:                     return "VK_FORMAT_EAC_R11_UNORM_BLOCK";
379                 case VK_FORMAT_EAC_R11_SNORM_BLOCK:                     return "VK_FORMAT_EAC_R11_SNORM_BLOCK";
380                 case VK_FORMAT_EAC_R11G11_UNORM_BLOCK:          return "VK_FORMAT_EAC_R11G11_UNORM_BLOCK";
381                 case VK_FORMAT_EAC_R11G11_SNORM_BLOCK:          return "VK_FORMAT_EAC_R11G11_SNORM_BLOCK";
382                 case VK_FORMAT_ASTC_4x4_UNORM_BLOCK:            return "VK_FORMAT_ASTC_4x4_UNORM_BLOCK";
383                 case VK_FORMAT_ASTC_4x4_SRGB_BLOCK:                     return "VK_FORMAT_ASTC_4x4_SRGB_BLOCK";
384                 case VK_FORMAT_ASTC_5x4_UNORM_BLOCK:            return "VK_FORMAT_ASTC_5x4_UNORM_BLOCK";
385                 case VK_FORMAT_ASTC_5x4_SRGB_BLOCK:                     return "VK_FORMAT_ASTC_5x4_SRGB_BLOCK";
386                 case VK_FORMAT_ASTC_5x5_UNORM_BLOCK:            return "VK_FORMAT_ASTC_5x5_UNORM_BLOCK";
387                 case VK_FORMAT_ASTC_5x5_SRGB_BLOCK:                     return "VK_FORMAT_ASTC_5x5_SRGB_BLOCK";
388                 case VK_FORMAT_ASTC_6x5_UNORM_BLOCK:            return "VK_FORMAT_ASTC_6x5_UNORM_BLOCK";
389                 case VK_FORMAT_ASTC_6x5_SRGB_BLOCK:                     return "VK_FORMAT_ASTC_6x5_SRGB_BLOCK";
390                 case VK_FORMAT_ASTC_6x6_UNORM_BLOCK:            return "VK_FORMAT_ASTC_6x6_UNORM_BLOCK";
391                 case VK_FORMAT_ASTC_6x6_SRGB_BLOCK:                     return "VK_FORMAT_ASTC_6x6_SRGB_BLOCK";
392                 case VK_FORMAT_ASTC_8x5_UNORM_BLOCK:            return "VK_FORMAT_ASTC_8x5_UNORM_BLOCK";
393                 case VK_FORMAT_ASTC_8x5_SRGB_BLOCK:                     return "VK_FORMAT_ASTC_8x5_SRGB_BLOCK";
394                 case VK_FORMAT_ASTC_8x6_UNORM_BLOCK:            return "VK_FORMAT_ASTC_8x6_UNORM_BLOCK";
395                 case VK_FORMAT_ASTC_8x6_SRGB_BLOCK:                     return "VK_FORMAT_ASTC_8x6_SRGB_BLOCK";
396                 case VK_FORMAT_ASTC_8x8_UNORM_BLOCK:            return "VK_FORMAT_ASTC_8x8_UNORM_BLOCK";
397                 case VK_FORMAT_ASTC_8x8_SRGB_BLOCK:                     return "VK_FORMAT_ASTC_8x8_SRGB_BLOCK";
398                 case VK_FORMAT_ASTC_10x5_UNORM_BLOCK:           return "VK_FORMAT_ASTC_10x5_UNORM_BLOCK";
399                 case VK_FORMAT_ASTC_10x5_SRGB_BLOCK:            return "VK_FORMAT_ASTC_10x5_SRGB_BLOCK";
400                 case VK_FORMAT_ASTC_10x6_UNORM_BLOCK:           return "VK_FORMAT_ASTC_10x6_UNORM_BLOCK";
401                 case VK_FORMAT_ASTC_10x6_SRGB_BLOCK:            return "VK_FORMAT_ASTC_10x6_SRGB_BLOCK";
402                 case VK_FORMAT_ASTC_10x8_UNORM_BLOCK:           return "VK_FORMAT_ASTC_10x8_UNORM_BLOCK";
403                 case VK_FORMAT_ASTC_10x8_SRGB_BLOCK:            return "VK_FORMAT_ASTC_10x8_SRGB_BLOCK";
404                 case VK_FORMAT_ASTC_10x10_UNORM_BLOCK:          return "VK_FORMAT_ASTC_10x10_UNORM_BLOCK";
405                 case VK_FORMAT_ASTC_10x10_SRGB_BLOCK:           return "VK_FORMAT_ASTC_10x10_SRGB_BLOCK";
406                 case VK_FORMAT_ASTC_12x10_UNORM_BLOCK:          return "VK_FORMAT_ASTC_12x10_UNORM_BLOCK";
407                 case VK_FORMAT_ASTC_12x10_SRGB_BLOCK:           return "VK_FORMAT_ASTC_12x10_SRGB_BLOCK";
408                 case VK_FORMAT_ASTC_12x12_UNORM_BLOCK:          return "VK_FORMAT_ASTC_12x12_UNORM_BLOCK";
409                 case VK_FORMAT_ASTC_12x12_SRGB_BLOCK:           return "VK_FORMAT_ASTC_12x12_SRGB_BLOCK";
410                 case VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG:     return "VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG";
411                 case VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG:     return "VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG";
412                 case VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG:     return "VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG";
413                 case VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG:     return "VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG";
414                 case VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG:      return "VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG";
415                 case VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG:      return "VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG";
416                 case VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG:      return "VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG";
417                 case VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG:      return "VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG";
418                 default:                                                                        return DE_NULL;
419         }
420 }
421
422 const char* getImageTypeName (VkImageType value)
423 {
424         switch (value)
425         {
426                 case VK_IMAGE_TYPE_1D:  return "VK_IMAGE_TYPE_1D";
427                 case VK_IMAGE_TYPE_2D:  return "VK_IMAGE_TYPE_2D";
428                 case VK_IMAGE_TYPE_3D:  return "VK_IMAGE_TYPE_3D";
429                 default:                                return DE_NULL;
430         }
431 }
432
433 const char* getImageTilingName (VkImageTiling value)
434 {
435         switch (value)
436         {
437                 case VK_IMAGE_TILING_OPTIMAL:   return "VK_IMAGE_TILING_OPTIMAL";
438                 case VK_IMAGE_TILING_LINEAR:    return "VK_IMAGE_TILING_LINEAR";
439                 default:                                                return DE_NULL;
440         }
441 }
442
443 const char* getPhysicalDeviceTypeName (VkPhysicalDeviceType value)
444 {
445         switch (value)
446         {
447                 case VK_PHYSICAL_DEVICE_TYPE_OTHER:                             return "VK_PHYSICAL_DEVICE_TYPE_OTHER";
448                 case VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU:    return "VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU";
449                 case VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU:              return "VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU";
450                 case VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU:               return "VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU";
451                 case VK_PHYSICAL_DEVICE_TYPE_CPU:                               return "VK_PHYSICAL_DEVICE_TYPE_CPU";
452                 default:                                                                                return DE_NULL;
453         }
454 }
455
456 const char* getQueryTypeName (VkQueryType value)
457 {
458         switch (value)
459         {
460                 case VK_QUERY_TYPE_OCCLUSION:                   return "VK_QUERY_TYPE_OCCLUSION";
461                 case VK_QUERY_TYPE_PIPELINE_STATISTICS: return "VK_QUERY_TYPE_PIPELINE_STATISTICS";
462                 case VK_QUERY_TYPE_TIMESTAMP:                   return "VK_QUERY_TYPE_TIMESTAMP";
463                 default:                                                                return DE_NULL;
464         }
465 }
466
467 const char* getSharingModeName (VkSharingMode value)
468 {
469         switch (value)
470         {
471                 case VK_SHARING_MODE_EXCLUSIVE:         return "VK_SHARING_MODE_EXCLUSIVE";
472                 case VK_SHARING_MODE_CONCURRENT:        return "VK_SHARING_MODE_CONCURRENT";
473                 default:                                                        return DE_NULL;
474         }
475 }
476
477 const char* getImageLayoutName (VkImageLayout value)
478 {
479         switch (value)
480         {
481                 case VK_IMAGE_LAYOUT_UNDEFINED:                                                 return "VK_IMAGE_LAYOUT_UNDEFINED";
482                 case VK_IMAGE_LAYOUT_GENERAL:                                                   return "VK_IMAGE_LAYOUT_GENERAL";
483                 case VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL:                  return "VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL";
484                 case VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL:  return "VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL";
485                 case VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL:   return "VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL";
486                 case VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL:                  return "VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL";
487                 case VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL:                              return "VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL";
488                 case VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL:                              return "VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL";
489                 case VK_IMAGE_LAYOUT_PREINITIALIZED:                                    return "VK_IMAGE_LAYOUT_PREINITIALIZED";
490                 case VK_IMAGE_LAYOUT_PRESENT_SRC_KHR:                                   return "VK_IMAGE_LAYOUT_PRESENT_SRC_KHR";
491                 default:                                                                                                return DE_NULL;
492         }
493 }
494
495 const char* getImageViewTypeName (VkImageViewType value)
496 {
497         switch (value)
498         {
499                 case VK_IMAGE_VIEW_TYPE_1D:                     return "VK_IMAGE_VIEW_TYPE_1D";
500                 case VK_IMAGE_VIEW_TYPE_2D:                     return "VK_IMAGE_VIEW_TYPE_2D";
501                 case VK_IMAGE_VIEW_TYPE_3D:                     return "VK_IMAGE_VIEW_TYPE_3D";
502                 case VK_IMAGE_VIEW_TYPE_CUBE:           return "VK_IMAGE_VIEW_TYPE_CUBE";
503                 case VK_IMAGE_VIEW_TYPE_1D_ARRAY:       return "VK_IMAGE_VIEW_TYPE_1D_ARRAY";
504                 case VK_IMAGE_VIEW_TYPE_2D_ARRAY:       return "VK_IMAGE_VIEW_TYPE_2D_ARRAY";
505                 case VK_IMAGE_VIEW_TYPE_CUBE_ARRAY:     return "VK_IMAGE_VIEW_TYPE_CUBE_ARRAY";
506                 default:                                                        return DE_NULL;
507         }
508 }
509
510 const char* getComponentSwizzleName (VkComponentSwizzle value)
511 {
512         switch (value)
513         {
514                 case VK_COMPONENT_SWIZZLE_IDENTITY:     return "VK_COMPONENT_SWIZZLE_IDENTITY";
515                 case VK_COMPONENT_SWIZZLE_ZERO:         return "VK_COMPONENT_SWIZZLE_ZERO";
516                 case VK_COMPONENT_SWIZZLE_ONE:          return "VK_COMPONENT_SWIZZLE_ONE";
517                 case VK_COMPONENT_SWIZZLE_R:            return "VK_COMPONENT_SWIZZLE_R";
518                 case VK_COMPONENT_SWIZZLE_G:            return "VK_COMPONENT_SWIZZLE_G";
519                 case VK_COMPONENT_SWIZZLE_B:            return "VK_COMPONENT_SWIZZLE_B";
520                 case VK_COMPONENT_SWIZZLE_A:            return "VK_COMPONENT_SWIZZLE_A";
521                 default:                                                        return DE_NULL;
522         }
523 }
524
525 const char* getVertexInputRateName (VkVertexInputRate value)
526 {
527         switch (value)
528         {
529                 case VK_VERTEX_INPUT_RATE_VERTEX:       return "VK_VERTEX_INPUT_RATE_VERTEX";
530                 case VK_VERTEX_INPUT_RATE_INSTANCE:     return "VK_VERTEX_INPUT_RATE_INSTANCE";
531                 default:                                                        return DE_NULL;
532         }
533 }
534
535 const char* getPrimitiveTopologyName (VkPrimitiveTopology value)
536 {
537         switch (value)
538         {
539                 case VK_PRIMITIVE_TOPOLOGY_POINT_LIST:                                          return "VK_PRIMITIVE_TOPOLOGY_POINT_LIST";
540                 case VK_PRIMITIVE_TOPOLOGY_LINE_LIST:                                           return "VK_PRIMITIVE_TOPOLOGY_LINE_LIST";
541                 case VK_PRIMITIVE_TOPOLOGY_LINE_STRIP:                                          return "VK_PRIMITIVE_TOPOLOGY_LINE_STRIP";
542                 case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST:                                       return "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST";
543                 case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP:                                      return "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP";
544                 case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN:                                        return "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN";
545                 case VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY:            return "VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY";
546                 case VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY:           return "VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY";
547                 case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY:        return "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY";
548                 case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY:       return "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY";
549                 case VK_PRIMITIVE_TOPOLOGY_PATCH_LIST:                                          return "VK_PRIMITIVE_TOPOLOGY_PATCH_LIST";
550                 default:                                                                                                        return DE_NULL;
551         }
552 }
553
554 const char* getPolygonModeName (VkPolygonMode value)
555 {
556         switch (value)
557         {
558                 case VK_POLYGON_MODE_FILL:      return "VK_POLYGON_MODE_FILL";
559                 case VK_POLYGON_MODE_LINE:      return "VK_POLYGON_MODE_LINE";
560                 case VK_POLYGON_MODE_POINT:     return "VK_POLYGON_MODE_POINT";
561                 default:                                        return DE_NULL;
562         }
563 }
564
565 const char* getFrontFaceName (VkFrontFace value)
566 {
567         switch (value)
568         {
569                 case VK_FRONT_FACE_COUNTER_CLOCKWISE:   return "VK_FRONT_FACE_COUNTER_CLOCKWISE";
570                 case VK_FRONT_FACE_CLOCKWISE:                   return "VK_FRONT_FACE_CLOCKWISE";
571                 default:                                                                return DE_NULL;
572         }
573 }
574
575 const char* getCompareOpName (VkCompareOp value)
576 {
577         switch (value)
578         {
579                 case VK_COMPARE_OP_NEVER:                               return "VK_COMPARE_OP_NEVER";
580                 case VK_COMPARE_OP_LESS:                                return "VK_COMPARE_OP_LESS";
581                 case VK_COMPARE_OP_EQUAL:                               return "VK_COMPARE_OP_EQUAL";
582                 case VK_COMPARE_OP_LESS_OR_EQUAL:               return "VK_COMPARE_OP_LESS_OR_EQUAL";
583                 case VK_COMPARE_OP_GREATER:                             return "VK_COMPARE_OP_GREATER";
584                 case VK_COMPARE_OP_NOT_EQUAL:                   return "VK_COMPARE_OP_NOT_EQUAL";
585                 case VK_COMPARE_OP_GREATER_OR_EQUAL:    return "VK_COMPARE_OP_GREATER_OR_EQUAL";
586                 case VK_COMPARE_OP_ALWAYS:                              return "VK_COMPARE_OP_ALWAYS";
587                 default:                                                                return DE_NULL;
588         }
589 }
590
591 const char* getStencilOpName (VkStencilOp value)
592 {
593         switch (value)
594         {
595                 case VK_STENCIL_OP_KEEP:                                return "VK_STENCIL_OP_KEEP";
596                 case VK_STENCIL_OP_ZERO:                                return "VK_STENCIL_OP_ZERO";
597                 case VK_STENCIL_OP_REPLACE:                             return "VK_STENCIL_OP_REPLACE";
598                 case VK_STENCIL_OP_INCREMENT_AND_CLAMP: return "VK_STENCIL_OP_INCREMENT_AND_CLAMP";
599                 case VK_STENCIL_OP_DECREMENT_AND_CLAMP: return "VK_STENCIL_OP_DECREMENT_AND_CLAMP";
600                 case VK_STENCIL_OP_INVERT:                              return "VK_STENCIL_OP_INVERT";
601                 case VK_STENCIL_OP_INCREMENT_AND_WRAP:  return "VK_STENCIL_OP_INCREMENT_AND_WRAP";
602                 case VK_STENCIL_OP_DECREMENT_AND_WRAP:  return "VK_STENCIL_OP_DECREMENT_AND_WRAP";
603                 default:                                                                return DE_NULL;
604         }
605 }
606
607 const char* getLogicOpName (VkLogicOp value)
608 {
609         switch (value)
610         {
611                 case VK_LOGIC_OP_CLEAR:                 return "VK_LOGIC_OP_CLEAR";
612                 case VK_LOGIC_OP_AND:                   return "VK_LOGIC_OP_AND";
613                 case VK_LOGIC_OP_AND_REVERSE:   return "VK_LOGIC_OP_AND_REVERSE";
614                 case VK_LOGIC_OP_COPY:                  return "VK_LOGIC_OP_COPY";
615                 case VK_LOGIC_OP_AND_INVERTED:  return "VK_LOGIC_OP_AND_INVERTED";
616                 case VK_LOGIC_OP_NO_OP:                 return "VK_LOGIC_OP_NO_OP";
617                 case VK_LOGIC_OP_XOR:                   return "VK_LOGIC_OP_XOR";
618                 case VK_LOGIC_OP_OR:                    return "VK_LOGIC_OP_OR";
619                 case VK_LOGIC_OP_NOR:                   return "VK_LOGIC_OP_NOR";
620                 case VK_LOGIC_OP_EQUIVALENT:    return "VK_LOGIC_OP_EQUIVALENT";
621                 case VK_LOGIC_OP_INVERT:                return "VK_LOGIC_OP_INVERT";
622                 case VK_LOGIC_OP_OR_REVERSE:    return "VK_LOGIC_OP_OR_REVERSE";
623                 case VK_LOGIC_OP_COPY_INVERTED: return "VK_LOGIC_OP_COPY_INVERTED";
624                 case VK_LOGIC_OP_OR_INVERTED:   return "VK_LOGIC_OP_OR_INVERTED";
625                 case VK_LOGIC_OP_NAND:                  return "VK_LOGIC_OP_NAND";
626                 case VK_LOGIC_OP_SET:                   return "VK_LOGIC_OP_SET";
627                 default:                                                return DE_NULL;
628         }
629 }
630
631 const char* getBlendFactorName (VkBlendFactor value)
632 {
633         switch (value)
634         {
635                 case VK_BLEND_FACTOR_ZERO:                                              return "VK_BLEND_FACTOR_ZERO";
636                 case VK_BLEND_FACTOR_ONE:                                               return "VK_BLEND_FACTOR_ONE";
637                 case VK_BLEND_FACTOR_SRC_COLOR:                                 return "VK_BLEND_FACTOR_SRC_COLOR";
638                 case VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR:               return "VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR";
639                 case VK_BLEND_FACTOR_DST_COLOR:                                 return "VK_BLEND_FACTOR_DST_COLOR";
640                 case VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR:               return "VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR";
641                 case VK_BLEND_FACTOR_SRC_ALPHA:                                 return "VK_BLEND_FACTOR_SRC_ALPHA";
642                 case VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA:               return "VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA";
643                 case VK_BLEND_FACTOR_DST_ALPHA:                                 return "VK_BLEND_FACTOR_DST_ALPHA";
644                 case VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA:               return "VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA";
645                 case VK_BLEND_FACTOR_CONSTANT_COLOR:                    return "VK_BLEND_FACTOR_CONSTANT_COLOR";
646                 case VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR:  return "VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR";
647                 case VK_BLEND_FACTOR_CONSTANT_ALPHA:                    return "VK_BLEND_FACTOR_CONSTANT_ALPHA";
648                 case VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA:  return "VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA";
649                 case VK_BLEND_FACTOR_SRC_ALPHA_SATURATE:                return "VK_BLEND_FACTOR_SRC_ALPHA_SATURATE";
650                 case VK_BLEND_FACTOR_SRC1_COLOR:                                return "VK_BLEND_FACTOR_SRC1_COLOR";
651                 case VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR:              return "VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR";
652                 case VK_BLEND_FACTOR_SRC1_ALPHA:                                return "VK_BLEND_FACTOR_SRC1_ALPHA";
653                 case VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA:              return "VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA";
654                 default:                                                                                return DE_NULL;
655         }
656 }
657
658 const char* getBlendOpName (VkBlendOp value)
659 {
660         switch (value)
661         {
662                 case VK_BLEND_OP_ADD:                           return "VK_BLEND_OP_ADD";
663                 case VK_BLEND_OP_SUBTRACT:                      return "VK_BLEND_OP_SUBTRACT";
664                 case VK_BLEND_OP_REVERSE_SUBTRACT:      return "VK_BLEND_OP_REVERSE_SUBTRACT";
665                 case VK_BLEND_OP_MIN:                           return "VK_BLEND_OP_MIN";
666                 case VK_BLEND_OP_MAX:                           return "VK_BLEND_OP_MAX";
667                 default:                                                        return DE_NULL;
668         }
669 }
670
671 const char* getDynamicStateName (VkDynamicState value)
672 {
673         switch (value)
674         {
675                 case VK_DYNAMIC_STATE_VIEWPORT:                         return "VK_DYNAMIC_STATE_VIEWPORT";
676                 case VK_DYNAMIC_STATE_SCISSOR:                          return "VK_DYNAMIC_STATE_SCISSOR";
677                 case VK_DYNAMIC_STATE_LINE_WIDTH:                       return "VK_DYNAMIC_STATE_LINE_WIDTH";
678                 case VK_DYNAMIC_STATE_DEPTH_BIAS:                       return "VK_DYNAMIC_STATE_DEPTH_BIAS";
679                 case VK_DYNAMIC_STATE_BLEND_CONSTANTS:          return "VK_DYNAMIC_STATE_BLEND_CONSTANTS";
680                 case VK_DYNAMIC_STATE_DEPTH_BOUNDS:                     return "VK_DYNAMIC_STATE_DEPTH_BOUNDS";
681                 case VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK:     return "VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK";
682                 case VK_DYNAMIC_STATE_STENCIL_WRITE_MASK:       return "VK_DYNAMIC_STATE_STENCIL_WRITE_MASK";
683                 case VK_DYNAMIC_STATE_STENCIL_REFERENCE:        return "VK_DYNAMIC_STATE_STENCIL_REFERENCE";
684                 default:                                                                        return DE_NULL;
685         }
686 }
687
688 const char* getFilterName (VkFilter value)
689 {
690         switch (value)
691         {
692                 case VK_FILTER_NEAREST:         return "VK_FILTER_NEAREST";
693                 case VK_FILTER_LINEAR:          return "VK_FILTER_LINEAR";
694                 case VK_FILTER_CUBIC_IMG:       return "VK_FILTER_CUBIC_IMG";
695                 default:                                        return DE_NULL;
696         }
697 }
698
699 const char* getSamplerMipmapModeName (VkSamplerMipmapMode value)
700 {
701         switch (value)
702         {
703                 case VK_SAMPLER_MIPMAP_MODE_NEAREST:    return "VK_SAMPLER_MIPMAP_MODE_NEAREST";
704                 case VK_SAMPLER_MIPMAP_MODE_LINEAR:             return "VK_SAMPLER_MIPMAP_MODE_LINEAR";
705                 default:                                                                return DE_NULL;
706         }
707 }
708
709 const char* getSamplerAddressModeName (VkSamplerAddressMode value)
710 {
711         switch (value)
712         {
713                 case VK_SAMPLER_ADDRESS_MODE_REPEAT:                            return "VK_SAMPLER_ADDRESS_MODE_REPEAT";
714                 case VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT:           return "VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT";
715                 case VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE:                     return "VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE";
716                 case VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER:           return "VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER";
717                 case VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE:      return "VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE";
718                 default:                                                                                        return DE_NULL;
719         }
720 }
721
722 const char* getBorderColorName (VkBorderColor value)
723 {
724         switch (value)
725         {
726                 case VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK:   return "VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK";
727                 case VK_BORDER_COLOR_INT_TRANSPARENT_BLACK:             return "VK_BORDER_COLOR_INT_TRANSPARENT_BLACK";
728                 case VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK:                return "VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK";
729                 case VK_BORDER_COLOR_INT_OPAQUE_BLACK:                  return "VK_BORDER_COLOR_INT_OPAQUE_BLACK";
730                 case VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE:                return "VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE";
731                 case VK_BORDER_COLOR_INT_OPAQUE_WHITE:                  return "VK_BORDER_COLOR_INT_OPAQUE_WHITE";
732                 default:                                                                                return DE_NULL;
733         }
734 }
735
736 const char* getDescriptorTypeName (VkDescriptorType value)
737 {
738         switch (value)
739         {
740                 case VK_DESCRIPTOR_TYPE_SAMPLER:                                return "VK_DESCRIPTOR_TYPE_SAMPLER";
741                 case VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER: return "VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER";
742                 case VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE:                  return "VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE";
743                 case VK_DESCRIPTOR_TYPE_STORAGE_IMAGE:                  return "VK_DESCRIPTOR_TYPE_STORAGE_IMAGE";
744                 case VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER:   return "VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER";
745                 case VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER:   return "VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER";
746                 case VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER:                 return "VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER";
747                 case VK_DESCRIPTOR_TYPE_STORAGE_BUFFER:                 return "VK_DESCRIPTOR_TYPE_STORAGE_BUFFER";
748                 case VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC: return "VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC";
749                 case VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC: return "VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC";
750                 case VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT:               return "VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT";
751                 default:                                                                                return DE_NULL;
752         }
753 }
754
755 const char* getAttachmentLoadOpName (VkAttachmentLoadOp value)
756 {
757         switch (value)
758         {
759                 case VK_ATTACHMENT_LOAD_OP_LOAD:                return "VK_ATTACHMENT_LOAD_OP_LOAD";
760                 case VK_ATTACHMENT_LOAD_OP_CLEAR:               return "VK_ATTACHMENT_LOAD_OP_CLEAR";
761                 case VK_ATTACHMENT_LOAD_OP_DONT_CARE:   return "VK_ATTACHMENT_LOAD_OP_DONT_CARE";
762                 default:                                                                return DE_NULL;
763         }
764 }
765
766 const char* getAttachmentStoreOpName (VkAttachmentStoreOp value)
767 {
768         switch (value)
769         {
770                 case VK_ATTACHMENT_STORE_OP_STORE:              return "VK_ATTACHMENT_STORE_OP_STORE";
771                 case VK_ATTACHMENT_STORE_OP_DONT_CARE:  return "VK_ATTACHMENT_STORE_OP_DONT_CARE";
772                 default:                                                                return DE_NULL;
773         }
774 }
775
776 const char* getPipelineBindPointName (VkPipelineBindPoint value)
777 {
778         switch (value)
779         {
780                 case VK_PIPELINE_BIND_POINT_GRAPHICS:   return "VK_PIPELINE_BIND_POINT_GRAPHICS";
781                 case VK_PIPELINE_BIND_POINT_COMPUTE:    return "VK_PIPELINE_BIND_POINT_COMPUTE";
782                 default:                                                                return DE_NULL;
783         }
784 }
785
786 const char* getCommandBufferLevelName (VkCommandBufferLevel value)
787 {
788         switch (value)
789         {
790                 case VK_COMMAND_BUFFER_LEVEL_PRIMARY:   return "VK_COMMAND_BUFFER_LEVEL_PRIMARY";
791                 case VK_COMMAND_BUFFER_LEVEL_SECONDARY: return "VK_COMMAND_BUFFER_LEVEL_SECONDARY";
792                 default:                                                                return DE_NULL;
793         }
794 }
795
796 const char* getIndexTypeName (VkIndexType value)
797 {
798         switch (value)
799         {
800                 case VK_INDEX_TYPE_UINT16:      return "VK_INDEX_TYPE_UINT16";
801                 case VK_INDEX_TYPE_UINT32:      return "VK_INDEX_TYPE_UINT32";
802                 default:                                        return DE_NULL;
803         }
804 }
805
806 const char* getSubpassContentsName (VkSubpassContents value)
807 {
808         switch (value)
809         {
810                 case VK_SUBPASS_CONTENTS_INLINE:                                        return "VK_SUBPASS_CONTENTS_INLINE";
811                 case VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS:     return "VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS";
812                 default:                                                                                        return DE_NULL;
813         }
814 }
815
816 const char* getColorSpaceKHRName (VkColorSpaceKHR value)
817 {
818         switch (value)
819         {
820                 case VK_COLOR_SPACE_SRGB_NONLINEAR_KHR: return "VK_COLOR_SPACE_SRGB_NONLINEAR_KHR";
821                 default:                                                                return DE_NULL;
822         }
823 }
824
825 const char* getPresentModeKHRName (VkPresentModeKHR value)
826 {
827         switch (value)
828         {
829                 case VK_PRESENT_MODE_IMMEDIATE_KHR:             return "VK_PRESENT_MODE_IMMEDIATE_KHR";
830                 case VK_PRESENT_MODE_MAILBOX_KHR:               return "VK_PRESENT_MODE_MAILBOX_KHR";
831                 case VK_PRESENT_MODE_FIFO_KHR:                  return "VK_PRESENT_MODE_FIFO_KHR";
832                 case VK_PRESENT_MODE_FIFO_RELAXED_KHR:  return "VK_PRESENT_MODE_FIFO_RELAXED_KHR";
833                 default:                                                                return DE_NULL;
834         }
835 }
836
837 const char* getDebugReportObjectTypeEXTName (VkDebugReportObjectTypeEXT value)
838 {
839         switch (value)
840         {
841                 case VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT:                           return "VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT";
842                 case VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT:                          return "VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT";
843                 case VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT:           return "VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT";
844                 case VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT:                            return "VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT";
845                 case VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT:                                     return "VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT";
846                 case VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT:                         return "VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT";
847                 case VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT:            return "VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT";
848                 case VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT:                                     return "VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT";
849                 case VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT:                     return "VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT";
850                 case VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT:                            return "VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT";
851                 case VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT:                                     return "VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT";
852                 case VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT:                                     return "VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT";
853                 case VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT:                        return "VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT";
854                 case VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT:                       return "VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT";
855                 case VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT:                        return "VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT";
856                 case VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT:                     return "VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT";
857                 case VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT:            return "VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT";
858                 case VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT:           return "VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT";
859                 case VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT:                       return "VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT";
860                 case VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT:                          return "VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT";
861                 case VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT:     return "VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT";
862                 case VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT:                           return "VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT";
863                 case VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT:           return "VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT";
864                 case VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT:            return "VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT";
865                 case VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT:                       return "VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT";
866                 case VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT:                      return "VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT";
867                 case VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT:                       return "VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT";
868                 case VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT:                     return "VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT";
869                 case VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_EXT:                      return "VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_EXT";
870                 default:                                                                                                        return DE_NULL;
871         }
872 }
873
874 const char* getDebugReportErrorEXTName (VkDebugReportErrorEXT value)
875 {
876         switch (value)
877         {
878                 case VK_DEBUG_REPORT_ERROR_NONE_EXT:                    return "VK_DEBUG_REPORT_ERROR_NONE_EXT";
879                 case VK_DEBUG_REPORT_ERROR_CALLBACK_REF_EXT:    return "VK_DEBUG_REPORT_ERROR_CALLBACK_REF_EXT";
880                 default:                                                                                return DE_NULL;
881         }
882 }
883
884 const char* getRasterizationOrderAMDName (VkRasterizationOrderAMD value)
885 {
886         switch (value)
887         {
888                 case VK_RASTERIZATION_ORDER_STRICT_AMD:         return "VK_RASTERIZATION_ORDER_STRICT_AMD";
889                 case VK_RASTERIZATION_ORDER_RELAXED_AMD:        return "VK_RASTERIZATION_ORDER_RELAXED_AMD";
890                 default:                                                                        return DE_NULL;
891         }
892 }
893
894 const char* getValidationCheckEXTName (VkValidationCheckEXT value)
895 {
896         switch (value)
897         {
898                 case VK_VALIDATION_CHECK_ALL_EXT:       return "VK_VALIDATION_CHECK_ALL_EXT";
899                 default:                                                        return DE_NULL;
900         }
901 }
902
903 const char* getIndirectCommandsTokenTypeNVXName (VkIndirectCommandsTokenTypeNVX value)
904 {
905         switch (value)
906         {
907                 case VK_INDIRECT_COMMANDS_TOKEN_PIPELINE_NVX:           return "VK_INDIRECT_COMMANDS_TOKEN_PIPELINE_NVX";
908                 case VK_INDIRECT_COMMANDS_TOKEN_DESCRIPTOR_SET_NVX:     return "VK_INDIRECT_COMMANDS_TOKEN_DESCRIPTOR_SET_NVX";
909                 case VK_INDIRECT_COMMANDS_TOKEN_INDEX_BUFFER_NVX:       return "VK_INDIRECT_COMMANDS_TOKEN_INDEX_BUFFER_NVX";
910                 case VK_INDIRECT_COMMANDS_TOKEN_VERTEX_BUFFER_NVX:      return "VK_INDIRECT_COMMANDS_TOKEN_VERTEX_BUFFER_NVX";
911                 case VK_INDIRECT_COMMANDS_TOKEN_PUSH_CONSTANT_NVX:      return "VK_INDIRECT_COMMANDS_TOKEN_PUSH_CONSTANT_NVX";
912                 case VK_INDIRECT_COMMANDS_TOKEN_DRAW_INDEXED_NVX:       return "VK_INDIRECT_COMMANDS_TOKEN_DRAW_INDEXED_NVX";
913                 case VK_INDIRECT_COMMANDS_TOKEN_DRAW_NVX:                       return "VK_INDIRECT_COMMANDS_TOKEN_DRAW_NVX";
914                 case VK_INDIRECT_COMMANDS_TOKEN_DISPATCH_NVX:           return "VK_INDIRECT_COMMANDS_TOKEN_DISPATCH_NVX";
915                 default:                                                                                        return DE_NULL;
916         }
917 }
918
919 const char* getObjectEntryTypeNVXName (VkObjectEntryTypeNVX value)
920 {
921         switch (value)
922         {
923                 case VK_OBJECT_ENTRY_DESCRIPTOR_SET_NVX:        return "VK_OBJECT_ENTRY_DESCRIPTOR_SET_NVX";
924                 case VK_OBJECT_ENTRY_PIPELINE_NVX:                      return "VK_OBJECT_ENTRY_PIPELINE_NVX";
925                 case VK_OBJECT_ENTRY_INDEX_BUFFER_NVX:          return "VK_OBJECT_ENTRY_INDEX_BUFFER_NVX";
926                 case VK_OBJECT_ENTRY_VERTEX_BUFFER_NVX:         return "VK_OBJECT_ENTRY_VERTEX_BUFFER_NVX";
927                 case VK_OBJECT_ENTRY_PUSH_CONSTANT_NVX:         return "VK_OBJECT_ENTRY_PUSH_CONSTANT_NVX";
928                 default:                                                                        return DE_NULL;
929         }
930 }
931
932 const char* getDescriptorUpdateTemplateTypeKHRName (VkDescriptorUpdateTemplateTypeKHR value)
933 {
934         switch (value)
935         {
936                 case VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET_KHR:             return "VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET_KHR";
937                 case VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR:   return "VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR";
938                 default:                                                                                                                return DE_NULL;
939         }
940 }
941
942 tcu::Format::Bitfield<32> getFormatFeatureFlagsStr (VkFormatFeatureFlags value)
943 {
944         static const tcu::Format::BitDesc s_desc[] =
945         {
946                 tcu::Format::BitDesc(VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT,                                       "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT"),
947                 tcu::Format::BitDesc(VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT,                                       "VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT"),
948                 tcu::Format::BitDesc(VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT,                        "VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT"),
949                 tcu::Format::BitDesc(VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT,                        "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT"),
950                 tcu::Format::BitDesc(VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT,                        "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT"),
951                 tcu::Format::BitDesc(VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT,         "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT"),
952                 tcu::Format::BitDesc(VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT,                                       "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT"),
953                 tcu::Format::BitDesc(VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT,                            "VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT"),
954                 tcu::Format::BitDesc(VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT,                      "VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT"),
955                 tcu::Format::BitDesc(VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT,            "VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT"),
956                 tcu::Format::BitDesc(VK_FORMAT_FEATURE_BLIT_SRC_BIT,                                            "VK_FORMAT_FEATURE_BLIT_SRC_BIT"),
957                 tcu::Format::BitDesc(VK_FORMAT_FEATURE_BLIT_DST_BIT,                                            "VK_FORMAT_FEATURE_BLIT_DST_BIT"),
958                 tcu::Format::BitDesc(VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT,         "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT"),
959                 tcu::Format::BitDesc(VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG,      "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG"),
960                 tcu::Format::BitDesc(VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR,                            "VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR"),
961                 tcu::Format::BitDesc(VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR,                            "VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR"),
962         };
963         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
964 }
965
966 tcu::Format::Bitfield<32> getImageUsageFlagsStr (VkImageUsageFlags value)
967 {
968         static const tcu::Format::BitDesc s_desc[] =
969         {
970                 tcu::Format::BitDesc(VK_IMAGE_USAGE_TRANSFER_SRC_BIT,                           "VK_IMAGE_USAGE_TRANSFER_SRC_BIT"),
971                 tcu::Format::BitDesc(VK_IMAGE_USAGE_TRANSFER_DST_BIT,                           "VK_IMAGE_USAGE_TRANSFER_DST_BIT"),
972                 tcu::Format::BitDesc(VK_IMAGE_USAGE_SAMPLED_BIT,                                        "VK_IMAGE_USAGE_SAMPLED_BIT"),
973                 tcu::Format::BitDesc(VK_IMAGE_USAGE_STORAGE_BIT,                                        "VK_IMAGE_USAGE_STORAGE_BIT"),
974                 tcu::Format::BitDesc(VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT,                       "VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT"),
975                 tcu::Format::BitDesc(VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT,       "VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT"),
976                 tcu::Format::BitDesc(VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT,           "VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT"),
977                 tcu::Format::BitDesc(VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT,                       "VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT"),
978         };
979         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
980 }
981
982 tcu::Format::Bitfield<32> getImageCreateFlagsStr (VkImageCreateFlags value)
983 {
984         static const tcu::Format::BitDesc s_desc[] =
985         {
986                 tcu::Format::BitDesc(VK_IMAGE_CREATE_SPARSE_BINDING_BIT,                        "VK_IMAGE_CREATE_SPARSE_BINDING_BIT"),
987                 tcu::Format::BitDesc(VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT,                      "VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT"),
988                 tcu::Format::BitDesc(VK_IMAGE_CREATE_SPARSE_ALIASED_BIT,                        "VK_IMAGE_CREATE_SPARSE_ALIASED_BIT"),
989                 tcu::Format::BitDesc(VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT,                        "VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT"),
990                 tcu::Format::BitDesc(VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT,                       "VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT"),
991                 tcu::Format::BitDesc(VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT_KHR,       "VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT_KHR"),
992         };
993         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
994 }
995
996 tcu::Format::Bitfield<32> getSampleCountFlagsStr (VkSampleCountFlags value)
997 {
998         static const tcu::Format::BitDesc s_desc[] =
999         {
1000                 tcu::Format::BitDesc(VK_SAMPLE_COUNT_1_BIT,             "VK_SAMPLE_COUNT_1_BIT"),
1001                 tcu::Format::BitDesc(VK_SAMPLE_COUNT_2_BIT,             "VK_SAMPLE_COUNT_2_BIT"),
1002                 tcu::Format::BitDesc(VK_SAMPLE_COUNT_4_BIT,             "VK_SAMPLE_COUNT_4_BIT"),
1003                 tcu::Format::BitDesc(VK_SAMPLE_COUNT_8_BIT,             "VK_SAMPLE_COUNT_8_BIT"),
1004                 tcu::Format::BitDesc(VK_SAMPLE_COUNT_16_BIT,    "VK_SAMPLE_COUNT_16_BIT"),
1005                 tcu::Format::BitDesc(VK_SAMPLE_COUNT_32_BIT,    "VK_SAMPLE_COUNT_32_BIT"),
1006                 tcu::Format::BitDesc(VK_SAMPLE_COUNT_64_BIT,    "VK_SAMPLE_COUNT_64_BIT"),
1007         };
1008         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1009 }
1010
1011 tcu::Format::Bitfield<32> getQueueFlagsStr (VkQueueFlags value)
1012 {
1013         static const tcu::Format::BitDesc s_desc[] =
1014         {
1015                 tcu::Format::BitDesc(VK_QUEUE_GRAPHICS_BIT,                     "VK_QUEUE_GRAPHICS_BIT"),
1016                 tcu::Format::BitDesc(VK_QUEUE_COMPUTE_BIT,                      "VK_QUEUE_COMPUTE_BIT"),
1017                 tcu::Format::BitDesc(VK_QUEUE_TRANSFER_BIT,                     "VK_QUEUE_TRANSFER_BIT"),
1018                 tcu::Format::BitDesc(VK_QUEUE_SPARSE_BINDING_BIT,       "VK_QUEUE_SPARSE_BINDING_BIT"),
1019         };
1020         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1021 }
1022
1023 tcu::Format::Bitfield<32> getMemoryPropertyFlagsStr (VkMemoryPropertyFlags value)
1024 {
1025         static const tcu::Format::BitDesc s_desc[] =
1026         {
1027                 tcu::Format::BitDesc(VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT,               "VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT"),
1028                 tcu::Format::BitDesc(VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT,               "VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT"),
1029                 tcu::Format::BitDesc(VK_MEMORY_PROPERTY_HOST_COHERENT_BIT,              "VK_MEMORY_PROPERTY_HOST_COHERENT_BIT"),
1030                 tcu::Format::BitDesc(VK_MEMORY_PROPERTY_HOST_CACHED_BIT,                "VK_MEMORY_PROPERTY_HOST_CACHED_BIT"),
1031                 tcu::Format::BitDesc(VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT,   "VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT"),
1032         };
1033         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1034 }
1035
1036 tcu::Format::Bitfield<32> getMemoryHeapFlagsStr (VkMemoryHeapFlags value)
1037 {
1038         static const tcu::Format::BitDesc s_desc[] =
1039         {
1040                 tcu::Format::BitDesc(VK_MEMORY_HEAP_DEVICE_LOCAL_BIT,   "VK_MEMORY_HEAP_DEVICE_LOCAL_BIT"),
1041         };
1042         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1043 }
1044
1045 tcu::Format::Bitfield<32> getPipelineStageFlagsStr (VkPipelineStageFlags value)
1046 {
1047         static const tcu::Format::BitDesc s_desc[] =
1048         {
1049                 tcu::Format::BitDesc(VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,                                         "VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT"),
1050                 tcu::Format::BitDesc(VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT,                                       "VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT"),
1051                 tcu::Format::BitDesc(VK_PIPELINE_STAGE_VERTEX_INPUT_BIT,                                        "VK_PIPELINE_STAGE_VERTEX_INPUT_BIT"),
1052                 tcu::Format::BitDesc(VK_PIPELINE_STAGE_VERTEX_SHADER_BIT,                                       "VK_PIPELINE_STAGE_VERTEX_SHADER_BIT"),
1053                 tcu::Format::BitDesc(VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT,         "VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT"),
1054                 tcu::Format::BitDesc(VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT,      "VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT"),
1055                 tcu::Format::BitDesc(VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT,                                     "VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT"),
1056                 tcu::Format::BitDesc(VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT,                                     "VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT"),
1057                 tcu::Format::BitDesc(VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT,                        "VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT"),
1058                 tcu::Format::BitDesc(VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT,                         "VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT"),
1059                 tcu::Format::BitDesc(VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT,                     "VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT"),
1060                 tcu::Format::BitDesc(VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT,                                      "VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT"),
1061                 tcu::Format::BitDesc(VK_PIPELINE_STAGE_TRANSFER_BIT,                                            "VK_PIPELINE_STAGE_TRANSFER_BIT"),
1062                 tcu::Format::BitDesc(VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT,                                      "VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT"),
1063                 tcu::Format::BitDesc(VK_PIPELINE_STAGE_HOST_BIT,                                                        "VK_PIPELINE_STAGE_HOST_BIT"),
1064                 tcu::Format::BitDesc(VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT,                                        "VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT"),
1065                 tcu::Format::BitDesc(VK_PIPELINE_STAGE_ALL_COMMANDS_BIT,                                        "VK_PIPELINE_STAGE_ALL_COMMANDS_BIT"),
1066                 tcu::Format::BitDesc(VK_PIPELINE_STAGE_COMMAND_PROCESS_BIT_NVX,                         "VK_PIPELINE_STAGE_COMMAND_PROCESS_BIT_NVX"),
1067         };
1068         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1069 }
1070
1071 tcu::Format::Bitfield<32> getImageAspectFlagsStr (VkImageAspectFlags value)
1072 {
1073         static const tcu::Format::BitDesc s_desc[] =
1074         {
1075                 tcu::Format::BitDesc(VK_IMAGE_ASPECT_COLOR_BIT,         "VK_IMAGE_ASPECT_COLOR_BIT"),
1076                 tcu::Format::BitDesc(VK_IMAGE_ASPECT_DEPTH_BIT,         "VK_IMAGE_ASPECT_DEPTH_BIT"),
1077                 tcu::Format::BitDesc(VK_IMAGE_ASPECT_STENCIL_BIT,       "VK_IMAGE_ASPECT_STENCIL_BIT"),
1078                 tcu::Format::BitDesc(VK_IMAGE_ASPECT_METADATA_BIT,      "VK_IMAGE_ASPECT_METADATA_BIT"),
1079         };
1080         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1081 }
1082
1083 tcu::Format::Bitfield<32> getSparseImageFormatFlagsStr (VkSparseImageFormatFlags value)
1084 {
1085         static const tcu::Format::BitDesc s_desc[] =
1086         {
1087                 tcu::Format::BitDesc(VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT,                 "VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT"),
1088                 tcu::Format::BitDesc(VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT,               "VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT"),
1089                 tcu::Format::BitDesc(VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT, "VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT"),
1090         };
1091         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1092 }
1093
1094 tcu::Format::Bitfield<32> getSparseMemoryBindFlagsStr (VkSparseMemoryBindFlags value)
1095 {
1096         static const tcu::Format::BitDesc s_desc[] =
1097         {
1098                 tcu::Format::BitDesc(VK_SPARSE_MEMORY_BIND_METADATA_BIT,        "VK_SPARSE_MEMORY_BIND_METADATA_BIT"),
1099         };
1100         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1101 }
1102
1103 tcu::Format::Bitfield<32> getFenceCreateFlagsStr (VkFenceCreateFlags value)
1104 {
1105         static const tcu::Format::BitDesc s_desc[] =
1106         {
1107                 tcu::Format::BitDesc(VK_FENCE_CREATE_SIGNALED_BIT,      "VK_FENCE_CREATE_SIGNALED_BIT"),
1108         };
1109         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1110 }
1111
1112 tcu::Format::Bitfield<32> getQueryPipelineStatisticFlagsStr (VkQueryPipelineStatisticFlags value)
1113 {
1114         static const tcu::Format::BitDesc s_desc[] =
1115         {
1116                 tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT,                                           "VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT"),
1117                 tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT,                                         "VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT"),
1118                 tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT,                                         "VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT"),
1119                 tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT,                                       "VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT"),
1120                 tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT,                                        "VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT"),
1121                 tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT,                                                      "VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT"),
1122                 tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT,                                                       "VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT"),
1123                 tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT,                                       "VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT"),
1124                 tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT,                       "VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT"),
1125                 tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT,        "VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT"),
1126                 tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT,                                        "VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT"),
1127         };
1128         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1129 }
1130
1131 tcu::Format::Bitfield<32> getQueryResultFlagsStr (VkQueryResultFlags value)
1132 {
1133         static const tcu::Format::BitDesc s_desc[] =
1134         {
1135                 tcu::Format::BitDesc(VK_QUERY_RESULT_64_BIT,                            "VK_QUERY_RESULT_64_BIT"),
1136                 tcu::Format::BitDesc(VK_QUERY_RESULT_WAIT_BIT,                          "VK_QUERY_RESULT_WAIT_BIT"),
1137                 tcu::Format::BitDesc(VK_QUERY_RESULT_WITH_AVAILABILITY_BIT,     "VK_QUERY_RESULT_WITH_AVAILABILITY_BIT"),
1138                 tcu::Format::BitDesc(VK_QUERY_RESULT_PARTIAL_BIT,                       "VK_QUERY_RESULT_PARTIAL_BIT"),
1139         };
1140         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1141 }
1142
1143 tcu::Format::Bitfield<32> getBufferCreateFlagsStr (VkBufferCreateFlags value)
1144 {
1145         static const tcu::Format::BitDesc s_desc[] =
1146         {
1147                 tcu::Format::BitDesc(VK_BUFFER_CREATE_SPARSE_BINDING_BIT,       "VK_BUFFER_CREATE_SPARSE_BINDING_BIT"),
1148                 tcu::Format::BitDesc(VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT,     "VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT"),
1149                 tcu::Format::BitDesc(VK_BUFFER_CREATE_SPARSE_ALIASED_BIT,       "VK_BUFFER_CREATE_SPARSE_ALIASED_BIT"),
1150         };
1151         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1152 }
1153
1154 tcu::Format::Bitfield<32> getBufferUsageFlagsStr (VkBufferUsageFlags value)
1155 {
1156         static const tcu::Format::BitDesc s_desc[] =
1157         {
1158                 tcu::Format::BitDesc(VK_BUFFER_USAGE_TRANSFER_SRC_BIT,                  "VK_BUFFER_USAGE_TRANSFER_SRC_BIT"),
1159                 tcu::Format::BitDesc(VK_BUFFER_USAGE_TRANSFER_DST_BIT,                  "VK_BUFFER_USAGE_TRANSFER_DST_BIT"),
1160                 tcu::Format::BitDesc(VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT,  "VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT"),
1161                 tcu::Format::BitDesc(VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT,  "VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT"),
1162                 tcu::Format::BitDesc(VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT,                "VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT"),
1163                 tcu::Format::BitDesc(VK_BUFFER_USAGE_STORAGE_BUFFER_BIT,                "VK_BUFFER_USAGE_STORAGE_BUFFER_BIT"),
1164                 tcu::Format::BitDesc(VK_BUFFER_USAGE_INDEX_BUFFER_BIT,                  "VK_BUFFER_USAGE_INDEX_BUFFER_BIT"),
1165                 tcu::Format::BitDesc(VK_BUFFER_USAGE_VERTEX_BUFFER_BIT,                 "VK_BUFFER_USAGE_VERTEX_BUFFER_BIT"),
1166                 tcu::Format::BitDesc(VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT,               "VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT"),
1167         };
1168         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1169 }
1170
1171 tcu::Format::Bitfield<32> getPipelineCreateFlagsStr (VkPipelineCreateFlags value)
1172 {
1173         static const tcu::Format::BitDesc s_desc[] =
1174         {
1175                 tcu::Format::BitDesc(VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT,       "VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT"),
1176                 tcu::Format::BitDesc(VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT,          "VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT"),
1177                 tcu::Format::BitDesc(VK_PIPELINE_CREATE_DERIVATIVE_BIT,                         "VK_PIPELINE_CREATE_DERIVATIVE_BIT"),
1178         };
1179         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1180 }
1181
1182 tcu::Format::Bitfield<32> getShaderStageFlagsStr (VkShaderStageFlags value)
1183 {
1184         static const tcu::Format::BitDesc s_desc[] =
1185         {
1186                 tcu::Format::BitDesc(VK_SHADER_STAGE_VERTEX_BIT,                                        "VK_SHADER_STAGE_VERTEX_BIT"),
1187                 tcu::Format::BitDesc(VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT,          "VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT"),
1188                 tcu::Format::BitDesc(VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT,       "VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT"),
1189                 tcu::Format::BitDesc(VK_SHADER_STAGE_GEOMETRY_BIT,                                      "VK_SHADER_STAGE_GEOMETRY_BIT"),
1190                 tcu::Format::BitDesc(VK_SHADER_STAGE_FRAGMENT_BIT,                                      "VK_SHADER_STAGE_FRAGMENT_BIT"),
1191                 tcu::Format::BitDesc(VK_SHADER_STAGE_COMPUTE_BIT,                                       "VK_SHADER_STAGE_COMPUTE_BIT"),
1192                 tcu::Format::BitDesc(VK_SHADER_STAGE_ALL_GRAPHICS,                                      "VK_SHADER_STAGE_ALL_GRAPHICS"),
1193                 tcu::Format::BitDesc(VK_SHADER_STAGE_ALL,                                                       "VK_SHADER_STAGE_ALL"),
1194         };
1195         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1196 }
1197
1198 tcu::Format::Bitfield<32> getCullModeFlagsStr (VkCullModeFlags value)
1199 {
1200         static const tcu::Format::BitDesc s_desc[] =
1201         {
1202                 tcu::Format::BitDesc(VK_CULL_MODE_NONE,                         "VK_CULL_MODE_NONE"),
1203                 tcu::Format::BitDesc(VK_CULL_MODE_FRONT_BIT,            "VK_CULL_MODE_FRONT_BIT"),
1204                 tcu::Format::BitDesc(VK_CULL_MODE_BACK_BIT,                     "VK_CULL_MODE_BACK_BIT"),
1205                 tcu::Format::BitDesc(VK_CULL_MODE_FRONT_AND_BACK,       "VK_CULL_MODE_FRONT_AND_BACK"),
1206         };
1207         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1208 }
1209
1210 tcu::Format::Bitfield<32> getColorComponentFlagsStr (VkColorComponentFlags value)
1211 {
1212         static const tcu::Format::BitDesc s_desc[] =
1213         {
1214                 tcu::Format::BitDesc(VK_COLOR_COMPONENT_R_BIT,  "VK_COLOR_COMPONENT_R_BIT"),
1215                 tcu::Format::BitDesc(VK_COLOR_COMPONENT_G_BIT,  "VK_COLOR_COMPONENT_G_BIT"),
1216                 tcu::Format::BitDesc(VK_COLOR_COMPONENT_B_BIT,  "VK_COLOR_COMPONENT_B_BIT"),
1217                 tcu::Format::BitDesc(VK_COLOR_COMPONENT_A_BIT,  "VK_COLOR_COMPONENT_A_BIT"),
1218         };
1219         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1220 }
1221
1222 tcu::Format::Bitfield<32> getDescriptorSetLayoutCreateFlagsStr (VkDescriptorSetLayoutCreateFlags value)
1223 {
1224         static const tcu::Format::BitDesc s_desc[] =
1225         {
1226                 tcu::Format::BitDesc(VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR,   "VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR"),
1227         };
1228         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1229 }
1230
1231 tcu::Format::Bitfield<32> getDescriptorPoolCreateFlagsStr (VkDescriptorPoolCreateFlags value)
1232 {
1233         static const tcu::Format::BitDesc s_desc[] =
1234         {
1235                 tcu::Format::BitDesc(VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT, "VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT"),
1236         };
1237         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1238 }
1239
1240 tcu::Format::Bitfield<32> getAttachmentDescriptionFlagsStr (VkAttachmentDescriptionFlags value)
1241 {
1242         static const tcu::Format::BitDesc s_desc[] =
1243         {
1244                 tcu::Format::BitDesc(VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT,   "VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT"),
1245         };
1246         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1247 }
1248
1249 tcu::Format::Bitfield<32> getAccessFlagsStr (VkAccessFlags value)
1250 {
1251         static const tcu::Format::BitDesc s_desc[] =
1252         {
1253                 tcu::Format::BitDesc(VK_ACCESS_INDIRECT_COMMAND_READ_BIT,                       "VK_ACCESS_INDIRECT_COMMAND_READ_BIT"),
1254                 tcu::Format::BitDesc(VK_ACCESS_INDEX_READ_BIT,                                          "VK_ACCESS_INDEX_READ_BIT"),
1255                 tcu::Format::BitDesc(VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT,                       "VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT"),
1256                 tcu::Format::BitDesc(VK_ACCESS_UNIFORM_READ_BIT,                                        "VK_ACCESS_UNIFORM_READ_BIT"),
1257                 tcu::Format::BitDesc(VK_ACCESS_INPUT_ATTACHMENT_READ_BIT,                       "VK_ACCESS_INPUT_ATTACHMENT_READ_BIT"),
1258                 tcu::Format::BitDesc(VK_ACCESS_SHADER_READ_BIT,                                         "VK_ACCESS_SHADER_READ_BIT"),
1259                 tcu::Format::BitDesc(VK_ACCESS_SHADER_WRITE_BIT,                                        "VK_ACCESS_SHADER_WRITE_BIT"),
1260                 tcu::Format::BitDesc(VK_ACCESS_COLOR_ATTACHMENT_READ_BIT,                       "VK_ACCESS_COLOR_ATTACHMENT_READ_BIT"),
1261                 tcu::Format::BitDesc(VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT,                      "VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT"),
1262                 tcu::Format::BitDesc(VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT,       "VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT"),
1263                 tcu::Format::BitDesc(VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT,      "VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT"),
1264                 tcu::Format::BitDesc(VK_ACCESS_TRANSFER_READ_BIT,                                       "VK_ACCESS_TRANSFER_READ_BIT"),
1265                 tcu::Format::BitDesc(VK_ACCESS_TRANSFER_WRITE_BIT,                                      "VK_ACCESS_TRANSFER_WRITE_BIT"),
1266                 tcu::Format::BitDesc(VK_ACCESS_HOST_READ_BIT,                                           "VK_ACCESS_HOST_READ_BIT"),
1267                 tcu::Format::BitDesc(VK_ACCESS_HOST_WRITE_BIT,                                          "VK_ACCESS_HOST_WRITE_BIT"),
1268                 tcu::Format::BitDesc(VK_ACCESS_MEMORY_READ_BIT,                                         "VK_ACCESS_MEMORY_READ_BIT"),
1269                 tcu::Format::BitDesc(VK_ACCESS_MEMORY_WRITE_BIT,                                        "VK_ACCESS_MEMORY_WRITE_BIT"),
1270         };
1271         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1272 }
1273
1274 tcu::Format::Bitfield<32> getDependencyFlagsStr (VkDependencyFlags value)
1275 {
1276         static const tcu::Format::BitDesc s_desc[] =
1277         {
1278                 tcu::Format::BitDesc(VK_DEPENDENCY_BY_REGION_BIT,       "VK_DEPENDENCY_BY_REGION_BIT"),
1279         };
1280         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1281 }
1282
1283 tcu::Format::Bitfield<32> getCommandPoolCreateFlagsStr (VkCommandPoolCreateFlags value)
1284 {
1285         static const tcu::Format::BitDesc s_desc[] =
1286         {
1287                 tcu::Format::BitDesc(VK_COMMAND_POOL_CREATE_TRANSIENT_BIT,                              "VK_COMMAND_POOL_CREATE_TRANSIENT_BIT"),
1288                 tcu::Format::BitDesc(VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT,   "VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT"),
1289         };
1290         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1291 }
1292
1293 tcu::Format::Bitfield<32> getCommandPoolResetFlagsStr (VkCommandPoolResetFlags value)
1294 {
1295         static const tcu::Format::BitDesc s_desc[] =
1296         {
1297                 tcu::Format::BitDesc(VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT,       "VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT"),
1298         };
1299         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1300 }
1301
1302 tcu::Format::Bitfield<32> getCommandBufferUsageFlagsStr (VkCommandBufferUsageFlags value)
1303 {
1304         static const tcu::Format::BitDesc s_desc[] =
1305         {
1306                 tcu::Format::BitDesc(VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT,               "VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT"),
1307                 tcu::Format::BitDesc(VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT,  "VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT"),
1308                 tcu::Format::BitDesc(VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT,              "VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT"),
1309         };
1310         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1311 }
1312
1313 tcu::Format::Bitfield<32> getQueryControlFlagsStr (VkQueryControlFlags value)
1314 {
1315         static const tcu::Format::BitDesc s_desc[] =
1316         {
1317                 tcu::Format::BitDesc(VK_QUERY_CONTROL_PRECISE_BIT,      "VK_QUERY_CONTROL_PRECISE_BIT"),
1318         };
1319         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1320 }
1321
1322 tcu::Format::Bitfield<32> getCommandBufferResetFlagsStr (VkCommandBufferResetFlags value)
1323 {
1324         static const tcu::Format::BitDesc s_desc[] =
1325         {
1326                 tcu::Format::BitDesc(VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT,     "VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT"),
1327         };
1328         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1329 }
1330
1331 tcu::Format::Bitfield<32> getStencilFaceFlagsStr (VkStencilFaceFlags value)
1332 {
1333         static const tcu::Format::BitDesc s_desc[] =
1334         {
1335                 tcu::Format::BitDesc(VK_STENCIL_FACE_FRONT_BIT, "VK_STENCIL_FACE_FRONT_BIT"),
1336                 tcu::Format::BitDesc(VK_STENCIL_FACE_BACK_BIT,  "VK_STENCIL_FACE_BACK_BIT"),
1337                 tcu::Format::BitDesc(VK_STENCIL_FRONT_AND_BACK, "VK_STENCIL_FRONT_AND_BACK"),
1338         };
1339         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1340 }
1341
1342 tcu::Format::Bitfield<32> getSurfaceTransformFlagsKHRStr (VkSurfaceTransformFlagsKHR value)
1343 {
1344         static const tcu::Format::BitDesc s_desc[] =
1345         {
1346                 tcu::Format::BitDesc(VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR,                                             "VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR"),
1347                 tcu::Format::BitDesc(VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR,                                    "VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR"),
1348                 tcu::Format::BitDesc(VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR,                                   "VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR"),
1349                 tcu::Format::BitDesc(VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR,                                   "VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR"),
1350                 tcu::Format::BitDesc(VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR,                    "VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR"),
1351                 tcu::Format::BitDesc(VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR,  "VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR"),
1352                 tcu::Format::BitDesc(VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR, "VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR"),
1353                 tcu::Format::BitDesc(VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR, "VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR"),
1354                 tcu::Format::BitDesc(VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR,                                              "VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR"),
1355         };
1356         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1357 }
1358
1359 tcu::Format::Bitfield<32> getCompositeAlphaFlagsKHRStr (VkCompositeAlphaFlagsKHR value)
1360 {
1361         static const tcu::Format::BitDesc s_desc[] =
1362         {
1363                 tcu::Format::BitDesc(VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR,                         "VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR"),
1364                 tcu::Format::BitDesc(VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR,         "VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR"),
1365                 tcu::Format::BitDesc(VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR,        "VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR"),
1366                 tcu::Format::BitDesc(VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR,                        "VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR"),
1367         };
1368         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1369 }
1370
1371 tcu::Format::Bitfield<32> getDisplayPlaneAlphaFlagsKHRStr (VkDisplayPlaneAlphaFlagsKHR value)
1372 {
1373         static const tcu::Format::BitDesc s_desc[] =
1374         {
1375                 tcu::Format::BitDesc(VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR,                                             "VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR"),
1376                 tcu::Format::BitDesc(VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR,                                             "VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR"),
1377                 tcu::Format::BitDesc(VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR,                                  "VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR"),
1378                 tcu::Format::BitDesc(VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR,    "VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR"),
1379         };
1380         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1381 }
1382
1383 tcu::Format::Bitfield<32> getDebugReportFlagsEXTStr (VkDebugReportFlagsEXT value)
1384 {
1385         static const tcu::Format::BitDesc s_desc[] =
1386         {
1387                 tcu::Format::BitDesc(VK_DEBUG_REPORT_INFORMATION_BIT_EXT,                       "VK_DEBUG_REPORT_INFORMATION_BIT_EXT"),
1388                 tcu::Format::BitDesc(VK_DEBUG_REPORT_WARNING_BIT_EXT,                           "VK_DEBUG_REPORT_WARNING_BIT_EXT"),
1389                 tcu::Format::BitDesc(VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT,       "VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT"),
1390                 tcu::Format::BitDesc(VK_DEBUG_REPORT_ERROR_BIT_EXT,                                     "VK_DEBUG_REPORT_ERROR_BIT_EXT"),
1391                 tcu::Format::BitDesc(VK_DEBUG_REPORT_DEBUG_BIT_EXT,                                     "VK_DEBUG_REPORT_DEBUG_BIT_EXT"),
1392         };
1393         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1394 }
1395
1396 tcu::Format::Bitfield<32> getExternalMemoryHandleTypeFlagsNVStr (VkExternalMemoryHandleTypeFlagsNV value)
1397 {
1398         static const tcu::Format::BitDesc s_desc[] =
1399         {
1400                 tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV,                "VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV"),
1401                 tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV,    "VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV"),
1402                 tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV,                 "VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV"),
1403                 tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV,             "VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV"),
1404         };
1405         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1406 }
1407
1408 tcu::Format::Bitfield<32> getExternalMemoryFeatureFlagsNVStr (VkExternalMemoryFeatureFlagsNV value)
1409 {
1410         static const tcu::Format::BitDesc s_desc[] =
1411         {
1412                 tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV,  "VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV"),
1413                 tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV,              "VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV"),
1414                 tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV,              "VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV"),
1415         };
1416         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1417 }
1418
1419 tcu::Format::Bitfield<32> getIndirectCommandsLayoutUsageFlagsNVXStr (VkIndirectCommandsLayoutUsageFlagsNVX value)
1420 {
1421         static const tcu::Format::BitDesc s_desc[] =
1422         {
1423                 tcu::Format::BitDesc(VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NVX,     "VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NVX"),
1424                 tcu::Format::BitDesc(VK_INDIRECT_COMMANDS_LAYOUT_USAGE_SPARSE_SEQUENCES_BIT_NVX,        "VK_INDIRECT_COMMANDS_LAYOUT_USAGE_SPARSE_SEQUENCES_BIT_NVX"),
1425                 tcu::Format::BitDesc(VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EMPTY_EXECUTIONS_BIT_NVX,        "VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EMPTY_EXECUTIONS_BIT_NVX"),
1426                 tcu::Format::BitDesc(VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NVX,       "VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NVX"),
1427         };
1428         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1429 }
1430
1431 tcu::Format::Bitfield<32> getObjectEntryUsageFlagsNVXStr (VkObjectEntryUsageFlagsNVX value)
1432 {
1433         static const tcu::Format::BitDesc s_desc[] =
1434         {
1435                 tcu::Format::BitDesc(VK_OBJECT_ENTRY_USAGE_GRAPHICS_BIT_NVX,    "VK_OBJECT_ENTRY_USAGE_GRAPHICS_BIT_NVX"),
1436                 tcu::Format::BitDesc(VK_OBJECT_ENTRY_USAGE_COMPUTE_BIT_NVX,             "VK_OBJECT_ENTRY_USAGE_COMPUTE_BIT_NVX"),
1437         };
1438         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1439 }
1440
1441 tcu::Format::Bitfield<32> getInstanceCreateFlagsStr (VkInstanceCreateFlags value)
1442 {
1443         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
1444 }
1445
1446 tcu::Format::Bitfield<32> getDeviceCreateFlagsStr (VkDeviceCreateFlags value)
1447 {
1448         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
1449 }
1450
1451 tcu::Format::Bitfield<32> getDeviceQueueCreateFlagsStr (VkDeviceQueueCreateFlags value)
1452 {
1453         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
1454 }
1455
1456 tcu::Format::Bitfield<32> getMemoryMapFlagsStr (VkMemoryMapFlags value)
1457 {
1458         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
1459 }
1460
1461 tcu::Format::Bitfield<32> getSemaphoreCreateFlagsStr (VkSemaphoreCreateFlags value)
1462 {
1463         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
1464 }
1465
1466 tcu::Format::Bitfield<32> getEventCreateFlagsStr (VkEventCreateFlags value)
1467 {
1468         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
1469 }
1470
1471 tcu::Format::Bitfield<32> getQueryPoolCreateFlagsStr (VkQueryPoolCreateFlags value)
1472 {
1473         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
1474 }
1475
1476 tcu::Format::Bitfield<32> getBufferViewCreateFlagsStr (VkBufferViewCreateFlags value)
1477 {
1478         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
1479 }
1480
1481 tcu::Format::Bitfield<32> getImageViewCreateFlagsStr (VkImageViewCreateFlags value)
1482 {
1483         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
1484 }
1485
1486 tcu::Format::Bitfield<32> getShaderModuleCreateFlagsStr (VkShaderModuleCreateFlags value)
1487 {
1488         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
1489 }
1490
1491 tcu::Format::Bitfield<32> getPipelineCacheCreateFlagsStr (VkPipelineCacheCreateFlags value)
1492 {
1493         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
1494 }
1495
1496 tcu::Format::Bitfield<32> getPipelineShaderStageCreateFlagsStr (VkPipelineShaderStageCreateFlags value)
1497 {
1498         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
1499 }
1500
1501 tcu::Format::Bitfield<32> getPipelineVertexInputStateCreateFlagsStr (VkPipelineVertexInputStateCreateFlags value)
1502 {
1503         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
1504 }
1505
1506 tcu::Format::Bitfield<32> getPipelineInputAssemblyStateCreateFlagsStr (VkPipelineInputAssemblyStateCreateFlags value)
1507 {
1508         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
1509 }
1510
1511 tcu::Format::Bitfield<32> getPipelineTessellationStateCreateFlagsStr (VkPipelineTessellationStateCreateFlags value)
1512 {
1513         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
1514 }
1515
1516 tcu::Format::Bitfield<32> getPipelineViewportStateCreateFlagsStr (VkPipelineViewportStateCreateFlags value)
1517 {
1518         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
1519 }
1520
1521 tcu::Format::Bitfield<32> getPipelineRasterizationStateCreateFlagsStr (VkPipelineRasterizationStateCreateFlags value)
1522 {
1523         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
1524 }
1525
1526 tcu::Format::Bitfield<32> getPipelineMultisampleStateCreateFlagsStr (VkPipelineMultisampleStateCreateFlags value)
1527 {
1528         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
1529 }
1530
1531 tcu::Format::Bitfield<32> getPipelineDepthStencilStateCreateFlagsStr (VkPipelineDepthStencilStateCreateFlags value)
1532 {
1533         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
1534 }
1535
1536 tcu::Format::Bitfield<32> getPipelineColorBlendStateCreateFlagsStr (VkPipelineColorBlendStateCreateFlags value)
1537 {
1538         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
1539 }
1540
1541 tcu::Format::Bitfield<32> getPipelineDynamicStateCreateFlagsStr (VkPipelineDynamicStateCreateFlags value)
1542 {
1543         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
1544 }
1545
1546 tcu::Format::Bitfield<32> getPipelineLayoutCreateFlagsStr (VkPipelineLayoutCreateFlags value)
1547 {
1548         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
1549 }
1550
1551 tcu::Format::Bitfield<32> getSamplerCreateFlagsStr (VkSamplerCreateFlags value)
1552 {
1553         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
1554 }
1555
1556 tcu::Format::Bitfield<32> getDescriptorPoolResetFlagsStr (VkDescriptorPoolResetFlags value)
1557 {
1558         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
1559 }
1560
1561 tcu::Format::Bitfield<32> getFramebufferCreateFlagsStr (VkFramebufferCreateFlags value)
1562 {
1563         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
1564 }
1565
1566 tcu::Format::Bitfield<32> getRenderPassCreateFlagsStr (VkRenderPassCreateFlags value)
1567 {
1568         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
1569 }
1570
1571 tcu::Format::Bitfield<32> getSubpassDescriptionFlagsStr (VkSubpassDescriptionFlags value)
1572 {
1573         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
1574 }
1575
1576 tcu::Format::Bitfield<32> getSwapchainCreateFlagsKHRStr (VkSwapchainCreateFlagsKHR value)
1577 {
1578         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
1579 }
1580
1581 tcu::Format::Bitfield<32> getDisplayModeCreateFlagsKHRStr (VkDisplayModeCreateFlagsKHR value)
1582 {
1583         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
1584 }
1585
1586 tcu::Format::Bitfield<32> getDisplaySurfaceCreateFlagsKHRStr (VkDisplaySurfaceCreateFlagsKHR value)
1587 {
1588         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
1589 }
1590
1591 tcu::Format::Bitfield<32> getXlibSurfaceCreateFlagsKHRStr (VkXlibSurfaceCreateFlagsKHR value)
1592 {
1593         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
1594 }
1595
1596 tcu::Format::Bitfield<32> getXcbSurfaceCreateFlagsKHRStr (VkXcbSurfaceCreateFlagsKHR value)
1597 {
1598         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
1599 }
1600
1601 tcu::Format::Bitfield<32> getWaylandSurfaceCreateFlagsKHRStr (VkWaylandSurfaceCreateFlagsKHR value)
1602 {
1603         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
1604 }
1605
1606 tcu::Format::Bitfield<32> getMirSurfaceCreateFlagsKHRStr (VkMirSurfaceCreateFlagsKHR value)
1607 {
1608         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
1609 }
1610
1611 tcu::Format::Bitfield<32> getAndroidSurfaceCreateFlagsKHRStr (VkAndroidSurfaceCreateFlagsKHR value)
1612 {
1613         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
1614 }
1615
1616 tcu::Format::Bitfield<32> getWin32SurfaceCreateFlagsKHRStr (VkWin32SurfaceCreateFlagsKHR value)
1617 {
1618         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
1619 }
1620
1621 tcu::Format::Bitfield<32> getCommandPoolTrimFlagsKHRStr (VkCommandPoolTrimFlagsKHR value)
1622 {
1623         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
1624 }
1625
1626 tcu::Format::Bitfield<32> getDescriptorUpdateTemplateCreateFlagsKHRStr (VkDescriptorUpdateTemplateCreateFlagsKHR value)
1627 {
1628         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
1629 }
1630
1631 std::ostream& operator<< (std::ostream& s, const VkApplicationInfo& value)
1632 {
1633         s << "VkApplicationInfo = {\n";
1634         s << "\tsType = " << value.sType << '\n';
1635         s << "\tpNext = " << value.pNext << '\n';
1636         s << "\tpApplicationName = " << getCharPtrStr(value.pApplicationName) << '\n';
1637         s << "\tapplicationVersion = " << value.applicationVersion << '\n';
1638         s << "\tpEngineName = " << getCharPtrStr(value.pEngineName) << '\n';
1639         s << "\tengineVersion = " << value.engineVersion << '\n';
1640         s << "\tapiVersion = " << value.apiVersion << '\n';
1641         s << '}';
1642         return s;
1643 }
1644
1645 std::ostream& operator<< (std::ostream& s, const VkInstanceCreateInfo& value)
1646 {
1647         s << "VkInstanceCreateInfo = {\n";
1648         s << "\tsType = " << value.sType << '\n';
1649         s << "\tpNext = " << value.pNext << '\n';
1650         s << "\tflags = " << getInstanceCreateFlagsStr(value.flags) << '\n';
1651         s << "\tpApplicationInfo = " << value.pApplicationInfo << '\n';
1652         s << "\tenabledLayerCount = " << value.enabledLayerCount << '\n';
1653         s << "\tppEnabledLayerNames = " << value.ppEnabledLayerNames << '\n';
1654         s << "\tenabledExtensionCount = " << value.enabledExtensionCount << '\n';
1655         s << "\tppEnabledExtensionNames = " << value.ppEnabledExtensionNames << '\n';
1656         s << '}';
1657         return s;
1658 }
1659
1660 std::ostream& operator<< (std::ostream& s, const VkAllocationCallbacks& value)
1661 {
1662         s << "VkAllocationCallbacks = {\n";
1663         s << "\tpUserData = " << value.pUserData << '\n';
1664         s << "\tpfnAllocation = " << value.pfnAllocation << '\n';
1665         s << "\tpfnReallocation = " << value.pfnReallocation << '\n';
1666         s << "\tpfnFree = " << value.pfnFree << '\n';
1667         s << "\tpfnInternalAllocation = " << value.pfnInternalAllocation << '\n';
1668         s << "\tpfnInternalFree = " << value.pfnInternalFree << '\n';
1669         s << '}';
1670         return s;
1671 }
1672
1673 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceFeatures& value)
1674 {
1675         s << "VkPhysicalDeviceFeatures = {\n";
1676         s << "\trobustBufferAccess = " << value.robustBufferAccess << '\n';
1677         s << "\tfullDrawIndexUint32 = " << value.fullDrawIndexUint32 << '\n';
1678         s << "\timageCubeArray = " << value.imageCubeArray << '\n';
1679         s << "\tindependentBlend = " << value.independentBlend << '\n';
1680         s << "\tgeometryShader = " << value.geometryShader << '\n';
1681         s << "\ttessellationShader = " << value.tessellationShader << '\n';
1682         s << "\tsampleRateShading = " << value.sampleRateShading << '\n';
1683         s << "\tdualSrcBlend = " << value.dualSrcBlend << '\n';
1684         s << "\tlogicOp = " << value.logicOp << '\n';
1685         s << "\tmultiDrawIndirect = " << value.multiDrawIndirect << '\n';
1686         s << "\tdrawIndirectFirstInstance = " << value.drawIndirectFirstInstance << '\n';
1687         s << "\tdepthClamp = " << value.depthClamp << '\n';
1688         s << "\tdepthBiasClamp = " << value.depthBiasClamp << '\n';
1689         s << "\tfillModeNonSolid = " << value.fillModeNonSolid << '\n';
1690         s << "\tdepthBounds = " << value.depthBounds << '\n';
1691         s << "\twideLines = " << value.wideLines << '\n';
1692         s << "\tlargePoints = " << value.largePoints << '\n';
1693         s << "\talphaToOne = " << value.alphaToOne << '\n';
1694         s << "\tmultiViewport = " << value.multiViewport << '\n';
1695         s << "\tsamplerAnisotropy = " << value.samplerAnisotropy << '\n';
1696         s << "\ttextureCompressionETC2 = " << value.textureCompressionETC2 << '\n';
1697         s << "\ttextureCompressionASTC_LDR = " << value.textureCompressionASTC_LDR << '\n';
1698         s << "\ttextureCompressionBC = " << value.textureCompressionBC << '\n';
1699         s << "\tocclusionQueryPrecise = " << value.occlusionQueryPrecise << '\n';
1700         s << "\tpipelineStatisticsQuery = " << value.pipelineStatisticsQuery << '\n';
1701         s << "\tvertexPipelineStoresAndAtomics = " << value.vertexPipelineStoresAndAtomics << '\n';
1702         s << "\tfragmentStoresAndAtomics = " << value.fragmentStoresAndAtomics << '\n';
1703         s << "\tshaderTessellationAndGeometryPointSize = " << value.shaderTessellationAndGeometryPointSize << '\n';
1704         s << "\tshaderImageGatherExtended = " << value.shaderImageGatherExtended << '\n';
1705         s << "\tshaderStorageImageExtendedFormats = " << value.shaderStorageImageExtendedFormats << '\n';
1706         s << "\tshaderStorageImageMultisample = " << value.shaderStorageImageMultisample << '\n';
1707         s << "\tshaderStorageImageReadWithoutFormat = " << value.shaderStorageImageReadWithoutFormat << '\n';
1708         s << "\tshaderStorageImageWriteWithoutFormat = " << value.shaderStorageImageWriteWithoutFormat << '\n';
1709         s << "\tshaderUniformBufferArrayDynamicIndexing = " << value.shaderUniformBufferArrayDynamicIndexing << '\n';
1710         s << "\tshaderSampledImageArrayDynamicIndexing = " << value.shaderSampledImageArrayDynamicIndexing << '\n';
1711         s << "\tshaderStorageBufferArrayDynamicIndexing = " << value.shaderStorageBufferArrayDynamicIndexing << '\n';
1712         s << "\tshaderStorageImageArrayDynamicIndexing = " << value.shaderStorageImageArrayDynamicIndexing << '\n';
1713         s << "\tshaderClipDistance = " << value.shaderClipDistance << '\n';
1714         s << "\tshaderCullDistance = " << value.shaderCullDistance << '\n';
1715         s << "\tshaderFloat64 = " << value.shaderFloat64 << '\n';
1716         s << "\tshaderInt64 = " << value.shaderInt64 << '\n';
1717         s << "\tshaderInt16 = " << value.shaderInt16 << '\n';
1718         s << "\tshaderResourceResidency = " << value.shaderResourceResidency << '\n';
1719         s << "\tshaderResourceMinLod = " << value.shaderResourceMinLod << '\n';
1720         s << "\tsparseBinding = " << value.sparseBinding << '\n';
1721         s << "\tsparseResidencyBuffer = " << value.sparseResidencyBuffer << '\n';
1722         s << "\tsparseResidencyImage2D = " << value.sparseResidencyImage2D << '\n';
1723         s << "\tsparseResidencyImage3D = " << value.sparseResidencyImage3D << '\n';
1724         s << "\tsparseResidency2Samples = " << value.sparseResidency2Samples << '\n';
1725         s << "\tsparseResidency4Samples = " << value.sparseResidency4Samples << '\n';
1726         s << "\tsparseResidency8Samples = " << value.sparseResidency8Samples << '\n';
1727         s << "\tsparseResidency16Samples = " << value.sparseResidency16Samples << '\n';
1728         s << "\tsparseResidencyAliased = " << value.sparseResidencyAliased << '\n';
1729         s << "\tvariableMultisampleRate = " << value.variableMultisampleRate << '\n';
1730         s << "\tinheritedQueries = " << value.inheritedQueries << '\n';
1731         s << '}';
1732         return s;
1733 }
1734
1735 std::ostream& operator<< (std::ostream& s, const VkFormatProperties& value)
1736 {
1737         s << "VkFormatProperties = {\n";
1738         s << "\tlinearTilingFeatures = " << getFormatFeatureFlagsStr(value.linearTilingFeatures) << '\n';
1739         s << "\toptimalTilingFeatures = " << getFormatFeatureFlagsStr(value.optimalTilingFeatures) << '\n';
1740         s << "\tbufferFeatures = " << getFormatFeatureFlagsStr(value.bufferFeatures) << '\n';
1741         s << '}';
1742         return s;
1743 }
1744
1745 std::ostream& operator<< (std::ostream& s, const VkExtent3D& value)
1746 {
1747         s << "VkExtent3D = {\n";
1748         s << "\twidth = " << value.width << '\n';
1749         s << "\theight = " << value.height << '\n';
1750         s << "\tdepth = " << value.depth << '\n';
1751         s << '}';
1752         return s;
1753 }
1754
1755 std::ostream& operator<< (std::ostream& s, const VkImageFormatProperties& value)
1756 {
1757         s << "VkImageFormatProperties = {\n";
1758         s << "\tmaxExtent = " << value.maxExtent << '\n';
1759         s << "\tmaxMipLevels = " << value.maxMipLevels << '\n';
1760         s << "\tmaxArrayLayers = " << value.maxArrayLayers << '\n';
1761         s << "\tsampleCounts = " << getSampleCountFlagsStr(value.sampleCounts) << '\n';
1762         s << "\tmaxResourceSize = " << value.maxResourceSize << '\n';
1763         s << '}';
1764         return s;
1765 }
1766
1767 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceLimits& value)
1768 {
1769         s << "VkPhysicalDeviceLimits = {\n";
1770         s << "\tmaxImageDimension1D = " << value.maxImageDimension1D << '\n';
1771         s << "\tmaxImageDimension2D = " << value.maxImageDimension2D << '\n';
1772         s << "\tmaxImageDimension3D = " << value.maxImageDimension3D << '\n';
1773         s << "\tmaxImageDimensionCube = " << value.maxImageDimensionCube << '\n';
1774         s << "\tmaxImageArrayLayers = " << value.maxImageArrayLayers << '\n';
1775         s << "\tmaxTexelBufferElements = " << value.maxTexelBufferElements << '\n';
1776         s << "\tmaxUniformBufferRange = " << value.maxUniformBufferRange << '\n';
1777         s << "\tmaxStorageBufferRange = " << value.maxStorageBufferRange << '\n';
1778         s << "\tmaxPushConstantsSize = " << value.maxPushConstantsSize << '\n';
1779         s << "\tmaxMemoryAllocationCount = " << value.maxMemoryAllocationCount << '\n';
1780         s << "\tmaxSamplerAllocationCount = " << value.maxSamplerAllocationCount << '\n';
1781         s << "\tbufferImageGranularity = " << value.bufferImageGranularity << '\n';
1782         s << "\tsparseAddressSpaceSize = " << value.sparseAddressSpaceSize << '\n';
1783         s << "\tmaxBoundDescriptorSets = " << value.maxBoundDescriptorSets << '\n';
1784         s << "\tmaxPerStageDescriptorSamplers = " << value.maxPerStageDescriptorSamplers << '\n';
1785         s << "\tmaxPerStageDescriptorUniformBuffers = " << value.maxPerStageDescriptorUniformBuffers << '\n';
1786         s << "\tmaxPerStageDescriptorStorageBuffers = " << value.maxPerStageDescriptorStorageBuffers << '\n';
1787         s << "\tmaxPerStageDescriptorSampledImages = " << value.maxPerStageDescriptorSampledImages << '\n';
1788         s << "\tmaxPerStageDescriptorStorageImages = " << value.maxPerStageDescriptorStorageImages << '\n';
1789         s << "\tmaxPerStageDescriptorInputAttachments = " << value.maxPerStageDescriptorInputAttachments << '\n';
1790         s << "\tmaxPerStageResources = " << value.maxPerStageResources << '\n';
1791         s << "\tmaxDescriptorSetSamplers = " << value.maxDescriptorSetSamplers << '\n';
1792         s << "\tmaxDescriptorSetUniformBuffers = " << value.maxDescriptorSetUniformBuffers << '\n';
1793         s << "\tmaxDescriptorSetUniformBuffersDynamic = " << value.maxDescriptorSetUniformBuffersDynamic << '\n';
1794         s << "\tmaxDescriptorSetStorageBuffers = " << value.maxDescriptorSetStorageBuffers << '\n';
1795         s << "\tmaxDescriptorSetStorageBuffersDynamic = " << value.maxDescriptorSetStorageBuffersDynamic << '\n';
1796         s << "\tmaxDescriptorSetSampledImages = " << value.maxDescriptorSetSampledImages << '\n';
1797         s << "\tmaxDescriptorSetStorageImages = " << value.maxDescriptorSetStorageImages << '\n';
1798         s << "\tmaxDescriptorSetInputAttachments = " << value.maxDescriptorSetInputAttachments << '\n';
1799         s << "\tmaxVertexInputAttributes = " << value.maxVertexInputAttributes << '\n';
1800         s << "\tmaxVertexInputBindings = " << value.maxVertexInputBindings << '\n';
1801         s << "\tmaxVertexInputAttributeOffset = " << value.maxVertexInputAttributeOffset << '\n';
1802         s << "\tmaxVertexInputBindingStride = " << value.maxVertexInputBindingStride << '\n';
1803         s << "\tmaxVertexOutputComponents = " << value.maxVertexOutputComponents << '\n';
1804         s << "\tmaxTessellationGenerationLevel = " << value.maxTessellationGenerationLevel << '\n';
1805         s << "\tmaxTessellationPatchSize = " << value.maxTessellationPatchSize << '\n';
1806         s << "\tmaxTessellationControlPerVertexInputComponents = " << value.maxTessellationControlPerVertexInputComponents << '\n';
1807         s << "\tmaxTessellationControlPerVertexOutputComponents = " << value.maxTessellationControlPerVertexOutputComponents << '\n';
1808         s << "\tmaxTessellationControlPerPatchOutputComponents = " << value.maxTessellationControlPerPatchOutputComponents << '\n';
1809         s << "\tmaxTessellationControlTotalOutputComponents = " << value.maxTessellationControlTotalOutputComponents << '\n';
1810         s << "\tmaxTessellationEvaluationInputComponents = " << value.maxTessellationEvaluationInputComponents << '\n';
1811         s << "\tmaxTessellationEvaluationOutputComponents = " << value.maxTessellationEvaluationOutputComponents << '\n';
1812         s << "\tmaxGeometryShaderInvocations = " << value.maxGeometryShaderInvocations << '\n';
1813         s << "\tmaxGeometryInputComponents = " << value.maxGeometryInputComponents << '\n';
1814         s << "\tmaxGeometryOutputComponents = " << value.maxGeometryOutputComponents << '\n';
1815         s << "\tmaxGeometryOutputVertices = " << value.maxGeometryOutputVertices << '\n';
1816         s << "\tmaxGeometryTotalOutputComponents = " << value.maxGeometryTotalOutputComponents << '\n';
1817         s << "\tmaxFragmentInputComponents = " << value.maxFragmentInputComponents << '\n';
1818         s << "\tmaxFragmentOutputAttachments = " << value.maxFragmentOutputAttachments << '\n';
1819         s << "\tmaxFragmentDualSrcAttachments = " << value.maxFragmentDualSrcAttachments << '\n';
1820         s << "\tmaxFragmentCombinedOutputResources = " << value.maxFragmentCombinedOutputResources << '\n';
1821         s << "\tmaxComputeSharedMemorySize = " << value.maxComputeSharedMemorySize << '\n';
1822         s << "\tmaxComputeWorkGroupCount = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.maxComputeWorkGroupCount), DE_ARRAY_END(value.maxComputeWorkGroupCount)) << '\n';
1823         s << "\tmaxComputeWorkGroupInvocations = " << value.maxComputeWorkGroupInvocations << '\n';
1824         s << "\tmaxComputeWorkGroupSize = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.maxComputeWorkGroupSize), DE_ARRAY_END(value.maxComputeWorkGroupSize)) << '\n';
1825         s << "\tsubPixelPrecisionBits = " << value.subPixelPrecisionBits << '\n';
1826         s << "\tsubTexelPrecisionBits = " << value.subTexelPrecisionBits << '\n';
1827         s << "\tmipmapPrecisionBits = " << value.mipmapPrecisionBits << '\n';
1828         s << "\tmaxDrawIndexedIndexValue = " << value.maxDrawIndexedIndexValue << '\n';
1829         s << "\tmaxDrawIndirectCount = " << value.maxDrawIndirectCount << '\n';
1830         s << "\tmaxSamplerLodBias = " << value.maxSamplerLodBias << '\n';
1831         s << "\tmaxSamplerAnisotropy = " << value.maxSamplerAnisotropy << '\n';
1832         s << "\tmaxViewports = " << value.maxViewports << '\n';
1833         s << "\tmaxViewportDimensions = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.maxViewportDimensions), DE_ARRAY_END(value.maxViewportDimensions)) << '\n';
1834         s << "\tviewportBoundsRange = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.viewportBoundsRange), DE_ARRAY_END(value.viewportBoundsRange)) << '\n';
1835         s << "\tviewportSubPixelBits = " << value.viewportSubPixelBits << '\n';
1836         s << "\tminMemoryMapAlignment = " << value.minMemoryMapAlignment << '\n';
1837         s << "\tminTexelBufferOffsetAlignment = " << value.minTexelBufferOffsetAlignment << '\n';
1838         s << "\tminUniformBufferOffsetAlignment = " << value.minUniformBufferOffsetAlignment << '\n';
1839         s << "\tminStorageBufferOffsetAlignment = " << value.minStorageBufferOffsetAlignment << '\n';
1840         s << "\tminTexelOffset = " << value.minTexelOffset << '\n';
1841         s << "\tmaxTexelOffset = " << value.maxTexelOffset << '\n';
1842         s << "\tminTexelGatherOffset = " << value.minTexelGatherOffset << '\n';
1843         s << "\tmaxTexelGatherOffset = " << value.maxTexelGatherOffset << '\n';
1844         s << "\tminInterpolationOffset = " << value.minInterpolationOffset << '\n';
1845         s << "\tmaxInterpolationOffset = " << value.maxInterpolationOffset << '\n';
1846         s << "\tsubPixelInterpolationOffsetBits = " << value.subPixelInterpolationOffsetBits << '\n';
1847         s << "\tmaxFramebufferWidth = " << value.maxFramebufferWidth << '\n';
1848         s << "\tmaxFramebufferHeight = " << value.maxFramebufferHeight << '\n';
1849         s << "\tmaxFramebufferLayers = " << value.maxFramebufferLayers << '\n';
1850         s << "\tframebufferColorSampleCounts = " << getSampleCountFlagsStr(value.framebufferColorSampleCounts) << '\n';
1851         s << "\tframebufferDepthSampleCounts = " << getSampleCountFlagsStr(value.framebufferDepthSampleCounts) << '\n';
1852         s << "\tframebufferStencilSampleCounts = " << getSampleCountFlagsStr(value.framebufferStencilSampleCounts) << '\n';
1853         s << "\tframebufferNoAttachmentsSampleCounts = " << getSampleCountFlagsStr(value.framebufferNoAttachmentsSampleCounts) << '\n';
1854         s << "\tmaxColorAttachments = " << value.maxColorAttachments << '\n';
1855         s << "\tsampledImageColorSampleCounts = " << getSampleCountFlagsStr(value.sampledImageColorSampleCounts) << '\n';
1856         s << "\tsampledImageIntegerSampleCounts = " << getSampleCountFlagsStr(value.sampledImageIntegerSampleCounts) << '\n';
1857         s << "\tsampledImageDepthSampleCounts = " << getSampleCountFlagsStr(value.sampledImageDepthSampleCounts) << '\n';
1858         s << "\tsampledImageStencilSampleCounts = " << getSampleCountFlagsStr(value.sampledImageStencilSampleCounts) << '\n';
1859         s << "\tstorageImageSampleCounts = " << getSampleCountFlagsStr(value.storageImageSampleCounts) << '\n';
1860         s << "\tmaxSampleMaskWords = " << value.maxSampleMaskWords << '\n';
1861         s << "\ttimestampComputeAndGraphics = " << value.timestampComputeAndGraphics << '\n';
1862         s << "\ttimestampPeriod = " << value.timestampPeriod << '\n';
1863         s << "\tmaxClipDistances = " << value.maxClipDistances << '\n';
1864         s << "\tmaxCullDistances = " << value.maxCullDistances << '\n';
1865         s << "\tmaxCombinedClipAndCullDistances = " << value.maxCombinedClipAndCullDistances << '\n';
1866         s << "\tdiscreteQueuePriorities = " << value.discreteQueuePriorities << '\n';
1867         s << "\tpointSizeRange = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.pointSizeRange), DE_ARRAY_END(value.pointSizeRange)) << '\n';
1868         s << "\tlineWidthRange = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.lineWidthRange), DE_ARRAY_END(value.lineWidthRange)) << '\n';
1869         s << "\tpointSizeGranularity = " << value.pointSizeGranularity << '\n';
1870         s << "\tlineWidthGranularity = " << value.lineWidthGranularity << '\n';
1871         s << "\tstrictLines = " << value.strictLines << '\n';
1872         s << "\tstandardSampleLocations = " << value.standardSampleLocations << '\n';
1873         s << "\toptimalBufferCopyOffsetAlignment = " << value.optimalBufferCopyOffsetAlignment << '\n';
1874         s << "\toptimalBufferCopyRowPitchAlignment = " << value.optimalBufferCopyRowPitchAlignment << '\n';
1875         s << "\tnonCoherentAtomSize = " << value.nonCoherentAtomSize << '\n';
1876         s << '}';
1877         return s;
1878 }
1879
1880 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceSparseProperties& value)
1881 {
1882         s << "VkPhysicalDeviceSparseProperties = {\n";
1883         s << "\tresidencyStandard2DBlockShape = " << value.residencyStandard2DBlockShape << '\n';
1884         s << "\tresidencyStandard2DMultisampleBlockShape = " << value.residencyStandard2DMultisampleBlockShape << '\n';
1885         s << "\tresidencyStandard3DBlockShape = " << value.residencyStandard3DBlockShape << '\n';
1886         s << "\tresidencyAlignedMipSize = " << value.residencyAlignedMipSize << '\n';
1887         s << "\tresidencyNonResidentStrict = " << value.residencyNonResidentStrict << '\n';
1888         s << '}';
1889         return s;
1890 }
1891
1892 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceProperties& value)
1893 {
1894         s << "VkPhysicalDeviceProperties = {\n";
1895         s << "\tapiVersion = " << value.apiVersion << '\n';
1896         s << "\tdriverVersion = " << value.driverVersion << '\n';
1897         s << "\tvendorID = " << value.vendorID << '\n';
1898         s << "\tdeviceID = " << value.deviceID << '\n';
1899         s << "\tdeviceType = " << value.deviceType << '\n';
1900         s << "\tdeviceName = " << (const char*)value.deviceName << '\n';
1901         s << "\tpipelineCacheUUID = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<deUint8>(DE_ARRAY_BEGIN(value.pipelineCacheUUID)), tcu::Format::HexIterator<deUint8>(DE_ARRAY_END(value.pipelineCacheUUID))) << '\n';
1902         s << "\tlimits = " << value.limits << '\n';
1903         s << "\tsparseProperties = " << value.sparseProperties << '\n';
1904         s << '}';
1905         return s;
1906 }
1907
1908 std::ostream& operator<< (std::ostream& s, const VkQueueFamilyProperties& value)
1909 {
1910         s << "VkQueueFamilyProperties = {\n";
1911         s << "\tqueueFlags = " << getQueueFlagsStr(value.queueFlags) << '\n';
1912         s << "\tqueueCount = " << value.queueCount << '\n';
1913         s << "\ttimestampValidBits = " << value.timestampValidBits << '\n';
1914         s << "\tminImageTransferGranularity = " << value.minImageTransferGranularity << '\n';
1915         s << '}';
1916         return s;
1917 }
1918
1919 std::ostream& operator<< (std::ostream& s, const VkMemoryType& value)
1920 {
1921         s << "VkMemoryType = {\n";
1922         s << "\tpropertyFlags = " << getMemoryPropertyFlagsStr(value.propertyFlags) << '\n';
1923         s << "\theapIndex = " << value.heapIndex << '\n';
1924         s << '}';
1925         return s;
1926 }
1927
1928 std::ostream& operator<< (std::ostream& s, const VkMemoryHeap& value)
1929 {
1930         s << "VkMemoryHeap = {\n";
1931         s << "\tsize = " << value.size << '\n';
1932         s << "\tflags = " << getMemoryHeapFlagsStr(value.flags) << '\n';
1933         s << '}';
1934         return s;
1935 }
1936
1937 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceMemoryProperties& value)
1938 {
1939         s << "VkPhysicalDeviceMemoryProperties = {\n";
1940         s << "\tmemoryTypeCount = " << value.memoryTypeCount << '\n';
1941         s << "\tmemoryTypes = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.memoryTypes), DE_ARRAY_BEGIN(value.memoryTypes) + value.memoryTypeCount) << '\n';
1942         s << "\tmemoryHeapCount = " << value.memoryHeapCount << '\n';
1943         s << "\tmemoryHeaps = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.memoryHeaps), DE_ARRAY_BEGIN(value.memoryHeaps) + value.memoryHeapCount) << '\n';
1944         s << '}';
1945         return s;
1946 }
1947
1948 std::ostream& operator<< (std::ostream& s, const VkDeviceQueueCreateInfo& value)
1949 {
1950         s << "VkDeviceQueueCreateInfo = {\n";
1951         s << "\tsType = " << value.sType << '\n';
1952         s << "\tpNext = " << value.pNext << '\n';
1953         s << "\tflags = " << getDeviceQueueCreateFlagsStr(value.flags) << '\n';
1954         s << "\tqueueFamilyIndex = " << value.queueFamilyIndex << '\n';
1955         s << "\tqueueCount = " << value.queueCount << '\n';
1956         s << "\tpQueuePriorities = " << value.pQueuePriorities << '\n';
1957         s << '}';
1958         return s;
1959 }
1960
1961 std::ostream& operator<< (std::ostream& s, const VkDeviceCreateInfo& value)
1962 {
1963         s << "VkDeviceCreateInfo = {\n";
1964         s << "\tsType = " << value.sType << '\n';
1965         s << "\tpNext = " << value.pNext << '\n';
1966         s << "\tflags = " << getDeviceCreateFlagsStr(value.flags) << '\n';
1967         s << "\tqueueCreateInfoCount = " << value.queueCreateInfoCount << '\n';
1968         s << "\tpQueueCreateInfos = " << value.pQueueCreateInfos << '\n';
1969         s << "\tenabledLayerCount = " << value.enabledLayerCount << '\n';
1970         s << "\tppEnabledLayerNames = " << value.ppEnabledLayerNames << '\n';
1971         s << "\tenabledExtensionCount = " << value.enabledExtensionCount << '\n';
1972         s << "\tppEnabledExtensionNames = " << value.ppEnabledExtensionNames << '\n';
1973         s << "\tpEnabledFeatures = " << value.pEnabledFeatures << '\n';
1974         s << '}';
1975         return s;
1976 }
1977
1978 std::ostream& operator<< (std::ostream& s, const VkExtensionProperties& value)
1979 {
1980         s << "VkExtensionProperties = {\n";
1981         s << "\textensionName = " << (const char*)value.extensionName << '\n';
1982         s << "\tspecVersion = " << value.specVersion << '\n';
1983         s << '}';
1984         return s;
1985 }
1986
1987 std::ostream& operator<< (std::ostream& s, const VkLayerProperties& value)
1988 {
1989         s << "VkLayerProperties = {\n";
1990         s << "\tlayerName = " << (const char*)value.layerName << '\n';
1991         s << "\tspecVersion = " << value.specVersion << '\n';
1992         s << "\timplementationVersion = " << value.implementationVersion << '\n';
1993         s << "\tdescription = " << (const char*)value.description << '\n';
1994         s << '}';
1995         return s;
1996 }
1997
1998 std::ostream& operator<< (std::ostream& s, const VkSubmitInfo& value)
1999 {
2000         s << "VkSubmitInfo = {\n";
2001         s << "\tsType = " << value.sType << '\n';
2002         s << "\tpNext = " << value.pNext << '\n';
2003         s << "\twaitSemaphoreCount = " << value.waitSemaphoreCount << '\n';
2004         s << "\tpWaitSemaphores = " << value.pWaitSemaphores << '\n';
2005         s << "\tpWaitDstStageMask = " << value.pWaitDstStageMask << '\n';
2006         s << "\tcommandBufferCount = " << value.commandBufferCount << '\n';
2007         s << "\tpCommandBuffers = " << value.pCommandBuffers << '\n';
2008         s << "\tsignalSemaphoreCount = " << value.signalSemaphoreCount << '\n';
2009         s << "\tpSignalSemaphores = " << value.pSignalSemaphores << '\n';
2010         s << '}';
2011         return s;
2012 }
2013
2014 std::ostream& operator<< (std::ostream& s, const VkMemoryAllocateInfo& value)
2015 {
2016         s << "VkMemoryAllocateInfo = {\n";
2017         s << "\tsType = " << value.sType << '\n';
2018         s << "\tpNext = " << value.pNext << '\n';
2019         s << "\tallocationSize = " << value.allocationSize << '\n';
2020         s << "\tmemoryTypeIndex = " << value.memoryTypeIndex << '\n';
2021         s << '}';
2022         return s;
2023 }
2024
2025 std::ostream& operator<< (std::ostream& s, const VkMappedMemoryRange& value)
2026 {
2027         s << "VkMappedMemoryRange = {\n";
2028         s << "\tsType = " << value.sType << '\n';
2029         s << "\tpNext = " << value.pNext << '\n';
2030         s << "\tmemory = " << value.memory << '\n';
2031         s << "\toffset = " << value.offset << '\n';
2032         s << "\tsize = " << value.size << '\n';
2033         s << '}';
2034         return s;
2035 }
2036
2037 std::ostream& operator<< (std::ostream& s, const VkMemoryRequirements& value)
2038 {
2039         s << "VkMemoryRequirements = {\n";
2040         s << "\tsize = " << value.size << '\n';
2041         s << "\talignment = " << value.alignment << '\n';
2042         s << "\tmemoryTypeBits = " << value.memoryTypeBits << '\n';
2043         s << '}';
2044         return s;
2045 }
2046
2047 std::ostream& operator<< (std::ostream& s, const VkSparseImageFormatProperties& value)
2048 {
2049         s << "VkSparseImageFormatProperties = {\n";
2050         s << "\taspectMask = " << getImageAspectFlagsStr(value.aspectMask) << '\n';
2051         s << "\timageGranularity = " << value.imageGranularity << '\n';
2052         s << "\tflags = " << getSparseImageFormatFlagsStr(value.flags) << '\n';
2053         s << '}';
2054         return s;
2055 }
2056
2057 std::ostream& operator<< (std::ostream& s, const VkSparseImageMemoryRequirements& value)
2058 {
2059         s << "VkSparseImageMemoryRequirements = {\n";
2060         s << "\tformatProperties = " << value.formatProperties << '\n';
2061         s << "\timageMipTailFirstLod = " << value.imageMipTailFirstLod << '\n';
2062         s << "\timageMipTailSize = " << value.imageMipTailSize << '\n';
2063         s << "\timageMipTailOffset = " << value.imageMipTailOffset << '\n';
2064         s << "\timageMipTailStride = " << value.imageMipTailStride << '\n';
2065         s << '}';
2066         return s;
2067 }
2068
2069 std::ostream& operator<< (std::ostream& s, const VkSparseMemoryBind& value)
2070 {
2071         s << "VkSparseMemoryBind = {\n";
2072         s << "\tresourceOffset = " << value.resourceOffset << '\n';
2073         s << "\tsize = " << value.size << '\n';
2074         s << "\tmemory = " << value.memory << '\n';
2075         s << "\tmemoryOffset = " << value.memoryOffset << '\n';
2076         s << "\tflags = " << getSparseMemoryBindFlagsStr(value.flags) << '\n';
2077         s << '}';
2078         return s;
2079 }
2080
2081 std::ostream& operator<< (std::ostream& s, const VkSparseBufferMemoryBindInfo& value)
2082 {
2083         s << "VkSparseBufferMemoryBindInfo = {\n";
2084         s << "\tbuffer = " << value.buffer << '\n';
2085         s << "\tbindCount = " << value.bindCount << '\n';
2086         s << "\tpBinds = " << value.pBinds << '\n';
2087         s << '}';
2088         return s;
2089 }
2090
2091 std::ostream& operator<< (std::ostream& s, const VkSparseImageOpaqueMemoryBindInfo& value)
2092 {
2093         s << "VkSparseImageOpaqueMemoryBindInfo = {\n";
2094         s << "\timage = " << value.image << '\n';
2095         s << "\tbindCount = " << value.bindCount << '\n';
2096         s << "\tpBinds = " << value.pBinds << '\n';
2097         s << '}';
2098         return s;
2099 }
2100
2101 std::ostream& operator<< (std::ostream& s, const VkImageSubresource& value)
2102 {
2103         s << "VkImageSubresource = {\n";
2104         s << "\taspectMask = " << getImageAspectFlagsStr(value.aspectMask) << '\n';
2105         s << "\tmipLevel = " << value.mipLevel << '\n';
2106         s << "\tarrayLayer = " << value.arrayLayer << '\n';
2107         s << '}';
2108         return s;
2109 }
2110
2111 std::ostream& operator<< (std::ostream& s, const VkOffset3D& value)
2112 {
2113         s << "VkOffset3D = {\n";
2114         s << "\tx = " << value.x << '\n';
2115         s << "\ty = " << value.y << '\n';
2116         s << "\tz = " << value.z << '\n';
2117         s << '}';
2118         return s;
2119 }
2120
2121 std::ostream& operator<< (std::ostream& s, const VkSparseImageMemoryBind& value)
2122 {
2123         s << "VkSparseImageMemoryBind = {\n";
2124         s << "\tsubresource = " << value.subresource << '\n';
2125         s << "\toffset = " << value.offset << '\n';
2126         s << "\textent = " << value.extent << '\n';
2127         s << "\tmemory = " << value.memory << '\n';
2128         s << "\tmemoryOffset = " << value.memoryOffset << '\n';
2129         s << "\tflags = " << getSparseMemoryBindFlagsStr(value.flags) << '\n';
2130         s << '}';
2131         return s;
2132 }
2133
2134 std::ostream& operator<< (std::ostream& s, const VkSparseImageMemoryBindInfo& value)
2135 {
2136         s << "VkSparseImageMemoryBindInfo = {\n";
2137         s << "\timage = " << value.image << '\n';
2138         s << "\tbindCount = " << value.bindCount << '\n';
2139         s << "\tpBinds = " << value.pBinds << '\n';
2140         s << '}';
2141         return s;
2142 }
2143
2144 std::ostream& operator<< (std::ostream& s, const VkBindSparseInfo& value)
2145 {
2146         s << "VkBindSparseInfo = {\n";
2147         s << "\tsType = " << value.sType << '\n';
2148         s << "\tpNext = " << value.pNext << '\n';
2149         s << "\twaitSemaphoreCount = " << value.waitSemaphoreCount << '\n';
2150         s << "\tpWaitSemaphores = " << value.pWaitSemaphores << '\n';
2151         s << "\tbufferBindCount = " << value.bufferBindCount << '\n';
2152         s << "\tpBufferBinds = " << value.pBufferBinds << '\n';
2153         s << "\timageOpaqueBindCount = " << value.imageOpaqueBindCount << '\n';
2154         s << "\tpImageOpaqueBinds = " << value.pImageOpaqueBinds << '\n';
2155         s << "\timageBindCount = " << value.imageBindCount << '\n';
2156         s << "\tpImageBinds = " << value.pImageBinds << '\n';
2157         s << "\tsignalSemaphoreCount = " << value.signalSemaphoreCount << '\n';
2158         s << "\tpSignalSemaphores = " << value.pSignalSemaphores << '\n';
2159         s << '}';
2160         return s;
2161 }
2162
2163 std::ostream& operator<< (std::ostream& s, const VkFenceCreateInfo& value)
2164 {
2165         s << "VkFenceCreateInfo = {\n";
2166         s << "\tsType = " << value.sType << '\n';
2167         s << "\tpNext = " << value.pNext << '\n';
2168         s << "\tflags = " << getFenceCreateFlagsStr(value.flags) << '\n';
2169         s << '}';
2170         return s;
2171 }
2172
2173 std::ostream& operator<< (std::ostream& s, const VkSemaphoreCreateInfo& value)
2174 {
2175         s << "VkSemaphoreCreateInfo = {\n";
2176         s << "\tsType = " << value.sType << '\n';
2177         s << "\tpNext = " << value.pNext << '\n';
2178         s << "\tflags = " << getSemaphoreCreateFlagsStr(value.flags) << '\n';
2179         s << '}';
2180         return s;
2181 }
2182
2183 std::ostream& operator<< (std::ostream& s, const VkEventCreateInfo& value)
2184 {
2185         s << "VkEventCreateInfo = {\n";
2186         s << "\tsType = " << value.sType << '\n';
2187         s << "\tpNext = " << value.pNext << '\n';
2188         s << "\tflags = " << getEventCreateFlagsStr(value.flags) << '\n';
2189         s << '}';
2190         return s;
2191 }
2192
2193 std::ostream& operator<< (std::ostream& s, const VkQueryPoolCreateInfo& value)
2194 {
2195         s << "VkQueryPoolCreateInfo = {\n";
2196         s << "\tsType = " << value.sType << '\n';
2197         s << "\tpNext = " << value.pNext << '\n';
2198         s << "\tflags = " << getQueryPoolCreateFlagsStr(value.flags) << '\n';
2199         s << "\tqueryType = " << value.queryType << '\n';
2200         s << "\tqueryCount = " << value.queryCount << '\n';
2201         s << "\tpipelineStatistics = " << getQueryPipelineStatisticFlagsStr(value.pipelineStatistics) << '\n';
2202         s << '}';
2203         return s;
2204 }
2205
2206 std::ostream& operator<< (std::ostream& s, const VkBufferCreateInfo& value)
2207 {
2208         s << "VkBufferCreateInfo = {\n";
2209         s << "\tsType = " << value.sType << '\n';
2210         s << "\tpNext = " << value.pNext << '\n';
2211         s << "\tflags = " << getBufferCreateFlagsStr(value.flags) << '\n';
2212         s << "\tsize = " << value.size << '\n';
2213         s << "\tusage = " << getBufferUsageFlagsStr(value.usage) << '\n';
2214         s << "\tsharingMode = " << value.sharingMode << '\n';
2215         s << "\tqueueFamilyIndexCount = " << value.queueFamilyIndexCount << '\n';
2216         s << "\tpQueueFamilyIndices = " << value.pQueueFamilyIndices << '\n';
2217         s << '}';
2218         return s;
2219 }
2220
2221 std::ostream& operator<< (std::ostream& s, const VkBufferViewCreateInfo& value)
2222 {
2223         s << "VkBufferViewCreateInfo = {\n";
2224         s << "\tsType = " << value.sType << '\n';
2225         s << "\tpNext = " << value.pNext << '\n';
2226         s << "\tflags = " << getBufferViewCreateFlagsStr(value.flags) << '\n';
2227         s << "\tbuffer = " << value.buffer << '\n';
2228         s << "\tformat = " << value.format << '\n';
2229         s << "\toffset = " << value.offset << '\n';
2230         s << "\trange = " << value.range << '\n';
2231         s << '}';
2232         return s;
2233 }
2234
2235 std::ostream& operator<< (std::ostream& s, const VkImageCreateInfo& value)
2236 {
2237         s << "VkImageCreateInfo = {\n";
2238         s << "\tsType = " << value.sType << '\n';
2239         s << "\tpNext = " << value.pNext << '\n';
2240         s << "\tflags = " << getImageCreateFlagsStr(value.flags) << '\n';
2241         s << "\timageType = " << value.imageType << '\n';
2242         s << "\tformat = " << value.format << '\n';
2243         s << "\textent = " << value.extent << '\n';
2244         s << "\tmipLevels = " << value.mipLevels << '\n';
2245         s << "\tarrayLayers = " << value.arrayLayers << '\n';
2246         s << "\tsamples = " << value.samples << '\n';
2247         s << "\ttiling = " << value.tiling << '\n';
2248         s << "\tusage = " << getImageUsageFlagsStr(value.usage) << '\n';
2249         s << "\tsharingMode = " << value.sharingMode << '\n';
2250         s << "\tqueueFamilyIndexCount = " << value.queueFamilyIndexCount << '\n';
2251         s << "\tpQueueFamilyIndices = " << value.pQueueFamilyIndices << '\n';
2252         s << "\tinitialLayout = " << value.initialLayout << '\n';
2253         s << '}';
2254         return s;
2255 }
2256
2257 std::ostream& operator<< (std::ostream& s, const VkSubresourceLayout& value)
2258 {
2259         s << "VkSubresourceLayout = {\n";
2260         s << "\toffset = " << value.offset << '\n';
2261         s << "\tsize = " << value.size << '\n';
2262         s << "\trowPitch = " << value.rowPitch << '\n';
2263         s << "\tarrayPitch = " << value.arrayPitch << '\n';
2264         s << "\tdepthPitch = " << value.depthPitch << '\n';
2265         s << '}';
2266         return s;
2267 }
2268
2269 std::ostream& operator<< (std::ostream& s, const VkComponentMapping& value)
2270 {
2271         s << "VkComponentMapping = {\n";
2272         s << "\tr = " << value.r << '\n';
2273         s << "\tg = " << value.g << '\n';
2274         s << "\tb = " << value.b << '\n';
2275         s << "\ta = " << value.a << '\n';
2276         s << '}';
2277         return s;
2278 }
2279
2280 std::ostream& operator<< (std::ostream& s, const VkImageSubresourceRange& value)
2281 {
2282         s << "VkImageSubresourceRange = {\n";
2283         s << "\taspectMask = " << getImageAspectFlagsStr(value.aspectMask) << '\n';
2284         s << "\tbaseMipLevel = " << value.baseMipLevel << '\n';
2285         s << "\tlevelCount = " << value.levelCount << '\n';
2286         s << "\tbaseArrayLayer = " << value.baseArrayLayer << '\n';
2287         s << "\tlayerCount = " << value.layerCount << '\n';
2288         s << '}';
2289         return s;
2290 }
2291
2292 std::ostream& operator<< (std::ostream& s, const VkImageViewCreateInfo& value)
2293 {
2294         s << "VkImageViewCreateInfo = {\n";
2295         s << "\tsType = " << value.sType << '\n';
2296         s << "\tpNext = " << value.pNext << '\n';
2297         s << "\tflags = " << getImageViewCreateFlagsStr(value.flags) << '\n';
2298         s << "\timage = " << value.image << '\n';
2299         s << "\tviewType = " << value.viewType << '\n';
2300         s << "\tformat = " << value.format << '\n';
2301         s << "\tcomponents = " << value.components << '\n';
2302         s << "\tsubresourceRange = " << value.subresourceRange << '\n';
2303         s << '}';
2304         return s;
2305 }
2306
2307 std::ostream& operator<< (std::ostream& s, const VkShaderModuleCreateInfo& value)
2308 {
2309         s << "VkShaderModuleCreateInfo = {\n";
2310         s << "\tsType = " << value.sType << '\n';
2311         s << "\tpNext = " << value.pNext << '\n';
2312         s << "\tflags = " << getShaderModuleCreateFlagsStr(value.flags) << '\n';
2313         s << "\tcodeSize = " << value.codeSize << '\n';
2314         s << "\tpCode = " << value.pCode << '\n';
2315         s << '}';
2316         return s;
2317 }
2318
2319 std::ostream& operator<< (std::ostream& s, const VkPipelineCacheCreateInfo& value)
2320 {
2321         s << "VkPipelineCacheCreateInfo = {\n";
2322         s << "\tsType = " << value.sType << '\n';
2323         s << "\tpNext = " << value.pNext << '\n';
2324         s << "\tflags = " << getPipelineCacheCreateFlagsStr(value.flags) << '\n';
2325         s << "\tinitialDataSize = " << value.initialDataSize << '\n';
2326         s << "\tpInitialData = " << value.pInitialData << '\n';
2327         s << '}';
2328         return s;
2329 }
2330
2331 std::ostream& operator<< (std::ostream& s, const VkSpecializationMapEntry& value)
2332 {
2333         s << "VkSpecializationMapEntry = {\n";
2334         s << "\tconstantID = " << value.constantID << '\n';
2335         s << "\toffset = " << value.offset << '\n';
2336         s << "\tsize = " << value.size << '\n';
2337         s << '}';
2338         return s;
2339 }
2340
2341 std::ostream& operator<< (std::ostream& s, const VkSpecializationInfo& value)
2342 {
2343         s << "VkSpecializationInfo = {\n";
2344         s << "\tmapEntryCount = " << value.mapEntryCount << '\n';
2345         s << "\tpMapEntries = " << value.pMapEntries << '\n';
2346         s << "\tdataSize = " << value.dataSize << '\n';
2347         s << "\tpData = " << value.pData << '\n';
2348         s << '}';
2349         return s;
2350 }
2351
2352 std::ostream& operator<< (std::ostream& s, const VkPipelineShaderStageCreateInfo& value)
2353 {
2354         s << "VkPipelineShaderStageCreateInfo = {\n";
2355         s << "\tsType = " << value.sType << '\n';
2356         s << "\tpNext = " << value.pNext << '\n';
2357         s << "\tflags = " << getPipelineShaderStageCreateFlagsStr(value.flags) << '\n';
2358         s << "\tstage = " << value.stage << '\n';
2359         s << "\tmodule = " << value.module << '\n';
2360         s << "\tpName = " << getCharPtrStr(value.pName) << '\n';
2361         s << "\tpSpecializationInfo = " << value.pSpecializationInfo << '\n';
2362         s << '}';
2363         return s;
2364 }
2365
2366 std::ostream& operator<< (std::ostream& s, const VkVertexInputBindingDescription& value)
2367 {
2368         s << "VkVertexInputBindingDescription = {\n";
2369         s << "\tbinding = " << value.binding << '\n';
2370         s << "\tstride = " << value.stride << '\n';
2371         s << "\tinputRate = " << value.inputRate << '\n';
2372         s << '}';
2373         return s;
2374 }
2375
2376 std::ostream& operator<< (std::ostream& s, const VkVertexInputAttributeDescription& value)
2377 {
2378         s << "VkVertexInputAttributeDescription = {\n";
2379         s << "\tlocation = " << value.location << '\n';
2380         s << "\tbinding = " << value.binding << '\n';
2381         s << "\tformat = " << value.format << '\n';
2382         s << "\toffset = " << value.offset << '\n';
2383         s << '}';
2384         return s;
2385 }
2386
2387 std::ostream& operator<< (std::ostream& s, const VkPipelineVertexInputStateCreateInfo& value)
2388 {
2389         s << "VkPipelineVertexInputStateCreateInfo = {\n";
2390         s << "\tsType = " << value.sType << '\n';
2391         s << "\tpNext = " << value.pNext << '\n';
2392         s << "\tflags = " << getPipelineVertexInputStateCreateFlagsStr(value.flags) << '\n';
2393         s << "\tvertexBindingDescriptionCount = " << value.vertexBindingDescriptionCount << '\n';
2394         s << "\tpVertexBindingDescriptions = " << value.pVertexBindingDescriptions << '\n';
2395         s << "\tvertexAttributeDescriptionCount = " << value.vertexAttributeDescriptionCount << '\n';
2396         s << "\tpVertexAttributeDescriptions = " << value.pVertexAttributeDescriptions << '\n';
2397         s << '}';
2398         return s;
2399 }
2400
2401 std::ostream& operator<< (std::ostream& s, const VkPipelineInputAssemblyStateCreateInfo& value)
2402 {
2403         s << "VkPipelineInputAssemblyStateCreateInfo = {\n";
2404         s << "\tsType = " << value.sType << '\n';
2405         s << "\tpNext = " << value.pNext << '\n';
2406         s << "\tflags = " << getPipelineInputAssemblyStateCreateFlagsStr(value.flags) << '\n';
2407         s << "\ttopology = " << value.topology << '\n';
2408         s << "\tprimitiveRestartEnable = " << value.primitiveRestartEnable << '\n';
2409         s << '}';
2410         return s;
2411 }
2412
2413 std::ostream& operator<< (std::ostream& s, const VkPipelineTessellationStateCreateInfo& value)
2414 {
2415         s << "VkPipelineTessellationStateCreateInfo = {\n";
2416         s << "\tsType = " << value.sType << '\n';
2417         s << "\tpNext = " << value.pNext << '\n';
2418         s << "\tflags = " << getPipelineTessellationStateCreateFlagsStr(value.flags) << '\n';
2419         s << "\tpatchControlPoints = " << value.patchControlPoints << '\n';
2420         s << '}';
2421         return s;
2422 }
2423
2424 std::ostream& operator<< (std::ostream& s, const VkViewport& value)
2425 {
2426         s << "VkViewport = {\n";
2427         s << "\tx = " << value.x << '\n';
2428         s << "\ty = " << value.y << '\n';
2429         s << "\twidth = " << value.width << '\n';
2430         s << "\theight = " << value.height << '\n';
2431         s << "\tminDepth = " << value.minDepth << '\n';
2432         s << "\tmaxDepth = " << value.maxDepth << '\n';
2433         s << '}';
2434         return s;
2435 }
2436
2437 std::ostream& operator<< (std::ostream& s, const VkOffset2D& value)
2438 {
2439         s << "VkOffset2D = {\n";
2440         s << "\tx = " << value.x << '\n';
2441         s << "\ty = " << value.y << '\n';
2442         s << '}';
2443         return s;
2444 }
2445
2446 std::ostream& operator<< (std::ostream& s, const VkExtent2D& value)
2447 {
2448         s << "VkExtent2D = {\n";
2449         s << "\twidth = " << value.width << '\n';
2450         s << "\theight = " << value.height << '\n';
2451         s << '}';
2452         return s;
2453 }
2454
2455 std::ostream& operator<< (std::ostream& s, const VkRect2D& value)
2456 {
2457         s << "VkRect2D = {\n";
2458         s << "\toffset = " << value.offset << '\n';
2459         s << "\textent = " << value.extent << '\n';
2460         s << '}';
2461         return s;
2462 }
2463
2464 std::ostream& operator<< (std::ostream& s, const VkPipelineViewportStateCreateInfo& value)
2465 {
2466         s << "VkPipelineViewportStateCreateInfo = {\n";
2467         s << "\tsType = " << value.sType << '\n';
2468         s << "\tpNext = " << value.pNext << '\n';
2469         s << "\tflags = " << getPipelineViewportStateCreateFlagsStr(value.flags) << '\n';
2470         s << "\tviewportCount = " << value.viewportCount << '\n';
2471         s << "\tpViewports = " << value.pViewports << '\n';
2472         s << "\tscissorCount = " << value.scissorCount << '\n';
2473         s << "\tpScissors = " << value.pScissors << '\n';
2474         s << '}';
2475         return s;
2476 }
2477
2478 std::ostream& operator<< (std::ostream& s, const VkPipelineRasterizationStateCreateInfo& value)
2479 {
2480         s << "VkPipelineRasterizationStateCreateInfo = {\n";
2481         s << "\tsType = " << value.sType << '\n';
2482         s << "\tpNext = " << value.pNext << '\n';
2483         s << "\tflags = " << getPipelineRasterizationStateCreateFlagsStr(value.flags) << '\n';
2484         s << "\tdepthClampEnable = " << value.depthClampEnable << '\n';
2485         s << "\trasterizerDiscardEnable = " << value.rasterizerDiscardEnable << '\n';
2486         s << "\tpolygonMode = " << value.polygonMode << '\n';
2487         s << "\tcullMode = " << getCullModeFlagsStr(value.cullMode) << '\n';
2488         s << "\tfrontFace = " << value.frontFace << '\n';
2489         s << "\tdepthBiasEnable = " << value.depthBiasEnable << '\n';
2490         s << "\tdepthBiasConstantFactor = " << value.depthBiasConstantFactor << '\n';
2491         s << "\tdepthBiasClamp = " << value.depthBiasClamp << '\n';
2492         s << "\tdepthBiasSlopeFactor = " << value.depthBiasSlopeFactor << '\n';
2493         s << "\tlineWidth = " << value.lineWidth << '\n';
2494         s << '}';
2495         return s;
2496 }
2497
2498 std::ostream& operator<< (std::ostream& s, const VkPipelineMultisampleStateCreateInfo& value)
2499 {
2500         s << "VkPipelineMultisampleStateCreateInfo = {\n";
2501         s << "\tsType = " << value.sType << '\n';
2502         s << "\tpNext = " << value.pNext << '\n';
2503         s << "\tflags = " << getPipelineMultisampleStateCreateFlagsStr(value.flags) << '\n';
2504         s << "\trasterizationSamples = " << value.rasterizationSamples << '\n';
2505         s << "\tsampleShadingEnable = " << value.sampleShadingEnable << '\n';
2506         s << "\tminSampleShading = " << value.minSampleShading << '\n';
2507         s << "\tpSampleMask = " << value.pSampleMask << '\n';
2508         s << "\talphaToCoverageEnable = " << value.alphaToCoverageEnable << '\n';
2509         s << "\talphaToOneEnable = " << value.alphaToOneEnable << '\n';
2510         s << '}';
2511         return s;
2512 }
2513
2514 std::ostream& operator<< (std::ostream& s, const VkStencilOpState& value)
2515 {
2516         s << "VkStencilOpState = {\n";
2517         s << "\tfailOp = " << value.failOp << '\n';
2518         s << "\tpassOp = " << value.passOp << '\n';
2519         s << "\tdepthFailOp = " << value.depthFailOp << '\n';
2520         s << "\tcompareOp = " << value.compareOp << '\n';
2521         s << "\tcompareMask = " << value.compareMask << '\n';
2522         s << "\twriteMask = " << value.writeMask << '\n';
2523         s << "\treference = " << value.reference << '\n';
2524         s << '}';
2525         return s;
2526 }
2527
2528 std::ostream& operator<< (std::ostream& s, const VkPipelineDepthStencilStateCreateInfo& value)
2529 {
2530         s << "VkPipelineDepthStencilStateCreateInfo = {\n";
2531         s << "\tsType = " << value.sType << '\n';
2532         s << "\tpNext = " << value.pNext << '\n';
2533         s << "\tflags = " << getPipelineDepthStencilStateCreateFlagsStr(value.flags) << '\n';
2534         s << "\tdepthTestEnable = " << value.depthTestEnable << '\n';
2535         s << "\tdepthWriteEnable = " << value.depthWriteEnable << '\n';
2536         s << "\tdepthCompareOp = " << value.depthCompareOp << '\n';
2537         s << "\tdepthBoundsTestEnable = " << value.depthBoundsTestEnable << '\n';
2538         s << "\tstencilTestEnable = " << value.stencilTestEnable << '\n';
2539         s << "\tfront = " << value.front << '\n';
2540         s << "\tback = " << value.back << '\n';
2541         s << "\tminDepthBounds = " << value.minDepthBounds << '\n';
2542         s << "\tmaxDepthBounds = " << value.maxDepthBounds << '\n';
2543         s << '}';
2544         return s;
2545 }
2546
2547 std::ostream& operator<< (std::ostream& s, const VkPipelineColorBlendAttachmentState& value)
2548 {
2549         s << "VkPipelineColorBlendAttachmentState = {\n";
2550         s << "\tblendEnable = " << value.blendEnable << '\n';
2551         s << "\tsrcColorBlendFactor = " << value.srcColorBlendFactor << '\n';
2552         s << "\tdstColorBlendFactor = " << value.dstColorBlendFactor << '\n';
2553         s << "\tcolorBlendOp = " << value.colorBlendOp << '\n';
2554         s << "\tsrcAlphaBlendFactor = " << value.srcAlphaBlendFactor << '\n';
2555         s << "\tdstAlphaBlendFactor = " << value.dstAlphaBlendFactor << '\n';
2556         s << "\talphaBlendOp = " << value.alphaBlendOp << '\n';
2557         s << "\tcolorWriteMask = " << getColorComponentFlagsStr(value.colorWriteMask) << '\n';
2558         s << '}';
2559         return s;
2560 }
2561
2562 std::ostream& operator<< (std::ostream& s, const VkPipelineColorBlendStateCreateInfo& value)
2563 {
2564         s << "VkPipelineColorBlendStateCreateInfo = {\n";
2565         s << "\tsType = " << value.sType << '\n';
2566         s << "\tpNext = " << value.pNext << '\n';
2567         s << "\tflags = " << getPipelineColorBlendStateCreateFlagsStr(value.flags) << '\n';
2568         s << "\tlogicOpEnable = " << value.logicOpEnable << '\n';
2569         s << "\tlogicOp = " << value.logicOp << '\n';
2570         s << "\tattachmentCount = " << value.attachmentCount << '\n';
2571         s << "\tpAttachments = " << value.pAttachments << '\n';
2572         s << "\tblendConstants = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.blendConstants), DE_ARRAY_END(value.blendConstants)) << '\n';
2573         s << '}';
2574         return s;
2575 }
2576
2577 std::ostream& operator<< (std::ostream& s, const VkPipelineDynamicStateCreateInfo& value)
2578 {
2579         s << "VkPipelineDynamicStateCreateInfo = {\n";
2580         s << "\tsType = " << value.sType << '\n';
2581         s << "\tpNext = " << value.pNext << '\n';
2582         s << "\tflags = " << getPipelineDynamicStateCreateFlagsStr(value.flags) << '\n';
2583         s << "\tdynamicStateCount = " << value.dynamicStateCount << '\n';
2584         s << "\tpDynamicStates = " << value.pDynamicStates << '\n';
2585         s << '}';
2586         return s;
2587 }
2588
2589 std::ostream& operator<< (std::ostream& s, const VkGraphicsPipelineCreateInfo& value)
2590 {
2591         s << "VkGraphicsPipelineCreateInfo = {\n";
2592         s << "\tsType = " << value.sType << '\n';
2593         s << "\tpNext = " << value.pNext << '\n';
2594         s << "\tflags = " << getPipelineCreateFlagsStr(value.flags) << '\n';
2595         s << "\tstageCount = " << value.stageCount << '\n';
2596         s << "\tpStages = " << value.pStages << '\n';
2597         s << "\tpVertexInputState = " << value.pVertexInputState << '\n';
2598         s << "\tpInputAssemblyState = " << value.pInputAssemblyState << '\n';
2599         s << "\tpTessellationState = " << value.pTessellationState << '\n';
2600         s << "\tpViewportState = " << value.pViewportState << '\n';
2601         s << "\tpRasterizationState = " << value.pRasterizationState << '\n';
2602         s << "\tpMultisampleState = " << value.pMultisampleState << '\n';
2603         s << "\tpDepthStencilState = " << value.pDepthStencilState << '\n';
2604         s << "\tpColorBlendState = " << value.pColorBlendState << '\n';
2605         s << "\tpDynamicState = " << value.pDynamicState << '\n';
2606         s << "\tlayout = " << value.layout << '\n';
2607         s << "\trenderPass = " << value.renderPass << '\n';
2608         s << "\tsubpass = " << value.subpass << '\n';
2609         s << "\tbasePipelineHandle = " << value.basePipelineHandle << '\n';
2610         s << "\tbasePipelineIndex = " << value.basePipelineIndex << '\n';
2611         s << '}';
2612         return s;
2613 }
2614
2615 std::ostream& operator<< (std::ostream& s, const VkComputePipelineCreateInfo& value)
2616 {
2617         s << "VkComputePipelineCreateInfo = {\n";
2618         s << "\tsType = " << value.sType << '\n';
2619         s << "\tpNext = " << value.pNext << '\n';
2620         s << "\tflags = " << getPipelineCreateFlagsStr(value.flags) << '\n';
2621         s << "\tstage = " << value.stage << '\n';
2622         s << "\tlayout = " << value.layout << '\n';
2623         s << "\tbasePipelineHandle = " << value.basePipelineHandle << '\n';
2624         s << "\tbasePipelineIndex = " << value.basePipelineIndex << '\n';
2625         s << '}';
2626         return s;
2627 }
2628
2629 std::ostream& operator<< (std::ostream& s, const VkPushConstantRange& value)
2630 {
2631         s << "VkPushConstantRange = {\n";
2632         s << "\tstageFlags = " << getShaderStageFlagsStr(value.stageFlags) << '\n';
2633         s << "\toffset = " << value.offset << '\n';
2634         s << "\tsize = " << value.size << '\n';
2635         s << '}';
2636         return s;
2637 }
2638
2639 std::ostream& operator<< (std::ostream& s, const VkPipelineLayoutCreateInfo& value)
2640 {
2641         s << "VkPipelineLayoutCreateInfo = {\n";
2642         s << "\tsType = " << value.sType << '\n';
2643         s << "\tpNext = " << value.pNext << '\n';
2644         s << "\tflags = " << getPipelineLayoutCreateFlagsStr(value.flags) << '\n';
2645         s << "\tsetLayoutCount = " << value.setLayoutCount << '\n';
2646         s << "\tpSetLayouts = " << value.pSetLayouts << '\n';
2647         s << "\tpushConstantRangeCount = " << value.pushConstantRangeCount << '\n';
2648         s << "\tpPushConstantRanges = " << value.pPushConstantRanges << '\n';
2649         s << '}';
2650         return s;
2651 }
2652
2653 std::ostream& operator<< (std::ostream& s, const VkSamplerCreateInfo& value)
2654 {
2655         s << "VkSamplerCreateInfo = {\n";
2656         s << "\tsType = " << value.sType << '\n';
2657         s << "\tpNext = " << value.pNext << '\n';
2658         s << "\tflags = " << getSamplerCreateFlagsStr(value.flags) << '\n';
2659         s << "\tmagFilter = " << value.magFilter << '\n';
2660         s << "\tminFilter = " << value.minFilter << '\n';
2661         s << "\tmipmapMode = " << value.mipmapMode << '\n';
2662         s << "\taddressModeU = " << value.addressModeU << '\n';
2663         s << "\taddressModeV = " << value.addressModeV << '\n';
2664         s << "\taddressModeW = " << value.addressModeW << '\n';
2665         s << "\tmipLodBias = " << value.mipLodBias << '\n';
2666         s << "\tanisotropyEnable = " << value.anisotropyEnable << '\n';
2667         s << "\tmaxAnisotropy = " << value.maxAnisotropy << '\n';
2668         s << "\tcompareEnable = " << value.compareEnable << '\n';
2669         s << "\tcompareOp = " << value.compareOp << '\n';
2670         s << "\tminLod = " << value.minLod << '\n';
2671         s << "\tmaxLod = " << value.maxLod << '\n';
2672         s << "\tborderColor = " << value.borderColor << '\n';
2673         s << "\tunnormalizedCoordinates = " << value.unnormalizedCoordinates << '\n';
2674         s << '}';
2675         return s;
2676 }
2677
2678 std::ostream& operator<< (std::ostream& s, const VkDescriptorSetLayoutBinding& value)
2679 {
2680         s << "VkDescriptorSetLayoutBinding = {\n";
2681         s << "\tbinding = " << value.binding << '\n';
2682         s << "\tdescriptorType = " << value.descriptorType << '\n';
2683         s << "\tdescriptorCount = " << value.descriptorCount << '\n';
2684         s << "\tstageFlags = " << getShaderStageFlagsStr(value.stageFlags) << '\n';
2685         s << "\tpImmutableSamplers = " << value.pImmutableSamplers << '\n';
2686         s << '}';
2687         return s;
2688 }
2689
2690 std::ostream& operator<< (std::ostream& s, const VkDescriptorSetLayoutCreateInfo& value)
2691 {
2692         s << "VkDescriptorSetLayoutCreateInfo = {\n";
2693         s << "\tsType = " << value.sType << '\n';
2694         s << "\tpNext = " << value.pNext << '\n';
2695         s << "\tflags = " << getDescriptorSetLayoutCreateFlagsStr(value.flags) << '\n';
2696         s << "\tbindingCount = " << value.bindingCount << '\n';
2697         s << "\tpBindings = " << value.pBindings << '\n';
2698         s << '}';
2699         return s;
2700 }
2701
2702 std::ostream& operator<< (std::ostream& s, const VkDescriptorPoolSize& value)
2703 {
2704         s << "VkDescriptorPoolSize = {\n";
2705         s << "\ttype = " << value.type << '\n';
2706         s << "\tdescriptorCount = " << value.descriptorCount << '\n';
2707         s << '}';
2708         return s;
2709 }
2710
2711 std::ostream& operator<< (std::ostream& s, const VkDescriptorPoolCreateInfo& value)
2712 {
2713         s << "VkDescriptorPoolCreateInfo = {\n";
2714         s << "\tsType = " << value.sType << '\n';
2715         s << "\tpNext = " << value.pNext << '\n';
2716         s << "\tflags = " << getDescriptorPoolCreateFlagsStr(value.flags) << '\n';
2717         s << "\tmaxSets = " << value.maxSets << '\n';
2718         s << "\tpoolSizeCount = " << value.poolSizeCount << '\n';
2719         s << "\tpPoolSizes = " << value.pPoolSizes << '\n';
2720         s << '}';
2721         return s;
2722 }
2723
2724 std::ostream& operator<< (std::ostream& s, const VkDescriptorSetAllocateInfo& value)
2725 {
2726         s << "VkDescriptorSetAllocateInfo = {\n";
2727         s << "\tsType = " << value.sType << '\n';
2728         s << "\tpNext = " << value.pNext << '\n';
2729         s << "\tdescriptorPool = " << value.descriptorPool << '\n';
2730         s << "\tdescriptorSetCount = " << value.descriptorSetCount << '\n';
2731         s << "\tpSetLayouts = " << value.pSetLayouts << '\n';
2732         s << '}';
2733         return s;
2734 }
2735
2736 std::ostream& operator<< (std::ostream& s, const VkDescriptorImageInfo& value)
2737 {
2738         s << "VkDescriptorImageInfo = {\n";
2739         s << "\tsampler = " << value.sampler << '\n';
2740         s << "\timageView = " << value.imageView << '\n';
2741         s << "\timageLayout = " << value.imageLayout << '\n';
2742         s << '}';
2743         return s;
2744 }
2745
2746 std::ostream& operator<< (std::ostream& s, const VkDescriptorBufferInfo& value)
2747 {
2748         s << "VkDescriptorBufferInfo = {\n";
2749         s << "\tbuffer = " << value.buffer << '\n';
2750         s << "\toffset = " << value.offset << '\n';
2751         s << "\trange = " << value.range << '\n';
2752         s << '}';
2753         return s;
2754 }
2755
2756 std::ostream& operator<< (std::ostream& s, const VkWriteDescriptorSet& value)
2757 {
2758         s << "VkWriteDescriptorSet = {\n";
2759         s << "\tsType = " << value.sType << '\n';
2760         s << "\tpNext = " << value.pNext << '\n';
2761         s << "\tdstSet = " << value.dstSet << '\n';
2762         s << "\tdstBinding = " << value.dstBinding << '\n';
2763         s << "\tdstArrayElement = " << value.dstArrayElement << '\n';
2764         s << "\tdescriptorCount = " << value.descriptorCount << '\n';
2765         s << "\tdescriptorType = " << value.descriptorType << '\n';
2766         s << "\tpImageInfo = " << value.pImageInfo << '\n';
2767         s << "\tpBufferInfo = " << value.pBufferInfo << '\n';
2768         s << "\tpTexelBufferView = " << value.pTexelBufferView << '\n';
2769         s << '}';
2770         return s;
2771 }
2772
2773 std::ostream& operator<< (std::ostream& s, const VkCopyDescriptorSet& value)
2774 {
2775         s << "VkCopyDescriptorSet = {\n";
2776         s << "\tsType = " << value.sType << '\n';
2777         s << "\tpNext = " << value.pNext << '\n';
2778         s << "\tsrcSet = " << value.srcSet << '\n';
2779         s << "\tsrcBinding = " << value.srcBinding << '\n';
2780         s << "\tsrcArrayElement = " << value.srcArrayElement << '\n';
2781         s << "\tdstSet = " << value.dstSet << '\n';
2782         s << "\tdstBinding = " << value.dstBinding << '\n';
2783         s << "\tdstArrayElement = " << value.dstArrayElement << '\n';
2784         s << "\tdescriptorCount = " << value.descriptorCount << '\n';
2785         s << '}';
2786         return s;
2787 }
2788
2789 std::ostream& operator<< (std::ostream& s, const VkFramebufferCreateInfo& value)
2790 {
2791         s << "VkFramebufferCreateInfo = {\n";
2792         s << "\tsType = " << value.sType << '\n';
2793         s << "\tpNext = " << value.pNext << '\n';
2794         s << "\tflags = " << getFramebufferCreateFlagsStr(value.flags) << '\n';
2795         s << "\trenderPass = " << value.renderPass << '\n';
2796         s << "\tattachmentCount = " << value.attachmentCount << '\n';
2797         s << "\tpAttachments = " << value.pAttachments << '\n';
2798         s << "\twidth = " << value.width << '\n';
2799         s << "\theight = " << value.height << '\n';
2800         s << "\tlayers = " << value.layers << '\n';
2801         s << '}';
2802         return s;
2803 }
2804
2805 std::ostream& operator<< (std::ostream& s, const VkAttachmentDescription& value)
2806 {
2807         s << "VkAttachmentDescription = {\n";
2808         s << "\tflags = " << getAttachmentDescriptionFlagsStr(value.flags) << '\n';
2809         s << "\tformat = " << value.format << '\n';
2810         s << "\tsamples = " << value.samples << '\n';
2811         s << "\tloadOp = " << value.loadOp << '\n';
2812         s << "\tstoreOp = " << value.storeOp << '\n';
2813         s << "\tstencilLoadOp = " << value.stencilLoadOp << '\n';
2814         s << "\tstencilStoreOp = " << value.stencilStoreOp << '\n';
2815         s << "\tinitialLayout = " << value.initialLayout << '\n';
2816         s << "\tfinalLayout = " << value.finalLayout << '\n';
2817         s << '}';
2818         return s;
2819 }
2820
2821 std::ostream& operator<< (std::ostream& s, const VkAttachmentReference& value)
2822 {
2823         s << "VkAttachmentReference = {\n";
2824         s << "\tattachment = " << value.attachment << '\n';
2825         s << "\tlayout = " << value.layout << '\n';
2826         s << '}';
2827         return s;
2828 }
2829
2830 std::ostream& operator<< (std::ostream& s, const VkSubpassDescription& value)
2831 {
2832         s << "VkSubpassDescription = {\n";
2833         s << "\tflags = " << getSubpassDescriptionFlagsStr(value.flags) << '\n';
2834         s << "\tpipelineBindPoint = " << value.pipelineBindPoint << '\n';
2835         s << "\tinputAttachmentCount = " << value.inputAttachmentCount << '\n';
2836         s << "\tpInputAttachments = " << value.pInputAttachments << '\n';
2837         s << "\tcolorAttachmentCount = " << value.colorAttachmentCount << '\n';
2838         s << "\tpColorAttachments = " << value.pColorAttachments << '\n';
2839         s << "\tpResolveAttachments = " << value.pResolveAttachments << '\n';
2840         s << "\tpDepthStencilAttachment = " << value.pDepthStencilAttachment << '\n';
2841         s << "\tpreserveAttachmentCount = " << value.preserveAttachmentCount << '\n';
2842         s << "\tpPreserveAttachments = " << value.pPreserveAttachments << '\n';
2843         s << '}';
2844         return s;
2845 }
2846
2847 std::ostream& operator<< (std::ostream& s, const VkSubpassDependency& value)
2848 {
2849         s << "VkSubpassDependency = {\n";
2850         s << "\tsrcSubpass = " << value.srcSubpass << '\n';
2851         s << "\tdstSubpass = " << value.dstSubpass << '\n';
2852         s << "\tsrcStageMask = " << getPipelineStageFlagsStr(value.srcStageMask) << '\n';
2853         s << "\tdstStageMask = " << getPipelineStageFlagsStr(value.dstStageMask) << '\n';
2854         s << "\tsrcAccessMask = " << getAccessFlagsStr(value.srcAccessMask) << '\n';
2855         s << "\tdstAccessMask = " << getAccessFlagsStr(value.dstAccessMask) << '\n';
2856         s << "\tdependencyFlags = " << getDependencyFlagsStr(value.dependencyFlags) << '\n';
2857         s << '}';
2858         return s;
2859 }
2860
2861 std::ostream& operator<< (std::ostream& s, const VkRenderPassCreateInfo& value)
2862 {
2863         s << "VkRenderPassCreateInfo = {\n";
2864         s << "\tsType = " << value.sType << '\n';
2865         s << "\tpNext = " << value.pNext << '\n';
2866         s << "\tflags = " << getRenderPassCreateFlagsStr(value.flags) << '\n';
2867         s << "\tattachmentCount = " << value.attachmentCount << '\n';
2868         s << "\tpAttachments = " << value.pAttachments << '\n';
2869         s << "\tsubpassCount = " << value.subpassCount << '\n';
2870         s << "\tpSubpasses = " << value.pSubpasses << '\n';
2871         s << "\tdependencyCount = " << value.dependencyCount << '\n';
2872         s << "\tpDependencies = " << value.pDependencies << '\n';
2873         s << '}';
2874         return s;
2875 }
2876
2877 std::ostream& operator<< (std::ostream& s, const VkCommandPoolCreateInfo& value)
2878 {
2879         s << "VkCommandPoolCreateInfo = {\n";
2880         s << "\tsType = " << value.sType << '\n';
2881         s << "\tpNext = " << value.pNext << '\n';
2882         s << "\tflags = " << getCommandPoolCreateFlagsStr(value.flags) << '\n';
2883         s << "\tqueueFamilyIndex = " << value.queueFamilyIndex << '\n';
2884         s << '}';
2885         return s;
2886 }
2887
2888 std::ostream& operator<< (std::ostream& s, const VkCommandBufferAllocateInfo& value)
2889 {
2890         s << "VkCommandBufferAllocateInfo = {\n";
2891         s << "\tsType = " << value.sType << '\n';
2892         s << "\tpNext = " << value.pNext << '\n';
2893         s << "\tcommandPool = " << value.commandPool << '\n';
2894         s << "\tlevel = " << value.level << '\n';
2895         s << "\tcommandBufferCount = " << value.commandBufferCount << '\n';
2896         s << '}';
2897         return s;
2898 }
2899
2900 std::ostream& operator<< (std::ostream& s, const VkCommandBufferInheritanceInfo& value)
2901 {
2902         s << "VkCommandBufferInheritanceInfo = {\n";
2903         s << "\tsType = " << value.sType << '\n';
2904         s << "\tpNext = " << value.pNext << '\n';
2905         s << "\trenderPass = " << value.renderPass << '\n';
2906         s << "\tsubpass = " << value.subpass << '\n';
2907         s << "\tframebuffer = " << value.framebuffer << '\n';
2908         s << "\tocclusionQueryEnable = " << value.occlusionQueryEnable << '\n';
2909         s << "\tqueryFlags = " << getQueryControlFlagsStr(value.queryFlags) << '\n';
2910         s << "\tpipelineStatistics = " << getQueryPipelineStatisticFlagsStr(value.pipelineStatistics) << '\n';
2911         s << '}';
2912         return s;
2913 }
2914
2915 std::ostream& operator<< (std::ostream& s, const VkCommandBufferBeginInfo& value)
2916 {
2917         s << "VkCommandBufferBeginInfo = {\n";
2918         s << "\tsType = " << value.sType << '\n';
2919         s << "\tpNext = " << value.pNext << '\n';
2920         s << "\tflags = " << getCommandBufferUsageFlagsStr(value.flags) << '\n';
2921         s << "\tpInheritanceInfo = " << value.pInheritanceInfo << '\n';
2922         s << '}';
2923         return s;
2924 }
2925
2926 std::ostream& operator<< (std::ostream& s, const VkBufferCopy& value)
2927 {
2928         s << "VkBufferCopy = {\n";
2929         s << "\tsrcOffset = " << value.srcOffset << '\n';
2930         s << "\tdstOffset = " << value.dstOffset << '\n';
2931         s << "\tsize = " << value.size << '\n';
2932         s << '}';
2933         return s;
2934 }
2935
2936 std::ostream& operator<< (std::ostream& s, const VkImageSubresourceLayers& value)
2937 {
2938         s << "VkImageSubresourceLayers = {\n";
2939         s << "\taspectMask = " << getImageAspectFlagsStr(value.aspectMask) << '\n';
2940         s << "\tmipLevel = " << value.mipLevel << '\n';
2941         s << "\tbaseArrayLayer = " << value.baseArrayLayer << '\n';
2942         s << "\tlayerCount = " << value.layerCount << '\n';
2943         s << '}';
2944         return s;
2945 }
2946
2947 std::ostream& operator<< (std::ostream& s, const VkImageCopy& value)
2948 {
2949         s << "VkImageCopy = {\n";
2950         s << "\tsrcSubresource = " << value.srcSubresource << '\n';
2951         s << "\tsrcOffset = " << value.srcOffset << '\n';
2952         s << "\tdstSubresource = " << value.dstSubresource << '\n';
2953         s << "\tdstOffset = " << value.dstOffset << '\n';
2954         s << "\textent = " << value.extent << '\n';
2955         s << '}';
2956         return s;
2957 }
2958
2959 std::ostream& operator<< (std::ostream& s, const VkImageBlit& value)
2960 {
2961         s << "VkImageBlit = {\n";
2962         s << "\tsrcSubresource = " << value.srcSubresource << '\n';
2963         s << "\tsrcOffsets = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.srcOffsets), DE_ARRAY_END(value.srcOffsets)) << '\n';
2964         s << "\tdstSubresource = " << value.dstSubresource << '\n';
2965         s << "\tdstOffsets = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.dstOffsets), DE_ARRAY_END(value.dstOffsets)) << '\n';
2966         s << '}';
2967         return s;
2968 }
2969
2970 std::ostream& operator<< (std::ostream& s, const VkBufferImageCopy& value)
2971 {
2972         s << "VkBufferImageCopy = {\n";
2973         s << "\tbufferOffset = " << value.bufferOffset << '\n';
2974         s << "\tbufferRowLength = " << value.bufferRowLength << '\n';
2975         s << "\tbufferImageHeight = " << value.bufferImageHeight << '\n';
2976         s << "\timageSubresource = " << value.imageSubresource << '\n';
2977         s << "\timageOffset = " << value.imageOffset << '\n';
2978         s << "\timageExtent = " << value.imageExtent << '\n';
2979         s << '}';
2980         return s;
2981 }
2982
2983 std::ostream& operator<< (std::ostream& s, const VkClearColorValue& value)
2984 {
2985         s << "VkClearColorValue = {\n";
2986         s << "\tfloat32 = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.float32), DE_ARRAY_END(value.float32)) << '\n';
2987         s << "\tint32 = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.int32), DE_ARRAY_END(value.int32)) << '\n';
2988         s << "\tuint32 = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.uint32), DE_ARRAY_END(value.uint32)) << '\n';
2989         s << '}';
2990         return s;
2991 }
2992
2993 std::ostream& operator<< (std::ostream& s, const VkClearDepthStencilValue& value)
2994 {
2995         s << "VkClearDepthStencilValue = {\n";
2996         s << "\tdepth = " << value.depth << '\n';
2997         s << "\tstencil = " << value.stencil << '\n';
2998         s << '}';
2999         return s;
3000 }
3001
3002 std::ostream& operator<< (std::ostream& s, const VkClearValue& value)
3003 {
3004         s << "VkClearValue = {\n";
3005         s << "\tcolor = " << value.color << '\n';
3006         s << "\tdepthStencil = " << value.depthStencil << '\n';
3007         s << '}';
3008         return s;
3009 }
3010
3011 std::ostream& operator<< (std::ostream& s, const VkClearAttachment& value)
3012 {
3013         s << "VkClearAttachment = {\n";
3014         s << "\taspectMask = " << getImageAspectFlagsStr(value.aspectMask) << '\n';
3015         s << "\tcolorAttachment = " << value.colorAttachment << '\n';
3016         s << "\tclearValue = " << value.clearValue << '\n';
3017         s << '}';
3018         return s;
3019 }
3020
3021 std::ostream& operator<< (std::ostream& s, const VkClearRect& value)
3022 {
3023         s << "VkClearRect = {\n";
3024         s << "\trect = " << value.rect << '\n';
3025         s << "\tbaseArrayLayer = " << value.baseArrayLayer << '\n';
3026         s << "\tlayerCount = " << value.layerCount << '\n';
3027         s << '}';
3028         return s;
3029 }
3030
3031 std::ostream& operator<< (std::ostream& s, const VkImageResolve& value)
3032 {
3033         s << "VkImageResolve = {\n";
3034         s << "\tsrcSubresource = " << value.srcSubresource << '\n';
3035         s << "\tsrcOffset = " << value.srcOffset << '\n';
3036         s << "\tdstSubresource = " << value.dstSubresource << '\n';
3037         s << "\tdstOffset = " << value.dstOffset << '\n';
3038         s << "\textent = " << value.extent << '\n';
3039         s << '}';
3040         return s;
3041 }
3042
3043 std::ostream& operator<< (std::ostream& s, const VkMemoryBarrier& value)
3044 {
3045         s << "VkMemoryBarrier = {\n";
3046         s << "\tsType = " << value.sType << '\n';
3047         s << "\tpNext = " << value.pNext << '\n';
3048         s << "\tsrcAccessMask = " << getAccessFlagsStr(value.srcAccessMask) << '\n';
3049         s << "\tdstAccessMask = " << getAccessFlagsStr(value.dstAccessMask) << '\n';
3050         s << '}';
3051         return s;
3052 }
3053
3054 std::ostream& operator<< (std::ostream& s, const VkBufferMemoryBarrier& value)
3055 {
3056         s << "VkBufferMemoryBarrier = {\n";
3057         s << "\tsType = " << value.sType << '\n';
3058         s << "\tpNext = " << value.pNext << '\n';
3059         s << "\tsrcAccessMask = " << getAccessFlagsStr(value.srcAccessMask) << '\n';
3060         s << "\tdstAccessMask = " << getAccessFlagsStr(value.dstAccessMask) << '\n';
3061         s << "\tsrcQueueFamilyIndex = " << value.srcQueueFamilyIndex << '\n';
3062         s << "\tdstQueueFamilyIndex = " << value.dstQueueFamilyIndex << '\n';
3063         s << "\tbuffer = " << value.buffer << '\n';
3064         s << "\toffset = " << value.offset << '\n';
3065         s << "\tsize = " << value.size << '\n';
3066         s << '}';
3067         return s;
3068 }
3069
3070 std::ostream& operator<< (std::ostream& s, const VkImageMemoryBarrier& value)
3071 {
3072         s << "VkImageMemoryBarrier = {\n";
3073         s << "\tsType = " << value.sType << '\n';
3074         s << "\tpNext = " << value.pNext << '\n';
3075         s << "\tsrcAccessMask = " << getAccessFlagsStr(value.srcAccessMask) << '\n';
3076         s << "\tdstAccessMask = " << getAccessFlagsStr(value.dstAccessMask) << '\n';
3077         s << "\toldLayout = " << value.oldLayout << '\n';
3078         s << "\tnewLayout = " << value.newLayout << '\n';
3079         s << "\tsrcQueueFamilyIndex = " << value.srcQueueFamilyIndex << '\n';
3080         s << "\tdstQueueFamilyIndex = " << value.dstQueueFamilyIndex << '\n';
3081         s << "\timage = " << value.image << '\n';
3082         s << "\tsubresourceRange = " << value.subresourceRange << '\n';
3083         s << '}';
3084         return s;
3085 }
3086
3087 std::ostream& operator<< (std::ostream& s, const VkRenderPassBeginInfo& value)
3088 {
3089         s << "VkRenderPassBeginInfo = {\n";
3090         s << "\tsType = " << value.sType << '\n';
3091         s << "\tpNext = " << value.pNext << '\n';
3092         s << "\trenderPass = " << value.renderPass << '\n';
3093         s << "\tframebuffer = " << value.framebuffer << '\n';
3094         s << "\trenderArea = " << value.renderArea << '\n';
3095         s << "\tclearValueCount = " << value.clearValueCount << '\n';
3096         s << "\tpClearValues = " << value.pClearValues << '\n';
3097         s << '}';
3098         return s;
3099 }
3100
3101 std::ostream& operator<< (std::ostream& s, const VkDispatchIndirectCommand& value)
3102 {
3103         s << "VkDispatchIndirectCommand = {\n";
3104         s << "\tx = " << value.x << '\n';
3105         s << "\ty = " << value.y << '\n';
3106         s << "\tz = " << value.z << '\n';
3107         s << '}';
3108         return s;
3109 }
3110
3111 std::ostream& operator<< (std::ostream& s, const VkDrawIndexedIndirectCommand& value)
3112 {
3113         s << "VkDrawIndexedIndirectCommand = {\n";
3114         s << "\tindexCount = " << value.indexCount << '\n';
3115         s << "\tinstanceCount = " << value.instanceCount << '\n';
3116         s << "\tfirstIndex = " << value.firstIndex << '\n';
3117         s << "\tvertexOffset = " << value.vertexOffset << '\n';
3118         s << "\tfirstInstance = " << value.firstInstance << '\n';
3119         s << '}';
3120         return s;
3121 }
3122
3123 std::ostream& operator<< (std::ostream& s, const VkDrawIndirectCommand& value)
3124 {
3125         s << "VkDrawIndirectCommand = {\n";
3126         s << "\tvertexCount = " << value.vertexCount << '\n';
3127         s << "\tinstanceCount = " << value.instanceCount << '\n';
3128         s << "\tfirstVertex = " << value.firstVertex << '\n';
3129         s << "\tfirstInstance = " << value.firstInstance << '\n';
3130         s << '}';
3131         return s;
3132 }
3133
3134 std::ostream& operator<< (std::ostream& s, const VkSurfaceCapabilitiesKHR& value)
3135 {
3136         s << "VkSurfaceCapabilitiesKHR = {\n";
3137         s << "\tminImageCount = " << value.minImageCount << '\n';
3138         s << "\tmaxImageCount = " << value.maxImageCount << '\n';
3139         s << "\tcurrentExtent = " << value.currentExtent << '\n';
3140         s << "\tminImageExtent = " << value.minImageExtent << '\n';
3141         s << "\tmaxImageExtent = " << value.maxImageExtent << '\n';
3142         s << "\tmaxImageArrayLayers = " << value.maxImageArrayLayers << '\n';
3143         s << "\tsupportedTransforms = " << getSurfaceTransformFlagsKHRStr(value.supportedTransforms) << '\n';
3144         s << "\tcurrentTransform = " << value.currentTransform << '\n';
3145         s << "\tsupportedCompositeAlpha = " << getCompositeAlphaFlagsKHRStr(value.supportedCompositeAlpha) << '\n';
3146         s << "\tsupportedUsageFlags = " << getImageUsageFlagsStr(value.supportedUsageFlags) << '\n';
3147         s << '}';
3148         return s;
3149 }
3150
3151 std::ostream& operator<< (std::ostream& s, const VkSurfaceFormatKHR& value)
3152 {
3153         s << "VkSurfaceFormatKHR = {\n";
3154         s << "\tformat = " << value.format << '\n';
3155         s << "\tcolorSpace = " << value.colorSpace << '\n';
3156         s << '}';
3157         return s;
3158 }
3159
3160 std::ostream& operator<< (std::ostream& s, const VkSwapchainCreateInfoKHR& value)
3161 {
3162         s << "VkSwapchainCreateInfoKHR = {\n";
3163         s << "\tsType = " << value.sType << '\n';
3164         s << "\tpNext = " << value.pNext << '\n';
3165         s << "\tflags = " << getSwapchainCreateFlagsKHRStr(value.flags) << '\n';
3166         s << "\tsurface = " << value.surface << '\n';
3167         s << "\tminImageCount = " << value.minImageCount << '\n';
3168         s << "\timageFormat = " << value.imageFormat << '\n';
3169         s << "\timageColorSpace = " << value.imageColorSpace << '\n';
3170         s << "\timageExtent = " << value.imageExtent << '\n';
3171         s << "\timageArrayLayers = " << value.imageArrayLayers << '\n';
3172         s << "\timageUsage = " << getImageUsageFlagsStr(value.imageUsage) << '\n';
3173         s << "\timageSharingMode = " << value.imageSharingMode << '\n';
3174         s << "\tqueueFamilyIndexCount = " << value.queueFamilyIndexCount << '\n';
3175         s << "\tpQueueFamilyIndices = " << value.pQueueFamilyIndices << '\n';
3176         s << "\tpreTransform = " << value.preTransform << '\n';
3177         s << "\tcompositeAlpha = " << value.compositeAlpha << '\n';
3178         s << "\tpresentMode = " << value.presentMode << '\n';
3179         s << "\tclipped = " << value.clipped << '\n';
3180         s << "\toldSwapchain = " << value.oldSwapchain << '\n';
3181         s << '}';
3182         return s;
3183 }
3184
3185 std::ostream& operator<< (std::ostream& s, const VkPresentInfoKHR& value)
3186 {
3187         s << "VkPresentInfoKHR = {\n";
3188         s << "\tsType = " << value.sType << '\n';
3189         s << "\tpNext = " << value.pNext << '\n';
3190         s << "\twaitSemaphoreCount = " << value.waitSemaphoreCount << '\n';
3191         s << "\tpWaitSemaphores = " << value.pWaitSemaphores << '\n';
3192         s << "\tswapchainCount = " << value.swapchainCount << '\n';
3193         s << "\tpSwapchains = " << value.pSwapchains << '\n';
3194         s << "\tpImageIndices = " << value.pImageIndices << '\n';
3195         s << "\tpResults = " << value.pResults << '\n';
3196         s << '}';
3197         return s;
3198 }
3199
3200 std::ostream& operator<< (std::ostream& s, const VkDisplayPropertiesKHR& value)
3201 {
3202         s << "VkDisplayPropertiesKHR = {\n";
3203         s << "\tdisplay = " << value.display << '\n';
3204         s << "\tdisplayName = " << getCharPtrStr(value.displayName) << '\n';
3205         s << "\tphysicalDimensions = " << value.physicalDimensions << '\n';
3206         s << "\tphysicalResolution = " << value.physicalResolution << '\n';
3207         s << "\tsupportedTransforms = " << getSurfaceTransformFlagsKHRStr(value.supportedTransforms) << '\n';
3208         s << "\tplaneReorderPossible = " << value.planeReorderPossible << '\n';
3209         s << "\tpersistentContent = " << value.persistentContent << '\n';
3210         s << '}';
3211         return s;
3212 }
3213
3214 std::ostream& operator<< (std::ostream& s, const VkDisplayModeParametersKHR& value)
3215 {
3216         s << "VkDisplayModeParametersKHR = {\n";
3217         s << "\tvisibleRegion = " << value.visibleRegion << '\n';
3218         s << "\trefreshRate = " << value.refreshRate << '\n';
3219         s << '}';
3220         return s;
3221 }
3222
3223 std::ostream& operator<< (std::ostream& s, const VkDisplayModePropertiesKHR& value)
3224 {
3225         s << "VkDisplayModePropertiesKHR = {\n";
3226         s << "\tdisplayMode = " << value.displayMode << '\n';
3227         s << "\tparameters = " << value.parameters << '\n';
3228         s << '}';
3229         return s;
3230 }
3231
3232 std::ostream& operator<< (std::ostream& s, const VkDisplayModeCreateInfoKHR& value)
3233 {
3234         s << "VkDisplayModeCreateInfoKHR = {\n";
3235         s << "\tsType = " << value.sType << '\n';
3236         s << "\tpNext = " << value.pNext << '\n';
3237         s << "\tflags = " << getDisplayModeCreateFlagsKHRStr(value.flags) << '\n';
3238         s << "\tparameters = " << value.parameters << '\n';
3239         s << '}';
3240         return s;
3241 }
3242
3243 std::ostream& operator<< (std::ostream& s, const VkDisplayPlaneCapabilitiesKHR& value)
3244 {
3245         s << "VkDisplayPlaneCapabilitiesKHR = {\n";
3246         s << "\tsupportedAlpha = " << getDisplayPlaneAlphaFlagsKHRStr(value.supportedAlpha) << '\n';
3247         s << "\tminSrcPosition = " << value.minSrcPosition << '\n';
3248         s << "\tmaxSrcPosition = " << value.maxSrcPosition << '\n';
3249         s << "\tminSrcExtent = " << value.minSrcExtent << '\n';
3250         s << "\tmaxSrcExtent = " << value.maxSrcExtent << '\n';
3251         s << "\tminDstPosition = " << value.minDstPosition << '\n';
3252         s << "\tmaxDstPosition = " << value.maxDstPosition << '\n';
3253         s << "\tminDstExtent = " << value.minDstExtent << '\n';
3254         s << "\tmaxDstExtent = " << value.maxDstExtent << '\n';
3255         s << '}';
3256         return s;
3257 }
3258
3259 std::ostream& operator<< (std::ostream& s, const VkDisplayPlanePropertiesKHR& value)
3260 {
3261         s << "VkDisplayPlanePropertiesKHR = {\n";
3262         s << "\tcurrentDisplay = " << value.currentDisplay << '\n';
3263         s << "\tcurrentStackIndex = " << value.currentStackIndex << '\n';
3264         s << '}';
3265         return s;
3266 }
3267
3268 std::ostream& operator<< (std::ostream& s, const VkDisplaySurfaceCreateInfoKHR& value)
3269 {
3270         s << "VkDisplaySurfaceCreateInfoKHR = {\n";
3271         s << "\tsType = " << value.sType << '\n';
3272         s << "\tpNext = " << value.pNext << '\n';
3273         s << "\tflags = " << getDisplaySurfaceCreateFlagsKHRStr(value.flags) << '\n';
3274         s << "\tdisplayMode = " << value.displayMode << '\n';
3275         s << "\tplaneIndex = " << value.planeIndex << '\n';
3276         s << "\tplaneStackIndex = " << value.planeStackIndex << '\n';
3277         s << "\ttransform = " << value.transform << '\n';
3278         s << "\tglobalAlpha = " << value.globalAlpha << '\n';
3279         s << "\talphaMode = " << value.alphaMode << '\n';
3280         s << "\timageExtent = " << value.imageExtent << '\n';
3281         s << '}';
3282         return s;
3283 }
3284
3285 std::ostream& operator<< (std::ostream& s, const VkDisplayPresentInfoKHR& value)
3286 {
3287         s << "VkDisplayPresentInfoKHR = {\n";
3288         s << "\tsType = " << value.sType << '\n';
3289         s << "\tpNext = " << value.pNext << '\n';
3290         s << "\tsrcRect = " << value.srcRect << '\n';
3291         s << "\tdstRect = " << value.dstRect << '\n';
3292         s << "\tpersistent = " << value.persistent << '\n';
3293         s << '}';
3294         return s;
3295 }
3296
3297 std::ostream& operator<< (std::ostream& s, const VkXlibSurfaceCreateInfoKHR& value)
3298 {
3299         s << "VkXlibSurfaceCreateInfoKHR = {\n";
3300         s << "\tsType = " << value.sType << '\n';
3301         s << "\tpNext = " << value.pNext << '\n';
3302         s << "\tflags = " << getXlibSurfaceCreateFlagsKHRStr(value.flags) << '\n';
3303         s << "\tdpy = " << value.dpy << '\n';
3304         s << "\twindow = " << value.window << '\n';
3305         s << '}';
3306         return s;
3307 }
3308
3309 std::ostream& operator<< (std::ostream& s, const VkXcbSurfaceCreateInfoKHR& value)
3310 {
3311         s << "VkXcbSurfaceCreateInfoKHR = {\n";
3312         s << "\tsType = " << value.sType << '\n';
3313         s << "\tpNext = " << value.pNext << '\n';
3314         s << "\tflags = " << getXcbSurfaceCreateFlagsKHRStr(value.flags) << '\n';
3315         s << "\tconnection = " << value.connection << '\n';
3316         s << "\twindow = " << value.window << '\n';
3317         s << '}';
3318         return s;
3319 }
3320
3321 std::ostream& operator<< (std::ostream& s, const VkWaylandSurfaceCreateInfoKHR& value)
3322 {
3323         s << "VkWaylandSurfaceCreateInfoKHR = {\n";
3324         s << "\tsType = " << value.sType << '\n';
3325         s << "\tpNext = " << value.pNext << '\n';
3326         s << "\tflags = " << getWaylandSurfaceCreateFlagsKHRStr(value.flags) << '\n';
3327         s << "\tdisplay = " << value.display << '\n';
3328         s << "\tsurface = " << value.surface << '\n';
3329         s << '}';
3330         return s;
3331 }
3332
3333 std::ostream& operator<< (std::ostream& s, const VkMirSurfaceCreateInfoKHR& value)
3334 {
3335         s << "VkMirSurfaceCreateInfoKHR = {\n";
3336         s << "\tsType = " << value.sType << '\n';
3337         s << "\tpNext = " << value.pNext << '\n';
3338         s << "\tflags = " << getMirSurfaceCreateFlagsKHRStr(value.flags) << '\n';
3339         s << "\tconnection = " << value.connection << '\n';
3340         s << "\tmirSurface = " << value.mirSurface << '\n';
3341         s << '}';
3342         return s;
3343 }
3344
3345 std::ostream& operator<< (std::ostream& s, const VkAndroidSurfaceCreateInfoKHR& value)
3346 {
3347         s << "VkAndroidSurfaceCreateInfoKHR = {\n";
3348         s << "\tsType = " << value.sType << '\n';
3349         s << "\tpNext = " << value.pNext << '\n';
3350         s << "\tflags = " << getAndroidSurfaceCreateFlagsKHRStr(value.flags) << '\n';
3351         s << "\twindow = " << value.window << '\n';
3352         s << '}';
3353         return s;
3354 }
3355
3356 std::ostream& operator<< (std::ostream& s, const VkWin32SurfaceCreateInfoKHR& value)
3357 {
3358         s << "VkWin32SurfaceCreateInfoKHR = {\n";
3359         s << "\tsType = " << value.sType << '\n';
3360         s << "\tpNext = " << value.pNext << '\n';
3361         s << "\tflags = " << getWin32SurfaceCreateFlagsKHRStr(value.flags) << '\n';
3362         s << "\thinstance = " << value.hinstance << '\n';
3363         s << "\thwnd = " << value.hwnd << '\n';
3364         s << '}';
3365         return s;
3366 }
3367
3368 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceFeatures2KHR& value)
3369 {
3370         s << "VkPhysicalDeviceFeatures2KHR = {\n";
3371         s << "\tsType = " << value.sType << '\n';
3372         s << "\tpNext = " << value.pNext << '\n';
3373         s << "\tfeatures = " << value.features << '\n';
3374         s << '}';
3375         return s;
3376 }
3377
3378 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceProperties2KHR& value)
3379 {
3380         s << "VkPhysicalDeviceProperties2KHR = {\n";
3381         s << "\tsType = " << value.sType << '\n';
3382         s << "\tpNext = " << value.pNext << '\n';
3383         s << "\tproperties = " << value.properties << '\n';
3384         s << '}';
3385         return s;
3386 }
3387
3388 std::ostream& operator<< (std::ostream& s, const VkFormatProperties2KHR& value)
3389 {
3390         s << "VkFormatProperties2KHR = {\n";
3391         s << "\tsType = " << value.sType << '\n';
3392         s << "\tpNext = " << value.pNext << '\n';
3393         s << "\tformatProperties = " << value.formatProperties << '\n';
3394         s << '}';
3395         return s;
3396 }
3397
3398 std::ostream& operator<< (std::ostream& s, const VkImageFormatProperties2KHR& value)
3399 {
3400         s << "VkImageFormatProperties2KHR = {\n";
3401         s << "\tsType = " << value.sType << '\n';
3402         s << "\tpNext = " << value.pNext << '\n';
3403         s << "\timageFormatProperties = " << value.imageFormatProperties << '\n';
3404         s << '}';
3405         return s;
3406 }
3407
3408 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceImageFormatInfo2KHR& value)
3409 {
3410         s << "VkPhysicalDeviceImageFormatInfo2KHR = {\n";
3411         s << "\tsType = " << value.sType << '\n';
3412         s << "\tpNext = " << value.pNext << '\n';
3413         s << "\tformat = " << value.format << '\n';
3414         s << "\ttype = " << value.type << '\n';
3415         s << "\ttiling = " << value.tiling << '\n';
3416         s << "\tusage = " << getImageUsageFlagsStr(value.usage) << '\n';
3417         s << "\tflags = " << getImageCreateFlagsStr(value.flags) << '\n';
3418         s << '}';
3419         return s;
3420 }
3421
3422 std::ostream& operator<< (std::ostream& s, const VkQueueFamilyProperties2KHR& value)
3423 {
3424         s << "VkQueueFamilyProperties2KHR = {\n";
3425         s << "\tsType = " << value.sType << '\n';
3426         s << "\tpNext = " << value.pNext << '\n';
3427         s << "\tqueueFamilyProperties = " << value.queueFamilyProperties << '\n';
3428         s << '}';
3429         return s;
3430 }
3431
3432 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceMemoryProperties2KHR& value)
3433 {
3434         s << "VkPhysicalDeviceMemoryProperties2KHR = {\n";
3435         s << "\tsType = " << value.sType << '\n';
3436         s << "\tpNext = " << value.pNext << '\n';
3437         s << "\tmemoryProperties = " << value.memoryProperties << '\n';
3438         s << '}';
3439         return s;
3440 }
3441
3442 std::ostream& operator<< (std::ostream& s, const VkSparseImageFormatProperties2KHR& value)
3443 {
3444         s << "VkSparseImageFormatProperties2KHR = {\n";
3445         s << "\tsType = " << value.sType << '\n';
3446         s << "\tpNext = " << value.pNext << '\n';
3447         s << "\tproperties = " << value.properties << '\n';
3448         s << '}';
3449         return s;
3450 }
3451
3452 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceSparseImageFormatInfo2KHR& value)
3453 {
3454         s << "VkPhysicalDeviceSparseImageFormatInfo2KHR = {\n";
3455         s << "\tsType = " << value.sType << '\n';
3456         s << "\tpNext = " << value.pNext << '\n';
3457         s << "\tformat = " << value.format << '\n';
3458         s << "\ttype = " << value.type << '\n';
3459         s << "\tsamples = " << value.samples << '\n';
3460         s << "\tusage = " << getImageUsageFlagsStr(value.usage) << '\n';
3461         s << "\ttiling = " << value.tiling << '\n';
3462         s << '}';
3463         return s;
3464 }
3465
3466 std::ostream& operator<< (std::ostream& s, const VkDebugReportCallbackCreateInfoEXT& value)
3467 {
3468         s << "VkDebugReportCallbackCreateInfoEXT = {\n";
3469         s << "\tsType = " << value.sType << '\n';
3470         s << "\tpNext = " << value.pNext << '\n';
3471         s << "\tflags = " << getDebugReportFlagsEXTStr(value.flags) << '\n';
3472         s << "\tpfnCallback = " << value.pfnCallback << '\n';
3473         s << "\tpUserData = " << value.pUserData << '\n';
3474         s << '}';
3475         return s;
3476 }
3477
3478 std::ostream& operator<< (std::ostream& s, const VkPipelineRasterizationStateRasterizationOrderAMD& value)
3479 {
3480         s << "VkPipelineRasterizationStateRasterizationOrderAMD = {\n";
3481         s << "\tsType = " << value.sType << '\n';
3482         s << "\tpNext = " << value.pNext << '\n';
3483         s << "\trasterizationOrder = " << value.rasterizationOrder << '\n';
3484         s << '}';
3485         return s;
3486 }
3487
3488 std::ostream& operator<< (std::ostream& s, const VkDebugMarkerObjectNameInfoEXT& value)
3489 {
3490         s << "VkDebugMarkerObjectNameInfoEXT = {\n";
3491         s << "\tsType = " << value.sType << '\n';
3492         s << "\tpNext = " << value.pNext << '\n';
3493         s << "\tobjectType = " << value.objectType << '\n';
3494         s << "\tobject = " << value.object << '\n';
3495         s << "\tpObjectName = " << getCharPtrStr(value.pObjectName) << '\n';
3496         s << '}';
3497         return s;
3498 }
3499
3500 std::ostream& operator<< (std::ostream& s, const VkDebugMarkerObjectTagInfoEXT& value)
3501 {
3502         s << "VkDebugMarkerObjectTagInfoEXT = {\n";
3503         s << "\tsType = " << value.sType << '\n';
3504         s << "\tpNext = " << value.pNext << '\n';
3505         s << "\tobjectType = " << value.objectType << '\n';
3506         s << "\tobject = " << value.object << '\n';
3507         s << "\ttagName = " << value.tagName << '\n';
3508         s << "\ttagSize = " << value.tagSize << '\n';
3509         s << "\tpTag = " << value.pTag << '\n';
3510         s << '}';
3511         return s;
3512 }
3513
3514 std::ostream& operator<< (std::ostream& s, const VkDebugMarkerMarkerInfoEXT& value)
3515 {
3516         s << "VkDebugMarkerMarkerInfoEXT = {\n";
3517         s << "\tsType = " << value.sType << '\n';
3518         s << "\tpNext = " << value.pNext << '\n';
3519         s << "\tpMarkerName = " << getCharPtrStr(value.pMarkerName) << '\n';
3520         s << "\tcolor = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.color), DE_ARRAY_END(value.color)) << '\n';
3521         s << '}';
3522         return s;
3523 }
3524
3525 std::ostream& operator<< (std::ostream& s, const VkDedicatedAllocationImageCreateInfoNV& value)
3526 {
3527         s << "VkDedicatedAllocationImageCreateInfoNV = {\n";
3528         s << "\tsType = " << value.sType << '\n';
3529         s << "\tpNext = " << value.pNext << '\n';
3530         s << "\tdedicatedAllocation = " << value.dedicatedAllocation << '\n';
3531         s << '}';
3532         return s;
3533 }
3534
3535 std::ostream& operator<< (std::ostream& s, const VkDedicatedAllocationBufferCreateInfoNV& value)
3536 {
3537         s << "VkDedicatedAllocationBufferCreateInfoNV = {\n";
3538         s << "\tsType = " << value.sType << '\n';
3539         s << "\tpNext = " << value.pNext << '\n';
3540         s << "\tdedicatedAllocation = " << value.dedicatedAllocation << '\n';
3541         s << '}';
3542         return s;
3543 }
3544
3545 std::ostream& operator<< (std::ostream& s, const VkDedicatedAllocationMemoryAllocateInfoNV& value)
3546 {
3547         s << "VkDedicatedAllocationMemoryAllocateInfoNV = {\n";
3548         s << "\tsType = " << value.sType << '\n';
3549         s << "\tpNext = " << value.pNext << '\n';
3550         s << "\timage = " << value.image << '\n';
3551         s << "\tbuffer = " << value.buffer << '\n';
3552         s << '}';
3553         return s;
3554 }
3555
3556 std::ostream& operator<< (std::ostream& s, const VkExternalImageFormatPropertiesNV& value)
3557 {
3558         s << "VkExternalImageFormatPropertiesNV = {\n";
3559         s << "\timageFormatProperties = " << value.imageFormatProperties << '\n';
3560         s << "\texternalMemoryFeatures = " << getExternalMemoryFeatureFlagsNVStr(value.externalMemoryFeatures) << '\n';
3561         s << "\texportFromImportedHandleTypes = " << getExternalMemoryHandleTypeFlagsNVStr(value.exportFromImportedHandleTypes) << '\n';
3562         s << "\tcompatibleHandleTypes = " << getExternalMemoryHandleTypeFlagsNVStr(value.compatibleHandleTypes) << '\n';
3563         s << '}';
3564         return s;
3565 }
3566
3567 std::ostream& operator<< (std::ostream& s, const VkExternalMemoryImageCreateInfoNV& value)
3568 {
3569         s << "VkExternalMemoryImageCreateInfoNV = {\n";
3570         s << "\tsType = " << value.sType << '\n';
3571         s << "\tpNext = " << value.pNext << '\n';
3572         s << "\thandleTypes = " << getExternalMemoryHandleTypeFlagsNVStr(value.handleTypes) << '\n';
3573         s << '}';
3574         return s;
3575 }
3576
3577 std::ostream& operator<< (std::ostream& s, const VkExportMemoryAllocateInfoNV& value)
3578 {
3579         s << "VkExportMemoryAllocateInfoNV = {\n";
3580         s << "\tsType = " << value.sType << '\n';
3581         s << "\tpNext = " << value.pNext << '\n';
3582         s << "\thandleTypes = " << getExternalMemoryHandleTypeFlagsNVStr(value.handleTypes) << '\n';
3583         s << '}';
3584         return s;
3585 }
3586
3587 std::ostream& operator<< (std::ostream& s, const VkImportMemoryWin32HandleInfoNV& value)
3588 {
3589         s << "VkImportMemoryWin32HandleInfoNV = {\n";
3590         s << "\tsType = " << value.sType << '\n';
3591         s << "\tpNext = " << value.pNext << '\n';
3592         s << "\thandleType = " << getExternalMemoryHandleTypeFlagsNVStr(value.handleType) << '\n';
3593         s << "\thandle = " << value.handle << '\n';
3594         s << '}';
3595         return s;
3596 }
3597
3598 std::ostream& operator<< (std::ostream& s, const VkExportMemoryWin32HandleInfoNV& value)
3599 {
3600         s << "VkExportMemoryWin32HandleInfoNV = {\n";
3601         s << "\tsType = " << value.sType << '\n';
3602         s << "\tpNext = " << value.pNext << '\n';
3603         s << "\tpAttributes = " << value.pAttributes << '\n';
3604         s << "\tdwAccess = " << value.dwAccess << '\n';
3605         s << '}';
3606         return s;
3607 }
3608
3609 std::ostream& operator<< (std::ostream& s, const VkWin32KeyedMutexAcquireReleaseInfoNV& value)
3610 {
3611         s << "VkWin32KeyedMutexAcquireReleaseInfoNV = {\n";
3612         s << "\tsType = " << value.sType << '\n';
3613         s << "\tpNext = " << value.pNext << '\n';
3614         s << "\tacquireCount = " << value.acquireCount << '\n';
3615         s << "\tpAcquireSyncs = " << value.pAcquireSyncs << '\n';
3616         s << "\tpAcquireKeys = " << value.pAcquireKeys << '\n';
3617         s << "\tpAcquireTimeoutMilliseconds = " << value.pAcquireTimeoutMilliseconds << '\n';
3618         s << "\treleaseCount = " << value.releaseCount << '\n';
3619         s << "\tpReleaseSyncs = " << value.pReleaseSyncs << '\n';
3620         s << "\tpReleaseKeys = " << value.pReleaseKeys << '\n';
3621         s << '}';
3622         return s;
3623 }
3624
3625 std::ostream& operator<< (std::ostream& s, const VkValidationFlagsEXT& value)
3626 {
3627         s << "VkValidationFlagsEXT = {\n";
3628         s << "\tsType = " << value.sType << '\n';
3629         s << "\tpNext = " << value.pNext << '\n';
3630         s << "\tdisabledValidationCheckCount = " << value.disabledValidationCheckCount << '\n';
3631         s << "\tpDisabledValidationChecks = " << value.pDisabledValidationChecks << '\n';
3632         s << '}';
3633         return s;
3634 }
3635
3636 std::ostream& operator<< (std::ostream& s, const VkDeviceGeneratedCommandsFeaturesNVX& value)
3637 {
3638         s << "VkDeviceGeneratedCommandsFeaturesNVX = {\n";
3639         s << "\tsType = " << value.sType << '\n';
3640         s << "\tpNext = " << value.pNext << '\n';
3641         s << "\tcomputeBindingPointSupport = " << value.computeBindingPointSupport << '\n';
3642         s << '}';
3643         return s;
3644 }
3645
3646 std::ostream& operator<< (std::ostream& s, const VkDeviceGeneratedCommandsLimitsNVX& value)
3647 {
3648         s << "VkDeviceGeneratedCommandsLimitsNVX = {\n";
3649         s << "\tsType = " << value.sType << '\n';
3650         s << "\tpNext = " << value.pNext << '\n';
3651         s << "\tmaxIndirectCommandsLayoutTokenCount = " << value.maxIndirectCommandsLayoutTokenCount << '\n';
3652         s << "\tmaxObjectEntryCounts = " << value.maxObjectEntryCounts << '\n';
3653         s << "\tminSequenceCountBufferOffsetAlignment = " << value.minSequenceCountBufferOffsetAlignment << '\n';
3654         s << "\tminSequenceIndexBufferOffsetAlignment = " << value.minSequenceIndexBufferOffsetAlignment << '\n';
3655         s << "\tminCommandsTokenBufferOffsetAlignment = " << value.minCommandsTokenBufferOffsetAlignment << '\n';
3656         s << '}';
3657         return s;
3658 }
3659
3660 std::ostream& operator<< (std::ostream& s, const VkIndirectCommandsTokenNVX& value)
3661 {
3662         s << "VkIndirectCommandsTokenNVX = {\n";
3663         s << "\ttokenType = " << value.tokenType << '\n';
3664         s << "\tbuffer = " << value.buffer << '\n';
3665         s << "\toffset = " << value.offset << '\n';
3666         s << '}';
3667         return s;
3668 }
3669
3670 std::ostream& operator<< (std::ostream& s, const VkIndirectCommandsLayoutTokenNVX& value)
3671 {
3672         s << "VkIndirectCommandsLayoutTokenNVX = {\n";
3673         s << "\ttokenType = " << value.tokenType << '\n';
3674         s << "\tbindingUnit = " << value.bindingUnit << '\n';
3675         s << "\tdynamicCount = " << value.dynamicCount << '\n';
3676         s << "\tdivisor = " << value.divisor << '\n';
3677         s << '}';
3678         return s;
3679 }
3680
3681 std::ostream& operator<< (std::ostream& s, const VkIndirectCommandsLayoutCreateInfoNVX& value)
3682 {
3683         s << "VkIndirectCommandsLayoutCreateInfoNVX = {\n";
3684         s << "\tsType = " << value.sType << '\n';
3685         s << "\tpNext = " << value.pNext << '\n';
3686         s << "\tpipelineBindPoint = " << value.pipelineBindPoint << '\n';
3687         s << "\tflags = " << getIndirectCommandsLayoutUsageFlagsNVXStr(value.flags) << '\n';
3688         s << "\ttokenCount = " << value.tokenCount << '\n';
3689         s << "\tpTokens = " << value.pTokens << '\n';
3690         s << '}';
3691         return s;
3692 }
3693
3694 std::ostream& operator<< (std::ostream& s, const VkCmdProcessCommandsInfoNVX& value)
3695 {
3696         s << "VkCmdProcessCommandsInfoNVX = {\n";
3697         s << "\tsType = " << value.sType << '\n';
3698         s << "\tpNext = " << value.pNext << '\n';
3699         s << "\tobjectTable = " << value.objectTable << '\n';
3700         s << "\tindirectCommandsLayout = " << value.indirectCommandsLayout << '\n';
3701         s << "\tindirectCommandsTokenCount = " << value.indirectCommandsTokenCount << '\n';
3702         s << "\tpIndirectCommandsTokens = " << value.pIndirectCommandsTokens << '\n';
3703         s << "\tmaxSequencesCount = " << value.maxSequencesCount << '\n';
3704         s << "\ttargetCommandBuffer = " << value.targetCommandBuffer << '\n';
3705         s << "\tsequencesCountBuffer = " << value.sequencesCountBuffer << '\n';
3706         s << "\tsequencesCountOffset = " << value.sequencesCountOffset << '\n';
3707         s << "\tsequencesIndexBuffer = " << value.sequencesIndexBuffer << '\n';
3708         s << "\tsequencesIndexOffset = " << value.sequencesIndexOffset << '\n';
3709         s << '}';
3710         return s;
3711 }
3712
3713 std::ostream& operator<< (std::ostream& s, const VkCmdReserveSpaceForCommandsInfoNVX& value)
3714 {
3715         s << "VkCmdReserveSpaceForCommandsInfoNVX = {\n";
3716         s << "\tsType = " << value.sType << '\n';
3717         s << "\tpNext = " << value.pNext << '\n';
3718         s << "\tobjectTable = " << value.objectTable << '\n';
3719         s << "\tindirectCommandsLayout = " << value.indirectCommandsLayout << '\n';
3720         s << "\tmaxSequencesCount = " << value.maxSequencesCount << '\n';
3721         s << '}';
3722         return s;
3723 }
3724
3725 std::ostream& operator<< (std::ostream& s, const VkObjectTableCreateInfoNVX& value)
3726 {
3727         s << "VkObjectTableCreateInfoNVX = {\n";
3728         s << "\tsType = " << value.sType << '\n';
3729         s << "\tpNext = " << value.pNext << '\n';
3730         s << "\tobjectCount = " << value.objectCount << '\n';
3731         s << "\tpObjectEntryTypes = " << value.pObjectEntryTypes << '\n';
3732         s << "\tpObjectEntryCounts = " << value.pObjectEntryCounts << '\n';
3733         s << "\tpObjectEntryUsageFlags = " << value.pObjectEntryUsageFlags << '\n';
3734         s << "\tmaxUniformBuffersPerDescriptor = " << value.maxUniformBuffersPerDescriptor << '\n';
3735         s << "\tmaxStorageBuffersPerDescriptor = " << value.maxStorageBuffersPerDescriptor << '\n';
3736         s << "\tmaxStorageImagesPerDescriptor = " << value.maxStorageImagesPerDescriptor << '\n';
3737         s << "\tmaxSampledImagesPerDescriptor = " << value.maxSampledImagesPerDescriptor << '\n';
3738         s << "\tmaxPipelineLayouts = " << value.maxPipelineLayouts << '\n';
3739         s << '}';
3740         return s;
3741 }
3742
3743 std::ostream& operator<< (std::ostream& s, const VkObjectTableEntryNVX& value)
3744 {
3745         s << "VkObjectTableEntryNVX = {\n";
3746         s << "\ttype = " << value.type << '\n';
3747         s << "\tflags = " << getObjectEntryUsageFlagsNVXStr(value.flags) << '\n';
3748         s << '}';
3749         return s;
3750 }
3751
3752 std::ostream& operator<< (std::ostream& s, const VkObjectTablePipelineEntryNVX& value)
3753 {
3754         s << "VkObjectTablePipelineEntryNVX = {\n";
3755         s << "\ttype = " << value.type << '\n';
3756         s << "\tflags = " << getObjectEntryUsageFlagsNVXStr(value.flags) << '\n';
3757         s << "\tpipeline = " << value.pipeline << '\n';
3758         s << '}';
3759         return s;
3760 }
3761
3762 std::ostream& operator<< (std::ostream& s, const VkObjectTableDescriptorSetEntryNVX& value)
3763 {
3764         s << "VkObjectTableDescriptorSetEntryNVX = {\n";
3765         s << "\ttype = " << value.type << '\n';
3766         s << "\tflags = " << getObjectEntryUsageFlagsNVXStr(value.flags) << '\n';
3767         s << "\tpipelineLayout = " << value.pipelineLayout << '\n';
3768         s << "\tdescriptorSet = " << value.descriptorSet << '\n';
3769         s << '}';
3770         return s;
3771 }
3772
3773 std::ostream& operator<< (std::ostream& s, const VkObjectTableVertexBufferEntryNVX& value)
3774 {
3775         s << "VkObjectTableVertexBufferEntryNVX = {\n";
3776         s << "\ttype = " << value.type << '\n';
3777         s << "\tflags = " << getObjectEntryUsageFlagsNVXStr(value.flags) << '\n';
3778         s << "\tbuffer = " << value.buffer << '\n';
3779         s << '}';
3780         return s;
3781 }
3782
3783 std::ostream& operator<< (std::ostream& s, const VkObjectTableIndexBufferEntryNVX& value)
3784 {
3785         s << "VkObjectTableIndexBufferEntryNVX = {\n";
3786         s << "\ttype = " << value.type << '\n';
3787         s << "\tflags = " << getObjectEntryUsageFlagsNVXStr(value.flags) << '\n';
3788         s << "\tbuffer = " << value.buffer << '\n';
3789         s << '}';
3790         return s;
3791 }
3792
3793 std::ostream& operator<< (std::ostream& s, const VkObjectTablePushConstantEntryNVX& value)
3794 {
3795         s << "VkObjectTablePushConstantEntryNVX = {\n";
3796         s << "\ttype = " << value.type << '\n';
3797         s << "\tflags = " << getObjectEntryUsageFlagsNVXStr(value.flags) << '\n';
3798         s << "\tpipelineLayout = " << value.pipelineLayout << '\n';
3799         s << "\tstageFlags = " << getShaderStageFlagsStr(value.stageFlags) << '\n';
3800         s << '}';
3801         return s;
3802 }
3803
3804 std::ostream& operator<< (std::ostream& s, const VkPhysicalDevicePushDescriptorPropertiesKHR& value)
3805 {
3806         s << "VkPhysicalDevicePushDescriptorPropertiesKHR = {\n";
3807         s << "\tsType = " << value.sType << '\n';
3808         s << "\tpNext = " << value.pNext << '\n';
3809         s << "\tmaxPushDescriptors = " << value.maxPushDescriptors << '\n';
3810         s << '}';
3811         return s;
3812 }
3813
3814 std::ostream& operator<< (std::ostream& s, const VkDescriptorUpdateTemplateEntryKHR& value)
3815 {
3816         s << "VkDescriptorUpdateTemplateEntryKHR = {\n";
3817         s << "\tdstBinding = " << value.dstBinding << '\n';
3818         s << "\tdstArrayElement = " << value.dstArrayElement << '\n';
3819         s << "\tdescriptorCount = " << value.descriptorCount << '\n';
3820         s << "\tdescriptorType = " << value.descriptorType << '\n';
3821         s << "\toffset = " << value.offset << '\n';
3822         s << "\tstride = " << value.stride << '\n';
3823         s << '}';
3824         return s;
3825 }
3826
3827 std::ostream& operator<< (std::ostream& s, const VkDescriptorUpdateTemplateCreateInfoKHR& value)
3828 {
3829         s << "VkDescriptorUpdateTemplateCreateInfoKHR = {\n";
3830         s << "\tsType = " << value.sType << '\n';
3831         s << "\tpNext = " << value.pNext << '\n';
3832         s << "\tflags = " << getDescriptorUpdateTemplateCreateFlagsKHRStr(value.flags) << '\n';
3833         s << "\tdescriptorUpdateEntryCount = " << value.descriptorUpdateEntryCount << '\n';
3834         s << "\tpDescriptorUpdateEntries = " << value.pDescriptorUpdateEntries << '\n';
3835         s << "\ttemplateType = " << value.templateType << '\n';
3836         s << "\tdescriptorSetLayout = " << value.descriptorSetLayout << '\n';
3837         s << "\tpipelineBindPoint = " << value.pipelineBindPoint << '\n';
3838         s << "\tpipelineLayout = " << value.pipelineLayout << '\n';
3839         s << "\tset = " << value.set << '\n';
3840         s << '}';
3841         return s;
3842 }