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