Merge vk-gl-cts/github-master into vk-gl-cts/master
[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<VkSamplerYcbcrConversion>           (void) { return "VkSamplerYcbcrConversion";             }
30 template<> const char*  getTypeName<VkDescriptorUpdateTemplate>         (void) { return "VkDescriptorUpdateTemplate";   }
31 template<> const char*  getTypeName<VkSurfaceKHR>                                       (void) { return "VkSurfaceKHR";                                 }
32 template<> const char*  getTypeName<VkSwapchainKHR>                                     (void) { return "VkSwapchainKHR";                               }
33 template<> const char*  getTypeName<VkDisplayKHR>                                       (void) { return "VkDisplayKHR";                                 }
34 template<> const char*  getTypeName<VkDisplayModeKHR>                           (void) { return "VkDisplayModeKHR";                             }
35 template<> const char*  getTypeName<VkDebugReportCallbackEXT>           (void) { return "VkDebugReportCallbackEXT";             }
36 template<> const char*  getTypeName<VkObjectTableNVX>                           (void) { return "VkObjectTableNVX";                             }
37 template<> const char*  getTypeName<VkIndirectCommandsLayoutNVX>        (void) { return "VkIndirectCommandsLayoutNVX";  }
38 template<> const char*  getTypeName<VkValidationCacheEXT>                       (void) { return "VkValidationCacheEXT";                 }
39
40 namespace pt
41 {
42 std::ostream& operator<< (std::ostream& s, XlibDisplayPtr                               v) { return s << tcu::toHex(v.internal); }
43 std::ostream& operator<< (std::ostream& s, XlibWindow                                   v) { return s << tcu::toHex(v.internal); }
44 std::ostream& operator<< (std::ostream& s, XlibVisualID                                 v) { return s << tcu::toHex(v.internal); }
45 std::ostream& operator<< (std::ostream& s, XcbConnectionPtr                             v) { return s << tcu::toHex(v.internal); }
46 std::ostream& operator<< (std::ostream& s, XcbWindow                                    v) { return s << tcu::toHex(v.internal); }
47 std::ostream& operator<< (std::ostream& s, XcbVisualid                                  v) { return s << tcu::toHex(v.internal); }
48 std::ostream& operator<< (std::ostream& s, WaylandDisplayPtr                    v) { return s << tcu::toHex(v.internal); }
49 std::ostream& operator<< (std::ostream& s, WaylandSurfacePtr                    v) { return s << tcu::toHex(v.internal); }
50 std::ostream& operator<< (std::ostream& s, MirConnectionPtr                             v) { return s << tcu::toHex(v.internal); }
51 std::ostream& operator<< (std::ostream& s, MirSurfacePtr                                v) { return s << tcu::toHex(v.internal); }
52 std::ostream& operator<< (std::ostream& s, AndroidNativeWindowPtr               v) { return s << tcu::toHex(v.internal); }
53 std::ostream& operator<< (std::ostream& s, Win32InstanceHandle                  v) { return s << tcu::toHex(v.internal); }
54 std::ostream& operator<< (std::ostream& s, Win32WindowHandle                    v) { return s << tcu::toHex(v.internal); }
55 std::ostream& operator<< (std::ostream& s, Win32Handle                                  v) { return s << tcu::toHex(v.internal); }
56 std::ostream& operator<< (std::ostream& s, Win32SecurityAttributesPtr   v) { return s << tcu::toHex(v.internal); }
57 std::ostream& operator<< (std::ostream& s, AndroidHardwareBufferPtr             v) { return s << tcu::toHex(v.internal); }
58 std::ostream& operator<< (std::ostream& s, RROutput                                             v) { return s << tcu::toHex(v.internal); }
59 }
60
61 const char* getPipelineCacheHeaderVersionName (VkPipelineCacheHeaderVersion value)
62 {
63         switch (value)
64         {
65                 case VK_PIPELINE_CACHE_HEADER_VERSION_ONE:      return "VK_PIPELINE_CACHE_HEADER_VERSION_ONE";
66                 default:                                                                        return DE_NULL;
67         }
68 }
69
70 const char* getResultName (VkResult value)
71 {
72         switch (value)
73         {
74                 case VK_SUCCESS:                                                return "VK_SUCCESS";
75                 case VK_NOT_READY:                                              return "VK_NOT_READY";
76                 case VK_TIMEOUT:                                                return "VK_TIMEOUT";
77                 case VK_EVENT_SET:                                              return "VK_EVENT_SET";
78                 case VK_EVENT_RESET:                                    return "VK_EVENT_RESET";
79                 case VK_INCOMPLETE:                                             return "VK_INCOMPLETE";
80                 case VK_ERROR_OUT_OF_HOST_MEMORY:               return "VK_ERROR_OUT_OF_HOST_MEMORY";
81                 case VK_ERROR_OUT_OF_DEVICE_MEMORY:             return "VK_ERROR_OUT_OF_DEVICE_MEMORY";
82                 case VK_ERROR_INITIALIZATION_FAILED:    return "VK_ERROR_INITIALIZATION_FAILED";
83                 case VK_ERROR_DEVICE_LOST:                              return "VK_ERROR_DEVICE_LOST";
84                 case VK_ERROR_MEMORY_MAP_FAILED:                return "VK_ERROR_MEMORY_MAP_FAILED";
85                 case VK_ERROR_LAYER_NOT_PRESENT:                return "VK_ERROR_LAYER_NOT_PRESENT";
86                 case VK_ERROR_EXTENSION_NOT_PRESENT:    return "VK_ERROR_EXTENSION_NOT_PRESENT";
87                 case VK_ERROR_FEATURE_NOT_PRESENT:              return "VK_ERROR_FEATURE_NOT_PRESENT";
88                 case VK_ERROR_INCOMPATIBLE_DRIVER:              return "VK_ERROR_INCOMPATIBLE_DRIVER";
89                 case VK_ERROR_TOO_MANY_OBJECTS:                 return "VK_ERROR_TOO_MANY_OBJECTS";
90                 case VK_ERROR_FORMAT_NOT_SUPPORTED:             return "VK_ERROR_FORMAT_NOT_SUPPORTED";
91                 case VK_ERROR_FRAGMENTED_POOL:                  return "VK_ERROR_FRAGMENTED_POOL";
92                 case VK_ERROR_OUT_OF_POOL_MEMORY:               return "VK_ERROR_OUT_OF_POOL_MEMORY";
93                 case VK_ERROR_INVALID_EXTERNAL_HANDLE:  return "VK_ERROR_INVALID_EXTERNAL_HANDLE";
94                 case VK_ERROR_SURFACE_LOST_KHR:                 return "VK_ERROR_SURFACE_LOST_KHR";
95                 case VK_ERROR_NATIVE_WINDOW_IN_USE_KHR: return "VK_ERROR_NATIVE_WINDOW_IN_USE_KHR";
96                 case VK_SUBOPTIMAL_KHR:                                 return "VK_SUBOPTIMAL_KHR";
97                 case VK_ERROR_OUT_OF_DATE_KHR:                  return "VK_ERROR_OUT_OF_DATE_KHR";
98                 case VK_ERROR_INCOMPATIBLE_DISPLAY_KHR: return "VK_ERROR_INCOMPATIBLE_DISPLAY_KHR";
99                 case VK_ERROR_VALIDATION_FAILED_EXT:    return "VK_ERROR_VALIDATION_FAILED_EXT";
100                 case VK_ERROR_INVALID_SHADER_NV:                return "VK_ERROR_INVALID_SHADER_NV";
101                 default:                                                                return DE_NULL;
102         }
103 }
104
105 const char* getStructureTypeName (VkStructureType value)
106 {
107         switch (value)
108         {
109                 case VK_STRUCTURE_TYPE_APPLICATION_INFO:                                                                                                return "VK_STRUCTURE_TYPE_APPLICATION_INFO";
110                 case VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO:                                                                                    return "VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO";
111                 case VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO:                                                                                return "VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO";
112                 case VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO:                                                                                              return "VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO";
113                 case VK_STRUCTURE_TYPE_SUBMIT_INFO:                                                                                                             return "VK_STRUCTURE_TYPE_SUBMIT_INFO";
114                 case VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO:                                                                                    return "VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO";
115                 case VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE:                                                                                             return "VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE";
116                 case VK_STRUCTURE_TYPE_BIND_SPARSE_INFO:                                                                                                return "VK_STRUCTURE_TYPE_BIND_SPARSE_INFO";
117                 case VK_STRUCTURE_TYPE_FENCE_CREATE_INFO:                                                                                               return "VK_STRUCTURE_TYPE_FENCE_CREATE_INFO";
118                 case VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO:                                                                                   return "VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO";
119                 case VK_STRUCTURE_TYPE_EVENT_CREATE_INFO:                                                                                               return "VK_STRUCTURE_TYPE_EVENT_CREATE_INFO";
120                 case VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO:                                                                                  return "VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO";
121                 case VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO:                                                                                              return "VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO";
122                 case VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO:                                                                                 return "VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO";
123                 case VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO:                                                                                               return "VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO";
124                 case VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO:                                                                                  return "VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO";
125                 case VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO:                                                                               return "VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO";
126                 case VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO:                                                                              return "VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO";
127                 case VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO:                                                               return "VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO";
128                 case VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO:                                                 return "VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO";
129                 case VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO:                                               return "VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO";
130                 case VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO:                                                 return "VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO";
131                 case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO:                                                             return "VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO";
132                 case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO:                                                return "VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO";
133                 case VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO:                                                  return "VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO";
134                 case VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO:                                                return "VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO";
135                 case VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO:                                                  return "VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO";
136                 case VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO:                                                              return "VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO";
137                 case VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO:                                                                   return "VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO";
138                 case VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO:                                                                    return "VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO";
139                 case VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO:                                                                             return "VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO";
140                 case VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO:                                                                                             return "VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO";
141                 case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO:                                                               return "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO";
142                 case VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO:                                                                             return "VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO";
143                 case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO:                                                                    return "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO";
144                 case VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET:                                                                                    return "VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET";
145                 case VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET:                                                                                             return "VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET";
146                 case VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO:                                                                                 return "VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO";
147                 case VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO:                                                                                 return "VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO";
148                 case VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO:                                                                                return "VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO";
149                 case VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO:                                                                    return "VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO";
150                 case VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO:                                                                 return "VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO";
151                 case VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO:                                                                               return "VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO";
152                 case VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO:                                                                                  return "VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO";
153                 case VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER:                                                                                   return "VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER";
154                 case VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER:                                                                                    return "VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER";
155                 case VK_STRUCTURE_TYPE_MEMORY_BARRIER:                                                                                                  return "VK_STRUCTURE_TYPE_MEMORY_BARRIER";
156                 case VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO:                                                                             return "VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO";
157                 case VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO:                                                                               return "VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO";
158                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES:                                                             return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES";
159                 case VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO:                                                                                 return "VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO";
160                 case VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO:                                                                                  return "VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO";
161                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES:                                                  return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES";
162                 case VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS:                                                                   return "VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS";
163                 case VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO:                                                                  return "VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO";
164                 case VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO:                                                                              return "VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO";
165                 case VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO:                                                             return "VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO";
166                 case VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO:                                                  return "VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO";
167                 case VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO:                                                                                return "VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO";
168                 case VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO:                                                                   return "VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO";
169                 case VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO:                                                    return "VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO";
170                 case VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO:                                                             return "VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO";
171                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES:                                                                return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES";
172                 case VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO:                                                                 return "VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO";
173                 case VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2:                                                               return "VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2";
174                 case VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2:                                                                return "VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2";
175                 case VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2:                                                 return "VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2";
176                 case VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2:                                                                                   return "VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2";
177                 case VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2:                                                              return "VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2";
178                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2:                                                                              return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2";
179                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2:                                                                    return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2";
180                 case VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2:                                                                                             return "VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2";
181                 case VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2:                                                                               return "VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2";
182                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2:                                                             return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2";
183                 case VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2:                                                                               return "VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2";
184                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2:                                                             return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2";
185                 case VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2:                                                                return "VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2";
186                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2:                                              return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2";
187                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES:                                               return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES";
188                 case VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO:                                 return "VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO";
189                 case VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO:                                                                    return "VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO";
190                 case VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO:                   return "VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO";
191                 case VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO:                                                               return "VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO";
192                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES:                                                              return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES";
193                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES:                                                    return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES";
194                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES:                                               return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES";
195                 case VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO:                                                                                   return "VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO";
196                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES:                                               return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES";
197                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES:                                             return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES";
198                 case VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2:                                                                                             return "VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2";
199                 case VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO:                                                    return "VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO";
200                 case VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO:                                                                   return "VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO";
201                 case VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO:                                                                    return "VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO";
202                 case VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO:                                                    return "VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO";
203                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES:                               return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES";
204                 case VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES:                                return "VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES";
205                 case VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO:                                                  return "VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO";
206                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO:                                              return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO";
207                 case VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES:                                                                return "VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES";
208                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO:                                                    return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO";
209                 case VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES:                                                                              return "VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES";
210                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES:                                                                   return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES";
211                 case VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO:                                                              return "VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO";
212                 case VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO:                                                               return "VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO";
213                 case VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO:                                                                             return "VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO";
214                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO:                                                             return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO";
215                 case VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES:                                                                               return "VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES";
216                 case VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO:                                                                                return "VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO";
217                 case VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO:                                                                    return "VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO";
218                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO:                                                 return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO";
219                 case VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES:                                                                   return "VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES";
220                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES:                                                return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES";
221                 case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT:                                                                   return "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT";
222                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES:                                  return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES";
223                 case VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR:                                                   return "VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR";
224                 case VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR:                                                                               return "VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR";
225                 case VK_STRUCTURE_TYPE_PRESENT_INFO_KHR:                                                                                                return "VK_STRUCTURE_TYPE_PRESENT_INFO_KHR";
226                 case VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR:                                                                 return "VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR";
227                 case VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR:                                                    return "VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR";
228                 case VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR:                                                                             return "VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR";
229                 case VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR:                                                                   return "VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR";
230                 case VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR:                                                  return "VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR";
231                 case VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR:                                                                    return "VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR";
232                 case VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR:                                                                 return "VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR";
233                 case VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR:                                                                                return "VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR";
234                 case VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR:                                                                    return "VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR";
235                 case VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR:                                                                             return "VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR";
236                 case VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR:                                                                 return "VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR";
237                 case VK_STRUCTURE_TYPE_MIR_SURFACE_CREATE_INFO_KHR:                                                                             return "VK_STRUCTURE_TYPE_MIR_SURFACE_CREATE_INFO_KHR";
238                 case VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR:                                                                 return "VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR";
239                 case VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR:                                                                   return "VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR";
240                 case VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT:                                                   return "VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT";
241                 case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD:                    return "VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD";
242                 case VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT:                                                               return "VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT";
243                 case VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT:                                                                return "VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT";
244                 case VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT:                                                                    return "VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT";
245                 case VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV:                                               return "VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV";
246                 case VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV:                                              return "VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV";
247                 case VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV:                                    return "VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV";
248                 case VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD:                                                return "VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD";
249                 case VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV:                                                    return "VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV";
250                 case VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV:                                                                  return "VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV";
251                 case VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV:                                                              return "VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV";
252                 case VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV:                                                              return "VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV";
253                 case VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV:                                               return "VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV";
254                 case VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT:                                                                                    return "VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT";
255                 case VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN:                                                                               return "VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN";
256                 case VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR:                                                             return "VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR";
257                 case VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR:                                                             return "VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR";
258                 case VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR:                                                              return "VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR";
259                 case VK_STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR:                                                                return "VK_STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR";
260                 case VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR:                                                                               return "VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR";
261                 case VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR:                                                                                return "VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR";
262                 case VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR:                                                                                  return "VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR";
263                 case VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR:                                              return "VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR";
264                 case VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR:                                                  return "VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR";
265                 case VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR:                                                  return "VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR";
266                 case VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR:                                                                             return "VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR";
267                 case VK_STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR:                                                             return "VK_STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR";
268                 case VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR:                                                                    return "VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR";
269                 case VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR:                                                                               return "VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR";
270                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR:                                  return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR";
271                 case VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT:               return "VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT";
272                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT:                              return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT";
273                 case VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT:                                                    return "VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT";
274                 case VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR:                                                                                             return "VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR";
275                 case VK_STRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX:                                                                    return "VK_STRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX";
276                 case VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX:                                                return "VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX";
277                 case VK_STRUCTURE_TYPE_CMD_PROCESS_COMMANDS_INFO_NVX:                                                                   return "VK_STRUCTURE_TYPE_CMD_PROCESS_COMMANDS_INFO_NVX";
278                 case VK_STRUCTURE_TYPE_CMD_RESERVE_SPACE_FOR_COMMANDS_INFO_NVX:                                                 return "VK_STRUCTURE_TYPE_CMD_RESERVE_SPACE_FOR_COMMANDS_INFO_NVX";
279                 case VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_LIMITS_NVX:                                                    return "VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_LIMITS_NVX";
280                 case VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_FEATURES_NVX:                                                  return "VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_FEATURES_NVX";
281                 case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV:                                return "VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV";
282                 case VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT:                                                                              return "VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT";
283                 case VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT:                                                                                  return "VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT";
284                 case VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT:                                                                                   return "VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT";
285                 case VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT:                                                                                  return "VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT";
286                 case VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT:                                                               return "VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT";
287                 case VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE:                                                                               return "VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE";
288                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX:    return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX";
289                 case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV:                                  return "VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV";
290                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT:                                return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT";
291                 case VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT:                                return "VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT";
292                 case VK_STRUCTURE_TYPE_HDR_METADATA_EXT:                                                                                                return "VK_STRUCTURE_TYPE_HDR_METADATA_EXT";
293                 case VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2_KHR:                                                                    return "VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2_KHR";
294                 case VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR:                                                                              return "VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR";
295                 case VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2_KHR:                                                                               return "VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2_KHR";
296                 case VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2_KHR:                                                                                return "VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2_KHR";
297                 case VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2_KHR:                                                                   return "VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2_KHR";
298                 case VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO_KHR:                                                                                  return "VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO_KHR";
299                 case VK_STRUCTURE_TYPE_SUBPASS_END_INFO_KHR:                                                                                    return "VK_STRUCTURE_TYPE_SUBPASS_END_INFO_KHR";
300                 case VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR:                                                 return "VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR";
301                 case VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR:                                                              return "VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR";
302                 case VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR:                                                              return "VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR";
303                 case VK_STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR:                                                                 return "VK_STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR";
304                 case VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR:                                                                                return "VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR";
305                 case VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR:                                                                                   return "VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR";
306                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR:                                                              return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR";
307                 case VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR:                                                                              return "VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR";
308                 case VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR:                                                                                    return "VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR";
309                 case VK_STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR:                                                                                return "VK_STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR";
310                 case VK_STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR:                                                                  return "VK_STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR";
311                 case VK_STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR:                                                                   return "VK_STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR";
312                 case VK_STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR:                                                                                return "VK_STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR";
313                 case VK_STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR:                                                                return "VK_STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR";
314                 case VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK:                                                                             return "VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK";
315                 case VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK:                                                                   return "VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK";
316                 case VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID:                                                   return "VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID";
317                 case VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID:                                              return "VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID";
318                 case VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID:                               return "VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID";
319                 case VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID:                                             return "VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID";
320                 case VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID:                                 return "VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID";
321                 case VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID:                                                                                 return "VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID";
322                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT:                    return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT";
323                 case VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT:                                                  return "VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT";
324                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT:                               return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT";
325                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT:                             return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT";
326                 case VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT:                                   return "VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT";
327                 case VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT:                    return "VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT";
328                 case VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT:                                                                               return "VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT";
329                 case VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT:                                             return "VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT";
330                 case VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT:                                 return "VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT";
331                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT:                                 return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT";
332                 case VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT:                                                                              return "VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT";
333                 case VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR:                                                               return "VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR";
334                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT:                   return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT";
335                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT:                 return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT";
336                 case VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT:                             return "VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT";
337                 case VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV:                                 return "VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV";
338                 case VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV:                               return "VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV";
339                 case VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT:                                                                return "VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT";
340                 case VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT:                                  return "VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT";
341                 case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT:                             return "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT";
342                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT:                                return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT";
343                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT:                              return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT";
344                 case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO_EXT:              return "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO_EXT";
345                 case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT_EXT:             return "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT_EXT";
346                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR:                                               return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR";
347                 case VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT:                                                             return "VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT";
348                 case VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT:                                                              return "VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT";
349                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT:                             return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT";
350                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES_KHR:                                return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES_KHR";
351                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT:                 return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT";
352                 case VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT:                             return "VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT";
353                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT:                   return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT";
354                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES_KHR:                                                   return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES_KHR";
355                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES_KHR:                                return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES_KHR";
356                 default:                                                                                                                                                                return DE_NULL;
357         }
358 }
359
360 const char* getSystemAllocationScopeName (VkSystemAllocationScope value)
361 {
362         switch (value)
363         {
364                 case VK_SYSTEM_ALLOCATION_SCOPE_COMMAND:        return "VK_SYSTEM_ALLOCATION_SCOPE_COMMAND";
365                 case VK_SYSTEM_ALLOCATION_SCOPE_OBJECT:         return "VK_SYSTEM_ALLOCATION_SCOPE_OBJECT";
366                 case VK_SYSTEM_ALLOCATION_SCOPE_CACHE:          return "VK_SYSTEM_ALLOCATION_SCOPE_CACHE";
367                 case VK_SYSTEM_ALLOCATION_SCOPE_DEVICE:         return "VK_SYSTEM_ALLOCATION_SCOPE_DEVICE";
368                 case VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE:       return "VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE";
369                 default:                                                                        return DE_NULL;
370         }
371 }
372
373 const char* getInternalAllocationTypeName (VkInternalAllocationType value)
374 {
375         switch (value)
376         {
377                 case VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE:    return "VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE";
378                 default:                                                                                return DE_NULL;
379         }
380 }
381
382 const char* getFormatName (VkFormat value)
383 {
384         switch (value)
385         {
386                 case VK_FORMAT_UNDEFINED:                                                                       return "VK_FORMAT_UNDEFINED";
387                 case VK_FORMAT_R4G4_UNORM_PACK8:                                                        return "VK_FORMAT_R4G4_UNORM_PACK8";
388                 case VK_FORMAT_R4G4B4A4_UNORM_PACK16:                                           return "VK_FORMAT_R4G4B4A4_UNORM_PACK16";
389                 case VK_FORMAT_B4G4R4A4_UNORM_PACK16:                                           return "VK_FORMAT_B4G4R4A4_UNORM_PACK16";
390                 case VK_FORMAT_R5G6B5_UNORM_PACK16:                                                     return "VK_FORMAT_R5G6B5_UNORM_PACK16";
391                 case VK_FORMAT_B5G6R5_UNORM_PACK16:                                                     return "VK_FORMAT_B5G6R5_UNORM_PACK16";
392                 case VK_FORMAT_R5G5B5A1_UNORM_PACK16:                                           return "VK_FORMAT_R5G5B5A1_UNORM_PACK16";
393                 case VK_FORMAT_B5G5R5A1_UNORM_PACK16:                                           return "VK_FORMAT_B5G5R5A1_UNORM_PACK16";
394                 case VK_FORMAT_A1R5G5B5_UNORM_PACK16:                                           return "VK_FORMAT_A1R5G5B5_UNORM_PACK16";
395                 case VK_FORMAT_R8_UNORM:                                                                        return "VK_FORMAT_R8_UNORM";
396                 case VK_FORMAT_R8_SNORM:                                                                        return "VK_FORMAT_R8_SNORM";
397                 case VK_FORMAT_R8_USCALED:                                                                      return "VK_FORMAT_R8_USCALED";
398                 case VK_FORMAT_R8_SSCALED:                                                                      return "VK_FORMAT_R8_SSCALED";
399                 case VK_FORMAT_R8_UINT:                                                                         return "VK_FORMAT_R8_UINT";
400                 case VK_FORMAT_R8_SINT:                                                                         return "VK_FORMAT_R8_SINT";
401                 case VK_FORMAT_R8_SRGB:                                                                         return "VK_FORMAT_R8_SRGB";
402                 case VK_FORMAT_R8G8_UNORM:                                                                      return "VK_FORMAT_R8G8_UNORM";
403                 case VK_FORMAT_R8G8_SNORM:                                                                      return "VK_FORMAT_R8G8_SNORM";
404                 case VK_FORMAT_R8G8_USCALED:                                                            return "VK_FORMAT_R8G8_USCALED";
405                 case VK_FORMAT_R8G8_SSCALED:                                                            return "VK_FORMAT_R8G8_SSCALED";
406                 case VK_FORMAT_R8G8_UINT:                                                                       return "VK_FORMAT_R8G8_UINT";
407                 case VK_FORMAT_R8G8_SINT:                                                                       return "VK_FORMAT_R8G8_SINT";
408                 case VK_FORMAT_R8G8_SRGB:                                                                       return "VK_FORMAT_R8G8_SRGB";
409                 case VK_FORMAT_R8G8B8_UNORM:                                                            return "VK_FORMAT_R8G8B8_UNORM";
410                 case VK_FORMAT_R8G8B8_SNORM:                                                            return "VK_FORMAT_R8G8B8_SNORM";
411                 case VK_FORMAT_R8G8B8_USCALED:                                                          return "VK_FORMAT_R8G8B8_USCALED";
412                 case VK_FORMAT_R8G8B8_SSCALED:                                                          return "VK_FORMAT_R8G8B8_SSCALED";
413                 case VK_FORMAT_R8G8B8_UINT:                                                                     return "VK_FORMAT_R8G8B8_UINT";
414                 case VK_FORMAT_R8G8B8_SINT:                                                                     return "VK_FORMAT_R8G8B8_SINT";
415                 case VK_FORMAT_R8G8B8_SRGB:                                                                     return "VK_FORMAT_R8G8B8_SRGB";
416                 case VK_FORMAT_B8G8R8_UNORM:                                                            return "VK_FORMAT_B8G8R8_UNORM";
417                 case VK_FORMAT_B8G8R8_SNORM:                                                            return "VK_FORMAT_B8G8R8_SNORM";
418                 case VK_FORMAT_B8G8R8_USCALED:                                                          return "VK_FORMAT_B8G8R8_USCALED";
419                 case VK_FORMAT_B8G8R8_SSCALED:                                                          return "VK_FORMAT_B8G8R8_SSCALED";
420                 case VK_FORMAT_B8G8R8_UINT:                                                                     return "VK_FORMAT_B8G8R8_UINT";
421                 case VK_FORMAT_B8G8R8_SINT:                                                                     return "VK_FORMAT_B8G8R8_SINT";
422                 case VK_FORMAT_B8G8R8_SRGB:                                                                     return "VK_FORMAT_B8G8R8_SRGB";
423                 case VK_FORMAT_R8G8B8A8_UNORM:                                                          return "VK_FORMAT_R8G8B8A8_UNORM";
424                 case VK_FORMAT_R8G8B8A8_SNORM:                                                          return "VK_FORMAT_R8G8B8A8_SNORM";
425                 case VK_FORMAT_R8G8B8A8_USCALED:                                                        return "VK_FORMAT_R8G8B8A8_USCALED";
426                 case VK_FORMAT_R8G8B8A8_SSCALED:                                                        return "VK_FORMAT_R8G8B8A8_SSCALED";
427                 case VK_FORMAT_R8G8B8A8_UINT:                                                           return "VK_FORMAT_R8G8B8A8_UINT";
428                 case VK_FORMAT_R8G8B8A8_SINT:                                                           return "VK_FORMAT_R8G8B8A8_SINT";
429                 case VK_FORMAT_R8G8B8A8_SRGB:                                                           return "VK_FORMAT_R8G8B8A8_SRGB";
430                 case VK_FORMAT_B8G8R8A8_UNORM:                                                          return "VK_FORMAT_B8G8R8A8_UNORM";
431                 case VK_FORMAT_B8G8R8A8_SNORM:                                                          return "VK_FORMAT_B8G8R8A8_SNORM";
432                 case VK_FORMAT_B8G8R8A8_USCALED:                                                        return "VK_FORMAT_B8G8R8A8_USCALED";
433                 case VK_FORMAT_B8G8R8A8_SSCALED:                                                        return "VK_FORMAT_B8G8R8A8_SSCALED";
434                 case VK_FORMAT_B8G8R8A8_UINT:                                                           return "VK_FORMAT_B8G8R8A8_UINT";
435                 case VK_FORMAT_B8G8R8A8_SINT:                                                           return "VK_FORMAT_B8G8R8A8_SINT";
436                 case VK_FORMAT_B8G8R8A8_SRGB:                                                           return "VK_FORMAT_B8G8R8A8_SRGB";
437                 case VK_FORMAT_A8B8G8R8_UNORM_PACK32:                                           return "VK_FORMAT_A8B8G8R8_UNORM_PACK32";
438                 case VK_FORMAT_A8B8G8R8_SNORM_PACK32:                                           return "VK_FORMAT_A8B8G8R8_SNORM_PACK32";
439                 case VK_FORMAT_A8B8G8R8_USCALED_PACK32:                                         return "VK_FORMAT_A8B8G8R8_USCALED_PACK32";
440                 case VK_FORMAT_A8B8G8R8_SSCALED_PACK32:                                         return "VK_FORMAT_A8B8G8R8_SSCALED_PACK32";
441                 case VK_FORMAT_A8B8G8R8_UINT_PACK32:                                            return "VK_FORMAT_A8B8G8R8_UINT_PACK32";
442                 case VK_FORMAT_A8B8G8R8_SINT_PACK32:                                            return "VK_FORMAT_A8B8G8R8_SINT_PACK32";
443                 case VK_FORMAT_A8B8G8R8_SRGB_PACK32:                                            return "VK_FORMAT_A8B8G8R8_SRGB_PACK32";
444                 case VK_FORMAT_A2R10G10B10_UNORM_PACK32:                                        return "VK_FORMAT_A2R10G10B10_UNORM_PACK32";
445                 case VK_FORMAT_A2R10G10B10_SNORM_PACK32:                                        return "VK_FORMAT_A2R10G10B10_SNORM_PACK32";
446                 case VK_FORMAT_A2R10G10B10_USCALED_PACK32:                                      return "VK_FORMAT_A2R10G10B10_USCALED_PACK32";
447                 case VK_FORMAT_A2R10G10B10_SSCALED_PACK32:                                      return "VK_FORMAT_A2R10G10B10_SSCALED_PACK32";
448                 case VK_FORMAT_A2R10G10B10_UINT_PACK32:                                         return "VK_FORMAT_A2R10G10B10_UINT_PACK32";
449                 case VK_FORMAT_A2R10G10B10_SINT_PACK32:                                         return "VK_FORMAT_A2R10G10B10_SINT_PACK32";
450                 case VK_FORMAT_A2B10G10R10_UNORM_PACK32:                                        return "VK_FORMAT_A2B10G10R10_UNORM_PACK32";
451                 case VK_FORMAT_A2B10G10R10_SNORM_PACK32:                                        return "VK_FORMAT_A2B10G10R10_SNORM_PACK32";
452                 case VK_FORMAT_A2B10G10R10_USCALED_PACK32:                                      return "VK_FORMAT_A2B10G10R10_USCALED_PACK32";
453                 case VK_FORMAT_A2B10G10R10_SSCALED_PACK32:                                      return "VK_FORMAT_A2B10G10R10_SSCALED_PACK32";
454                 case VK_FORMAT_A2B10G10R10_UINT_PACK32:                                         return "VK_FORMAT_A2B10G10R10_UINT_PACK32";
455                 case VK_FORMAT_A2B10G10R10_SINT_PACK32:                                         return "VK_FORMAT_A2B10G10R10_SINT_PACK32";
456                 case VK_FORMAT_R16_UNORM:                                                                       return "VK_FORMAT_R16_UNORM";
457                 case VK_FORMAT_R16_SNORM:                                                                       return "VK_FORMAT_R16_SNORM";
458                 case VK_FORMAT_R16_USCALED:                                                                     return "VK_FORMAT_R16_USCALED";
459                 case VK_FORMAT_R16_SSCALED:                                                                     return "VK_FORMAT_R16_SSCALED";
460                 case VK_FORMAT_R16_UINT:                                                                        return "VK_FORMAT_R16_UINT";
461                 case VK_FORMAT_R16_SINT:                                                                        return "VK_FORMAT_R16_SINT";
462                 case VK_FORMAT_R16_SFLOAT:                                                                      return "VK_FORMAT_R16_SFLOAT";
463                 case VK_FORMAT_R16G16_UNORM:                                                            return "VK_FORMAT_R16G16_UNORM";
464                 case VK_FORMAT_R16G16_SNORM:                                                            return "VK_FORMAT_R16G16_SNORM";
465                 case VK_FORMAT_R16G16_USCALED:                                                          return "VK_FORMAT_R16G16_USCALED";
466                 case VK_FORMAT_R16G16_SSCALED:                                                          return "VK_FORMAT_R16G16_SSCALED";
467                 case VK_FORMAT_R16G16_UINT:                                                                     return "VK_FORMAT_R16G16_UINT";
468                 case VK_FORMAT_R16G16_SINT:                                                                     return "VK_FORMAT_R16G16_SINT";
469                 case VK_FORMAT_R16G16_SFLOAT:                                                           return "VK_FORMAT_R16G16_SFLOAT";
470                 case VK_FORMAT_R16G16B16_UNORM:                                                         return "VK_FORMAT_R16G16B16_UNORM";
471                 case VK_FORMAT_R16G16B16_SNORM:                                                         return "VK_FORMAT_R16G16B16_SNORM";
472                 case VK_FORMAT_R16G16B16_USCALED:                                                       return "VK_FORMAT_R16G16B16_USCALED";
473                 case VK_FORMAT_R16G16B16_SSCALED:                                                       return "VK_FORMAT_R16G16B16_SSCALED";
474                 case VK_FORMAT_R16G16B16_UINT:                                                          return "VK_FORMAT_R16G16B16_UINT";
475                 case VK_FORMAT_R16G16B16_SINT:                                                          return "VK_FORMAT_R16G16B16_SINT";
476                 case VK_FORMAT_R16G16B16_SFLOAT:                                                        return "VK_FORMAT_R16G16B16_SFLOAT";
477                 case VK_FORMAT_R16G16B16A16_UNORM:                                                      return "VK_FORMAT_R16G16B16A16_UNORM";
478                 case VK_FORMAT_R16G16B16A16_SNORM:                                                      return "VK_FORMAT_R16G16B16A16_SNORM";
479                 case VK_FORMAT_R16G16B16A16_USCALED:                                            return "VK_FORMAT_R16G16B16A16_USCALED";
480                 case VK_FORMAT_R16G16B16A16_SSCALED:                                            return "VK_FORMAT_R16G16B16A16_SSCALED";
481                 case VK_FORMAT_R16G16B16A16_UINT:                                                       return "VK_FORMAT_R16G16B16A16_UINT";
482                 case VK_FORMAT_R16G16B16A16_SINT:                                                       return "VK_FORMAT_R16G16B16A16_SINT";
483                 case VK_FORMAT_R16G16B16A16_SFLOAT:                                                     return "VK_FORMAT_R16G16B16A16_SFLOAT";
484                 case VK_FORMAT_R32_UINT:                                                                        return "VK_FORMAT_R32_UINT";
485                 case VK_FORMAT_R32_SINT:                                                                        return "VK_FORMAT_R32_SINT";
486                 case VK_FORMAT_R32_SFLOAT:                                                                      return "VK_FORMAT_R32_SFLOAT";
487                 case VK_FORMAT_R32G32_UINT:                                                                     return "VK_FORMAT_R32G32_UINT";
488                 case VK_FORMAT_R32G32_SINT:                                                                     return "VK_FORMAT_R32G32_SINT";
489                 case VK_FORMAT_R32G32_SFLOAT:                                                           return "VK_FORMAT_R32G32_SFLOAT";
490                 case VK_FORMAT_R32G32B32_UINT:                                                          return "VK_FORMAT_R32G32B32_UINT";
491                 case VK_FORMAT_R32G32B32_SINT:                                                          return "VK_FORMAT_R32G32B32_SINT";
492                 case VK_FORMAT_R32G32B32_SFLOAT:                                                        return "VK_FORMAT_R32G32B32_SFLOAT";
493                 case VK_FORMAT_R32G32B32A32_UINT:                                                       return "VK_FORMAT_R32G32B32A32_UINT";
494                 case VK_FORMAT_R32G32B32A32_SINT:                                                       return "VK_FORMAT_R32G32B32A32_SINT";
495                 case VK_FORMAT_R32G32B32A32_SFLOAT:                                                     return "VK_FORMAT_R32G32B32A32_SFLOAT";
496                 case VK_FORMAT_R64_UINT:                                                                        return "VK_FORMAT_R64_UINT";
497                 case VK_FORMAT_R64_SINT:                                                                        return "VK_FORMAT_R64_SINT";
498                 case VK_FORMAT_R64_SFLOAT:                                                                      return "VK_FORMAT_R64_SFLOAT";
499                 case VK_FORMAT_R64G64_UINT:                                                                     return "VK_FORMAT_R64G64_UINT";
500                 case VK_FORMAT_R64G64_SINT:                                                                     return "VK_FORMAT_R64G64_SINT";
501                 case VK_FORMAT_R64G64_SFLOAT:                                                           return "VK_FORMAT_R64G64_SFLOAT";
502                 case VK_FORMAT_R64G64B64_UINT:                                                          return "VK_FORMAT_R64G64B64_UINT";
503                 case VK_FORMAT_R64G64B64_SINT:                                                          return "VK_FORMAT_R64G64B64_SINT";
504                 case VK_FORMAT_R64G64B64_SFLOAT:                                                        return "VK_FORMAT_R64G64B64_SFLOAT";
505                 case VK_FORMAT_R64G64B64A64_UINT:                                                       return "VK_FORMAT_R64G64B64A64_UINT";
506                 case VK_FORMAT_R64G64B64A64_SINT:                                                       return "VK_FORMAT_R64G64B64A64_SINT";
507                 case VK_FORMAT_R64G64B64A64_SFLOAT:                                                     return "VK_FORMAT_R64G64B64A64_SFLOAT";
508                 case VK_FORMAT_B10G11R11_UFLOAT_PACK32:                                         return "VK_FORMAT_B10G11R11_UFLOAT_PACK32";
509                 case VK_FORMAT_E5B9G9R9_UFLOAT_PACK32:                                          return "VK_FORMAT_E5B9G9R9_UFLOAT_PACK32";
510                 case VK_FORMAT_D16_UNORM:                                                                       return "VK_FORMAT_D16_UNORM";
511                 case VK_FORMAT_X8_D24_UNORM_PACK32:                                                     return "VK_FORMAT_X8_D24_UNORM_PACK32";
512                 case VK_FORMAT_D32_SFLOAT:                                                                      return "VK_FORMAT_D32_SFLOAT";
513                 case VK_FORMAT_S8_UINT:                                                                         return "VK_FORMAT_S8_UINT";
514                 case VK_FORMAT_D16_UNORM_S8_UINT:                                                       return "VK_FORMAT_D16_UNORM_S8_UINT";
515                 case VK_FORMAT_D24_UNORM_S8_UINT:                                                       return "VK_FORMAT_D24_UNORM_S8_UINT";
516                 case VK_FORMAT_D32_SFLOAT_S8_UINT:                                                      return "VK_FORMAT_D32_SFLOAT_S8_UINT";
517                 case VK_FORMAT_BC1_RGB_UNORM_BLOCK:                                                     return "VK_FORMAT_BC1_RGB_UNORM_BLOCK";
518                 case VK_FORMAT_BC1_RGB_SRGB_BLOCK:                                                      return "VK_FORMAT_BC1_RGB_SRGB_BLOCK";
519                 case VK_FORMAT_BC1_RGBA_UNORM_BLOCK:                                            return "VK_FORMAT_BC1_RGBA_UNORM_BLOCK";
520                 case VK_FORMAT_BC1_RGBA_SRGB_BLOCK:                                                     return "VK_FORMAT_BC1_RGBA_SRGB_BLOCK";
521                 case VK_FORMAT_BC2_UNORM_BLOCK:                                                         return "VK_FORMAT_BC2_UNORM_BLOCK";
522                 case VK_FORMAT_BC2_SRGB_BLOCK:                                                          return "VK_FORMAT_BC2_SRGB_BLOCK";
523                 case VK_FORMAT_BC3_UNORM_BLOCK:                                                         return "VK_FORMAT_BC3_UNORM_BLOCK";
524                 case VK_FORMAT_BC3_SRGB_BLOCK:                                                          return "VK_FORMAT_BC3_SRGB_BLOCK";
525                 case VK_FORMAT_BC4_UNORM_BLOCK:                                                         return "VK_FORMAT_BC4_UNORM_BLOCK";
526                 case VK_FORMAT_BC4_SNORM_BLOCK:                                                         return "VK_FORMAT_BC4_SNORM_BLOCK";
527                 case VK_FORMAT_BC5_UNORM_BLOCK:                                                         return "VK_FORMAT_BC5_UNORM_BLOCK";
528                 case VK_FORMAT_BC5_SNORM_BLOCK:                                                         return "VK_FORMAT_BC5_SNORM_BLOCK";
529                 case VK_FORMAT_BC6H_UFLOAT_BLOCK:                                                       return "VK_FORMAT_BC6H_UFLOAT_BLOCK";
530                 case VK_FORMAT_BC6H_SFLOAT_BLOCK:                                                       return "VK_FORMAT_BC6H_SFLOAT_BLOCK";
531                 case VK_FORMAT_BC7_UNORM_BLOCK:                                                         return "VK_FORMAT_BC7_UNORM_BLOCK";
532                 case VK_FORMAT_BC7_SRGB_BLOCK:                                                          return "VK_FORMAT_BC7_SRGB_BLOCK";
533                 case VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK:                                         return "VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK";
534                 case VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK:                                          return "VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK";
535                 case VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK:                                       return "VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK";
536                 case VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK:                                        return "VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK";
537                 case VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK:                                       return "VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK";
538                 case VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK:                                        return "VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK";
539                 case VK_FORMAT_EAC_R11_UNORM_BLOCK:                                                     return "VK_FORMAT_EAC_R11_UNORM_BLOCK";
540                 case VK_FORMAT_EAC_R11_SNORM_BLOCK:                                                     return "VK_FORMAT_EAC_R11_SNORM_BLOCK";
541                 case VK_FORMAT_EAC_R11G11_UNORM_BLOCK:                                          return "VK_FORMAT_EAC_R11G11_UNORM_BLOCK";
542                 case VK_FORMAT_EAC_R11G11_SNORM_BLOCK:                                          return "VK_FORMAT_EAC_R11G11_SNORM_BLOCK";
543                 case VK_FORMAT_ASTC_4x4_UNORM_BLOCK:                                            return "VK_FORMAT_ASTC_4x4_UNORM_BLOCK";
544                 case VK_FORMAT_ASTC_4x4_SRGB_BLOCK:                                                     return "VK_FORMAT_ASTC_4x4_SRGB_BLOCK";
545                 case VK_FORMAT_ASTC_5x4_UNORM_BLOCK:                                            return "VK_FORMAT_ASTC_5x4_UNORM_BLOCK";
546                 case VK_FORMAT_ASTC_5x4_SRGB_BLOCK:                                                     return "VK_FORMAT_ASTC_5x4_SRGB_BLOCK";
547                 case VK_FORMAT_ASTC_5x5_UNORM_BLOCK:                                            return "VK_FORMAT_ASTC_5x5_UNORM_BLOCK";
548                 case VK_FORMAT_ASTC_5x5_SRGB_BLOCK:                                                     return "VK_FORMAT_ASTC_5x5_SRGB_BLOCK";
549                 case VK_FORMAT_ASTC_6x5_UNORM_BLOCK:                                            return "VK_FORMAT_ASTC_6x5_UNORM_BLOCK";
550                 case VK_FORMAT_ASTC_6x5_SRGB_BLOCK:                                                     return "VK_FORMAT_ASTC_6x5_SRGB_BLOCK";
551                 case VK_FORMAT_ASTC_6x6_UNORM_BLOCK:                                            return "VK_FORMAT_ASTC_6x6_UNORM_BLOCK";
552                 case VK_FORMAT_ASTC_6x6_SRGB_BLOCK:                                                     return "VK_FORMAT_ASTC_6x6_SRGB_BLOCK";
553                 case VK_FORMAT_ASTC_8x5_UNORM_BLOCK:                                            return "VK_FORMAT_ASTC_8x5_UNORM_BLOCK";
554                 case VK_FORMAT_ASTC_8x5_SRGB_BLOCK:                                                     return "VK_FORMAT_ASTC_8x5_SRGB_BLOCK";
555                 case VK_FORMAT_ASTC_8x6_UNORM_BLOCK:                                            return "VK_FORMAT_ASTC_8x6_UNORM_BLOCK";
556                 case VK_FORMAT_ASTC_8x6_SRGB_BLOCK:                                                     return "VK_FORMAT_ASTC_8x6_SRGB_BLOCK";
557                 case VK_FORMAT_ASTC_8x8_UNORM_BLOCK:                                            return "VK_FORMAT_ASTC_8x8_UNORM_BLOCK";
558                 case VK_FORMAT_ASTC_8x8_SRGB_BLOCK:                                                     return "VK_FORMAT_ASTC_8x8_SRGB_BLOCK";
559                 case VK_FORMAT_ASTC_10x5_UNORM_BLOCK:                                           return "VK_FORMAT_ASTC_10x5_UNORM_BLOCK";
560                 case VK_FORMAT_ASTC_10x5_SRGB_BLOCK:                                            return "VK_FORMAT_ASTC_10x5_SRGB_BLOCK";
561                 case VK_FORMAT_ASTC_10x6_UNORM_BLOCK:                                           return "VK_FORMAT_ASTC_10x6_UNORM_BLOCK";
562                 case VK_FORMAT_ASTC_10x6_SRGB_BLOCK:                                            return "VK_FORMAT_ASTC_10x6_SRGB_BLOCK";
563                 case VK_FORMAT_ASTC_10x8_UNORM_BLOCK:                                           return "VK_FORMAT_ASTC_10x8_UNORM_BLOCK";
564                 case VK_FORMAT_ASTC_10x8_SRGB_BLOCK:                                            return "VK_FORMAT_ASTC_10x8_SRGB_BLOCK";
565                 case VK_FORMAT_ASTC_10x10_UNORM_BLOCK:                                          return "VK_FORMAT_ASTC_10x10_UNORM_BLOCK";
566                 case VK_FORMAT_ASTC_10x10_SRGB_BLOCK:                                           return "VK_FORMAT_ASTC_10x10_SRGB_BLOCK";
567                 case VK_FORMAT_ASTC_12x10_UNORM_BLOCK:                                          return "VK_FORMAT_ASTC_12x10_UNORM_BLOCK";
568                 case VK_FORMAT_ASTC_12x10_SRGB_BLOCK:                                           return "VK_FORMAT_ASTC_12x10_SRGB_BLOCK";
569                 case VK_FORMAT_ASTC_12x12_UNORM_BLOCK:                                          return "VK_FORMAT_ASTC_12x12_UNORM_BLOCK";
570                 case VK_FORMAT_ASTC_12x12_SRGB_BLOCK:                                           return "VK_FORMAT_ASTC_12x12_SRGB_BLOCK";
571                 case VK_FORMAT_G8B8G8R8_422_UNORM:                                                      return "VK_FORMAT_G8B8G8R8_422_UNORM";
572                 case VK_FORMAT_B8G8R8G8_422_UNORM:                                                      return "VK_FORMAT_B8G8R8G8_422_UNORM";
573                 case VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM:                                       return "VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM";
574                 case VK_FORMAT_G8_B8R8_2PLANE_420_UNORM:                                        return "VK_FORMAT_G8_B8R8_2PLANE_420_UNORM";
575                 case VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM:                                       return "VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM";
576                 case VK_FORMAT_G8_B8R8_2PLANE_422_UNORM:                                        return "VK_FORMAT_G8_B8R8_2PLANE_422_UNORM";
577                 case VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM:                                       return "VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM";
578                 case VK_FORMAT_R10X6_UNORM_PACK16:                                                      return "VK_FORMAT_R10X6_UNORM_PACK16";
579                 case VK_FORMAT_R10X6G10X6_UNORM_2PACK16:                                        return "VK_FORMAT_R10X6G10X6_UNORM_2PACK16";
580                 case VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16:                      return "VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16";
581                 case VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16:          return "VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16";
582                 case VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16:          return "VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16";
583                 case VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16:      return "VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16";
584                 case VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16:       return "VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16";
585                 case VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16:      return "VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16";
586                 case VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16:       return "VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16";
587                 case VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16:      return "VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16";
588                 case VK_FORMAT_R12X4_UNORM_PACK16:                                                      return "VK_FORMAT_R12X4_UNORM_PACK16";
589                 case VK_FORMAT_R12X4G12X4_UNORM_2PACK16:                                        return "VK_FORMAT_R12X4G12X4_UNORM_2PACK16";
590                 case VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16:                      return "VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16";
591                 case VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16:          return "VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16";
592                 case VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16:          return "VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16";
593                 case VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16:      return "VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16";
594                 case VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16:       return "VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16";
595                 case VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16:      return "VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16";
596                 case VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16:       return "VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16";
597                 case VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16:      return "VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16";
598                 case VK_FORMAT_G16B16G16R16_422_UNORM:                                          return "VK_FORMAT_G16B16G16R16_422_UNORM";
599                 case VK_FORMAT_B16G16R16G16_422_UNORM:                                          return "VK_FORMAT_B16G16R16G16_422_UNORM";
600                 case VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM:                            return "VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM";
601                 case VK_FORMAT_G16_B16R16_2PLANE_420_UNORM:                                     return "VK_FORMAT_G16_B16R16_2PLANE_420_UNORM";
602                 case VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM:                            return "VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM";
603                 case VK_FORMAT_G16_B16R16_2PLANE_422_UNORM:                                     return "VK_FORMAT_G16_B16R16_2PLANE_422_UNORM";
604                 case VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM:                            return "VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM";
605                 case VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG:                                     return "VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG";
606                 case VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG:                                     return "VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG";
607                 case VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG:                                     return "VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG";
608                 case VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG:                                     return "VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG";
609                 case VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG:                                      return "VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG";
610                 case VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG:                                      return "VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG";
611                 case VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG:                                      return "VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG";
612                 case VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG:                                      return "VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG";
613                 default:                                                                                                        return DE_NULL;
614         }
615 }
616
617 const char* getImageTypeName (VkImageType value)
618 {
619         switch (value)
620         {
621                 case VK_IMAGE_TYPE_1D:  return "VK_IMAGE_TYPE_1D";
622                 case VK_IMAGE_TYPE_2D:  return "VK_IMAGE_TYPE_2D";
623                 case VK_IMAGE_TYPE_3D:  return "VK_IMAGE_TYPE_3D";
624                 default:                                return DE_NULL;
625         }
626 }
627
628 const char* getImageTilingName (VkImageTiling value)
629 {
630         switch (value)
631         {
632                 case VK_IMAGE_TILING_OPTIMAL:   return "VK_IMAGE_TILING_OPTIMAL";
633                 case VK_IMAGE_TILING_LINEAR:    return "VK_IMAGE_TILING_LINEAR";
634                 default:                                                return DE_NULL;
635         }
636 }
637
638 const char* getPhysicalDeviceTypeName (VkPhysicalDeviceType value)
639 {
640         switch (value)
641         {
642                 case VK_PHYSICAL_DEVICE_TYPE_OTHER:                             return "VK_PHYSICAL_DEVICE_TYPE_OTHER";
643                 case VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU:    return "VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU";
644                 case VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU:              return "VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU";
645                 case VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU:               return "VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU";
646                 case VK_PHYSICAL_DEVICE_TYPE_CPU:                               return "VK_PHYSICAL_DEVICE_TYPE_CPU";
647                 default:                                                                                return DE_NULL;
648         }
649 }
650
651 const char* getQueryTypeName (VkQueryType value)
652 {
653         switch (value)
654         {
655                 case VK_QUERY_TYPE_OCCLUSION:                   return "VK_QUERY_TYPE_OCCLUSION";
656                 case VK_QUERY_TYPE_PIPELINE_STATISTICS: return "VK_QUERY_TYPE_PIPELINE_STATISTICS";
657                 case VK_QUERY_TYPE_TIMESTAMP:                   return "VK_QUERY_TYPE_TIMESTAMP";
658                 default:                                                                return DE_NULL;
659         }
660 }
661
662 const char* getSharingModeName (VkSharingMode value)
663 {
664         switch (value)
665         {
666                 case VK_SHARING_MODE_EXCLUSIVE:         return "VK_SHARING_MODE_EXCLUSIVE";
667                 case VK_SHARING_MODE_CONCURRENT:        return "VK_SHARING_MODE_CONCURRENT";
668                 default:                                                        return DE_NULL;
669         }
670 }
671
672 const char* getImageLayoutName (VkImageLayout value)
673 {
674         switch (value)
675         {
676                 case VK_IMAGE_LAYOUT_UNDEFINED:                                                                         return "VK_IMAGE_LAYOUT_UNDEFINED";
677                 case VK_IMAGE_LAYOUT_GENERAL:                                                                           return "VK_IMAGE_LAYOUT_GENERAL";
678                 case VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL:                                          return "VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL";
679                 case VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL:                          return "VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL";
680                 case VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL:                           return "VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL";
681                 case VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL:                                          return "VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL";
682                 case VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL:                                                      return "VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL";
683                 case VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL:                                                      return "VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL";
684                 case VK_IMAGE_LAYOUT_PREINITIALIZED:                                                            return "VK_IMAGE_LAYOUT_PREINITIALIZED";
685                 case VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL:        return "VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL";
686                 case VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL:        return "VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL";
687                 case VK_IMAGE_LAYOUT_PRESENT_SRC_KHR:                                                           return "VK_IMAGE_LAYOUT_PRESENT_SRC_KHR";
688                 case VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR:                                                        return "VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR";
689                 default:                                                                                                                        return DE_NULL;
690         }
691 }
692
693 const char* getImageViewTypeName (VkImageViewType value)
694 {
695         switch (value)
696         {
697                 case VK_IMAGE_VIEW_TYPE_1D:                     return "VK_IMAGE_VIEW_TYPE_1D";
698                 case VK_IMAGE_VIEW_TYPE_2D:                     return "VK_IMAGE_VIEW_TYPE_2D";
699                 case VK_IMAGE_VIEW_TYPE_3D:                     return "VK_IMAGE_VIEW_TYPE_3D";
700                 case VK_IMAGE_VIEW_TYPE_CUBE:           return "VK_IMAGE_VIEW_TYPE_CUBE";
701                 case VK_IMAGE_VIEW_TYPE_1D_ARRAY:       return "VK_IMAGE_VIEW_TYPE_1D_ARRAY";
702                 case VK_IMAGE_VIEW_TYPE_2D_ARRAY:       return "VK_IMAGE_VIEW_TYPE_2D_ARRAY";
703                 case VK_IMAGE_VIEW_TYPE_CUBE_ARRAY:     return "VK_IMAGE_VIEW_TYPE_CUBE_ARRAY";
704                 default:                                                        return DE_NULL;
705         }
706 }
707
708 const char* getComponentSwizzleName (VkComponentSwizzle value)
709 {
710         switch (value)
711         {
712                 case VK_COMPONENT_SWIZZLE_IDENTITY:     return "VK_COMPONENT_SWIZZLE_IDENTITY";
713                 case VK_COMPONENT_SWIZZLE_ZERO:         return "VK_COMPONENT_SWIZZLE_ZERO";
714                 case VK_COMPONENT_SWIZZLE_ONE:          return "VK_COMPONENT_SWIZZLE_ONE";
715                 case VK_COMPONENT_SWIZZLE_R:            return "VK_COMPONENT_SWIZZLE_R";
716                 case VK_COMPONENT_SWIZZLE_G:            return "VK_COMPONENT_SWIZZLE_G";
717                 case VK_COMPONENT_SWIZZLE_B:            return "VK_COMPONENT_SWIZZLE_B";
718                 case VK_COMPONENT_SWIZZLE_A:            return "VK_COMPONENT_SWIZZLE_A";
719                 default:                                                        return DE_NULL;
720         }
721 }
722
723 const char* getVertexInputRateName (VkVertexInputRate value)
724 {
725         switch (value)
726         {
727                 case VK_VERTEX_INPUT_RATE_VERTEX:       return "VK_VERTEX_INPUT_RATE_VERTEX";
728                 case VK_VERTEX_INPUT_RATE_INSTANCE:     return "VK_VERTEX_INPUT_RATE_INSTANCE";
729                 default:                                                        return DE_NULL;
730         }
731 }
732
733 const char* getPrimitiveTopologyName (VkPrimitiveTopology value)
734 {
735         switch (value)
736         {
737                 case VK_PRIMITIVE_TOPOLOGY_POINT_LIST:                                          return "VK_PRIMITIVE_TOPOLOGY_POINT_LIST";
738                 case VK_PRIMITIVE_TOPOLOGY_LINE_LIST:                                           return "VK_PRIMITIVE_TOPOLOGY_LINE_LIST";
739                 case VK_PRIMITIVE_TOPOLOGY_LINE_STRIP:                                          return "VK_PRIMITIVE_TOPOLOGY_LINE_STRIP";
740                 case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST:                                       return "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST";
741                 case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP:                                      return "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP";
742                 case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN:                                        return "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN";
743                 case VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY:            return "VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY";
744                 case VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY:           return "VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY";
745                 case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY:        return "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY";
746                 case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY:       return "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY";
747                 case VK_PRIMITIVE_TOPOLOGY_PATCH_LIST:                                          return "VK_PRIMITIVE_TOPOLOGY_PATCH_LIST";
748                 default:                                                                                                        return DE_NULL;
749         }
750 }
751
752 const char* getPolygonModeName (VkPolygonMode value)
753 {
754         switch (value)
755         {
756                 case VK_POLYGON_MODE_FILL:                              return "VK_POLYGON_MODE_FILL";
757                 case VK_POLYGON_MODE_LINE:                              return "VK_POLYGON_MODE_LINE";
758                 case VK_POLYGON_MODE_POINT:                             return "VK_POLYGON_MODE_POINT";
759                 case VK_POLYGON_MODE_FILL_RECTANGLE_NV: return "VK_POLYGON_MODE_FILL_RECTANGLE_NV";
760                 default:                                                                return DE_NULL;
761         }
762 }
763
764 const char* getFrontFaceName (VkFrontFace value)
765 {
766         switch (value)
767         {
768                 case VK_FRONT_FACE_COUNTER_CLOCKWISE:   return "VK_FRONT_FACE_COUNTER_CLOCKWISE";
769                 case VK_FRONT_FACE_CLOCKWISE:                   return "VK_FRONT_FACE_CLOCKWISE";
770                 default:                                                                return DE_NULL;
771         }
772 }
773
774 const char* getCompareOpName (VkCompareOp value)
775 {
776         switch (value)
777         {
778                 case VK_COMPARE_OP_NEVER:                               return "VK_COMPARE_OP_NEVER";
779                 case VK_COMPARE_OP_LESS:                                return "VK_COMPARE_OP_LESS";
780                 case VK_COMPARE_OP_EQUAL:                               return "VK_COMPARE_OP_EQUAL";
781                 case VK_COMPARE_OP_LESS_OR_EQUAL:               return "VK_COMPARE_OP_LESS_OR_EQUAL";
782                 case VK_COMPARE_OP_GREATER:                             return "VK_COMPARE_OP_GREATER";
783                 case VK_COMPARE_OP_NOT_EQUAL:                   return "VK_COMPARE_OP_NOT_EQUAL";
784                 case VK_COMPARE_OP_GREATER_OR_EQUAL:    return "VK_COMPARE_OP_GREATER_OR_EQUAL";
785                 case VK_COMPARE_OP_ALWAYS:                              return "VK_COMPARE_OP_ALWAYS";
786                 default:                                                                return DE_NULL;
787         }
788 }
789
790 const char* getStencilOpName (VkStencilOp value)
791 {
792         switch (value)
793         {
794                 case VK_STENCIL_OP_KEEP:                                return "VK_STENCIL_OP_KEEP";
795                 case VK_STENCIL_OP_ZERO:                                return "VK_STENCIL_OP_ZERO";
796                 case VK_STENCIL_OP_REPLACE:                             return "VK_STENCIL_OP_REPLACE";
797                 case VK_STENCIL_OP_INCREMENT_AND_CLAMP: return "VK_STENCIL_OP_INCREMENT_AND_CLAMP";
798                 case VK_STENCIL_OP_DECREMENT_AND_CLAMP: return "VK_STENCIL_OP_DECREMENT_AND_CLAMP";
799                 case VK_STENCIL_OP_INVERT:                              return "VK_STENCIL_OP_INVERT";
800                 case VK_STENCIL_OP_INCREMENT_AND_WRAP:  return "VK_STENCIL_OP_INCREMENT_AND_WRAP";
801                 case VK_STENCIL_OP_DECREMENT_AND_WRAP:  return "VK_STENCIL_OP_DECREMENT_AND_WRAP";
802                 default:                                                                return DE_NULL;
803         }
804 }
805
806 const char* getLogicOpName (VkLogicOp value)
807 {
808         switch (value)
809         {
810                 case VK_LOGIC_OP_CLEAR:                 return "VK_LOGIC_OP_CLEAR";
811                 case VK_LOGIC_OP_AND:                   return "VK_LOGIC_OP_AND";
812                 case VK_LOGIC_OP_AND_REVERSE:   return "VK_LOGIC_OP_AND_REVERSE";
813                 case VK_LOGIC_OP_COPY:                  return "VK_LOGIC_OP_COPY";
814                 case VK_LOGIC_OP_AND_INVERTED:  return "VK_LOGIC_OP_AND_INVERTED";
815                 case VK_LOGIC_OP_NO_OP:                 return "VK_LOGIC_OP_NO_OP";
816                 case VK_LOGIC_OP_XOR:                   return "VK_LOGIC_OP_XOR";
817                 case VK_LOGIC_OP_OR:                    return "VK_LOGIC_OP_OR";
818                 case VK_LOGIC_OP_NOR:                   return "VK_LOGIC_OP_NOR";
819                 case VK_LOGIC_OP_EQUIVALENT:    return "VK_LOGIC_OP_EQUIVALENT";
820                 case VK_LOGIC_OP_INVERT:                return "VK_LOGIC_OP_INVERT";
821                 case VK_LOGIC_OP_OR_REVERSE:    return "VK_LOGIC_OP_OR_REVERSE";
822                 case VK_LOGIC_OP_COPY_INVERTED: return "VK_LOGIC_OP_COPY_INVERTED";
823                 case VK_LOGIC_OP_OR_INVERTED:   return "VK_LOGIC_OP_OR_INVERTED";
824                 case VK_LOGIC_OP_NAND:                  return "VK_LOGIC_OP_NAND";
825                 case VK_LOGIC_OP_SET:                   return "VK_LOGIC_OP_SET";
826                 default:                                                return DE_NULL;
827         }
828 }
829
830 const char* getBlendFactorName (VkBlendFactor value)
831 {
832         switch (value)
833         {
834                 case VK_BLEND_FACTOR_ZERO:                                              return "VK_BLEND_FACTOR_ZERO";
835                 case VK_BLEND_FACTOR_ONE:                                               return "VK_BLEND_FACTOR_ONE";
836                 case VK_BLEND_FACTOR_SRC_COLOR:                                 return "VK_BLEND_FACTOR_SRC_COLOR";
837                 case VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR:               return "VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR";
838                 case VK_BLEND_FACTOR_DST_COLOR:                                 return "VK_BLEND_FACTOR_DST_COLOR";
839                 case VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR:               return "VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR";
840                 case VK_BLEND_FACTOR_SRC_ALPHA:                                 return "VK_BLEND_FACTOR_SRC_ALPHA";
841                 case VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA:               return "VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA";
842                 case VK_BLEND_FACTOR_DST_ALPHA:                                 return "VK_BLEND_FACTOR_DST_ALPHA";
843                 case VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA:               return "VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA";
844                 case VK_BLEND_FACTOR_CONSTANT_COLOR:                    return "VK_BLEND_FACTOR_CONSTANT_COLOR";
845                 case VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR:  return "VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR";
846                 case VK_BLEND_FACTOR_CONSTANT_ALPHA:                    return "VK_BLEND_FACTOR_CONSTANT_ALPHA";
847                 case VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA:  return "VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA";
848                 case VK_BLEND_FACTOR_SRC_ALPHA_SATURATE:                return "VK_BLEND_FACTOR_SRC_ALPHA_SATURATE";
849                 case VK_BLEND_FACTOR_SRC1_COLOR:                                return "VK_BLEND_FACTOR_SRC1_COLOR";
850                 case VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR:              return "VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR";
851                 case VK_BLEND_FACTOR_SRC1_ALPHA:                                return "VK_BLEND_FACTOR_SRC1_ALPHA";
852                 case VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA:              return "VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA";
853                 default:                                                                                return DE_NULL;
854         }
855 }
856
857 const char* getBlendOpName (VkBlendOp value)
858 {
859         switch (value)
860         {
861                 case VK_BLEND_OP_ADD:                                           return "VK_BLEND_OP_ADD";
862                 case VK_BLEND_OP_SUBTRACT:                                      return "VK_BLEND_OP_SUBTRACT";
863                 case VK_BLEND_OP_REVERSE_SUBTRACT:                      return "VK_BLEND_OP_REVERSE_SUBTRACT";
864                 case VK_BLEND_OP_MIN:                                           return "VK_BLEND_OP_MIN";
865                 case VK_BLEND_OP_MAX:                                           return "VK_BLEND_OP_MAX";
866                 case VK_BLEND_OP_ZERO_EXT:                                      return "VK_BLEND_OP_ZERO_EXT";
867                 case VK_BLEND_OP_SRC_EXT:                                       return "VK_BLEND_OP_SRC_EXT";
868                 case VK_BLEND_OP_DST_EXT:                                       return "VK_BLEND_OP_DST_EXT";
869                 case VK_BLEND_OP_SRC_OVER_EXT:                          return "VK_BLEND_OP_SRC_OVER_EXT";
870                 case VK_BLEND_OP_DST_OVER_EXT:                          return "VK_BLEND_OP_DST_OVER_EXT";
871                 case VK_BLEND_OP_SRC_IN_EXT:                            return "VK_BLEND_OP_SRC_IN_EXT";
872                 case VK_BLEND_OP_DST_IN_EXT:                            return "VK_BLEND_OP_DST_IN_EXT";
873                 case VK_BLEND_OP_SRC_OUT_EXT:                           return "VK_BLEND_OP_SRC_OUT_EXT";
874                 case VK_BLEND_OP_DST_OUT_EXT:                           return "VK_BLEND_OP_DST_OUT_EXT";
875                 case VK_BLEND_OP_SRC_ATOP_EXT:                          return "VK_BLEND_OP_SRC_ATOP_EXT";
876                 case VK_BLEND_OP_DST_ATOP_EXT:                          return "VK_BLEND_OP_DST_ATOP_EXT";
877                 case VK_BLEND_OP_XOR_EXT:                                       return "VK_BLEND_OP_XOR_EXT";
878                 case VK_BLEND_OP_MULTIPLY_EXT:                          return "VK_BLEND_OP_MULTIPLY_EXT";
879                 case VK_BLEND_OP_SCREEN_EXT:                            return "VK_BLEND_OP_SCREEN_EXT";
880                 case VK_BLEND_OP_OVERLAY_EXT:                           return "VK_BLEND_OP_OVERLAY_EXT";
881                 case VK_BLEND_OP_DARKEN_EXT:                            return "VK_BLEND_OP_DARKEN_EXT";
882                 case VK_BLEND_OP_LIGHTEN_EXT:                           return "VK_BLEND_OP_LIGHTEN_EXT";
883                 case VK_BLEND_OP_COLORDODGE_EXT:                        return "VK_BLEND_OP_COLORDODGE_EXT";
884                 case VK_BLEND_OP_COLORBURN_EXT:                         return "VK_BLEND_OP_COLORBURN_EXT";
885                 case VK_BLEND_OP_HARDLIGHT_EXT:                         return "VK_BLEND_OP_HARDLIGHT_EXT";
886                 case VK_BLEND_OP_SOFTLIGHT_EXT:                         return "VK_BLEND_OP_SOFTLIGHT_EXT";
887                 case VK_BLEND_OP_DIFFERENCE_EXT:                        return "VK_BLEND_OP_DIFFERENCE_EXT";
888                 case VK_BLEND_OP_EXCLUSION_EXT:                         return "VK_BLEND_OP_EXCLUSION_EXT";
889                 case VK_BLEND_OP_INVERT_EXT:                            return "VK_BLEND_OP_INVERT_EXT";
890                 case VK_BLEND_OP_INVERT_RGB_EXT:                        return "VK_BLEND_OP_INVERT_RGB_EXT";
891                 case VK_BLEND_OP_LINEARDODGE_EXT:                       return "VK_BLEND_OP_LINEARDODGE_EXT";
892                 case VK_BLEND_OP_LINEARBURN_EXT:                        return "VK_BLEND_OP_LINEARBURN_EXT";
893                 case VK_BLEND_OP_VIVIDLIGHT_EXT:                        return "VK_BLEND_OP_VIVIDLIGHT_EXT";
894                 case VK_BLEND_OP_LINEARLIGHT_EXT:                       return "VK_BLEND_OP_LINEARLIGHT_EXT";
895                 case VK_BLEND_OP_PINLIGHT_EXT:                          return "VK_BLEND_OP_PINLIGHT_EXT";
896                 case VK_BLEND_OP_HARDMIX_EXT:                           return "VK_BLEND_OP_HARDMIX_EXT";
897                 case VK_BLEND_OP_HSL_HUE_EXT:                           return "VK_BLEND_OP_HSL_HUE_EXT";
898                 case VK_BLEND_OP_HSL_SATURATION_EXT:            return "VK_BLEND_OP_HSL_SATURATION_EXT";
899                 case VK_BLEND_OP_HSL_COLOR_EXT:                         return "VK_BLEND_OP_HSL_COLOR_EXT";
900                 case VK_BLEND_OP_HSL_LUMINOSITY_EXT:            return "VK_BLEND_OP_HSL_LUMINOSITY_EXT";
901                 case VK_BLEND_OP_PLUS_EXT:                                      return "VK_BLEND_OP_PLUS_EXT";
902                 case VK_BLEND_OP_PLUS_CLAMPED_EXT:                      return "VK_BLEND_OP_PLUS_CLAMPED_EXT";
903                 case VK_BLEND_OP_PLUS_CLAMPED_ALPHA_EXT:        return "VK_BLEND_OP_PLUS_CLAMPED_ALPHA_EXT";
904                 case VK_BLEND_OP_PLUS_DARKER_EXT:                       return "VK_BLEND_OP_PLUS_DARKER_EXT";
905                 case VK_BLEND_OP_MINUS_EXT:                                     return "VK_BLEND_OP_MINUS_EXT";
906                 case VK_BLEND_OP_MINUS_CLAMPED_EXT:                     return "VK_BLEND_OP_MINUS_CLAMPED_EXT";
907                 case VK_BLEND_OP_CONTRAST_EXT:                          return "VK_BLEND_OP_CONTRAST_EXT";
908                 case VK_BLEND_OP_INVERT_OVG_EXT:                        return "VK_BLEND_OP_INVERT_OVG_EXT";
909                 case VK_BLEND_OP_RED_EXT:                                       return "VK_BLEND_OP_RED_EXT";
910                 case VK_BLEND_OP_GREEN_EXT:                                     return "VK_BLEND_OP_GREEN_EXT";
911                 case VK_BLEND_OP_BLUE_EXT:                                      return "VK_BLEND_OP_BLUE_EXT";
912                 default:                                                                        return DE_NULL;
913         }
914 }
915
916 const char* getDynamicStateName (VkDynamicState value)
917 {
918         switch (value)
919         {
920                 case VK_DYNAMIC_STATE_VIEWPORT:                                 return "VK_DYNAMIC_STATE_VIEWPORT";
921                 case VK_DYNAMIC_STATE_SCISSOR:                                  return "VK_DYNAMIC_STATE_SCISSOR";
922                 case VK_DYNAMIC_STATE_LINE_WIDTH:                               return "VK_DYNAMIC_STATE_LINE_WIDTH";
923                 case VK_DYNAMIC_STATE_DEPTH_BIAS:                               return "VK_DYNAMIC_STATE_DEPTH_BIAS";
924                 case VK_DYNAMIC_STATE_BLEND_CONSTANTS:                  return "VK_DYNAMIC_STATE_BLEND_CONSTANTS";
925                 case VK_DYNAMIC_STATE_DEPTH_BOUNDS:                             return "VK_DYNAMIC_STATE_DEPTH_BOUNDS";
926                 case VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK:             return "VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK";
927                 case VK_DYNAMIC_STATE_STENCIL_WRITE_MASK:               return "VK_DYNAMIC_STATE_STENCIL_WRITE_MASK";
928                 case VK_DYNAMIC_STATE_STENCIL_REFERENCE:                return "VK_DYNAMIC_STATE_STENCIL_REFERENCE";
929                 case VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV:    return "VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV";
930                 case VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT:    return "VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT";
931                 case VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT:             return "VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT";
932                 default:                                                                                return DE_NULL;
933         }
934 }
935
936 const char* getFilterName (VkFilter value)
937 {
938         switch (value)
939         {
940                 case VK_FILTER_NEAREST:         return "VK_FILTER_NEAREST";
941                 case VK_FILTER_LINEAR:          return "VK_FILTER_LINEAR";
942                 case VK_FILTER_CUBIC_IMG:       return "VK_FILTER_CUBIC_IMG";
943                 default:                                        return DE_NULL;
944         }
945 }
946
947 const char* getSamplerMipmapModeName (VkSamplerMipmapMode value)
948 {
949         switch (value)
950         {
951                 case VK_SAMPLER_MIPMAP_MODE_NEAREST:    return "VK_SAMPLER_MIPMAP_MODE_NEAREST";
952                 case VK_SAMPLER_MIPMAP_MODE_LINEAR:             return "VK_SAMPLER_MIPMAP_MODE_LINEAR";
953                 default:                                                                return DE_NULL;
954         }
955 }
956
957 const char* getSamplerAddressModeName (VkSamplerAddressMode value)
958 {
959         switch (value)
960         {
961                 case VK_SAMPLER_ADDRESS_MODE_REPEAT:                            return "VK_SAMPLER_ADDRESS_MODE_REPEAT";
962                 case VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT:           return "VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT";
963                 case VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE:                     return "VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE";
964                 case VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER:           return "VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER";
965                 case VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE:      return "VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE";
966                 default:                                                                                        return DE_NULL;
967         }
968 }
969
970 const char* getBorderColorName (VkBorderColor value)
971 {
972         switch (value)
973         {
974                 case VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK:   return "VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK";
975                 case VK_BORDER_COLOR_INT_TRANSPARENT_BLACK:             return "VK_BORDER_COLOR_INT_TRANSPARENT_BLACK";
976                 case VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK:                return "VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK";
977                 case VK_BORDER_COLOR_INT_OPAQUE_BLACK:                  return "VK_BORDER_COLOR_INT_OPAQUE_BLACK";
978                 case VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE:                return "VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE";
979                 case VK_BORDER_COLOR_INT_OPAQUE_WHITE:                  return "VK_BORDER_COLOR_INT_OPAQUE_WHITE";
980                 default:                                                                                return DE_NULL;
981         }
982 }
983
984 const char* getDescriptorTypeName (VkDescriptorType value)
985 {
986         switch (value)
987         {
988                 case VK_DESCRIPTOR_TYPE_SAMPLER:                                        return "VK_DESCRIPTOR_TYPE_SAMPLER";
989                 case VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER:         return "VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER";
990                 case VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE:                          return "VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE";
991                 case VK_DESCRIPTOR_TYPE_STORAGE_IMAGE:                          return "VK_DESCRIPTOR_TYPE_STORAGE_IMAGE";
992                 case VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER:           return "VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER";
993                 case VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER:           return "VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER";
994                 case VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER:                         return "VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER";
995                 case VK_DESCRIPTOR_TYPE_STORAGE_BUFFER:                         return "VK_DESCRIPTOR_TYPE_STORAGE_BUFFER";
996                 case VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC:         return "VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC";
997                 case VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC:         return "VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC";
998                 case VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT:                       return "VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT";
999                 case VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT:       return "VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT";
1000                 default:                                                                                        return DE_NULL;
1001         }
1002 }
1003
1004 const char* getAttachmentLoadOpName (VkAttachmentLoadOp value)
1005 {
1006         switch (value)
1007         {
1008                 case VK_ATTACHMENT_LOAD_OP_LOAD:                return "VK_ATTACHMENT_LOAD_OP_LOAD";
1009                 case VK_ATTACHMENT_LOAD_OP_CLEAR:               return "VK_ATTACHMENT_LOAD_OP_CLEAR";
1010                 case VK_ATTACHMENT_LOAD_OP_DONT_CARE:   return "VK_ATTACHMENT_LOAD_OP_DONT_CARE";
1011                 default:                                                                return DE_NULL;
1012         }
1013 }
1014
1015 const char* getAttachmentStoreOpName (VkAttachmentStoreOp value)
1016 {
1017         switch (value)
1018         {
1019                 case VK_ATTACHMENT_STORE_OP_STORE:              return "VK_ATTACHMENT_STORE_OP_STORE";
1020                 case VK_ATTACHMENT_STORE_OP_DONT_CARE:  return "VK_ATTACHMENT_STORE_OP_DONT_CARE";
1021                 default:                                                                return DE_NULL;
1022         }
1023 }
1024
1025 const char* getPipelineBindPointName (VkPipelineBindPoint value)
1026 {
1027         switch (value)
1028         {
1029                 case VK_PIPELINE_BIND_POINT_GRAPHICS:   return "VK_PIPELINE_BIND_POINT_GRAPHICS";
1030                 case VK_PIPELINE_BIND_POINT_COMPUTE:    return "VK_PIPELINE_BIND_POINT_COMPUTE";
1031                 default:                                                                return DE_NULL;
1032         }
1033 }
1034
1035 const char* getCommandBufferLevelName (VkCommandBufferLevel value)
1036 {
1037         switch (value)
1038         {
1039                 case VK_COMMAND_BUFFER_LEVEL_PRIMARY:   return "VK_COMMAND_BUFFER_LEVEL_PRIMARY";
1040                 case VK_COMMAND_BUFFER_LEVEL_SECONDARY: return "VK_COMMAND_BUFFER_LEVEL_SECONDARY";
1041                 default:                                                                return DE_NULL;
1042         }
1043 }
1044
1045 const char* getIndexTypeName (VkIndexType value)
1046 {
1047         switch (value)
1048         {
1049                 case VK_INDEX_TYPE_UINT16:      return "VK_INDEX_TYPE_UINT16";
1050                 case VK_INDEX_TYPE_UINT32:      return "VK_INDEX_TYPE_UINT32";
1051                 default:                                        return DE_NULL;
1052         }
1053 }
1054
1055 const char* getSubpassContentsName (VkSubpassContents value)
1056 {
1057         switch (value)
1058         {
1059                 case VK_SUBPASS_CONTENTS_INLINE:                                        return "VK_SUBPASS_CONTENTS_INLINE";
1060                 case VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS:     return "VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS";
1061                 default:                                                                                        return DE_NULL;
1062         }
1063 }
1064
1065 const char* getObjectTypeName (VkObjectType value)
1066 {
1067         switch (value)
1068         {
1069                 case VK_OBJECT_TYPE_UNKNOWN:                                            return "VK_OBJECT_TYPE_UNKNOWN";
1070                 case VK_OBJECT_TYPE_INSTANCE:                                           return "VK_OBJECT_TYPE_INSTANCE";
1071                 case VK_OBJECT_TYPE_PHYSICAL_DEVICE:                            return "VK_OBJECT_TYPE_PHYSICAL_DEVICE";
1072                 case VK_OBJECT_TYPE_DEVICE:                                                     return "VK_OBJECT_TYPE_DEVICE";
1073                 case VK_OBJECT_TYPE_QUEUE:                                                      return "VK_OBJECT_TYPE_QUEUE";
1074                 case VK_OBJECT_TYPE_SEMAPHORE:                                          return "VK_OBJECT_TYPE_SEMAPHORE";
1075                 case VK_OBJECT_TYPE_COMMAND_BUFFER:                                     return "VK_OBJECT_TYPE_COMMAND_BUFFER";
1076                 case VK_OBJECT_TYPE_FENCE:                                                      return "VK_OBJECT_TYPE_FENCE";
1077                 case VK_OBJECT_TYPE_DEVICE_MEMORY:                                      return "VK_OBJECT_TYPE_DEVICE_MEMORY";
1078                 case VK_OBJECT_TYPE_BUFFER:                                                     return "VK_OBJECT_TYPE_BUFFER";
1079                 case VK_OBJECT_TYPE_IMAGE:                                                      return "VK_OBJECT_TYPE_IMAGE";
1080                 case VK_OBJECT_TYPE_EVENT:                                                      return "VK_OBJECT_TYPE_EVENT";
1081                 case VK_OBJECT_TYPE_QUERY_POOL:                                         return "VK_OBJECT_TYPE_QUERY_POOL";
1082                 case VK_OBJECT_TYPE_BUFFER_VIEW:                                        return "VK_OBJECT_TYPE_BUFFER_VIEW";
1083                 case VK_OBJECT_TYPE_IMAGE_VIEW:                                         return "VK_OBJECT_TYPE_IMAGE_VIEW";
1084                 case VK_OBJECT_TYPE_SHADER_MODULE:                                      return "VK_OBJECT_TYPE_SHADER_MODULE";
1085                 case VK_OBJECT_TYPE_PIPELINE_CACHE:                                     return "VK_OBJECT_TYPE_PIPELINE_CACHE";
1086                 case VK_OBJECT_TYPE_PIPELINE_LAYOUT:                            return "VK_OBJECT_TYPE_PIPELINE_LAYOUT";
1087                 case VK_OBJECT_TYPE_RENDER_PASS:                                        return "VK_OBJECT_TYPE_RENDER_PASS";
1088                 case VK_OBJECT_TYPE_PIPELINE:                                           return "VK_OBJECT_TYPE_PIPELINE";
1089                 case VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT:                      return "VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT";
1090                 case VK_OBJECT_TYPE_SAMPLER:                                            return "VK_OBJECT_TYPE_SAMPLER";
1091                 case VK_OBJECT_TYPE_DESCRIPTOR_POOL:                            return "VK_OBJECT_TYPE_DESCRIPTOR_POOL";
1092                 case VK_OBJECT_TYPE_DESCRIPTOR_SET:                                     return "VK_OBJECT_TYPE_DESCRIPTOR_SET";
1093                 case VK_OBJECT_TYPE_FRAMEBUFFER:                                        return "VK_OBJECT_TYPE_FRAMEBUFFER";
1094                 case VK_OBJECT_TYPE_COMMAND_POOL:                                       return "VK_OBJECT_TYPE_COMMAND_POOL";
1095                 case VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION:           return "VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION";
1096                 case VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE:         return "VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE";
1097                 case VK_OBJECT_TYPE_SURFACE_KHR:                                        return "VK_OBJECT_TYPE_SURFACE_KHR";
1098                 case VK_OBJECT_TYPE_SWAPCHAIN_KHR:                                      return "VK_OBJECT_TYPE_SWAPCHAIN_KHR";
1099                 case VK_OBJECT_TYPE_DISPLAY_KHR:                                        return "VK_OBJECT_TYPE_DISPLAY_KHR";
1100                 case VK_OBJECT_TYPE_DISPLAY_MODE_KHR:                           return "VK_OBJECT_TYPE_DISPLAY_MODE_KHR";
1101                 case VK_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT:          return "VK_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT";
1102                 case VK_OBJECT_TYPE_OBJECT_TABLE_NVX:                           return "VK_OBJECT_TYPE_OBJECT_TABLE_NVX";
1103                 case VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX:       return "VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX";
1104                 case VK_OBJECT_TYPE_VALIDATION_CACHE_EXT:                       return "VK_OBJECT_TYPE_VALIDATION_CACHE_EXT";
1105                 default:                                                                                        return DE_NULL;
1106         }
1107 }
1108
1109 const char* getPointClippingBehaviorName (VkPointClippingBehavior value)
1110 {
1111         switch (value)
1112         {
1113                 case VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES:                return "VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES";
1114                 case VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY:  return "VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY";
1115                 default:                                                                                                return DE_NULL;
1116         }
1117 }
1118
1119 const char* getTessellationDomainOriginName (VkTessellationDomainOrigin value)
1120 {
1121         switch (value)
1122         {
1123                 case VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT:  return "VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT";
1124                 case VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT:  return "VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT";
1125                 default:                                                                                return DE_NULL;
1126         }
1127 }
1128
1129 const char* getSamplerYcbcrModelConversionName (VkSamplerYcbcrModelConversion value)
1130 {
1131         switch (value)
1132         {
1133                 case VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY:    return "VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY";
1134                 case VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY:  return "VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY";
1135                 case VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709:               return "VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709";
1136                 case VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601:               return "VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601";
1137                 case VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020:              return "VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020";
1138                 default:                                                                                                return DE_NULL;
1139         }
1140 }
1141
1142 const char* getSamplerYcbcrRangeName (VkSamplerYcbcrRange value)
1143 {
1144         switch (value)
1145         {
1146                 case VK_SAMPLER_YCBCR_RANGE_ITU_FULL:   return "VK_SAMPLER_YCBCR_RANGE_ITU_FULL";
1147                 case VK_SAMPLER_YCBCR_RANGE_ITU_NARROW: return "VK_SAMPLER_YCBCR_RANGE_ITU_NARROW";
1148                 default:                                                                return DE_NULL;
1149         }
1150 }
1151
1152 const char* getChromaLocationName (VkChromaLocation value)
1153 {
1154         switch (value)
1155         {
1156                 case VK_CHROMA_LOCATION_COSITED_EVEN:   return "VK_CHROMA_LOCATION_COSITED_EVEN";
1157                 case VK_CHROMA_LOCATION_MIDPOINT:               return "VK_CHROMA_LOCATION_MIDPOINT";
1158                 default:                                                                return DE_NULL;
1159         }
1160 }
1161
1162 const char* getDescriptorUpdateTemplateTypeName (VkDescriptorUpdateTemplateType value)
1163 {
1164         switch (value)
1165         {
1166                 case VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET:                 return "VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET";
1167                 case VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR:   return "VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR";
1168                 default:                                                                                                                return DE_NULL;
1169         }
1170 }
1171
1172 const char* getColorSpaceKHRName (VkColorSpaceKHR value)
1173 {
1174         switch (value)
1175         {
1176                 case VK_COLOR_SPACE_SRGB_NONLINEAR_KHR:                         return "VK_COLOR_SPACE_SRGB_NONLINEAR_KHR";
1177                 case VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT:           return "VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT";
1178                 case VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT:           return "VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT";
1179                 case VK_COLOR_SPACE_DCI_P3_LINEAR_EXT:                          return "VK_COLOR_SPACE_DCI_P3_LINEAR_EXT";
1180                 case VK_COLOR_SPACE_DCI_P3_NONLINEAR_EXT:                       return "VK_COLOR_SPACE_DCI_P3_NONLINEAR_EXT";
1181                 case VK_COLOR_SPACE_BT709_LINEAR_EXT:                           return "VK_COLOR_SPACE_BT709_LINEAR_EXT";
1182                 case VK_COLOR_SPACE_BT709_NONLINEAR_EXT:                        return "VK_COLOR_SPACE_BT709_NONLINEAR_EXT";
1183                 case VK_COLOR_SPACE_BT2020_LINEAR_EXT:                          return "VK_COLOR_SPACE_BT2020_LINEAR_EXT";
1184                 case VK_COLOR_SPACE_HDR10_ST2084_EXT:                           return "VK_COLOR_SPACE_HDR10_ST2084_EXT";
1185                 case VK_COLOR_SPACE_DOLBYVISION_EXT:                            return "VK_COLOR_SPACE_DOLBYVISION_EXT";
1186                 case VK_COLOR_SPACE_HDR10_HLG_EXT:                                      return "VK_COLOR_SPACE_HDR10_HLG_EXT";
1187                 case VK_COLOR_SPACE_ADOBERGB_LINEAR_EXT:                        return "VK_COLOR_SPACE_ADOBERGB_LINEAR_EXT";
1188                 case VK_COLOR_SPACE_ADOBERGB_NONLINEAR_EXT:                     return "VK_COLOR_SPACE_ADOBERGB_NONLINEAR_EXT";
1189                 case VK_COLOR_SPACE_PASS_THROUGH_EXT:                           return "VK_COLOR_SPACE_PASS_THROUGH_EXT";
1190                 case VK_COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT:        return "VK_COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT";
1191                 default:                                                                                        return DE_NULL;
1192         }
1193 }
1194
1195 const char* getPresentModeKHRName (VkPresentModeKHR value)
1196 {
1197         switch (value)
1198         {
1199                 case VK_PRESENT_MODE_IMMEDIATE_KHR:                                     return "VK_PRESENT_MODE_IMMEDIATE_KHR";
1200                 case VK_PRESENT_MODE_MAILBOX_KHR:                                       return "VK_PRESENT_MODE_MAILBOX_KHR";
1201                 case VK_PRESENT_MODE_FIFO_KHR:                                          return "VK_PRESENT_MODE_FIFO_KHR";
1202                 case VK_PRESENT_MODE_FIFO_RELAXED_KHR:                          return "VK_PRESENT_MODE_FIFO_RELAXED_KHR";
1203                 case VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR:         return "VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR";
1204                 case VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR:     return "VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR";
1205                 default:                                                                                        return DE_NULL;
1206         }
1207 }
1208
1209 const char* getDebugReportObjectTypeEXTName (VkDebugReportObjectTypeEXT value)
1210 {
1211         switch (value)
1212         {
1213                 case VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT:                                           return "VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT";
1214                 case VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT:                                          return "VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT";
1215                 case VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT:                           return "VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT";
1216                 case VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT:                                            return "VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT";
1217                 case VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT:                                                     return "VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT";
1218                 case VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT:                                         return "VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT";
1219                 case VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT:                            return "VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT";
1220                 case VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT:                                                     return "VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT";
1221                 case VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT:                                     return "VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT";
1222                 case VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT:                                            return "VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT";
1223                 case VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT:                                                     return "VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT";
1224                 case VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT:                                                     return "VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT";
1225                 case VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT:                                        return "VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT";
1226                 case VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT:                                       return "VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT";
1227                 case VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT:                                        return "VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT";
1228                 case VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT:                                     return "VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT";
1229                 case VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT:                            return "VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT";
1230                 case VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT:                           return "VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT";
1231                 case VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT:                                       return "VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT";
1232                 case VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT:                                          return "VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT";
1233                 case VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT:                     return "VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT";
1234                 case VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT:                                           return "VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT";
1235                 case VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT:                           return "VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT";
1236                 case VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT:                            return "VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT";
1237                 case VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT:                                       return "VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT";
1238                 case VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT:                                      return "VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT";
1239                 case VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT:                                       return "VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT";
1240                 case VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT:                                     return "VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT";
1241                 case VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT:         return "VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT";
1242                 case VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT:                                       return "VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT";
1243                 case VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT:                          return "VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT";
1244                 case VK_DEBUG_REPORT_OBJECT_TYPE_OBJECT_TABLE_NVX_EXT:                          return "VK_DEBUG_REPORT_OBJECT_TYPE_OBJECT_TABLE_NVX_EXT";
1245                 case VK_DEBUG_REPORT_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX_EXT:      return "VK_DEBUG_REPORT_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX_EXT";
1246                 case VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT:                          return "VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT";
1247                 case VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT:          return "VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT";
1248                 case VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT:        return "VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT";
1249                 default:                                                                                                                        return DE_NULL;
1250         }
1251 }
1252
1253 const char* getRasterizationOrderAMDName (VkRasterizationOrderAMD value)
1254 {
1255         switch (value)
1256         {
1257                 case VK_RASTERIZATION_ORDER_STRICT_AMD:         return "VK_RASTERIZATION_ORDER_STRICT_AMD";
1258                 case VK_RASTERIZATION_ORDER_RELAXED_AMD:        return "VK_RASTERIZATION_ORDER_RELAXED_AMD";
1259                 default:                                                                        return DE_NULL;
1260         }
1261 }
1262
1263 const char* getValidationCheckEXTName (VkValidationCheckEXT value)
1264 {
1265         switch (value)
1266         {
1267                 case VK_VALIDATION_CHECK_ALL_EXT:               return "VK_VALIDATION_CHECK_ALL_EXT";
1268                 case VK_VALIDATION_CHECK_SHADERS_EXT:   return "VK_VALIDATION_CHECK_SHADERS_EXT";
1269                 default:                                                                return DE_NULL;
1270         }
1271 }
1272
1273 const char* getIndirectCommandsTokenTypeNVXName (VkIndirectCommandsTokenTypeNVX value)
1274 {
1275         switch (value)
1276         {
1277                 case VK_INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NVX:                      return "VK_INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NVX";
1278                 case VK_INDIRECT_COMMANDS_TOKEN_TYPE_DESCRIPTOR_SET_NVX:        return "VK_INDIRECT_COMMANDS_TOKEN_TYPE_DESCRIPTOR_SET_NVX";
1279                 case VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NVX:          return "VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NVX";
1280                 case VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NVX:         return "VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NVX";
1281                 case VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NVX:         return "VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NVX";
1282                 case VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NVX:          return "VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NVX";
1283                 case VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NVX:                          return "VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NVX";
1284                 case VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NVX:                      return "VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NVX";
1285                 default:                                                                                                        return DE_NULL;
1286         }
1287 }
1288
1289 const char* getObjectEntryTypeNVXName (VkObjectEntryTypeNVX value)
1290 {
1291         switch (value)
1292         {
1293                 case VK_OBJECT_ENTRY_TYPE_DESCRIPTOR_SET_NVX:   return "VK_OBJECT_ENTRY_TYPE_DESCRIPTOR_SET_NVX";
1294                 case VK_OBJECT_ENTRY_TYPE_PIPELINE_NVX:                 return "VK_OBJECT_ENTRY_TYPE_PIPELINE_NVX";
1295                 case VK_OBJECT_ENTRY_TYPE_INDEX_BUFFER_NVX:             return "VK_OBJECT_ENTRY_TYPE_INDEX_BUFFER_NVX";
1296                 case VK_OBJECT_ENTRY_TYPE_VERTEX_BUFFER_NVX:    return "VK_OBJECT_ENTRY_TYPE_VERTEX_BUFFER_NVX";
1297                 case VK_OBJECT_ENTRY_TYPE_PUSH_CONSTANT_NVX:    return "VK_OBJECT_ENTRY_TYPE_PUSH_CONSTANT_NVX";
1298                 default:                                                                                return DE_NULL;
1299         }
1300 }
1301
1302 const char* getDisplayPowerStateEXTName (VkDisplayPowerStateEXT value)
1303 {
1304         switch (value)
1305         {
1306                 case VK_DISPLAY_POWER_STATE_OFF_EXT:            return "VK_DISPLAY_POWER_STATE_OFF_EXT";
1307                 case VK_DISPLAY_POWER_STATE_SUSPEND_EXT:        return "VK_DISPLAY_POWER_STATE_SUSPEND_EXT";
1308                 case VK_DISPLAY_POWER_STATE_ON_EXT:                     return "VK_DISPLAY_POWER_STATE_ON_EXT";
1309                 default:                                                                        return DE_NULL;
1310         }
1311 }
1312
1313 const char* getDeviceEventTypeEXTName (VkDeviceEventTypeEXT value)
1314 {
1315         switch (value)
1316         {
1317                 case VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT:  return "VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT";
1318                 default:                                                                                return DE_NULL;
1319         }
1320 }
1321
1322 const char* getDisplayEventTypeEXTName (VkDisplayEventTypeEXT value)
1323 {
1324         switch (value)
1325         {
1326                 case VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT: return "VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT";
1327                 default:                                                                                return DE_NULL;
1328         }
1329 }
1330
1331 const char* getViewportCoordinateSwizzleNVName (VkViewportCoordinateSwizzleNV value)
1332 {
1333         switch (value)
1334         {
1335                 case VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV:      return "VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV";
1336                 case VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV:      return "VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV";
1337                 case VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV:      return "VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV";
1338                 case VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV:      return "VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV";
1339                 case VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV:      return "VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV";
1340                 case VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV:      return "VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV";
1341                 case VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV:      return "VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV";
1342                 case VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV:      return "VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV";
1343                 default:                                                                                        return DE_NULL;
1344         }
1345 }
1346
1347 const char* getDiscardRectangleModeEXTName (VkDiscardRectangleModeEXT value)
1348 {
1349         switch (value)
1350         {
1351                 case VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT:   return "VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT";
1352                 case VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT:   return "VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT";
1353                 default:                                                                                return DE_NULL;
1354         }
1355 }
1356
1357 const char* getSamplerReductionModeEXTName (VkSamplerReductionModeEXT value)
1358 {
1359         switch (value)
1360         {
1361                 case VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT:    return "VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT";
1362                 case VK_SAMPLER_REDUCTION_MODE_MIN_EXT:                                 return "VK_SAMPLER_REDUCTION_MODE_MIN_EXT";
1363                 case VK_SAMPLER_REDUCTION_MODE_MAX_EXT:                                 return "VK_SAMPLER_REDUCTION_MODE_MAX_EXT";
1364                 default:                                                                                                return DE_NULL;
1365         }
1366 }
1367
1368 const char* getBlendOverlapEXTName (VkBlendOverlapEXT value)
1369 {
1370         switch (value)
1371         {
1372                 case VK_BLEND_OVERLAP_UNCORRELATED_EXT: return "VK_BLEND_OVERLAP_UNCORRELATED_EXT";
1373                 case VK_BLEND_OVERLAP_DISJOINT_EXT:             return "VK_BLEND_OVERLAP_DISJOINT_EXT";
1374                 case VK_BLEND_OVERLAP_CONJOINT_EXT:             return "VK_BLEND_OVERLAP_CONJOINT_EXT";
1375                 default:                                                                return DE_NULL;
1376         }
1377 }
1378
1379 const char* getCoverageModulationModeNVName (VkCoverageModulationModeNV value)
1380 {
1381         switch (value)
1382         {
1383                 case VK_COVERAGE_MODULATION_MODE_NONE_NV:       return "VK_COVERAGE_MODULATION_MODE_NONE_NV";
1384                 case VK_COVERAGE_MODULATION_MODE_RGB_NV:        return "VK_COVERAGE_MODULATION_MODE_RGB_NV";
1385                 case VK_COVERAGE_MODULATION_MODE_ALPHA_NV:      return "VK_COVERAGE_MODULATION_MODE_ALPHA_NV";
1386                 case VK_COVERAGE_MODULATION_MODE_RGBA_NV:       return "VK_COVERAGE_MODULATION_MODE_RGBA_NV";
1387                 default:                                                                        return DE_NULL;
1388         }
1389 }
1390
1391 const char* getValidationCacheHeaderVersionEXTName (VkValidationCacheHeaderVersionEXT value)
1392 {
1393         switch (value)
1394         {
1395                 case VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT:        return "VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT";
1396                 default:                                                                                        return DE_NULL;
1397         }
1398 }
1399
1400 tcu::Format::Bitfield<32> getFormatFeatureFlagsStr (VkFormatFeatureFlags value)
1401 {
1402         static const tcu::Format::BitDesc s_desc[] =
1403         {
1404                 tcu::Format::BitDesc(VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT,                                                                                                                       "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT"),
1405                 tcu::Format::BitDesc(VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT,                                                                                                                       "VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT"),
1406                 tcu::Format::BitDesc(VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT,                                                                                                        "VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT"),
1407                 tcu::Format::BitDesc(VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT,                                                                                                        "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT"),
1408                 tcu::Format::BitDesc(VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT,                                                                                                        "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT"),
1409                 tcu::Format::BitDesc(VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT,                                                                                         "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT"),
1410                 tcu::Format::BitDesc(VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT,                                                                                                                       "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT"),
1411                 tcu::Format::BitDesc(VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT,                                                                                                            "VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT"),
1412                 tcu::Format::BitDesc(VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT,                                                                                                      "VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT"),
1413                 tcu::Format::BitDesc(VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT,                                                                                            "VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT"),
1414                 tcu::Format::BitDesc(VK_FORMAT_FEATURE_BLIT_SRC_BIT,                                                                                                                            "VK_FORMAT_FEATURE_BLIT_SRC_BIT"),
1415                 tcu::Format::BitDesc(VK_FORMAT_FEATURE_BLIT_DST_BIT,                                                                                                                            "VK_FORMAT_FEATURE_BLIT_DST_BIT"),
1416                 tcu::Format::BitDesc(VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT,                                                                                         "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT"),
1417                 tcu::Format::BitDesc(VK_FORMAT_FEATURE_TRANSFER_SRC_BIT,                                                                                                                        "VK_FORMAT_FEATURE_TRANSFER_SRC_BIT"),
1418                 tcu::Format::BitDesc(VK_FORMAT_FEATURE_TRANSFER_DST_BIT,                                                                                                                        "VK_FORMAT_FEATURE_TRANSFER_DST_BIT"),
1419                 tcu::Format::BitDesc(VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT,                                                                                     "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT"),
1420                 tcu::Format::BitDesc(VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT,                                                                                                     "VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT"),
1421                 tcu::Format::BitDesc(VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT,                                                        "VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT"),
1422                 tcu::Format::BitDesc(VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT,                       "VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT"),
1423                 tcu::Format::BitDesc(VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT,                       "VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT"),
1424                 tcu::Format::BitDesc(VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT,     "VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT"),
1425                 tcu::Format::BitDesc(VK_FORMAT_FEATURE_DISJOINT_BIT,                                                                                                                            "VK_FORMAT_FEATURE_DISJOINT_BIT"),
1426                 tcu::Format::BitDesc(VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT,                                                                                                      "VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT"),
1427                 tcu::Format::BitDesc(VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG,                                                                                      "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG"),
1428         };
1429         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1430 }
1431
1432 tcu::Format::Bitfield<32> getImageUsageFlagsStr (VkImageUsageFlags value)
1433 {
1434         static const tcu::Format::BitDesc s_desc[] =
1435         {
1436                 tcu::Format::BitDesc(VK_IMAGE_USAGE_TRANSFER_SRC_BIT,                           "VK_IMAGE_USAGE_TRANSFER_SRC_BIT"),
1437                 tcu::Format::BitDesc(VK_IMAGE_USAGE_TRANSFER_DST_BIT,                           "VK_IMAGE_USAGE_TRANSFER_DST_BIT"),
1438                 tcu::Format::BitDesc(VK_IMAGE_USAGE_SAMPLED_BIT,                                        "VK_IMAGE_USAGE_SAMPLED_BIT"),
1439                 tcu::Format::BitDesc(VK_IMAGE_USAGE_STORAGE_BIT,                                        "VK_IMAGE_USAGE_STORAGE_BIT"),
1440                 tcu::Format::BitDesc(VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT,                       "VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT"),
1441                 tcu::Format::BitDesc(VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT,       "VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT"),
1442                 tcu::Format::BitDesc(VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT,           "VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT"),
1443                 tcu::Format::BitDesc(VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT,                       "VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT"),
1444         };
1445         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1446 }
1447
1448 tcu::Format::Bitfield<32> getImageCreateFlagsStr (VkImageCreateFlags value)
1449 {
1450         static const tcu::Format::BitDesc s_desc[] =
1451         {
1452                 tcu::Format::BitDesc(VK_IMAGE_CREATE_SPARSE_BINDING_BIT,                                                "VK_IMAGE_CREATE_SPARSE_BINDING_BIT"),
1453                 tcu::Format::BitDesc(VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT,                                              "VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT"),
1454                 tcu::Format::BitDesc(VK_IMAGE_CREATE_SPARSE_ALIASED_BIT,                                                "VK_IMAGE_CREATE_SPARSE_ALIASED_BIT"),
1455                 tcu::Format::BitDesc(VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT,                                                "VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT"),
1456                 tcu::Format::BitDesc(VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT,                                               "VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT"),
1457                 tcu::Format::BitDesc(VK_IMAGE_CREATE_ALIAS_BIT,                                                                 "VK_IMAGE_CREATE_ALIAS_BIT"),
1458                 tcu::Format::BitDesc(VK_IMAGE_CREATE_BIND_SFR_BIT,                                                              "VK_IMAGE_CREATE_BIND_SFR_BIT"),
1459                 tcu::Format::BitDesc(VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT,                                   "VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT"),
1460                 tcu::Format::BitDesc(VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT,                   "VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT"),
1461                 tcu::Format::BitDesc(VK_IMAGE_CREATE_EXTENDED_USAGE_BIT,                                                "VK_IMAGE_CREATE_EXTENDED_USAGE_BIT"),
1462                 tcu::Format::BitDesc(VK_IMAGE_CREATE_PROTECTED_BIT,                                                             "VK_IMAGE_CREATE_PROTECTED_BIT"),
1463                 tcu::Format::BitDesc(VK_IMAGE_CREATE_DISJOINT_BIT,                                                              "VK_IMAGE_CREATE_DISJOINT_BIT"),
1464                 tcu::Format::BitDesc(VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT, "VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT"),
1465         };
1466         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1467 }
1468
1469 tcu::Format::Bitfield<32> getSampleCountFlagsStr (VkSampleCountFlags value)
1470 {
1471         static const tcu::Format::BitDesc s_desc[] =
1472         {
1473                 tcu::Format::BitDesc(VK_SAMPLE_COUNT_1_BIT,             "VK_SAMPLE_COUNT_1_BIT"),
1474                 tcu::Format::BitDesc(VK_SAMPLE_COUNT_2_BIT,             "VK_SAMPLE_COUNT_2_BIT"),
1475                 tcu::Format::BitDesc(VK_SAMPLE_COUNT_4_BIT,             "VK_SAMPLE_COUNT_4_BIT"),
1476                 tcu::Format::BitDesc(VK_SAMPLE_COUNT_8_BIT,             "VK_SAMPLE_COUNT_8_BIT"),
1477                 tcu::Format::BitDesc(VK_SAMPLE_COUNT_16_BIT,    "VK_SAMPLE_COUNT_16_BIT"),
1478                 tcu::Format::BitDesc(VK_SAMPLE_COUNT_32_BIT,    "VK_SAMPLE_COUNT_32_BIT"),
1479                 tcu::Format::BitDesc(VK_SAMPLE_COUNT_64_BIT,    "VK_SAMPLE_COUNT_64_BIT"),
1480         };
1481         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1482 }
1483
1484 tcu::Format::Bitfield<32> getQueueFlagsStr (VkQueueFlags value)
1485 {
1486         static const tcu::Format::BitDesc s_desc[] =
1487         {
1488                 tcu::Format::BitDesc(VK_QUEUE_GRAPHICS_BIT,                     "VK_QUEUE_GRAPHICS_BIT"),
1489                 tcu::Format::BitDesc(VK_QUEUE_COMPUTE_BIT,                      "VK_QUEUE_COMPUTE_BIT"),
1490                 tcu::Format::BitDesc(VK_QUEUE_TRANSFER_BIT,                     "VK_QUEUE_TRANSFER_BIT"),
1491                 tcu::Format::BitDesc(VK_QUEUE_SPARSE_BINDING_BIT,       "VK_QUEUE_SPARSE_BINDING_BIT"),
1492                 tcu::Format::BitDesc(VK_QUEUE_PROTECTED_BIT,            "VK_QUEUE_PROTECTED_BIT"),
1493         };
1494         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1495 }
1496
1497 tcu::Format::Bitfield<32> getMemoryPropertyFlagsStr (VkMemoryPropertyFlags value)
1498 {
1499         static const tcu::Format::BitDesc s_desc[] =
1500         {
1501                 tcu::Format::BitDesc(VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT,               "VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT"),
1502                 tcu::Format::BitDesc(VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT,               "VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT"),
1503                 tcu::Format::BitDesc(VK_MEMORY_PROPERTY_HOST_COHERENT_BIT,              "VK_MEMORY_PROPERTY_HOST_COHERENT_BIT"),
1504                 tcu::Format::BitDesc(VK_MEMORY_PROPERTY_HOST_CACHED_BIT,                "VK_MEMORY_PROPERTY_HOST_CACHED_BIT"),
1505                 tcu::Format::BitDesc(VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT,   "VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT"),
1506                 tcu::Format::BitDesc(VK_MEMORY_PROPERTY_PROTECTED_BIT,                  "VK_MEMORY_PROPERTY_PROTECTED_BIT"),
1507         };
1508         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1509 }
1510
1511 tcu::Format::Bitfield<32> getMemoryHeapFlagsStr (VkMemoryHeapFlags value)
1512 {
1513         static const tcu::Format::BitDesc s_desc[] =
1514         {
1515                 tcu::Format::BitDesc(VK_MEMORY_HEAP_DEVICE_LOCAL_BIT,   "VK_MEMORY_HEAP_DEVICE_LOCAL_BIT"),
1516                 tcu::Format::BitDesc(VK_MEMORY_HEAP_MULTI_INSTANCE_BIT, "VK_MEMORY_HEAP_MULTI_INSTANCE_BIT"),
1517         };
1518         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1519 }
1520
1521 tcu::Format::Bitfield<32> getDeviceQueueCreateFlagsStr (VkDeviceQueueCreateFlags value)
1522 {
1523         static const tcu::Format::BitDesc s_desc[] =
1524         {
1525                 tcu::Format::BitDesc(VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT,      "VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT"),
1526         };
1527         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1528 }
1529
1530 tcu::Format::Bitfield<32> getPipelineStageFlagsStr (VkPipelineStageFlags value)
1531 {
1532         static const tcu::Format::BitDesc s_desc[] =
1533         {
1534                 tcu::Format::BitDesc(VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,                                         "VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT"),
1535                 tcu::Format::BitDesc(VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT,                                       "VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT"),
1536                 tcu::Format::BitDesc(VK_PIPELINE_STAGE_VERTEX_INPUT_BIT,                                        "VK_PIPELINE_STAGE_VERTEX_INPUT_BIT"),
1537                 tcu::Format::BitDesc(VK_PIPELINE_STAGE_VERTEX_SHADER_BIT,                                       "VK_PIPELINE_STAGE_VERTEX_SHADER_BIT"),
1538                 tcu::Format::BitDesc(VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT,         "VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT"),
1539                 tcu::Format::BitDesc(VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT,      "VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT"),
1540                 tcu::Format::BitDesc(VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT,                                     "VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT"),
1541                 tcu::Format::BitDesc(VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT,                                     "VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT"),
1542                 tcu::Format::BitDesc(VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT,                        "VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT"),
1543                 tcu::Format::BitDesc(VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT,                         "VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT"),
1544                 tcu::Format::BitDesc(VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT,                     "VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT"),
1545                 tcu::Format::BitDesc(VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT,                                      "VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT"),
1546                 tcu::Format::BitDesc(VK_PIPELINE_STAGE_TRANSFER_BIT,                                            "VK_PIPELINE_STAGE_TRANSFER_BIT"),
1547                 tcu::Format::BitDesc(VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT,                                      "VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT"),
1548                 tcu::Format::BitDesc(VK_PIPELINE_STAGE_HOST_BIT,                                                        "VK_PIPELINE_STAGE_HOST_BIT"),
1549                 tcu::Format::BitDesc(VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT,                                        "VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT"),
1550                 tcu::Format::BitDesc(VK_PIPELINE_STAGE_ALL_COMMANDS_BIT,                                        "VK_PIPELINE_STAGE_ALL_COMMANDS_BIT"),
1551                 tcu::Format::BitDesc(VK_PIPELINE_STAGE_COMMAND_PROCESS_BIT_NVX,                         "VK_PIPELINE_STAGE_COMMAND_PROCESS_BIT_NVX"),
1552         };
1553         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1554 }
1555
1556 tcu::Format::Bitfield<32> getImageAspectFlagsStr (VkImageAspectFlags value)
1557 {
1558         static const tcu::Format::BitDesc s_desc[] =
1559         {
1560                 tcu::Format::BitDesc(VK_IMAGE_ASPECT_COLOR_BIT,         "VK_IMAGE_ASPECT_COLOR_BIT"),
1561                 tcu::Format::BitDesc(VK_IMAGE_ASPECT_DEPTH_BIT,         "VK_IMAGE_ASPECT_DEPTH_BIT"),
1562                 tcu::Format::BitDesc(VK_IMAGE_ASPECT_STENCIL_BIT,       "VK_IMAGE_ASPECT_STENCIL_BIT"),
1563                 tcu::Format::BitDesc(VK_IMAGE_ASPECT_METADATA_BIT,      "VK_IMAGE_ASPECT_METADATA_BIT"),
1564                 tcu::Format::BitDesc(VK_IMAGE_ASPECT_PLANE_0_BIT,       "VK_IMAGE_ASPECT_PLANE_0_BIT"),
1565                 tcu::Format::BitDesc(VK_IMAGE_ASPECT_PLANE_1_BIT,       "VK_IMAGE_ASPECT_PLANE_1_BIT"),
1566                 tcu::Format::BitDesc(VK_IMAGE_ASPECT_PLANE_2_BIT,       "VK_IMAGE_ASPECT_PLANE_2_BIT"),
1567         };
1568         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1569 }
1570
1571 tcu::Format::Bitfield<32> getSparseImageFormatFlagsStr (VkSparseImageFormatFlags value)
1572 {
1573         static const tcu::Format::BitDesc s_desc[] =
1574         {
1575                 tcu::Format::BitDesc(VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT,                 "VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT"),
1576                 tcu::Format::BitDesc(VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT,               "VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT"),
1577                 tcu::Format::BitDesc(VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT, "VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT"),
1578         };
1579         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1580 }
1581
1582 tcu::Format::Bitfield<32> getSparseMemoryBindFlagsStr (VkSparseMemoryBindFlags value)
1583 {
1584         static const tcu::Format::BitDesc s_desc[] =
1585         {
1586                 tcu::Format::BitDesc(VK_SPARSE_MEMORY_BIND_METADATA_BIT,        "VK_SPARSE_MEMORY_BIND_METADATA_BIT"),
1587         };
1588         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1589 }
1590
1591 tcu::Format::Bitfield<32> getFenceCreateFlagsStr (VkFenceCreateFlags value)
1592 {
1593         static const tcu::Format::BitDesc s_desc[] =
1594         {
1595                 tcu::Format::BitDesc(VK_FENCE_CREATE_SIGNALED_BIT,      "VK_FENCE_CREATE_SIGNALED_BIT"),
1596         };
1597         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1598 }
1599
1600 tcu::Format::Bitfield<32> getQueryPipelineStatisticFlagsStr (VkQueryPipelineStatisticFlags value)
1601 {
1602         static const tcu::Format::BitDesc s_desc[] =
1603         {
1604                 tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT,                                           "VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT"),
1605                 tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT,                                         "VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT"),
1606                 tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT,                                         "VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT"),
1607                 tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT,                                       "VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT"),
1608                 tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT,                                        "VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT"),
1609                 tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT,                                                      "VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT"),
1610                 tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT,                                                       "VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT"),
1611                 tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT,                                       "VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT"),
1612                 tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT,                       "VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT"),
1613                 tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT,        "VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT"),
1614                 tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT,                                        "VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT"),
1615         };
1616         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1617 }
1618
1619 tcu::Format::Bitfield<32> getQueryResultFlagsStr (VkQueryResultFlags value)
1620 {
1621         static const tcu::Format::BitDesc s_desc[] =
1622         {
1623                 tcu::Format::BitDesc(VK_QUERY_RESULT_64_BIT,                            "VK_QUERY_RESULT_64_BIT"),
1624                 tcu::Format::BitDesc(VK_QUERY_RESULT_WAIT_BIT,                          "VK_QUERY_RESULT_WAIT_BIT"),
1625                 tcu::Format::BitDesc(VK_QUERY_RESULT_WITH_AVAILABILITY_BIT,     "VK_QUERY_RESULT_WITH_AVAILABILITY_BIT"),
1626                 tcu::Format::BitDesc(VK_QUERY_RESULT_PARTIAL_BIT,                       "VK_QUERY_RESULT_PARTIAL_BIT"),
1627         };
1628         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1629 }
1630
1631 tcu::Format::Bitfield<32> getBufferCreateFlagsStr (VkBufferCreateFlags value)
1632 {
1633         static const tcu::Format::BitDesc s_desc[] =
1634         {
1635                 tcu::Format::BitDesc(VK_BUFFER_CREATE_SPARSE_BINDING_BIT,       "VK_BUFFER_CREATE_SPARSE_BINDING_BIT"),
1636                 tcu::Format::BitDesc(VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT,     "VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT"),
1637                 tcu::Format::BitDesc(VK_BUFFER_CREATE_SPARSE_ALIASED_BIT,       "VK_BUFFER_CREATE_SPARSE_ALIASED_BIT"),
1638                 tcu::Format::BitDesc(VK_BUFFER_CREATE_PROTECTED_BIT,            "VK_BUFFER_CREATE_PROTECTED_BIT"),
1639         };
1640         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1641 }
1642
1643 tcu::Format::Bitfield<32> getBufferUsageFlagsStr (VkBufferUsageFlags value)
1644 {
1645         static const tcu::Format::BitDesc s_desc[] =
1646         {
1647                 tcu::Format::BitDesc(VK_BUFFER_USAGE_TRANSFER_SRC_BIT,                          "VK_BUFFER_USAGE_TRANSFER_SRC_BIT"),
1648                 tcu::Format::BitDesc(VK_BUFFER_USAGE_TRANSFER_DST_BIT,                          "VK_BUFFER_USAGE_TRANSFER_DST_BIT"),
1649                 tcu::Format::BitDesc(VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT,          "VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT"),
1650                 tcu::Format::BitDesc(VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT,          "VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT"),
1651                 tcu::Format::BitDesc(VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT,                        "VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT"),
1652                 tcu::Format::BitDesc(VK_BUFFER_USAGE_STORAGE_BUFFER_BIT,                        "VK_BUFFER_USAGE_STORAGE_BUFFER_BIT"),
1653                 tcu::Format::BitDesc(VK_BUFFER_USAGE_INDEX_BUFFER_BIT,                          "VK_BUFFER_USAGE_INDEX_BUFFER_BIT"),
1654                 tcu::Format::BitDesc(VK_BUFFER_USAGE_VERTEX_BUFFER_BIT,                         "VK_BUFFER_USAGE_VERTEX_BUFFER_BIT"),
1655                 tcu::Format::BitDesc(VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT,                       "VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT"),
1656                 tcu::Format::BitDesc(VK_BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT,     "VK_BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT"),
1657         };
1658         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1659 }
1660
1661 tcu::Format::Bitfield<32> getPipelineCreateFlagsStr (VkPipelineCreateFlags value)
1662 {
1663         static const tcu::Format::BitDesc s_desc[] =
1664         {
1665                 tcu::Format::BitDesc(VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT,                       "VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT"),
1666                 tcu::Format::BitDesc(VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT,                          "VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT"),
1667                 tcu::Format::BitDesc(VK_PIPELINE_CREATE_DERIVATIVE_BIT,                                         "VK_PIPELINE_CREATE_DERIVATIVE_BIT"),
1668                 tcu::Format::BitDesc(VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT,       "VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT"),
1669                 tcu::Format::BitDesc(VK_PIPELINE_CREATE_DISPATCH_BASE,                                          "VK_PIPELINE_CREATE_DISPATCH_BASE"),
1670         };
1671         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1672 }
1673
1674 tcu::Format::Bitfield<32> getShaderStageFlagsStr (VkShaderStageFlags value)
1675 {
1676         static const tcu::Format::BitDesc s_desc[] =
1677         {
1678                 tcu::Format::BitDesc(VK_SHADER_STAGE_VERTEX_BIT,                                        "VK_SHADER_STAGE_VERTEX_BIT"),
1679                 tcu::Format::BitDesc(VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT,          "VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT"),
1680                 tcu::Format::BitDesc(VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT,       "VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT"),
1681                 tcu::Format::BitDesc(VK_SHADER_STAGE_GEOMETRY_BIT,                                      "VK_SHADER_STAGE_GEOMETRY_BIT"),
1682                 tcu::Format::BitDesc(VK_SHADER_STAGE_FRAGMENT_BIT,                                      "VK_SHADER_STAGE_FRAGMENT_BIT"),
1683                 tcu::Format::BitDesc(VK_SHADER_STAGE_COMPUTE_BIT,                                       "VK_SHADER_STAGE_COMPUTE_BIT"),
1684                 tcu::Format::BitDesc(VK_SHADER_STAGE_ALL_GRAPHICS,                                      "VK_SHADER_STAGE_ALL_GRAPHICS"),
1685                 tcu::Format::BitDesc(VK_SHADER_STAGE_ALL,                                                       "VK_SHADER_STAGE_ALL"),
1686         };
1687         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1688 }
1689
1690 tcu::Format::Bitfield<32> getCullModeFlagsStr (VkCullModeFlags value)
1691 {
1692         static const tcu::Format::BitDesc s_desc[] =
1693         {
1694                 tcu::Format::BitDesc(VK_CULL_MODE_NONE,                         "VK_CULL_MODE_NONE"),
1695                 tcu::Format::BitDesc(VK_CULL_MODE_FRONT_BIT,            "VK_CULL_MODE_FRONT_BIT"),
1696                 tcu::Format::BitDesc(VK_CULL_MODE_BACK_BIT,                     "VK_CULL_MODE_BACK_BIT"),
1697                 tcu::Format::BitDesc(VK_CULL_MODE_FRONT_AND_BACK,       "VK_CULL_MODE_FRONT_AND_BACK"),
1698         };
1699         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1700 }
1701
1702 tcu::Format::Bitfield<32> getColorComponentFlagsStr (VkColorComponentFlags value)
1703 {
1704         static const tcu::Format::BitDesc s_desc[] =
1705         {
1706                 tcu::Format::BitDesc(VK_COLOR_COMPONENT_R_BIT,  "VK_COLOR_COMPONENT_R_BIT"),
1707                 tcu::Format::BitDesc(VK_COLOR_COMPONENT_G_BIT,  "VK_COLOR_COMPONENT_G_BIT"),
1708                 tcu::Format::BitDesc(VK_COLOR_COMPONENT_B_BIT,  "VK_COLOR_COMPONENT_B_BIT"),
1709                 tcu::Format::BitDesc(VK_COLOR_COMPONENT_A_BIT,  "VK_COLOR_COMPONENT_A_BIT"),
1710         };
1711         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1712 }
1713
1714 tcu::Format::Bitfield<32> getDescriptorSetLayoutCreateFlagsStr (VkDescriptorSetLayoutCreateFlags value)
1715 {
1716         static const tcu::Format::BitDesc s_desc[] =
1717         {
1718                 tcu::Format::BitDesc(VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR,                   "VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR"),
1719                 tcu::Format::BitDesc(VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT,    "VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT"),
1720         };
1721         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1722 }
1723
1724 tcu::Format::Bitfield<32> getDescriptorPoolCreateFlagsStr (VkDescriptorPoolCreateFlags value)
1725 {
1726         static const tcu::Format::BitDesc s_desc[] =
1727         {
1728                 tcu::Format::BitDesc(VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT,         "VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT"),
1729                 tcu::Format::BitDesc(VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT,       "VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT"),
1730         };
1731         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1732 }
1733
1734 tcu::Format::Bitfield<32> getAttachmentDescriptionFlagsStr (VkAttachmentDescriptionFlags value)
1735 {
1736         static const tcu::Format::BitDesc s_desc[] =
1737         {
1738                 tcu::Format::BitDesc(VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT,   "VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT"),
1739         };
1740         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1741 }
1742
1743 tcu::Format::Bitfield<32> getSubpassDescriptionFlagsStr (VkSubpassDescriptionFlags value)
1744 {
1745         static const tcu::Format::BitDesc s_desc[] =
1746         {
1747                 tcu::Format::BitDesc(VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX,                "VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX"),
1748                 tcu::Format::BitDesc(VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX,   "VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX"),
1749         };
1750         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1751 }
1752
1753 tcu::Format::Bitfield<32> getAccessFlagsStr (VkAccessFlags value)
1754 {
1755         static const tcu::Format::BitDesc s_desc[] =
1756         {
1757                 tcu::Format::BitDesc(VK_ACCESS_INDIRECT_COMMAND_READ_BIT,                                       "VK_ACCESS_INDIRECT_COMMAND_READ_BIT"),
1758                 tcu::Format::BitDesc(VK_ACCESS_INDEX_READ_BIT,                                                          "VK_ACCESS_INDEX_READ_BIT"),
1759                 tcu::Format::BitDesc(VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT,                                       "VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT"),
1760                 tcu::Format::BitDesc(VK_ACCESS_UNIFORM_READ_BIT,                                                        "VK_ACCESS_UNIFORM_READ_BIT"),
1761                 tcu::Format::BitDesc(VK_ACCESS_INPUT_ATTACHMENT_READ_BIT,                                       "VK_ACCESS_INPUT_ATTACHMENT_READ_BIT"),
1762                 tcu::Format::BitDesc(VK_ACCESS_SHADER_READ_BIT,                                                         "VK_ACCESS_SHADER_READ_BIT"),
1763                 tcu::Format::BitDesc(VK_ACCESS_SHADER_WRITE_BIT,                                                        "VK_ACCESS_SHADER_WRITE_BIT"),
1764                 tcu::Format::BitDesc(VK_ACCESS_COLOR_ATTACHMENT_READ_BIT,                                       "VK_ACCESS_COLOR_ATTACHMENT_READ_BIT"),
1765                 tcu::Format::BitDesc(VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT,                                      "VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT"),
1766                 tcu::Format::BitDesc(VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT,                       "VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT"),
1767                 tcu::Format::BitDesc(VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT,                      "VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT"),
1768                 tcu::Format::BitDesc(VK_ACCESS_TRANSFER_READ_BIT,                                                       "VK_ACCESS_TRANSFER_READ_BIT"),
1769                 tcu::Format::BitDesc(VK_ACCESS_TRANSFER_WRITE_BIT,                                                      "VK_ACCESS_TRANSFER_WRITE_BIT"),
1770                 tcu::Format::BitDesc(VK_ACCESS_HOST_READ_BIT,                                                           "VK_ACCESS_HOST_READ_BIT"),
1771                 tcu::Format::BitDesc(VK_ACCESS_HOST_WRITE_BIT,                                                          "VK_ACCESS_HOST_WRITE_BIT"),
1772                 tcu::Format::BitDesc(VK_ACCESS_MEMORY_READ_BIT,                                                         "VK_ACCESS_MEMORY_READ_BIT"),
1773                 tcu::Format::BitDesc(VK_ACCESS_MEMORY_WRITE_BIT,                                                        "VK_ACCESS_MEMORY_WRITE_BIT"),
1774                 tcu::Format::BitDesc(VK_ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT,                      "VK_ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT"),
1775                 tcu::Format::BitDesc(VK_ACCESS_COMMAND_PROCESS_READ_BIT_NVX,                            "VK_ACCESS_COMMAND_PROCESS_READ_BIT_NVX"),
1776                 tcu::Format::BitDesc(VK_ACCESS_COMMAND_PROCESS_WRITE_BIT_NVX,                           "VK_ACCESS_COMMAND_PROCESS_WRITE_BIT_NVX"),
1777                 tcu::Format::BitDesc(VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT,       "VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT"),
1778         };
1779         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1780 }
1781
1782 tcu::Format::Bitfield<32> getDependencyFlagsStr (VkDependencyFlags value)
1783 {
1784         static const tcu::Format::BitDesc s_desc[] =
1785         {
1786                 tcu::Format::BitDesc(VK_DEPENDENCY_BY_REGION_BIT,               "VK_DEPENDENCY_BY_REGION_BIT"),
1787                 tcu::Format::BitDesc(VK_DEPENDENCY_DEVICE_GROUP_BIT,    "VK_DEPENDENCY_DEVICE_GROUP_BIT"),
1788                 tcu::Format::BitDesc(VK_DEPENDENCY_VIEW_LOCAL_BIT,              "VK_DEPENDENCY_VIEW_LOCAL_BIT"),
1789         };
1790         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1791 }
1792
1793 tcu::Format::Bitfield<32> getCommandPoolCreateFlagsStr (VkCommandPoolCreateFlags value)
1794 {
1795         static const tcu::Format::BitDesc s_desc[] =
1796         {
1797                 tcu::Format::BitDesc(VK_COMMAND_POOL_CREATE_TRANSIENT_BIT,                              "VK_COMMAND_POOL_CREATE_TRANSIENT_BIT"),
1798                 tcu::Format::BitDesc(VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT,   "VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT"),
1799                 tcu::Format::BitDesc(VK_COMMAND_POOL_CREATE_PROTECTED_BIT,                              "VK_COMMAND_POOL_CREATE_PROTECTED_BIT"),
1800         };
1801         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1802 }
1803
1804 tcu::Format::Bitfield<32> getCommandPoolResetFlagsStr (VkCommandPoolResetFlags value)
1805 {
1806         static const tcu::Format::BitDesc s_desc[] =
1807         {
1808                 tcu::Format::BitDesc(VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT,       "VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT"),
1809         };
1810         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1811 }
1812
1813 tcu::Format::Bitfield<32> getCommandBufferUsageFlagsStr (VkCommandBufferUsageFlags value)
1814 {
1815         static const tcu::Format::BitDesc s_desc[] =
1816         {
1817                 tcu::Format::BitDesc(VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT,               "VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT"),
1818                 tcu::Format::BitDesc(VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT,  "VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT"),
1819                 tcu::Format::BitDesc(VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT,              "VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT"),
1820         };
1821         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1822 }
1823
1824 tcu::Format::Bitfield<32> getQueryControlFlagsStr (VkQueryControlFlags value)
1825 {
1826         static const tcu::Format::BitDesc s_desc[] =
1827         {
1828                 tcu::Format::BitDesc(VK_QUERY_CONTROL_PRECISE_BIT,      "VK_QUERY_CONTROL_PRECISE_BIT"),
1829         };
1830         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1831 }
1832
1833 tcu::Format::Bitfield<32> getCommandBufferResetFlagsStr (VkCommandBufferResetFlags value)
1834 {
1835         static const tcu::Format::BitDesc s_desc[] =
1836         {
1837                 tcu::Format::BitDesc(VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT,     "VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT"),
1838         };
1839         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1840 }
1841
1842 tcu::Format::Bitfield<32> getStencilFaceFlagsStr (VkStencilFaceFlags value)
1843 {
1844         static const tcu::Format::BitDesc s_desc[] =
1845         {
1846                 tcu::Format::BitDesc(VK_STENCIL_FACE_FRONT_BIT, "VK_STENCIL_FACE_FRONT_BIT"),
1847                 tcu::Format::BitDesc(VK_STENCIL_FACE_BACK_BIT,  "VK_STENCIL_FACE_BACK_BIT"),
1848                 tcu::Format::BitDesc(VK_STENCIL_FRONT_AND_BACK, "VK_STENCIL_FRONT_AND_BACK"),
1849         };
1850         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1851 }
1852
1853 tcu::Format::Bitfield<32> getSubgroupFeatureFlagsStr (VkSubgroupFeatureFlags value)
1854 {
1855         static const tcu::Format::BitDesc s_desc[] =
1856         {
1857                 tcu::Format::BitDesc(VK_SUBGROUP_FEATURE_BASIC_BIT,                             "VK_SUBGROUP_FEATURE_BASIC_BIT"),
1858                 tcu::Format::BitDesc(VK_SUBGROUP_FEATURE_VOTE_BIT,                              "VK_SUBGROUP_FEATURE_VOTE_BIT"),
1859                 tcu::Format::BitDesc(VK_SUBGROUP_FEATURE_ARITHMETIC_BIT,                "VK_SUBGROUP_FEATURE_ARITHMETIC_BIT"),
1860                 tcu::Format::BitDesc(VK_SUBGROUP_FEATURE_BALLOT_BIT,                    "VK_SUBGROUP_FEATURE_BALLOT_BIT"),
1861                 tcu::Format::BitDesc(VK_SUBGROUP_FEATURE_SHUFFLE_BIT,                   "VK_SUBGROUP_FEATURE_SHUFFLE_BIT"),
1862                 tcu::Format::BitDesc(VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT,  "VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT"),
1863                 tcu::Format::BitDesc(VK_SUBGROUP_FEATURE_CLUSTERED_BIT,                 "VK_SUBGROUP_FEATURE_CLUSTERED_BIT"),
1864                 tcu::Format::BitDesc(VK_SUBGROUP_FEATURE_QUAD_BIT,                              "VK_SUBGROUP_FEATURE_QUAD_BIT"),
1865                 tcu::Format::BitDesc(VK_SUBGROUP_FEATURE_PARTITIONED_BIT_NV,    "VK_SUBGROUP_FEATURE_PARTITIONED_BIT_NV"),
1866         };
1867         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1868 }
1869
1870 tcu::Format::Bitfield<32> getPeerMemoryFeatureFlagsStr (VkPeerMemoryFeatureFlags value)
1871 {
1872         static const tcu::Format::BitDesc s_desc[] =
1873         {
1874                 tcu::Format::BitDesc(VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT,               "VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT"),
1875                 tcu::Format::BitDesc(VK_PEER_MEMORY_FEATURE_COPY_DST_BIT,               "VK_PEER_MEMORY_FEATURE_COPY_DST_BIT"),
1876                 tcu::Format::BitDesc(VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT,    "VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT"),
1877                 tcu::Format::BitDesc(VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT,    "VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT"),
1878         };
1879         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1880 }
1881
1882 tcu::Format::Bitfield<32> getMemoryAllocateFlagsStr (VkMemoryAllocateFlags value)
1883 {
1884         static const tcu::Format::BitDesc s_desc[] =
1885         {
1886                 tcu::Format::BitDesc(VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT,        "VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT"),
1887         };
1888         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1889 }
1890
1891 tcu::Format::Bitfield<32> getExternalMemoryHandleTypeFlagsStr (VkExternalMemoryHandleTypeFlags value)
1892 {
1893         static const tcu::Format::BitDesc s_desc[] =
1894         {
1895                 tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT,                                                      "VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT"),
1896                 tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT,                                           "VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT"),
1897                 tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT,                                       "VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT"),
1898                 tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT,                                          "VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT"),
1899                 tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT,                                      "VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT"),
1900                 tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT,                                                     "VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT"),
1901                 tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT,                                         "VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT"),
1902                 tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT,                            "VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT"),
1903                 tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT,         "VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT"),
1904                 tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID,        "VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID"),
1905         };
1906         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1907 }
1908
1909 tcu::Format::Bitfield<32> getExternalMemoryFeatureFlagsStr (VkExternalMemoryFeatureFlags value)
1910 {
1911         static const tcu::Format::BitDesc s_desc[] =
1912         {
1913                 tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT,     "VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT"),
1914                 tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT,         "VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT"),
1915                 tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT,         "VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT"),
1916         };
1917         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1918 }
1919
1920 tcu::Format::Bitfield<32> getExternalFenceHandleTypeFlagsStr (VkExternalFenceHandleTypeFlags value)
1921 {
1922         static const tcu::Format::BitDesc s_desc[] =
1923         {
1924                 tcu::Format::BitDesc(VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT,                       "VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT"),
1925                 tcu::Format::BitDesc(VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT,            "VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT"),
1926                 tcu::Format::BitDesc(VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT,        "VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT"),
1927                 tcu::Format::BitDesc(VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT,                         "VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT"),
1928         };
1929         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1930 }
1931
1932 tcu::Format::Bitfield<32> getExternalFenceFeatureFlagsStr (VkExternalFenceFeatureFlags value)
1933 {
1934         static const tcu::Format::BitDesc s_desc[] =
1935         {
1936                 tcu::Format::BitDesc(VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT,  "VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT"),
1937                 tcu::Format::BitDesc(VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT,  "VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT"),
1938         };
1939         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1940 }
1941
1942 tcu::Format::Bitfield<32> getFenceImportFlagsStr (VkFenceImportFlags value)
1943 {
1944         static const tcu::Format::BitDesc s_desc[] =
1945         {
1946                 tcu::Format::BitDesc(VK_FENCE_IMPORT_TEMPORARY_BIT,     "VK_FENCE_IMPORT_TEMPORARY_BIT"),
1947         };
1948         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1949 }
1950
1951 tcu::Format::Bitfield<32> getSemaphoreImportFlagsStr (VkSemaphoreImportFlags value)
1952 {
1953         static const tcu::Format::BitDesc s_desc[] =
1954         {
1955                 tcu::Format::BitDesc(VK_SEMAPHORE_IMPORT_TEMPORARY_BIT, "VK_SEMAPHORE_IMPORT_TEMPORARY_BIT"),
1956         };
1957         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1958 }
1959
1960 tcu::Format::Bitfield<32> getExternalSemaphoreHandleTypeFlagsStr (VkExternalSemaphoreHandleTypeFlags value)
1961 {
1962         static const tcu::Format::BitDesc s_desc[] =
1963         {
1964                 tcu::Format::BitDesc(VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT,                   "VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT"),
1965                 tcu::Format::BitDesc(VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT,                "VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT"),
1966                 tcu::Format::BitDesc(VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT,    "VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT"),
1967                 tcu::Format::BitDesc(VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT,                 "VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT"),
1968                 tcu::Format::BitDesc(VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT,                             "VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT"),
1969         };
1970         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1971 }
1972
1973 tcu::Format::Bitfield<32> getExternalSemaphoreFeatureFlagsStr (VkExternalSemaphoreFeatureFlags value)
1974 {
1975         static const tcu::Format::BitDesc s_desc[] =
1976         {
1977                 tcu::Format::BitDesc(VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT,      "VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT"),
1978                 tcu::Format::BitDesc(VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT,      "VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT"),
1979         };
1980         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1981 }
1982
1983 tcu::Format::Bitfield<32> getSurfaceTransformFlagsKHRStr (VkSurfaceTransformFlagsKHR value)
1984 {
1985         static const tcu::Format::BitDesc s_desc[] =
1986         {
1987                 tcu::Format::BitDesc(VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR,                                             "VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR"),
1988                 tcu::Format::BitDesc(VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR,                                    "VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR"),
1989                 tcu::Format::BitDesc(VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR,                                   "VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR"),
1990                 tcu::Format::BitDesc(VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR,                                   "VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR"),
1991                 tcu::Format::BitDesc(VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR,                    "VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR"),
1992                 tcu::Format::BitDesc(VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR,  "VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR"),
1993                 tcu::Format::BitDesc(VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR, "VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR"),
1994                 tcu::Format::BitDesc(VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR, "VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR"),
1995                 tcu::Format::BitDesc(VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR,                                              "VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR"),
1996         };
1997         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1998 }
1999
2000 tcu::Format::Bitfield<32> getCompositeAlphaFlagsKHRStr (VkCompositeAlphaFlagsKHR value)
2001 {
2002         static const tcu::Format::BitDesc s_desc[] =
2003         {
2004                 tcu::Format::BitDesc(VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR,                         "VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR"),
2005                 tcu::Format::BitDesc(VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR,         "VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR"),
2006                 tcu::Format::BitDesc(VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR,        "VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR"),
2007                 tcu::Format::BitDesc(VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR,                        "VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR"),
2008         };
2009         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2010 }
2011
2012 tcu::Format::Bitfield<32> getSwapchainCreateFlagsKHRStr (VkSwapchainCreateFlagsKHR value)
2013 {
2014         static const tcu::Format::BitDesc s_desc[] =
2015         {
2016                 tcu::Format::BitDesc(VK_SWAPCHAIN_CREATE_BIND_SFR_BIT_KHR,                      "VK_SWAPCHAIN_CREATE_BIND_SFR_BIT_KHR"),
2017                 tcu::Format::BitDesc(VK_SWAPCHAIN_CREATE_PROTECTED_BIT_KHR,                     "VK_SWAPCHAIN_CREATE_PROTECTED_BIT_KHR"),
2018                 tcu::Format::BitDesc(VK_SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR,        "VK_SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR"),
2019         };
2020         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2021 }
2022
2023 tcu::Format::Bitfield<32> getDeviceGroupPresentModeFlagsKHRStr (VkDeviceGroupPresentModeFlagsKHR value)
2024 {
2025         static const tcu::Format::BitDesc s_desc[] =
2026         {
2027                 tcu::Format::BitDesc(VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR,                                "VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR"),
2028                 tcu::Format::BitDesc(VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR,                               "VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR"),
2029                 tcu::Format::BitDesc(VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR,                                  "VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR"),
2030                 tcu::Format::BitDesc(VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR,   "VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR"),
2031         };
2032         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2033 }
2034
2035 tcu::Format::Bitfield<32> getDisplayPlaneAlphaFlagsKHRStr (VkDisplayPlaneAlphaFlagsKHR value)
2036 {
2037         static const tcu::Format::BitDesc s_desc[] =
2038         {
2039                 tcu::Format::BitDesc(VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR,                                             "VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR"),
2040                 tcu::Format::BitDesc(VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR,                                             "VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR"),
2041                 tcu::Format::BitDesc(VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR,                                  "VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR"),
2042                 tcu::Format::BitDesc(VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR,    "VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR"),
2043         };
2044         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2045 }
2046
2047 tcu::Format::Bitfield<32> getDebugReportFlagsEXTStr (VkDebugReportFlagsEXT value)
2048 {
2049         static const tcu::Format::BitDesc s_desc[] =
2050         {
2051                 tcu::Format::BitDesc(VK_DEBUG_REPORT_INFORMATION_BIT_EXT,                       "VK_DEBUG_REPORT_INFORMATION_BIT_EXT"),
2052                 tcu::Format::BitDesc(VK_DEBUG_REPORT_WARNING_BIT_EXT,                           "VK_DEBUG_REPORT_WARNING_BIT_EXT"),
2053                 tcu::Format::BitDesc(VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT,       "VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT"),
2054                 tcu::Format::BitDesc(VK_DEBUG_REPORT_ERROR_BIT_EXT,                                     "VK_DEBUG_REPORT_ERROR_BIT_EXT"),
2055                 tcu::Format::BitDesc(VK_DEBUG_REPORT_DEBUG_BIT_EXT,                                     "VK_DEBUG_REPORT_DEBUG_BIT_EXT"),
2056         };
2057         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2058 }
2059
2060 tcu::Format::Bitfield<32> getExternalMemoryHandleTypeFlagsNVStr (VkExternalMemoryHandleTypeFlagsNV value)
2061 {
2062         static const tcu::Format::BitDesc s_desc[] =
2063         {
2064                 tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV,                "VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV"),
2065                 tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV,    "VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV"),
2066                 tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV,                 "VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV"),
2067                 tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV,             "VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV"),
2068         };
2069         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2070 }
2071
2072 tcu::Format::Bitfield<32> getExternalMemoryFeatureFlagsNVStr (VkExternalMemoryFeatureFlagsNV value)
2073 {
2074         static const tcu::Format::BitDesc s_desc[] =
2075         {
2076                 tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV,  "VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV"),
2077                 tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV,              "VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV"),
2078                 tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV,              "VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV"),
2079         };
2080         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2081 }
2082
2083 tcu::Format::Bitfield<32> getConditionalRenderingFlagsEXTStr (VkConditionalRenderingFlagsEXT value)
2084 {
2085         static const tcu::Format::BitDesc s_desc[] =
2086         {
2087                 tcu::Format::BitDesc(VK_CONDITIONAL_RENDERING_INVERTED_BIT_EXT, "VK_CONDITIONAL_RENDERING_INVERTED_BIT_EXT"),
2088         };
2089         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2090 }
2091
2092 tcu::Format::Bitfield<32> getIndirectCommandsLayoutUsageFlagsNVXStr (VkIndirectCommandsLayoutUsageFlagsNVX value)
2093 {
2094         static const tcu::Format::BitDesc s_desc[] =
2095         {
2096                 tcu::Format::BitDesc(VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NVX,     "VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NVX"),
2097                 tcu::Format::BitDesc(VK_INDIRECT_COMMANDS_LAYOUT_USAGE_SPARSE_SEQUENCES_BIT_NVX,        "VK_INDIRECT_COMMANDS_LAYOUT_USAGE_SPARSE_SEQUENCES_BIT_NVX"),
2098                 tcu::Format::BitDesc(VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EMPTY_EXECUTIONS_BIT_NVX,        "VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EMPTY_EXECUTIONS_BIT_NVX"),
2099                 tcu::Format::BitDesc(VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NVX,       "VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NVX"),
2100         };
2101         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2102 }
2103
2104 tcu::Format::Bitfield<32> getObjectEntryUsageFlagsNVXStr (VkObjectEntryUsageFlagsNVX value)
2105 {
2106         static const tcu::Format::BitDesc s_desc[] =
2107         {
2108                 tcu::Format::BitDesc(VK_OBJECT_ENTRY_USAGE_GRAPHICS_BIT_NVX,    "VK_OBJECT_ENTRY_USAGE_GRAPHICS_BIT_NVX"),
2109                 tcu::Format::BitDesc(VK_OBJECT_ENTRY_USAGE_COMPUTE_BIT_NVX,             "VK_OBJECT_ENTRY_USAGE_COMPUTE_BIT_NVX"),
2110         };
2111         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2112 }
2113
2114 tcu::Format::Bitfield<32> getSurfaceCounterFlagsEXTStr (VkSurfaceCounterFlagsEXT value)
2115 {
2116         static const tcu::Format::BitDesc s_desc[] =
2117         {
2118                 tcu::Format::BitDesc(VK_SURFACE_COUNTER_VBLANK_EXT,     "VK_SURFACE_COUNTER_VBLANK_EXT"),
2119         };
2120         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2121 }
2122
2123 tcu::Format::Bitfield<32> getDescriptorBindingFlagsEXTStr (VkDescriptorBindingFlagsEXT value)
2124 {
2125         static const tcu::Format::BitDesc s_desc[] =
2126         {
2127                 tcu::Format::BitDesc(VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT,                   "VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT"),
2128                 tcu::Format::BitDesc(VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT, "VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT"),
2129                 tcu::Format::BitDesc(VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT,                             "VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT"),
2130                 tcu::Format::BitDesc(VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT,   "VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT"),
2131         };
2132         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2133 }
2134
2135 tcu::Format::Bitfield<32> getInstanceCreateFlagsStr (VkInstanceCreateFlags value)
2136 {
2137         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2138 }
2139
2140 tcu::Format::Bitfield<32> getDeviceCreateFlagsStr (VkDeviceCreateFlags value)
2141 {
2142         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2143 }
2144
2145 tcu::Format::Bitfield<32> getMemoryMapFlagsStr (VkMemoryMapFlags value)
2146 {
2147         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2148 }
2149
2150 tcu::Format::Bitfield<32> getSemaphoreCreateFlagsStr (VkSemaphoreCreateFlags value)
2151 {
2152         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2153 }
2154
2155 tcu::Format::Bitfield<32> getEventCreateFlagsStr (VkEventCreateFlags value)
2156 {
2157         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2158 }
2159
2160 tcu::Format::Bitfield<32> getQueryPoolCreateFlagsStr (VkQueryPoolCreateFlags value)
2161 {
2162         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2163 }
2164
2165 tcu::Format::Bitfield<32> getBufferViewCreateFlagsStr (VkBufferViewCreateFlags value)
2166 {
2167         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2168 }
2169
2170 tcu::Format::Bitfield<32> getImageViewCreateFlagsStr (VkImageViewCreateFlags value)
2171 {
2172         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2173 }
2174
2175 tcu::Format::Bitfield<32> getShaderModuleCreateFlagsStr (VkShaderModuleCreateFlags value)
2176 {
2177         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2178 }
2179
2180 tcu::Format::Bitfield<32> getPipelineCacheCreateFlagsStr (VkPipelineCacheCreateFlags value)
2181 {
2182         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2183 }
2184
2185 tcu::Format::Bitfield<32> getPipelineShaderStageCreateFlagsStr (VkPipelineShaderStageCreateFlags value)
2186 {
2187         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2188 }
2189
2190 tcu::Format::Bitfield<32> getPipelineVertexInputStateCreateFlagsStr (VkPipelineVertexInputStateCreateFlags value)
2191 {
2192         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2193 }
2194
2195 tcu::Format::Bitfield<32> getPipelineInputAssemblyStateCreateFlagsStr (VkPipelineInputAssemblyStateCreateFlags value)
2196 {
2197         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2198 }
2199
2200 tcu::Format::Bitfield<32> getPipelineTessellationStateCreateFlagsStr (VkPipelineTessellationStateCreateFlags value)
2201 {
2202         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2203 }
2204
2205 tcu::Format::Bitfield<32> getPipelineViewportStateCreateFlagsStr (VkPipelineViewportStateCreateFlags value)
2206 {
2207         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2208 }
2209
2210 tcu::Format::Bitfield<32> getPipelineRasterizationStateCreateFlagsStr (VkPipelineRasterizationStateCreateFlags value)
2211 {
2212         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2213 }
2214
2215 tcu::Format::Bitfield<32> getPipelineMultisampleStateCreateFlagsStr (VkPipelineMultisampleStateCreateFlags value)
2216 {
2217         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2218 }
2219
2220 tcu::Format::Bitfield<32> getPipelineDepthStencilStateCreateFlagsStr (VkPipelineDepthStencilStateCreateFlags value)
2221 {
2222         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2223 }
2224
2225 tcu::Format::Bitfield<32> getPipelineColorBlendStateCreateFlagsStr (VkPipelineColorBlendStateCreateFlags value)
2226 {
2227         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2228 }
2229
2230 tcu::Format::Bitfield<32> getPipelineDynamicStateCreateFlagsStr (VkPipelineDynamicStateCreateFlags value)
2231 {
2232         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2233 }
2234
2235 tcu::Format::Bitfield<32> getPipelineLayoutCreateFlagsStr (VkPipelineLayoutCreateFlags value)
2236 {
2237         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2238 }
2239
2240 tcu::Format::Bitfield<32> getSamplerCreateFlagsStr (VkSamplerCreateFlags value)
2241 {
2242         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2243 }
2244
2245 tcu::Format::Bitfield<32> getDescriptorPoolResetFlagsStr (VkDescriptorPoolResetFlags value)
2246 {
2247         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2248 }
2249
2250 tcu::Format::Bitfield<32> getFramebufferCreateFlagsStr (VkFramebufferCreateFlags value)
2251 {
2252         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2253 }
2254
2255 tcu::Format::Bitfield<32> getRenderPassCreateFlagsStr (VkRenderPassCreateFlags value)
2256 {
2257         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2258 }
2259
2260 tcu::Format::Bitfield<32> getCommandPoolTrimFlagsStr (VkCommandPoolTrimFlags value)
2261 {
2262         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2263 }
2264
2265 tcu::Format::Bitfield<32> getDescriptorUpdateTemplateCreateFlagsStr (VkDescriptorUpdateTemplateCreateFlags value)
2266 {
2267         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2268 }
2269
2270 tcu::Format::Bitfield<32> getDisplayModeCreateFlagsKHRStr (VkDisplayModeCreateFlagsKHR value)
2271 {
2272         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2273 }
2274
2275 tcu::Format::Bitfield<32> getDisplaySurfaceCreateFlagsKHRStr (VkDisplaySurfaceCreateFlagsKHR value)
2276 {
2277         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2278 }
2279
2280 tcu::Format::Bitfield<32> getXlibSurfaceCreateFlagsKHRStr (VkXlibSurfaceCreateFlagsKHR value)
2281 {
2282         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2283 }
2284
2285 tcu::Format::Bitfield<32> getXcbSurfaceCreateFlagsKHRStr (VkXcbSurfaceCreateFlagsKHR value)
2286 {
2287         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2288 }
2289
2290 tcu::Format::Bitfield<32> getWaylandSurfaceCreateFlagsKHRStr (VkWaylandSurfaceCreateFlagsKHR value)
2291 {
2292         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2293 }
2294
2295 tcu::Format::Bitfield<32> getMirSurfaceCreateFlagsKHRStr (VkMirSurfaceCreateFlagsKHR value)
2296 {
2297         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2298 }
2299
2300 tcu::Format::Bitfield<32> getAndroidSurfaceCreateFlagsKHRStr (VkAndroidSurfaceCreateFlagsKHR value)
2301 {
2302         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2303 }
2304
2305 tcu::Format::Bitfield<32> getWin32SurfaceCreateFlagsKHRStr (VkWin32SurfaceCreateFlagsKHR value)
2306 {
2307         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2308 }
2309
2310 tcu::Format::Bitfield<32> getViSurfaceCreateFlagsNNStr (VkViSurfaceCreateFlagsNN value)
2311 {
2312         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2313 }
2314
2315 tcu::Format::Bitfield<32> getPipelineViewportSwizzleStateCreateFlagsNVStr (VkPipelineViewportSwizzleStateCreateFlagsNV value)
2316 {
2317         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2318 }
2319
2320 tcu::Format::Bitfield<32> getPipelineDiscardRectangleStateCreateFlagsEXTStr (VkPipelineDiscardRectangleStateCreateFlagsEXT value)
2321 {
2322         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2323 }
2324
2325 tcu::Format::Bitfield<32> getIOSSurfaceCreateFlagsMVKStr (VkIOSSurfaceCreateFlagsMVK value)
2326 {
2327         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2328 }
2329
2330 tcu::Format::Bitfield<32> getMacOSSurfaceCreateFlagsMVKStr (VkMacOSSurfaceCreateFlagsMVK value)
2331 {
2332         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2333 }
2334
2335 tcu::Format::Bitfield<32> getPipelineCoverageToColorStateCreateFlagsNVStr (VkPipelineCoverageToColorStateCreateFlagsNV value)
2336 {
2337         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2338 }
2339
2340 tcu::Format::Bitfield<32> getPipelineCoverageModulationStateCreateFlagsNVStr (VkPipelineCoverageModulationStateCreateFlagsNV value)
2341 {
2342         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2343 }
2344
2345 tcu::Format::Bitfield<32> getValidationCacheCreateFlagsEXTStr (VkValidationCacheCreateFlagsEXT value)
2346 {
2347         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
2348 }
2349
2350 std::ostream& operator<< (std::ostream& s, const VkApplicationInfo& value)
2351 {
2352         s << "VkApplicationInfo = {\n";
2353         s << "\tsType = " << value.sType << '\n';
2354         s << "\tpNext = " << value.pNext << '\n';
2355         s << "\tpApplicationName = " << getCharPtrStr(value.pApplicationName) << '\n';
2356         s << "\tapplicationVersion = " << value.applicationVersion << '\n';
2357         s << "\tpEngineName = " << getCharPtrStr(value.pEngineName) << '\n';
2358         s << "\tengineVersion = " << value.engineVersion << '\n';
2359         s << "\tapiVersion = " << value.apiVersion << '\n';
2360         s << '}';
2361         return s;
2362 }
2363
2364 std::ostream& operator<< (std::ostream& s, const VkInstanceCreateInfo& value)
2365 {
2366         s << "VkInstanceCreateInfo = {\n";
2367         s << "\tsType = " << value.sType << '\n';
2368         s << "\tpNext = " << value.pNext << '\n';
2369         s << "\tflags = " << getInstanceCreateFlagsStr(value.flags) << '\n';
2370         s << "\tpApplicationInfo = " << value.pApplicationInfo << '\n';
2371         s << "\tenabledLayerCount = " << value.enabledLayerCount << '\n';
2372         s << "\tppEnabledLayerNames = " << value.ppEnabledLayerNames << '\n';
2373         s << "\tenabledExtensionCount = " << value.enabledExtensionCount << '\n';
2374         s << "\tppEnabledExtensionNames = " << value.ppEnabledExtensionNames << '\n';
2375         s << '}';
2376         return s;
2377 }
2378
2379 std::ostream& operator<< (std::ostream& s, const VkAllocationCallbacks& value)
2380 {
2381         s << "VkAllocationCallbacks = {\n";
2382         s << "\tpUserData = " << value.pUserData << '\n';
2383         s << "\tpfnAllocation = " << value.pfnAllocation << '\n';
2384         s << "\tpfnReallocation = " << value.pfnReallocation << '\n';
2385         s << "\tpfnFree = " << value.pfnFree << '\n';
2386         s << "\tpfnInternalAllocation = " << value.pfnInternalAllocation << '\n';
2387         s << "\tpfnInternalFree = " << value.pfnInternalFree << '\n';
2388         s << '}';
2389         return s;
2390 }
2391
2392 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceFeatures& value)
2393 {
2394         s << "VkPhysicalDeviceFeatures = {\n";
2395         s << "\trobustBufferAccess = " << value.robustBufferAccess << '\n';
2396         s << "\tfullDrawIndexUint32 = " << value.fullDrawIndexUint32 << '\n';
2397         s << "\timageCubeArray = " << value.imageCubeArray << '\n';
2398         s << "\tindependentBlend = " << value.independentBlend << '\n';
2399         s << "\tgeometryShader = " << value.geometryShader << '\n';
2400         s << "\ttessellationShader = " << value.tessellationShader << '\n';
2401         s << "\tsampleRateShading = " << value.sampleRateShading << '\n';
2402         s << "\tdualSrcBlend = " << value.dualSrcBlend << '\n';
2403         s << "\tlogicOp = " << value.logicOp << '\n';
2404         s << "\tmultiDrawIndirect = " << value.multiDrawIndirect << '\n';
2405         s << "\tdrawIndirectFirstInstance = " << value.drawIndirectFirstInstance << '\n';
2406         s << "\tdepthClamp = " << value.depthClamp << '\n';
2407         s << "\tdepthBiasClamp = " << value.depthBiasClamp << '\n';
2408         s << "\tfillModeNonSolid = " << value.fillModeNonSolid << '\n';
2409         s << "\tdepthBounds = " << value.depthBounds << '\n';
2410         s << "\twideLines = " << value.wideLines << '\n';
2411         s << "\tlargePoints = " << value.largePoints << '\n';
2412         s << "\talphaToOne = " << value.alphaToOne << '\n';
2413         s << "\tmultiViewport = " << value.multiViewport << '\n';
2414         s << "\tsamplerAnisotropy = " << value.samplerAnisotropy << '\n';
2415         s << "\ttextureCompressionETC2 = " << value.textureCompressionETC2 << '\n';
2416         s << "\ttextureCompressionASTC_LDR = " << value.textureCompressionASTC_LDR << '\n';
2417         s << "\ttextureCompressionBC = " << value.textureCompressionBC << '\n';
2418         s << "\tocclusionQueryPrecise = " << value.occlusionQueryPrecise << '\n';
2419         s << "\tpipelineStatisticsQuery = " << value.pipelineStatisticsQuery << '\n';
2420         s << "\tvertexPipelineStoresAndAtomics = " << value.vertexPipelineStoresAndAtomics << '\n';
2421         s << "\tfragmentStoresAndAtomics = " << value.fragmentStoresAndAtomics << '\n';
2422         s << "\tshaderTessellationAndGeometryPointSize = " << value.shaderTessellationAndGeometryPointSize << '\n';
2423         s << "\tshaderImageGatherExtended = " << value.shaderImageGatherExtended << '\n';
2424         s << "\tshaderStorageImageExtendedFormats = " << value.shaderStorageImageExtendedFormats << '\n';
2425         s << "\tshaderStorageImageMultisample = " << value.shaderStorageImageMultisample << '\n';
2426         s << "\tshaderStorageImageReadWithoutFormat = " << value.shaderStorageImageReadWithoutFormat << '\n';
2427         s << "\tshaderStorageImageWriteWithoutFormat = " << value.shaderStorageImageWriteWithoutFormat << '\n';
2428         s << "\tshaderUniformBufferArrayDynamicIndexing = " << value.shaderUniformBufferArrayDynamicIndexing << '\n';
2429         s << "\tshaderSampledImageArrayDynamicIndexing = " << value.shaderSampledImageArrayDynamicIndexing << '\n';
2430         s << "\tshaderStorageBufferArrayDynamicIndexing = " << value.shaderStorageBufferArrayDynamicIndexing << '\n';
2431         s << "\tshaderStorageImageArrayDynamicIndexing = " << value.shaderStorageImageArrayDynamicIndexing << '\n';
2432         s << "\tshaderClipDistance = " << value.shaderClipDistance << '\n';
2433         s << "\tshaderCullDistance = " << value.shaderCullDistance << '\n';
2434         s << "\tshaderFloat64 = " << value.shaderFloat64 << '\n';
2435         s << "\tshaderInt64 = " << value.shaderInt64 << '\n';
2436         s << "\tshaderInt16 = " << value.shaderInt16 << '\n';
2437         s << "\tshaderResourceResidency = " << value.shaderResourceResidency << '\n';
2438         s << "\tshaderResourceMinLod = " << value.shaderResourceMinLod << '\n';
2439         s << "\tsparseBinding = " << value.sparseBinding << '\n';
2440         s << "\tsparseResidencyBuffer = " << value.sparseResidencyBuffer << '\n';
2441         s << "\tsparseResidencyImage2D = " << value.sparseResidencyImage2D << '\n';
2442         s << "\tsparseResidencyImage3D = " << value.sparseResidencyImage3D << '\n';
2443         s << "\tsparseResidency2Samples = " << value.sparseResidency2Samples << '\n';
2444         s << "\tsparseResidency4Samples = " << value.sparseResidency4Samples << '\n';
2445         s << "\tsparseResidency8Samples = " << value.sparseResidency8Samples << '\n';
2446         s << "\tsparseResidency16Samples = " << value.sparseResidency16Samples << '\n';
2447         s << "\tsparseResidencyAliased = " << value.sparseResidencyAliased << '\n';
2448         s << "\tvariableMultisampleRate = " << value.variableMultisampleRate << '\n';
2449         s << "\tinheritedQueries = " << value.inheritedQueries << '\n';
2450         s << '}';
2451         return s;
2452 }
2453
2454 std::ostream& operator<< (std::ostream& s, const VkFormatProperties& value)
2455 {
2456         s << "VkFormatProperties = {\n";
2457         s << "\tlinearTilingFeatures = " << getFormatFeatureFlagsStr(value.linearTilingFeatures) << '\n';
2458         s << "\toptimalTilingFeatures = " << getFormatFeatureFlagsStr(value.optimalTilingFeatures) << '\n';
2459         s << "\tbufferFeatures = " << getFormatFeatureFlagsStr(value.bufferFeatures) << '\n';
2460         s << '}';
2461         return s;
2462 }
2463
2464 std::ostream& operator<< (std::ostream& s, const VkExtent3D& value)
2465 {
2466         s << "VkExtent3D = {\n";
2467         s << "\twidth = " << value.width << '\n';
2468         s << "\theight = " << value.height << '\n';
2469         s << "\tdepth = " << value.depth << '\n';
2470         s << '}';
2471         return s;
2472 }
2473
2474 std::ostream& operator<< (std::ostream& s, const VkImageFormatProperties& value)
2475 {
2476         s << "VkImageFormatProperties = {\n";
2477         s << "\tmaxExtent = " << value.maxExtent << '\n';
2478         s << "\tmaxMipLevels = " << value.maxMipLevels << '\n';
2479         s << "\tmaxArrayLayers = " << value.maxArrayLayers << '\n';
2480         s << "\tsampleCounts = " << getSampleCountFlagsStr(value.sampleCounts) << '\n';
2481         s << "\tmaxResourceSize = " << value.maxResourceSize << '\n';
2482         s << '}';
2483         return s;
2484 }
2485
2486 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceLimits& value)
2487 {
2488         s << "VkPhysicalDeviceLimits = {\n";
2489         s << "\tmaxImageDimension1D = " << value.maxImageDimension1D << '\n';
2490         s << "\tmaxImageDimension2D = " << value.maxImageDimension2D << '\n';
2491         s << "\tmaxImageDimension3D = " << value.maxImageDimension3D << '\n';
2492         s << "\tmaxImageDimensionCube = " << value.maxImageDimensionCube << '\n';
2493         s << "\tmaxImageArrayLayers = " << value.maxImageArrayLayers << '\n';
2494         s << "\tmaxTexelBufferElements = " << value.maxTexelBufferElements << '\n';
2495         s << "\tmaxUniformBufferRange = " << value.maxUniformBufferRange << '\n';
2496         s << "\tmaxStorageBufferRange = " << value.maxStorageBufferRange << '\n';
2497         s << "\tmaxPushConstantsSize = " << value.maxPushConstantsSize << '\n';
2498         s << "\tmaxMemoryAllocationCount = " << value.maxMemoryAllocationCount << '\n';
2499         s << "\tmaxSamplerAllocationCount = " << value.maxSamplerAllocationCount << '\n';
2500         s << "\tbufferImageGranularity = " << value.bufferImageGranularity << '\n';
2501         s << "\tsparseAddressSpaceSize = " << value.sparseAddressSpaceSize << '\n';
2502         s << "\tmaxBoundDescriptorSets = " << value.maxBoundDescriptorSets << '\n';
2503         s << "\tmaxPerStageDescriptorSamplers = " << value.maxPerStageDescriptorSamplers << '\n';
2504         s << "\tmaxPerStageDescriptorUniformBuffers = " << value.maxPerStageDescriptorUniformBuffers << '\n';
2505         s << "\tmaxPerStageDescriptorStorageBuffers = " << value.maxPerStageDescriptorStorageBuffers << '\n';
2506         s << "\tmaxPerStageDescriptorSampledImages = " << value.maxPerStageDescriptorSampledImages << '\n';
2507         s << "\tmaxPerStageDescriptorStorageImages = " << value.maxPerStageDescriptorStorageImages << '\n';
2508         s << "\tmaxPerStageDescriptorInputAttachments = " << value.maxPerStageDescriptorInputAttachments << '\n';
2509         s << "\tmaxPerStageResources = " << value.maxPerStageResources << '\n';
2510         s << "\tmaxDescriptorSetSamplers = " << value.maxDescriptorSetSamplers << '\n';
2511         s << "\tmaxDescriptorSetUniformBuffers = " << value.maxDescriptorSetUniformBuffers << '\n';
2512         s << "\tmaxDescriptorSetUniformBuffersDynamic = " << value.maxDescriptorSetUniformBuffersDynamic << '\n';
2513         s << "\tmaxDescriptorSetStorageBuffers = " << value.maxDescriptorSetStorageBuffers << '\n';
2514         s << "\tmaxDescriptorSetStorageBuffersDynamic = " << value.maxDescriptorSetStorageBuffersDynamic << '\n';
2515         s << "\tmaxDescriptorSetSampledImages = " << value.maxDescriptorSetSampledImages << '\n';
2516         s << "\tmaxDescriptorSetStorageImages = " << value.maxDescriptorSetStorageImages << '\n';
2517         s << "\tmaxDescriptorSetInputAttachments = " << value.maxDescriptorSetInputAttachments << '\n';
2518         s << "\tmaxVertexInputAttributes = " << value.maxVertexInputAttributes << '\n';
2519         s << "\tmaxVertexInputBindings = " << value.maxVertexInputBindings << '\n';
2520         s << "\tmaxVertexInputAttributeOffset = " << value.maxVertexInputAttributeOffset << '\n';
2521         s << "\tmaxVertexInputBindingStride = " << value.maxVertexInputBindingStride << '\n';
2522         s << "\tmaxVertexOutputComponents = " << value.maxVertexOutputComponents << '\n';
2523         s << "\tmaxTessellationGenerationLevel = " << value.maxTessellationGenerationLevel << '\n';
2524         s << "\tmaxTessellationPatchSize = " << value.maxTessellationPatchSize << '\n';
2525         s << "\tmaxTessellationControlPerVertexInputComponents = " << value.maxTessellationControlPerVertexInputComponents << '\n';
2526         s << "\tmaxTessellationControlPerVertexOutputComponents = " << value.maxTessellationControlPerVertexOutputComponents << '\n';
2527         s << "\tmaxTessellationControlPerPatchOutputComponents = " << value.maxTessellationControlPerPatchOutputComponents << '\n';
2528         s << "\tmaxTessellationControlTotalOutputComponents = " << value.maxTessellationControlTotalOutputComponents << '\n';
2529         s << "\tmaxTessellationEvaluationInputComponents = " << value.maxTessellationEvaluationInputComponents << '\n';
2530         s << "\tmaxTessellationEvaluationOutputComponents = " << value.maxTessellationEvaluationOutputComponents << '\n';
2531         s << "\tmaxGeometryShaderInvocations = " << value.maxGeometryShaderInvocations << '\n';
2532         s << "\tmaxGeometryInputComponents = " << value.maxGeometryInputComponents << '\n';
2533         s << "\tmaxGeometryOutputComponents = " << value.maxGeometryOutputComponents << '\n';
2534         s << "\tmaxGeometryOutputVertices = " << value.maxGeometryOutputVertices << '\n';
2535         s << "\tmaxGeometryTotalOutputComponents = " << value.maxGeometryTotalOutputComponents << '\n';
2536         s << "\tmaxFragmentInputComponents = " << value.maxFragmentInputComponents << '\n';
2537         s << "\tmaxFragmentOutputAttachments = " << value.maxFragmentOutputAttachments << '\n';
2538         s << "\tmaxFragmentDualSrcAttachments = " << value.maxFragmentDualSrcAttachments << '\n';
2539         s << "\tmaxFragmentCombinedOutputResources = " << value.maxFragmentCombinedOutputResources << '\n';
2540         s << "\tmaxComputeSharedMemorySize = " << value.maxComputeSharedMemorySize << '\n';
2541         s << "\tmaxComputeWorkGroupCount = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.maxComputeWorkGroupCount), DE_ARRAY_END(value.maxComputeWorkGroupCount)) << '\n';
2542         s << "\tmaxComputeWorkGroupInvocations = " << value.maxComputeWorkGroupInvocations << '\n';
2543         s << "\tmaxComputeWorkGroupSize = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.maxComputeWorkGroupSize), DE_ARRAY_END(value.maxComputeWorkGroupSize)) << '\n';
2544         s << "\tsubPixelPrecisionBits = " << value.subPixelPrecisionBits << '\n';
2545         s << "\tsubTexelPrecisionBits = " << value.subTexelPrecisionBits << '\n';
2546         s << "\tmipmapPrecisionBits = " << value.mipmapPrecisionBits << '\n';
2547         s << "\tmaxDrawIndexedIndexValue = " << value.maxDrawIndexedIndexValue << '\n';
2548         s << "\tmaxDrawIndirectCount = " << value.maxDrawIndirectCount << '\n';
2549         s << "\tmaxSamplerLodBias = " << value.maxSamplerLodBias << '\n';
2550         s << "\tmaxSamplerAnisotropy = " << value.maxSamplerAnisotropy << '\n';
2551         s << "\tmaxViewports = " << value.maxViewports << '\n';
2552         s << "\tmaxViewportDimensions = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.maxViewportDimensions), DE_ARRAY_END(value.maxViewportDimensions)) << '\n';
2553         s << "\tviewportBoundsRange = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.viewportBoundsRange), DE_ARRAY_END(value.viewportBoundsRange)) << '\n';
2554         s << "\tviewportSubPixelBits = " << value.viewportSubPixelBits << '\n';
2555         s << "\tminMemoryMapAlignment = " << value.minMemoryMapAlignment << '\n';
2556         s << "\tminTexelBufferOffsetAlignment = " << value.minTexelBufferOffsetAlignment << '\n';
2557         s << "\tminUniformBufferOffsetAlignment = " << value.minUniformBufferOffsetAlignment << '\n';
2558         s << "\tminStorageBufferOffsetAlignment = " << value.minStorageBufferOffsetAlignment << '\n';
2559         s << "\tminTexelOffset = " << value.minTexelOffset << '\n';
2560         s << "\tmaxTexelOffset = " << value.maxTexelOffset << '\n';
2561         s << "\tminTexelGatherOffset = " << value.minTexelGatherOffset << '\n';
2562         s << "\tmaxTexelGatherOffset = " << value.maxTexelGatherOffset << '\n';
2563         s << "\tminInterpolationOffset = " << value.minInterpolationOffset << '\n';
2564         s << "\tmaxInterpolationOffset = " << value.maxInterpolationOffset << '\n';
2565         s << "\tsubPixelInterpolationOffsetBits = " << value.subPixelInterpolationOffsetBits << '\n';
2566         s << "\tmaxFramebufferWidth = " << value.maxFramebufferWidth << '\n';
2567         s << "\tmaxFramebufferHeight = " << value.maxFramebufferHeight << '\n';
2568         s << "\tmaxFramebufferLayers = " << value.maxFramebufferLayers << '\n';
2569         s << "\tframebufferColorSampleCounts = " << getSampleCountFlagsStr(value.framebufferColorSampleCounts) << '\n';
2570         s << "\tframebufferDepthSampleCounts = " << getSampleCountFlagsStr(value.framebufferDepthSampleCounts) << '\n';
2571         s << "\tframebufferStencilSampleCounts = " << getSampleCountFlagsStr(value.framebufferStencilSampleCounts) << '\n';
2572         s << "\tframebufferNoAttachmentsSampleCounts = " << getSampleCountFlagsStr(value.framebufferNoAttachmentsSampleCounts) << '\n';
2573         s << "\tmaxColorAttachments = " << value.maxColorAttachments << '\n';
2574         s << "\tsampledImageColorSampleCounts = " << getSampleCountFlagsStr(value.sampledImageColorSampleCounts) << '\n';
2575         s << "\tsampledImageIntegerSampleCounts = " << getSampleCountFlagsStr(value.sampledImageIntegerSampleCounts) << '\n';
2576         s << "\tsampledImageDepthSampleCounts = " << getSampleCountFlagsStr(value.sampledImageDepthSampleCounts) << '\n';
2577         s << "\tsampledImageStencilSampleCounts = " << getSampleCountFlagsStr(value.sampledImageStencilSampleCounts) << '\n';
2578         s << "\tstorageImageSampleCounts = " << getSampleCountFlagsStr(value.storageImageSampleCounts) << '\n';
2579         s << "\tmaxSampleMaskWords = " << value.maxSampleMaskWords << '\n';
2580         s << "\ttimestampComputeAndGraphics = " << value.timestampComputeAndGraphics << '\n';
2581         s << "\ttimestampPeriod = " << value.timestampPeriod << '\n';
2582         s << "\tmaxClipDistances = " << value.maxClipDistances << '\n';
2583         s << "\tmaxCullDistances = " << value.maxCullDistances << '\n';
2584         s << "\tmaxCombinedClipAndCullDistances = " << value.maxCombinedClipAndCullDistances << '\n';
2585         s << "\tdiscreteQueuePriorities = " << value.discreteQueuePriorities << '\n';
2586         s << "\tpointSizeRange = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.pointSizeRange), DE_ARRAY_END(value.pointSizeRange)) << '\n';
2587         s << "\tlineWidthRange = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.lineWidthRange), DE_ARRAY_END(value.lineWidthRange)) << '\n';
2588         s << "\tpointSizeGranularity = " << value.pointSizeGranularity << '\n';
2589         s << "\tlineWidthGranularity = " << value.lineWidthGranularity << '\n';
2590         s << "\tstrictLines = " << value.strictLines << '\n';
2591         s << "\tstandardSampleLocations = " << value.standardSampleLocations << '\n';
2592         s << "\toptimalBufferCopyOffsetAlignment = " << value.optimalBufferCopyOffsetAlignment << '\n';
2593         s << "\toptimalBufferCopyRowPitchAlignment = " << value.optimalBufferCopyRowPitchAlignment << '\n';
2594         s << "\tnonCoherentAtomSize = " << value.nonCoherentAtomSize << '\n';
2595         s << '}';
2596         return s;
2597 }
2598
2599 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceSparseProperties& value)
2600 {
2601         s << "VkPhysicalDeviceSparseProperties = {\n";
2602         s << "\tresidencyStandard2DBlockShape = " << value.residencyStandard2DBlockShape << '\n';
2603         s << "\tresidencyStandard2DMultisampleBlockShape = " << value.residencyStandard2DMultisampleBlockShape << '\n';
2604         s << "\tresidencyStandard3DBlockShape = " << value.residencyStandard3DBlockShape << '\n';
2605         s << "\tresidencyAlignedMipSize = " << value.residencyAlignedMipSize << '\n';
2606         s << "\tresidencyNonResidentStrict = " << value.residencyNonResidentStrict << '\n';
2607         s << '}';
2608         return s;
2609 }
2610
2611 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceProperties& value)
2612 {
2613         s << "VkPhysicalDeviceProperties = {\n";
2614         s << "\tapiVersion = " << value.apiVersion << '\n';
2615         s << "\tdriverVersion = " << value.driverVersion << '\n';
2616         s << "\tvendorID = " << value.vendorID << '\n';
2617         s << "\tdeviceID = " << value.deviceID << '\n';
2618         s << "\tdeviceType = " << value.deviceType << '\n';
2619         s << "\tdeviceName = " << (const char*)value.deviceName << '\n';
2620         s << "\tpipelineCacheUUID = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<deUint8>(DE_ARRAY_BEGIN(value.pipelineCacheUUID)), tcu::Format::HexIterator<deUint8>(DE_ARRAY_END(value.pipelineCacheUUID))) << '\n';
2621         s << "\tlimits = " << value.limits << '\n';
2622         s << "\tsparseProperties = " << value.sparseProperties << '\n';
2623         s << '}';
2624         return s;
2625 }
2626
2627 std::ostream& operator<< (std::ostream& s, const VkQueueFamilyProperties& value)
2628 {
2629         s << "VkQueueFamilyProperties = {\n";
2630         s << "\tqueueFlags = " << getQueueFlagsStr(value.queueFlags) << '\n';
2631         s << "\tqueueCount = " << value.queueCount << '\n';
2632         s << "\ttimestampValidBits = " << value.timestampValidBits << '\n';
2633         s << "\tminImageTransferGranularity = " << value.minImageTransferGranularity << '\n';
2634         s << '}';
2635         return s;
2636 }
2637
2638 std::ostream& operator<< (std::ostream& s, const VkMemoryType& value)
2639 {
2640         s << "VkMemoryType = {\n";
2641         s << "\tpropertyFlags = " << getMemoryPropertyFlagsStr(value.propertyFlags) << '\n';
2642         s << "\theapIndex = " << value.heapIndex << '\n';
2643         s << '}';
2644         return s;
2645 }
2646
2647 std::ostream& operator<< (std::ostream& s, const VkMemoryHeap& value)
2648 {
2649         s << "VkMemoryHeap = {\n";
2650         s << "\tsize = " << value.size << '\n';
2651         s << "\tflags = " << getMemoryHeapFlagsStr(value.flags) << '\n';
2652         s << '}';
2653         return s;
2654 }
2655
2656 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceMemoryProperties& value)
2657 {
2658         s << "VkPhysicalDeviceMemoryProperties = {\n";
2659         s << "\tmemoryTypeCount = " << value.memoryTypeCount << '\n';
2660         s << "\tmemoryTypes = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.memoryTypes), DE_ARRAY_BEGIN(value.memoryTypes) + value.memoryTypeCount) << '\n';
2661         s << "\tmemoryHeapCount = " << value.memoryHeapCount << '\n';
2662         s << "\tmemoryHeaps = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.memoryHeaps), DE_ARRAY_BEGIN(value.memoryHeaps) + value.memoryHeapCount) << '\n';
2663         s << '}';
2664         return s;
2665 }
2666
2667 std::ostream& operator<< (std::ostream& s, const VkDeviceQueueCreateInfo& value)
2668 {
2669         s << "VkDeviceQueueCreateInfo = {\n";
2670         s << "\tsType = " << value.sType << '\n';
2671         s << "\tpNext = " << value.pNext << '\n';
2672         s << "\tflags = " << getDeviceQueueCreateFlagsStr(value.flags) << '\n';
2673         s << "\tqueueFamilyIndex = " << value.queueFamilyIndex << '\n';
2674         s << "\tqueueCount = " << value.queueCount << '\n';
2675         s << "\tpQueuePriorities = " << value.pQueuePriorities << '\n';
2676         s << '}';
2677         return s;
2678 }
2679
2680 std::ostream& operator<< (std::ostream& s, const VkDeviceCreateInfo& value)
2681 {
2682         s << "VkDeviceCreateInfo = {\n";
2683         s << "\tsType = " << value.sType << '\n';
2684         s << "\tpNext = " << value.pNext << '\n';
2685         s << "\tflags = " << getDeviceCreateFlagsStr(value.flags) << '\n';
2686         s << "\tqueueCreateInfoCount = " << value.queueCreateInfoCount << '\n';
2687         s << "\tpQueueCreateInfos = " << value.pQueueCreateInfos << '\n';
2688         s << "\tenabledLayerCount = " << value.enabledLayerCount << '\n';
2689         s << "\tppEnabledLayerNames = " << value.ppEnabledLayerNames << '\n';
2690         s << "\tenabledExtensionCount = " << value.enabledExtensionCount << '\n';
2691         s << "\tppEnabledExtensionNames = " << value.ppEnabledExtensionNames << '\n';
2692         s << "\tpEnabledFeatures = " << value.pEnabledFeatures << '\n';
2693         s << '}';
2694         return s;
2695 }
2696
2697 std::ostream& operator<< (std::ostream& s, const VkExtensionProperties& value)
2698 {
2699         s << "VkExtensionProperties = {\n";
2700         s << "\textensionName = " << (const char*)value.extensionName << '\n';
2701         s << "\tspecVersion = " << value.specVersion << '\n';
2702         s << '}';
2703         return s;
2704 }
2705
2706 std::ostream& operator<< (std::ostream& s, const VkLayerProperties& value)
2707 {
2708         s << "VkLayerProperties = {\n";
2709         s << "\tlayerName = " << (const char*)value.layerName << '\n';
2710         s << "\tspecVersion = " << value.specVersion << '\n';
2711         s << "\timplementationVersion = " << value.implementationVersion << '\n';
2712         s << "\tdescription = " << (const char*)value.description << '\n';
2713         s << '}';
2714         return s;
2715 }
2716
2717 std::ostream& operator<< (std::ostream& s, const VkSubmitInfo& value)
2718 {
2719         s << "VkSubmitInfo = {\n";
2720         s << "\tsType = " << value.sType << '\n';
2721         s << "\tpNext = " << value.pNext << '\n';
2722         s << "\twaitSemaphoreCount = " << value.waitSemaphoreCount << '\n';
2723         s << "\tpWaitSemaphores = " << value.pWaitSemaphores << '\n';
2724         s << "\tpWaitDstStageMask = " << value.pWaitDstStageMask << '\n';
2725         s << "\tcommandBufferCount = " << value.commandBufferCount << '\n';
2726         s << "\tpCommandBuffers = " << value.pCommandBuffers << '\n';
2727         s << "\tsignalSemaphoreCount = " << value.signalSemaphoreCount << '\n';
2728         s << "\tpSignalSemaphores = " << value.pSignalSemaphores << '\n';
2729         s << '}';
2730         return s;
2731 }
2732
2733 std::ostream& operator<< (std::ostream& s, const VkMemoryAllocateInfo& value)
2734 {
2735         s << "VkMemoryAllocateInfo = {\n";
2736         s << "\tsType = " << value.sType << '\n';
2737         s << "\tpNext = " << value.pNext << '\n';
2738         s << "\tallocationSize = " << value.allocationSize << '\n';
2739         s << "\tmemoryTypeIndex = " << value.memoryTypeIndex << '\n';
2740         s << '}';
2741         return s;
2742 }
2743
2744 std::ostream& operator<< (std::ostream& s, const VkMappedMemoryRange& value)
2745 {
2746         s << "VkMappedMemoryRange = {\n";
2747         s << "\tsType = " << value.sType << '\n';
2748         s << "\tpNext = " << value.pNext << '\n';
2749         s << "\tmemory = " << value.memory << '\n';
2750         s << "\toffset = " << value.offset << '\n';
2751         s << "\tsize = " << value.size << '\n';
2752         s << '}';
2753         return s;
2754 }
2755
2756 std::ostream& operator<< (std::ostream& s, const VkMemoryRequirements& value)
2757 {
2758         s << "VkMemoryRequirements = {\n";
2759         s << "\tsize = " << value.size << '\n';
2760         s << "\talignment = " << value.alignment << '\n';
2761         s << "\tmemoryTypeBits = " << value.memoryTypeBits << '\n';
2762         s << '}';
2763         return s;
2764 }
2765
2766 std::ostream& operator<< (std::ostream& s, const VkSparseImageFormatProperties& value)
2767 {
2768         s << "VkSparseImageFormatProperties = {\n";
2769         s << "\taspectMask = " << getImageAspectFlagsStr(value.aspectMask) << '\n';
2770         s << "\timageGranularity = " << value.imageGranularity << '\n';
2771         s << "\tflags = " << getSparseImageFormatFlagsStr(value.flags) << '\n';
2772         s << '}';
2773         return s;
2774 }
2775
2776 std::ostream& operator<< (std::ostream& s, const VkSparseImageMemoryRequirements& value)
2777 {
2778         s << "VkSparseImageMemoryRequirements = {\n";
2779         s << "\tformatProperties = " << value.formatProperties << '\n';
2780         s << "\timageMipTailFirstLod = " << value.imageMipTailFirstLod << '\n';
2781         s << "\timageMipTailSize = " << value.imageMipTailSize << '\n';
2782         s << "\timageMipTailOffset = " << value.imageMipTailOffset << '\n';
2783         s << "\timageMipTailStride = " << value.imageMipTailStride << '\n';
2784         s << '}';
2785         return s;
2786 }
2787
2788 std::ostream& operator<< (std::ostream& s, const VkSparseMemoryBind& value)
2789 {
2790         s << "VkSparseMemoryBind = {\n";
2791         s << "\tresourceOffset = " << value.resourceOffset << '\n';
2792         s << "\tsize = " << value.size << '\n';
2793         s << "\tmemory = " << value.memory << '\n';
2794         s << "\tmemoryOffset = " << value.memoryOffset << '\n';
2795         s << "\tflags = " << getSparseMemoryBindFlagsStr(value.flags) << '\n';
2796         s << '}';
2797         return s;
2798 }
2799
2800 std::ostream& operator<< (std::ostream& s, const VkSparseBufferMemoryBindInfo& value)
2801 {
2802         s << "VkSparseBufferMemoryBindInfo = {\n";
2803         s << "\tbuffer = " << value.buffer << '\n';
2804         s << "\tbindCount = " << value.bindCount << '\n';
2805         s << "\tpBinds = " << value.pBinds << '\n';
2806         s << '}';
2807         return s;
2808 }
2809
2810 std::ostream& operator<< (std::ostream& s, const VkSparseImageOpaqueMemoryBindInfo& value)
2811 {
2812         s << "VkSparseImageOpaqueMemoryBindInfo = {\n";
2813         s << "\timage = " << value.image << '\n';
2814         s << "\tbindCount = " << value.bindCount << '\n';
2815         s << "\tpBinds = " << value.pBinds << '\n';
2816         s << '}';
2817         return s;
2818 }
2819
2820 std::ostream& operator<< (std::ostream& s, const VkImageSubresource& value)
2821 {
2822         s << "VkImageSubresource = {\n";
2823         s << "\taspectMask = " << getImageAspectFlagsStr(value.aspectMask) << '\n';
2824         s << "\tmipLevel = " << value.mipLevel << '\n';
2825         s << "\tarrayLayer = " << value.arrayLayer << '\n';
2826         s << '}';
2827         return s;
2828 }
2829
2830 std::ostream& operator<< (std::ostream& s, const VkOffset3D& value)
2831 {
2832         s << "VkOffset3D = {\n";
2833         s << "\tx = " << value.x << '\n';
2834         s << "\ty = " << value.y << '\n';
2835         s << "\tz = " << value.z << '\n';
2836         s << '}';
2837         return s;
2838 }
2839
2840 std::ostream& operator<< (std::ostream& s, const VkSparseImageMemoryBind& value)
2841 {
2842         s << "VkSparseImageMemoryBind = {\n";
2843         s << "\tsubresource = " << value.subresource << '\n';
2844         s << "\toffset = " << value.offset << '\n';
2845         s << "\textent = " << value.extent << '\n';
2846         s << "\tmemory = " << value.memory << '\n';
2847         s << "\tmemoryOffset = " << value.memoryOffset << '\n';
2848         s << "\tflags = " << getSparseMemoryBindFlagsStr(value.flags) << '\n';
2849         s << '}';
2850         return s;
2851 }
2852
2853 std::ostream& operator<< (std::ostream& s, const VkSparseImageMemoryBindInfo& value)
2854 {
2855         s << "VkSparseImageMemoryBindInfo = {\n";
2856         s << "\timage = " << value.image << '\n';
2857         s << "\tbindCount = " << value.bindCount << '\n';
2858         s << "\tpBinds = " << value.pBinds << '\n';
2859         s << '}';
2860         return s;
2861 }
2862
2863 std::ostream& operator<< (std::ostream& s, const VkBindSparseInfo& value)
2864 {
2865         s << "VkBindSparseInfo = {\n";
2866         s << "\tsType = " << value.sType << '\n';
2867         s << "\tpNext = " << value.pNext << '\n';
2868         s << "\twaitSemaphoreCount = " << value.waitSemaphoreCount << '\n';
2869         s << "\tpWaitSemaphores = " << value.pWaitSemaphores << '\n';
2870         s << "\tbufferBindCount = " << value.bufferBindCount << '\n';
2871         s << "\tpBufferBinds = " << value.pBufferBinds << '\n';
2872         s << "\timageOpaqueBindCount = " << value.imageOpaqueBindCount << '\n';
2873         s << "\tpImageOpaqueBinds = " << value.pImageOpaqueBinds << '\n';
2874         s << "\timageBindCount = " << value.imageBindCount << '\n';
2875         s << "\tpImageBinds = " << value.pImageBinds << '\n';
2876         s << "\tsignalSemaphoreCount = " << value.signalSemaphoreCount << '\n';
2877         s << "\tpSignalSemaphores = " << value.pSignalSemaphores << '\n';
2878         s << '}';
2879         return s;
2880 }
2881
2882 std::ostream& operator<< (std::ostream& s, const VkFenceCreateInfo& value)
2883 {
2884         s << "VkFenceCreateInfo = {\n";
2885         s << "\tsType = " << value.sType << '\n';
2886         s << "\tpNext = " << value.pNext << '\n';
2887         s << "\tflags = " << getFenceCreateFlagsStr(value.flags) << '\n';
2888         s << '}';
2889         return s;
2890 }
2891
2892 std::ostream& operator<< (std::ostream& s, const VkSemaphoreCreateInfo& value)
2893 {
2894         s << "VkSemaphoreCreateInfo = {\n";
2895         s << "\tsType = " << value.sType << '\n';
2896         s << "\tpNext = " << value.pNext << '\n';
2897         s << "\tflags = " << getSemaphoreCreateFlagsStr(value.flags) << '\n';
2898         s << '}';
2899         return s;
2900 }
2901
2902 std::ostream& operator<< (std::ostream& s, const VkEventCreateInfo& value)
2903 {
2904         s << "VkEventCreateInfo = {\n";
2905         s << "\tsType = " << value.sType << '\n';
2906         s << "\tpNext = " << value.pNext << '\n';
2907         s << "\tflags = " << getEventCreateFlagsStr(value.flags) << '\n';
2908         s << '}';
2909         return s;
2910 }
2911
2912 std::ostream& operator<< (std::ostream& s, const VkQueryPoolCreateInfo& value)
2913 {
2914         s << "VkQueryPoolCreateInfo = {\n";
2915         s << "\tsType = " << value.sType << '\n';
2916         s << "\tpNext = " << value.pNext << '\n';
2917         s << "\tflags = " << getQueryPoolCreateFlagsStr(value.flags) << '\n';
2918         s << "\tqueryType = " << value.queryType << '\n';
2919         s << "\tqueryCount = " << value.queryCount << '\n';
2920         s << "\tpipelineStatistics = " << getQueryPipelineStatisticFlagsStr(value.pipelineStatistics) << '\n';
2921         s << '}';
2922         return s;
2923 }
2924
2925 std::ostream& operator<< (std::ostream& s, const VkBufferCreateInfo& value)
2926 {
2927         s << "VkBufferCreateInfo = {\n";
2928         s << "\tsType = " << value.sType << '\n';
2929         s << "\tpNext = " << value.pNext << '\n';
2930         s << "\tflags = " << getBufferCreateFlagsStr(value.flags) << '\n';
2931         s << "\tsize = " << value.size << '\n';
2932         s << "\tusage = " << getBufferUsageFlagsStr(value.usage) << '\n';
2933         s << "\tsharingMode = " << value.sharingMode << '\n';
2934         s << "\tqueueFamilyIndexCount = " << value.queueFamilyIndexCount << '\n';
2935         s << "\tpQueueFamilyIndices = " << value.pQueueFamilyIndices << '\n';
2936         s << '}';
2937         return s;
2938 }
2939
2940 std::ostream& operator<< (std::ostream& s, const VkBufferViewCreateInfo& value)
2941 {
2942         s << "VkBufferViewCreateInfo = {\n";
2943         s << "\tsType = " << value.sType << '\n';
2944         s << "\tpNext = " << value.pNext << '\n';
2945         s << "\tflags = " << getBufferViewCreateFlagsStr(value.flags) << '\n';
2946         s << "\tbuffer = " << value.buffer << '\n';
2947         s << "\tformat = " << value.format << '\n';
2948         s << "\toffset = " << value.offset << '\n';
2949         s << "\trange = " << value.range << '\n';
2950         s << '}';
2951         return s;
2952 }
2953
2954 std::ostream& operator<< (std::ostream& s, const VkImageCreateInfo& value)
2955 {
2956         s << "VkImageCreateInfo = {\n";
2957         s << "\tsType = " << value.sType << '\n';
2958         s << "\tpNext = " << value.pNext << '\n';
2959         s << "\tflags = " << getImageCreateFlagsStr(value.flags) << '\n';
2960         s << "\timageType = " << value.imageType << '\n';
2961         s << "\tformat = " << value.format << '\n';
2962         s << "\textent = " << value.extent << '\n';
2963         s << "\tmipLevels = " << value.mipLevels << '\n';
2964         s << "\tarrayLayers = " << value.arrayLayers << '\n';
2965         s << "\tsamples = " << value.samples << '\n';
2966         s << "\ttiling = " << value.tiling << '\n';
2967         s << "\tusage = " << getImageUsageFlagsStr(value.usage) << '\n';
2968         s << "\tsharingMode = " << value.sharingMode << '\n';
2969         s << "\tqueueFamilyIndexCount = " << value.queueFamilyIndexCount << '\n';
2970         s << "\tpQueueFamilyIndices = " << value.pQueueFamilyIndices << '\n';
2971         s << "\tinitialLayout = " << value.initialLayout << '\n';
2972         s << '}';
2973         return s;
2974 }
2975
2976 std::ostream& operator<< (std::ostream& s, const VkSubresourceLayout& value)
2977 {
2978         s << "VkSubresourceLayout = {\n";
2979         s << "\toffset = " << value.offset << '\n';
2980         s << "\tsize = " << value.size << '\n';
2981         s << "\trowPitch = " << value.rowPitch << '\n';
2982         s << "\tarrayPitch = " << value.arrayPitch << '\n';
2983         s << "\tdepthPitch = " << value.depthPitch << '\n';
2984         s << '}';
2985         return s;
2986 }
2987
2988 std::ostream& operator<< (std::ostream& s, const VkComponentMapping& value)
2989 {
2990         s << "VkComponentMapping = {\n";
2991         s << "\tr = " << value.r << '\n';
2992         s << "\tg = " << value.g << '\n';
2993         s << "\tb = " << value.b << '\n';
2994         s << "\ta = " << value.a << '\n';
2995         s << '}';
2996         return s;
2997 }
2998
2999 std::ostream& operator<< (std::ostream& s, const VkImageSubresourceRange& value)
3000 {
3001         s << "VkImageSubresourceRange = {\n";
3002         s << "\taspectMask = " << getImageAspectFlagsStr(value.aspectMask) << '\n';
3003         s << "\tbaseMipLevel = " << value.baseMipLevel << '\n';
3004         s << "\tlevelCount = " << value.levelCount << '\n';
3005         s << "\tbaseArrayLayer = " << value.baseArrayLayer << '\n';
3006         s << "\tlayerCount = " << value.layerCount << '\n';
3007         s << '}';
3008         return s;
3009 }
3010
3011 std::ostream& operator<< (std::ostream& s, const VkImageViewCreateInfo& value)
3012 {
3013         s << "VkImageViewCreateInfo = {\n";
3014         s << "\tsType = " << value.sType << '\n';
3015         s << "\tpNext = " << value.pNext << '\n';
3016         s << "\tflags = " << getImageViewCreateFlagsStr(value.flags) << '\n';
3017         s << "\timage = " << value.image << '\n';
3018         s << "\tviewType = " << value.viewType << '\n';
3019         s << "\tformat = " << value.format << '\n';
3020         s << "\tcomponents = " << value.components << '\n';
3021         s << "\tsubresourceRange = " << value.subresourceRange << '\n';
3022         s << '}';
3023         return s;
3024 }
3025
3026 std::ostream& operator<< (std::ostream& s, const VkShaderModuleCreateInfo& value)
3027 {
3028         s << "VkShaderModuleCreateInfo = {\n";
3029         s << "\tsType = " << value.sType << '\n';
3030         s << "\tpNext = " << value.pNext << '\n';
3031         s << "\tflags = " << getShaderModuleCreateFlagsStr(value.flags) << '\n';
3032         s << "\tcodeSize = " << value.codeSize << '\n';
3033         s << "\tpCode = " << value.pCode << '\n';
3034         s << '}';
3035         return s;
3036 }
3037
3038 std::ostream& operator<< (std::ostream& s, const VkPipelineCacheCreateInfo& value)
3039 {
3040         s << "VkPipelineCacheCreateInfo = {\n";
3041         s << "\tsType = " << value.sType << '\n';
3042         s << "\tpNext = " << value.pNext << '\n';
3043         s << "\tflags = " << getPipelineCacheCreateFlagsStr(value.flags) << '\n';
3044         s << "\tinitialDataSize = " << value.initialDataSize << '\n';
3045         s << "\tpInitialData = " << value.pInitialData << '\n';
3046         s << '}';
3047         return s;
3048 }
3049
3050 std::ostream& operator<< (std::ostream& s, const VkSpecializationMapEntry& value)
3051 {
3052         s << "VkSpecializationMapEntry = {\n";
3053         s << "\tconstantID = " << value.constantID << '\n';
3054         s << "\toffset = " << value.offset << '\n';
3055         s << "\tsize = " << value.size << '\n';
3056         s << '}';
3057         return s;
3058 }
3059
3060 std::ostream& operator<< (std::ostream& s, const VkSpecializationInfo& value)
3061 {
3062         s << "VkSpecializationInfo = {\n";
3063         s << "\tmapEntryCount = " << value.mapEntryCount << '\n';
3064         s << "\tpMapEntries = " << value.pMapEntries << '\n';
3065         s << "\tdataSize = " << value.dataSize << '\n';
3066         s << "\tpData = " << value.pData << '\n';
3067         s << '}';
3068         return s;
3069 }
3070
3071 std::ostream& operator<< (std::ostream& s, const VkPipelineShaderStageCreateInfo& value)
3072 {
3073         s << "VkPipelineShaderStageCreateInfo = {\n";
3074         s << "\tsType = " << value.sType << '\n';
3075         s << "\tpNext = " << value.pNext << '\n';
3076         s << "\tflags = " << getPipelineShaderStageCreateFlagsStr(value.flags) << '\n';
3077         s << "\tstage = " << value.stage << '\n';
3078         s << "\tmodule = " << value.module << '\n';
3079         s << "\tpName = " << getCharPtrStr(value.pName) << '\n';
3080         s << "\tpSpecializationInfo = " << value.pSpecializationInfo << '\n';
3081         s << '}';
3082         return s;
3083 }
3084
3085 std::ostream& operator<< (std::ostream& s, const VkVertexInputBindingDescription& value)
3086 {
3087         s << "VkVertexInputBindingDescription = {\n";
3088         s << "\tbinding = " << value.binding << '\n';
3089         s << "\tstride = " << value.stride << '\n';
3090         s << "\tinputRate = " << value.inputRate << '\n';
3091         s << '}';
3092         return s;
3093 }
3094
3095 std::ostream& operator<< (std::ostream& s, const VkVertexInputAttributeDescription& value)
3096 {
3097         s << "VkVertexInputAttributeDescription = {\n";
3098         s << "\tlocation = " << value.location << '\n';
3099         s << "\tbinding = " << value.binding << '\n';
3100         s << "\tformat = " << value.format << '\n';
3101         s << "\toffset = " << value.offset << '\n';
3102         s << '}';
3103         return s;
3104 }
3105
3106 std::ostream& operator<< (std::ostream& s, const VkPipelineVertexInputStateCreateInfo& value)
3107 {
3108         s << "VkPipelineVertexInputStateCreateInfo = {\n";
3109         s << "\tsType = " << value.sType << '\n';
3110         s << "\tpNext = " << value.pNext << '\n';
3111         s << "\tflags = " << getPipelineVertexInputStateCreateFlagsStr(value.flags) << '\n';
3112         s << "\tvertexBindingDescriptionCount = " << value.vertexBindingDescriptionCount << '\n';
3113         s << "\tpVertexBindingDescriptions = " << value.pVertexBindingDescriptions << '\n';
3114         s << "\tvertexAttributeDescriptionCount = " << value.vertexAttributeDescriptionCount << '\n';
3115         s << "\tpVertexAttributeDescriptions = " << value.pVertexAttributeDescriptions << '\n';
3116         s << '}';
3117         return s;
3118 }
3119
3120 std::ostream& operator<< (std::ostream& s, const VkPipelineInputAssemblyStateCreateInfo& value)
3121 {
3122         s << "VkPipelineInputAssemblyStateCreateInfo = {\n";
3123         s << "\tsType = " << value.sType << '\n';
3124         s << "\tpNext = " << value.pNext << '\n';
3125         s << "\tflags = " << getPipelineInputAssemblyStateCreateFlagsStr(value.flags) << '\n';
3126         s << "\ttopology = " << value.topology << '\n';
3127         s << "\tprimitiveRestartEnable = " << value.primitiveRestartEnable << '\n';
3128         s << '}';
3129         return s;
3130 }
3131
3132 std::ostream& operator<< (std::ostream& s, const VkPipelineTessellationStateCreateInfo& value)
3133 {
3134         s << "VkPipelineTessellationStateCreateInfo = {\n";
3135         s << "\tsType = " << value.sType << '\n';
3136         s << "\tpNext = " << value.pNext << '\n';
3137         s << "\tflags = " << getPipelineTessellationStateCreateFlagsStr(value.flags) << '\n';
3138         s << "\tpatchControlPoints = " << value.patchControlPoints << '\n';
3139         s << '}';
3140         return s;
3141 }
3142
3143 std::ostream& operator<< (std::ostream& s, const VkViewport& value)
3144 {
3145         s << "VkViewport = {\n";
3146         s << "\tx = " << value.x << '\n';
3147         s << "\ty = " << value.y << '\n';
3148         s << "\twidth = " << value.width << '\n';
3149         s << "\theight = " << value.height << '\n';
3150         s << "\tminDepth = " << value.minDepth << '\n';
3151         s << "\tmaxDepth = " << value.maxDepth << '\n';
3152         s << '}';
3153         return s;
3154 }
3155
3156 std::ostream& operator<< (std::ostream& s, const VkOffset2D& value)
3157 {
3158         s << "VkOffset2D = {\n";
3159         s << "\tx = " << value.x << '\n';
3160         s << "\ty = " << value.y << '\n';
3161         s << '}';
3162         return s;
3163 }
3164
3165 std::ostream& operator<< (std::ostream& s, const VkExtent2D& value)
3166 {
3167         s << "VkExtent2D = {\n";
3168         s << "\twidth = " << value.width << '\n';
3169         s << "\theight = " << value.height << '\n';
3170         s << '}';
3171         return s;
3172 }
3173
3174 std::ostream& operator<< (std::ostream& s, const VkRect2D& value)
3175 {
3176         s << "VkRect2D = {\n";
3177         s << "\toffset = " << value.offset << '\n';
3178         s << "\textent = " << value.extent << '\n';
3179         s << '}';
3180         return s;
3181 }
3182
3183 std::ostream& operator<< (std::ostream& s, const VkPipelineViewportStateCreateInfo& value)
3184 {
3185         s << "VkPipelineViewportStateCreateInfo = {\n";
3186         s << "\tsType = " << value.sType << '\n';
3187         s << "\tpNext = " << value.pNext << '\n';
3188         s << "\tflags = " << getPipelineViewportStateCreateFlagsStr(value.flags) << '\n';
3189         s << "\tviewportCount = " << value.viewportCount << '\n';
3190         s << "\tpViewports = " << value.pViewports << '\n';
3191         s << "\tscissorCount = " << value.scissorCount << '\n';
3192         s << "\tpScissors = " << value.pScissors << '\n';
3193         s << '}';
3194         return s;
3195 }
3196
3197 std::ostream& operator<< (std::ostream& s, const VkPipelineRasterizationStateCreateInfo& value)
3198 {
3199         s << "VkPipelineRasterizationStateCreateInfo = {\n";
3200         s << "\tsType = " << value.sType << '\n';
3201         s << "\tpNext = " << value.pNext << '\n';
3202         s << "\tflags = " << getPipelineRasterizationStateCreateFlagsStr(value.flags) << '\n';
3203         s << "\tdepthClampEnable = " << value.depthClampEnable << '\n';
3204         s << "\trasterizerDiscardEnable = " << value.rasterizerDiscardEnable << '\n';
3205         s << "\tpolygonMode = " << value.polygonMode << '\n';
3206         s << "\tcullMode = " << getCullModeFlagsStr(value.cullMode) << '\n';
3207         s << "\tfrontFace = " << value.frontFace << '\n';
3208         s << "\tdepthBiasEnable = " << value.depthBiasEnable << '\n';
3209         s << "\tdepthBiasConstantFactor = " << value.depthBiasConstantFactor << '\n';
3210         s << "\tdepthBiasClamp = " << value.depthBiasClamp << '\n';
3211         s << "\tdepthBiasSlopeFactor = " << value.depthBiasSlopeFactor << '\n';
3212         s << "\tlineWidth = " << value.lineWidth << '\n';
3213         s << '}';
3214         return s;
3215 }
3216
3217 std::ostream& operator<< (std::ostream& s, const VkPipelineMultisampleStateCreateInfo& value)
3218 {
3219         s << "VkPipelineMultisampleStateCreateInfo = {\n";
3220         s << "\tsType = " << value.sType << '\n';
3221         s << "\tpNext = " << value.pNext << '\n';
3222         s << "\tflags = " << getPipelineMultisampleStateCreateFlagsStr(value.flags) << '\n';
3223         s << "\trasterizationSamples = " << value.rasterizationSamples << '\n';
3224         s << "\tsampleShadingEnable = " << value.sampleShadingEnable << '\n';
3225         s << "\tminSampleShading = " << value.minSampleShading << '\n';
3226         s << "\tpSampleMask = " << value.pSampleMask << '\n';
3227         s << "\talphaToCoverageEnable = " << value.alphaToCoverageEnable << '\n';
3228         s << "\talphaToOneEnable = " << value.alphaToOneEnable << '\n';
3229         s << '}';
3230         return s;
3231 }
3232
3233 std::ostream& operator<< (std::ostream& s, const VkStencilOpState& value)
3234 {
3235         s << "VkStencilOpState = {\n";
3236         s << "\tfailOp = " << value.failOp << '\n';
3237         s << "\tpassOp = " << value.passOp << '\n';
3238         s << "\tdepthFailOp = " << value.depthFailOp << '\n';
3239         s << "\tcompareOp = " << value.compareOp << '\n';
3240         s << "\tcompareMask = " << value.compareMask << '\n';
3241         s << "\twriteMask = " << value.writeMask << '\n';
3242         s << "\treference = " << value.reference << '\n';
3243         s << '}';
3244         return s;
3245 }
3246
3247 std::ostream& operator<< (std::ostream& s, const VkPipelineDepthStencilStateCreateInfo& value)
3248 {
3249         s << "VkPipelineDepthStencilStateCreateInfo = {\n";
3250         s << "\tsType = " << value.sType << '\n';
3251         s << "\tpNext = " << value.pNext << '\n';
3252         s << "\tflags = " << getPipelineDepthStencilStateCreateFlagsStr(value.flags) << '\n';
3253         s << "\tdepthTestEnable = " << value.depthTestEnable << '\n';
3254         s << "\tdepthWriteEnable = " << value.depthWriteEnable << '\n';
3255         s << "\tdepthCompareOp = " << value.depthCompareOp << '\n';
3256         s << "\tdepthBoundsTestEnable = " << value.depthBoundsTestEnable << '\n';
3257         s << "\tstencilTestEnable = " << value.stencilTestEnable << '\n';
3258         s << "\tfront = " << value.front << '\n';
3259         s << "\tback = " << value.back << '\n';
3260         s << "\tminDepthBounds = " << value.minDepthBounds << '\n';
3261         s << "\tmaxDepthBounds = " << value.maxDepthBounds << '\n';
3262         s << '}';
3263         return s;
3264 }
3265
3266 std::ostream& operator<< (std::ostream& s, const VkPipelineColorBlendAttachmentState& value)
3267 {
3268         s << "VkPipelineColorBlendAttachmentState = {\n";
3269         s << "\tblendEnable = " << value.blendEnable << '\n';
3270         s << "\tsrcColorBlendFactor = " << value.srcColorBlendFactor << '\n';
3271         s << "\tdstColorBlendFactor = " << value.dstColorBlendFactor << '\n';
3272         s << "\tcolorBlendOp = " << value.colorBlendOp << '\n';
3273         s << "\tsrcAlphaBlendFactor = " << value.srcAlphaBlendFactor << '\n';
3274         s << "\tdstAlphaBlendFactor = " << value.dstAlphaBlendFactor << '\n';
3275         s << "\talphaBlendOp = " << value.alphaBlendOp << '\n';
3276         s << "\tcolorWriteMask = " << getColorComponentFlagsStr(value.colorWriteMask) << '\n';
3277         s << '}';
3278         return s;
3279 }
3280
3281 std::ostream& operator<< (std::ostream& s, const VkPipelineColorBlendStateCreateInfo& value)
3282 {
3283         s << "VkPipelineColorBlendStateCreateInfo = {\n";
3284         s << "\tsType = " << value.sType << '\n';
3285         s << "\tpNext = " << value.pNext << '\n';
3286         s << "\tflags = " << getPipelineColorBlendStateCreateFlagsStr(value.flags) << '\n';
3287         s << "\tlogicOpEnable = " << value.logicOpEnable << '\n';
3288         s << "\tlogicOp = " << value.logicOp << '\n';
3289         s << "\tattachmentCount = " << value.attachmentCount << '\n';
3290         s << "\tpAttachments = " << value.pAttachments << '\n';
3291         s << "\tblendConstants = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.blendConstants), DE_ARRAY_END(value.blendConstants)) << '\n';
3292         s << '}';
3293         return s;
3294 }
3295
3296 std::ostream& operator<< (std::ostream& s, const VkPipelineDynamicStateCreateInfo& value)
3297 {
3298         s << "VkPipelineDynamicStateCreateInfo = {\n";
3299         s << "\tsType = " << value.sType << '\n';
3300         s << "\tpNext = " << value.pNext << '\n';
3301         s << "\tflags = " << getPipelineDynamicStateCreateFlagsStr(value.flags) << '\n';
3302         s << "\tdynamicStateCount = " << value.dynamicStateCount << '\n';
3303         s << "\tpDynamicStates = " << value.pDynamicStates << '\n';
3304         s << '}';
3305         return s;
3306 }
3307
3308 std::ostream& operator<< (std::ostream& s, const VkGraphicsPipelineCreateInfo& value)
3309 {
3310         s << "VkGraphicsPipelineCreateInfo = {\n";
3311         s << "\tsType = " << value.sType << '\n';
3312         s << "\tpNext = " << value.pNext << '\n';
3313         s << "\tflags = " << getPipelineCreateFlagsStr(value.flags) << '\n';
3314         s << "\tstageCount = " << value.stageCount << '\n';
3315         s << "\tpStages = " << value.pStages << '\n';
3316         s << "\tpVertexInputState = " << value.pVertexInputState << '\n';
3317         s << "\tpInputAssemblyState = " << value.pInputAssemblyState << '\n';
3318         s << "\tpTessellationState = " << value.pTessellationState << '\n';
3319         s << "\tpViewportState = " << value.pViewportState << '\n';
3320         s << "\tpRasterizationState = " << value.pRasterizationState << '\n';
3321         s << "\tpMultisampleState = " << value.pMultisampleState << '\n';
3322         s << "\tpDepthStencilState = " << value.pDepthStencilState << '\n';
3323         s << "\tpColorBlendState = " << value.pColorBlendState << '\n';
3324         s << "\tpDynamicState = " << value.pDynamicState << '\n';
3325         s << "\tlayout = " << value.layout << '\n';
3326         s << "\trenderPass = " << value.renderPass << '\n';
3327         s << "\tsubpass = " << value.subpass << '\n';
3328         s << "\tbasePipelineHandle = " << value.basePipelineHandle << '\n';
3329         s << "\tbasePipelineIndex = " << value.basePipelineIndex << '\n';
3330         s << '}';
3331         return s;
3332 }
3333
3334 std::ostream& operator<< (std::ostream& s, const VkComputePipelineCreateInfo& value)
3335 {
3336         s << "VkComputePipelineCreateInfo = {\n";
3337         s << "\tsType = " << value.sType << '\n';
3338         s << "\tpNext = " << value.pNext << '\n';
3339         s << "\tflags = " << getPipelineCreateFlagsStr(value.flags) << '\n';
3340         s << "\tstage = " << value.stage << '\n';
3341         s << "\tlayout = " << value.layout << '\n';
3342         s << "\tbasePipelineHandle = " << value.basePipelineHandle << '\n';
3343         s << "\tbasePipelineIndex = " << value.basePipelineIndex << '\n';
3344         s << '}';
3345         return s;
3346 }
3347
3348 std::ostream& operator<< (std::ostream& s, const VkPushConstantRange& value)
3349 {
3350         s << "VkPushConstantRange = {\n";
3351         s << "\tstageFlags = " << getShaderStageFlagsStr(value.stageFlags) << '\n';
3352         s << "\toffset = " << value.offset << '\n';
3353         s << "\tsize = " << value.size << '\n';
3354         s << '}';
3355         return s;
3356 }
3357
3358 std::ostream& operator<< (std::ostream& s, const VkPipelineLayoutCreateInfo& value)
3359 {
3360         s << "VkPipelineLayoutCreateInfo = {\n";
3361         s << "\tsType = " << value.sType << '\n';
3362         s << "\tpNext = " << value.pNext << '\n';
3363         s << "\tflags = " << getPipelineLayoutCreateFlagsStr(value.flags) << '\n';
3364         s << "\tsetLayoutCount = " << value.setLayoutCount << '\n';
3365         s << "\tpSetLayouts = " << value.pSetLayouts << '\n';
3366         s << "\tpushConstantRangeCount = " << value.pushConstantRangeCount << '\n';
3367         s << "\tpPushConstantRanges = " << value.pPushConstantRanges << '\n';
3368         s << '}';
3369         return s;
3370 }
3371
3372 std::ostream& operator<< (std::ostream& s, const VkSamplerCreateInfo& value)
3373 {
3374         s << "VkSamplerCreateInfo = {\n";
3375         s << "\tsType = " << value.sType << '\n';
3376         s << "\tpNext = " << value.pNext << '\n';
3377         s << "\tflags = " << getSamplerCreateFlagsStr(value.flags) << '\n';
3378         s << "\tmagFilter = " << value.magFilter << '\n';
3379         s << "\tminFilter = " << value.minFilter << '\n';
3380         s << "\tmipmapMode = " << value.mipmapMode << '\n';
3381         s << "\taddressModeU = " << value.addressModeU << '\n';
3382         s << "\taddressModeV = " << value.addressModeV << '\n';
3383         s << "\taddressModeW = " << value.addressModeW << '\n';
3384         s << "\tmipLodBias = " << value.mipLodBias << '\n';
3385         s << "\tanisotropyEnable = " << value.anisotropyEnable << '\n';
3386         s << "\tmaxAnisotropy = " << value.maxAnisotropy << '\n';
3387         s << "\tcompareEnable = " << value.compareEnable << '\n';
3388         s << "\tcompareOp = " << value.compareOp << '\n';
3389         s << "\tminLod = " << value.minLod << '\n';
3390         s << "\tmaxLod = " << value.maxLod << '\n';
3391         s << "\tborderColor = " << value.borderColor << '\n';
3392         s << "\tunnormalizedCoordinates = " << value.unnormalizedCoordinates << '\n';
3393         s << '}';
3394         return s;
3395 }
3396
3397 std::ostream& operator<< (std::ostream& s, const VkDescriptorSetLayoutBinding& value)
3398 {
3399         s << "VkDescriptorSetLayoutBinding = {\n";
3400         s << "\tbinding = " << value.binding << '\n';
3401         s << "\tdescriptorType = " << value.descriptorType << '\n';
3402         s << "\tdescriptorCount = " << value.descriptorCount << '\n';
3403         s << "\tstageFlags = " << getShaderStageFlagsStr(value.stageFlags) << '\n';
3404         s << "\tpImmutableSamplers = " << value.pImmutableSamplers << '\n';
3405         s << '}';
3406         return s;
3407 }
3408
3409 std::ostream& operator<< (std::ostream& s, const VkDescriptorSetLayoutCreateInfo& value)
3410 {
3411         s << "VkDescriptorSetLayoutCreateInfo = {\n";
3412         s << "\tsType = " << value.sType << '\n';
3413         s << "\tpNext = " << value.pNext << '\n';
3414         s << "\tflags = " << getDescriptorSetLayoutCreateFlagsStr(value.flags) << '\n';
3415         s << "\tbindingCount = " << value.bindingCount << '\n';
3416         s << "\tpBindings = " << value.pBindings << '\n';
3417         s << '}';
3418         return s;
3419 }
3420
3421 std::ostream& operator<< (std::ostream& s, const VkDescriptorPoolSize& value)
3422 {
3423         s << "VkDescriptorPoolSize = {\n";
3424         s << "\ttype = " << value.type << '\n';
3425         s << "\tdescriptorCount = " << value.descriptorCount << '\n';
3426         s << '}';
3427         return s;
3428 }
3429
3430 std::ostream& operator<< (std::ostream& s, const VkDescriptorPoolCreateInfo& value)
3431 {
3432         s << "VkDescriptorPoolCreateInfo = {\n";
3433         s << "\tsType = " << value.sType << '\n';
3434         s << "\tpNext = " << value.pNext << '\n';
3435         s << "\tflags = " << getDescriptorPoolCreateFlagsStr(value.flags) << '\n';
3436         s << "\tmaxSets = " << value.maxSets << '\n';
3437         s << "\tpoolSizeCount = " << value.poolSizeCount << '\n';
3438         s << "\tpPoolSizes = " << value.pPoolSizes << '\n';
3439         s << '}';
3440         return s;
3441 }
3442
3443 std::ostream& operator<< (std::ostream& s, const VkDescriptorSetAllocateInfo& value)
3444 {
3445         s << "VkDescriptorSetAllocateInfo = {\n";
3446         s << "\tsType = " << value.sType << '\n';
3447         s << "\tpNext = " << value.pNext << '\n';
3448         s << "\tdescriptorPool = " << value.descriptorPool << '\n';
3449         s << "\tdescriptorSetCount = " << value.descriptorSetCount << '\n';
3450         s << "\tpSetLayouts = " << value.pSetLayouts << '\n';
3451         s << '}';
3452         return s;
3453 }
3454
3455 std::ostream& operator<< (std::ostream& s, const VkDescriptorImageInfo& value)
3456 {
3457         s << "VkDescriptorImageInfo = {\n";
3458         s << "\tsampler = " << value.sampler << '\n';
3459         s << "\timageView = " << value.imageView << '\n';
3460         s << "\timageLayout = " << value.imageLayout << '\n';
3461         s << '}';
3462         return s;
3463 }
3464
3465 std::ostream& operator<< (std::ostream& s, const VkDescriptorBufferInfo& value)
3466 {
3467         s << "VkDescriptorBufferInfo = {\n";
3468         s << "\tbuffer = " << value.buffer << '\n';
3469         s << "\toffset = " << value.offset << '\n';
3470         s << "\trange = " << value.range << '\n';
3471         s << '}';
3472         return s;
3473 }
3474
3475 std::ostream& operator<< (std::ostream& s, const VkWriteDescriptorSet& value)
3476 {
3477         s << "VkWriteDescriptorSet = {\n";
3478         s << "\tsType = " << value.sType << '\n';
3479         s << "\tpNext = " << value.pNext << '\n';
3480         s << "\tdstSet = " << value.dstSet << '\n';
3481         s << "\tdstBinding = " << value.dstBinding << '\n';
3482         s << "\tdstArrayElement = " << value.dstArrayElement << '\n';
3483         s << "\tdescriptorCount = " << value.descriptorCount << '\n';
3484         s << "\tdescriptorType = " << value.descriptorType << '\n';
3485         s << "\tpImageInfo = " << value.pImageInfo << '\n';
3486         s << "\tpBufferInfo = " << value.pBufferInfo << '\n';
3487         s << "\tpTexelBufferView = " << value.pTexelBufferView << '\n';
3488         s << '}';
3489         return s;
3490 }
3491
3492 std::ostream& operator<< (std::ostream& s, const VkCopyDescriptorSet& value)
3493 {
3494         s << "VkCopyDescriptorSet = {\n";
3495         s << "\tsType = " << value.sType << '\n';
3496         s << "\tpNext = " << value.pNext << '\n';
3497         s << "\tsrcSet = " << value.srcSet << '\n';
3498         s << "\tsrcBinding = " << value.srcBinding << '\n';
3499         s << "\tsrcArrayElement = " << value.srcArrayElement << '\n';
3500         s << "\tdstSet = " << value.dstSet << '\n';
3501         s << "\tdstBinding = " << value.dstBinding << '\n';
3502         s << "\tdstArrayElement = " << value.dstArrayElement << '\n';
3503         s << "\tdescriptorCount = " << value.descriptorCount << '\n';
3504         s << '}';
3505         return s;
3506 }
3507
3508 std::ostream& operator<< (std::ostream& s, const VkFramebufferCreateInfo& value)
3509 {
3510         s << "VkFramebufferCreateInfo = {\n";
3511         s << "\tsType = " << value.sType << '\n';
3512         s << "\tpNext = " << value.pNext << '\n';
3513         s << "\tflags = " << getFramebufferCreateFlagsStr(value.flags) << '\n';
3514         s << "\trenderPass = " << value.renderPass << '\n';
3515         s << "\tattachmentCount = " << value.attachmentCount << '\n';
3516         s << "\tpAttachments = " << value.pAttachments << '\n';
3517         s << "\twidth = " << value.width << '\n';
3518         s << "\theight = " << value.height << '\n';
3519         s << "\tlayers = " << value.layers << '\n';
3520         s << '}';
3521         return s;
3522 }
3523
3524 std::ostream& operator<< (std::ostream& s, const VkAttachmentDescription& value)
3525 {
3526         s << "VkAttachmentDescription = {\n";
3527         s << "\tflags = " << getAttachmentDescriptionFlagsStr(value.flags) << '\n';
3528         s << "\tformat = " << value.format << '\n';
3529         s << "\tsamples = " << value.samples << '\n';
3530         s << "\tloadOp = " << value.loadOp << '\n';
3531         s << "\tstoreOp = " << value.storeOp << '\n';
3532         s << "\tstencilLoadOp = " << value.stencilLoadOp << '\n';
3533         s << "\tstencilStoreOp = " << value.stencilStoreOp << '\n';
3534         s << "\tinitialLayout = " << value.initialLayout << '\n';
3535         s << "\tfinalLayout = " << value.finalLayout << '\n';
3536         s << '}';
3537         return s;
3538 }
3539
3540 std::ostream& operator<< (std::ostream& s, const VkAttachmentReference& value)
3541 {
3542         s << "VkAttachmentReference = {\n";
3543         s << "\tattachment = " << value.attachment << '\n';
3544         s << "\tlayout = " << value.layout << '\n';
3545         s << '}';
3546         return s;
3547 }
3548
3549 std::ostream& operator<< (std::ostream& s, const VkSubpassDescription& value)
3550 {
3551         s << "VkSubpassDescription = {\n";
3552         s << "\tflags = " << getSubpassDescriptionFlagsStr(value.flags) << '\n';
3553         s << "\tpipelineBindPoint = " << value.pipelineBindPoint << '\n';
3554         s << "\tinputAttachmentCount = " << value.inputAttachmentCount << '\n';
3555         s << "\tpInputAttachments = " << value.pInputAttachments << '\n';
3556         s << "\tcolorAttachmentCount = " << value.colorAttachmentCount << '\n';
3557         s << "\tpColorAttachments = " << value.pColorAttachments << '\n';
3558         s << "\tpResolveAttachments = " << value.pResolveAttachments << '\n';
3559         s << "\tpDepthStencilAttachment = " << value.pDepthStencilAttachment << '\n';
3560         s << "\tpreserveAttachmentCount = " << value.preserveAttachmentCount << '\n';
3561         s << "\tpPreserveAttachments = " << value.pPreserveAttachments << '\n';
3562         s << '}';
3563         return s;
3564 }
3565
3566 std::ostream& operator<< (std::ostream& s, const VkSubpassDependency& value)
3567 {
3568         s << "VkSubpassDependency = {\n";
3569         s << "\tsrcSubpass = " << value.srcSubpass << '\n';
3570         s << "\tdstSubpass = " << value.dstSubpass << '\n';
3571         s << "\tsrcStageMask = " << getPipelineStageFlagsStr(value.srcStageMask) << '\n';
3572         s << "\tdstStageMask = " << getPipelineStageFlagsStr(value.dstStageMask) << '\n';
3573         s << "\tsrcAccessMask = " << getAccessFlagsStr(value.srcAccessMask) << '\n';
3574         s << "\tdstAccessMask = " << getAccessFlagsStr(value.dstAccessMask) << '\n';
3575         s << "\tdependencyFlags = " << getDependencyFlagsStr(value.dependencyFlags) << '\n';
3576         s << '}';
3577         return s;
3578 }
3579
3580 std::ostream& operator<< (std::ostream& s, const VkRenderPassCreateInfo& value)
3581 {
3582         s << "VkRenderPassCreateInfo = {\n";
3583         s << "\tsType = " << value.sType << '\n';
3584         s << "\tpNext = " << value.pNext << '\n';
3585         s << "\tflags = " << getRenderPassCreateFlagsStr(value.flags) << '\n';
3586         s << "\tattachmentCount = " << value.attachmentCount << '\n';
3587         s << "\tpAttachments = " << value.pAttachments << '\n';
3588         s << "\tsubpassCount = " << value.subpassCount << '\n';
3589         s << "\tpSubpasses = " << value.pSubpasses << '\n';
3590         s << "\tdependencyCount = " << value.dependencyCount << '\n';
3591         s << "\tpDependencies = " << value.pDependencies << '\n';
3592         s << '}';
3593         return s;
3594 }
3595
3596 std::ostream& operator<< (std::ostream& s, const VkCommandPoolCreateInfo& value)
3597 {
3598         s << "VkCommandPoolCreateInfo = {\n";
3599         s << "\tsType = " << value.sType << '\n';
3600         s << "\tpNext = " << value.pNext << '\n';
3601         s << "\tflags = " << getCommandPoolCreateFlagsStr(value.flags) << '\n';
3602         s << "\tqueueFamilyIndex = " << value.queueFamilyIndex << '\n';
3603         s << '}';
3604         return s;
3605 }
3606
3607 std::ostream& operator<< (std::ostream& s, const VkCommandBufferAllocateInfo& value)
3608 {
3609         s << "VkCommandBufferAllocateInfo = {\n";
3610         s << "\tsType = " << value.sType << '\n';
3611         s << "\tpNext = " << value.pNext << '\n';
3612         s << "\tcommandPool = " << value.commandPool << '\n';
3613         s << "\tlevel = " << value.level << '\n';
3614         s << "\tcommandBufferCount = " << value.commandBufferCount << '\n';
3615         s << '}';
3616         return s;
3617 }
3618
3619 std::ostream& operator<< (std::ostream& s, const VkCommandBufferInheritanceInfo& value)
3620 {
3621         s << "VkCommandBufferInheritanceInfo = {\n";
3622         s << "\tsType = " << value.sType << '\n';
3623         s << "\tpNext = " << value.pNext << '\n';
3624         s << "\trenderPass = " << value.renderPass << '\n';
3625         s << "\tsubpass = " << value.subpass << '\n';
3626         s << "\tframebuffer = " << value.framebuffer << '\n';
3627         s << "\tocclusionQueryEnable = " << value.occlusionQueryEnable << '\n';
3628         s << "\tqueryFlags = " << getQueryControlFlagsStr(value.queryFlags) << '\n';
3629         s << "\tpipelineStatistics = " << getQueryPipelineStatisticFlagsStr(value.pipelineStatistics) << '\n';
3630         s << '}';
3631         return s;
3632 }
3633
3634 std::ostream& operator<< (std::ostream& s, const VkCommandBufferBeginInfo& value)
3635 {
3636         s << "VkCommandBufferBeginInfo = {\n";
3637         s << "\tsType = " << value.sType << '\n';
3638         s << "\tpNext = " << value.pNext << '\n';
3639         s << "\tflags = " << getCommandBufferUsageFlagsStr(value.flags) << '\n';
3640         s << "\tpInheritanceInfo = " << value.pInheritanceInfo << '\n';
3641         s << '}';
3642         return s;
3643 }
3644
3645 std::ostream& operator<< (std::ostream& s, const VkBufferCopy& value)
3646 {
3647         s << "VkBufferCopy = {\n";
3648         s << "\tsrcOffset = " << value.srcOffset << '\n';
3649         s << "\tdstOffset = " << value.dstOffset << '\n';
3650         s << "\tsize = " << value.size << '\n';
3651         s << '}';
3652         return s;
3653 }
3654
3655 std::ostream& operator<< (std::ostream& s, const VkImageSubresourceLayers& value)
3656 {
3657         s << "VkImageSubresourceLayers = {\n";
3658         s << "\taspectMask = " << getImageAspectFlagsStr(value.aspectMask) << '\n';
3659         s << "\tmipLevel = " << value.mipLevel << '\n';
3660         s << "\tbaseArrayLayer = " << value.baseArrayLayer << '\n';
3661         s << "\tlayerCount = " << value.layerCount << '\n';
3662         s << '}';
3663         return s;
3664 }
3665
3666 std::ostream& operator<< (std::ostream& s, const VkImageCopy& value)
3667 {
3668         s << "VkImageCopy = {\n";
3669         s << "\tsrcSubresource = " << value.srcSubresource << '\n';
3670         s << "\tsrcOffset = " << value.srcOffset << '\n';
3671         s << "\tdstSubresource = " << value.dstSubresource << '\n';
3672         s << "\tdstOffset = " << value.dstOffset << '\n';
3673         s << "\textent = " << value.extent << '\n';
3674         s << '}';
3675         return s;
3676 }
3677
3678 std::ostream& operator<< (std::ostream& s, const VkImageBlit& value)
3679 {
3680         s << "VkImageBlit = {\n";
3681         s << "\tsrcSubresource = " << value.srcSubresource << '\n';
3682         s << "\tsrcOffsets = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.srcOffsets), DE_ARRAY_END(value.srcOffsets)) << '\n';
3683         s << "\tdstSubresource = " << value.dstSubresource << '\n';
3684         s << "\tdstOffsets = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.dstOffsets), DE_ARRAY_END(value.dstOffsets)) << '\n';
3685         s << '}';
3686         return s;
3687 }
3688
3689 std::ostream& operator<< (std::ostream& s, const VkBufferImageCopy& value)
3690 {
3691         s << "VkBufferImageCopy = {\n";
3692         s << "\tbufferOffset = " << value.bufferOffset << '\n';
3693         s << "\tbufferRowLength = " << value.bufferRowLength << '\n';
3694         s << "\tbufferImageHeight = " << value.bufferImageHeight << '\n';
3695         s << "\timageSubresource = " << value.imageSubresource << '\n';
3696         s << "\timageOffset = " << value.imageOffset << '\n';
3697         s << "\timageExtent = " << value.imageExtent << '\n';
3698         s << '}';
3699         return s;
3700 }
3701
3702 std::ostream& operator<< (std::ostream& s, const VkClearColorValue& value)
3703 {
3704         s << "VkClearColorValue = {\n";
3705         s << "\tfloat32 = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.float32), DE_ARRAY_END(value.float32)) << '\n';
3706         s << "\tint32 = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.int32), DE_ARRAY_END(value.int32)) << '\n';
3707         s << "\tuint32 = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.uint32), DE_ARRAY_END(value.uint32)) << '\n';
3708         s << '}';
3709         return s;
3710 }
3711
3712 std::ostream& operator<< (std::ostream& s, const VkClearDepthStencilValue& value)
3713 {
3714         s << "VkClearDepthStencilValue = {\n";
3715         s << "\tdepth = " << value.depth << '\n';
3716         s << "\tstencil = " << value.stencil << '\n';
3717         s << '}';
3718         return s;
3719 }
3720
3721 std::ostream& operator<< (std::ostream& s, const VkClearValue& value)
3722 {
3723         s << "VkClearValue = {\n";
3724         s << "\tcolor = " << value.color << '\n';
3725         s << "\tdepthStencil = " << value.depthStencil << '\n';
3726         s << '}';
3727         return s;
3728 }
3729
3730 std::ostream& operator<< (std::ostream& s, const VkClearAttachment& value)
3731 {
3732         s << "VkClearAttachment = {\n";
3733         s << "\taspectMask = " << getImageAspectFlagsStr(value.aspectMask) << '\n';
3734         s << "\tcolorAttachment = " << value.colorAttachment << '\n';
3735         s << "\tclearValue = " << value.clearValue << '\n';
3736         s << '}';
3737         return s;
3738 }
3739
3740 std::ostream& operator<< (std::ostream& s, const VkClearRect& value)
3741 {
3742         s << "VkClearRect = {\n";
3743         s << "\trect = " << value.rect << '\n';
3744         s << "\tbaseArrayLayer = " << value.baseArrayLayer << '\n';
3745         s << "\tlayerCount = " << value.layerCount << '\n';
3746         s << '}';
3747         return s;
3748 }
3749
3750 std::ostream& operator<< (std::ostream& s, const VkImageResolve& value)
3751 {
3752         s << "VkImageResolve = {\n";
3753         s << "\tsrcSubresource = " << value.srcSubresource << '\n';
3754         s << "\tsrcOffset = " << value.srcOffset << '\n';
3755         s << "\tdstSubresource = " << value.dstSubresource << '\n';
3756         s << "\tdstOffset = " << value.dstOffset << '\n';
3757         s << "\textent = " << value.extent << '\n';
3758         s << '}';
3759         return s;
3760 }
3761
3762 std::ostream& operator<< (std::ostream& s, const VkMemoryBarrier& value)
3763 {
3764         s << "VkMemoryBarrier = {\n";
3765         s << "\tsType = " << value.sType << '\n';
3766         s << "\tpNext = " << value.pNext << '\n';
3767         s << "\tsrcAccessMask = " << getAccessFlagsStr(value.srcAccessMask) << '\n';
3768         s << "\tdstAccessMask = " << getAccessFlagsStr(value.dstAccessMask) << '\n';
3769         s << '}';
3770         return s;
3771 }
3772
3773 std::ostream& operator<< (std::ostream& s, const VkBufferMemoryBarrier& value)
3774 {
3775         s << "VkBufferMemoryBarrier = {\n";
3776         s << "\tsType = " << value.sType << '\n';
3777         s << "\tpNext = " << value.pNext << '\n';
3778         s << "\tsrcAccessMask = " << getAccessFlagsStr(value.srcAccessMask) << '\n';
3779         s << "\tdstAccessMask = " << getAccessFlagsStr(value.dstAccessMask) << '\n';
3780         s << "\tsrcQueueFamilyIndex = " << value.srcQueueFamilyIndex << '\n';
3781         s << "\tdstQueueFamilyIndex = " << value.dstQueueFamilyIndex << '\n';
3782         s << "\tbuffer = " << value.buffer << '\n';
3783         s << "\toffset = " << value.offset << '\n';
3784         s << "\tsize = " << value.size << '\n';
3785         s << '}';
3786         return s;
3787 }
3788
3789 std::ostream& operator<< (std::ostream& s, const VkImageMemoryBarrier& value)
3790 {
3791         s << "VkImageMemoryBarrier = {\n";
3792         s << "\tsType = " << value.sType << '\n';
3793         s << "\tpNext = " << value.pNext << '\n';
3794         s << "\tsrcAccessMask = " << getAccessFlagsStr(value.srcAccessMask) << '\n';
3795         s << "\tdstAccessMask = " << getAccessFlagsStr(value.dstAccessMask) << '\n';
3796         s << "\toldLayout = " << value.oldLayout << '\n';
3797         s << "\tnewLayout = " << value.newLayout << '\n';
3798         s << "\tsrcQueueFamilyIndex = " << value.srcQueueFamilyIndex << '\n';
3799         s << "\tdstQueueFamilyIndex = " << value.dstQueueFamilyIndex << '\n';
3800         s << "\timage = " << value.image << '\n';
3801         s << "\tsubresourceRange = " << value.subresourceRange << '\n';
3802         s << '}';
3803         return s;
3804 }
3805
3806 std::ostream& operator<< (std::ostream& s, const VkRenderPassBeginInfo& value)
3807 {
3808         s << "VkRenderPassBeginInfo = {\n";
3809         s << "\tsType = " << value.sType << '\n';
3810         s << "\tpNext = " << value.pNext << '\n';
3811         s << "\trenderPass = " << value.renderPass << '\n';
3812         s << "\tframebuffer = " << value.framebuffer << '\n';
3813         s << "\trenderArea = " << value.renderArea << '\n';
3814         s << "\tclearValueCount = " << value.clearValueCount << '\n';
3815         s << "\tpClearValues = " << value.pClearValues << '\n';
3816         s << '}';
3817         return s;
3818 }
3819
3820 std::ostream& operator<< (std::ostream& s, const VkDispatchIndirectCommand& value)
3821 {
3822         s << "VkDispatchIndirectCommand = {\n";
3823         s << "\tx = " << value.x << '\n';
3824         s << "\ty = " << value.y << '\n';
3825         s << "\tz = " << value.z << '\n';
3826         s << '}';
3827         return s;
3828 }
3829
3830 std::ostream& operator<< (std::ostream& s, const VkDrawIndexedIndirectCommand& value)
3831 {
3832         s << "VkDrawIndexedIndirectCommand = {\n";
3833         s << "\tindexCount = " << value.indexCount << '\n';
3834         s << "\tinstanceCount = " << value.instanceCount << '\n';
3835         s << "\tfirstIndex = " << value.firstIndex << '\n';
3836         s << "\tvertexOffset = " << value.vertexOffset << '\n';
3837         s << "\tfirstInstance = " << value.firstInstance << '\n';
3838         s << '}';
3839         return s;
3840 }
3841
3842 std::ostream& operator<< (std::ostream& s, const VkDrawIndirectCommand& value)
3843 {
3844         s << "VkDrawIndirectCommand = {\n";
3845         s << "\tvertexCount = " << value.vertexCount << '\n';
3846         s << "\tinstanceCount = " << value.instanceCount << '\n';
3847         s << "\tfirstVertex = " << value.firstVertex << '\n';
3848         s << "\tfirstInstance = " << value.firstInstance << '\n';
3849         s << '}';
3850         return s;
3851 }
3852
3853 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceSubgroupProperties& value)
3854 {
3855         s << "VkPhysicalDeviceSubgroupProperties = {\n";
3856         s << "\tsType = " << value.sType << '\n';
3857         s << "\tpNext = " << value.pNext << '\n';
3858         s << "\tsubgroupSize = " << value.subgroupSize << '\n';
3859         s << "\tsupportedStages = " << getShaderStageFlagsStr(value.supportedStages) << '\n';
3860         s << "\tsupportedOperations = " << getSubgroupFeatureFlagsStr(value.supportedOperations) << '\n';
3861         s << "\tquadOperationsInAllStages = " << value.quadOperationsInAllStages << '\n';
3862         s << '}';
3863         return s;
3864 }
3865
3866 std::ostream& operator<< (std::ostream& s, const VkBindBufferMemoryInfo& value)
3867 {
3868         s << "VkBindBufferMemoryInfo = {\n";
3869         s << "\tsType = " << value.sType << '\n';
3870         s << "\tpNext = " << value.pNext << '\n';
3871         s << "\tbuffer = " << value.buffer << '\n';
3872         s << "\tmemory = " << value.memory << '\n';
3873         s << "\tmemoryOffset = " << value.memoryOffset << '\n';
3874         s << '}';
3875         return s;
3876 }
3877
3878 std::ostream& operator<< (std::ostream& s, const VkBindImageMemoryInfo& value)
3879 {
3880         s << "VkBindImageMemoryInfo = {\n";
3881         s << "\tsType = " << value.sType << '\n';
3882         s << "\tpNext = " << value.pNext << '\n';
3883         s << "\timage = " << value.image << '\n';
3884         s << "\tmemory = " << value.memory << '\n';
3885         s << "\tmemoryOffset = " << value.memoryOffset << '\n';
3886         s << '}';
3887         return s;
3888 }
3889
3890 std::ostream& operator<< (std::ostream& s, const VkPhysicalDevice8BitStorageFeaturesKHR& value)
3891 {
3892         s << "VkPhysicalDevice8BitStorageFeaturesKHR = {\n";
3893         s << "\tsType = " << value.sType << '\n';
3894         s << "\tpNext = " << value.pNext << '\n';
3895         s << "\tstorageBuffer8BitAccess = " << value.storageBuffer8BitAccess << '\n';
3896         s << "\tuniformAndStorageBuffer8BitAccess = " << value.uniformAndStorageBuffer8BitAccess << '\n';
3897         s << "\tstoragePushConstant8 = " << value.storagePushConstant8 << '\n';
3898         s << '}';
3899         return s;
3900 }
3901
3902 std::ostream& operator<< (std::ostream& s, const VkPhysicalDevice16BitStorageFeatures& value)
3903 {
3904         s << "VkPhysicalDevice16BitStorageFeatures = {\n";
3905         s << "\tsType = " << value.sType << '\n';
3906         s << "\tpNext = " << value.pNext << '\n';
3907         s << "\tstorageBuffer16BitAccess = " << value.storageBuffer16BitAccess << '\n';
3908         s << "\tuniformAndStorageBuffer16BitAccess = " << value.uniformAndStorageBuffer16BitAccess << '\n';
3909         s << "\tstoragePushConstant16 = " << value.storagePushConstant16 << '\n';
3910         s << "\tstorageInputOutput16 = " << value.storageInputOutput16 << '\n';
3911         s << '}';
3912         return s;
3913 }
3914
3915 std::ostream& operator<< (std::ostream& s, const VkMemoryDedicatedRequirements& value)
3916 {
3917         s << "VkMemoryDedicatedRequirements = {\n";
3918         s << "\tsType = " << value.sType << '\n';
3919         s << "\tpNext = " << value.pNext << '\n';
3920         s << "\tprefersDedicatedAllocation = " << value.prefersDedicatedAllocation << '\n';
3921         s << "\trequiresDedicatedAllocation = " << value.requiresDedicatedAllocation << '\n';
3922         s << '}';
3923         return s;
3924 }
3925
3926 std::ostream& operator<< (std::ostream& s, const VkMemoryDedicatedAllocateInfo& value)
3927 {
3928         s << "VkMemoryDedicatedAllocateInfo = {\n";
3929         s << "\tsType = " << value.sType << '\n';
3930         s << "\tpNext = " << value.pNext << '\n';
3931         s << "\timage = " << value.image << '\n';
3932         s << "\tbuffer = " << value.buffer << '\n';
3933         s << '}';
3934         return s;
3935 }
3936
3937 std::ostream& operator<< (std::ostream& s, const VkMemoryAllocateFlagsInfo& value)
3938 {
3939         s << "VkMemoryAllocateFlagsInfo = {\n";
3940         s << "\tsType = " << value.sType << '\n';
3941         s << "\tpNext = " << value.pNext << '\n';
3942         s << "\tflags = " << getMemoryAllocateFlagsStr(value.flags) << '\n';
3943         s << "\tdeviceMask = " << value.deviceMask << '\n';
3944         s << '}';
3945         return s;
3946 }
3947
3948 std::ostream& operator<< (std::ostream& s, const VkDeviceGroupRenderPassBeginInfo& value)
3949 {
3950         s << "VkDeviceGroupRenderPassBeginInfo = {\n";
3951         s << "\tsType = " << value.sType << '\n';
3952         s << "\tpNext = " << value.pNext << '\n';
3953         s << "\tdeviceMask = " << value.deviceMask << '\n';
3954         s << "\tdeviceRenderAreaCount = " << value.deviceRenderAreaCount << '\n';
3955         s << "\tpDeviceRenderAreas = " << value.pDeviceRenderAreas << '\n';
3956         s << '}';
3957         return s;
3958 }
3959
3960 std::ostream& operator<< (std::ostream& s, const VkDeviceGroupCommandBufferBeginInfo& value)
3961 {
3962         s << "VkDeviceGroupCommandBufferBeginInfo = {\n";
3963         s << "\tsType = " << value.sType << '\n';
3964         s << "\tpNext = " << value.pNext << '\n';
3965         s << "\tdeviceMask = " << value.deviceMask << '\n';
3966         s << '}';
3967         return s;
3968 }
3969
3970 std::ostream& operator<< (std::ostream& s, const VkDeviceGroupSubmitInfo& value)
3971 {
3972         s << "VkDeviceGroupSubmitInfo = {\n";
3973         s << "\tsType = " << value.sType << '\n';
3974         s << "\tpNext = " << value.pNext << '\n';
3975         s << "\twaitSemaphoreCount = " << value.waitSemaphoreCount << '\n';
3976         s << "\tpWaitSemaphoreDeviceIndices = " << value.pWaitSemaphoreDeviceIndices << '\n';
3977         s << "\tcommandBufferCount = " << value.commandBufferCount << '\n';
3978         s << "\tpCommandBufferDeviceMasks = " << value.pCommandBufferDeviceMasks << '\n';
3979         s << "\tsignalSemaphoreCount = " << value.signalSemaphoreCount << '\n';
3980         s << "\tpSignalSemaphoreDeviceIndices = " << value.pSignalSemaphoreDeviceIndices << '\n';
3981         s << '}';
3982         return s;
3983 }
3984
3985 std::ostream& operator<< (std::ostream& s, const VkDeviceGroupBindSparseInfo& value)
3986 {
3987         s << "VkDeviceGroupBindSparseInfo = {\n";
3988         s << "\tsType = " << value.sType << '\n';
3989         s << "\tpNext = " << value.pNext << '\n';
3990         s << "\tresourceDeviceIndex = " << value.resourceDeviceIndex << '\n';
3991         s << "\tmemoryDeviceIndex = " << value.memoryDeviceIndex << '\n';
3992         s << '}';
3993         return s;
3994 }
3995
3996 std::ostream& operator<< (std::ostream& s, const VkBindBufferMemoryDeviceGroupInfo& value)
3997 {
3998         s << "VkBindBufferMemoryDeviceGroupInfo = {\n";
3999         s << "\tsType = " << value.sType << '\n';
4000         s << "\tpNext = " << value.pNext << '\n';
4001         s << "\tdeviceIndexCount = " << value.deviceIndexCount << '\n';
4002         s << "\tpDeviceIndices = " << value.pDeviceIndices << '\n';
4003         s << '}';
4004         return s;
4005 }
4006
4007 std::ostream& operator<< (std::ostream& s, const VkBindImageMemoryDeviceGroupInfo& value)
4008 {
4009         s << "VkBindImageMemoryDeviceGroupInfo = {\n";
4010         s << "\tsType = " << value.sType << '\n';
4011         s << "\tpNext = " << value.pNext << '\n';
4012         s << "\tdeviceIndexCount = " << value.deviceIndexCount << '\n';
4013         s << "\tpDeviceIndices = " << value.pDeviceIndices << '\n';
4014         s << "\tSFRRectCount = " << value.SFRRectCount << '\n';
4015         s << "\tpSFRRects = " << value.pSFRRects << '\n';
4016         s << '}';
4017         return s;
4018 }
4019
4020 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceGroupProperties& value)
4021 {
4022         s << "VkPhysicalDeviceGroupProperties = {\n";
4023         s << "\tsType = " << value.sType << '\n';
4024         s << "\tpNext = " << value.pNext << '\n';
4025         s << "\tphysicalDeviceCount = " << value.physicalDeviceCount << '\n';
4026         s << "\tphysicalDevices = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.physicalDevices), DE_ARRAY_END(value.physicalDevices)) << '\n';
4027         s << "\tsubsetAllocation = " << value.subsetAllocation << '\n';
4028         s << '}';
4029         return s;
4030 }
4031
4032 std::ostream& operator<< (std::ostream& s, const VkDeviceGroupDeviceCreateInfo& value)
4033 {
4034         s << "VkDeviceGroupDeviceCreateInfo = {\n";
4035         s << "\tsType = " << value.sType << '\n';
4036         s << "\tpNext = " << value.pNext << '\n';
4037         s << "\tphysicalDeviceCount = " << value.physicalDeviceCount << '\n';
4038         s << "\tpPhysicalDevices = " << value.pPhysicalDevices << '\n';
4039         s << '}';
4040         return s;
4041 }
4042
4043 std::ostream& operator<< (std::ostream& s, const VkBufferMemoryRequirementsInfo2& value)
4044 {
4045         s << "VkBufferMemoryRequirementsInfo2 = {\n";
4046         s << "\tsType = " << value.sType << '\n';
4047         s << "\tpNext = " << value.pNext << '\n';
4048         s << "\tbuffer = " << value.buffer << '\n';
4049         s << '}';
4050         return s;
4051 }
4052
4053 std::ostream& operator<< (std::ostream& s, const VkImageMemoryRequirementsInfo2& value)
4054 {
4055         s << "VkImageMemoryRequirementsInfo2 = {\n";
4056         s << "\tsType = " << value.sType << '\n';
4057         s << "\tpNext = " << value.pNext << '\n';
4058         s << "\timage = " << value.image << '\n';
4059         s << '}';
4060         return s;
4061 }
4062
4063 std::ostream& operator<< (std::ostream& s, const VkImageSparseMemoryRequirementsInfo2& value)
4064 {
4065         s << "VkImageSparseMemoryRequirementsInfo2 = {\n";
4066         s << "\tsType = " << value.sType << '\n';
4067         s << "\tpNext = " << value.pNext << '\n';
4068         s << "\timage = " << value.image << '\n';
4069         s << '}';
4070         return s;
4071 }
4072
4073 std::ostream& operator<< (std::ostream& s, const VkMemoryRequirements2& value)
4074 {
4075         s << "VkMemoryRequirements2 = {\n";
4076         s << "\tsType = " << value.sType << '\n';
4077         s << "\tpNext = " << value.pNext << '\n';
4078         s << "\tmemoryRequirements = " << value.memoryRequirements << '\n';
4079         s << '}';
4080         return s;
4081 }
4082
4083 std::ostream& operator<< (std::ostream& s, const VkSparseImageMemoryRequirements2& value)
4084 {
4085         s << "VkSparseImageMemoryRequirements2 = {\n";
4086         s << "\tsType = " << value.sType << '\n';
4087         s << "\tpNext = " << value.pNext << '\n';
4088         s << "\tmemoryRequirements = " << value.memoryRequirements << '\n';
4089         s << '}';
4090         return s;
4091 }
4092
4093 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceFeatures2& value)
4094 {
4095         s << "VkPhysicalDeviceFeatures2 = {\n";
4096         s << "\tsType = " << value.sType << '\n';
4097         s << "\tpNext = " << value.pNext << '\n';
4098         s << "\tfeatures = " << value.features << '\n';
4099         s << '}';
4100         return s;
4101 }
4102
4103 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceProperties2& value)
4104 {
4105         s << "VkPhysicalDeviceProperties2 = {\n";
4106         s << "\tsType = " << value.sType << '\n';
4107         s << "\tpNext = " << value.pNext << '\n';
4108         s << "\tproperties = " << value.properties << '\n';
4109         s << '}';
4110         return s;
4111 }
4112
4113 std::ostream& operator<< (std::ostream& s, const VkFormatProperties2& value)
4114 {
4115         s << "VkFormatProperties2 = {\n";
4116         s << "\tsType = " << value.sType << '\n';
4117         s << "\tpNext = " << value.pNext << '\n';
4118         s << "\tformatProperties = " << value.formatProperties << '\n';
4119         s << '}';
4120         return s;
4121 }
4122
4123 std::ostream& operator<< (std::ostream& s, const VkImageFormatProperties2& value)
4124 {
4125         s << "VkImageFormatProperties2 = {\n";
4126         s << "\tsType = " << value.sType << '\n';
4127         s << "\tpNext = " << value.pNext << '\n';
4128         s << "\timageFormatProperties = " << value.imageFormatProperties << '\n';
4129         s << '}';
4130         return s;
4131 }
4132
4133 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceImageFormatInfo2& value)
4134 {
4135         s << "VkPhysicalDeviceImageFormatInfo2 = {\n";
4136         s << "\tsType = " << value.sType << '\n';
4137         s << "\tpNext = " << value.pNext << '\n';
4138         s << "\tformat = " << value.format << '\n';
4139         s << "\ttype = " << value.type << '\n';
4140         s << "\ttiling = " << value.tiling << '\n';
4141         s << "\tusage = " << getImageUsageFlagsStr(value.usage) << '\n';
4142         s << "\tflags = " << getImageCreateFlagsStr(value.flags) << '\n';
4143         s << '}';
4144         return s;
4145 }
4146
4147 std::ostream& operator<< (std::ostream& s, const VkQueueFamilyProperties2& value)
4148 {
4149         s << "VkQueueFamilyProperties2 = {\n";
4150         s << "\tsType = " << value.sType << '\n';
4151         s << "\tpNext = " << value.pNext << '\n';
4152         s << "\tqueueFamilyProperties = " << value.queueFamilyProperties << '\n';
4153         s << '}';
4154         return s;
4155 }
4156
4157 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceMemoryProperties2& value)
4158 {
4159         s << "VkPhysicalDeviceMemoryProperties2 = {\n";
4160         s << "\tsType = " << value.sType << '\n';
4161         s << "\tpNext = " << value.pNext << '\n';
4162         s << "\tmemoryProperties = " << value.memoryProperties << '\n';
4163         s << '}';
4164         return s;
4165 }
4166
4167 std::ostream& operator<< (std::ostream& s, const VkSparseImageFormatProperties2& value)
4168 {
4169         s << "VkSparseImageFormatProperties2 = {\n";
4170         s << "\tsType = " << value.sType << '\n';
4171         s << "\tpNext = " << value.pNext << '\n';
4172         s << "\tproperties = " << value.properties << '\n';
4173         s << '}';
4174         return s;
4175 }
4176
4177 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceSparseImageFormatInfo2& value)
4178 {
4179         s << "VkPhysicalDeviceSparseImageFormatInfo2 = {\n";
4180         s << "\tsType = " << value.sType << '\n';
4181         s << "\tpNext = " << value.pNext << '\n';
4182         s << "\tformat = " << value.format << '\n';
4183         s << "\ttype = " << value.type << '\n';
4184         s << "\tsamples = " << value.samples << '\n';
4185         s << "\tusage = " << getImageUsageFlagsStr(value.usage) << '\n';
4186         s << "\ttiling = " << value.tiling << '\n';
4187         s << '}';
4188         return s;
4189 }
4190
4191 std::ostream& operator<< (std::ostream& s, const VkPhysicalDevicePointClippingProperties& value)
4192 {
4193         s << "VkPhysicalDevicePointClippingProperties = {\n";
4194         s << "\tsType = " << value.sType << '\n';
4195         s << "\tpNext = " << value.pNext << '\n';
4196         s << "\tpointClippingBehavior = " << value.pointClippingBehavior << '\n';
4197         s << '}';
4198         return s;
4199 }
4200
4201 std::ostream& operator<< (std::ostream& s, const VkInputAttachmentAspectReference& value)
4202 {
4203         s << "VkInputAttachmentAspectReference = {\n";
4204         s << "\tsubpass = " << value.subpass << '\n';
4205         s << "\tinputAttachmentIndex = " << value.inputAttachmentIndex << '\n';
4206         s << "\taspectMask = " << getImageAspectFlagsStr(value.aspectMask) << '\n';
4207         s << '}';
4208         return s;
4209 }
4210
4211 std::ostream& operator<< (std::ostream& s, const VkRenderPassInputAttachmentAspectCreateInfo& value)
4212 {
4213         s << "VkRenderPassInputAttachmentAspectCreateInfo = {\n";
4214         s << "\tsType = " << value.sType << '\n';
4215         s << "\tpNext = " << value.pNext << '\n';
4216         s << "\taspectReferenceCount = " << value.aspectReferenceCount << '\n';
4217         s << "\tpAspectReferences = " << value.pAspectReferences << '\n';
4218         s << '}';
4219         return s;
4220 }
4221
4222 std::ostream& operator<< (std::ostream& s, const VkImageViewUsageCreateInfo& value)
4223 {
4224         s << "VkImageViewUsageCreateInfo = {\n";
4225         s << "\tsType = " << value.sType << '\n';
4226         s << "\tpNext = " << value.pNext << '\n';
4227         s << "\tusage = " << getImageUsageFlagsStr(value.usage) << '\n';
4228         s << '}';
4229         return s;
4230 }
4231
4232 std::ostream& operator<< (std::ostream& s, const VkPipelineTessellationDomainOriginStateCreateInfo& value)
4233 {
4234         s << "VkPipelineTessellationDomainOriginStateCreateInfo = {\n";
4235         s << "\tsType = " << value.sType << '\n';
4236         s << "\tpNext = " << value.pNext << '\n';
4237         s << "\tdomainOrigin = " << value.domainOrigin << '\n';
4238         s << '}';
4239         return s;
4240 }
4241
4242 std::ostream& operator<< (std::ostream& s, const VkRenderPassMultiviewCreateInfo& value)
4243 {
4244         s << "VkRenderPassMultiviewCreateInfo = {\n";
4245         s << "\tsType = " << value.sType << '\n';
4246         s << "\tpNext = " << value.pNext << '\n';
4247         s << "\tsubpassCount = " << value.subpassCount << '\n';
4248         s << "\tpViewMasks = " << value.pViewMasks << '\n';
4249         s << "\tdependencyCount = " << value.dependencyCount << '\n';
4250         s << "\tpViewOffsets = " << value.pViewOffsets << '\n';
4251         s << "\tcorrelationMaskCount = " << value.correlationMaskCount << '\n';
4252         s << "\tpCorrelationMasks = " << value.pCorrelationMasks << '\n';
4253         s << '}';
4254         return s;
4255 }
4256
4257 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceMultiviewFeatures& value)
4258 {
4259         s << "VkPhysicalDeviceMultiviewFeatures = {\n";
4260         s << "\tsType = " << value.sType << '\n';
4261         s << "\tpNext = " << value.pNext << '\n';
4262         s << "\tmultiview = " << value.multiview << '\n';
4263         s << "\tmultiviewGeometryShader = " << value.multiviewGeometryShader << '\n';
4264         s << "\tmultiviewTessellationShader = " << value.multiviewTessellationShader << '\n';
4265         s << '}';
4266         return s;
4267 }
4268
4269 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceMultiviewProperties& value)
4270 {
4271         s << "VkPhysicalDeviceMultiviewProperties = {\n";
4272         s << "\tsType = " << value.sType << '\n';
4273         s << "\tpNext = " << value.pNext << '\n';
4274         s << "\tmaxMultiviewViewCount = " << value.maxMultiviewViewCount << '\n';
4275         s << "\tmaxMultiviewInstanceIndex = " << value.maxMultiviewInstanceIndex << '\n';
4276         s << '}';
4277         return s;
4278 }
4279
4280 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceVariablePointerFeatures& value)
4281 {
4282         s << "VkPhysicalDeviceVariablePointerFeatures = {\n";
4283         s << "\tsType = " << value.sType << '\n';
4284         s << "\tpNext = " << value.pNext << '\n';
4285         s << "\tvariablePointersStorageBuffer = " << value.variablePointersStorageBuffer << '\n';
4286         s << "\tvariablePointers = " << value.variablePointers << '\n';
4287         s << '}';
4288         return s;
4289 }
4290
4291 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceProtectedMemoryFeatures& value)
4292 {
4293         s << "VkPhysicalDeviceProtectedMemoryFeatures = {\n";
4294         s << "\tsType = " << value.sType << '\n';
4295         s << "\tpNext = " << value.pNext << '\n';
4296         s << "\tprotectedMemory = " << value.protectedMemory << '\n';
4297         s << '}';
4298         return s;
4299 }
4300
4301 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceProtectedMemoryProperties& value)
4302 {
4303         s << "VkPhysicalDeviceProtectedMemoryProperties = {\n";
4304         s << "\tsType = " << value.sType << '\n';
4305         s << "\tpNext = " << value.pNext << '\n';
4306         s << "\tprotectedNoFault = " << value.protectedNoFault << '\n';
4307         s << '}';
4308         return s;
4309 }
4310
4311 std::ostream& operator<< (std::ostream& s, const VkDeviceQueueInfo2& value)
4312 {
4313         s << "VkDeviceQueueInfo2 = {\n";
4314         s << "\tsType = " << value.sType << '\n';
4315         s << "\tpNext = " << value.pNext << '\n';
4316         s << "\tflags = " << getDeviceQueueCreateFlagsStr(value.flags) << '\n';
4317         s << "\tqueueFamilyIndex = " << value.queueFamilyIndex << '\n';
4318         s << "\tqueueIndex = " << value.queueIndex << '\n';
4319         s << '}';
4320         return s;
4321 }
4322
4323 std::ostream& operator<< (std::ostream& s, const VkProtectedSubmitInfo& value)
4324 {
4325         s << "VkProtectedSubmitInfo = {\n";
4326         s << "\tsType = " << value.sType << '\n';
4327         s << "\tpNext = " << value.pNext << '\n';
4328         s << "\tprotectedSubmit = " << value.protectedSubmit << '\n';
4329         s << '}';
4330         return s;
4331 }
4332
4333 std::ostream& operator<< (std::ostream& s, const VkSamplerYcbcrConversionCreateInfo& value)
4334 {
4335         s << "VkSamplerYcbcrConversionCreateInfo = {\n";
4336         s << "\tsType = " << value.sType << '\n';
4337         s << "\tpNext = " << value.pNext << '\n';
4338         s << "\tformat = " << value.format << '\n';
4339         s << "\tycbcrModel = " << value.ycbcrModel << '\n';
4340         s << "\tycbcrRange = " << value.ycbcrRange << '\n';
4341         s << "\tcomponents = " << value.components << '\n';
4342         s << "\txChromaOffset = " << value.xChromaOffset << '\n';
4343         s << "\tyChromaOffset = " << value.yChromaOffset << '\n';
4344         s << "\tchromaFilter = " << value.chromaFilter << '\n';
4345         s << "\tforceExplicitReconstruction = " << value.forceExplicitReconstruction << '\n';
4346         s << '}';
4347         return s;
4348 }
4349
4350 std::ostream& operator<< (std::ostream& s, const VkSamplerYcbcrConversionInfo& value)
4351 {
4352         s << "VkSamplerYcbcrConversionInfo = {\n";
4353         s << "\tsType = " << value.sType << '\n';
4354         s << "\tpNext = " << value.pNext << '\n';
4355         s << "\tconversion = " << value.conversion << '\n';
4356         s << '}';
4357         return s;
4358 }
4359
4360 std::ostream& operator<< (std::ostream& s, const VkBindImagePlaneMemoryInfo& value)
4361 {
4362         s << "VkBindImagePlaneMemoryInfo = {\n";
4363         s << "\tsType = " << value.sType << '\n';
4364         s << "\tpNext = " << value.pNext << '\n';
4365         s << "\tplaneAspect = " << value.planeAspect << '\n';
4366         s << '}';
4367         return s;
4368 }
4369
4370 std::ostream& operator<< (std::ostream& s, const VkImagePlaneMemoryRequirementsInfo& value)
4371 {
4372         s << "VkImagePlaneMemoryRequirementsInfo = {\n";
4373         s << "\tsType = " << value.sType << '\n';
4374         s << "\tpNext = " << value.pNext << '\n';
4375         s << "\tplaneAspect = " << value.planeAspect << '\n';
4376         s << '}';
4377         return s;
4378 }
4379
4380 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceSamplerYcbcrConversionFeatures& value)
4381 {
4382         s << "VkPhysicalDeviceSamplerYcbcrConversionFeatures = {\n";
4383         s << "\tsType = " << value.sType << '\n';
4384         s << "\tpNext = " << value.pNext << '\n';
4385         s << "\tsamplerYcbcrConversion = " << value.samplerYcbcrConversion << '\n';
4386         s << '}';
4387         return s;
4388 }
4389
4390 std::ostream& operator<< (std::ostream& s, const VkSamplerYcbcrConversionImageFormatProperties& value)
4391 {
4392         s << "VkSamplerYcbcrConversionImageFormatProperties = {\n";
4393         s << "\tsType = " << value.sType << '\n';
4394         s << "\tpNext = " << value.pNext << '\n';
4395         s << "\tcombinedImageSamplerDescriptorCount = " << value.combinedImageSamplerDescriptorCount << '\n';
4396         s << '}';
4397         return s;
4398 }
4399
4400 std::ostream& operator<< (std::ostream& s, const VkDescriptorUpdateTemplateEntry& value)
4401 {
4402         s << "VkDescriptorUpdateTemplateEntry = {\n";
4403         s << "\tdstBinding = " << value.dstBinding << '\n';
4404         s << "\tdstArrayElement = " << value.dstArrayElement << '\n';
4405         s << "\tdescriptorCount = " << value.descriptorCount << '\n';
4406         s << "\tdescriptorType = " << value.descriptorType << '\n';
4407         s << "\toffset = " << value.offset << '\n';
4408         s << "\tstride = " << value.stride << '\n';
4409         s << '}';
4410         return s;
4411 }
4412
4413 std::ostream& operator<< (std::ostream& s, const VkDescriptorUpdateTemplateCreateInfo& value)
4414 {
4415         s << "VkDescriptorUpdateTemplateCreateInfo = {\n";
4416         s << "\tsType = " << value.sType << '\n';
4417         s << "\tpNext = " << value.pNext << '\n';
4418         s << "\tflags = " << getDescriptorUpdateTemplateCreateFlagsStr(value.flags) << '\n';
4419         s << "\tdescriptorUpdateEntryCount = " << value.descriptorUpdateEntryCount << '\n';
4420         s << "\tpDescriptorUpdateEntries = " << value.pDescriptorUpdateEntries << '\n';
4421         s << "\ttemplateType = " << value.templateType << '\n';
4422         s << "\tdescriptorSetLayout = " << value.descriptorSetLayout << '\n';
4423         s << "\tpipelineBindPoint = " << value.pipelineBindPoint << '\n';
4424         s << "\tpipelineLayout = " << value.pipelineLayout << '\n';
4425         s << "\tset = " << value.set << '\n';
4426         s << '}';
4427         return s;
4428 }
4429
4430 std::ostream& operator<< (std::ostream& s, const VkExternalMemoryProperties& value)
4431 {
4432         s << "VkExternalMemoryProperties = {\n";
4433         s << "\texternalMemoryFeatures = " << getExternalMemoryFeatureFlagsStr(value.externalMemoryFeatures) << '\n';
4434         s << "\texportFromImportedHandleTypes = " << getExternalMemoryHandleTypeFlagsStr(value.exportFromImportedHandleTypes) << '\n';
4435         s << "\tcompatibleHandleTypes = " << getExternalMemoryHandleTypeFlagsStr(value.compatibleHandleTypes) << '\n';
4436         s << '}';
4437         return s;
4438 }
4439
4440 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceExternalImageFormatInfo& value)
4441 {
4442         s << "VkPhysicalDeviceExternalImageFormatInfo = {\n";
4443         s << "\tsType = " << value.sType << '\n';
4444         s << "\tpNext = " << value.pNext << '\n';
4445         s << "\thandleType = " << value.handleType << '\n';
4446         s << '}';
4447         return s;
4448 }
4449
4450 std::ostream& operator<< (std::ostream& s, const VkExternalImageFormatProperties& value)
4451 {
4452         s << "VkExternalImageFormatProperties = {\n";
4453         s << "\tsType = " << value.sType << '\n';
4454         s << "\tpNext = " << value.pNext << '\n';
4455         s << "\texternalMemoryProperties = " << value.externalMemoryProperties << '\n';
4456         s << '}';
4457         return s;
4458 }
4459
4460 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceExternalBufferInfo& value)
4461 {
4462         s << "VkPhysicalDeviceExternalBufferInfo = {\n";
4463         s << "\tsType = " << value.sType << '\n';
4464         s << "\tpNext = " << value.pNext << '\n';
4465         s << "\tflags = " << getBufferCreateFlagsStr(value.flags) << '\n';
4466         s << "\tusage = " << getBufferUsageFlagsStr(value.usage) << '\n';
4467         s << "\thandleType = " << value.handleType << '\n';
4468         s << '}';
4469         return s;
4470 }
4471
4472 std::ostream& operator<< (std::ostream& s, const VkExternalBufferProperties& value)
4473 {
4474         s << "VkExternalBufferProperties = {\n";
4475         s << "\tsType = " << value.sType << '\n';
4476         s << "\tpNext = " << value.pNext << '\n';
4477         s << "\texternalMemoryProperties = " << value.externalMemoryProperties << '\n';
4478         s << '}';
4479         return s;
4480 }
4481
4482 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceIDProperties& value)
4483 {
4484         s << "VkPhysicalDeviceIDProperties = {\n";
4485         s << "\tsType = " << value.sType << '\n';
4486         s << "\tpNext = " << value.pNext << '\n';
4487         s << "\tdeviceUUID = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<deUint8>(DE_ARRAY_BEGIN(value.deviceUUID)), tcu::Format::HexIterator<deUint8>(DE_ARRAY_END(value.deviceUUID))) << '\n';
4488         s << "\tdriverUUID = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<deUint8>(DE_ARRAY_BEGIN(value.driverUUID)), tcu::Format::HexIterator<deUint8>(DE_ARRAY_END(value.driverUUID))) << '\n';
4489         s << "\tdeviceLUID = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<deUint8>(DE_ARRAY_BEGIN(value.deviceLUID)), tcu::Format::HexIterator<deUint8>(DE_ARRAY_END(value.deviceLUID))) << '\n';
4490         s << "\tdeviceNodeMask = " << value.deviceNodeMask << '\n';
4491         s << "\tdeviceLUIDValid = " << value.deviceLUIDValid << '\n';
4492         s << '}';
4493         return s;
4494 }
4495
4496 std::ostream& operator<< (std::ostream& s, const VkExternalMemoryImageCreateInfo& value)
4497 {
4498         s << "VkExternalMemoryImageCreateInfo = {\n";
4499         s << "\tsType = " << value.sType << '\n';
4500         s << "\tpNext = " << value.pNext << '\n';
4501         s << "\thandleTypes = " << getExternalMemoryHandleTypeFlagsStr(value.handleTypes) << '\n';
4502         s << '}';
4503         return s;
4504 }
4505
4506 std::ostream& operator<< (std::ostream& s, const VkExternalMemoryBufferCreateInfo& value)
4507 {
4508         s << "VkExternalMemoryBufferCreateInfo = {\n";
4509         s << "\tsType = " << value.sType << '\n';
4510         s << "\tpNext = " << value.pNext << '\n';
4511         s << "\thandleTypes = " << getExternalMemoryHandleTypeFlagsStr(value.handleTypes) << '\n';
4512         s << '}';
4513         return s;
4514 }
4515
4516 std::ostream& operator<< (std::ostream& s, const VkExportMemoryAllocateInfo& value)
4517 {
4518         s << "VkExportMemoryAllocateInfo = {\n";
4519         s << "\tsType = " << value.sType << '\n';
4520         s << "\tpNext = " << value.pNext << '\n';
4521         s << "\thandleTypes = " << getExternalMemoryHandleTypeFlagsStr(value.handleTypes) << '\n';
4522         s << '}';
4523         return s;
4524 }
4525
4526 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceExternalFenceInfo& value)
4527 {
4528         s << "VkPhysicalDeviceExternalFenceInfo = {\n";
4529         s << "\tsType = " << value.sType << '\n';
4530         s << "\tpNext = " << value.pNext << '\n';
4531         s << "\thandleType = " << value.handleType << '\n';
4532         s << '}';
4533         return s;
4534 }
4535
4536 std::ostream& operator<< (std::ostream& s, const VkExternalFenceProperties& value)
4537 {
4538         s << "VkExternalFenceProperties = {\n";
4539         s << "\tsType = " << value.sType << '\n';
4540         s << "\tpNext = " << value.pNext << '\n';
4541         s << "\texportFromImportedHandleTypes = " << getExternalFenceHandleTypeFlagsStr(value.exportFromImportedHandleTypes) << '\n';
4542         s << "\tcompatibleHandleTypes = " << getExternalFenceHandleTypeFlagsStr(value.compatibleHandleTypes) << '\n';
4543         s << "\texternalFenceFeatures = " << getExternalFenceFeatureFlagsStr(value.externalFenceFeatures) << '\n';
4544         s << '}';
4545         return s;
4546 }
4547
4548 std::ostream& operator<< (std::ostream& s, const VkExportFenceCreateInfo& value)
4549 {
4550         s << "VkExportFenceCreateInfo = {\n";
4551         s << "\tsType = " << value.sType << '\n';
4552         s << "\tpNext = " << value.pNext << '\n';
4553         s << "\thandleTypes = " << getExternalFenceHandleTypeFlagsStr(value.handleTypes) << '\n';
4554         s << '}';
4555         return s;
4556 }
4557
4558 std::ostream& operator<< (std::ostream& s, const VkExportSemaphoreCreateInfo& value)
4559 {
4560         s << "VkExportSemaphoreCreateInfo = {\n";
4561         s << "\tsType = " << value.sType << '\n';
4562         s << "\tpNext = " << value.pNext << '\n';
4563         s << "\thandleTypes = " << getExternalSemaphoreHandleTypeFlagsStr(value.handleTypes) << '\n';
4564         s << '}';
4565         return s;
4566 }
4567
4568 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceExternalSemaphoreInfo& value)
4569 {
4570         s << "VkPhysicalDeviceExternalSemaphoreInfo = {\n";
4571         s << "\tsType = " << value.sType << '\n';
4572         s << "\tpNext = " << value.pNext << '\n';
4573         s << "\thandleType = " << value.handleType << '\n';
4574         s << '}';
4575         return s;
4576 }
4577
4578 std::ostream& operator<< (std::ostream& s, const VkExternalSemaphoreProperties& value)
4579 {
4580         s << "VkExternalSemaphoreProperties = {\n";
4581         s << "\tsType = " << value.sType << '\n';
4582         s << "\tpNext = " << value.pNext << '\n';
4583         s << "\texportFromImportedHandleTypes = " << getExternalSemaphoreHandleTypeFlagsStr(value.exportFromImportedHandleTypes) << '\n';
4584         s << "\tcompatibleHandleTypes = " << getExternalSemaphoreHandleTypeFlagsStr(value.compatibleHandleTypes) << '\n';
4585         s << "\texternalSemaphoreFeatures = " << getExternalSemaphoreFeatureFlagsStr(value.externalSemaphoreFeatures) << '\n';
4586         s << '}';
4587         return s;
4588 }
4589
4590 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceMaintenance3Properties& value)
4591 {
4592         s << "VkPhysicalDeviceMaintenance3Properties = {\n";
4593         s << "\tsType = " << value.sType << '\n';
4594         s << "\tpNext = " << value.pNext << '\n';
4595         s << "\tmaxPerSetDescriptors = " << value.maxPerSetDescriptors << '\n';
4596         s << "\tmaxMemoryAllocationSize = " << value.maxMemoryAllocationSize << '\n';
4597         s << '}';
4598         return s;
4599 }
4600
4601 std::ostream& operator<< (std::ostream& s, const VkDescriptorSetLayoutSupport& value)
4602 {
4603         s << "VkDescriptorSetLayoutSupport = {\n";
4604         s << "\tsType = " << value.sType << '\n';
4605         s << "\tpNext = " << value.pNext << '\n';
4606         s << "\tsupported = " << value.supported << '\n';
4607         s << '}';
4608         return s;
4609 }
4610
4611 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceShaderDrawParameterFeatures& value)
4612 {
4613         s << "VkPhysicalDeviceShaderDrawParameterFeatures = {\n";
4614         s << "\tsType = " << value.sType << '\n';
4615         s << "\tpNext = " << value.pNext << '\n';
4616         s << "\tshaderDrawParameters = " << value.shaderDrawParameters << '\n';
4617         s << '}';
4618         return s;
4619 }
4620
4621 std::ostream& operator<< (std::ostream& s, const VkSurfaceCapabilitiesKHR& value)
4622 {
4623         s << "VkSurfaceCapabilitiesKHR = {\n";
4624         s << "\tminImageCount = " << value.minImageCount << '\n';
4625         s << "\tmaxImageCount = " << value.maxImageCount << '\n';
4626         s << "\tcurrentExtent = " << value.currentExtent << '\n';
4627         s << "\tminImageExtent = " << value.minImageExtent << '\n';
4628         s << "\tmaxImageExtent = " << value.maxImageExtent << '\n';
4629         s << "\tmaxImageArrayLayers = " << value.maxImageArrayLayers << '\n';
4630         s << "\tsupportedTransforms = " << getSurfaceTransformFlagsKHRStr(value.supportedTransforms) << '\n';
4631         s << "\tcurrentTransform = " << value.currentTransform << '\n';
4632         s << "\tsupportedCompositeAlpha = " << getCompositeAlphaFlagsKHRStr(value.supportedCompositeAlpha) << '\n';
4633         s << "\tsupportedUsageFlags = " << getImageUsageFlagsStr(value.supportedUsageFlags) << '\n';
4634         s << '}';
4635         return s;
4636 }
4637
4638 std::ostream& operator<< (std::ostream& s, const VkSurfaceFormatKHR& value)
4639 {
4640         s << "VkSurfaceFormatKHR = {\n";
4641         s << "\tformat = " << value.format << '\n';
4642         s << "\tcolorSpace = " << value.colorSpace << '\n';
4643         s << '}';
4644         return s;
4645 }
4646
4647 std::ostream& operator<< (std::ostream& s, const VkSwapchainCreateInfoKHR& value)
4648 {
4649         s << "VkSwapchainCreateInfoKHR = {\n";
4650         s << "\tsType = " << value.sType << '\n';
4651         s << "\tpNext = " << value.pNext << '\n';
4652         s << "\tflags = " << getSwapchainCreateFlagsKHRStr(value.flags) << '\n';
4653         s << "\tsurface = " << value.surface << '\n';
4654         s << "\tminImageCount = " << value.minImageCount << '\n';
4655         s << "\timageFormat = " << value.imageFormat << '\n';
4656         s << "\timageColorSpace = " << value.imageColorSpace << '\n';
4657         s << "\timageExtent = " << value.imageExtent << '\n';
4658         s << "\timageArrayLayers = " << value.imageArrayLayers << '\n';
4659         s << "\timageUsage = " << getImageUsageFlagsStr(value.imageUsage) << '\n';
4660         s << "\timageSharingMode = " << value.imageSharingMode << '\n';
4661         s << "\tqueueFamilyIndexCount = " << value.queueFamilyIndexCount << '\n';
4662         s << "\tpQueueFamilyIndices = " << value.pQueueFamilyIndices << '\n';
4663         s << "\tpreTransform = " << value.preTransform << '\n';
4664         s << "\tcompositeAlpha = " << value.compositeAlpha << '\n';
4665         s << "\tpresentMode = " << value.presentMode << '\n';
4666         s << "\tclipped = " << value.clipped << '\n';
4667         s << "\toldSwapchain = " << value.oldSwapchain << '\n';
4668         s << '}';
4669         return s;
4670 }
4671
4672 std::ostream& operator<< (std::ostream& s, const VkPresentInfoKHR& value)
4673 {
4674         s << "VkPresentInfoKHR = {\n";
4675         s << "\tsType = " << value.sType << '\n';
4676         s << "\tpNext = " << value.pNext << '\n';
4677         s << "\twaitSemaphoreCount = " << value.waitSemaphoreCount << '\n';
4678         s << "\tpWaitSemaphores = " << value.pWaitSemaphores << '\n';
4679         s << "\tswapchainCount = " << value.swapchainCount << '\n';
4680         s << "\tpSwapchains = " << value.pSwapchains << '\n';
4681         s << "\tpImageIndices = " << value.pImageIndices << '\n';
4682         s << "\tpResults = " << value.pResults << '\n';
4683         s << '}';
4684         return s;
4685 }
4686
4687 std::ostream& operator<< (std::ostream& s, const VkImageSwapchainCreateInfoKHR& value)
4688 {
4689         s << "VkImageSwapchainCreateInfoKHR = {\n";
4690         s << "\tsType = " << value.sType << '\n';
4691         s << "\tpNext = " << value.pNext << '\n';
4692         s << "\tswapchain = " << value.swapchain << '\n';
4693         s << '}';
4694         return s;
4695 }
4696
4697 std::ostream& operator<< (std::ostream& s, const VkBindImageMemorySwapchainInfoKHR& value)
4698 {
4699         s << "VkBindImageMemorySwapchainInfoKHR = {\n";
4700         s << "\tsType = " << value.sType << '\n';
4701         s << "\tpNext = " << value.pNext << '\n';
4702         s << "\tswapchain = " << value.swapchain << '\n';
4703         s << "\timageIndex = " << value.imageIndex << '\n';
4704         s << '}';
4705         return s;
4706 }
4707
4708 std::ostream& operator<< (std::ostream& s, const VkAcquireNextImageInfoKHR& value)
4709 {
4710         s << "VkAcquireNextImageInfoKHR = {\n";
4711         s << "\tsType = " << value.sType << '\n';
4712         s << "\tpNext = " << value.pNext << '\n';
4713         s << "\tswapchain = " << value.swapchain << '\n';
4714         s << "\ttimeout = " << value.timeout << '\n';
4715         s << "\tsemaphore = " << value.semaphore << '\n';
4716         s << "\tfence = " << value.fence << '\n';
4717         s << "\tdeviceMask = " << value.deviceMask << '\n';
4718         s << '}';
4719         return s;
4720 }
4721
4722 std::ostream& operator<< (std::ostream& s, const VkDeviceGroupPresentCapabilitiesKHR& value)
4723 {
4724         s << "VkDeviceGroupPresentCapabilitiesKHR = {\n";
4725         s << "\tsType = " << value.sType << '\n';
4726         s << "\tpNext = " << value.pNext << '\n';
4727         s << "\tpresentMask = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.presentMask), DE_ARRAY_END(value.presentMask)) << '\n';
4728         s << "\tmodes = " << getDeviceGroupPresentModeFlagsKHRStr(value.modes) << '\n';
4729         s << '}';
4730         return s;
4731 }
4732
4733 std::ostream& operator<< (std::ostream& s, const VkDeviceGroupPresentInfoKHR& value)
4734 {
4735         s << "VkDeviceGroupPresentInfoKHR = {\n";
4736         s << "\tsType = " << value.sType << '\n';
4737         s << "\tpNext = " << value.pNext << '\n';
4738         s << "\tswapchainCount = " << value.swapchainCount << '\n';
4739         s << "\tpDeviceMasks = " << value.pDeviceMasks << '\n';
4740         s << "\tmode = " << value.mode << '\n';
4741         s << '}';
4742         return s;
4743 }
4744
4745 std::ostream& operator<< (std::ostream& s, const VkDeviceGroupSwapchainCreateInfoKHR& value)
4746 {
4747         s << "VkDeviceGroupSwapchainCreateInfoKHR = {\n";
4748         s << "\tsType = " << value.sType << '\n';
4749         s << "\tpNext = " << value.pNext << '\n';
4750         s << "\tmodes = " << getDeviceGroupPresentModeFlagsKHRStr(value.modes) << '\n';
4751         s << '}';
4752         return s;
4753 }
4754
4755 std::ostream& operator<< (std::ostream& s, const VkDisplayPropertiesKHR& value)
4756 {
4757         s << "VkDisplayPropertiesKHR = {\n";
4758         s << "\tdisplay = " << value.display << '\n';
4759         s << "\tdisplayName = " << getCharPtrStr(value.displayName) << '\n';
4760         s << "\tphysicalDimensions = " << value.physicalDimensions << '\n';
4761         s << "\tphysicalResolution = " << value.physicalResolution << '\n';
4762         s << "\tsupportedTransforms = " << getSurfaceTransformFlagsKHRStr(value.supportedTransforms) << '\n';
4763         s << "\tplaneReorderPossible = " << value.planeReorderPossible << '\n';
4764         s << "\tpersistentContent = " << value.persistentContent << '\n';
4765         s << '}';
4766         return s;
4767 }
4768
4769 std::ostream& operator<< (std::ostream& s, const VkDisplayModeParametersKHR& value)
4770 {
4771         s << "VkDisplayModeParametersKHR = {\n";
4772         s << "\tvisibleRegion = " << value.visibleRegion << '\n';
4773         s << "\trefreshRate = " << value.refreshRate << '\n';
4774         s << '}';
4775         return s;
4776 }
4777
4778 std::ostream& operator<< (std::ostream& s, const VkDisplayModePropertiesKHR& value)
4779 {
4780         s << "VkDisplayModePropertiesKHR = {\n";
4781         s << "\tdisplayMode = " << value.displayMode << '\n';
4782         s << "\tparameters = " << value.parameters << '\n';
4783         s << '}';
4784         return s;
4785 }
4786
4787 std::ostream& operator<< (std::ostream& s, const VkDisplayModeCreateInfoKHR& value)
4788 {
4789         s << "VkDisplayModeCreateInfoKHR = {\n";
4790         s << "\tsType = " << value.sType << '\n';
4791         s << "\tpNext = " << value.pNext << '\n';
4792         s << "\tflags = " << getDisplayModeCreateFlagsKHRStr(value.flags) << '\n';
4793         s << "\tparameters = " << value.parameters << '\n';
4794         s << '}';
4795         return s;
4796 }
4797
4798 std::ostream& operator<< (std::ostream& s, const VkDisplayPlaneCapabilitiesKHR& value)
4799 {
4800         s << "VkDisplayPlaneCapabilitiesKHR = {\n";
4801         s << "\tsupportedAlpha = " << getDisplayPlaneAlphaFlagsKHRStr(value.supportedAlpha) << '\n';
4802         s << "\tminSrcPosition = " << value.minSrcPosition << '\n';
4803         s << "\tmaxSrcPosition = " << value.maxSrcPosition << '\n';
4804         s << "\tminSrcExtent = " << value.minSrcExtent << '\n';
4805         s << "\tmaxSrcExtent = " << value.maxSrcExtent << '\n';
4806         s << "\tminDstPosition = " << value.minDstPosition << '\n';
4807         s << "\tmaxDstPosition = " << value.maxDstPosition << '\n';
4808         s << "\tminDstExtent = " << value.minDstExtent << '\n';
4809         s << "\tmaxDstExtent = " << value.maxDstExtent << '\n';
4810         s << '}';
4811         return s;
4812 }
4813
4814 std::ostream& operator<< (std::ostream& s, const VkDisplayPlanePropertiesKHR& value)
4815 {
4816         s << "VkDisplayPlanePropertiesKHR = {\n";
4817         s << "\tcurrentDisplay = " << value.currentDisplay << '\n';
4818         s << "\tcurrentStackIndex = " << value.currentStackIndex << '\n';
4819         s << '}';
4820         return s;
4821 }
4822
4823 std::ostream& operator<< (std::ostream& s, const VkDisplaySurfaceCreateInfoKHR& value)
4824 {
4825         s << "VkDisplaySurfaceCreateInfoKHR = {\n";
4826         s << "\tsType = " << value.sType << '\n';
4827         s << "\tpNext = " << value.pNext << '\n';
4828         s << "\tflags = " << getDisplaySurfaceCreateFlagsKHRStr(value.flags) << '\n';
4829         s << "\tdisplayMode = " << value.displayMode << '\n';
4830         s << "\tplaneIndex = " << value.planeIndex << '\n';
4831         s << "\tplaneStackIndex = " << value.planeStackIndex << '\n';
4832         s << "\ttransform = " << value.transform << '\n';
4833         s << "\tglobalAlpha = " << value.globalAlpha << '\n';
4834         s << "\talphaMode = " << value.alphaMode << '\n';
4835         s << "\timageExtent = " << value.imageExtent << '\n';
4836         s << '}';
4837         return s;
4838 }
4839
4840 std::ostream& operator<< (std::ostream& s, const VkDisplayPresentInfoKHR& value)
4841 {
4842         s << "VkDisplayPresentInfoKHR = {\n";
4843         s << "\tsType = " << value.sType << '\n';
4844         s << "\tpNext = " << value.pNext << '\n';
4845         s << "\tsrcRect = " << value.srcRect << '\n';
4846         s << "\tdstRect = " << value.dstRect << '\n';
4847         s << "\tpersistent = " << value.persistent << '\n';
4848         s << '}';
4849         return s;
4850 }
4851
4852 std::ostream& operator<< (std::ostream& s, const VkXlibSurfaceCreateInfoKHR& value)
4853 {
4854         s << "VkXlibSurfaceCreateInfoKHR = {\n";
4855         s << "\tsType = " << value.sType << '\n';
4856         s << "\tpNext = " << value.pNext << '\n';
4857         s << "\tflags = " << getXlibSurfaceCreateFlagsKHRStr(value.flags) << '\n';
4858         s << "\tdpy = " << value.dpy << '\n';
4859         s << "\twindow = " << value.window << '\n';
4860         s << '}';
4861         return s;
4862 }
4863
4864 std::ostream& operator<< (std::ostream& s, const VkXcbSurfaceCreateInfoKHR& value)
4865 {
4866         s << "VkXcbSurfaceCreateInfoKHR = {\n";
4867         s << "\tsType = " << value.sType << '\n';
4868         s << "\tpNext = " << value.pNext << '\n';
4869         s << "\tflags = " << getXcbSurfaceCreateFlagsKHRStr(value.flags) << '\n';
4870         s << "\tconnection = " << value.connection << '\n';
4871         s << "\twindow = " << value.window << '\n';
4872         s << '}';
4873         return s;
4874 }
4875
4876 std::ostream& operator<< (std::ostream& s, const VkWaylandSurfaceCreateInfoKHR& value)
4877 {
4878         s << "VkWaylandSurfaceCreateInfoKHR = {\n";
4879         s << "\tsType = " << value.sType << '\n';
4880         s << "\tpNext = " << value.pNext << '\n';
4881         s << "\tflags = " << getWaylandSurfaceCreateFlagsKHRStr(value.flags) << '\n';
4882         s << "\tdisplay = " << value.display << '\n';
4883         s << "\tsurface = " << value.surface << '\n';
4884         s << '}';
4885         return s;
4886 }
4887
4888 std::ostream& operator<< (std::ostream& s, const VkMirSurfaceCreateInfoKHR& value)
4889 {
4890         s << "VkMirSurfaceCreateInfoKHR = {\n";
4891         s << "\tsType = " << value.sType << '\n';
4892         s << "\tpNext = " << value.pNext << '\n';
4893         s << "\tflags = " << getMirSurfaceCreateFlagsKHRStr(value.flags) << '\n';
4894         s << "\tconnection = " << value.connection << '\n';
4895         s << "\tmirSurface = " << value.mirSurface << '\n';
4896         s << '}';
4897         return s;
4898 }
4899
4900 std::ostream& operator<< (std::ostream& s, const VkAndroidSurfaceCreateInfoKHR& value)
4901 {
4902         s << "VkAndroidSurfaceCreateInfoKHR = {\n";
4903         s << "\tsType = " << value.sType << '\n';
4904         s << "\tpNext = " << value.pNext << '\n';
4905         s << "\tflags = " << getAndroidSurfaceCreateFlagsKHRStr(value.flags) << '\n';
4906         s << "\twindow = " << value.window << '\n';
4907         s << '}';
4908         return s;
4909 }
4910
4911 std::ostream& operator<< (std::ostream& s, const VkWin32SurfaceCreateInfoKHR& value)
4912 {
4913         s << "VkWin32SurfaceCreateInfoKHR = {\n";
4914         s << "\tsType = " << value.sType << '\n';
4915         s << "\tpNext = " << value.pNext << '\n';
4916         s << "\tflags = " << getWin32SurfaceCreateFlagsKHRStr(value.flags) << '\n';
4917         s << "\thinstance = " << value.hinstance << '\n';
4918         s << "\thwnd = " << value.hwnd << '\n';
4919         s << '}';
4920         return s;
4921 }
4922
4923 std::ostream& operator<< (std::ostream& s, const VkImportMemoryWin32HandleInfoKHR& value)
4924 {
4925         s << "VkImportMemoryWin32HandleInfoKHR = {\n";
4926         s << "\tsType = " << value.sType << '\n';
4927         s << "\tpNext = " << value.pNext << '\n';
4928         s << "\thandleType = " << value.handleType << '\n';
4929         s << "\thandle = " << value.handle << '\n';
4930         s << "\tname = " << getCharPtrStr(value.name) << '\n';
4931         s << '}';
4932         return s;
4933 }
4934
4935 std::ostream& operator<< (std::ostream& s, const VkExportMemoryWin32HandleInfoKHR& value)
4936 {
4937         s << "VkExportMemoryWin32HandleInfoKHR = {\n";
4938         s << "\tsType = " << value.sType << '\n';
4939         s << "\tpNext = " << value.pNext << '\n';
4940         s << "\tpAttributes = " << value.pAttributes << '\n';
4941         s << "\tdwAccess = " << value.dwAccess << '\n';
4942         s << "\tname = " << getCharPtrStr(value.name) << '\n';
4943         s << '}';
4944         return s;
4945 }
4946
4947 std::ostream& operator<< (std::ostream& s, const VkMemoryWin32HandlePropertiesKHR& value)
4948 {
4949         s << "VkMemoryWin32HandlePropertiesKHR = {\n";
4950         s << "\tsType = " << value.sType << '\n';
4951         s << "\tpNext = " << value.pNext << '\n';
4952         s << "\tmemoryTypeBits = " << value.memoryTypeBits << '\n';
4953         s << '}';
4954         return s;
4955 }
4956
4957 std::ostream& operator<< (std::ostream& s, const VkMemoryGetWin32HandleInfoKHR& value)
4958 {
4959         s << "VkMemoryGetWin32HandleInfoKHR = {\n";
4960         s << "\tsType = " << value.sType << '\n';
4961         s << "\tpNext = " << value.pNext << '\n';
4962         s << "\tmemory = " << value.memory << '\n';
4963         s << "\thandleType = " << value.handleType << '\n';
4964         s << '}';
4965         return s;
4966 }
4967
4968 std::ostream& operator<< (std::ostream& s, const VkImportMemoryFdInfoKHR& value)
4969 {
4970         s << "VkImportMemoryFdInfoKHR = {\n";
4971         s << "\tsType = " << value.sType << '\n';
4972         s << "\tpNext = " << value.pNext << '\n';
4973         s << "\thandleType = " << value.handleType << '\n';
4974         s << "\tfd = " << value.fd << '\n';
4975         s << '}';
4976         return s;
4977 }
4978
4979 std::ostream& operator<< (std::ostream& s, const VkMemoryFdPropertiesKHR& value)
4980 {
4981         s << "VkMemoryFdPropertiesKHR = {\n";
4982         s << "\tsType = " << value.sType << '\n';
4983         s << "\tpNext = " << value.pNext << '\n';
4984         s << "\tmemoryTypeBits = " << value.memoryTypeBits << '\n';
4985         s << '}';
4986         return s;
4987 }
4988
4989 std::ostream& operator<< (std::ostream& s, const VkMemoryGetFdInfoKHR& value)
4990 {
4991         s << "VkMemoryGetFdInfoKHR = {\n";
4992         s << "\tsType = " << value.sType << '\n';
4993         s << "\tpNext = " << value.pNext << '\n';
4994         s << "\tmemory = " << value.memory << '\n';
4995         s << "\thandleType = " << value.handleType << '\n';
4996         s << '}';
4997         return s;
4998 }
4999
5000 std::ostream& operator<< (std::ostream& s, const VkWin32KeyedMutexAcquireReleaseInfoKHR& value)
5001 {
5002         s << "VkWin32KeyedMutexAcquireReleaseInfoKHR = {\n";
5003         s << "\tsType = " << value.sType << '\n';
5004         s << "\tpNext = " << value.pNext << '\n';
5005         s << "\tacquireCount = " << value.acquireCount << '\n';
5006         s << "\tpAcquireSyncs = " << value.pAcquireSyncs << '\n';
5007         s << "\tpAcquireKeys = " << value.pAcquireKeys << '\n';
5008         s << "\tpAcquireTimeouts = " << value.pAcquireTimeouts << '\n';
5009         s << "\treleaseCount = " << value.releaseCount << '\n';
5010         s << "\tpReleaseSyncs = " << value.pReleaseSyncs << '\n';
5011         s << "\tpReleaseKeys = " << value.pReleaseKeys << '\n';
5012         s << '}';
5013         return s;
5014 }
5015
5016 std::ostream& operator<< (std::ostream& s, const VkImportSemaphoreWin32HandleInfoKHR& value)
5017 {
5018         s << "VkImportSemaphoreWin32HandleInfoKHR = {\n";
5019         s << "\tsType = " << value.sType << '\n';
5020         s << "\tpNext = " << value.pNext << '\n';
5021         s << "\tsemaphore = " << value.semaphore << '\n';
5022         s << "\tflags = " << getSemaphoreImportFlagsStr(value.flags) << '\n';
5023         s << "\thandleType = " << value.handleType << '\n';
5024         s << "\thandle = " << value.handle << '\n';
5025         s << "\tname = " << getCharPtrStr(value.name) << '\n';
5026         s << '}';
5027         return s;
5028 }
5029
5030 std::ostream& operator<< (std::ostream& s, const VkExportSemaphoreWin32HandleInfoKHR& value)
5031 {
5032         s << "VkExportSemaphoreWin32HandleInfoKHR = {\n";
5033         s << "\tsType = " << value.sType << '\n';
5034         s << "\tpNext = " << value.pNext << '\n';
5035         s << "\tpAttributes = " << value.pAttributes << '\n';
5036         s << "\tdwAccess = " << value.dwAccess << '\n';
5037         s << "\tname = " << getCharPtrStr(value.name) << '\n';
5038         s << '}';
5039         return s;
5040 }
5041
5042 std::ostream& operator<< (std::ostream& s, const VkD3D12FenceSubmitInfoKHR& value)
5043 {
5044         s << "VkD3D12FenceSubmitInfoKHR = {\n";
5045         s << "\tsType = " << value.sType << '\n';
5046         s << "\tpNext = " << value.pNext << '\n';
5047         s << "\twaitSemaphoreValuesCount = " << value.waitSemaphoreValuesCount << '\n';
5048         s << "\tpWaitSemaphoreValues = " << value.pWaitSemaphoreValues << '\n';
5049         s << "\tsignalSemaphoreValuesCount = " << value.signalSemaphoreValuesCount << '\n';
5050         s << "\tpSignalSemaphoreValues = " << value.pSignalSemaphoreValues << '\n';
5051         s << '}';
5052         return s;
5053 }
5054
5055 std::ostream& operator<< (std::ostream& s, const VkSemaphoreGetWin32HandleInfoKHR& value)
5056 {
5057         s << "VkSemaphoreGetWin32HandleInfoKHR = {\n";
5058         s << "\tsType = " << value.sType << '\n';
5059         s << "\tpNext = " << value.pNext << '\n';
5060         s << "\tsemaphore = " << value.semaphore << '\n';
5061         s << "\thandleType = " << value.handleType << '\n';
5062         s << '}';
5063         return s;
5064 }
5065
5066 std::ostream& operator<< (std::ostream& s, const VkImportSemaphoreFdInfoKHR& value)
5067 {
5068         s << "VkImportSemaphoreFdInfoKHR = {\n";
5069         s << "\tsType = " << value.sType << '\n';
5070         s << "\tpNext = " << value.pNext << '\n';
5071         s << "\tsemaphore = " << value.semaphore << '\n';
5072         s << "\tflags = " << getSemaphoreImportFlagsStr(value.flags) << '\n';
5073         s << "\thandleType = " << value.handleType << '\n';
5074         s << "\tfd = " << value.fd << '\n';
5075         s << '}';
5076         return s;
5077 }
5078
5079 std::ostream& operator<< (std::ostream& s, const VkSemaphoreGetFdInfoKHR& value)
5080 {
5081         s << "VkSemaphoreGetFdInfoKHR = {\n";
5082         s << "\tsType = " << value.sType << '\n';
5083         s << "\tpNext = " << value.pNext << '\n';
5084         s << "\tsemaphore = " << value.semaphore << '\n';
5085         s << "\thandleType = " << value.handleType << '\n';
5086         s << '}';
5087         return s;
5088 }
5089
5090 std::ostream& operator<< (std::ostream& s, const VkPhysicalDevicePushDescriptorPropertiesKHR& value)
5091 {
5092         s << "VkPhysicalDevicePushDescriptorPropertiesKHR = {\n";
5093         s << "\tsType = " << value.sType << '\n';
5094         s << "\tpNext = " << value.pNext << '\n';
5095         s << "\tmaxPushDescriptors = " << value.maxPushDescriptors << '\n';
5096         s << '}';
5097         return s;
5098 }
5099
5100 std::ostream& operator<< (std::ostream& s, const VkRectLayerKHR& value)
5101 {
5102         s << "VkRectLayerKHR = {\n";
5103         s << "\toffset = " << value.offset << '\n';
5104         s << "\textent = " << value.extent << '\n';
5105         s << "\tlayer = " << value.layer << '\n';
5106         s << '}';
5107         return s;
5108 }
5109
5110 std::ostream& operator<< (std::ostream& s, const VkPresentRegionKHR& value)
5111 {
5112         s << "VkPresentRegionKHR = {\n";
5113         s << "\trectangleCount = " << value.rectangleCount << '\n';
5114         s << "\tpRectangles = " << value.pRectangles << '\n';
5115         s << '}';
5116         return s;
5117 }
5118
5119 std::ostream& operator<< (std::ostream& s, const VkPresentRegionsKHR& value)
5120 {
5121         s << "VkPresentRegionsKHR = {\n";
5122         s << "\tsType = " << value.sType << '\n';
5123         s << "\tpNext = " << value.pNext << '\n';
5124         s << "\tswapchainCount = " << value.swapchainCount << '\n';
5125         s << "\tpRegions = " << value.pRegions << '\n';
5126         s << '}';
5127         return s;
5128 }
5129
5130 std::ostream& operator<< (std::ostream& s, const VkAttachmentDescription2KHR& value)
5131 {
5132         s << "VkAttachmentDescription2KHR = {\n";
5133         s << "\tsType = " << value.sType << '\n';
5134         s << "\tpNext = " << value.pNext << '\n';
5135         s << "\tflags = " << getAttachmentDescriptionFlagsStr(value.flags) << '\n';
5136         s << "\tformat = " << value.format << '\n';
5137         s << "\tsamples = " << value.samples << '\n';
5138         s << "\tloadOp = " << value.loadOp << '\n';
5139         s << "\tstoreOp = " << value.storeOp << '\n';
5140         s << "\tstencilLoadOp = " << value.stencilLoadOp << '\n';
5141         s << "\tstencilStoreOp = " << value.stencilStoreOp << '\n';
5142         s << "\tinitialLayout = " << value.initialLayout << '\n';
5143         s << "\tfinalLayout = " << value.finalLayout << '\n';
5144         s << '}';
5145         return s;
5146 }
5147
5148 std::ostream& operator<< (std::ostream& s, const VkAttachmentReference2KHR& value)
5149 {
5150         s << "VkAttachmentReference2KHR = {\n";
5151         s << "\tsType = " << value.sType << '\n';
5152         s << "\tpNext = " << value.pNext << '\n';
5153         s << "\tattachment = " << value.attachment << '\n';
5154         s << "\tlayout = " << value.layout << '\n';
5155         s << "\taspectMask = " << getImageAspectFlagsStr(value.aspectMask) << '\n';
5156         s << '}';
5157         return s;
5158 }
5159
5160 std::ostream& operator<< (std::ostream& s, const VkSubpassDescription2KHR& value)
5161 {
5162         s << "VkSubpassDescription2KHR = {\n";
5163         s << "\tsType = " << value.sType << '\n';
5164         s << "\tpNext = " << value.pNext << '\n';
5165         s << "\tflags = " << getSubpassDescriptionFlagsStr(value.flags) << '\n';
5166         s << "\tpipelineBindPoint = " << value.pipelineBindPoint << '\n';
5167         s << "\tviewMask = " << value.viewMask << '\n';
5168         s << "\tinputAttachmentCount = " << value.inputAttachmentCount << '\n';
5169         s << "\tpInputAttachments = " << value.pInputAttachments << '\n';
5170         s << "\tcolorAttachmentCount = " << value.colorAttachmentCount << '\n';
5171         s << "\tpColorAttachments = " << value.pColorAttachments << '\n';
5172         s << "\tpResolveAttachments = " << value.pResolveAttachments << '\n';
5173         s << "\tpDepthStencilAttachment = " << value.pDepthStencilAttachment << '\n';
5174         s << "\tpreserveAttachmentCount = " << value.preserveAttachmentCount << '\n';
5175         s << "\tpPreserveAttachments = " << value.pPreserveAttachments << '\n';
5176         s << '}';
5177         return s;
5178 }
5179
5180 std::ostream& operator<< (std::ostream& s, const VkSubpassDependency2KHR& value)
5181 {
5182         s << "VkSubpassDependency2KHR = {\n";
5183         s << "\tsType = " << value.sType << '\n';
5184         s << "\tpNext = " << value.pNext << '\n';
5185         s << "\tsrcSubpass = " << value.srcSubpass << '\n';
5186         s << "\tdstSubpass = " << value.dstSubpass << '\n';
5187         s << "\tsrcStageMask = " << getPipelineStageFlagsStr(value.srcStageMask) << '\n';
5188         s << "\tdstStageMask = " << getPipelineStageFlagsStr(value.dstStageMask) << '\n';
5189         s << "\tsrcAccessMask = " << getAccessFlagsStr(value.srcAccessMask) << '\n';
5190         s << "\tdstAccessMask = " << getAccessFlagsStr(value.dstAccessMask) << '\n';
5191         s << "\tdependencyFlags = " << getDependencyFlagsStr(value.dependencyFlags) << '\n';
5192         s << "\tviewOffset = " << value.viewOffset << '\n';
5193         s << '}';
5194         return s;
5195 }
5196
5197 std::ostream& operator<< (std::ostream& s, const VkRenderPassCreateInfo2KHR& value)
5198 {
5199         s << "VkRenderPassCreateInfo2KHR = {\n";
5200         s << "\tsType = " << value.sType << '\n';
5201         s << "\tpNext = " << value.pNext << '\n';
5202         s << "\tflags = " << getRenderPassCreateFlagsStr(value.flags) << '\n';
5203         s << "\tattachmentCount = " << value.attachmentCount << '\n';
5204         s << "\tpAttachments = " << value.pAttachments << '\n';
5205         s << "\tsubpassCount = " << value.subpassCount << '\n';
5206         s << "\tpSubpasses = " << value.pSubpasses << '\n';
5207         s << "\tdependencyCount = " << value.dependencyCount << '\n';
5208         s << "\tpDependencies = " << value.pDependencies << '\n';
5209         s << "\tcorrelatedViewMaskCount = " << value.correlatedViewMaskCount << '\n';
5210         s << "\tpCorrelatedViewMasks = " << value.pCorrelatedViewMasks << '\n';
5211         s << '}';
5212         return s;
5213 }
5214
5215 std::ostream& operator<< (std::ostream& s, const VkSubpassBeginInfoKHR& value)
5216 {
5217         s << "VkSubpassBeginInfoKHR = {\n";
5218         s << "\tsType = " << value.sType << '\n';
5219         s << "\tpNext = " << value.pNext << '\n';
5220         s << "\tcontents = " << value.contents << '\n';
5221         s << '}';
5222         return s;
5223 }
5224
5225 std::ostream& operator<< (std::ostream& s, const VkSubpassEndInfoKHR& value)
5226 {
5227         s << "VkSubpassEndInfoKHR = {\n";
5228         s << "\tsType = " << value.sType << '\n';
5229         s << "\tpNext = " << value.pNext << '\n';
5230         s << '}';
5231         return s;
5232 }
5233
5234 std::ostream& operator<< (std::ostream& s, const VkSharedPresentSurfaceCapabilitiesKHR& value)
5235 {
5236         s << "VkSharedPresentSurfaceCapabilitiesKHR = {\n";
5237         s << "\tsType = " << value.sType << '\n';
5238         s << "\tpNext = " << value.pNext << '\n';
5239         s << "\tsharedPresentSupportedUsageFlags = " << getImageUsageFlagsStr(value.sharedPresentSupportedUsageFlags) << '\n';
5240         s << '}';
5241         return s;
5242 }
5243
5244 std::ostream& operator<< (std::ostream& s, const VkImportFenceWin32HandleInfoKHR& value)
5245 {
5246         s << "VkImportFenceWin32HandleInfoKHR = {\n";
5247         s << "\tsType = " << value.sType << '\n';
5248         s << "\tpNext = " << value.pNext << '\n';
5249         s << "\tfence = " << value.fence << '\n';
5250         s << "\tflags = " << getFenceImportFlagsStr(value.flags) << '\n';
5251         s << "\thandleType = " << value.handleType << '\n';
5252         s << "\thandle = " << value.handle << '\n';
5253         s << "\tname = " << getCharPtrStr(value.name) << '\n';
5254         s << '}';
5255         return s;
5256 }
5257
5258 std::ostream& operator<< (std::ostream& s, const VkExportFenceWin32HandleInfoKHR& value)
5259 {
5260         s << "VkExportFenceWin32HandleInfoKHR = {\n";
5261         s << "\tsType = " << value.sType << '\n';
5262         s << "\tpNext = " << value.pNext << '\n';
5263         s << "\tpAttributes = " << value.pAttributes << '\n';
5264         s << "\tdwAccess = " << value.dwAccess << '\n';
5265         s << "\tname = " << getCharPtrStr(value.name) << '\n';
5266         s << '}';
5267         return s;
5268 }
5269
5270 std::ostream& operator<< (std::ostream& s, const VkFenceGetWin32HandleInfoKHR& value)
5271 {
5272         s << "VkFenceGetWin32HandleInfoKHR = {\n";
5273         s << "\tsType = " << value.sType << '\n';
5274         s << "\tpNext = " << value.pNext << '\n';
5275         s << "\tfence = " << value.fence << '\n';
5276         s << "\thandleType = " << value.handleType << '\n';
5277         s << '}';
5278         return s;
5279 }
5280
5281 std::ostream& operator<< (std::ostream& s, const VkImportFenceFdInfoKHR& value)
5282 {
5283         s << "VkImportFenceFdInfoKHR = {\n";
5284         s << "\tsType = " << value.sType << '\n';
5285         s << "\tpNext = " << value.pNext << '\n';
5286         s << "\tfence = " << value.fence << '\n';
5287         s << "\tflags = " << getFenceImportFlagsStr(value.flags) << '\n';
5288         s << "\thandleType = " << value.handleType << '\n';
5289         s << "\tfd = " << value.fd << '\n';
5290         s << '}';
5291         return s;
5292 }
5293
5294 std::ostream& operator<< (std::ostream& s, const VkFenceGetFdInfoKHR& value)
5295 {
5296         s << "VkFenceGetFdInfoKHR = {\n";
5297         s << "\tsType = " << value.sType << '\n';
5298         s << "\tpNext = " << value.pNext << '\n';
5299         s << "\tfence = " << value.fence << '\n';
5300         s << "\thandleType = " << value.handleType << '\n';
5301         s << '}';
5302         return s;
5303 }
5304
5305 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceSurfaceInfo2KHR& value)
5306 {
5307         s << "VkPhysicalDeviceSurfaceInfo2KHR = {\n";
5308         s << "\tsType = " << value.sType << '\n';
5309         s << "\tpNext = " << value.pNext << '\n';
5310         s << "\tsurface = " << value.surface << '\n';
5311         s << '}';
5312         return s;
5313 }
5314
5315 std::ostream& operator<< (std::ostream& s, const VkSurfaceCapabilities2KHR& value)
5316 {
5317         s << "VkSurfaceCapabilities2KHR = {\n";
5318         s << "\tsType = " << value.sType << '\n';
5319         s << "\tpNext = " << value.pNext << '\n';
5320         s << "\tsurfaceCapabilities = " << value.surfaceCapabilities << '\n';
5321         s << '}';
5322         return s;
5323 }
5324
5325 std::ostream& operator<< (std::ostream& s, const VkSurfaceFormat2KHR& value)
5326 {
5327         s << "VkSurfaceFormat2KHR = {\n";
5328         s << "\tsType = " << value.sType << '\n';
5329         s << "\tpNext = " << value.pNext << '\n';
5330         s << "\tsurfaceFormat = " << value.surfaceFormat << '\n';
5331         s << '}';
5332         return s;
5333 }
5334
5335 std::ostream& operator<< (std::ostream& s, const VkDisplayProperties2KHR& value)
5336 {
5337         s << "VkDisplayProperties2KHR = {\n";
5338         s << "\tsType = " << value.sType << '\n';
5339         s << "\tpNext = " << value.pNext << '\n';
5340         s << "\tdisplayProperties = " << value.displayProperties << '\n';
5341         s << '}';
5342         return s;
5343 }
5344
5345 std::ostream& operator<< (std::ostream& s, const VkDisplayPlaneProperties2KHR& value)
5346 {
5347         s << "VkDisplayPlaneProperties2KHR = {\n";
5348         s << "\tsType = " << value.sType << '\n';
5349         s << "\tpNext = " << value.pNext << '\n';
5350         s << "\tdisplayPlaneProperties = " << value.displayPlaneProperties << '\n';
5351         s << '}';
5352         return s;
5353 }
5354
5355 std::ostream& operator<< (std::ostream& s, const VkDisplayModeProperties2KHR& value)
5356 {
5357         s << "VkDisplayModeProperties2KHR = {\n";
5358         s << "\tsType = " << value.sType << '\n';
5359         s << "\tpNext = " << value.pNext << '\n';
5360         s << "\tdisplayModeProperties = " << value.displayModeProperties << '\n';
5361         s << '}';
5362         return s;
5363 }
5364
5365 std::ostream& operator<< (std::ostream& s, const VkDisplayPlaneInfo2KHR& value)
5366 {
5367         s << "VkDisplayPlaneInfo2KHR = {\n";
5368         s << "\tsType = " << value.sType << '\n';
5369         s << "\tpNext = " << value.pNext << '\n';
5370         s << "\tmode = " << value.mode << '\n';
5371         s << "\tplaneIndex = " << value.planeIndex << '\n';
5372         s << '}';
5373         return s;
5374 }
5375
5376 std::ostream& operator<< (std::ostream& s, const VkDisplayPlaneCapabilities2KHR& value)
5377 {
5378         s << "VkDisplayPlaneCapabilities2KHR = {\n";
5379         s << "\tsType = " << value.sType << '\n';
5380         s << "\tpNext = " << value.pNext << '\n';
5381         s << "\tcapabilities = " << value.capabilities << '\n';
5382         s << '}';
5383         return s;
5384 }
5385
5386 std::ostream& operator<< (std::ostream& s, const VkImageFormatListCreateInfoKHR& value)
5387 {
5388         s << "VkImageFormatListCreateInfoKHR = {\n";
5389         s << "\tsType = " << value.sType << '\n';
5390         s << "\tpNext = " << value.pNext << '\n';
5391         s << "\tviewFormatCount = " << value.viewFormatCount << '\n';
5392         s << "\tpViewFormats = " << value.pViewFormats << '\n';
5393         s << '}';
5394         return s;
5395 }
5396
5397 std::ostream& operator<< (std::ostream& s, const VkConformanceVersionKHR& value)
5398 {
5399         s << "VkConformanceVersionKHR = {\n";
5400         s << "\tmajor = " << value.major << '\n';
5401         s << "\tminor = " << value.minor << '\n';
5402         s << "\tsubminor = " << value.subminor << '\n';
5403         s << "\tpatch = " << value.patch << '\n';
5404         s << '}';
5405         return s;
5406 }
5407
5408 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceDriverPropertiesKHR& value)
5409 {
5410         s << "VkPhysicalDeviceDriverPropertiesKHR = {\n";
5411         s << "\tsType = " << value.sType << '\n';
5412         s << "\tpNext = " << value.pNext << '\n';
5413         s << "\tdriverID = " << value.driverID << '\n';
5414         s << "\tdriverName = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<char>(DE_ARRAY_BEGIN(value.driverName)), tcu::Format::HexIterator<char>(DE_ARRAY_END(value.driverName))) << '\n';
5415         s << "\tdriverInfo = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<char>(DE_ARRAY_BEGIN(value.driverInfo)), tcu::Format::HexIterator<char>(DE_ARRAY_END(value.driverInfo))) << '\n';
5416         s << "\tconformanceVersion = " << value.conformanceVersion << '\n';
5417         s << '}';
5418         return s;
5419 }
5420
5421 std::ostream& operator<< (std::ostream& s, const VkDebugReportCallbackCreateInfoEXT& value)
5422 {
5423         s << "VkDebugReportCallbackCreateInfoEXT = {\n";
5424         s << "\tsType = " << value.sType << '\n';
5425         s << "\tpNext = " << value.pNext << '\n';
5426         s << "\tflags = " << getDebugReportFlagsEXTStr(value.flags) << '\n';
5427         s << "\tpfnCallback = " << value.pfnCallback << '\n';
5428         s << "\tpUserData = " << value.pUserData << '\n';
5429         s << '}';
5430         return s;
5431 }
5432
5433 std::ostream& operator<< (std::ostream& s, const VkPipelineRasterizationStateRasterizationOrderAMD& value)
5434 {
5435         s << "VkPipelineRasterizationStateRasterizationOrderAMD = {\n";
5436         s << "\tsType = " << value.sType << '\n';
5437         s << "\tpNext = " << value.pNext << '\n';
5438         s << "\trasterizationOrder = " << value.rasterizationOrder << '\n';
5439         s << '}';
5440         return s;
5441 }
5442
5443 std::ostream& operator<< (std::ostream& s, const VkDebugMarkerObjectNameInfoEXT& value)
5444 {
5445         s << "VkDebugMarkerObjectNameInfoEXT = {\n";
5446         s << "\tsType = " << value.sType << '\n';
5447         s << "\tpNext = " << value.pNext << '\n';
5448         s << "\tobjectType = " << value.objectType << '\n';
5449         s << "\tobject = " << value.object << '\n';
5450         s << "\tpObjectName = " << getCharPtrStr(value.pObjectName) << '\n';
5451         s << '}';
5452         return s;
5453 }
5454
5455 std::ostream& operator<< (std::ostream& s, const VkDebugMarkerObjectTagInfoEXT& value)
5456 {
5457         s << "VkDebugMarkerObjectTagInfoEXT = {\n";
5458         s << "\tsType = " << value.sType << '\n';
5459         s << "\tpNext = " << value.pNext << '\n';
5460         s << "\tobjectType = " << value.objectType << '\n';
5461         s << "\tobject = " << value.object << '\n';
5462         s << "\ttagName = " << value.tagName << '\n';
5463         s << "\ttagSize = " << value.tagSize << '\n';
5464         s << "\tpTag = " << value.pTag << '\n';
5465         s << '}';
5466         return s;
5467 }
5468
5469 std::ostream& operator<< (std::ostream& s, const VkDebugMarkerMarkerInfoEXT& value)
5470 {
5471         s << "VkDebugMarkerMarkerInfoEXT = {\n";
5472         s << "\tsType = " << value.sType << '\n';
5473         s << "\tpNext = " << value.pNext << '\n';
5474         s << "\tpMarkerName = " << getCharPtrStr(value.pMarkerName) << '\n';
5475         s << "\tcolor = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.color), DE_ARRAY_END(value.color)) << '\n';
5476         s << '}';
5477         return s;
5478 }
5479
5480 std::ostream& operator<< (std::ostream& s, const VkDedicatedAllocationImageCreateInfoNV& value)
5481 {
5482         s << "VkDedicatedAllocationImageCreateInfoNV = {\n";
5483         s << "\tsType = " << value.sType << '\n';
5484         s << "\tpNext = " << value.pNext << '\n';
5485         s << "\tdedicatedAllocation = " << value.dedicatedAllocation << '\n';
5486         s << '}';
5487         return s;
5488 }
5489
5490 std::ostream& operator<< (std::ostream& s, const VkDedicatedAllocationBufferCreateInfoNV& value)
5491 {
5492         s << "VkDedicatedAllocationBufferCreateInfoNV = {\n";
5493         s << "\tsType = " << value.sType << '\n';
5494         s << "\tpNext = " << value.pNext << '\n';
5495         s << "\tdedicatedAllocation = " << value.dedicatedAllocation << '\n';
5496         s << '}';
5497         return s;
5498 }
5499
5500 std::ostream& operator<< (std::ostream& s, const VkDedicatedAllocationMemoryAllocateInfoNV& value)
5501 {
5502         s << "VkDedicatedAllocationMemoryAllocateInfoNV = {\n";
5503         s << "\tsType = " << value.sType << '\n';
5504         s << "\tpNext = " << value.pNext << '\n';
5505         s << "\timage = " << value.image << '\n';
5506         s << "\tbuffer = " << value.buffer << '\n';
5507         s << '}';
5508         return s;
5509 }
5510
5511 std::ostream& operator<< (std::ostream& s, const VkTextureLODGatherFormatPropertiesAMD& value)
5512 {
5513         s << "VkTextureLODGatherFormatPropertiesAMD = {\n";
5514         s << "\tsType = " << value.sType << '\n';
5515         s << "\tpNext = " << value.pNext << '\n';
5516         s << "\tsupportsTextureGatherLODBiasAMD = " << value.supportsTextureGatherLODBiasAMD << '\n';
5517         s << '}';
5518         return s;
5519 }
5520
5521 std::ostream& operator<< (std::ostream& s, const VkExternalImageFormatPropertiesNV& value)
5522 {
5523         s << "VkExternalImageFormatPropertiesNV = {\n";
5524         s << "\timageFormatProperties = " << value.imageFormatProperties << '\n';
5525         s << "\texternalMemoryFeatures = " << getExternalMemoryFeatureFlagsNVStr(value.externalMemoryFeatures) << '\n';
5526         s << "\texportFromImportedHandleTypes = " << getExternalMemoryHandleTypeFlagsNVStr(value.exportFromImportedHandleTypes) << '\n';
5527         s << "\tcompatibleHandleTypes = " << getExternalMemoryHandleTypeFlagsNVStr(value.compatibleHandleTypes) << '\n';
5528         s << '}';
5529         return s;
5530 }
5531
5532 std::ostream& operator<< (std::ostream& s, const VkExternalMemoryImageCreateInfoNV& value)
5533 {
5534         s << "VkExternalMemoryImageCreateInfoNV = {\n";
5535         s << "\tsType = " << value.sType << '\n';
5536         s << "\tpNext = " << value.pNext << '\n';
5537         s << "\thandleTypes = " << getExternalMemoryHandleTypeFlagsNVStr(value.handleTypes) << '\n';
5538         s << '}';
5539         return s;
5540 }
5541
5542 std::ostream& operator<< (std::ostream& s, const VkExportMemoryAllocateInfoNV& value)
5543 {
5544         s << "VkExportMemoryAllocateInfoNV = {\n";
5545         s << "\tsType = " << value.sType << '\n';
5546         s << "\tpNext = " << value.pNext << '\n';
5547         s << "\thandleTypes = " << getExternalMemoryHandleTypeFlagsNVStr(value.handleTypes) << '\n';
5548         s << '}';
5549         return s;
5550 }
5551
5552 std::ostream& operator<< (std::ostream& s, const VkImportMemoryWin32HandleInfoNV& value)
5553 {
5554         s << "VkImportMemoryWin32HandleInfoNV = {\n";
5555         s << "\tsType = " << value.sType << '\n';
5556         s << "\tpNext = " << value.pNext << '\n';
5557         s << "\thandleType = " << getExternalMemoryHandleTypeFlagsNVStr(value.handleType) << '\n';
5558         s << "\thandle = " << value.handle << '\n';
5559         s << '}';
5560         return s;
5561 }
5562
5563 std::ostream& operator<< (std::ostream& s, const VkExportMemoryWin32HandleInfoNV& value)
5564 {
5565         s << "VkExportMemoryWin32HandleInfoNV = {\n";
5566         s << "\tsType = " << value.sType << '\n';
5567         s << "\tpNext = " << value.pNext << '\n';
5568         s << "\tpAttributes = " << value.pAttributes << '\n';
5569         s << "\tdwAccess = " << value.dwAccess << '\n';
5570         s << '}';
5571         return s;
5572 }
5573
5574 std::ostream& operator<< (std::ostream& s, const VkWin32KeyedMutexAcquireReleaseInfoNV& value)
5575 {
5576         s << "VkWin32KeyedMutexAcquireReleaseInfoNV = {\n";
5577         s << "\tsType = " << value.sType << '\n';
5578         s << "\tpNext = " << value.pNext << '\n';
5579         s << "\tacquireCount = " << value.acquireCount << '\n';
5580         s << "\tpAcquireSyncs = " << value.pAcquireSyncs << '\n';
5581         s << "\tpAcquireKeys = " << value.pAcquireKeys << '\n';
5582         s << "\tpAcquireTimeoutMilliseconds = " << value.pAcquireTimeoutMilliseconds << '\n';
5583         s << "\treleaseCount = " << value.releaseCount << '\n';
5584         s << "\tpReleaseSyncs = " << value.pReleaseSyncs << '\n';
5585         s << "\tpReleaseKeys = " << value.pReleaseKeys << '\n';
5586         s << '}';
5587         return s;
5588 }
5589
5590 std::ostream& operator<< (std::ostream& s, const VkValidationFlagsEXT& value)
5591 {
5592         s << "VkValidationFlagsEXT = {\n";
5593         s << "\tsType = " << value.sType << '\n';
5594         s << "\tpNext = " << value.pNext << '\n';
5595         s << "\tdisabledValidationCheckCount = " << value.disabledValidationCheckCount << '\n';
5596         s << "\tpDisabledValidationChecks = " << value.pDisabledValidationChecks << '\n';
5597         s << '}';
5598         return s;
5599 }
5600
5601 std::ostream& operator<< (std::ostream& s, const VkViSurfaceCreateInfoNN& value)
5602 {
5603         s << "VkViSurfaceCreateInfoNN = {\n";
5604         s << "\tsType = " << value.sType << '\n';
5605         s << "\tpNext = " << value.pNext << '\n';
5606         s << "\tflags = " << getViSurfaceCreateFlagsNNStr(value.flags) << '\n';
5607         s << "\twindow = " << value.window << '\n';
5608         s << '}';
5609         return s;
5610 }
5611
5612 std::ostream& operator<< (std::ostream& s, const VkConditionalRenderingBeginInfoEXT& value)
5613 {
5614         s << "VkConditionalRenderingBeginInfoEXT = {\n";
5615         s << "\tsType = " << value.sType << '\n';
5616         s << "\tpNext = " << value.pNext << '\n';
5617         s << "\tbuffer = " << value.buffer << '\n';
5618         s << "\toffset = " << value.offset << '\n';
5619         s << "\tflags = " << getConditionalRenderingFlagsEXTStr(value.flags) << '\n';
5620         s << '}';
5621         return s;
5622 }
5623
5624 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceConditionalRenderingFeaturesEXT& value)
5625 {
5626         s << "VkPhysicalDeviceConditionalRenderingFeaturesEXT = {\n";
5627         s << "\tsType = " << value.sType << '\n';
5628         s << "\tpNext = " << value.pNext << '\n';
5629         s << "\tconditionalRendering = " << value.conditionalRendering << '\n';
5630         s << "\tinheritedConditionalRendering = " << value.inheritedConditionalRendering << '\n';
5631         s << '}';
5632         return s;
5633 }
5634
5635 std::ostream& operator<< (std::ostream& s, const VkCommandBufferInheritanceConditionalRenderingInfoEXT& value)
5636 {
5637         s << "VkCommandBufferInheritanceConditionalRenderingInfoEXT = {\n";
5638         s << "\tsType = " << value.sType << '\n';
5639         s << "\tpNext = " << value.pNext << '\n';
5640         s << "\tconditionalRenderingEnable = " << value.conditionalRenderingEnable << '\n';
5641         s << '}';
5642         return s;
5643 }
5644
5645 std::ostream& operator<< (std::ostream& s, const VkDeviceGeneratedCommandsFeaturesNVX& value)
5646 {
5647         s << "VkDeviceGeneratedCommandsFeaturesNVX = {\n";
5648         s << "\tsType = " << value.sType << '\n';
5649         s << "\tpNext = " << value.pNext << '\n';
5650         s << "\tcomputeBindingPointSupport = " << value.computeBindingPointSupport << '\n';
5651         s << '}';
5652         return s;
5653 }
5654
5655 std::ostream& operator<< (std::ostream& s, const VkDeviceGeneratedCommandsLimitsNVX& value)
5656 {
5657         s << "VkDeviceGeneratedCommandsLimitsNVX = {\n";
5658         s << "\tsType = " << value.sType << '\n';
5659         s << "\tpNext = " << value.pNext << '\n';
5660         s << "\tmaxIndirectCommandsLayoutTokenCount = " << value.maxIndirectCommandsLayoutTokenCount << '\n';
5661         s << "\tmaxObjectEntryCounts = " << value.maxObjectEntryCounts << '\n';
5662         s << "\tminSequenceCountBufferOffsetAlignment = " << value.minSequenceCountBufferOffsetAlignment << '\n';
5663         s << "\tminSequenceIndexBufferOffsetAlignment = " << value.minSequenceIndexBufferOffsetAlignment << '\n';
5664         s << "\tminCommandsTokenBufferOffsetAlignment = " << value.minCommandsTokenBufferOffsetAlignment << '\n';
5665         s << '}';
5666         return s;
5667 }
5668
5669 std::ostream& operator<< (std::ostream& s, const VkIndirectCommandsTokenNVX& value)
5670 {
5671         s << "VkIndirectCommandsTokenNVX = {\n";
5672         s << "\ttokenType = " << value.tokenType << '\n';
5673         s << "\tbuffer = " << value.buffer << '\n';
5674         s << "\toffset = " << value.offset << '\n';
5675         s << '}';
5676         return s;
5677 }
5678
5679 std::ostream& operator<< (std::ostream& s, const VkIndirectCommandsLayoutTokenNVX& value)
5680 {
5681         s << "VkIndirectCommandsLayoutTokenNVX = {\n";
5682         s << "\ttokenType = " << value.tokenType << '\n';
5683         s << "\tbindingUnit = " << value.bindingUnit << '\n';
5684         s << "\tdynamicCount = " << value.dynamicCount << '\n';
5685         s << "\tdivisor = " << value.divisor << '\n';
5686         s << '}';
5687         return s;
5688 }
5689
5690 std::ostream& operator<< (std::ostream& s, const VkIndirectCommandsLayoutCreateInfoNVX& value)
5691 {
5692         s << "VkIndirectCommandsLayoutCreateInfoNVX = {\n";
5693         s << "\tsType = " << value.sType << '\n';
5694         s << "\tpNext = " << value.pNext << '\n';
5695         s << "\tpipelineBindPoint = " << value.pipelineBindPoint << '\n';
5696         s << "\tflags = " << getIndirectCommandsLayoutUsageFlagsNVXStr(value.flags) << '\n';
5697         s << "\ttokenCount = " << value.tokenCount << '\n';
5698         s << "\tpTokens = " << value.pTokens << '\n';
5699         s << '}';
5700         return s;
5701 }
5702
5703 std::ostream& operator<< (std::ostream& s, const VkCmdProcessCommandsInfoNVX& value)
5704 {
5705         s << "VkCmdProcessCommandsInfoNVX = {\n";
5706         s << "\tsType = " << value.sType << '\n';
5707         s << "\tpNext = " << value.pNext << '\n';
5708         s << "\tobjectTable = " << value.objectTable << '\n';
5709         s << "\tindirectCommandsLayout = " << value.indirectCommandsLayout << '\n';
5710         s << "\tindirectCommandsTokenCount = " << value.indirectCommandsTokenCount << '\n';
5711         s << "\tpIndirectCommandsTokens = " << value.pIndirectCommandsTokens << '\n';
5712         s << "\tmaxSequencesCount = " << value.maxSequencesCount << '\n';
5713         s << "\ttargetCommandBuffer = " << value.targetCommandBuffer << '\n';
5714         s << "\tsequencesCountBuffer = " << value.sequencesCountBuffer << '\n';
5715         s << "\tsequencesCountOffset = " << value.sequencesCountOffset << '\n';
5716         s << "\tsequencesIndexBuffer = " << value.sequencesIndexBuffer << '\n';
5717         s << "\tsequencesIndexOffset = " << value.sequencesIndexOffset << '\n';
5718         s << '}';
5719         return s;
5720 }
5721
5722 std::ostream& operator<< (std::ostream& s, const VkCmdReserveSpaceForCommandsInfoNVX& value)
5723 {
5724         s << "VkCmdReserveSpaceForCommandsInfoNVX = {\n";
5725         s << "\tsType = " << value.sType << '\n';
5726         s << "\tpNext = " << value.pNext << '\n';
5727         s << "\tobjectTable = " << value.objectTable << '\n';
5728         s << "\tindirectCommandsLayout = " << value.indirectCommandsLayout << '\n';
5729         s << "\tmaxSequencesCount = " << value.maxSequencesCount << '\n';
5730         s << '}';
5731         return s;
5732 }
5733
5734 std::ostream& operator<< (std::ostream& s, const VkObjectTableCreateInfoNVX& value)
5735 {
5736         s << "VkObjectTableCreateInfoNVX = {\n";
5737         s << "\tsType = " << value.sType << '\n';
5738         s << "\tpNext = " << value.pNext << '\n';
5739         s << "\tobjectCount = " << value.objectCount << '\n';
5740         s << "\tpObjectEntryTypes = " << value.pObjectEntryTypes << '\n';
5741         s << "\tpObjectEntryCounts = " << value.pObjectEntryCounts << '\n';
5742         s << "\tpObjectEntryUsageFlags = " << value.pObjectEntryUsageFlags << '\n';
5743         s << "\tmaxUniformBuffersPerDescriptor = " << value.maxUniformBuffersPerDescriptor << '\n';
5744         s << "\tmaxStorageBuffersPerDescriptor = " << value.maxStorageBuffersPerDescriptor << '\n';
5745         s << "\tmaxStorageImagesPerDescriptor = " << value.maxStorageImagesPerDescriptor << '\n';
5746         s << "\tmaxSampledImagesPerDescriptor = " << value.maxSampledImagesPerDescriptor << '\n';
5747         s << "\tmaxPipelineLayouts = " << value.maxPipelineLayouts << '\n';
5748         s << '}';
5749         return s;
5750 }
5751
5752 std::ostream& operator<< (std::ostream& s, const VkObjectTableEntryNVX& value)
5753 {
5754         s << "VkObjectTableEntryNVX = {\n";
5755         s << "\ttype = " << value.type << '\n';
5756         s << "\tflags = " << getObjectEntryUsageFlagsNVXStr(value.flags) << '\n';
5757         s << '}';
5758         return s;
5759 }
5760
5761 std::ostream& operator<< (std::ostream& s, const VkObjectTablePipelineEntryNVX& value)
5762 {
5763         s << "VkObjectTablePipelineEntryNVX = {\n";
5764         s << "\ttype = " << value.type << '\n';
5765         s << "\tflags = " << getObjectEntryUsageFlagsNVXStr(value.flags) << '\n';
5766         s << "\tpipeline = " << value.pipeline << '\n';
5767         s << '}';
5768         return s;
5769 }
5770
5771 std::ostream& operator<< (std::ostream& s, const VkObjectTableDescriptorSetEntryNVX& value)
5772 {
5773         s << "VkObjectTableDescriptorSetEntryNVX = {\n";
5774         s << "\ttype = " << value.type << '\n';
5775         s << "\tflags = " << getObjectEntryUsageFlagsNVXStr(value.flags) << '\n';
5776         s << "\tpipelineLayout = " << value.pipelineLayout << '\n';
5777         s << "\tdescriptorSet = " << value.descriptorSet << '\n';
5778         s << '}';
5779         return s;
5780 }
5781
5782 std::ostream& operator<< (std::ostream& s, const VkObjectTableVertexBufferEntryNVX& value)
5783 {
5784         s << "VkObjectTableVertexBufferEntryNVX = {\n";
5785         s << "\ttype = " << value.type << '\n';
5786         s << "\tflags = " << getObjectEntryUsageFlagsNVXStr(value.flags) << '\n';
5787         s << "\tbuffer = " << value.buffer << '\n';
5788         s << '}';
5789         return s;
5790 }
5791
5792 std::ostream& operator<< (std::ostream& s, const VkObjectTableIndexBufferEntryNVX& value)
5793 {
5794         s << "VkObjectTableIndexBufferEntryNVX = {\n";
5795         s << "\ttype = " << value.type << '\n';
5796         s << "\tflags = " << getObjectEntryUsageFlagsNVXStr(value.flags) << '\n';
5797         s << "\tbuffer = " << value.buffer << '\n';
5798         s << "\tindexType = " << value.indexType << '\n';
5799         s << '}';
5800         return s;
5801 }
5802
5803 std::ostream& operator<< (std::ostream& s, const VkObjectTablePushConstantEntryNVX& value)
5804 {
5805         s << "VkObjectTablePushConstantEntryNVX = {\n";
5806         s << "\ttype = " << value.type << '\n';
5807         s << "\tflags = " << getObjectEntryUsageFlagsNVXStr(value.flags) << '\n';
5808         s << "\tpipelineLayout = " << value.pipelineLayout << '\n';
5809         s << "\tstageFlags = " << getShaderStageFlagsStr(value.stageFlags) << '\n';
5810         s << '}';
5811         return s;
5812 }
5813
5814 std::ostream& operator<< (std::ostream& s, const VkViewportWScalingNV& value)
5815 {
5816         s << "VkViewportWScalingNV = {\n";
5817         s << "\txcoeff = " << value.xcoeff << '\n';
5818         s << "\tycoeff = " << value.ycoeff << '\n';
5819         s << '}';
5820         return s;
5821 }
5822
5823 std::ostream& operator<< (std::ostream& s, const VkPipelineViewportWScalingStateCreateInfoNV& value)
5824 {
5825         s << "VkPipelineViewportWScalingStateCreateInfoNV = {\n";
5826         s << "\tsType = " << value.sType << '\n';
5827         s << "\tpNext = " << value.pNext << '\n';
5828         s << "\tviewportWScalingEnable = " << value.viewportWScalingEnable << '\n';
5829         s << "\tviewportCount = " << value.viewportCount << '\n';
5830         s << "\tpViewportWScalings = " << value.pViewportWScalings << '\n';
5831         s << '}';
5832         return s;
5833 }
5834
5835 std::ostream& operator<< (std::ostream& s, const VkSurfaceCapabilities2EXT& value)
5836 {
5837         s << "VkSurfaceCapabilities2EXT = {\n";
5838         s << "\tsType = " << value.sType << '\n';
5839         s << "\tpNext = " << value.pNext << '\n';
5840         s << "\tminImageCount = " << value.minImageCount << '\n';
5841         s << "\tmaxImageCount = " << value.maxImageCount << '\n';
5842         s << "\tcurrentExtent = " << value.currentExtent << '\n';
5843         s << "\tminImageExtent = " << value.minImageExtent << '\n';
5844         s << "\tmaxImageExtent = " << value.maxImageExtent << '\n';
5845         s << "\tmaxImageArrayLayers = " << value.maxImageArrayLayers << '\n';
5846         s << "\tsupportedTransforms = " << getSurfaceTransformFlagsKHRStr(value.supportedTransforms) << '\n';
5847         s << "\tcurrentTransform = " << value.currentTransform << '\n';
5848         s << "\tsupportedCompositeAlpha = " << getCompositeAlphaFlagsKHRStr(value.supportedCompositeAlpha) << '\n';
5849         s << "\tsupportedUsageFlags = " << getImageUsageFlagsStr(value.supportedUsageFlags) << '\n';
5850         s << "\tsupportedSurfaceCounters = " << getSurfaceCounterFlagsEXTStr(value.supportedSurfaceCounters) << '\n';
5851         s << '}';
5852         return s;
5853 }
5854
5855 std::ostream& operator<< (std::ostream& s, const VkDisplayPowerInfoEXT& value)
5856 {
5857         s << "VkDisplayPowerInfoEXT = {\n";
5858         s << "\tsType = " << value.sType << '\n';
5859         s << "\tpNext = " << value.pNext << '\n';
5860         s << "\tpowerState = " << value.powerState << '\n';
5861         s << '}';
5862         return s;
5863 }
5864
5865 std::ostream& operator<< (std::ostream& s, const VkDeviceEventInfoEXT& value)
5866 {
5867         s << "VkDeviceEventInfoEXT = {\n";
5868         s << "\tsType = " << value.sType << '\n';
5869         s << "\tpNext = " << value.pNext << '\n';
5870         s << "\tdeviceEvent = " << value.deviceEvent << '\n';
5871         s << '}';
5872         return s;
5873 }
5874
5875 std::ostream& operator<< (std::ostream& s, const VkDisplayEventInfoEXT& value)
5876 {
5877         s << "VkDisplayEventInfoEXT = {\n";
5878         s << "\tsType = " << value.sType << '\n';
5879         s << "\tpNext = " << value.pNext << '\n';
5880         s << "\tdisplayEvent = " << value.displayEvent << '\n';
5881         s << '}';
5882         return s;
5883 }
5884
5885 std::ostream& operator<< (std::ostream& s, const VkSwapchainCounterCreateInfoEXT& value)
5886 {
5887         s << "VkSwapchainCounterCreateInfoEXT = {\n";
5888         s << "\tsType = " << value.sType << '\n';
5889         s << "\tpNext = " << value.pNext << '\n';
5890         s << "\tsurfaceCounters = " << getSurfaceCounterFlagsEXTStr(value.surfaceCounters) << '\n';
5891         s << '}';
5892         return s;
5893 }
5894
5895 std::ostream& operator<< (std::ostream& s, const VkRefreshCycleDurationGOOGLE& value)
5896 {
5897         s << "VkRefreshCycleDurationGOOGLE = {\n";
5898         s << "\trefreshDuration = " << value.refreshDuration << '\n';
5899         s << '}';
5900         return s;
5901 }
5902
5903 std::ostream& operator<< (std::ostream& s, const VkPastPresentationTimingGOOGLE& value)
5904 {
5905         s << "VkPastPresentationTimingGOOGLE = {\n";
5906         s << "\tpresentID = " << value.presentID << '\n';
5907         s << "\tdesiredPresentTime = " << value.desiredPresentTime << '\n';
5908         s << "\tactualPresentTime = " << value.actualPresentTime << '\n';
5909         s << "\tearliestPresentTime = " << value.earliestPresentTime << '\n';
5910         s << "\tpresentMargin = " << value.presentMargin << '\n';
5911         s << '}';
5912         return s;
5913 }
5914
5915 std::ostream& operator<< (std::ostream& s, const VkPresentTimeGOOGLE& value)
5916 {
5917         s << "VkPresentTimeGOOGLE = {\n";
5918         s << "\tpresentID = " << value.presentID << '\n';
5919         s << "\tdesiredPresentTime = " << value.desiredPresentTime << '\n';
5920         s << '}';
5921         return s;
5922 }
5923
5924 std::ostream& operator<< (std::ostream& s, const VkPresentTimesInfoGOOGLE& value)
5925 {
5926         s << "VkPresentTimesInfoGOOGLE = {\n";
5927         s << "\tsType = " << value.sType << '\n';
5928         s << "\tpNext = " << value.pNext << '\n';
5929         s << "\tswapchainCount = " << value.swapchainCount << '\n';
5930         s << "\tpTimes = " << value.pTimes << '\n';
5931         s << '}';
5932         return s;
5933 }
5934
5935 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX& value)
5936 {
5937         s << "VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX = {\n";
5938         s << "\tsType = " << value.sType << '\n';
5939         s << "\tpNext = " << value.pNext << '\n';
5940         s << "\tperViewPositionAllComponents = " << value.perViewPositionAllComponents << '\n';
5941         s << '}';
5942         return s;
5943 }
5944
5945 std::ostream& operator<< (std::ostream& s, const VkViewportSwizzleNV& value)
5946 {
5947         s << "VkViewportSwizzleNV = {\n";
5948         s << "\tx = " << value.x << '\n';
5949         s << "\ty = " << value.y << '\n';
5950         s << "\tz = " << value.z << '\n';
5951         s << "\tw = " << value.w << '\n';
5952         s << '}';
5953         return s;
5954 }
5955
5956 std::ostream& operator<< (std::ostream& s, const VkPipelineViewportSwizzleStateCreateInfoNV& value)
5957 {
5958         s << "VkPipelineViewportSwizzleStateCreateInfoNV = {\n";
5959         s << "\tsType = " << value.sType << '\n';
5960         s << "\tpNext = " << value.pNext << '\n';
5961         s << "\tflags = " << getPipelineViewportSwizzleStateCreateFlagsNVStr(value.flags) << '\n';
5962         s << "\tviewportCount = " << value.viewportCount << '\n';
5963         s << "\tpViewportSwizzles = " << value.pViewportSwizzles << '\n';
5964         s << '}';
5965         return s;
5966 }
5967
5968 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceDiscardRectanglePropertiesEXT& value)
5969 {
5970         s << "VkPhysicalDeviceDiscardRectanglePropertiesEXT = {\n";
5971         s << "\tsType = " << value.sType << '\n';
5972         s << "\tpNext = " << value.pNext << '\n';
5973         s << "\tmaxDiscardRectangles = " << value.maxDiscardRectangles << '\n';
5974         s << '}';
5975         return s;
5976 }
5977
5978 std::ostream& operator<< (std::ostream& s, const VkPipelineDiscardRectangleStateCreateInfoEXT& value)
5979 {
5980         s << "VkPipelineDiscardRectangleStateCreateInfoEXT = {\n";
5981         s << "\tsType = " << value.sType << '\n';
5982         s << "\tpNext = " << value.pNext << '\n';
5983         s << "\tflags = " << getPipelineDiscardRectangleStateCreateFlagsEXTStr(value.flags) << '\n';
5984         s << "\tdiscardRectangleMode = " << value.discardRectangleMode << '\n';
5985         s << "\tdiscardRectangleCount = " << value.discardRectangleCount << '\n';
5986         s << "\tpDiscardRectangles = " << value.pDiscardRectangles << '\n';
5987         s << '}';
5988         return s;
5989 }
5990
5991 std::ostream& operator<< (std::ostream& s, const VkXYColorEXT& value)
5992 {
5993         s << "VkXYColorEXT = {\n";
5994         s << "\tx = " << value.x << '\n';
5995         s << "\ty = " << value.y << '\n';
5996         s << '}';
5997         return s;
5998 }
5999
6000 std::ostream& operator<< (std::ostream& s, const VkHdrMetadataEXT& value)
6001 {
6002         s << "VkHdrMetadataEXT = {\n";
6003         s << "\tsType = " << value.sType << '\n';
6004         s << "\tpNext = " << value.pNext << '\n';
6005         s << "\tdisplayPrimaryRed = " << value.displayPrimaryRed << '\n';
6006         s << "\tdisplayPrimaryGreen = " << value.displayPrimaryGreen << '\n';
6007         s << "\tdisplayPrimaryBlue = " << value.displayPrimaryBlue << '\n';
6008         s << "\twhitePoint = " << value.whitePoint << '\n';
6009         s << "\tmaxLuminance = " << value.maxLuminance << '\n';
6010         s << "\tminLuminance = " << value.minLuminance << '\n';
6011         s << "\tmaxContentLightLevel = " << value.maxContentLightLevel << '\n';
6012         s << "\tmaxFrameAverageLightLevel = " << value.maxFrameAverageLightLevel << '\n';
6013         s << '}';
6014         return s;
6015 }
6016
6017 std::ostream& operator<< (std::ostream& s, const VkIOSSurfaceCreateInfoMVK& value)
6018 {
6019         s << "VkIOSSurfaceCreateInfoMVK = {\n";
6020         s << "\tsType = " << value.sType << '\n';
6021         s << "\tpNext = " << value.pNext << '\n';
6022         s << "\tflags = " << getIOSSurfaceCreateFlagsMVKStr(value.flags) << '\n';
6023         s << "\tpView = " << value.pView << '\n';
6024         s << '}';
6025         return s;
6026 }
6027
6028 std::ostream& operator<< (std::ostream& s, const VkMacOSSurfaceCreateInfoMVK& value)
6029 {
6030         s << "VkMacOSSurfaceCreateInfoMVK = {\n";
6031         s << "\tsType = " << value.sType << '\n';
6032         s << "\tpNext = " << value.pNext << '\n';
6033         s << "\tflags = " << getMacOSSurfaceCreateFlagsMVKStr(value.flags) << '\n';
6034         s << "\tpView = " << value.pView << '\n';
6035         s << '}';
6036         return s;
6037 }
6038
6039 std::ostream& operator<< (std::ostream& s, const VkSamplerReductionModeCreateInfoEXT& value)
6040 {
6041         s << "VkSamplerReductionModeCreateInfoEXT = {\n";
6042         s << "\tsType = " << value.sType << '\n';
6043         s << "\tpNext = " << value.pNext << '\n';
6044         s << "\treductionMode = " << value.reductionMode << '\n';
6045         s << '}';
6046         return s;
6047 }
6048
6049 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT& value)
6050 {
6051         s << "VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT = {\n";
6052         s << "\tsType = " << value.sType << '\n';
6053         s << "\tpNext = " << value.pNext << '\n';
6054         s << "\tfilterMinmaxSingleComponentFormats = " << value.filterMinmaxSingleComponentFormats << '\n';
6055         s << "\tfilterMinmaxImageComponentMapping = " << value.filterMinmaxImageComponentMapping << '\n';
6056         s << '}';
6057         return s;
6058 }
6059
6060 std::ostream& operator<< (std::ostream& s, const VkSampleLocationEXT& value)
6061 {
6062         s << "VkSampleLocationEXT = {\n";
6063         s << "\tx = " << value.x << '\n';
6064         s << "\ty = " << value.y << '\n';
6065         s << '}';
6066         return s;
6067 }
6068
6069 std::ostream& operator<< (std::ostream& s, const VkSampleLocationsInfoEXT& value)
6070 {
6071         s << "VkSampleLocationsInfoEXT = {\n";
6072         s << "\tsType = " << value.sType << '\n';
6073         s << "\tpNext = " << value.pNext << '\n';
6074         s << "\tsampleLocationsPerPixel = " << value.sampleLocationsPerPixel << '\n';
6075         s << "\tsampleLocationGridSize = " << value.sampleLocationGridSize << '\n';
6076         s << "\tsampleLocationsCount = " << value.sampleLocationsCount << '\n';
6077         s << "\tpSampleLocations = " << value.pSampleLocations << '\n';
6078         s << '}';
6079         return s;
6080 }
6081
6082 std::ostream& operator<< (std::ostream& s, const VkAttachmentSampleLocationsEXT& value)
6083 {
6084         s << "VkAttachmentSampleLocationsEXT = {\n";
6085         s << "\tattachmentIndex = " << value.attachmentIndex << '\n';
6086         s << "\tsampleLocationsInfo = " << value.sampleLocationsInfo << '\n';
6087         s << '}';
6088         return s;
6089 }
6090
6091 std::ostream& operator<< (std::ostream& s, const VkSubpassSampleLocationsEXT& value)
6092 {
6093         s << "VkSubpassSampleLocationsEXT = {\n";
6094         s << "\tsubpassIndex = " << value.subpassIndex << '\n';
6095         s << "\tsampleLocationsInfo = " << value.sampleLocationsInfo << '\n';
6096         s << '}';
6097         return s;
6098 }
6099
6100 std::ostream& operator<< (std::ostream& s, const VkRenderPassSampleLocationsBeginInfoEXT& value)
6101 {
6102         s << "VkRenderPassSampleLocationsBeginInfoEXT = {\n";
6103         s << "\tsType = " << value.sType << '\n';
6104         s << "\tpNext = " << value.pNext << '\n';
6105         s << "\tattachmentInitialSampleLocationsCount = " << value.attachmentInitialSampleLocationsCount << '\n';
6106         s << "\tpAttachmentInitialSampleLocations = " << value.pAttachmentInitialSampleLocations << '\n';
6107         s << "\tpostSubpassSampleLocationsCount = " << value.postSubpassSampleLocationsCount << '\n';
6108         s << "\tpSubpassSampleLocations = " << value.pSubpassSampleLocations << '\n';
6109         s << '}';
6110         return s;
6111 }
6112
6113 std::ostream& operator<< (std::ostream& s, const VkPipelineSampleLocationsStateCreateInfoEXT& value)
6114 {
6115         s << "VkPipelineSampleLocationsStateCreateInfoEXT = {\n";
6116         s << "\tsType = " << value.sType << '\n';
6117         s << "\tpNext = " << value.pNext << '\n';
6118         s << "\tsampleLocationsEnable = " << value.sampleLocationsEnable << '\n';
6119         s << "\tsampleLocationsInfo = " << value.sampleLocationsInfo << '\n';
6120         s << '}';
6121         return s;
6122 }
6123
6124 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceSampleLocationsPropertiesEXT& value)
6125 {
6126         s << "VkPhysicalDeviceSampleLocationsPropertiesEXT = {\n";
6127         s << "\tsType = " << value.sType << '\n';
6128         s << "\tpNext = " << value.pNext << '\n';
6129         s << "\tsampleLocationSampleCounts = " << getSampleCountFlagsStr(value.sampleLocationSampleCounts) << '\n';
6130         s << "\tmaxSampleLocationGridSize = " << value.maxSampleLocationGridSize << '\n';
6131         s << "\tsampleLocationCoordinateRange = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.sampleLocationCoordinateRange), DE_ARRAY_END(value.sampleLocationCoordinateRange)) << '\n';
6132         s << "\tsampleLocationSubPixelBits = " << value.sampleLocationSubPixelBits << '\n';
6133         s << "\tvariableSampleLocations = " << value.variableSampleLocations << '\n';
6134         s << '}';
6135         return s;
6136 }
6137
6138 std::ostream& operator<< (std::ostream& s, const VkMultisamplePropertiesEXT& value)
6139 {
6140         s << "VkMultisamplePropertiesEXT = {\n";
6141         s << "\tsType = " << value.sType << '\n';
6142         s << "\tpNext = " << value.pNext << '\n';
6143         s << "\tmaxSampleLocationGridSize = " << value.maxSampleLocationGridSize << '\n';
6144         s << '}';
6145         return s;
6146 }
6147
6148 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT& value)
6149 {
6150         s << "VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT = {\n";
6151         s << "\tsType = " << value.sType << '\n';
6152         s << "\tpNext = " << value.pNext << '\n';
6153         s << "\tadvancedBlendCoherentOperations = " << value.advancedBlendCoherentOperations << '\n';
6154         s << '}';
6155         return s;
6156 }
6157
6158 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT& value)
6159 {
6160         s << "VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT = {\n";
6161         s << "\tsType = " << value.sType << '\n';
6162         s << "\tpNext = " << value.pNext << '\n';
6163         s << "\tadvancedBlendMaxColorAttachments = " << value.advancedBlendMaxColorAttachments << '\n';
6164         s << "\tadvancedBlendIndependentBlend = " << value.advancedBlendIndependentBlend << '\n';
6165         s << "\tadvancedBlendNonPremultipliedSrcColor = " << value.advancedBlendNonPremultipliedSrcColor << '\n';
6166         s << "\tadvancedBlendNonPremultipliedDstColor = " << value.advancedBlendNonPremultipliedDstColor << '\n';
6167         s << "\tadvancedBlendCorrelatedOverlap = " << value.advancedBlendCorrelatedOverlap << '\n';
6168         s << "\tadvancedBlendAllOperations = " << value.advancedBlendAllOperations << '\n';
6169         s << '}';
6170         return s;
6171 }
6172
6173 std::ostream& operator<< (std::ostream& s, const VkPipelineColorBlendAdvancedStateCreateInfoEXT& value)
6174 {
6175         s << "VkPipelineColorBlendAdvancedStateCreateInfoEXT = {\n";
6176         s << "\tsType = " << value.sType << '\n';
6177         s << "\tpNext = " << value.pNext << '\n';
6178         s << "\tsrcPremultiplied = " << value.srcPremultiplied << '\n';
6179         s << "\tdstPremultiplied = " << value.dstPremultiplied << '\n';
6180         s << "\tblendOverlap = " << value.blendOverlap << '\n';
6181         s << '}';
6182         return s;
6183 }
6184
6185 std::ostream& operator<< (std::ostream& s, const VkPipelineCoverageToColorStateCreateInfoNV& value)
6186 {
6187         s << "VkPipelineCoverageToColorStateCreateInfoNV = {\n";
6188         s << "\tsType = " << value.sType << '\n';
6189         s << "\tpNext = " << value.pNext << '\n';
6190         s << "\tflags = " << getPipelineCoverageToColorStateCreateFlagsNVStr(value.flags) << '\n';
6191         s << "\tcoverageToColorEnable = " << value.coverageToColorEnable << '\n';
6192         s << "\tcoverageToColorLocation = " << value.coverageToColorLocation << '\n';
6193         s << '}';
6194         return s;
6195 }
6196
6197 std::ostream& operator<< (std::ostream& s, const VkPipelineCoverageModulationStateCreateInfoNV& value)
6198 {
6199         s << "VkPipelineCoverageModulationStateCreateInfoNV = {\n";
6200         s << "\tsType = " << value.sType << '\n';
6201         s << "\tpNext = " << value.pNext << '\n';
6202         s << "\tflags = " << getPipelineCoverageModulationStateCreateFlagsNVStr(value.flags) << '\n';
6203         s << "\tcoverageModulationMode = " << value.coverageModulationMode << '\n';
6204         s << "\tcoverageModulationTableEnable = " << value.coverageModulationTableEnable << '\n';
6205         s << "\tcoverageModulationTableCount = " << value.coverageModulationTableCount << '\n';
6206         s << "\tpCoverageModulationTable = " << value.pCoverageModulationTable << '\n';
6207         s << '}';
6208         return s;
6209 }
6210
6211 std::ostream& operator<< (std::ostream& s, const VkValidationCacheCreateInfoEXT& value)
6212 {
6213         s << "VkValidationCacheCreateInfoEXT = {\n";
6214         s << "\tsType = " << value.sType << '\n';
6215         s << "\tpNext = " << value.pNext << '\n';
6216         s << "\tflags = " << getValidationCacheCreateFlagsEXTStr(value.flags) << '\n';
6217         s << "\tinitialDataSize = " << value.initialDataSize << '\n';
6218         s << "\tpInitialData = " << value.pInitialData << '\n';
6219         s << '}';
6220         return s;
6221 }
6222
6223 std::ostream& operator<< (std::ostream& s, const VkShaderModuleValidationCacheCreateInfoEXT& value)
6224 {
6225         s << "VkShaderModuleValidationCacheCreateInfoEXT = {\n";
6226         s << "\tsType = " << value.sType << '\n';
6227         s << "\tpNext = " << value.pNext << '\n';
6228         s << "\tvalidationCache = " << value.validationCache << '\n';
6229         s << '}';
6230         return s;
6231 }
6232
6233 std::ostream& operator<< (std::ostream& s, const VkAndroidHardwareBufferUsageANDROID& value)
6234 {
6235         s << "VkAndroidHardwareBufferUsageANDROID = {\n";
6236         s << "\tsType = " << value.sType << '\n';
6237         s << "\tpNext = " << value.pNext << '\n';
6238         s << "\tandroidHardwareBufferUsage = " << value.androidHardwareBufferUsage << '\n';
6239         s << '}';
6240         return s;
6241 }
6242
6243 std::ostream& operator<< (std::ostream& s, const VkAndroidHardwareBufferPropertiesANDROID& value)
6244 {
6245         s << "VkAndroidHardwareBufferPropertiesANDROID = {\n";
6246         s << "\tsType = " << value.sType << '\n';
6247         s << "\tpNext = " << value.pNext << '\n';
6248         s << "\tallocationSize = " << value.allocationSize << '\n';
6249         s << "\tmemoryTypeBits = " << value.memoryTypeBits << '\n';
6250         s << '}';
6251         return s;
6252 }
6253
6254 std::ostream& operator<< (std::ostream& s, const VkAndroidHardwareBufferFormatPropertiesANDROID& value)
6255 {
6256         s << "VkAndroidHardwareBufferFormatPropertiesANDROID = {\n";
6257         s << "\tsType = " << value.sType << '\n';
6258         s << "\tpNext = " << value.pNext << '\n';
6259         s << "\tformat = " << value.format << '\n';
6260         s << "\texternalFormat = " << value.externalFormat << '\n';
6261         s << "\tformatFeatures = " << getFormatFeatureFlagsStr(value.formatFeatures) << '\n';
6262         s << "\tsamplerYcbcrConversionComponents = " << value.samplerYcbcrConversionComponents << '\n';
6263         s << "\tsuggestedYcbcrModel = " << value.suggestedYcbcrModel << '\n';
6264         s << "\tsuggestedYcbcrRange = " << value.suggestedYcbcrRange << '\n';
6265         s << "\tsuggestedXChromaOffset = " << value.suggestedXChromaOffset << '\n';
6266         s << "\tsuggestedYChromaOffset = " << value.suggestedYChromaOffset << '\n';
6267         s << '}';
6268         return s;
6269 }
6270
6271 std::ostream& operator<< (std::ostream& s, const VkImportAndroidHardwareBufferInfoANDROID& value)
6272 {
6273         s << "VkImportAndroidHardwareBufferInfoANDROID = {\n";
6274         s << "\tsType = " << value.sType << '\n';
6275         s << "\tpNext = " << value.pNext << '\n';
6276         s << "\tbuffer = " << value.buffer << '\n';
6277         s << '}';
6278         return s;
6279 }
6280
6281 std::ostream& operator<< (std::ostream& s, const VkMemoryGetAndroidHardwareBufferInfoANDROID& value)
6282 {
6283         s << "VkMemoryGetAndroidHardwareBufferInfoANDROID = {\n";
6284         s << "\tsType = " << value.sType << '\n';
6285         s << "\tpNext = " << value.pNext << '\n';
6286         s << "\tmemory = " << value.memory << '\n';
6287         s << '}';
6288         return s;
6289 }
6290
6291 std::ostream& operator<< (std::ostream& s, const VkExternalFormatANDROID& value)
6292 {
6293         s << "VkExternalFormatANDROID = {\n";
6294         s << "\tsType = " << value.sType << '\n';
6295         s << "\tpNext = " << value.pNext << '\n';
6296         s << "\texternalFormat = " << value.externalFormat << '\n';
6297         s << '}';
6298         return s;
6299 }
6300
6301 std::ostream& operator<< (std::ostream& s, const VkImportMemoryHostPointerInfoEXT& value)
6302 {
6303         s << "VkImportMemoryHostPointerInfoEXT = {\n";
6304         s << "\tsType = " << value.sType << '\n';
6305         s << "\tpNext = " << value.pNext << '\n';
6306         s << "\thandleType = " << value.handleType << '\n';
6307         s << "\tpHostPointer = " << value.pHostPointer << '\n';
6308         s << '}';
6309         return s;
6310 }
6311
6312 std::ostream& operator<< (std::ostream& s, const VkMemoryHostPointerPropertiesEXT& value)
6313 {
6314         s << "VkMemoryHostPointerPropertiesEXT = {\n";
6315         s << "\tsType = " << value.sType << '\n';
6316         s << "\tpNext = " << value.pNext << '\n';
6317         s << "\tmemoryTypeBits = " << value.memoryTypeBits << '\n';
6318         s << '}';
6319         return s;
6320 }
6321
6322 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceExternalMemoryHostPropertiesEXT& value)
6323 {
6324         s << "VkPhysicalDeviceExternalMemoryHostPropertiesEXT = {\n";
6325         s << "\tsType = " << value.sType << '\n';
6326         s << "\tpNext = " << value.pNext << '\n';
6327         s << "\tminImportedHostPointerAlignment = " << value.minImportedHostPointerAlignment << '\n';
6328         s << '}';
6329         return s;
6330 }
6331
6332 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT& value)
6333 {
6334         s << "VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT = {\n";
6335         s << "\tsType = " << value.sType << '\n';
6336         s << "\tpNext = " << value.pNext << '\n';
6337         s << "\tmaxVertexAttribDivisor = " << value.maxVertexAttribDivisor << '\n';
6338         s << '}';
6339         return s;
6340 }
6341
6342 std::ostream& operator<< (std::ostream& s, const VkVertexInputBindingDivisorDescriptionEXT& value)
6343 {
6344         s << "VkVertexInputBindingDivisorDescriptionEXT = {\n";
6345         s << "\tbinding = " << value.binding << '\n';
6346         s << "\tdivisor = " << value.divisor << '\n';
6347         s << '}';
6348         return s;
6349 }
6350
6351 std::ostream& operator<< (std::ostream& s, const VkPipelineVertexInputDivisorStateCreateInfoEXT& value)
6352 {
6353         s << "VkPipelineVertexInputDivisorStateCreateInfoEXT = {\n";
6354         s << "\tsType = " << value.sType << '\n';
6355         s << "\tpNext = " << value.pNext << '\n';
6356         s << "\tvertexBindingDivisorCount = " << value.vertexBindingDivisorCount << '\n';
6357         s << "\tpVertexBindingDivisors = " << value.pVertexBindingDivisors << '\n';
6358         s << '}';
6359         return s;
6360 }
6361
6362 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT& value)
6363 {
6364         s << "VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT = {\n";
6365         s << "\tsType = " << value.sType << '\n';
6366         s << "\tpNext = " << value.pNext << '\n';
6367         s << "\tvertexAttributeInstanceRateDivisor = " << value.vertexAttributeInstanceRateDivisor << '\n';
6368         s << "\tvertexAttributeInstanceRateZeroDivisor = " << value.vertexAttributeInstanceRateZeroDivisor << '\n';
6369         s << '}';
6370         return s;
6371 }
6372
6373 std::ostream& operator<< (std::ostream& s, const VkDescriptorSetLayoutBindingFlagsCreateInfoEXT& value)
6374 {
6375         s << "VkDescriptorSetLayoutBindingFlagsCreateInfoEXT = {\n";
6376         s << "\tsType = " << value.sType << '\n';
6377         s << "\tpNext = " << value.pNext << '\n';
6378         s << "\tbindingCount = " << value.bindingCount << '\n';
6379         s << "\tpBindingFlags = " << value.pBindingFlags << '\n';
6380         s << '}';
6381         return s;
6382 }
6383
6384 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceDescriptorIndexingFeaturesEXT& value)
6385 {
6386         s << "VkPhysicalDeviceDescriptorIndexingFeaturesEXT = {\n";
6387         s << "\tsType = " << value.sType << '\n';
6388         s << "\tpNext = " << value.pNext << '\n';
6389         s << "\tshaderInputAttachmentArrayDynamicIndexing = " << value.shaderInputAttachmentArrayDynamicIndexing << '\n';
6390         s << "\tshaderUniformTexelBufferArrayDynamicIndexing = " << value.shaderUniformTexelBufferArrayDynamicIndexing << '\n';
6391         s << "\tshaderStorageTexelBufferArrayDynamicIndexing = " << value.shaderStorageTexelBufferArrayDynamicIndexing << '\n';
6392         s << "\tshaderUniformBufferArrayNonUniformIndexing = " << value.shaderUniformBufferArrayNonUniformIndexing << '\n';
6393         s << "\tshaderSampledImageArrayNonUniformIndexing = " << value.shaderSampledImageArrayNonUniformIndexing << '\n';
6394         s << "\tshaderStorageBufferArrayNonUniformIndexing = " << value.shaderStorageBufferArrayNonUniformIndexing << '\n';
6395         s << "\tshaderStorageImageArrayNonUniformIndexing = " << value.shaderStorageImageArrayNonUniformIndexing << '\n';
6396         s << "\tshaderInputAttachmentArrayNonUniformIndexing = " << value.shaderInputAttachmentArrayNonUniformIndexing << '\n';
6397         s << "\tshaderUniformTexelBufferArrayNonUniformIndexing = " << value.shaderUniformTexelBufferArrayNonUniformIndexing << '\n';
6398         s << "\tshaderStorageTexelBufferArrayNonUniformIndexing = " << value.shaderStorageTexelBufferArrayNonUniformIndexing << '\n';
6399         s << "\tdescriptorBindingUniformBufferUpdateAfterBind = " << value.descriptorBindingUniformBufferUpdateAfterBind << '\n';
6400         s << "\tdescriptorBindingSampledImageUpdateAfterBind = " << value.descriptorBindingSampledImageUpdateAfterBind << '\n';
6401         s << "\tdescriptorBindingStorageImageUpdateAfterBind = " << value.descriptorBindingStorageImageUpdateAfterBind << '\n';
6402         s << "\tdescriptorBindingStorageBufferUpdateAfterBind = " << value.descriptorBindingStorageBufferUpdateAfterBind << '\n';
6403         s << "\tdescriptorBindingUniformTexelBufferUpdateAfterBind = " << value.descriptorBindingUniformTexelBufferUpdateAfterBind << '\n';
6404         s << "\tdescriptorBindingStorageTexelBufferUpdateAfterBind = " << value.descriptorBindingStorageTexelBufferUpdateAfterBind << '\n';
6405         s << "\tdescriptorBindingUpdateUnusedWhilePending = " << value.descriptorBindingUpdateUnusedWhilePending << '\n';
6406         s << "\tdescriptorBindingPartiallyBound = " << value.descriptorBindingPartiallyBound << '\n';
6407         s << "\tdescriptorBindingVariableDescriptorCount = " << value.descriptorBindingVariableDescriptorCount << '\n';
6408         s << "\truntimeDescriptorArray = " << value.runtimeDescriptorArray << '\n';
6409         s << '}';
6410         return s;
6411 }
6412
6413 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceDescriptorIndexingPropertiesEXT& value)
6414 {
6415         s << "VkPhysicalDeviceDescriptorIndexingPropertiesEXT = {\n";
6416         s << "\tsType = " << value.sType << '\n';
6417         s << "\tpNext = " << value.pNext << '\n';
6418         s << "\tmaxUpdateAfterBindDescriptorsInAllPools = " << value.maxUpdateAfterBindDescriptorsInAllPools << '\n';
6419         s << "\tshaderUniformBufferArrayNonUniformIndexingNative = " << value.shaderUniformBufferArrayNonUniformIndexingNative << '\n';
6420         s << "\tshaderSampledImageArrayNonUniformIndexingNative = " << value.shaderSampledImageArrayNonUniformIndexingNative << '\n';
6421         s << "\tshaderStorageBufferArrayNonUniformIndexingNative = " << value.shaderStorageBufferArrayNonUniformIndexingNative << '\n';
6422         s << "\tshaderStorageImageArrayNonUniformIndexingNative = " << value.shaderStorageImageArrayNonUniformIndexingNative << '\n';
6423         s << "\tshaderInputAttachmentArrayNonUniformIndexingNative = " << value.shaderInputAttachmentArrayNonUniformIndexingNative << '\n';
6424         s << "\trobustBufferAccessUpdateAfterBind = " << value.robustBufferAccessUpdateAfterBind << '\n';
6425         s << "\tquadDivergentImplicitLod = " << value.quadDivergentImplicitLod << '\n';
6426         s << "\tmaxPerStageDescriptorUpdateAfterBindSamplers = " << value.maxPerStageDescriptorUpdateAfterBindSamplers << '\n';
6427         s << "\tmaxPerStageDescriptorUpdateAfterBindUniformBuffers = " << value.maxPerStageDescriptorUpdateAfterBindUniformBuffers << '\n';
6428         s << "\tmaxPerStageDescriptorUpdateAfterBindStorageBuffers = " << value.maxPerStageDescriptorUpdateAfterBindStorageBuffers << '\n';
6429         s << "\tmaxPerStageDescriptorUpdateAfterBindSampledImages = " << value.maxPerStageDescriptorUpdateAfterBindSampledImages << '\n';
6430         s << "\tmaxPerStageDescriptorUpdateAfterBindStorageImages = " << value.maxPerStageDescriptorUpdateAfterBindStorageImages << '\n';
6431         s << "\tmaxPerStageDescriptorUpdateAfterBindInputAttachments = " << value.maxPerStageDescriptorUpdateAfterBindInputAttachments << '\n';
6432         s << "\tmaxPerStageUpdateAfterBindResources = " << value.maxPerStageUpdateAfterBindResources << '\n';
6433         s << "\tmaxDescriptorSetUpdateAfterBindSamplers = " << value.maxDescriptorSetUpdateAfterBindSamplers << '\n';
6434         s << "\tmaxDescriptorSetUpdateAfterBindUniformBuffers = " << value.maxDescriptorSetUpdateAfterBindUniformBuffers << '\n';
6435         s << "\tmaxDescriptorSetUpdateAfterBindUniformBuffersDynamic = " << value.maxDescriptorSetUpdateAfterBindUniformBuffersDynamic << '\n';
6436         s << "\tmaxDescriptorSetUpdateAfterBindStorageBuffers = " << value.maxDescriptorSetUpdateAfterBindStorageBuffers << '\n';
6437         s << "\tmaxDescriptorSetUpdateAfterBindStorageBuffersDynamic = " << value.maxDescriptorSetUpdateAfterBindStorageBuffersDynamic << '\n';
6438         s << "\tmaxDescriptorSetUpdateAfterBindSampledImages = " << value.maxDescriptorSetUpdateAfterBindSampledImages << '\n';
6439         s << "\tmaxDescriptorSetUpdateAfterBindStorageImages = " << value.maxDescriptorSetUpdateAfterBindStorageImages << '\n';
6440         s << "\tmaxDescriptorSetUpdateAfterBindInputAttachments = " << value.maxDescriptorSetUpdateAfterBindInputAttachments << '\n';
6441         s << '}';
6442         return s;
6443 }
6444
6445 std::ostream& operator<< (std::ostream& s, const VkDescriptorSetVariableDescriptorCountAllocateInfoEXT& value)
6446 {
6447         s << "VkDescriptorSetVariableDescriptorCountAllocateInfoEXT = {\n";
6448         s << "\tsType = " << value.sType << '\n';
6449         s << "\tpNext = " << value.pNext << '\n';
6450         s << "\tdescriptorSetCount = " << value.descriptorSetCount << '\n';
6451         s << "\tpDescriptorCounts = " << value.pDescriptorCounts << '\n';
6452         s << '}';
6453         return s;
6454 }
6455
6456 std::ostream& operator<< (std::ostream& s, const VkDescriptorSetVariableDescriptorCountLayoutSupportEXT& value)
6457 {
6458         s << "VkDescriptorSetVariableDescriptorCountLayoutSupportEXT = {\n";
6459         s << "\tsType = " << value.sType << '\n';
6460         s << "\tpNext = " << value.pNext << '\n';
6461         s << "\tmaxVariableDescriptorCount = " << value.maxVariableDescriptorCount << '\n';
6462         s << '}';
6463         return s;
6464 }
6465
6466 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceInlineUniformBlockFeaturesEXT& value)
6467 {
6468         s << "VkPhysicalDeviceInlineUniformBlockFeaturesEXT = {\n";
6469         s << "\tsType = " << value.sType << '\n';
6470         s << "\tpNext = " << value.pNext << '\n';
6471         s << "\tinlineUniformBlock = " << value.inlineUniformBlock << '\n';
6472         s << "\tdescriptorBindingInlineUniformBlockUpdateAfterBind = " << value.descriptorBindingInlineUniformBlockUpdateAfterBind << '\n';
6473         s << '}';
6474         return s;
6475 }
6476
6477 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceInlineUniformBlockPropertiesEXT& value)
6478 {
6479         s << "VkPhysicalDeviceInlineUniformBlockPropertiesEXT = {\n";
6480         s << "\tsType = " << value.sType << '\n';
6481         s << "\tpNext = " << value.pNext << '\n';
6482         s << "\tmaxInlineUniformBlockSize = " << value.maxInlineUniformBlockSize << '\n';
6483         s << "\tmaxPerStageDescriptorInlineUniformBlocks = " << value.maxPerStageDescriptorInlineUniformBlocks << '\n';
6484         s << "\tmaxPerStageDescriptorUpdateAfterBindInlineUniformBlocks = " << value.maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks << '\n';
6485         s << "\tmaxDescriptorSetInlineUniformBlocks = " << value.maxDescriptorSetInlineUniformBlocks << '\n';
6486         s << "\tmaxDescriptorSetUpdateAfterBindInlineUniformBlocks = " << value.maxDescriptorSetUpdateAfterBindInlineUniformBlocks << '\n';
6487         s << '}';
6488         return s;
6489 }
6490
6491 std::ostream& operator<< (std::ostream& s, const VkWriteDescriptorSetInlineUniformBlockEXT& value)
6492 {
6493         s << "VkWriteDescriptorSetInlineUniformBlockEXT = {\n";
6494         s << "\tsType = " << value.sType << '\n';
6495         s << "\tpNext = " << value.pNext << '\n';
6496         s << "\tdataSize = " << value.dataSize << '\n';
6497         s << "\tpData = " << value.pData << '\n';
6498         s << '}';
6499         return s;
6500 }
6501
6502 std::ostream& operator<< (std::ostream& s, const VkDescriptorPoolInlineUniformBlockCreateInfoEXT& value)
6503 {
6504         s << "VkDescriptorPoolInlineUniformBlockCreateInfoEXT = {\n";
6505         s << "\tsType = " << value.sType << '\n';
6506         s << "\tpNext = " << value.pNext << '\n';
6507         s << "\tmaxInlineUniformBlockBindings = " << value.maxInlineUniformBlockBindings << '\n';
6508         s << '}';
6509         return s;
6510 }
6511
6512 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceShaderAtomicInt64FeaturesKHR& value)
6513 {
6514         s << "VkPhysicalDeviceShaderAtomicInt64FeaturesKHR = {\n";
6515         s << "\tsType = " << value.sType << '\n';
6516         s << "\tpNext = " << value.pNext << '\n';
6517         s << "\tshaderBufferInt64Atomics = " << value.shaderBufferInt64Atomics << '\n';
6518         s << "\tshaderSharedInt64Atomics = " << value.shaderSharedInt64Atomics << '\n';
6519         s << '}';
6520         return s;
6521 }
6522
6523 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceVulkanMemoryModelFeaturesKHR& value)
6524 {
6525         s << "VkPhysicalDeviceVulkanMemoryModelFeaturesKHR = {\n";
6526         s << "\tsType = " << value.sType << '\n';
6527         s << "\tpNext = " << value.pNext << '\n';
6528         s << "\tvulkanMemoryModel = " << value.vulkanMemoryModel << '\n';
6529         s << "\tvulkanMemoryModelDeviceScope = " << value.vulkanMemoryModelDeviceScope << '\n';
6530         s << '}';
6531         return s;
6532 }