Merge vk-gl-cts/vulkan-cts-1.1.5 into vk-gl-cts/vulkan-cts-1.1.6
[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<VkDebugUtilsMessengerEXT>                   (void) { return "VkDebugUtilsMessengerEXT";                     }
39 template<> const char*  getTypeName<VkValidationCacheEXT>                               (void) { return "VkValidationCacheEXT";                         }
40 template<> const char*  getTypeName<VkAccelerationStructureNV>                  (void) { return "VkAccelerationStructureNV";            }
41 template<> const char*  getTypeName<VkPerformanceConfigurationINTEL>    (void) { return "VkPerformanceConfigurationINTEL";      }
42
43 namespace pt
44 {
45 std::ostream& operator<< (std::ostream& s, XlibDisplayPtr                               v) { return s << tcu::toHex(v.internal); }
46 std::ostream& operator<< (std::ostream& s, XlibWindow                                   v) { return s << tcu::toHex(v.internal); }
47 std::ostream& operator<< (std::ostream& s, XlibVisualID                                 v) { return s << tcu::toHex(v.internal); }
48 std::ostream& operator<< (std::ostream& s, XcbConnectionPtr                             v) { return s << tcu::toHex(v.internal); }
49 std::ostream& operator<< (std::ostream& s, XcbWindow                                    v) { return s << tcu::toHex(v.internal); }
50 std::ostream& operator<< (std::ostream& s, XcbVisualid                                  v) { return s << tcu::toHex(v.internal); }
51 std::ostream& operator<< (std::ostream& s, WaylandDisplayPtr                    v) { return s << tcu::toHex(v.internal); }
52 std::ostream& operator<< (std::ostream& s, WaylandSurfacePtr                    v) { return s << tcu::toHex(v.internal); }
53 std::ostream& operator<< (std::ostream& s, MirConnectionPtr                             v) { return s << tcu::toHex(v.internal); }
54 std::ostream& operator<< (std::ostream& s, MirSurfacePtr                                v) { return s << tcu::toHex(v.internal); }
55 std::ostream& operator<< (std::ostream& s, AndroidNativeWindowPtr               v) { return s << tcu::toHex(v.internal); }
56 std::ostream& operator<< (std::ostream& s, Win32InstanceHandle                  v) { return s << tcu::toHex(v.internal); }
57 std::ostream& operator<< (std::ostream& s, Win32WindowHandle                    v) { return s << tcu::toHex(v.internal); }
58 std::ostream& operator<< (std::ostream& s, Win32Handle                                  v) { return s << tcu::toHex(v.internal); }
59 std::ostream& operator<< (std::ostream& s, Win32SecurityAttributesPtr   v) { return s << tcu::toHex(v.internal); }
60 std::ostream& operator<< (std::ostream& s, AndroidHardwareBufferPtr             v) { return s << tcu::toHex(v.internal); }
61 std::ostream& operator<< (std::ostream& s, Win32MonitorHandle                   v) { return s << tcu::toHex(v.internal); }
62 std::ostream& operator<< (std::ostream& s, RROutput                                             v) { return s << tcu::toHex(v.internal); }
63 std::ostream& operator<< (std::ostream& s, zx_handle_t                                  v) { return s << tcu::toHex(v.internal); }
64 std::ostream& operator<< (std::ostream& s, GgpFrameToken                                v) { return s << tcu::toHex(v.internal); }
65 std::ostream& operator<< (std::ostream& s, GgpStreamDescriptor                  v) { return s << tcu::toHex(v.internal); }
66 std::ostream& operator<< (std::ostream& s, CAMetalLayer                                 v) { return s << tcu::toHex(v.internal); }
67 }
68
69 const char* getPipelineCacheHeaderVersionName (VkPipelineCacheHeaderVersion value)
70 {
71         switch (value)
72         {
73                 case VK_PIPELINE_CACHE_HEADER_VERSION_ONE:              return "VK_PIPELINE_CACHE_HEADER_VERSION_ONE";
74                 case VK_PIPELINE_CACHE_HEADER_VERSION_MAX_ENUM: return "VK_PIPELINE_CACHE_HEADER_VERSION_MAX_ENUM";
75                 default:                                                                                return DE_NULL;
76         }
77 }
78
79 const char* getResultName (VkResult value)
80 {
81         switch (value)
82         {
83                 case VK_SUCCESS:                                                                                        return "VK_SUCCESS";
84                 case VK_NOT_READY:                                                                                      return "VK_NOT_READY";
85                 case VK_TIMEOUT:                                                                                        return "VK_TIMEOUT";
86                 case VK_EVENT_SET:                                                                                      return "VK_EVENT_SET";
87                 case VK_EVENT_RESET:                                                                            return "VK_EVENT_RESET";
88                 case VK_INCOMPLETE:                                                                                     return "VK_INCOMPLETE";
89                 case VK_ERROR_OUT_OF_HOST_MEMORY:                                                       return "VK_ERROR_OUT_OF_HOST_MEMORY";
90                 case VK_ERROR_OUT_OF_DEVICE_MEMORY:                                                     return "VK_ERROR_OUT_OF_DEVICE_MEMORY";
91                 case VK_ERROR_INITIALIZATION_FAILED:                                            return "VK_ERROR_INITIALIZATION_FAILED";
92                 case VK_ERROR_DEVICE_LOST:                                                                      return "VK_ERROR_DEVICE_LOST";
93                 case VK_ERROR_MEMORY_MAP_FAILED:                                                        return "VK_ERROR_MEMORY_MAP_FAILED";
94                 case VK_ERROR_LAYER_NOT_PRESENT:                                                        return "VK_ERROR_LAYER_NOT_PRESENT";
95                 case VK_ERROR_EXTENSION_NOT_PRESENT:                                            return "VK_ERROR_EXTENSION_NOT_PRESENT";
96                 case VK_ERROR_FEATURE_NOT_PRESENT:                                                      return "VK_ERROR_FEATURE_NOT_PRESENT";
97                 case VK_ERROR_INCOMPATIBLE_DRIVER:                                                      return "VK_ERROR_INCOMPATIBLE_DRIVER";
98                 case VK_ERROR_TOO_MANY_OBJECTS:                                                         return "VK_ERROR_TOO_MANY_OBJECTS";
99                 case VK_ERROR_FORMAT_NOT_SUPPORTED:                                                     return "VK_ERROR_FORMAT_NOT_SUPPORTED";
100                 case VK_ERROR_FRAGMENTED_POOL:                                                          return "VK_ERROR_FRAGMENTED_POOL";
101                 case VK_ERROR_OUT_OF_POOL_MEMORY:                                                       return "VK_ERROR_OUT_OF_POOL_MEMORY";
102                 case VK_ERROR_INVALID_EXTERNAL_HANDLE:                                          return "VK_ERROR_INVALID_EXTERNAL_HANDLE";
103                 case VK_ERROR_SURFACE_LOST_KHR:                                                         return "VK_ERROR_SURFACE_LOST_KHR";
104                 case VK_ERROR_NATIVE_WINDOW_IN_USE_KHR:                                         return "VK_ERROR_NATIVE_WINDOW_IN_USE_KHR";
105                 case VK_SUBOPTIMAL_KHR:                                                                         return "VK_SUBOPTIMAL_KHR";
106                 case VK_ERROR_OUT_OF_DATE_KHR:                                                          return "VK_ERROR_OUT_OF_DATE_KHR";
107                 case VK_ERROR_INCOMPATIBLE_DISPLAY_KHR:                                         return "VK_ERROR_INCOMPATIBLE_DISPLAY_KHR";
108                 case VK_ERROR_VALIDATION_FAILED_EXT:                                            return "VK_ERROR_VALIDATION_FAILED_EXT";
109                 case VK_ERROR_INVALID_SHADER_NV:                                                        return "VK_ERROR_INVALID_SHADER_NV";
110                 case VK_ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT:     return "VK_ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT";
111                 case VK_ERROR_FRAGMENTATION_EXT:                                                        return "VK_ERROR_FRAGMENTATION_EXT";
112                 case VK_ERROR_NOT_PERMITTED_EXT:                                                        return "VK_ERROR_NOT_PERMITTED_EXT";
113                 case VK_ERROR_INVALID_DEVICE_ADDRESS_EXT:                                       return "VK_ERROR_INVALID_DEVICE_ADDRESS_EXT";
114                 case VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT:                      return "VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT";
115                 case VK_RESULT_MAX_ENUM:                                                                        return "VK_RESULT_MAX_ENUM";
116                 default:                                                                                                        return DE_NULL;
117         }
118 }
119
120 const char* getStructureTypeName (VkStructureType value)
121 {
122         switch (value)
123         {
124                 case VK_STRUCTURE_TYPE_APPLICATION_INFO:                                                                                                return "VK_STRUCTURE_TYPE_APPLICATION_INFO";
125                 case VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO:                                                                                    return "VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO";
126                 case VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO:                                                                                return "VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO";
127                 case VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO:                                                                                              return "VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO";
128                 case VK_STRUCTURE_TYPE_SUBMIT_INFO:                                                                                                             return "VK_STRUCTURE_TYPE_SUBMIT_INFO";
129                 case VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO:                                                                                    return "VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO";
130                 case VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE:                                                                                             return "VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE";
131                 case VK_STRUCTURE_TYPE_BIND_SPARSE_INFO:                                                                                                return "VK_STRUCTURE_TYPE_BIND_SPARSE_INFO";
132                 case VK_STRUCTURE_TYPE_FENCE_CREATE_INFO:                                                                                               return "VK_STRUCTURE_TYPE_FENCE_CREATE_INFO";
133                 case VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO:                                                                                   return "VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO";
134                 case VK_STRUCTURE_TYPE_EVENT_CREATE_INFO:                                                                                               return "VK_STRUCTURE_TYPE_EVENT_CREATE_INFO";
135                 case VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO:                                                                                  return "VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO";
136                 case VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO:                                                                                              return "VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO";
137                 case VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO:                                                                                 return "VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO";
138                 case VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO:                                                                                               return "VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO";
139                 case VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO:                                                                                  return "VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO";
140                 case VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO:                                                                               return "VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO";
141                 case VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO:                                                                              return "VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO";
142                 case VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO:                                                               return "VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO";
143                 case VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO:                                                 return "VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO";
144                 case VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO:                                               return "VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO";
145                 case VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO:                                                 return "VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO";
146                 case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO:                                                             return "VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO";
147                 case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO:                                                return "VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO";
148                 case VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO:                                                  return "VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO";
149                 case VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO:                                                return "VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO";
150                 case VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO:                                                  return "VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO";
151                 case VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO:                                                              return "VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO";
152                 case VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO:                                                                   return "VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO";
153                 case VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO:                                                                    return "VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO";
154                 case VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO:                                                                             return "VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO";
155                 case VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO:                                                                                             return "VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO";
156                 case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO:                                                               return "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO";
157                 case VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO:                                                                             return "VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO";
158                 case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO:                                                                    return "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO";
159                 case VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET:                                                                                    return "VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET";
160                 case VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET:                                                                                             return "VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET";
161                 case VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO:                                                                                 return "VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO";
162                 case VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO:                                                                                 return "VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO";
163                 case VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO:                                                                                return "VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO";
164                 case VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO:                                                                    return "VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO";
165                 case VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO:                                                                 return "VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO";
166                 case VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO:                                                                               return "VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO";
167                 case VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO:                                                                                  return "VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO";
168                 case VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER:                                                                                   return "VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER";
169                 case VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER:                                                                                    return "VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER";
170                 case VK_STRUCTURE_TYPE_MEMORY_BARRIER:                                                                                                  return "VK_STRUCTURE_TYPE_MEMORY_BARRIER";
171                 case VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO:                                                                             return "VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO";
172                 case VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO:                                                                               return "VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO";
173                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES:                                                             return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES";
174                 case VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO:                                                                                 return "VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO";
175                 case VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO:                                                                                  return "VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO";
176                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES:                                                  return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES";
177                 case VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS:                                                                   return "VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS";
178                 case VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO:                                                                  return "VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO";
179                 case VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO:                                                                              return "VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO";
180                 case VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO:                                                             return "VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO";
181                 case VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO:                                                  return "VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO";
182                 case VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO:                                                                                return "VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO";
183                 case VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO:                                                                   return "VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO";
184                 case VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO:                                                    return "VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO";
185                 case VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO:                                                             return "VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO";
186                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES:                                                                return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES";
187                 case VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO:                                                                 return "VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO";
188                 case VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2:                                                               return "VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2";
189                 case VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2:                                                                return "VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2";
190                 case VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2:                                                 return "VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2";
191                 case VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2:                                                                                   return "VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2";
192                 case VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2:                                                              return "VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2";
193                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2:                                                                              return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2";
194                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2:                                                                    return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2";
195                 case VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2:                                                                                             return "VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2";
196                 case VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2:                                                                               return "VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2";
197                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2:                                                             return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2";
198                 case VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2:                                                                               return "VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2";
199                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2:                                                             return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2";
200                 case VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2:                                                                return "VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2";
201                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2:                                              return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2";
202                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES:                                               return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES";
203                 case VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO:                                 return "VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO";
204                 case VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO:                                                                    return "VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO";
205                 case VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO:                   return "VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO";
206                 case VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO:                                                               return "VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO";
207                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES:                                                              return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES";
208                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES:                                                    return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES";
209                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES:                                              return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES";
210                 case VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO:                                                                                   return "VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO";
211                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES:                                               return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES";
212                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES:                                             return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES";
213                 case VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2:                                                                                             return "VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2";
214                 case VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO:                                                    return "VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO";
215                 case VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO:                                                                   return "VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO";
216                 case VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO:                                                                    return "VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO";
217                 case VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO:                                                    return "VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO";
218                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES:                               return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES";
219                 case VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES:                                return "VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES";
220                 case VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO:                                                  return "VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO";
221                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO:                                              return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO";
222                 case VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES:                                                                return "VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES";
223                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO:                                                    return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO";
224                 case VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES:                                                                              return "VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES";
225                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES:                                                                   return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES";
226                 case VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO:                                                              return "VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO";
227                 case VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO:                                                               return "VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO";
228                 case VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO:                                                                             return "VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO";
229                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO:                                                             return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO";
230                 case VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES:                                                                               return "VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES";
231                 case VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO:                                                                                return "VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO";
232                 case VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO:                                                                    return "VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO";
233                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO:                                                 return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO";
234                 case VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES:                                                                   return "VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES";
235                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES:                                                return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES";
236                 case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT:                                                                   return "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT";
237                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES:                                 return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES";
238                 case VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR:                                                                               return "VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR";
239                 case VK_STRUCTURE_TYPE_PRESENT_INFO_KHR:                                                                                                return "VK_STRUCTURE_TYPE_PRESENT_INFO_KHR";
240                 case VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR:                                                   return "VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR";
241                 case VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR:                                                                 return "VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR";
242                 case VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR:                                                    return "VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR";
243                 case VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR:                                                                             return "VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR";
244                 case VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR:                                                                   return "VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR";
245                 case VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR:                                                  return "VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR";
246                 case VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR:                                                                    return "VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR";
247                 case VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR:                                                                 return "VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR";
248                 case VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR:                                                                                return "VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR";
249                 case VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR:                                                                    return "VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR";
250                 case VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR:                                                                             return "VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR";
251                 case VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR:                                                                 return "VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR";
252                 case VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR:                                                                 return "VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR";
253                 case VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR:                                                                   return "VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR";
254                 case VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT:                                                   return "VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT";
255                 case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD:                    return "VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD";
256                 case VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT:                                                               return "VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT";
257                 case VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT:                                                                return "VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT";
258                 case VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT:                                                                    return "VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT";
259                 case VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV:                                               return "VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV";
260                 case VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV:                                              return "VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV";
261                 case VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV:                                    return "VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV";
262                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT:                                 return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT";
263                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT:                               return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT";
264                 case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT:                             return "VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT";
265                 case VK_STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX:                                                                              return "VK_STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX";
266                 case VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD:                                                return "VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD";
267                 case VK_STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP:                                               return "VK_STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP";
268                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV:                                return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV";
269                 case VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV:                                                    return "VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV";
270                 case VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV:                                                                  return "VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV";
271                 case VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV:                                                              return "VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV";
272                 case VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV:                                                              return "VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV";
273                 case VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV:                                               return "VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV";
274                 case VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT:                                                                                    return "VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT";
275                 case VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN:                                                                               return "VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN";
276                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT:               return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT";
277                 case VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT:                                                                 return "VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT";
278                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT:                                                return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT";
279                 case VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR:                                                             return "VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR";
280                 case VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR:                                                             return "VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR";
281                 case VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR:                                                              return "VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR";
282                 case VK_STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR:                                                                return "VK_STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR";
283                 case VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR:                                                                               return "VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR";
284                 case VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR:                                                                                return "VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR";
285                 case VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR:                                                                                  return "VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR";
286                 case VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR:                                              return "VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR";
287                 case VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR:                                                  return "VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR";
288                 case VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR:                                                  return "VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR";
289                 case VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR:                                                                             return "VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR";
290                 case VK_STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR:                                                             return "VK_STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR";
291                 case VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR:                                                                    return "VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR";
292                 case VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR:                                                                               return "VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR";
293                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR:                                  return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR";
294                 case VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT:               return "VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT";
295                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT:                              return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT";
296                 case VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT:                                                    return "VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT";
297                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES_KHR:                                return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES_KHR";
298                 case VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR:                                                                                             return "VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR";
299                 case VK_STRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX:                                                                    return "VK_STRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX";
300                 case VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX:                                                return "VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX";
301                 case VK_STRUCTURE_TYPE_CMD_PROCESS_COMMANDS_INFO_NVX:                                                                   return "VK_STRUCTURE_TYPE_CMD_PROCESS_COMMANDS_INFO_NVX";
302                 case VK_STRUCTURE_TYPE_CMD_RESERVE_SPACE_FOR_COMMANDS_INFO_NVX:                                                 return "VK_STRUCTURE_TYPE_CMD_RESERVE_SPACE_FOR_COMMANDS_INFO_NVX";
303                 case VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_LIMITS_NVX:                                                    return "VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_LIMITS_NVX";
304                 case VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_FEATURES_NVX:                                                  return "VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_FEATURES_NVX";
305                 case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV:                                return "VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV";
306                 case VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT:                                                                              return "VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT";
307                 case VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT:                                                                                  return "VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT";
308                 case VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT:                                                                                   return "VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT";
309                 case VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT:                                                                                  return "VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT";
310                 case VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT:                                                               return "VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT";
311                 case VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE:                                                                               return "VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE";
312                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX:    return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX";
313                 case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV:                                  return "VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV";
314                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT:                                return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT";
315                 case VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT:                                return "VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT";
316                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT:               return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT";
317                 case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT:               return "VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT";
318                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT:                                  return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT";
319                 case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT:                 return "VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT";
320                 case VK_STRUCTURE_TYPE_HDR_METADATA_EXT:                                                                                                return "VK_STRUCTURE_TYPE_HDR_METADATA_EXT";
321                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES_KHR:                              return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES_KHR";
322                 case VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO_KHR:                                                 return "VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO_KHR";
323                 case VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO_KHR:                                                   return "VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO_KHR";
324                 case VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO_KHR:                                                   return "VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO_KHR";
325                 case VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2_KHR:                                                                    return "VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2_KHR";
326                 case VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR:                                                                              return "VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR";
327                 case VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2_KHR:                                                                               return "VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2_KHR";
328                 case VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2_KHR:                                                                                return "VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2_KHR";
329                 case VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2_KHR:                                                                   return "VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2_KHR";
330                 case VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO_KHR:                                                                                  return "VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO_KHR";
331                 case VK_STRUCTURE_TYPE_SUBPASS_END_INFO_KHR:                                                                                    return "VK_STRUCTURE_TYPE_SUBPASS_END_INFO_KHR";
332                 case VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR:                                                 return "VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR";
333                 case VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR:                                                              return "VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR";
334                 case VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR:                                                              return "VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR";
335                 case VK_STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR:                                                                 return "VK_STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR";
336                 case VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR:                                                                                return "VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR";
337                 case VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR:                                                                                   return "VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR";
338                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR:                                                              return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR";
339                 case VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR:                                                                              return "VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR";
340                 case VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR:                                                                                    return "VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR";
341                 case VK_STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR:                                                                                return "VK_STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR";
342                 case VK_STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR:                                                                  return "VK_STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR";
343                 case VK_STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR:                                                                   return "VK_STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR";
344                 case VK_STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR:                                                                                return "VK_STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR";
345                 case VK_STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR:                                                                return "VK_STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR";
346                 case VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK:                                                                             return "VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK";
347                 case VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK:                                                                   return "VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK";
348                 case VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT:                                                                return "VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT";
349                 case VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT:                                                                 return "VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT";
350                 case VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT:                                                                                   return "VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT";
351                 case VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT:                                                 return "VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT";
352                 case VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT:                                                   return "VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT";
353                 case VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID:                                                   return "VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID";
354                 case VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID:                                              return "VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID";
355                 case VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID:                               return "VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID";
356                 case VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID:                                             return "VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID";
357                 case VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID:                                 return "VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID";
358                 case VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID:                                                                                 return "VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID";
359                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT:                    return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT";
360                 case VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT:                                                  return "VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT";
361                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT:                               return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT";
362                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT:                             return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT";
363                 case VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT:                                   return "VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT";
364                 case VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT:                    return "VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT";
365                 case VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT:                                                                               return "VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT";
366                 case VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT:                                             return "VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT";
367                 case VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT:                                 return "VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT";
368                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT:                                 return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT";
369                 case VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT:                                                                              return "VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT";
370                 case VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR:                                                               return "VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR";
371                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT:                   return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT";
372                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT:                 return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT";
373                 case VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT:                             return "VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT";
374                 case VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV:                                 return "VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV";
375                 case VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV:                               return "VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV";
376                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV:                                  return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV";
377                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV:                                return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV";
378                 case VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT:                                                 return "VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT";
379                 case VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT:                                                              return "VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT";
380                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT:                              return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT";
381                 case VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT:                                  return "VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT";
382                 case VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT:                              return "VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT";
383                 case VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT:                                                return "VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT";
384                 case VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT:                                                                return "VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT";
385                 case VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT:                                  return "VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT";
386                 case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT:                             return "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT";
387                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT:                                return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT";
388                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT:                              return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT";
389                 case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO_EXT:              return "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO_EXT";
390                 case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT_EXT:             return "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT_EXT";
391                 case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV:               return "VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV";
392                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV:                                  return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV";
393                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV:                                return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV";
394                 case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV:              return "VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV";
395                 case VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV:                                                             return "VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV";
396                 case VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV:                                                   return "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV";
397                 case VK_STRUCTURE_TYPE_GEOMETRY_NV:                                                                                                             return "VK_STRUCTURE_TYPE_GEOMETRY_NV";
398                 case VK_STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV:                                                                                   return "VK_STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV";
399                 case VK_STRUCTURE_TYPE_GEOMETRY_AABB_NV:                                                                                                return "VK_STRUCTURE_TYPE_GEOMETRY_AABB_NV";
400                 case VK_STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV:                                              return "VK_STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV";
401                 case VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV:                                  return "VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV";
402                 case VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV:                              return "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV";
403                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV:                                               return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV";
404                 case VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV:                                                 return "VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV";
405                 case VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV:                                                                  return "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV";
406                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV:                return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV";
407                 case VK_STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV:              return "VK_STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV";
408                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT:                                return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT";
409                 case VK_STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT:                             return "VK_STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT";
410                 case VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT:                                    return "VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT";
411                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES_KHR:             return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES_KHR";
412                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR:                                               return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR";
413                 case VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT:                                                             return "VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT";
414                 case VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT:                                                              return "VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT";
415                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT:                             return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT";
416                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES_KHR:                                return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES_KHR";
417                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR:                                               return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR";
418                 case VK_STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD:                                               return "VK_STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD";
419                 case VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT:                                                                   return "VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT";
420                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD:                                              return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD";
421                 case VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD:                                    return "VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD";
422                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT:                 return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT";
423                 case VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT:                             return "VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT";
424                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT:                   return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT";
425                 case VK_STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP:                                                                                 return "VK_STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP";
426                 case VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT:                                              return "VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT";
427                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES_KHR:                                                   return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES_KHR";
428                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES_KHR:                                   return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES_KHR";
429                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES_KHR:                    return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES_KHR";
430                 case VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE_KHR:                                   return "VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE_KHR";
431                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV:                  return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV";
432                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV:                                                 return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV";
433                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV:                                               return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV";
434                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV:                 return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV";
435                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV:                              return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV";
436                 case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV:                return "VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV";
437                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV:                                   return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV";
438                 case VK_STRUCTURE_TYPE_CHECKPOINT_DATA_NV:                                                                                              return "VK_STRUCTURE_TYPE_CHECKPOINT_DATA_NV";
439                 case VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV:                                                   return "VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV";
440                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES_KHR:                                 return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES_KHR";
441                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES_KHR:                               return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES_KHR";
442                 case VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO_KHR:                                                                  return "VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO_KHR";
443                 case VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO_KHR:                                                              return "VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO_KHR";
444                 case VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO_KHR:                                                                                 return "VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO_KHR";
445                 case VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO_KHR:                                                                               return "VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO_KHR";
446                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL:               return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL";
447                 case VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO_INTEL:                                                                    return "VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO_INTEL";
448                 case VK_STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL:                                                   return "VK_STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL";
449                 case VK_STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL:                                                                   return "VK_STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL";
450                 case VK_STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL:                                                    return "VK_STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL";
451                 case VK_STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL:                                                                 return "VK_STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL";
452                 case VK_STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL:                                    return "VK_STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL";
453                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES_KHR:                                return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES_KHR";
454                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT:                                             return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT";
455                 case VK_STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD:                                             return "VK_STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD";
456                 case VK_STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD:                                    return "VK_STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD";
457                 case VK_STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA:                                                   return "VK_STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA";
458                 case VK_STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT:                                                                   return "VK_STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT";
459                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT:                               return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT";
460                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT:                             return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT";
461                 case VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT:                                return "VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT";
462                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES_EXT:                                return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES_EXT";
463                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT:                    return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT";
464                 case VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT:    return "VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT";
465                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT:                              return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT";
466                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD:                                    return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD";
467                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD:                                    return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD";
468                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT:                                    return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT";
469                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT:                                    return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT";
470                 case VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT:                                                               return "VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT";
471                 case VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR:                                                              return "VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR";
472                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV: return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV";
473                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT:                              return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT";
474                 case VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_EXT:                                                                  return "VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_EXT";
475                 case VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT:                                                   return "VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT";
476                 case VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO_EXT:                                                             return "VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO_EXT";
477                 case VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT:                                                                                 return "VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT";
478                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV:                                  return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV";
479                 case VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV:                                                                return "VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV";
480                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV:                                return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV";
481                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV:                             return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV";
482                 case VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV:                                return "VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV";
483                 case VK_STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV:                                                return "VK_STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV";
484                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT:                  return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT";
485                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT:                                 return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT";
486                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES_KHR:             return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES_KHR";
487                 case VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT:                                                  return "VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT";
488                 case VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT:                                  return "VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT";
489                 case VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT:                                    return "VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT";
490                 case VK_STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT:                                                                return "VK_STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT";
491                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT:                                 return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT";
492                 case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT:                               return "VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT";
493                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT:                               return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT";
494                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES_EXT:                                   return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES_EXT";
495                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT:                                   return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT";
496                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR:             return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR";
497                 case VK_STRUCTURE_TYPE_PIPELINE_INFO_KHR:                                                                                               return "VK_STRUCTURE_TYPE_PIPELINE_INFO_KHR";
498                 case VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR:                                                              return "VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR";
499                 case VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR:                                                                    return "VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR";
500                 case VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR:                                                               return "VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR";
501                 case VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR:                                 return "VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR";
502                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT: return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT";
503                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT:                             return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT";
504                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT:                   return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT";
505                 case VK_STRUCTURE_TYPE_MAX_ENUM:                                                                                                                return "VK_STRUCTURE_TYPE_MAX_ENUM";
506                 default:                                                                                                                                                                return DE_NULL;
507         }
508 }
509
510 const char* getSystemAllocationScopeName (VkSystemAllocationScope value)
511 {
512         switch (value)
513         {
514                 case VK_SYSTEM_ALLOCATION_SCOPE_COMMAND:        return "VK_SYSTEM_ALLOCATION_SCOPE_COMMAND";
515                 case VK_SYSTEM_ALLOCATION_SCOPE_OBJECT:         return "VK_SYSTEM_ALLOCATION_SCOPE_OBJECT";
516                 case VK_SYSTEM_ALLOCATION_SCOPE_CACHE:          return "VK_SYSTEM_ALLOCATION_SCOPE_CACHE";
517                 case VK_SYSTEM_ALLOCATION_SCOPE_DEVICE:         return "VK_SYSTEM_ALLOCATION_SCOPE_DEVICE";
518                 case VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE:       return "VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE";
519                 case VK_SYSTEM_ALLOCATION_SCOPE_MAX_ENUM:       return "VK_SYSTEM_ALLOCATION_SCOPE_MAX_ENUM";
520                 default:                                                                        return DE_NULL;
521         }
522 }
523
524 const char* getInternalAllocationTypeName (VkInternalAllocationType value)
525 {
526         switch (value)
527         {
528                 case VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE:    return "VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE";
529                 case VK_INTERNAL_ALLOCATION_TYPE_MAX_ENUM:              return "VK_INTERNAL_ALLOCATION_TYPE_MAX_ENUM";
530                 default:                                                                                return DE_NULL;
531         }
532 }
533
534 const char* getFormatName (VkFormat value)
535 {
536         switch (value)
537         {
538                 case VK_FORMAT_UNDEFINED:                                                                       return "VK_FORMAT_UNDEFINED";
539                 case VK_FORMAT_R4G4_UNORM_PACK8:                                                        return "VK_FORMAT_R4G4_UNORM_PACK8";
540                 case VK_FORMAT_R4G4B4A4_UNORM_PACK16:                                           return "VK_FORMAT_R4G4B4A4_UNORM_PACK16";
541                 case VK_FORMAT_B4G4R4A4_UNORM_PACK16:                                           return "VK_FORMAT_B4G4R4A4_UNORM_PACK16";
542                 case VK_FORMAT_R5G6B5_UNORM_PACK16:                                                     return "VK_FORMAT_R5G6B5_UNORM_PACK16";
543                 case VK_FORMAT_B5G6R5_UNORM_PACK16:                                                     return "VK_FORMAT_B5G6R5_UNORM_PACK16";
544                 case VK_FORMAT_R5G5B5A1_UNORM_PACK16:                                           return "VK_FORMAT_R5G5B5A1_UNORM_PACK16";
545                 case VK_FORMAT_B5G5R5A1_UNORM_PACK16:                                           return "VK_FORMAT_B5G5R5A1_UNORM_PACK16";
546                 case VK_FORMAT_A1R5G5B5_UNORM_PACK16:                                           return "VK_FORMAT_A1R5G5B5_UNORM_PACK16";
547                 case VK_FORMAT_R8_UNORM:                                                                        return "VK_FORMAT_R8_UNORM";
548                 case VK_FORMAT_R8_SNORM:                                                                        return "VK_FORMAT_R8_SNORM";
549                 case VK_FORMAT_R8_USCALED:                                                                      return "VK_FORMAT_R8_USCALED";
550                 case VK_FORMAT_R8_SSCALED:                                                                      return "VK_FORMAT_R8_SSCALED";
551                 case VK_FORMAT_R8_UINT:                                                                         return "VK_FORMAT_R8_UINT";
552                 case VK_FORMAT_R8_SINT:                                                                         return "VK_FORMAT_R8_SINT";
553                 case VK_FORMAT_R8_SRGB:                                                                         return "VK_FORMAT_R8_SRGB";
554                 case VK_FORMAT_R8G8_UNORM:                                                                      return "VK_FORMAT_R8G8_UNORM";
555                 case VK_FORMAT_R8G8_SNORM:                                                                      return "VK_FORMAT_R8G8_SNORM";
556                 case VK_FORMAT_R8G8_USCALED:                                                            return "VK_FORMAT_R8G8_USCALED";
557                 case VK_FORMAT_R8G8_SSCALED:                                                            return "VK_FORMAT_R8G8_SSCALED";
558                 case VK_FORMAT_R8G8_UINT:                                                                       return "VK_FORMAT_R8G8_UINT";
559                 case VK_FORMAT_R8G8_SINT:                                                                       return "VK_FORMAT_R8G8_SINT";
560                 case VK_FORMAT_R8G8_SRGB:                                                                       return "VK_FORMAT_R8G8_SRGB";
561                 case VK_FORMAT_R8G8B8_UNORM:                                                            return "VK_FORMAT_R8G8B8_UNORM";
562                 case VK_FORMAT_R8G8B8_SNORM:                                                            return "VK_FORMAT_R8G8B8_SNORM";
563                 case VK_FORMAT_R8G8B8_USCALED:                                                          return "VK_FORMAT_R8G8B8_USCALED";
564                 case VK_FORMAT_R8G8B8_SSCALED:                                                          return "VK_FORMAT_R8G8B8_SSCALED";
565                 case VK_FORMAT_R8G8B8_UINT:                                                                     return "VK_FORMAT_R8G8B8_UINT";
566                 case VK_FORMAT_R8G8B8_SINT:                                                                     return "VK_FORMAT_R8G8B8_SINT";
567                 case VK_FORMAT_R8G8B8_SRGB:                                                                     return "VK_FORMAT_R8G8B8_SRGB";
568                 case VK_FORMAT_B8G8R8_UNORM:                                                            return "VK_FORMAT_B8G8R8_UNORM";
569                 case VK_FORMAT_B8G8R8_SNORM:                                                            return "VK_FORMAT_B8G8R8_SNORM";
570                 case VK_FORMAT_B8G8R8_USCALED:                                                          return "VK_FORMAT_B8G8R8_USCALED";
571                 case VK_FORMAT_B8G8R8_SSCALED:                                                          return "VK_FORMAT_B8G8R8_SSCALED";
572                 case VK_FORMAT_B8G8R8_UINT:                                                                     return "VK_FORMAT_B8G8R8_UINT";
573                 case VK_FORMAT_B8G8R8_SINT:                                                                     return "VK_FORMAT_B8G8R8_SINT";
574                 case VK_FORMAT_B8G8R8_SRGB:                                                                     return "VK_FORMAT_B8G8R8_SRGB";
575                 case VK_FORMAT_R8G8B8A8_UNORM:                                                          return "VK_FORMAT_R8G8B8A8_UNORM";
576                 case VK_FORMAT_R8G8B8A8_SNORM:                                                          return "VK_FORMAT_R8G8B8A8_SNORM";
577                 case VK_FORMAT_R8G8B8A8_USCALED:                                                        return "VK_FORMAT_R8G8B8A8_USCALED";
578                 case VK_FORMAT_R8G8B8A8_SSCALED:                                                        return "VK_FORMAT_R8G8B8A8_SSCALED";
579                 case VK_FORMAT_R8G8B8A8_UINT:                                                           return "VK_FORMAT_R8G8B8A8_UINT";
580                 case VK_FORMAT_R8G8B8A8_SINT:                                                           return "VK_FORMAT_R8G8B8A8_SINT";
581                 case VK_FORMAT_R8G8B8A8_SRGB:                                                           return "VK_FORMAT_R8G8B8A8_SRGB";
582                 case VK_FORMAT_B8G8R8A8_UNORM:                                                          return "VK_FORMAT_B8G8R8A8_UNORM";
583                 case VK_FORMAT_B8G8R8A8_SNORM:                                                          return "VK_FORMAT_B8G8R8A8_SNORM";
584                 case VK_FORMAT_B8G8R8A8_USCALED:                                                        return "VK_FORMAT_B8G8R8A8_USCALED";
585                 case VK_FORMAT_B8G8R8A8_SSCALED:                                                        return "VK_FORMAT_B8G8R8A8_SSCALED";
586                 case VK_FORMAT_B8G8R8A8_UINT:                                                           return "VK_FORMAT_B8G8R8A8_UINT";
587                 case VK_FORMAT_B8G8R8A8_SINT:                                                           return "VK_FORMAT_B8G8R8A8_SINT";
588                 case VK_FORMAT_B8G8R8A8_SRGB:                                                           return "VK_FORMAT_B8G8R8A8_SRGB";
589                 case VK_FORMAT_A8B8G8R8_UNORM_PACK32:                                           return "VK_FORMAT_A8B8G8R8_UNORM_PACK32";
590                 case VK_FORMAT_A8B8G8R8_SNORM_PACK32:                                           return "VK_FORMAT_A8B8G8R8_SNORM_PACK32";
591                 case VK_FORMAT_A8B8G8R8_USCALED_PACK32:                                         return "VK_FORMAT_A8B8G8R8_USCALED_PACK32";
592                 case VK_FORMAT_A8B8G8R8_SSCALED_PACK32:                                         return "VK_FORMAT_A8B8G8R8_SSCALED_PACK32";
593                 case VK_FORMAT_A8B8G8R8_UINT_PACK32:                                            return "VK_FORMAT_A8B8G8R8_UINT_PACK32";
594                 case VK_FORMAT_A8B8G8R8_SINT_PACK32:                                            return "VK_FORMAT_A8B8G8R8_SINT_PACK32";
595                 case VK_FORMAT_A8B8G8R8_SRGB_PACK32:                                            return "VK_FORMAT_A8B8G8R8_SRGB_PACK32";
596                 case VK_FORMAT_A2R10G10B10_UNORM_PACK32:                                        return "VK_FORMAT_A2R10G10B10_UNORM_PACK32";
597                 case VK_FORMAT_A2R10G10B10_SNORM_PACK32:                                        return "VK_FORMAT_A2R10G10B10_SNORM_PACK32";
598                 case VK_FORMAT_A2R10G10B10_USCALED_PACK32:                                      return "VK_FORMAT_A2R10G10B10_USCALED_PACK32";
599                 case VK_FORMAT_A2R10G10B10_SSCALED_PACK32:                                      return "VK_FORMAT_A2R10G10B10_SSCALED_PACK32";
600                 case VK_FORMAT_A2R10G10B10_UINT_PACK32:                                         return "VK_FORMAT_A2R10G10B10_UINT_PACK32";
601                 case VK_FORMAT_A2R10G10B10_SINT_PACK32:                                         return "VK_FORMAT_A2R10G10B10_SINT_PACK32";
602                 case VK_FORMAT_A2B10G10R10_UNORM_PACK32:                                        return "VK_FORMAT_A2B10G10R10_UNORM_PACK32";
603                 case VK_FORMAT_A2B10G10R10_SNORM_PACK32:                                        return "VK_FORMAT_A2B10G10R10_SNORM_PACK32";
604                 case VK_FORMAT_A2B10G10R10_USCALED_PACK32:                                      return "VK_FORMAT_A2B10G10R10_USCALED_PACK32";
605                 case VK_FORMAT_A2B10G10R10_SSCALED_PACK32:                                      return "VK_FORMAT_A2B10G10R10_SSCALED_PACK32";
606                 case VK_FORMAT_A2B10G10R10_UINT_PACK32:                                         return "VK_FORMAT_A2B10G10R10_UINT_PACK32";
607                 case VK_FORMAT_A2B10G10R10_SINT_PACK32:                                         return "VK_FORMAT_A2B10G10R10_SINT_PACK32";
608                 case VK_FORMAT_R16_UNORM:                                                                       return "VK_FORMAT_R16_UNORM";
609                 case VK_FORMAT_R16_SNORM:                                                                       return "VK_FORMAT_R16_SNORM";
610                 case VK_FORMAT_R16_USCALED:                                                                     return "VK_FORMAT_R16_USCALED";
611                 case VK_FORMAT_R16_SSCALED:                                                                     return "VK_FORMAT_R16_SSCALED";
612                 case VK_FORMAT_R16_UINT:                                                                        return "VK_FORMAT_R16_UINT";
613                 case VK_FORMAT_R16_SINT:                                                                        return "VK_FORMAT_R16_SINT";
614                 case VK_FORMAT_R16_SFLOAT:                                                                      return "VK_FORMAT_R16_SFLOAT";
615                 case VK_FORMAT_R16G16_UNORM:                                                            return "VK_FORMAT_R16G16_UNORM";
616                 case VK_FORMAT_R16G16_SNORM:                                                            return "VK_FORMAT_R16G16_SNORM";
617                 case VK_FORMAT_R16G16_USCALED:                                                          return "VK_FORMAT_R16G16_USCALED";
618                 case VK_FORMAT_R16G16_SSCALED:                                                          return "VK_FORMAT_R16G16_SSCALED";
619                 case VK_FORMAT_R16G16_UINT:                                                                     return "VK_FORMAT_R16G16_UINT";
620                 case VK_FORMAT_R16G16_SINT:                                                                     return "VK_FORMAT_R16G16_SINT";
621                 case VK_FORMAT_R16G16_SFLOAT:                                                           return "VK_FORMAT_R16G16_SFLOAT";
622                 case VK_FORMAT_R16G16B16_UNORM:                                                         return "VK_FORMAT_R16G16B16_UNORM";
623                 case VK_FORMAT_R16G16B16_SNORM:                                                         return "VK_FORMAT_R16G16B16_SNORM";
624                 case VK_FORMAT_R16G16B16_USCALED:                                                       return "VK_FORMAT_R16G16B16_USCALED";
625                 case VK_FORMAT_R16G16B16_SSCALED:                                                       return "VK_FORMAT_R16G16B16_SSCALED";
626                 case VK_FORMAT_R16G16B16_UINT:                                                          return "VK_FORMAT_R16G16B16_UINT";
627                 case VK_FORMAT_R16G16B16_SINT:                                                          return "VK_FORMAT_R16G16B16_SINT";
628                 case VK_FORMAT_R16G16B16_SFLOAT:                                                        return "VK_FORMAT_R16G16B16_SFLOAT";
629                 case VK_FORMAT_R16G16B16A16_UNORM:                                                      return "VK_FORMAT_R16G16B16A16_UNORM";
630                 case VK_FORMAT_R16G16B16A16_SNORM:                                                      return "VK_FORMAT_R16G16B16A16_SNORM";
631                 case VK_FORMAT_R16G16B16A16_USCALED:                                            return "VK_FORMAT_R16G16B16A16_USCALED";
632                 case VK_FORMAT_R16G16B16A16_SSCALED:                                            return "VK_FORMAT_R16G16B16A16_SSCALED";
633                 case VK_FORMAT_R16G16B16A16_UINT:                                                       return "VK_FORMAT_R16G16B16A16_UINT";
634                 case VK_FORMAT_R16G16B16A16_SINT:                                                       return "VK_FORMAT_R16G16B16A16_SINT";
635                 case VK_FORMAT_R16G16B16A16_SFLOAT:                                                     return "VK_FORMAT_R16G16B16A16_SFLOAT";
636                 case VK_FORMAT_R32_UINT:                                                                        return "VK_FORMAT_R32_UINT";
637                 case VK_FORMAT_R32_SINT:                                                                        return "VK_FORMAT_R32_SINT";
638                 case VK_FORMAT_R32_SFLOAT:                                                                      return "VK_FORMAT_R32_SFLOAT";
639                 case VK_FORMAT_R32G32_UINT:                                                                     return "VK_FORMAT_R32G32_UINT";
640                 case VK_FORMAT_R32G32_SINT:                                                                     return "VK_FORMAT_R32G32_SINT";
641                 case VK_FORMAT_R32G32_SFLOAT:                                                           return "VK_FORMAT_R32G32_SFLOAT";
642                 case VK_FORMAT_R32G32B32_UINT:                                                          return "VK_FORMAT_R32G32B32_UINT";
643                 case VK_FORMAT_R32G32B32_SINT:                                                          return "VK_FORMAT_R32G32B32_SINT";
644                 case VK_FORMAT_R32G32B32_SFLOAT:                                                        return "VK_FORMAT_R32G32B32_SFLOAT";
645                 case VK_FORMAT_R32G32B32A32_UINT:                                                       return "VK_FORMAT_R32G32B32A32_UINT";
646                 case VK_FORMAT_R32G32B32A32_SINT:                                                       return "VK_FORMAT_R32G32B32A32_SINT";
647                 case VK_FORMAT_R32G32B32A32_SFLOAT:                                                     return "VK_FORMAT_R32G32B32A32_SFLOAT";
648                 case VK_FORMAT_R64_UINT:                                                                        return "VK_FORMAT_R64_UINT";
649                 case VK_FORMAT_R64_SINT:                                                                        return "VK_FORMAT_R64_SINT";
650                 case VK_FORMAT_R64_SFLOAT:                                                                      return "VK_FORMAT_R64_SFLOAT";
651                 case VK_FORMAT_R64G64_UINT:                                                                     return "VK_FORMAT_R64G64_UINT";
652                 case VK_FORMAT_R64G64_SINT:                                                                     return "VK_FORMAT_R64G64_SINT";
653                 case VK_FORMAT_R64G64_SFLOAT:                                                           return "VK_FORMAT_R64G64_SFLOAT";
654                 case VK_FORMAT_R64G64B64_UINT:                                                          return "VK_FORMAT_R64G64B64_UINT";
655                 case VK_FORMAT_R64G64B64_SINT:                                                          return "VK_FORMAT_R64G64B64_SINT";
656                 case VK_FORMAT_R64G64B64_SFLOAT:                                                        return "VK_FORMAT_R64G64B64_SFLOAT";
657                 case VK_FORMAT_R64G64B64A64_UINT:                                                       return "VK_FORMAT_R64G64B64A64_UINT";
658                 case VK_FORMAT_R64G64B64A64_SINT:                                                       return "VK_FORMAT_R64G64B64A64_SINT";
659                 case VK_FORMAT_R64G64B64A64_SFLOAT:                                                     return "VK_FORMAT_R64G64B64A64_SFLOAT";
660                 case VK_FORMAT_B10G11R11_UFLOAT_PACK32:                                         return "VK_FORMAT_B10G11R11_UFLOAT_PACK32";
661                 case VK_FORMAT_E5B9G9R9_UFLOAT_PACK32:                                          return "VK_FORMAT_E5B9G9R9_UFLOAT_PACK32";
662                 case VK_FORMAT_D16_UNORM:                                                                       return "VK_FORMAT_D16_UNORM";
663                 case VK_FORMAT_X8_D24_UNORM_PACK32:                                                     return "VK_FORMAT_X8_D24_UNORM_PACK32";
664                 case VK_FORMAT_D32_SFLOAT:                                                                      return "VK_FORMAT_D32_SFLOAT";
665                 case VK_FORMAT_S8_UINT:                                                                         return "VK_FORMAT_S8_UINT";
666                 case VK_FORMAT_D16_UNORM_S8_UINT:                                                       return "VK_FORMAT_D16_UNORM_S8_UINT";
667                 case VK_FORMAT_D24_UNORM_S8_UINT:                                                       return "VK_FORMAT_D24_UNORM_S8_UINT";
668                 case VK_FORMAT_D32_SFLOAT_S8_UINT:                                                      return "VK_FORMAT_D32_SFLOAT_S8_UINT";
669                 case VK_FORMAT_BC1_RGB_UNORM_BLOCK:                                                     return "VK_FORMAT_BC1_RGB_UNORM_BLOCK";
670                 case VK_FORMAT_BC1_RGB_SRGB_BLOCK:                                                      return "VK_FORMAT_BC1_RGB_SRGB_BLOCK";
671                 case VK_FORMAT_BC1_RGBA_UNORM_BLOCK:                                            return "VK_FORMAT_BC1_RGBA_UNORM_BLOCK";
672                 case VK_FORMAT_BC1_RGBA_SRGB_BLOCK:                                                     return "VK_FORMAT_BC1_RGBA_SRGB_BLOCK";
673                 case VK_FORMAT_BC2_UNORM_BLOCK:                                                         return "VK_FORMAT_BC2_UNORM_BLOCK";
674                 case VK_FORMAT_BC2_SRGB_BLOCK:                                                          return "VK_FORMAT_BC2_SRGB_BLOCK";
675                 case VK_FORMAT_BC3_UNORM_BLOCK:                                                         return "VK_FORMAT_BC3_UNORM_BLOCK";
676                 case VK_FORMAT_BC3_SRGB_BLOCK:                                                          return "VK_FORMAT_BC3_SRGB_BLOCK";
677                 case VK_FORMAT_BC4_UNORM_BLOCK:                                                         return "VK_FORMAT_BC4_UNORM_BLOCK";
678                 case VK_FORMAT_BC4_SNORM_BLOCK:                                                         return "VK_FORMAT_BC4_SNORM_BLOCK";
679                 case VK_FORMAT_BC5_UNORM_BLOCK:                                                         return "VK_FORMAT_BC5_UNORM_BLOCK";
680                 case VK_FORMAT_BC5_SNORM_BLOCK:                                                         return "VK_FORMAT_BC5_SNORM_BLOCK";
681                 case VK_FORMAT_BC6H_UFLOAT_BLOCK:                                                       return "VK_FORMAT_BC6H_UFLOAT_BLOCK";
682                 case VK_FORMAT_BC6H_SFLOAT_BLOCK:                                                       return "VK_FORMAT_BC6H_SFLOAT_BLOCK";
683                 case VK_FORMAT_BC7_UNORM_BLOCK:                                                         return "VK_FORMAT_BC7_UNORM_BLOCK";
684                 case VK_FORMAT_BC7_SRGB_BLOCK:                                                          return "VK_FORMAT_BC7_SRGB_BLOCK";
685                 case VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK:                                         return "VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK";
686                 case VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK:                                          return "VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK";
687                 case VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK:                                       return "VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK";
688                 case VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK:                                        return "VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK";
689                 case VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK:                                       return "VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK";
690                 case VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK:                                        return "VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK";
691                 case VK_FORMAT_EAC_R11_UNORM_BLOCK:                                                     return "VK_FORMAT_EAC_R11_UNORM_BLOCK";
692                 case VK_FORMAT_EAC_R11_SNORM_BLOCK:                                                     return "VK_FORMAT_EAC_R11_SNORM_BLOCK";
693                 case VK_FORMAT_EAC_R11G11_UNORM_BLOCK:                                          return "VK_FORMAT_EAC_R11G11_UNORM_BLOCK";
694                 case VK_FORMAT_EAC_R11G11_SNORM_BLOCK:                                          return "VK_FORMAT_EAC_R11G11_SNORM_BLOCK";
695                 case VK_FORMAT_ASTC_4x4_UNORM_BLOCK:                                            return "VK_FORMAT_ASTC_4x4_UNORM_BLOCK";
696                 case VK_FORMAT_ASTC_4x4_SRGB_BLOCK:                                                     return "VK_FORMAT_ASTC_4x4_SRGB_BLOCK";
697                 case VK_FORMAT_ASTC_5x4_UNORM_BLOCK:                                            return "VK_FORMAT_ASTC_5x4_UNORM_BLOCK";
698                 case VK_FORMAT_ASTC_5x4_SRGB_BLOCK:                                                     return "VK_FORMAT_ASTC_5x4_SRGB_BLOCK";
699                 case VK_FORMAT_ASTC_5x5_UNORM_BLOCK:                                            return "VK_FORMAT_ASTC_5x5_UNORM_BLOCK";
700                 case VK_FORMAT_ASTC_5x5_SRGB_BLOCK:                                                     return "VK_FORMAT_ASTC_5x5_SRGB_BLOCK";
701                 case VK_FORMAT_ASTC_6x5_UNORM_BLOCK:                                            return "VK_FORMAT_ASTC_6x5_UNORM_BLOCK";
702                 case VK_FORMAT_ASTC_6x5_SRGB_BLOCK:                                                     return "VK_FORMAT_ASTC_6x5_SRGB_BLOCK";
703                 case VK_FORMAT_ASTC_6x6_UNORM_BLOCK:                                            return "VK_FORMAT_ASTC_6x6_UNORM_BLOCK";
704                 case VK_FORMAT_ASTC_6x6_SRGB_BLOCK:                                                     return "VK_FORMAT_ASTC_6x6_SRGB_BLOCK";
705                 case VK_FORMAT_ASTC_8x5_UNORM_BLOCK:                                            return "VK_FORMAT_ASTC_8x5_UNORM_BLOCK";
706                 case VK_FORMAT_ASTC_8x5_SRGB_BLOCK:                                                     return "VK_FORMAT_ASTC_8x5_SRGB_BLOCK";
707                 case VK_FORMAT_ASTC_8x6_UNORM_BLOCK:                                            return "VK_FORMAT_ASTC_8x6_UNORM_BLOCK";
708                 case VK_FORMAT_ASTC_8x6_SRGB_BLOCK:                                                     return "VK_FORMAT_ASTC_8x6_SRGB_BLOCK";
709                 case VK_FORMAT_ASTC_8x8_UNORM_BLOCK:                                            return "VK_FORMAT_ASTC_8x8_UNORM_BLOCK";
710                 case VK_FORMAT_ASTC_8x8_SRGB_BLOCK:                                                     return "VK_FORMAT_ASTC_8x8_SRGB_BLOCK";
711                 case VK_FORMAT_ASTC_10x5_UNORM_BLOCK:                                           return "VK_FORMAT_ASTC_10x5_UNORM_BLOCK";
712                 case VK_FORMAT_ASTC_10x5_SRGB_BLOCK:                                            return "VK_FORMAT_ASTC_10x5_SRGB_BLOCK";
713                 case VK_FORMAT_ASTC_10x6_UNORM_BLOCK:                                           return "VK_FORMAT_ASTC_10x6_UNORM_BLOCK";
714                 case VK_FORMAT_ASTC_10x6_SRGB_BLOCK:                                            return "VK_FORMAT_ASTC_10x6_SRGB_BLOCK";
715                 case VK_FORMAT_ASTC_10x8_UNORM_BLOCK:                                           return "VK_FORMAT_ASTC_10x8_UNORM_BLOCK";
716                 case VK_FORMAT_ASTC_10x8_SRGB_BLOCK:                                            return "VK_FORMAT_ASTC_10x8_SRGB_BLOCK";
717                 case VK_FORMAT_ASTC_10x10_UNORM_BLOCK:                                          return "VK_FORMAT_ASTC_10x10_UNORM_BLOCK";
718                 case VK_FORMAT_ASTC_10x10_SRGB_BLOCK:                                           return "VK_FORMAT_ASTC_10x10_SRGB_BLOCK";
719                 case VK_FORMAT_ASTC_12x10_UNORM_BLOCK:                                          return "VK_FORMAT_ASTC_12x10_UNORM_BLOCK";
720                 case VK_FORMAT_ASTC_12x10_SRGB_BLOCK:                                           return "VK_FORMAT_ASTC_12x10_SRGB_BLOCK";
721                 case VK_FORMAT_ASTC_12x12_UNORM_BLOCK:                                          return "VK_FORMAT_ASTC_12x12_UNORM_BLOCK";
722                 case VK_FORMAT_ASTC_12x12_SRGB_BLOCK:                                           return "VK_FORMAT_ASTC_12x12_SRGB_BLOCK";
723                 case VK_FORMAT_G8B8G8R8_422_UNORM:                                                      return "VK_FORMAT_G8B8G8R8_422_UNORM";
724                 case VK_FORMAT_B8G8R8G8_422_UNORM:                                                      return "VK_FORMAT_B8G8R8G8_422_UNORM";
725                 case VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM:                                       return "VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM";
726                 case VK_FORMAT_G8_B8R8_2PLANE_420_UNORM:                                        return "VK_FORMAT_G8_B8R8_2PLANE_420_UNORM";
727                 case VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM:                                       return "VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM";
728                 case VK_FORMAT_G8_B8R8_2PLANE_422_UNORM:                                        return "VK_FORMAT_G8_B8R8_2PLANE_422_UNORM";
729                 case VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM:                                       return "VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM";
730                 case VK_FORMAT_R10X6_UNORM_PACK16:                                                      return "VK_FORMAT_R10X6_UNORM_PACK16";
731                 case VK_FORMAT_R10X6G10X6_UNORM_2PACK16:                                        return "VK_FORMAT_R10X6G10X6_UNORM_2PACK16";
732                 case VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16:                      return "VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16";
733                 case VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16:          return "VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16";
734                 case VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16:          return "VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16";
735                 case VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16:      return "VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16";
736                 case VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16:       return "VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16";
737                 case VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16:      return "VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16";
738                 case VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16:       return "VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16";
739                 case VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16:      return "VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16";
740                 case VK_FORMAT_R12X4_UNORM_PACK16:                                                      return "VK_FORMAT_R12X4_UNORM_PACK16";
741                 case VK_FORMAT_R12X4G12X4_UNORM_2PACK16:                                        return "VK_FORMAT_R12X4G12X4_UNORM_2PACK16";
742                 case VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16:                      return "VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16";
743                 case VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16:          return "VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16";
744                 case VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16:          return "VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16";
745                 case VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16:      return "VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16";
746                 case VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16:       return "VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16";
747                 case VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16:      return "VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16";
748                 case VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16:       return "VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16";
749                 case VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16:      return "VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16";
750                 case VK_FORMAT_G16B16G16R16_422_UNORM:                                          return "VK_FORMAT_G16B16G16R16_422_UNORM";
751                 case VK_FORMAT_B16G16R16G16_422_UNORM:                                          return "VK_FORMAT_B16G16R16G16_422_UNORM";
752                 case VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM:                            return "VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM";
753                 case VK_FORMAT_G16_B16R16_2PLANE_420_UNORM:                                     return "VK_FORMAT_G16_B16R16_2PLANE_420_UNORM";
754                 case VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM:                            return "VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM";
755                 case VK_FORMAT_G16_B16R16_2PLANE_422_UNORM:                                     return "VK_FORMAT_G16_B16R16_2PLANE_422_UNORM";
756                 case VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM:                            return "VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM";
757                 case VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG:                                     return "VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG";
758                 case VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG:                                     return "VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG";
759                 case VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG:                                     return "VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG";
760                 case VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG:                                     return "VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG";
761                 case VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG:                                      return "VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG";
762                 case VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG:                                      return "VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG";
763                 case VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG:                                      return "VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG";
764                 case VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG:                                      return "VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG";
765                 case VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT:                                       return "VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT";
766                 case VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT:                                       return "VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT";
767                 case VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT:                                       return "VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT";
768                 case VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT:                                       return "VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT";
769                 case VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT:                                       return "VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT";
770                 case VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT:                                       return "VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT";
771                 case VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT:                                       return "VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT";
772                 case VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT:                                       return "VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT";
773                 case VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT:                                      return "VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT";
774                 case VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT:                                      return "VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT";
775                 case VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT:                                      return "VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT";
776                 case VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT:                                     return "VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT";
777                 case VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT:                                     return "VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT";
778                 case VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT:                                     return "VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT";
779                 case VK_FORMAT_MAX_ENUM:                                                                        return "VK_FORMAT_MAX_ENUM";
780                 default:                                                                                                        return DE_NULL;
781         }
782 }
783
784 const char* getImageTypeName (VkImageType value)
785 {
786         switch (value)
787         {
788                 case VK_IMAGE_TYPE_1D:                  return "VK_IMAGE_TYPE_1D";
789                 case VK_IMAGE_TYPE_2D:                  return "VK_IMAGE_TYPE_2D";
790                 case VK_IMAGE_TYPE_3D:                  return "VK_IMAGE_TYPE_3D";
791                 case VK_IMAGE_TYPE_MAX_ENUM:    return "VK_IMAGE_TYPE_MAX_ENUM";
792                 default:                                                return DE_NULL;
793         }
794 }
795
796 const char* getImageTilingName (VkImageTiling value)
797 {
798         switch (value)
799         {
800                 case VK_IMAGE_TILING_OPTIMAL:                                   return "VK_IMAGE_TILING_OPTIMAL";
801                 case VK_IMAGE_TILING_LINEAR:                                    return "VK_IMAGE_TILING_LINEAR";
802                 case VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT:   return "VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT";
803                 case VK_IMAGE_TILING_MAX_ENUM:                                  return "VK_IMAGE_TILING_MAX_ENUM";
804                 default:                                                                                return DE_NULL;
805         }
806 }
807
808 const char* getPhysicalDeviceTypeName (VkPhysicalDeviceType value)
809 {
810         switch (value)
811         {
812                 case VK_PHYSICAL_DEVICE_TYPE_OTHER:                             return "VK_PHYSICAL_DEVICE_TYPE_OTHER";
813                 case VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU:    return "VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU";
814                 case VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU:              return "VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU";
815                 case VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU:               return "VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU";
816                 case VK_PHYSICAL_DEVICE_TYPE_CPU:                               return "VK_PHYSICAL_DEVICE_TYPE_CPU";
817                 case VK_PHYSICAL_DEVICE_TYPE_MAX_ENUM:                  return "VK_PHYSICAL_DEVICE_TYPE_MAX_ENUM";
818                 default:                                                                                return DE_NULL;
819         }
820 }
821
822 const char* getQueryTypeName (VkQueryType value)
823 {
824         switch (value)
825         {
826                 case VK_QUERY_TYPE_OCCLUSION:                                                                   return "VK_QUERY_TYPE_OCCLUSION";
827                 case VK_QUERY_TYPE_PIPELINE_STATISTICS:                                                 return "VK_QUERY_TYPE_PIPELINE_STATISTICS";
828                 case VK_QUERY_TYPE_TIMESTAMP:                                                                   return "VK_QUERY_TYPE_TIMESTAMP";
829                 case VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT:                               return "VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT";
830                 case VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV:    return "VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV";
831                 case VK_QUERY_TYPE_PERFORMANCE_QUERY_INTEL:                                             return "VK_QUERY_TYPE_PERFORMANCE_QUERY_INTEL";
832                 case VK_QUERY_TYPE_MAX_ENUM:                                                                    return "VK_QUERY_TYPE_MAX_ENUM";
833                 default:                                                                                                                return DE_NULL;
834         }
835 }
836
837 const char* getSharingModeName (VkSharingMode value)
838 {
839         switch (value)
840         {
841                 case VK_SHARING_MODE_EXCLUSIVE:         return "VK_SHARING_MODE_EXCLUSIVE";
842                 case VK_SHARING_MODE_CONCURRENT:        return "VK_SHARING_MODE_CONCURRENT";
843                 case VK_SHARING_MODE_MAX_ENUM:          return "VK_SHARING_MODE_MAX_ENUM";
844                 default:                                                        return DE_NULL;
845         }
846 }
847
848 const char* getImageLayoutName (VkImageLayout value)
849 {
850         switch (value)
851         {
852                 case VK_IMAGE_LAYOUT_UNDEFINED:                                                                         return "VK_IMAGE_LAYOUT_UNDEFINED";
853                 case VK_IMAGE_LAYOUT_GENERAL:                                                                           return "VK_IMAGE_LAYOUT_GENERAL";
854                 case VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL:                                          return "VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL";
855                 case VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL:                          return "VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL";
856                 case VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL:                           return "VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL";
857                 case VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL:                                          return "VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL";
858                 case VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL:                                                      return "VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL";
859                 case VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL:                                                      return "VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL";
860                 case VK_IMAGE_LAYOUT_PREINITIALIZED:                                                            return "VK_IMAGE_LAYOUT_PREINITIALIZED";
861                 case VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL:        return "VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL";
862                 case VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL:        return "VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL";
863                 case VK_IMAGE_LAYOUT_PRESENT_SRC_KHR:                                                           return "VK_IMAGE_LAYOUT_PRESENT_SRC_KHR";
864                 case VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR:                                                        return "VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR";
865                 case VK_IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV:                                           return "VK_IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV";
866                 case VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT:                          return "VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT";
867                 case VK_IMAGE_LAYOUT_MAX_ENUM:                                                                          return "VK_IMAGE_LAYOUT_MAX_ENUM";
868                 default:                                                                                                                        return DE_NULL;
869         }
870 }
871
872 const char* getImageViewTypeName (VkImageViewType value)
873 {
874         switch (value)
875         {
876                 case VK_IMAGE_VIEW_TYPE_1D:                     return "VK_IMAGE_VIEW_TYPE_1D";
877                 case VK_IMAGE_VIEW_TYPE_2D:                     return "VK_IMAGE_VIEW_TYPE_2D";
878                 case VK_IMAGE_VIEW_TYPE_3D:                     return "VK_IMAGE_VIEW_TYPE_3D";
879                 case VK_IMAGE_VIEW_TYPE_CUBE:           return "VK_IMAGE_VIEW_TYPE_CUBE";
880                 case VK_IMAGE_VIEW_TYPE_1D_ARRAY:       return "VK_IMAGE_VIEW_TYPE_1D_ARRAY";
881                 case VK_IMAGE_VIEW_TYPE_2D_ARRAY:       return "VK_IMAGE_VIEW_TYPE_2D_ARRAY";
882                 case VK_IMAGE_VIEW_TYPE_CUBE_ARRAY:     return "VK_IMAGE_VIEW_TYPE_CUBE_ARRAY";
883                 case VK_IMAGE_VIEW_TYPE_MAX_ENUM:       return "VK_IMAGE_VIEW_TYPE_MAX_ENUM";
884                 default:                                                        return DE_NULL;
885         }
886 }
887
888 const char* getComponentSwizzleName (VkComponentSwizzle value)
889 {
890         switch (value)
891         {
892                 case VK_COMPONENT_SWIZZLE_IDENTITY:     return "VK_COMPONENT_SWIZZLE_IDENTITY";
893                 case VK_COMPONENT_SWIZZLE_ZERO:         return "VK_COMPONENT_SWIZZLE_ZERO";
894                 case VK_COMPONENT_SWIZZLE_ONE:          return "VK_COMPONENT_SWIZZLE_ONE";
895                 case VK_COMPONENT_SWIZZLE_R:            return "VK_COMPONENT_SWIZZLE_R";
896                 case VK_COMPONENT_SWIZZLE_G:            return "VK_COMPONENT_SWIZZLE_G";
897                 case VK_COMPONENT_SWIZZLE_B:            return "VK_COMPONENT_SWIZZLE_B";
898                 case VK_COMPONENT_SWIZZLE_A:            return "VK_COMPONENT_SWIZZLE_A";
899                 case VK_COMPONENT_SWIZZLE_MAX_ENUM:     return "VK_COMPONENT_SWIZZLE_MAX_ENUM";
900                 default:                                                        return DE_NULL;
901         }
902 }
903
904 const char* getVertexInputRateName (VkVertexInputRate value)
905 {
906         switch (value)
907         {
908                 case VK_VERTEX_INPUT_RATE_VERTEX:       return "VK_VERTEX_INPUT_RATE_VERTEX";
909                 case VK_VERTEX_INPUT_RATE_INSTANCE:     return "VK_VERTEX_INPUT_RATE_INSTANCE";
910                 case VK_VERTEX_INPUT_RATE_MAX_ENUM:     return "VK_VERTEX_INPUT_RATE_MAX_ENUM";
911                 default:                                                        return DE_NULL;
912         }
913 }
914
915 const char* getPrimitiveTopologyName (VkPrimitiveTopology value)
916 {
917         switch (value)
918         {
919                 case VK_PRIMITIVE_TOPOLOGY_POINT_LIST:                                          return "VK_PRIMITIVE_TOPOLOGY_POINT_LIST";
920                 case VK_PRIMITIVE_TOPOLOGY_LINE_LIST:                                           return "VK_PRIMITIVE_TOPOLOGY_LINE_LIST";
921                 case VK_PRIMITIVE_TOPOLOGY_LINE_STRIP:                                          return "VK_PRIMITIVE_TOPOLOGY_LINE_STRIP";
922                 case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST:                                       return "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST";
923                 case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP:                                      return "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP";
924                 case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN:                                        return "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN";
925                 case VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY:            return "VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY";
926                 case VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY:           return "VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY";
927                 case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY:        return "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY";
928                 case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY:       return "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY";
929                 case VK_PRIMITIVE_TOPOLOGY_PATCH_LIST:                                          return "VK_PRIMITIVE_TOPOLOGY_PATCH_LIST";
930                 case VK_PRIMITIVE_TOPOLOGY_MAX_ENUM:                                            return "VK_PRIMITIVE_TOPOLOGY_MAX_ENUM";
931                 default:                                                                                                        return DE_NULL;
932         }
933 }
934
935 const char* getPolygonModeName (VkPolygonMode value)
936 {
937         switch (value)
938         {
939                 case VK_POLYGON_MODE_FILL:                              return "VK_POLYGON_MODE_FILL";
940                 case VK_POLYGON_MODE_LINE:                              return "VK_POLYGON_MODE_LINE";
941                 case VK_POLYGON_MODE_POINT:                             return "VK_POLYGON_MODE_POINT";
942                 case VK_POLYGON_MODE_FILL_RECTANGLE_NV: return "VK_POLYGON_MODE_FILL_RECTANGLE_NV";
943                 case VK_POLYGON_MODE_MAX_ENUM:                  return "VK_POLYGON_MODE_MAX_ENUM";
944                 default:                                                                return DE_NULL;
945         }
946 }
947
948 const char* getFrontFaceName (VkFrontFace value)
949 {
950         switch (value)
951         {
952                 case VK_FRONT_FACE_COUNTER_CLOCKWISE:   return "VK_FRONT_FACE_COUNTER_CLOCKWISE";
953                 case VK_FRONT_FACE_CLOCKWISE:                   return "VK_FRONT_FACE_CLOCKWISE";
954                 case VK_FRONT_FACE_MAX_ENUM:                    return "VK_FRONT_FACE_MAX_ENUM";
955                 default:                                                                return DE_NULL;
956         }
957 }
958
959 const char* getCompareOpName (VkCompareOp value)
960 {
961         switch (value)
962         {
963                 case VK_COMPARE_OP_NEVER:                               return "VK_COMPARE_OP_NEVER";
964                 case VK_COMPARE_OP_LESS:                                return "VK_COMPARE_OP_LESS";
965                 case VK_COMPARE_OP_EQUAL:                               return "VK_COMPARE_OP_EQUAL";
966                 case VK_COMPARE_OP_LESS_OR_EQUAL:               return "VK_COMPARE_OP_LESS_OR_EQUAL";
967                 case VK_COMPARE_OP_GREATER:                             return "VK_COMPARE_OP_GREATER";
968                 case VK_COMPARE_OP_NOT_EQUAL:                   return "VK_COMPARE_OP_NOT_EQUAL";
969                 case VK_COMPARE_OP_GREATER_OR_EQUAL:    return "VK_COMPARE_OP_GREATER_OR_EQUAL";
970                 case VK_COMPARE_OP_ALWAYS:                              return "VK_COMPARE_OP_ALWAYS";
971                 case VK_COMPARE_OP_MAX_ENUM:                    return "VK_COMPARE_OP_MAX_ENUM";
972                 default:                                                                return DE_NULL;
973         }
974 }
975
976 const char* getStencilOpName (VkStencilOp value)
977 {
978         switch (value)
979         {
980                 case VK_STENCIL_OP_KEEP:                                return "VK_STENCIL_OP_KEEP";
981                 case VK_STENCIL_OP_ZERO:                                return "VK_STENCIL_OP_ZERO";
982                 case VK_STENCIL_OP_REPLACE:                             return "VK_STENCIL_OP_REPLACE";
983                 case VK_STENCIL_OP_INCREMENT_AND_CLAMP: return "VK_STENCIL_OP_INCREMENT_AND_CLAMP";
984                 case VK_STENCIL_OP_DECREMENT_AND_CLAMP: return "VK_STENCIL_OP_DECREMENT_AND_CLAMP";
985                 case VK_STENCIL_OP_INVERT:                              return "VK_STENCIL_OP_INVERT";
986                 case VK_STENCIL_OP_INCREMENT_AND_WRAP:  return "VK_STENCIL_OP_INCREMENT_AND_WRAP";
987                 case VK_STENCIL_OP_DECREMENT_AND_WRAP:  return "VK_STENCIL_OP_DECREMENT_AND_WRAP";
988                 case VK_STENCIL_OP_MAX_ENUM:                    return "VK_STENCIL_OP_MAX_ENUM";
989                 default:                                                                return DE_NULL;
990         }
991 }
992
993 const char* getLogicOpName (VkLogicOp value)
994 {
995         switch (value)
996         {
997                 case VK_LOGIC_OP_CLEAR:                 return "VK_LOGIC_OP_CLEAR";
998                 case VK_LOGIC_OP_AND:                   return "VK_LOGIC_OP_AND";
999                 case VK_LOGIC_OP_AND_REVERSE:   return "VK_LOGIC_OP_AND_REVERSE";
1000                 case VK_LOGIC_OP_COPY:                  return "VK_LOGIC_OP_COPY";
1001                 case VK_LOGIC_OP_AND_INVERTED:  return "VK_LOGIC_OP_AND_INVERTED";
1002                 case VK_LOGIC_OP_NO_OP:                 return "VK_LOGIC_OP_NO_OP";
1003                 case VK_LOGIC_OP_XOR:                   return "VK_LOGIC_OP_XOR";
1004                 case VK_LOGIC_OP_OR:                    return "VK_LOGIC_OP_OR";
1005                 case VK_LOGIC_OP_NOR:                   return "VK_LOGIC_OP_NOR";
1006                 case VK_LOGIC_OP_EQUIVALENT:    return "VK_LOGIC_OP_EQUIVALENT";
1007                 case VK_LOGIC_OP_INVERT:                return "VK_LOGIC_OP_INVERT";
1008                 case VK_LOGIC_OP_OR_REVERSE:    return "VK_LOGIC_OP_OR_REVERSE";
1009                 case VK_LOGIC_OP_COPY_INVERTED: return "VK_LOGIC_OP_COPY_INVERTED";
1010                 case VK_LOGIC_OP_OR_INVERTED:   return "VK_LOGIC_OP_OR_INVERTED";
1011                 case VK_LOGIC_OP_NAND:                  return "VK_LOGIC_OP_NAND";
1012                 case VK_LOGIC_OP_SET:                   return "VK_LOGIC_OP_SET";
1013                 case VK_LOGIC_OP_MAX_ENUM:              return "VK_LOGIC_OP_MAX_ENUM";
1014                 default:                                                return DE_NULL;
1015         }
1016 }
1017
1018 const char* getBlendFactorName (VkBlendFactor value)
1019 {
1020         switch (value)
1021         {
1022                 case VK_BLEND_FACTOR_ZERO:                                              return "VK_BLEND_FACTOR_ZERO";
1023                 case VK_BLEND_FACTOR_ONE:                                               return "VK_BLEND_FACTOR_ONE";
1024                 case VK_BLEND_FACTOR_SRC_COLOR:                                 return "VK_BLEND_FACTOR_SRC_COLOR";
1025                 case VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR:               return "VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR";
1026                 case VK_BLEND_FACTOR_DST_COLOR:                                 return "VK_BLEND_FACTOR_DST_COLOR";
1027                 case VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR:               return "VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR";
1028                 case VK_BLEND_FACTOR_SRC_ALPHA:                                 return "VK_BLEND_FACTOR_SRC_ALPHA";
1029                 case VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA:               return "VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA";
1030                 case VK_BLEND_FACTOR_DST_ALPHA:                                 return "VK_BLEND_FACTOR_DST_ALPHA";
1031                 case VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA:               return "VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA";
1032                 case VK_BLEND_FACTOR_CONSTANT_COLOR:                    return "VK_BLEND_FACTOR_CONSTANT_COLOR";
1033                 case VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR:  return "VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR";
1034                 case VK_BLEND_FACTOR_CONSTANT_ALPHA:                    return "VK_BLEND_FACTOR_CONSTANT_ALPHA";
1035                 case VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA:  return "VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA";
1036                 case VK_BLEND_FACTOR_SRC_ALPHA_SATURATE:                return "VK_BLEND_FACTOR_SRC_ALPHA_SATURATE";
1037                 case VK_BLEND_FACTOR_SRC1_COLOR:                                return "VK_BLEND_FACTOR_SRC1_COLOR";
1038                 case VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR:              return "VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR";
1039                 case VK_BLEND_FACTOR_SRC1_ALPHA:                                return "VK_BLEND_FACTOR_SRC1_ALPHA";
1040                 case VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA:              return "VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA";
1041                 case VK_BLEND_FACTOR_MAX_ENUM:                                  return "VK_BLEND_FACTOR_MAX_ENUM";
1042                 default:                                                                                return DE_NULL;
1043         }
1044 }
1045
1046 const char* getBlendOpName (VkBlendOp value)
1047 {
1048         switch (value)
1049         {
1050                 case VK_BLEND_OP_ADD:                                           return "VK_BLEND_OP_ADD";
1051                 case VK_BLEND_OP_SUBTRACT:                                      return "VK_BLEND_OP_SUBTRACT";
1052                 case VK_BLEND_OP_REVERSE_SUBTRACT:                      return "VK_BLEND_OP_REVERSE_SUBTRACT";
1053                 case VK_BLEND_OP_MIN:                                           return "VK_BLEND_OP_MIN";
1054                 case VK_BLEND_OP_MAX:                                           return "VK_BLEND_OP_MAX";
1055                 case VK_BLEND_OP_ZERO_EXT:                                      return "VK_BLEND_OP_ZERO_EXT";
1056                 case VK_BLEND_OP_SRC_EXT:                                       return "VK_BLEND_OP_SRC_EXT";
1057                 case VK_BLEND_OP_DST_EXT:                                       return "VK_BLEND_OP_DST_EXT";
1058                 case VK_BLEND_OP_SRC_OVER_EXT:                          return "VK_BLEND_OP_SRC_OVER_EXT";
1059                 case VK_BLEND_OP_DST_OVER_EXT:                          return "VK_BLEND_OP_DST_OVER_EXT";
1060                 case VK_BLEND_OP_SRC_IN_EXT:                            return "VK_BLEND_OP_SRC_IN_EXT";
1061                 case VK_BLEND_OP_DST_IN_EXT:                            return "VK_BLEND_OP_DST_IN_EXT";
1062                 case VK_BLEND_OP_SRC_OUT_EXT:                           return "VK_BLEND_OP_SRC_OUT_EXT";
1063                 case VK_BLEND_OP_DST_OUT_EXT:                           return "VK_BLEND_OP_DST_OUT_EXT";
1064                 case VK_BLEND_OP_SRC_ATOP_EXT:                          return "VK_BLEND_OP_SRC_ATOP_EXT";
1065                 case VK_BLEND_OP_DST_ATOP_EXT:                          return "VK_BLEND_OP_DST_ATOP_EXT";
1066                 case VK_BLEND_OP_XOR_EXT:                                       return "VK_BLEND_OP_XOR_EXT";
1067                 case VK_BLEND_OP_MULTIPLY_EXT:                          return "VK_BLEND_OP_MULTIPLY_EXT";
1068                 case VK_BLEND_OP_SCREEN_EXT:                            return "VK_BLEND_OP_SCREEN_EXT";
1069                 case VK_BLEND_OP_OVERLAY_EXT:                           return "VK_BLEND_OP_OVERLAY_EXT";
1070                 case VK_BLEND_OP_DARKEN_EXT:                            return "VK_BLEND_OP_DARKEN_EXT";
1071                 case VK_BLEND_OP_LIGHTEN_EXT:                           return "VK_BLEND_OP_LIGHTEN_EXT";
1072                 case VK_BLEND_OP_COLORDODGE_EXT:                        return "VK_BLEND_OP_COLORDODGE_EXT";
1073                 case VK_BLEND_OP_COLORBURN_EXT:                         return "VK_BLEND_OP_COLORBURN_EXT";
1074                 case VK_BLEND_OP_HARDLIGHT_EXT:                         return "VK_BLEND_OP_HARDLIGHT_EXT";
1075                 case VK_BLEND_OP_SOFTLIGHT_EXT:                         return "VK_BLEND_OP_SOFTLIGHT_EXT";
1076                 case VK_BLEND_OP_DIFFERENCE_EXT:                        return "VK_BLEND_OP_DIFFERENCE_EXT";
1077                 case VK_BLEND_OP_EXCLUSION_EXT:                         return "VK_BLEND_OP_EXCLUSION_EXT";
1078                 case VK_BLEND_OP_INVERT_EXT:                            return "VK_BLEND_OP_INVERT_EXT";
1079                 case VK_BLEND_OP_INVERT_RGB_EXT:                        return "VK_BLEND_OP_INVERT_RGB_EXT";
1080                 case VK_BLEND_OP_LINEARDODGE_EXT:                       return "VK_BLEND_OP_LINEARDODGE_EXT";
1081                 case VK_BLEND_OP_LINEARBURN_EXT:                        return "VK_BLEND_OP_LINEARBURN_EXT";
1082                 case VK_BLEND_OP_VIVIDLIGHT_EXT:                        return "VK_BLEND_OP_VIVIDLIGHT_EXT";
1083                 case VK_BLEND_OP_LINEARLIGHT_EXT:                       return "VK_BLEND_OP_LINEARLIGHT_EXT";
1084                 case VK_BLEND_OP_PINLIGHT_EXT:                          return "VK_BLEND_OP_PINLIGHT_EXT";
1085                 case VK_BLEND_OP_HARDMIX_EXT:                           return "VK_BLEND_OP_HARDMIX_EXT";
1086                 case VK_BLEND_OP_HSL_HUE_EXT:                           return "VK_BLEND_OP_HSL_HUE_EXT";
1087                 case VK_BLEND_OP_HSL_SATURATION_EXT:            return "VK_BLEND_OP_HSL_SATURATION_EXT";
1088                 case VK_BLEND_OP_HSL_COLOR_EXT:                         return "VK_BLEND_OP_HSL_COLOR_EXT";
1089                 case VK_BLEND_OP_HSL_LUMINOSITY_EXT:            return "VK_BLEND_OP_HSL_LUMINOSITY_EXT";
1090                 case VK_BLEND_OP_PLUS_EXT:                                      return "VK_BLEND_OP_PLUS_EXT";
1091                 case VK_BLEND_OP_PLUS_CLAMPED_EXT:                      return "VK_BLEND_OP_PLUS_CLAMPED_EXT";
1092                 case VK_BLEND_OP_PLUS_CLAMPED_ALPHA_EXT:        return "VK_BLEND_OP_PLUS_CLAMPED_ALPHA_EXT";
1093                 case VK_BLEND_OP_PLUS_DARKER_EXT:                       return "VK_BLEND_OP_PLUS_DARKER_EXT";
1094                 case VK_BLEND_OP_MINUS_EXT:                                     return "VK_BLEND_OP_MINUS_EXT";
1095                 case VK_BLEND_OP_MINUS_CLAMPED_EXT:                     return "VK_BLEND_OP_MINUS_CLAMPED_EXT";
1096                 case VK_BLEND_OP_CONTRAST_EXT:                          return "VK_BLEND_OP_CONTRAST_EXT";
1097                 case VK_BLEND_OP_INVERT_OVG_EXT:                        return "VK_BLEND_OP_INVERT_OVG_EXT";
1098                 case VK_BLEND_OP_RED_EXT:                                       return "VK_BLEND_OP_RED_EXT";
1099                 case VK_BLEND_OP_GREEN_EXT:                                     return "VK_BLEND_OP_GREEN_EXT";
1100                 case VK_BLEND_OP_BLUE_EXT:                                      return "VK_BLEND_OP_BLUE_EXT";
1101                 case VK_BLEND_OP_MAX_ENUM:                                      return "VK_BLEND_OP_MAX_ENUM";
1102                 default:                                                                        return DE_NULL;
1103         }
1104 }
1105
1106 const char* getDynamicStateName (VkDynamicState value)
1107 {
1108         switch (value)
1109         {
1110                 case VK_DYNAMIC_STATE_VIEWPORT:                                                 return "VK_DYNAMIC_STATE_VIEWPORT";
1111                 case VK_DYNAMIC_STATE_SCISSOR:                                                  return "VK_DYNAMIC_STATE_SCISSOR";
1112                 case VK_DYNAMIC_STATE_LINE_WIDTH:                                               return "VK_DYNAMIC_STATE_LINE_WIDTH";
1113                 case VK_DYNAMIC_STATE_DEPTH_BIAS:                                               return "VK_DYNAMIC_STATE_DEPTH_BIAS";
1114                 case VK_DYNAMIC_STATE_BLEND_CONSTANTS:                                  return "VK_DYNAMIC_STATE_BLEND_CONSTANTS";
1115                 case VK_DYNAMIC_STATE_DEPTH_BOUNDS:                                             return "VK_DYNAMIC_STATE_DEPTH_BOUNDS";
1116                 case VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK:                             return "VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK";
1117                 case VK_DYNAMIC_STATE_STENCIL_WRITE_MASK:                               return "VK_DYNAMIC_STATE_STENCIL_WRITE_MASK";
1118                 case VK_DYNAMIC_STATE_STENCIL_REFERENCE:                                return "VK_DYNAMIC_STATE_STENCIL_REFERENCE";
1119                 case VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV:                    return "VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV";
1120                 case VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT:                    return "VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT";
1121                 case VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT:                             return "VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT";
1122                 case VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV: return "VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV";
1123                 case VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV:  return "VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV";
1124                 case VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV:                             return "VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV";
1125                 case VK_DYNAMIC_STATE_LINE_STIPPLE_EXT:                                 return "VK_DYNAMIC_STATE_LINE_STIPPLE_EXT";
1126                 case VK_DYNAMIC_STATE_MAX_ENUM:                                                 return "VK_DYNAMIC_STATE_MAX_ENUM";
1127                 default:                                                                                                return DE_NULL;
1128         }
1129 }
1130
1131 const char* getFilterName (VkFilter value)
1132 {
1133         switch (value)
1134         {
1135                 case VK_FILTER_NEAREST:         return "VK_FILTER_NEAREST";
1136                 case VK_FILTER_LINEAR:          return "VK_FILTER_LINEAR";
1137                 case VK_FILTER_CUBIC_IMG:       return "VK_FILTER_CUBIC_IMG";
1138                 case VK_FILTER_MAX_ENUM:        return "VK_FILTER_MAX_ENUM";
1139                 default:                                        return DE_NULL;
1140         }
1141 }
1142
1143 const char* getSamplerMipmapModeName (VkSamplerMipmapMode value)
1144 {
1145         switch (value)
1146         {
1147                 case VK_SAMPLER_MIPMAP_MODE_NEAREST:    return "VK_SAMPLER_MIPMAP_MODE_NEAREST";
1148                 case VK_SAMPLER_MIPMAP_MODE_LINEAR:             return "VK_SAMPLER_MIPMAP_MODE_LINEAR";
1149                 case VK_SAMPLER_MIPMAP_MODE_MAX_ENUM:   return "VK_SAMPLER_MIPMAP_MODE_MAX_ENUM";
1150                 default:                                                                return DE_NULL;
1151         }
1152 }
1153
1154 const char* getSamplerAddressModeName (VkSamplerAddressMode value)
1155 {
1156         switch (value)
1157         {
1158                 case VK_SAMPLER_ADDRESS_MODE_REPEAT:                            return "VK_SAMPLER_ADDRESS_MODE_REPEAT";
1159                 case VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT:           return "VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT";
1160                 case VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE:                     return "VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE";
1161                 case VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER:           return "VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER";
1162                 case VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE:      return "VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE";
1163                 case VK_SAMPLER_ADDRESS_MODE_MAX_ENUM:                          return "VK_SAMPLER_ADDRESS_MODE_MAX_ENUM";
1164                 default:                                                                                        return DE_NULL;
1165         }
1166 }
1167
1168 const char* getBorderColorName (VkBorderColor value)
1169 {
1170         switch (value)
1171         {
1172                 case VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK:   return "VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK";
1173                 case VK_BORDER_COLOR_INT_TRANSPARENT_BLACK:             return "VK_BORDER_COLOR_INT_TRANSPARENT_BLACK";
1174                 case VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK:                return "VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK";
1175                 case VK_BORDER_COLOR_INT_OPAQUE_BLACK:                  return "VK_BORDER_COLOR_INT_OPAQUE_BLACK";
1176                 case VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE:                return "VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE";
1177                 case VK_BORDER_COLOR_INT_OPAQUE_WHITE:                  return "VK_BORDER_COLOR_INT_OPAQUE_WHITE";
1178                 case VK_BORDER_COLOR_MAX_ENUM:                                  return "VK_BORDER_COLOR_MAX_ENUM";
1179                 default:                                                                                return DE_NULL;
1180         }
1181 }
1182
1183 const char* getDescriptorTypeName (VkDescriptorType value)
1184 {
1185         switch (value)
1186         {
1187                 case VK_DESCRIPTOR_TYPE_SAMPLER:                                        return "VK_DESCRIPTOR_TYPE_SAMPLER";
1188                 case VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER:         return "VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER";
1189                 case VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE:                          return "VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE";
1190                 case VK_DESCRIPTOR_TYPE_STORAGE_IMAGE:                          return "VK_DESCRIPTOR_TYPE_STORAGE_IMAGE";
1191                 case VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER:           return "VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER";
1192                 case VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER:           return "VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER";
1193                 case VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER:                         return "VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER";
1194                 case VK_DESCRIPTOR_TYPE_STORAGE_BUFFER:                         return "VK_DESCRIPTOR_TYPE_STORAGE_BUFFER";
1195                 case VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC:         return "VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC";
1196                 case VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC:         return "VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC";
1197                 case VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT:                       return "VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT";
1198                 case VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT:       return "VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT";
1199                 case VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV:      return "VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV";
1200                 case VK_DESCRIPTOR_TYPE_MAX_ENUM:                                       return "VK_DESCRIPTOR_TYPE_MAX_ENUM";
1201                 default:                                                                                        return DE_NULL;
1202         }
1203 }
1204
1205 const char* getAttachmentLoadOpName (VkAttachmentLoadOp value)
1206 {
1207         switch (value)
1208         {
1209                 case VK_ATTACHMENT_LOAD_OP_LOAD:                return "VK_ATTACHMENT_LOAD_OP_LOAD";
1210                 case VK_ATTACHMENT_LOAD_OP_CLEAR:               return "VK_ATTACHMENT_LOAD_OP_CLEAR";
1211                 case VK_ATTACHMENT_LOAD_OP_DONT_CARE:   return "VK_ATTACHMENT_LOAD_OP_DONT_CARE";
1212                 case VK_ATTACHMENT_LOAD_OP_MAX_ENUM:    return "VK_ATTACHMENT_LOAD_OP_MAX_ENUM";
1213                 default:                                                                return DE_NULL;
1214         }
1215 }
1216
1217 const char* getAttachmentStoreOpName (VkAttachmentStoreOp value)
1218 {
1219         switch (value)
1220         {
1221                 case VK_ATTACHMENT_STORE_OP_STORE:              return "VK_ATTACHMENT_STORE_OP_STORE";
1222                 case VK_ATTACHMENT_STORE_OP_DONT_CARE:  return "VK_ATTACHMENT_STORE_OP_DONT_CARE";
1223                 case VK_ATTACHMENT_STORE_OP_MAX_ENUM:   return "VK_ATTACHMENT_STORE_OP_MAX_ENUM";
1224                 default:                                                                return DE_NULL;
1225         }
1226 }
1227
1228 const char* getPipelineBindPointName (VkPipelineBindPoint value)
1229 {
1230         switch (value)
1231         {
1232                 case VK_PIPELINE_BIND_POINT_GRAPHICS:           return "VK_PIPELINE_BIND_POINT_GRAPHICS";
1233                 case VK_PIPELINE_BIND_POINT_COMPUTE:            return "VK_PIPELINE_BIND_POINT_COMPUTE";
1234                 case VK_PIPELINE_BIND_POINT_RAY_TRACING_NV:     return "VK_PIPELINE_BIND_POINT_RAY_TRACING_NV";
1235                 case VK_PIPELINE_BIND_POINT_MAX_ENUM:           return "VK_PIPELINE_BIND_POINT_MAX_ENUM";
1236                 default:                                                                        return DE_NULL;
1237         }
1238 }
1239
1240 const char* getCommandBufferLevelName (VkCommandBufferLevel value)
1241 {
1242         switch (value)
1243         {
1244                 case VK_COMMAND_BUFFER_LEVEL_PRIMARY:   return "VK_COMMAND_BUFFER_LEVEL_PRIMARY";
1245                 case VK_COMMAND_BUFFER_LEVEL_SECONDARY: return "VK_COMMAND_BUFFER_LEVEL_SECONDARY";
1246                 case VK_COMMAND_BUFFER_LEVEL_MAX_ENUM:  return "VK_COMMAND_BUFFER_LEVEL_MAX_ENUM";
1247                 default:                                                                return DE_NULL;
1248         }
1249 }
1250
1251 const char* getIndexTypeName (VkIndexType value)
1252 {
1253         switch (value)
1254         {
1255                 case VK_INDEX_TYPE_UINT16:              return "VK_INDEX_TYPE_UINT16";
1256                 case VK_INDEX_TYPE_UINT32:              return "VK_INDEX_TYPE_UINT32";
1257                 case VK_INDEX_TYPE_NONE_NV:             return "VK_INDEX_TYPE_NONE_NV";
1258                 case VK_INDEX_TYPE_UINT8_EXT:   return "VK_INDEX_TYPE_UINT8_EXT";
1259                 case VK_INDEX_TYPE_MAX_ENUM:    return "VK_INDEX_TYPE_MAX_ENUM";
1260                 default:                                                return DE_NULL;
1261         }
1262 }
1263
1264 const char* getSubpassContentsName (VkSubpassContents value)
1265 {
1266         switch (value)
1267         {
1268                 case VK_SUBPASS_CONTENTS_INLINE:                                        return "VK_SUBPASS_CONTENTS_INLINE";
1269                 case VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS:     return "VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS";
1270                 case VK_SUBPASS_CONTENTS_MAX_ENUM:                                      return "VK_SUBPASS_CONTENTS_MAX_ENUM";
1271                 default:                                                                                        return DE_NULL;
1272         }
1273 }
1274
1275 const char* getObjectTypeName (VkObjectType value)
1276 {
1277         switch (value)
1278         {
1279                 case VK_OBJECT_TYPE_UNKNOWN:                                                    return "VK_OBJECT_TYPE_UNKNOWN";
1280                 case VK_OBJECT_TYPE_INSTANCE:                                                   return "VK_OBJECT_TYPE_INSTANCE";
1281                 case VK_OBJECT_TYPE_PHYSICAL_DEVICE:                                    return "VK_OBJECT_TYPE_PHYSICAL_DEVICE";
1282                 case VK_OBJECT_TYPE_DEVICE:                                                             return "VK_OBJECT_TYPE_DEVICE";
1283                 case VK_OBJECT_TYPE_QUEUE:                                                              return "VK_OBJECT_TYPE_QUEUE";
1284                 case VK_OBJECT_TYPE_SEMAPHORE:                                                  return "VK_OBJECT_TYPE_SEMAPHORE";
1285                 case VK_OBJECT_TYPE_COMMAND_BUFFER:                                             return "VK_OBJECT_TYPE_COMMAND_BUFFER";
1286                 case VK_OBJECT_TYPE_FENCE:                                                              return "VK_OBJECT_TYPE_FENCE";
1287                 case VK_OBJECT_TYPE_DEVICE_MEMORY:                                              return "VK_OBJECT_TYPE_DEVICE_MEMORY";
1288                 case VK_OBJECT_TYPE_BUFFER:                                                             return "VK_OBJECT_TYPE_BUFFER";
1289                 case VK_OBJECT_TYPE_IMAGE:                                                              return "VK_OBJECT_TYPE_IMAGE";
1290                 case VK_OBJECT_TYPE_EVENT:                                                              return "VK_OBJECT_TYPE_EVENT";
1291                 case VK_OBJECT_TYPE_QUERY_POOL:                                                 return "VK_OBJECT_TYPE_QUERY_POOL";
1292                 case VK_OBJECT_TYPE_BUFFER_VIEW:                                                return "VK_OBJECT_TYPE_BUFFER_VIEW";
1293                 case VK_OBJECT_TYPE_IMAGE_VIEW:                                                 return "VK_OBJECT_TYPE_IMAGE_VIEW";
1294                 case VK_OBJECT_TYPE_SHADER_MODULE:                                              return "VK_OBJECT_TYPE_SHADER_MODULE";
1295                 case VK_OBJECT_TYPE_PIPELINE_CACHE:                                             return "VK_OBJECT_TYPE_PIPELINE_CACHE";
1296                 case VK_OBJECT_TYPE_PIPELINE_LAYOUT:                                    return "VK_OBJECT_TYPE_PIPELINE_LAYOUT";
1297                 case VK_OBJECT_TYPE_RENDER_PASS:                                                return "VK_OBJECT_TYPE_RENDER_PASS";
1298                 case VK_OBJECT_TYPE_PIPELINE:                                                   return "VK_OBJECT_TYPE_PIPELINE";
1299                 case VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT:                              return "VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT";
1300                 case VK_OBJECT_TYPE_SAMPLER:                                                    return "VK_OBJECT_TYPE_SAMPLER";
1301                 case VK_OBJECT_TYPE_DESCRIPTOR_POOL:                                    return "VK_OBJECT_TYPE_DESCRIPTOR_POOL";
1302                 case VK_OBJECT_TYPE_DESCRIPTOR_SET:                                             return "VK_OBJECT_TYPE_DESCRIPTOR_SET";
1303                 case VK_OBJECT_TYPE_FRAMEBUFFER:                                                return "VK_OBJECT_TYPE_FRAMEBUFFER";
1304                 case VK_OBJECT_TYPE_COMMAND_POOL:                                               return "VK_OBJECT_TYPE_COMMAND_POOL";
1305                 case VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION:                   return "VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION";
1306                 case VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE:                 return "VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE";
1307                 case VK_OBJECT_TYPE_SURFACE_KHR:                                                return "VK_OBJECT_TYPE_SURFACE_KHR";
1308                 case VK_OBJECT_TYPE_SWAPCHAIN_KHR:                                              return "VK_OBJECT_TYPE_SWAPCHAIN_KHR";
1309                 case VK_OBJECT_TYPE_DISPLAY_KHR:                                                return "VK_OBJECT_TYPE_DISPLAY_KHR";
1310                 case VK_OBJECT_TYPE_DISPLAY_MODE_KHR:                                   return "VK_OBJECT_TYPE_DISPLAY_MODE_KHR";
1311                 case VK_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT:                  return "VK_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT";
1312                 case VK_OBJECT_TYPE_OBJECT_TABLE_NVX:                                   return "VK_OBJECT_TYPE_OBJECT_TABLE_NVX";
1313                 case VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX:               return "VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX";
1314                 case VK_OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT:                  return "VK_OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT";
1315                 case VK_OBJECT_TYPE_VALIDATION_CACHE_EXT:                               return "VK_OBJECT_TYPE_VALIDATION_CACHE_EXT";
1316                 case VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV:                  return "VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV";
1317                 case VK_OBJECT_TYPE_PERFORMANCE_CONFIGURATION_INTEL:    return "VK_OBJECT_TYPE_PERFORMANCE_CONFIGURATION_INTEL";
1318                 case VK_OBJECT_TYPE_MAX_ENUM:                                                   return "VK_OBJECT_TYPE_MAX_ENUM";
1319                 default:                                                                                                return DE_NULL;
1320         }
1321 }
1322
1323 const char* getVendorIdName (VkVendorId value)
1324 {
1325         switch (value)
1326         {
1327                 case VK_VENDOR_ID_VIV:          return "VK_VENDOR_ID_VIV";
1328                 case VK_VENDOR_ID_VSI:          return "VK_VENDOR_ID_VSI";
1329                 case VK_VENDOR_ID_KAZAN:        return "VK_VENDOR_ID_KAZAN";
1330                 case VK_VENDOR_ID_MAX_ENUM:     return "VK_VENDOR_ID_MAX_ENUM";
1331                 default:                                        return DE_NULL;
1332         }
1333 }
1334
1335 const char* getPointClippingBehaviorName (VkPointClippingBehavior value)
1336 {
1337         switch (value)
1338         {
1339                 case VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES:                return "VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES";
1340                 case VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY:  return "VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY";
1341                 case VK_POINT_CLIPPING_BEHAVIOR_MAX_ENUM:                               return "VK_POINT_CLIPPING_BEHAVIOR_MAX_ENUM";
1342                 default:                                                                                                return DE_NULL;
1343         }
1344 }
1345
1346 const char* getTessellationDomainOriginName (VkTessellationDomainOrigin value)
1347 {
1348         switch (value)
1349         {
1350                 case VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT:  return "VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT";
1351                 case VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT:  return "VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT";
1352                 case VK_TESSELLATION_DOMAIN_ORIGIN_MAX_ENUM:    return "VK_TESSELLATION_DOMAIN_ORIGIN_MAX_ENUM";
1353                 default:                                                                                return DE_NULL;
1354         }
1355 }
1356
1357 const char* getSamplerYcbcrModelConversionName (VkSamplerYcbcrModelConversion value)
1358 {
1359         switch (value)
1360         {
1361                 case VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY:    return "VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY";
1362                 case VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY:  return "VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY";
1363                 case VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709:               return "VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709";
1364                 case VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601:               return "VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601";
1365                 case VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020:              return "VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020";
1366                 case VK_SAMPLER_YCBCR_MODEL_CONVERSION_MAX_ENUM:                return "VK_SAMPLER_YCBCR_MODEL_CONVERSION_MAX_ENUM";
1367                 default:                                                                                                return DE_NULL;
1368         }
1369 }
1370
1371 const char* getSamplerYcbcrRangeName (VkSamplerYcbcrRange value)
1372 {
1373         switch (value)
1374         {
1375                 case VK_SAMPLER_YCBCR_RANGE_ITU_FULL:   return "VK_SAMPLER_YCBCR_RANGE_ITU_FULL";
1376                 case VK_SAMPLER_YCBCR_RANGE_ITU_NARROW: return "VK_SAMPLER_YCBCR_RANGE_ITU_NARROW";
1377                 case VK_SAMPLER_YCBCR_RANGE_MAX_ENUM:   return "VK_SAMPLER_YCBCR_RANGE_MAX_ENUM";
1378                 default:                                                                return DE_NULL;
1379         }
1380 }
1381
1382 const char* getChromaLocationName (VkChromaLocation value)
1383 {
1384         switch (value)
1385         {
1386                 case VK_CHROMA_LOCATION_COSITED_EVEN:   return "VK_CHROMA_LOCATION_COSITED_EVEN";
1387                 case VK_CHROMA_LOCATION_MIDPOINT:               return "VK_CHROMA_LOCATION_MIDPOINT";
1388                 case VK_CHROMA_LOCATION_MAX_ENUM:               return "VK_CHROMA_LOCATION_MAX_ENUM";
1389                 default:                                                                return DE_NULL;
1390         }
1391 }
1392
1393 const char* getDescriptorUpdateTemplateTypeName (VkDescriptorUpdateTemplateType value)
1394 {
1395         switch (value)
1396         {
1397                 case VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET:                 return "VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET";
1398                 case VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR:   return "VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR";
1399                 case VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_MAX_ENUM:                               return "VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_MAX_ENUM";
1400                 default:                                                                                                                return DE_NULL;
1401         }
1402 }
1403
1404 const char* getColorSpaceKHRName (VkColorSpaceKHR value)
1405 {
1406         switch (value)
1407         {
1408                 case VK_COLOR_SPACE_SRGB_NONLINEAR_KHR:                         return "VK_COLOR_SPACE_SRGB_NONLINEAR_KHR";
1409                 case VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT:           return "VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT";
1410                 case VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT:           return "VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT";
1411                 case VK_COLOR_SPACE_DISPLAY_P3_LINEAR_EXT:                      return "VK_COLOR_SPACE_DISPLAY_P3_LINEAR_EXT";
1412                 case VK_COLOR_SPACE_DCI_P3_NONLINEAR_EXT:                       return "VK_COLOR_SPACE_DCI_P3_NONLINEAR_EXT";
1413                 case VK_COLOR_SPACE_BT709_LINEAR_EXT:                           return "VK_COLOR_SPACE_BT709_LINEAR_EXT";
1414                 case VK_COLOR_SPACE_BT709_NONLINEAR_EXT:                        return "VK_COLOR_SPACE_BT709_NONLINEAR_EXT";
1415                 case VK_COLOR_SPACE_BT2020_LINEAR_EXT:                          return "VK_COLOR_SPACE_BT2020_LINEAR_EXT";
1416                 case VK_COLOR_SPACE_HDR10_ST2084_EXT:                           return "VK_COLOR_SPACE_HDR10_ST2084_EXT";
1417                 case VK_COLOR_SPACE_DOLBYVISION_EXT:                            return "VK_COLOR_SPACE_DOLBYVISION_EXT";
1418                 case VK_COLOR_SPACE_HDR10_HLG_EXT:                                      return "VK_COLOR_SPACE_HDR10_HLG_EXT";
1419                 case VK_COLOR_SPACE_ADOBERGB_LINEAR_EXT:                        return "VK_COLOR_SPACE_ADOBERGB_LINEAR_EXT";
1420                 case VK_COLOR_SPACE_ADOBERGB_NONLINEAR_EXT:                     return "VK_COLOR_SPACE_ADOBERGB_NONLINEAR_EXT";
1421                 case VK_COLOR_SPACE_PASS_THROUGH_EXT:                           return "VK_COLOR_SPACE_PASS_THROUGH_EXT";
1422                 case VK_COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT:        return "VK_COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT";
1423                 case VK_COLOR_SPACE_DISPLAY_NATIVE_AMD:                         return "VK_COLOR_SPACE_DISPLAY_NATIVE_AMD";
1424                 case VK_COLOR_SPACE_MAX_ENUM_KHR:                                       return "VK_COLOR_SPACE_MAX_ENUM_KHR";
1425                 default:                                                                                        return DE_NULL;
1426         }
1427 }
1428
1429 const char* getPresentModeKHRName (VkPresentModeKHR value)
1430 {
1431         switch (value)
1432         {
1433                 case VK_PRESENT_MODE_IMMEDIATE_KHR:                                     return "VK_PRESENT_MODE_IMMEDIATE_KHR";
1434                 case VK_PRESENT_MODE_MAILBOX_KHR:                                       return "VK_PRESENT_MODE_MAILBOX_KHR";
1435                 case VK_PRESENT_MODE_FIFO_KHR:                                          return "VK_PRESENT_MODE_FIFO_KHR";
1436                 case VK_PRESENT_MODE_FIFO_RELAXED_KHR:                          return "VK_PRESENT_MODE_FIFO_RELAXED_KHR";
1437                 case VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR:         return "VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR";
1438                 case VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR:     return "VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR";
1439                 case VK_PRESENT_MODE_MAX_ENUM_KHR:                                      return "VK_PRESENT_MODE_MAX_ENUM_KHR";
1440                 default:                                                                                        return DE_NULL;
1441         }
1442 }
1443
1444 const char* getDriverIdKHRName (VkDriverIdKHR value)
1445 {
1446         switch (value)
1447         {
1448                 case VK_DRIVER_ID_AMD_PROPRIETARY_KHR:                          return "VK_DRIVER_ID_AMD_PROPRIETARY_KHR";
1449                 case VK_DRIVER_ID_AMD_OPEN_SOURCE_KHR:                          return "VK_DRIVER_ID_AMD_OPEN_SOURCE_KHR";
1450                 case VK_DRIVER_ID_MESA_RADV_KHR:                                        return "VK_DRIVER_ID_MESA_RADV_KHR";
1451                 case VK_DRIVER_ID_NVIDIA_PROPRIETARY_KHR:                       return "VK_DRIVER_ID_NVIDIA_PROPRIETARY_KHR";
1452                 case VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS_KHR:        return "VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS_KHR";
1453                 case VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA_KHR:           return "VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA_KHR";
1454                 case VK_DRIVER_ID_IMAGINATION_PROPRIETARY_KHR:          return "VK_DRIVER_ID_IMAGINATION_PROPRIETARY_KHR";
1455                 case VK_DRIVER_ID_QUALCOMM_PROPRIETARY_KHR:                     return "VK_DRIVER_ID_QUALCOMM_PROPRIETARY_KHR";
1456                 case VK_DRIVER_ID_ARM_PROPRIETARY_KHR:                          return "VK_DRIVER_ID_ARM_PROPRIETARY_KHR";
1457                 case VK_DRIVER_ID_GOOGLE_SWIFTSHADER_KHR:                       return "VK_DRIVER_ID_GOOGLE_SWIFTSHADER_KHR";
1458                 case VK_DRIVER_ID_GGP_PROPRIETARY_KHR:                          return "VK_DRIVER_ID_GGP_PROPRIETARY_KHR";
1459                 case VK_DRIVER_ID_BROADCOM_PROPRIETARY_KHR:                     return "VK_DRIVER_ID_BROADCOM_PROPRIETARY_KHR";
1460                 case VK_DRIVER_ID_MAX_ENUM_KHR:                                         return "VK_DRIVER_ID_MAX_ENUM_KHR";
1461                 default:                                                                                        return DE_NULL;
1462         }
1463 }
1464
1465 const char* getShaderFloatControlsIndependenceKHRName (VkShaderFloatControlsIndependenceKHR value)
1466 {
1467         switch (value)
1468         {
1469                 case VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY_KHR:     return "VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY_KHR";
1470                 case VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL_KHR:                     return "VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL_KHR";
1471                 case VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE_KHR:            return "VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE_KHR";
1472                 case VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_MAX_ENUM_KHR:        return "VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_MAX_ENUM_KHR";
1473                 default:                                                                                                        return DE_NULL;
1474         }
1475 }
1476
1477 const char* getSemaphoreTypeKHRName (VkSemaphoreTypeKHR value)
1478 {
1479         switch (value)
1480         {
1481                 case VK_SEMAPHORE_TYPE_BINARY_KHR:              return "VK_SEMAPHORE_TYPE_BINARY_KHR";
1482                 case VK_SEMAPHORE_TYPE_TIMELINE_KHR:    return "VK_SEMAPHORE_TYPE_TIMELINE_KHR";
1483                 case VK_SEMAPHORE_TYPE_MAX_ENUM_KHR:    return "VK_SEMAPHORE_TYPE_MAX_ENUM_KHR";
1484                 default:                                                                return DE_NULL;
1485         }
1486 }
1487
1488 const char* getPipelineExecutableStatisticFormatKHRName (VkPipelineExecutableStatisticFormatKHR value)
1489 {
1490         switch (value)
1491         {
1492                 case VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_BOOL32_KHR:        return "VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_BOOL32_KHR";
1493                 case VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_INT64_KHR:         return "VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_INT64_KHR";
1494                 case VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_UINT64_KHR:        return "VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_UINT64_KHR";
1495                 case VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_FLOAT64_KHR:       return "VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_FLOAT64_KHR";
1496                 case VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_MAX_ENUM_KHR:      return "VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_MAX_ENUM_KHR";
1497                 default:                                                                                                        return DE_NULL;
1498         }
1499 }
1500
1501 const char* getDebugReportObjectTypeEXTName (VkDebugReportObjectTypeEXT value)
1502 {
1503         switch (value)
1504         {
1505                 case VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT:                                           return "VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT";
1506                 case VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT:                                          return "VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT";
1507                 case VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT:                           return "VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT";
1508                 case VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT:                                            return "VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT";
1509                 case VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT:                                                     return "VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT";
1510                 case VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT:                                         return "VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT";
1511                 case VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT:                            return "VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT";
1512                 case VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT:                                                     return "VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT";
1513                 case VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT:                                     return "VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT";
1514                 case VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT:                                            return "VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT";
1515                 case VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT:                                                     return "VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT";
1516                 case VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT:                                                     return "VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT";
1517                 case VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT:                                        return "VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT";
1518                 case VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT:                                       return "VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT";
1519                 case VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT:                                        return "VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT";
1520                 case VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT:                                     return "VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT";
1521                 case VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT:                            return "VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT";
1522                 case VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT:                           return "VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT";
1523                 case VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT:                                       return "VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT";
1524                 case VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT:                                          return "VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT";
1525                 case VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT:                     return "VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT";
1526                 case VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT:                                           return "VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT";
1527                 case VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT:                           return "VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT";
1528                 case VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT:                            return "VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT";
1529                 case VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT:                                       return "VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT";
1530                 case VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT:                                      return "VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT";
1531                 case VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT:                                       return "VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT";
1532                 case VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT:                                     return "VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT";
1533                 case VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT:         return "VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT";
1534                 case VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT:                                       return "VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT";
1535                 case VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT:                          return "VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT";
1536                 case VK_DEBUG_REPORT_OBJECT_TYPE_OBJECT_TABLE_NVX_EXT:                          return "VK_DEBUG_REPORT_OBJECT_TYPE_OBJECT_TABLE_NVX_EXT";
1537                 case VK_DEBUG_REPORT_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX_EXT:      return "VK_DEBUG_REPORT_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX_EXT";
1538                 case VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT:                      return "VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT";
1539                 case VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT:          return "VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT";
1540                 case VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT:        return "VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT";
1541                 case VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV_EXT:         return "VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV_EXT";
1542                 case VK_DEBUG_REPORT_OBJECT_TYPE_MAX_ENUM_EXT:                                          return "VK_DEBUG_REPORT_OBJECT_TYPE_MAX_ENUM_EXT";
1543                 default:                                                                                                                        return DE_NULL;
1544         }
1545 }
1546
1547 const char* getRasterizationOrderAMDName (VkRasterizationOrderAMD value)
1548 {
1549         switch (value)
1550         {
1551                 case VK_RASTERIZATION_ORDER_STRICT_AMD:         return "VK_RASTERIZATION_ORDER_STRICT_AMD";
1552                 case VK_RASTERIZATION_ORDER_RELAXED_AMD:        return "VK_RASTERIZATION_ORDER_RELAXED_AMD";
1553                 case VK_RASTERIZATION_ORDER_MAX_ENUM_AMD:       return "VK_RASTERIZATION_ORDER_MAX_ENUM_AMD";
1554                 default:                                                                        return DE_NULL;
1555         }
1556 }
1557
1558 const char* getShaderInfoTypeAMDName (VkShaderInfoTypeAMD value)
1559 {
1560         switch (value)
1561         {
1562                 case VK_SHADER_INFO_TYPE_STATISTICS_AMD:        return "VK_SHADER_INFO_TYPE_STATISTICS_AMD";
1563                 case VK_SHADER_INFO_TYPE_BINARY_AMD:            return "VK_SHADER_INFO_TYPE_BINARY_AMD";
1564                 case VK_SHADER_INFO_TYPE_DISASSEMBLY_AMD:       return "VK_SHADER_INFO_TYPE_DISASSEMBLY_AMD";
1565                 case VK_SHADER_INFO_TYPE_MAX_ENUM_AMD:          return "VK_SHADER_INFO_TYPE_MAX_ENUM_AMD";
1566                 default:                                                                        return DE_NULL;
1567         }
1568 }
1569
1570 const char* getValidationCheckEXTName (VkValidationCheckEXT value)
1571 {
1572         switch (value)
1573         {
1574                 case VK_VALIDATION_CHECK_ALL_EXT:               return "VK_VALIDATION_CHECK_ALL_EXT";
1575                 case VK_VALIDATION_CHECK_SHADERS_EXT:   return "VK_VALIDATION_CHECK_SHADERS_EXT";
1576                 case VK_VALIDATION_CHECK_MAX_ENUM_EXT:  return "VK_VALIDATION_CHECK_MAX_ENUM_EXT";
1577                 default:                                                                return DE_NULL;
1578         }
1579 }
1580
1581 const char* getIndirectCommandsTokenTypeNVXName (VkIndirectCommandsTokenTypeNVX value)
1582 {
1583         switch (value)
1584         {
1585                 case VK_INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NVX:                      return "VK_INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NVX";
1586                 case VK_INDIRECT_COMMANDS_TOKEN_TYPE_DESCRIPTOR_SET_NVX:        return "VK_INDIRECT_COMMANDS_TOKEN_TYPE_DESCRIPTOR_SET_NVX";
1587                 case VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NVX:          return "VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NVX";
1588                 case VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NVX:         return "VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NVX";
1589                 case VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NVX:         return "VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NVX";
1590                 case VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NVX:          return "VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NVX";
1591                 case VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NVX:                          return "VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NVX";
1592                 case VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NVX:                      return "VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NVX";
1593                 case VK_INDIRECT_COMMANDS_TOKEN_TYPE_MAX_ENUM_NVX:                      return "VK_INDIRECT_COMMANDS_TOKEN_TYPE_MAX_ENUM_NVX";
1594                 default:                                                                                                        return DE_NULL;
1595         }
1596 }
1597
1598 const char* getObjectEntryTypeNVXName (VkObjectEntryTypeNVX value)
1599 {
1600         switch (value)
1601         {
1602                 case VK_OBJECT_ENTRY_TYPE_DESCRIPTOR_SET_NVX:   return "VK_OBJECT_ENTRY_TYPE_DESCRIPTOR_SET_NVX";
1603                 case VK_OBJECT_ENTRY_TYPE_PIPELINE_NVX:                 return "VK_OBJECT_ENTRY_TYPE_PIPELINE_NVX";
1604                 case VK_OBJECT_ENTRY_TYPE_INDEX_BUFFER_NVX:             return "VK_OBJECT_ENTRY_TYPE_INDEX_BUFFER_NVX";
1605                 case VK_OBJECT_ENTRY_TYPE_VERTEX_BUFFER_NVX:    return "VK_OBJECT_ENTRY_TYPE_VERTEX_BUFFER_NVX";
1606                 case VK_OBJECT_ENTRY_TYPE_PUSH_CONSTANT_NVX:    return "VK_OBJECT_ENTRY_TYPE_PUSH_CONSTANT_NVX";
1607                 case VK_OBJECT_ENTRY_TYPE_MAX_ENUM_NVX:                 return "VK_OBJECT_ENTRY_TYPE_MAX_ENUM_NVX";
1608                 default:                                                                                return DE_NULL;
1609         }
1610 }
1611
1612 const char* getDisplayPowerStateEXTName (VkDisplayPowerStateEXT value)
1613 {
1614         switch (value)
1615         {
1616                 case VK_DISPLAY_POWER_STATE_OFF_EXT:            return "VK_DISPLAY_POWER_STATE_OFF_EXT";
1617                 case VK_DISPLAY_POWER_STATE_SUSPEND_EXT:        return "VK_DISPLAY_POWER_STATE_SUSPEND_EXT";
1618                 case VK_DISPLAY_POWER_STATE_ON_EXT:                     return "VK_DISPLAY_POWER_STATE_ON_EXT";
1619                 case VK_DISPLAY_POWER_STATE_MAX_ENUM_EXT:       return "VK_DISPLAY_POWER_STATE_MAX_ENUM_EXT";
1620                 default:                                                                        return DE_NULL;
1621         }
1622 }
1623
1624 const char* getDeviceEventTypeEXTName (VkDeviceEventTypeEXT value)
1625 {
1626         switch (value)
1627         {
1628                 case VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT:  return "VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT";
1629                 case VK_DEVICE_EVENT_TYPE_MAX_ENUM_EXT:                 return "VK_DEVICE_EVENT_TYPE_MAX_ENUM_EXT";
1630                 default:                                                                                return DE_NULL;
1631         }
1632 }
1633
1634 const char* getDisplayEventTypeEXTName (VkDisplayEventTypeEXT value)
1635 {
1636         switch (value)
1637         {
1638                 case VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT: return "VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT";
1639                 case VK_DISPLAY_EVENT_TYPE_MAX_ENUM_EXT:                return "VK_DISPLAY_EVENT_TYPE_MAX_ENUM_EXT";
1640                 default:                                                                                return DE_NULL;
1641         }
1642 }
1643
1644 const char* getViewportCoordinateSwizzleNVName (VkViewportCoordinateSwizzleNV value)
1645 {
1646         switch (value)
1647         {
1648                 case VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV:      return "VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV";
1649                 case VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV:      return "VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV";
1650                 case VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV:      return "VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV";
1651                 case VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV:      return "VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV";
1652                 case VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV:      return "VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV";
1653                 case VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV:      return "VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV";
1654                 case VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV:      return "VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV";
1655                 case VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV:      return "VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV";
1656                 case VK_VIEWPORT_COORDINATE_SWIZZLE_MAX_ENUM_NV:        return "VK_VIEWPORT_COORDINATE_SWIZZLE_MAX_ENUM_NV";
1657                 default:                                                                                        return DE_NULL;
1658         }
1659 }
1660
1661 const char* getDiscardRectangleModeEXTName (VkDiscardRectangleModeEXT value)
1662 {
1663         switch (value)
1664         {
1665                 case VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT:   return "VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT";
1666                 case VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT:   return "VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT";
1667                 case VK_DISCARD_RECTANGLE_MODE_MAX_ENUM_EXT:    return "VK_DISCARD_RECTANGLE_MODE_MAX_ENUM_EXT";
1668                 default:                                                                                return DE_NULL;
1669         }
1670 }
1671
1672 const char* getConservativeRasterizationModeEXTName (VkConservativeRasterizationModeEXT value)
1673 {
1674         switch (value)
1675         {
1676                 case VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT:           return "VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT";
1677                 case VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT:       return "VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT";
1678                 case VK_CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT:      return "VK_CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT";
1679                 case VK_CONSERVATIVE_RASTERIZATION_MODE_MAX_ENUM_EXT:           return "VK_CONSERVATIVE_RASTERIZATION_MODE_MAX_ENUM_EXT";
1680                 default:                                                                                                        return DE_NULL;
1681         }
1682 }
1683
1684 const char* getSamplerReductionModeEXTName (VkSamplerReductionModeEXT value)
1685 {
1686         switch (value)
1687         {
1688                 case VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT:    return "VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT";
1689                 case VK_SAMPLER_REDUCTION_MODE_MIN_EXT:                                 return "VK_SAMPLER_REDUCTION_MODE_MIN_EXT";
1690                 case VK_SAMPLER_REDUCTION_MODE_MAX_EXT:                                 return "VK_SAMPLER_REDUCTION_MODE_MAX_EXT";
1691                 case VK_SAMPLER_REDUCTION_MODE_MAX_ENUM_EXT:                    return "VK_SAMPLER_REDUCTION_MODE_MAX_ENUM_EXT";
1692                 default:                                                                                                return DE_NULL;
1693         }
1694 }
1695
1696 const char* getBlendOverlapEXTName (VkBlendOverlapEXT value)
1697 {
1698         switch (value)
1699         {
1700                 case VK_BLEND_OVERLAP_UNCORRELATED_EXT: return "VK_BLEND_OVERLAP_UNCORRELATED_EXT";
1701                 case VK_BLEND_OVERLAP_DISJOINT_EXT:             return "VK_BLEND_OVERLAP_DISJOINT_EXT";
1702                 case VK_BLEND_OVERLAP_CONJOINT_EXT:             return "VK_BLEND_OVERLAP_CONJOINT_EXT";
1703                 case VK_BLEND_OVERLAP_MAX_ENUM_EXT:             return "VK_BLEND_OVERLAP_MAX_ENUM_EXT";
1704                 default:                                                                return DE_NULL;
1705         }
1706 }
1707
1708 const char* getCoverageModulationModeNVName (VkCoverageModulationModeNV value)
1709 {
1710         switch (value)
1711         {
1712                 case VK_COVERAGE_MODULATION_MODE_NONE_NV:               return "VK_COVERAGE_MODULATION_MODE_NONE_NV";
1713                 case VK_COVERAGE_MODULATION_MODE_RGB_NV:                return "VK_COVERAGE_MODULATION_MODE_RGB_NV";
1714                 case VK_COVERAGE_MODULATION_MODE_ALPHA_NV:              return "VK_COVERAGE_MODULATION_MODE_ALPHA_NV";
1715                 case VK_COVERAGE_MODULATION_MODE_RGBA_NV:               return "VK_COVERAGE_MODULATION_MODE_RGBA_NV";
1716                 case VK_COVERAGE_MODULATION_MODE_MAX_ENUM_NV:   return "VK_COVERAGE_MODULATION_MODE_MAX_ENUM_NV";
1717                 default:                                                                                return DE_NULL;
1718         }
1719 }
1720
1721 const char* getValidationCacheHeaderVersionEXTName (VkValidationCacheHeaderVersionEXT value)
1722 {
1723         switch (value)
1724         {
1725                 case VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT:                return "VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT";
1726                 case VK_VALIDATION_CACHE_HEADER_VERSION_MAX_ENUM_EXT:   return "VK_VALIDATION_CACHE_HEADER_VERSION_MAX_ENUM_EXT";
1727                 default:                                                                                                return DE_NULL;
1728         }
1729 }
1730
1731 const char* getShadingRatePaletteEntryNVName (VkShadingRatePaletteEntryNV value)
1732 {
1733         switch (value)
1734         {
1735                 case VK_SHADING_RATE_PALETTE_ENTRY_NO_INVOCATIONS_NV:                           return "VK_SHADING_RATE_PALETTE_ENTRY_NO_INVOCATIONS_NV";
1736                 case VK_SHADING_RATE_PALETTE_ENTRY_16_INVOCATIONS_PER_PIXEL_NV:         return "VK_SHADING_RATE_PALETTE_ENTRY_16_INVOCATIONS_PER_PIXEL_NV";
1737                 case VK_SHADING_RATE_PALETTE_ENTRY_8_INVOCATIONS_PER_PIXEL_NV:          return "VK_SHADING_RATE_PALETTE_ENTRY_8_INVOCATIONS_PER_PIXEL_NV";
1738                 case VK_SHADING_RATE_PALETTE_ENTRY_4_INVOCATIONS_PER_PIXEL_NV:          return "VK_SHADING_RATE_PALETTE_ENTRY_4_INVOCATIONS_PER_PIXEL_NV";
1739                 case VK_SHADING_RATE_PALETTE_ENTRY_2_INVOCATIONS_PER_PIXEL_NV:          return "VK_SHADING_RATE_PALETTE_ENTRY_2_INVOCATIONS_PER_PIXEL_NV";
1740                 case VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_PIXEL_NV:           return "VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_PIXEL_NV";
1741                 case VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X1_PIXELS_NV:      return "VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X1_PIXELS_NV";
1742                 case VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_1X2_PIXELS_NV:      return "VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_1X2_PIXELS_NV";
1743                 case VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X2_PIXELS_NV:      return "VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X2_PIXELS_NV";
1744                 case VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X2_PIXELS_NV:      return "VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X2_PIXELS_NV";
1745                 case VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X4_PIXELS_NV:      return "VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X4_PIXELS_NV";
1746                 case VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X4_PIXELS_NV:      return "VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X4_PIXELS_NV";
1747                 case VK_SHADING_RATE_PALETTE_ENTRY_MAX_ENUM_NV:                                         return "VK_SHADING_RATE_PALETTE_ENTRY_MAX_ENUM_NV";
1748                 default:                                                                                                                        return DE_NULL;
1749         }
1750 }
1751
1752 const char* getCoarseSampleOrderTypeNVName (VkCoarseSampleOrderTypeNV value)
1753 {
1754         switch (value)
1755         {
1756                 case VK_COARSE_SAMPLE_ORDER_TYPE_DEFAULT_NV:            return "VK_COARSE_SAMPLE_ORDER_TYPE_DEFAULT_NV";
1757                 case VK_COARSE_SAMPLE_ORDER_TYPE_CUSTOM_NV:                     return "VK_COARSE_SAMPLE_ORDER_TYPE_CUSTOM_NV";
1758                 case VK_COARSE_SAMPLE_ORDER_TYPE_PIXEL_MAJOR_NV:        return "VK_COARSE_SAMPLE_ORDER_TYPE_PIXEL_MAJOR_NV";
1759                 case VK_COARSE_SAMPLE_ORDER_TYPE_SAMPLE_MAJOR_NV:       return "VK_COARSE_SAMPLE_ORDER_TYPE_SAMPLE_MAJOR_NV";
1760                 case VK_COARSE_SAMPLE_ORDER_TYPE_MAX_ENUM_NV:           return "VK_COARSE_SAMPLE_ORDER_TYPE_MAX_ENUM_NV";
1761                 default:                                                                                        return DE_NULL;
1762         }
1763 }
1764
1765 const char* getAccelerationStructureTypeNVName (VkAccelerationStructureTypeNV value)
1766 {
1767         switch (value)
1768         {
1769                 case VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV:               return "VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV";
1770                 case VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV:    return "VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV";
1771                 case VK_ACCELERATION_STRUCTURE_TYPE_MAX_ENUM_NV:                return "VK_ACCELERATION_STRUCTURE_TYPE_MAX_ENUM_NV";
1772                 default:                                                                                                return DE_NULL;
1773         }
1774 }
1775
1776 const char* getRayTracingShaderGroupTypeNVName (VkRayTracingShaderGroupTypeNV value)
1777 {
1778         switch (value)
1779         {
1780                 case VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV:                               return "VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV";
1781                 case VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV:   return "VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV";
1782                 case VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV:  return "VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV";
1783                 case VK_RAY_TRACING_SHADER_GROUP_TYPE_MAX_ENUM_NV:                              return "VK_RAY_TRACING_SHADER_GROUP_TYPE_MAX_ENUM_NV";
1784                 default:                                                                                                                return DE_NULL;
1785         }
1786 }
1787
1788 const char* getGeometryTypeNVName (VkGeometryTypeNV value)
1789 {
1790         switch (value)
1791         {
1792                 case VK_GEOMETRY_TYPE_TRIANGLES_NV:     return "VK_GEOMETRY_TYPE_TRIANGLES_NV";
1793                 case VK_GEOMETRY_TYPE_AABBS_NV:         return "VK_GEOMETRY_TYPE_AABBS_NV";
1794                 case VK_GEOMETRY_TYPE_MAX_ENUM_NV:      return "VK_GEOMETRY_TYPE_MAX_ENUM_NV";
1795                 default:                                                        return DE_NULL;
1796         }
1797 }
1798
1799 const char* getCopyAccelerationStructureModeNVName (VkCopyAccelerationStructureModeNV value)
1800 {
1801         switch (value)
1802         {
1803                 case VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_NV:              return "VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_NV";
1804                 case VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV:    return "VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV";
1805                 case VK_COPY_ACCELERATION_STRUCTURE_MODE_MAX_ENUM_NV:   return "VK_COPY_ACCELERATION_STRUCTURE_MODE_MAX_ENUM_NV";
1806                 default:                                                                                                return DE_NULL;
1807         }
1808 }
1809
1810 const char* getAccelerationStructureMemoryRequirementsTypeNVName (VkAccelerationStructureMemoryRequirementsTypeNV value)
1811 {
1812         switch (value)
1813         {
1814                 case VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV:                      return "VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV";
1815                 case VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV:       return "VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV";
1816                 case VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV:      return "VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV";
1817                 case VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_MAX_ENUM_NV:            return "VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_MAX_ENUM_NV";
1818                 default:                                                                                                                                        return DE_NULL;
1819         }
1820 }
1821
1822 const char* getQueueGlobalPriorityEXTName (VkQueueGlobalPriorityEXT value)
1823 {
1824         switch (value)
1825         {
1826                 case VK_QUEUE_GLOBAL_PRIORITY_LOW_EXT:          return "VK_QUEUE_GLOBAL_PRIORITY_LOW_EXT";
1827                 case VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT:       return "VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT";
1828                 case VK_QUEUE_GLOBAL_PRIORITY_HIGH_EXT:         return "VK_QUEUE_GLOBAL_PRIORITY_HIGH_EXT";
1829                 case VK_QUEUE_GLOBAL_PRIORITY_REALTIME_EXT:     return "VK_QUEUE_GLOBAL_PRIORITY_REALTIME_EXT";
1830                 case VK_QUEUE_GLOBAL_PRIORITY_MAX_ENUM_EXT:     return "VK_QUEUE_GLOBAL_PRIORITY_MAX_ENUM_EXT";
1831                 default:                                                                        return DE_NULL;
1832         }
1833 }
1834
1835 const char* getTimeDomainEXTName (VkTimeDomainEXT value)
1836 {
1837         switch (value)
1838         {
1839                 case VK_TIME_DOMAIN_DEVICE_EXT:                                         return "VK_TIME_DOMAIN_DEVICE_EXT";
1840                 case VK_TIME_DOMAIN_CLOCK_MONOTONIC_EXT:                        return "VK_TIME_DOMAIN_CLOCK_MONOTONIC_EXT";
1841                 case VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXT:            return "VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXT";
1842                 case VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXT:      return "VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXT";
1843                 case VK_TIME_DOMAIN_MAX_ENUM_EXT:                                       return "VK_TIME_DOMAIN_MAX_ENUM_EXT";
1844                 default:                                                                                        return DE_NULL;
1845         }
1846 }
1847
1848 const char* getMemoryOverallocationBehaviorAMDName (VkMemoryOverallocationBehaviorAMD value)
1849 {
1850         switch (value)
1851         {
1852                 case VK_MEMORY_OVERALLOCATION_BEHAVIOR_DEFAULT_AMD:             return "VK_MEMORY_OVERALLOCATION_BEHAVIOR_DEFAULT_AMD";
1853                 case VK_MEMORY_OVERALLOCATION_BEHAVIOR_ALLOWED_AMD:             return "VK_MEMORY_OVERALLOCATION_BEHAVIOR_ALLOWED_AMD";
1854                 case VK_MEMORY_OVERALLOCATION_BEHAVIOR_DISALLOWED_AMD:  return "VK_MEMORY_OVERALLOCATION_BEHAVIOR_DISALLOWED_AMD";
1855                 case VK_MEMORY_OVERALLOCATION_BEHAVIOR_MAX_ENUM_AMD:    return "VK_MEMORY_OVERALLOCATION_BEHAVIOR_MAX_ENUM_AMD";
1856                 default:                                                                                                return DE_NULL;
1857         }
1858 }
1859
1860 const char* getPerformanceConfigurationTypeINTELName (VkPerformanceConfigurationTypeINTEL value)
1861 {
1862         switch (value)
1863         {
1864                 case VK_PERFORMANCE_CONFIGURATION_TYPE_COMMAND_QUEUE_METRICS_DISCOVERY_ACTIVATED_INTEL: return "VK_PERFORMANCE_CONFIGURATION_TYPE_COMMAND_QUEUE_METRICS_DISCOVERY_ACTIVATED_INTEL";
1865                 case VK_PERFORMANCE_CONFIGURATION_TYPE_MAX_ENUM_INTEL:                                                                  return "VK_PERFORMANCE_CONFIGURATION_TYPE_MAX_ENUM_INTEL";
1866                 default:                                                                                                                                                                return DE_NULL;
1867         }
1868 }
1869
1870 const char* getQueryPoolSamplingModeINTELName (VkQueryPoolSamplingModeINTEL value)
1871 {
1872         switch (value)
1873         {
1874                 case VK_QUERY_POOL_SAMPLING_MODE_MANUAL_INTEL:          return "VK_QUERY_POOL_SAMPLING_MODE_MANUAL_INTEL";
1875                 case VK_QUERY_POOL_SAMPLING_MODE_MAX_ENUM_INTEL:        return "VK_QUERY_POOL_SAMPLING_MODE_MAX_ENUM_INTEL";
1876                 default:                                                                                        return DE_NULL;
1877         }
1878 }
1879
1880 const char* getPerformanceOverrideTypeINTELName (VkPerformanceOverrideTypeINTEL value)
1881 {
1882         switch (value)
1883         {
1884                 case VK_PERFORMANCE_OVERRIDE_TYPE_NULL_HARDWARE_INTEL:          return "VK_PERFORMANCE_OVERRIDE_TYPE_NULL_HARDWARE_INTEL";
1885                 case VK_PERFORMANCE_OVERRIDE_TYPE_FLUSH_GPU_CACHES_INTEL:       return "VK_PERFORMANCE_OVERRIDE_TYPE_FLUSH_GPU_CACHES_INTEL";
1886                 case VK_PERFORMANCE_OVERRIDE_TYPE_MAX_ENUM_INTEL:                       return "VK_PERFORMANCE_OVERRIDE_TYPE_MAX_ENUM_INTEL";
1887                 default:                                                                                                        return DE_NULL;
1888         }
1889 }
1890
1891 const char* getPerformanceParameterTypeINTELName (VkPerformanceParameterTypeINTEL value)
1892 {
1893         switch (value)
1894         {
1895                 case VK_PERFORMANCE_PARAMETER_TYPE_HW_COUNTERS_SUPPORTED_INTEL:         return "VK_PERFORMANCE_PARAMETER_TYPE_HW_COUNTERS_SUPPORTED_INTEL";
1896                 case VK_PERFORMANCE_PARAMETER_TYPE_STREAM_MARKER_VALID_BITS_INTEL:      return "VK_PERFORMANCE_PARAMETER_TYPE_STREAM_MARKER_VALID_BITS_INTEL";
1897                 case VK_PERFORMANCE_PARAMETER_TYPE_MAX_ENUM_INTEL:                                      return "VK_PERFORMANCE_PARAMETER_TYPE_MAX_ENUM_INTEL";
1898                 default:                                                                                                                        return DE_NULL;
1899         }
1900 }
1901
1902 const char* getPerformanceValueTypeINTELName (VkPerformanceValueTypeINTEL value)
1903 {
1904         switch (value)
1905         {
1906                 case VK_PERFORMANCE_VALUE_TYPE_UINT32_INTEL:    return "VK_PERFORMANCE_VALUE_TYPE_UINT32_INTEL";
1907                 case VK_PERFORMANCE_VALUE_TYPE_UINT64_INTEL:    return "VK_PERFORMANCE_VALUE_TYPE_UINT64_INTEL";
1908                 case VK_PERFORMANCE_VALUE_TYPE_FLOAT_INTEL:             return "VK_PERFORMANCE_VALUE_TYPE_FLOAT_INTEL";
1909                 case VK_PERFORMANCE_VALUE_TYPE_BOOL_INTEL:              return "VK_PERFORMANCE_VALUE_TYPE_BOOL_INTEL";
1910                 case VK_PERFORMANCE_VALUE_TYPE_STRING_INTEL:    return "VK_PERFORMANCE_VALUE_TYPE_STRING_INTEL";
1911                 case VK_PERFORMANCE_VALUE_TYPE_MAX_ENUM_INTEL:  return "VK_PERFORMANCE_VALUE_TYPE_MAX_ENUM_INTEL";
1912                 default:                                                                                return DE_NULL;
1913         }
1914 }
1915
1916 const char* getValidationFeatureEnableEXTName (VkValidationFeatureEnableEXT value)
1917 {
1918         switch (value)
1919         {
1920                 case VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT:                                                     return "VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT";
1921                 case VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT:        return "VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT";
1922                 case VK_VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT:                                           return "VK_VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT";
1923                 case VK_VALIDATION_FEATURE_ENABLE_MAX_ENUM_EXT:                                                         return "VK_VALIDATION_FEATURE_ENABLE_MAX_ENUM_EXT";
1924                 default:                                                                                                                                        return DE_NULL;
1925         }
1926 }
1927
1928 const char* getValidationFeatureDisableEXTName (VkValidationFeatureDisableEXT value)
1929 {
1930         switch (value)
1931         {
1932                 case VK_VALIDATION_FEATURE_DISABLE_ALL_EXT:                                     return "VK_VALIDATION_FEATURE_DISABLE_ALL_EXT";
1933                 case VK_VALIDATION_FEATURE_DISABLE_SHADERS_EXT:                         return "VK_VALIDATION_FEATURE_DISABLE_SHADERS_EXT";
1934                 case VK_VALIDATION_FEATURE_DISABLE_THREAD_SAFETY_EXT:           return "VK_VALIDATION_FEATURE_DISABLE_THREAD_SAFETY_EXT";
1935                 case VK_VALIDATION_FEATURE_DISABLE_API_PARAMETERS_EXT:          return "VK_VALIDATION_FEATURE_DISABLE_API_PARAMETERS_EXT";
1936                 case VK_VALIDATION_FEATURE_DISABLE_OBJECT_LIFETIMES_EXT:        return "VK_VALIDATION_FEATURE_DISABLE_OBJECT_LIFETIMES_EXT";
1937                 case VK_VALIDATION_FEATURE_DISABLE_CORE_CHECKS_EXT:                     return "VK_VALIDATION_FEATURE_DISABLE_CORE_CHECKS_EXT";
1938                 case VK_VALIDATION_FEATURE_DISABLE_UNIQUE_HANDLES_EXT:          return "VK_VALIDATION_FEATURE_DISABLE_UNIQUE_HANDLES_EXT";
1939                 case VK_VALIDATION_FEATURE_DISABLE_MAX_ENUM_EXT:                        return "VK_VALIDATION_FEATURE_DISABLE_MAX_ENUM_EXT";
1940                 default:                                                                                                        return DE_NULL;
1941         }
1942 }
1943
1944 const char* getComponentTypeNVName (VkComponentTypeNV value)
1945 {
1946         switch (value)
1947         {
1948                 case VK_COMPONENT_TYPE_FLOAT16_NV:      return "VK_COMPONENT_TYPE_FLOAT16_NV";
1949                 case VK_COMPONENT_TYPE_FLOAT32_NV:      return "VK_COMPONENT_TYPE_FLOAT32_NV";
1950                 case VK_COMPONENT_TYPE_FLOAT64_NV:      return "VK_COMPONENT_TYPE_FLOAT64_NV";
1951                 case VK_COMPONENT_TYPE_SINT8_NV:        return "VK_COMPONENT_TYPE_SINT8_NV";
1952                 case VK_COMPONENT_TYPE_SINT16_NV:       return "VK_COMPONENT_TYPE_SINT16_NV";
1953                 case VK_COMPONENT_TYPE_SINT32_NV:       return "VK_COMPONENT_TYPE_SINT32_NV";
1954                 case VK_COMPONENT_TYPE_SINT64_NV:       return "VK_COMPONENT_TYPE_SINT64_NV";
1955                 case VK_COMPONENT_TYPE_UINT8_NV:        return "VK_COMPONENT_TYPE_UINT8_NV";
1956                 case VK_COMPONENT_TYPE_UINT16_NV:       return "VK_COMPONENT_TYPE_UINT16_NV";
1957                 case VK_COMPONENT_TYPE_UINT32_NV:       return "VK_COMPONENT_TYPE_UINT32_NV";
1958                 case VK_COMPONENT_TYPE_UINT64_NV:       return "VK_COMPONENT_TYPE_UINT64_NV";
1959                 case VK_COMPONENT_TYPE_MAX_ENUM_NV:     return "VK_COMPONENT_TYPE_MAX_ENUM_NV";
1960                 default:                                                        return DE_NULL;
1961         }
1962 }
1963
1964 const char* getScopeNVName (VkScopeNV value)
1965 {
1966         switch (value)
1967         {
1968                 case VK_SCOPE_DEVICE_NV:                return "VK_SCOPE_DEVICE_NV";
1969                 case VK_SCOPE_WORKGROUP_NV:             return "VK_SCOPE_WORKGROUP_NV";
1970                 case VK_SCOPE_SUBGROUP_NV:              return "VK_SCOPE_SUBGROUP_NV";
1971                 case VK_SCOPE_QUEUE_FAMILY_NV:  return "VK_SCOPE_QUEUE_FAMILY_NV";
1972                 case VK_SCOPE_MAX_ENUM_NV:              return "VK_SCOPE_MAX_ENUM_NV";
1973                 default:                                                return DE_NULL;
1974         }
1975 }
1976
1977 const char* getCoverageReductionModeNVName (VkCoverageReductionModeNV value)
1978 {
1979         switch (value)
1980         {
1981                 case VK_COVERAGE_REDUCTION_MODE_MERGE_NV:               return "VK_COVERAGE_REDUCTION_MODE_MERGE_NV";
1982                 case VK_COVERAGE_REDUCTION_MODE_TRUNCATE_NV:    return "VK_COVERAGE_REDUCTION_MODE_TRUNCATE_NV";
1983                 case VK_COVERAGE_REDUCTION_MODE_MAX_ENUM_NV:    return "VK_COVERAGE_REDUCTION_MODE_MAX_ENUM_NV";
1984                 default:                                                                                return DE_NULL;
1985         }
1986 }
1987
1988 const char* getLineRasterizationModeEXTName (VkLineRasterizationModeEXT value)
1989 {
1990         switch (value)
1991         {
1992                 case VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT:                    return "VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT";
1993                 case VK_LINE_RASTERIZATION_MODE_RECTANGULAR_EXT:                return "VK_LINE_RASTERIZATION_MODE_RECTANGULAR_EXT";
1994                 case VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT:                  return "VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT";
1995                 case VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT: return "VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT";
1996                 case VK_LINE_RASTERIZATION_MODE_MAX_ENUM_EXT:                   return "VK_LINE_RASTERIZATION_MODE_MAX_ENUM_EXT";
1997                 default:                                                                                                return DE_NULL;
1998         }
1999 }
2000
2001 const char* getFullScreenExclusiveEXTName (VkFullScreenExclusiveEXT value)
2002 {
2003         switch (value)
2004         {
2005                 case VK_FULL_SCREEN_EXCLUSIVE_DEFAULT_EXT:                                      return "VK_FULL_SCREEN_EXCLUSIVE_DEFAULT_EXT";
2006                 case VK_FULL_SCREEN_EXCLUSIVE_ALLOWED_EXT:                                      return "VK_FULL_SCREEN_EXCLUSIVE_ALLOWED_EXT";
2007                 case VK_FULL_SCREEN_EXCLUSIVE_DISALLOWED_EXT:                           return "VK_FULL_SCREEN_EXCLUSIVE_DISALLOWED_EXT";
2008                 case VK_FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT:       return "VK_FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT";
2009                 case VK_FULL_SCREEN_EXCLUSIVE_MAX_ENUM_EXT:                                     return "VK_FULL_SCREEN_EXCLUSIVE_MAX_ENUM_EXT";
2010                 default:                                                                                                        return DE_NULL;
2011         }
2012 }
2013
2014 tcu::Format::Bitfield<32> getFormatFeatureFlagsStr (VkFormatFeatureFlags value)
2015 {
2016         static const tcu::Format::BitDesc s_desc[] =
2017         {
2018                 tcu::Format::BitDesc(VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT,                                                                                                                               "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT"),
2019                 tcu::Format::BitDesc(VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT,                                                                                                                               "VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT"),
2020                 tcu::Format::BitDesc(VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT,                                                                                                                "VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT"),
2021                 tcu::Format::BitDesc(VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT,                                                                                                                "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT"),
2022                 tcu::Format::BitDesc(VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT,                                                                                                                "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT"),
2023                 tcu::Format::BitDesc(VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT,                                                                                                 "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT"),
2024                 tcu::Format::BitDesc(VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT,                                                                                                                               "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT"),
2025                 tcu::Format::BitDesc(VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT,                                                                                                                    "VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT"),
2026                 tcu::Format::BitDesc(VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT,                                                                                                              "VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT"),
2027                 tcu::Format::BitDesc(VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT,                                                                                                    "VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT"),
2028                 tcu::Format::BitDesc(VK_FORMAT_FEATURE_BLIT_SRC_BIT,                                                                                                                                    "VK_FORMAT_FEATURE_BLIT_SRC_BIT"),
2029                 tcu::Format::BitDesc(VK_FORMAT_FEATURE_BLIT_DST_BIT,                                                                                                                                    "VK_FORMAT_FEATURE_BLIT_DST_BIT"),
2030                 tcu::Format::BitDesc(VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT,                                                                                                 "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT"),
2031                 tcu::Format::BitDesc(VK_FORMAT_FEATURE_TRANSFER_SRC_BIT,                                                                                                                                "VK_FORMAT_FEATURE_TRANSFER_SRC_BIT"),
2032                 tcu::Format::BitDesc(VK_FORMAT_FEATURE_TRANSFER_DST_BIT,                                                                                                                                "VK_FORMAT_FEATURE_TRANSFER_DST_BIT"),
2033                 tcu::Format::BitDesc(VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT,                                                                                                             "VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT"),
2034                 tcu::Format::BitDesc(VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT,                                                                "VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT"),
2035                 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"),
2036                 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"),
2037                 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"),
2038                 tcu::Format::BitDesc(VK_FORMAT_FEATURE_DISJOINT_BIT,                                                                                                                                    "VK_FORMAT_FEATURE_DISJOINT_BIT"),
2039                 tcu::Format::BitDesc(VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT,                                                                                                              "VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT"),
2040                 tcu::Format::BitDesc(VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG,                                                                                              "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG"),
2041                 tcu::Format::BitDesc(VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT,                                                                                             "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT"),
2042                 tcu::Format::BitDesc(VK_FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT,                                                                                                    "VK_FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT"),
2043                 tcu::Format::BitDesc(VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR,                                                                                                                    "VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR"),
2044                 tcu::Format::BitDesc(VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR,                                                                                                                    "VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR"),
2045                 tcu::Format::BitDesc(VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT_KHR,                                                                                                 "VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT_KHR"),
2046                 tcu::Format::BitDesc(VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHR,                                                    "VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHR"),
2047                 tcu::Format::BitDesc(VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHR,                   "VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHR"),
2048                 tcu::Format::BitDesc(VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT_KHR,                   "VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT_KHR"),
2049                 tcu::Format::BitDesc(VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT_KHR, "VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT_KHR"),
2050                 tcu::Format::BitDesc(VK_FORMAT_FEATURE_DISJOINT_BIT_KHR,                                                                                                                                "VK_FORMAT_FEATURE_DISJOINT_BIT_KHR"),
2051                 tcu::Format::BitDesc(VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT_KHR,                                                                                                  "VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT_KHR"),
2052                 tcu::Format::BitDesc(VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT,                                                                                              "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT"),
2053                 tcu::Format::BitDesc(VK_FORMAT_FEATURE_FLAG_BITS_MAX_ENUM,                                                                                                                              "VK_FORMAT_FEATURE_FLAG_BITS_MAX_ENUM"),
2054         };
2055         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2056 }
2057
2058 tcu::Format::Bitfield<32> getImageUsageFlagsStr (VkImageUsageFlags value)
2059 {
2060         static const tcu::Format::BitDesc s_desc[] =
2061         {
2062                 tcu::Format::BitDesc(VK_IMAGE_USAGE_TRANSFER_SRC_BIT,                           "VK_IMAGE_USAGE_TRANSFER_SRC_BIT"),
2063                 tcu::Format::BitDesc(VK_IMAGE_USAGE_TRANSFER_DST_BIT,                           "VK_IMAGE_USAGE_TRANSFER_DST_BIT"),
2064                 tcu::Format::BitDesc(VK_IMAGE_USAGE_SAMPLED_BIT,                                        "VK_IMAGE_USAGE_SAMPLED_BIT"),
2065                 tcu::Format::BitDesc(VK_IMAGE_USAGE_STORAGE_BIT,                                        "VK_IMAGE_USAGE_STORAGE_BIT"),
2066                 tcu::Format::BitDesc(VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT,                       "VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT"),
2067                 tcu::Format::BitDesc(VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT,       "VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT"),
2068                 tcu::Format::BitDesc(VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT,           "VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT"),
2069                 tcu::Format::BitDesc(VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT,                       "VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT"),
2070                 tcu::Format::BitDesc(VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV,          "VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV"),
2071                 tcu::Format::BitDesc(VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT,       "VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT"),
2072                 tcu::Format::BitDesc(VK_IMAGE_USAGE_FLAG_BITS_MAX_ENUM,                         "VK_IMAGE_USAGE_FLAG_BITS_MAX_ENUM"),
2073         };
2074         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2075 }
2076
2077 tcu::Format::Bitfield<32> getImageCreateFlagsStr (VkImageCreateFlags value)
2078 {
2079         static const tcu::Format::BitDesc s_desc[] =
2080         {
2081                 tcu::Format::BitDesc(VK_IMAGE_CREATE_SPARSE_BINDING_BIT,                                                "VK_IMAGE_CREATE_SPARSE_BINDING_BIT"),
2082                 tcu::Format::BitDesc(VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT,                                              "VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT"),
2083                 tcu::Format::BitDesc(VK_IMAGE_CREATE_SPARSE_ALIASED_BIT,                                                "VK_IMAGE_CREATE_SPARSE_ALIASED_BIT"),
2084                 tcu::Format::BitDesc(VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT,                                                "VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT"),
2085                 tcu::Format::BitDesc(VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT,                                               "VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT"),
2086                 tcu::Format::BitDesc(VK_IMAGE_CREATE_ALIAS_BIT,                                                                 "VK_IMAGE_CREATE_ALIAS_BIT"),
2087                 tcu::Format::BitDesc(VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT,                   "VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT"),
2088                 tcu::Format::BitDesc(VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT,                                   "VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT"),
2089                 tcu::Format::BitDesc(VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT,                   "VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT"),
2090                 tcu::Format::BitDesc(VK_IMAGE_CREATE_EXTENDED_USAGE_BIT,                                                "VK_IMAGE_CREATE_EXTENDED_USAGE_BIT"),
2091                 tcu::Format::BitDesc(VK_IMAGE_CREATE_PROTECTED_BIT,                                                             "VK_IMAGE_CREATE_PROTECTED_BIT"),
2092                 tcu::Format::BitDesc(VK_IMAGE_CREATE_DISJOINT_BIT,                                                              "VK_IMAGE_CREATE_DISJOINT_BIT"),
2093                 tcu::Format::BitDesc(VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV,                                             "VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV"),
2094                 tcu::Format::BitDesc(VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT, "VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT"),
2095                 tcu::Format::BitDesc(VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT,                                                "VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT"),
2096                 tcu::Format::BitDesc(VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR,               "VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR"),
2097                 tcu::Format::BitDesc(VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT_KHR,                               "VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT_KHR"),
2098                 tcu::Format::BitDesc(VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT_KHR,               "VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT_KHR"),
2099                 tcu::Format::BitDesc(VK_IMAGE_CREATE_EXTENDED_USAGE_BIT_KHR,                                    "VK_IMAGE_CREATE_EXTENDED_USAGE_BIT_KHR"),
2100                 tcu::Format::BitDesc(VK_IMAGE_CREATE_DISJOINT_BIT_KHR,                                                  "VK_IMAGE_CREATE_DISJOINT_BIT_KHR"),
2101                 tcu::Format::BitDesc(VK_IMAGE_CREATE_ALIAS_BIT_KHR,                                                             "VK_IMAGE_CREATE_ALIAS_BIT_KHR"),
2102                 tcu::Format::BitDesc(VK_IMAGE_CREATE_FLAG_BITS_MAX_ENUM,                                                "VK_IMAGE_CREATE_FLAG_BITS_MAX_ENUM"),
2103         };
2104         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2105 }
2106
2107 tcu::Format::Bitfield<32> getSampleCountFlagsStr (VkSampleCountFlags value)
2108 {
2109         static const tcu::Format::BitDesc s_desc[] =
2110         {
2111                 tcu::Format::BitDesc(VK_SAMPLE_COUNT_1_BIT,                                     "VK_SAMPLE_COUNT_1_BIT"),
2112                 tcu::Format::BitDesc(VK_SAMPLE_COUNT_2_BIT,                                     "VK_SAMPLE_COUNT_2_BIT"),
2113                 tcu::Format::BitDesc(VK_SAMPLE_COUNT_4_BIT,                                     "VK_SAMPLE_COUNT_4_BIT"),
2114                 tcu::Format::BitDesc(VK_SAMPLE_COUNT_8_BIT,                                     "VK_SAMPLE_COUNT_8_BIT"),
2115                 tcu::Format::BitDesc(VK_SAMPLE_COUNT_16_BIT,                            "VK_SAMPLE_COUNT_16_BIT"),
2116                 tcu::Format::BitDesc(VK_SAMPLE_COUNT_32_BIT,                            "VK_SAMPLE_COUNT_32_BIT"),
2117                 tcu::Format::BitDesc(VK_SAMPLE_COUNT_64_BIT,                            "VK_SAMPLE_COUNT_64_BIT"),
2118                 tcu::Format::BitDesc(VK_SAMPLE_COUNT_FLAG_BITS_MAX_ENUM,        "VK_SAMPLE_COUNT_FLAG_BITS_MAX_ENUM"),
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> getQueueFlagsStr (VkQueueFlags value)
2124 {
2125         static const tcu::Format::BitDesc s_desc[] =
2126         {
2127                 tcu::Format::BitDesc(VK_QUEUE_GRAPHICS_BIT,                     "VK_QUEUE_GRAPHICS_BIT"),
2128                 tcu::Format::BitDesc(VK_QUEUE_COMPUTE_BIT,                      "VK_QUEUE_COMPUTE_BIT"),
2129                 tcu::Format::BitDesc(VK_QUEUE_TRANSFER_BIT,                     "VK_QUEUE_TRANSFER_BIT"),
2130                 tcu::Format::BitDesc(VK_QUEUE_SPARSE_BINDING_BIT,       "VK_QUEUE_SPARSE_BINDING_BIT"),
2131                 tcu::Format::BitDesc(VK_QUEUE_PROTECTED_BIT,            "VK_QUEUE_PROTECTED_BIT"),
2132                 tcu::Format::BitDesc(VK_QUEUE_FLAG_BITS_MAX_ENUM,       "VK_QUEUE_FLAG_BITS_MAX_ENUM"),
2133         };
2134         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2135 }
2136
2137 tcu::Format::Bitfield<32> getMemoryPropertyFlagsStr (VkMemoryPropertyFlags value)
2138 {
2139         static const tcu::Format::BitDesc s_desc[] =
2140         {
2141                 tcu::Format::BitDesc(VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT,                       "VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT"),
2142                 tcu::Format::BitDesc(VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT,                       "VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT"),
2143                 tcu::Format::BitDesc(VK_MEMORY_PROPERTY_HOST_COHERENT_BIT,                      "VK_MEMORY_PROPERTY_HOST_COHERENT_BIT"),
2144                 tcu::Format::BitDesc(VK_MEMORY_PROPERTY_HOST_CACHED_BIT,                        "VK_MEMORY_PROPERTY_HOST_CACHED_BIT"),
2145                 tcu::Format::BitDesc(VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT,           "VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT"),
2146                 tcu::Format::BitDesc(VK_MEMORY_PROPERTY_PROTECTED_BIT,                          "VK_MEMORY_PROPERTY_PROTECTED_BIT"),
2147                 tcu::Format::BitDesc(VK_MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD,        "VK_MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD"),
2148                 tcu::Format::BitDesc(VK_MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD,        "VK_MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD"),
2149                 tcu::Format::BitDesc(VK_MEMORY_PROPERTY_FLAG_BITS_MAX_ENUM,                     "VK_MEMORY_PROPERTY_FLAG_BITS_MAX_ENUM"),
2150         };
2151         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2152 }
2153
2154 tcu::Format::Bitfield<32> getMemoryHeapFlagsStr (VkMemoryHeapFlags value)
2155 {
2156         static const tcu::Format::BitDesc s_desc[] =
2157         {
2158                 tcu::Format::BitDesc(VK_MEMORY_HEAP_DEVICE_LOCAL_BIT,           "VK_MEMORY_HEAP_DEVICE_LOCAL_BIT"),
2159                 tcu::Format::BitDesc(VK_MEMORY_HEAP_MULTI_INSTANCE_BIT,         "VK_MEMORY_HEAP_MULTI_INSTANCE_BIT"),
2160                 tcu::Format::BitDesc(VK_MEMORY_HEAP_MULTI_INSTANCE_BIT_KHR,     "VK_MEMORY_HEAP_MULTI_INSTANCE_BIT_KHR"),
2161                 tcu::Format::BitDesc(VK_MEMORY_HEAP_FLAG_BITS_MAX_ENUM,         "VK_MEMORY_HEAP_FLAG_BITS_MAX_ENUM"),
2162         };
2163         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2164 }
2165
2166 tcu::Format::Bitfield<32> getDeviceQueueCreateFlagsStr (VkDeviceQueueCreateFlags value)
2167 {
2168         static const tcu::Format::BitDesc s_desc[] =
2169         {
2170                 tcu::Format::BitDesc(VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT,              "VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT"),
2171                 tcu::Format::BitDesc(VK_DEVICE_QUEUE_CREATE_FLAG_BITS_MAX_ENUM, "VK_DEVICE_QUEUE_CREATE_FLAG_BITS_MAX_ENUM"),
2172         };
2173         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2174 }
2175
2176 tcu::Format::Bitfield<32> getPipelineStageFlagsStr (VkPipelineStageFlags value)
2177 {
2178         static const tcu::Format::BitDesc s_desc[] =
2179         {
2180                 tcu::Format::BitDesc(VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,                                         "VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT"),
2181                 tcu::Format::BitDesc(VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT,                                       "VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT"),
2182                 tcu::Format::BitDesc(VK_PIPELINE_STAGE_VERTEX_INPUT_BIT,                                        "VK_PIPELINE_STAGE_VERTEX_INPUT_BIT"),
2183                 tcu::Format::BitDesc(VK_PIPELINE_STAGE_VERTEX_SHADER_BIT,                                       "VK_PIPELINE_STAGE_VERTEX_SHADER_BIT"),
2184                 tcu::Format::BitDesc(VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT,         "VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT"),
2185                 tcu::Format::BitDesc(VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT,      "VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT"),
2186                 tcu::Format::BitDesc(VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT,                                     "VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT"),
2187                 tcu::Format::BitDesc(VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT,                                     "VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT"),
2188                 tcu::Format::BitDesc(VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT,                        "VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT"),
2189                 tcu::Format::BitDesc(VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT,                         "VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT"),
2190                 tcu::Format::BitDesc(VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT,                     "VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT"),
2191                 tcu::Format::BitDesc(VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT,                                      "VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT"),
2192                 tcu::Format::BitDesc(VK_PIPELINE_STAGE_TRANSFER_BIT,                                            "VK_PIPELINE_STAGE_TRANSFER_BIT"),
2193                 tcu::Format::BitDesc(VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT,                                      "VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT"),
2194                 tcu::Format::BitDesc(VK_PIPELINE_STAGE_HOST_BIT,                                                        "VK_PIPELINE_STAGE_HOST_BIT"),
2195                 tcu::Format::BitDesc(VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT,                                        "VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT"),
2196                 tcu::Format::BitDesc(VK_PIPELINE_STAGE_ALL_COMMANDS_BIT,                                        "VK_PIPELINE_STAGE_ALL_COMMANDS_BIT"),
2197                 tcu::Format::BitDesc(VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT,                      "VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT"),
2198                 tcu::Format::BitDesc(VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT,           "VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT"),
2199                 tcu::Format::BitDesc(VK_PIPELINE_STAGE_COMMAND_PROCESS_BIT_NVX,                         "VK_PIPELINE_STAGE_COMMAND_PROCESS_BIT_NVX"),
2200                 tcu::Format::BitDesc(VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV,                       "VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV"),
2201                 tcu::Format::BitDesc(VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV,                       "VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV"),
2202                 tcu::Format::BitDesc(VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV,     "VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV"),
2203                 tcu::Format::BitDesc(VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV,                                      "VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV"),
2204                 tcu::Format::BitDesc(VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV,                                      "VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV"),
2205                 tcu::Format::BitDesc(VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT,        "VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT"),
2206                 tcu::Format::BitDesc(VK_PIPELINE_STAGE_FLAG_BITS_MAX_ENUM,                                      "VK_PIPELINE_STAGE_FLAG_BITS_MAX_ENUM"),
2207         };
2208         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2209 }
2210
2211 tcu::Format::Bitfield<32> getImageAspectFlagsStr (VkImageAspectFlags value)
2212 {
2213         static const tcu::Format::BitDesc s_desc[] =
2214         {
2215                 tcu::Format::BitDesc(VK_IMAGE_ASPECT_COLOR_BIT,                                 "VK_IMAGE_ASPECT_COLOR_BIT"),
2216                 tcu::Format::BitDesc(VK_IMAGE_ASPECT_DEPTH_BIT,                                 "VK_IMAGE_ASPECT_DEPTH_BIT"),
2217                 tcu::Format::BitDesc(VK_IMAGE_ASPECT_STENCIL_BIT,                               "VK_IMAGE_ASPECT_STENCIL_BIT"),
2218                 tcu::Format::BitDesc(VK_IMAGE_ASPECT_METADATA_BIT,                              "VK_IMAGE_ASPECT_METADATA_BIT"),
2219                 tcu::Format::BitDesc(VK_IMAGE_ASPECT_PLANE_0_BIT,                               "VK_IMAGE_ASPECT_PLANE_0_BIT"),
2220                 tcu::Format::BitDesc(VK_IMAGE_ASPECT_PLANE_1_BIT,                               "VK_IMAGE_ASPECT_PLANE_1_BIT"),
2221                 tcu::Format::BitDesc(VK_IMAGE_ASPECT_PLANE_2_BIT,                               "VK_IMAGE_ASPECT_PLANE_2_BIT"),
2222                 tcu::Format::BitDesc(VK_IMAGE_ASPECT_MEMORY_PLANE_0_BIT_EXT,    "VK_IMAGE_ASPECT_MEMORY_PLANE_0_BIT_EXT"),
2223                 tcu::Format::BitDesc(VK_IMAGE_ASPECT_MEMORY_PLANE_1_BIT_EXT,    "VK_IMAGE_ASPECT_MEMORY_PLANE_1_BIT_EXT"),
2224                 tcu::Format::BitDesc(VK_IMAGE_ASPECT_MEMORY_PLANE_2_BIT_EXT,    "VK_IMAGE_ASPECT_MEMORY_PLANE_2_BIT_EXT"),
2225                 tcu::Format::BitDesc(VK_IMAGE_ASPECT_MEMORY_PLANE_3_BIT_EXT,    "VK_IMAGE_ASPECT_MEMORY_PLANE_3_BIT_EXT"),
2226                 tcu::Format::BitDesc(VK_IMAGE_ASPECT_PLANE_0_BIT_KHR,                   "VK_IMAGE_ASPECT_PLANE_0_BIT_KHR"),
2227                 tcu::Format::BitDesc(VK_IMAGE_ASPECT_PLANE_1_BIT_KHR,                   "VK_IMAGE_ASPECT_PLANE_1_BIT_KHR"),
2228                 tcu::Format::BitDesc(VK_IMAGE_ASPECT_PLANE_2_BIT_KHR,                   "VK_IMAGE_ASPECT_PLANE_2_BIT_KHR"),
2229                 tcu::Format::BitDesc(VK_IMAGE_ASPECT_FLAG_BITS_MAX_ENUM,                "VK_IMAGE_ASPECT_FLAG_BITS_MAX_ENUM"),
2230         };
2231         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2232 }
2233
2234 tcu::Format::Bitfield<32> getSparseImageFormatFlagsStr (VkSparseImageFormatFlags value)
2235 {
2236         static const tcu::Format::BitDesc s_desc[] =
2237         {
2238                 tcu::Format::BitDesc(VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT,                 "VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT"),
2239                 tcu::Format::BitDesc(VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT,               "VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT"),
2240                 tcu::Format::BitDesc(VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT, "VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT"),
2241                 tcu::Format::BitDesc(VK_SPARSE_IMAGE_FORMAT_FLAG_BITS_MAX_ENUM,                 "VK_SPARSE_IMAGE_FORMAT_FLAG_BITS_MAX_ENUM"),
2242         };
2243         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2244 }
2245
2246 tcu::Format::Bitfield<32> getSparseMemoryBindFlagsStr (VkSparseMemoryBindFlags value)
2247 {
2248         static const tcu::Format::BitDesc s_desc[] =
2249         {
2250                 tcu::Format::BitDesc(VK_SPARSE_MEMORY_BIND_METADATA_BIT,                "VK_SPARSE_MEMORY_BIND_METADATA_BIT"),
2251                 tcu::Format::BitDesc(VK_SPARSE_MEMORY_BIND_FLAG_BITS_MAX_ENUM,  "VK_SPARSE_MEMORY_BIND_FLAG_BITS_MAX_ENUM"),
2252         };
2253         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2254 }
2255
2256 tcu::Format::Bitfield<32> getFenceCreateFlagsStr (VkFenceCreateFlags value)
2257 {
2258         static const tcu::Format::BitDesc s_desc[] =
2259         {
2260                 tcu::Format::BitDesc(VK_FENCE_CREATE_SIGNALED_BIT,                      "VK_FENCE_CREATE_SIGNALED_BIT"),
2261                 tcu::Format::BitDesc(VK_FENCE_CREATE_FLAG_BITS_MAX_ENUM,        "VK_FENCE_CREATE_FLAG_BITS_MAX_ENUM"),
2262         };
2263         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2264 }
2265
2266 tcu::Format::Bitfield<32> getQueryPipelineStatisticFlagsStr (VkQueryPipelineStatisticFlags value)
2267 {
2268         static const tcu::Format::BitDesc s_desc[] =
2269         {
2270                 tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT,                                           "VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT"),
2271                 tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT,                                         "VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT"),
2272                 tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT,                                         "VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT"),
2273                 tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT,                                       "VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT"),
2274                 tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT,                                        "VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT"),
2275                 tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT,                                                      "VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT"),
2276                 tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT,                                                       "VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT"),
2277                 tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT,                                       "VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT"),
2278                 tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT,                       "VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT"),
2279                 tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT,        "VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT"),
2280                 tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT,                                        "VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT"),
2281                 tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_FLAG_BITS_MAX_ENUM,                                                            "VK_QUERY_PIPELINE_STATISTIC_FLAG_BITS_MAX_ENUM"),
2282         };
2283         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2284 }
2285
2286 tcu::Format::Bitfield<32> getQueryResultFlagsStr (VkQueryResultFlags value)
2287 {
2288         static const tcu::Format::BitDesc s_desc[] =
2289         {
2290                 tcu::Format::BitDesc(VK_QUERY_RESULT_64_BIT,                            "VK_QUERY_RESULT_64_BIT"),
2291                 tcu::Format::BitDesc(VK_QUERY_RESULT_WAIT_BIT,                          "VK_QUERY_RESULT_WAIT_BIT"),
2292                 tcu::Format::BitDesc(VK_QUERY_RESULT_WITH_AVAILABILITY_BIT,     "VK_QUERY_RESULT_WITH_AVAILABILITY_BIT"),
2293                 tcu::Format::BitDesc(VK_QUERY_RESULT_PARTIAL_BIT,                       "VK_QUERY_RESULT_PARTIAL_BIT"),
2294                 tcu::Format::BitDesc(VK_QUERY_RESULT_FLAG_BITS_MAX_ENUM,        "VK_QUERY_RESULT_FLAG_BITS_MAX_ENUM"),
2295         };
2296         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2297 }
2298
2299 tcu::Format::Bitfield<32> getBufferCreateFlagsStr (VkBufferCreateFlags value)
2300 {
2301         static const tcu::Format::BitDesc s_desc[] =
2302         {
2303                 tcu::Format::BitDesc(VK_BUFFER_CREATE_SPARSE_BINDING_BIT,                                               "VK_BUFFER_CREATE_SPARSE_BINDING_BIT"),
2304                 tcu::Format::BitDesc(VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT,                                             "VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT"),
2305                 tcu::Format::BitDesc(VK_BUFFER_CREATE_SPARSE_ALIASED_BIT,                                               "VK_BUFFER_CREATE_SPARSE_ALIASED_BIT"),
2306                 tcu::Format::BitDesc(VK_BUFFER_CREATE_PROTECTED_BIT,                                                    "VK_BUFFER_CREATE_PROTECTED_BIT"),
2307                 tcu::Format::BitDesc(VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT,    "VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT"),
2308                 tcu::Format::BitDesc(VK_BUFFER_CREATE_FLAG_BITS_MAX_ENUM,                                               "VK_BUFFER_CREATE_FLAG_BITS_MAX_ENUM"),
2309         };
2310         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2311 }
2312
2313 tcu::Format::Bitfield<32> getBufferUsageFlagsStr (VkBufferUsageFlags value)
2314 {
2315         static const tcu::Format::BitDesc s_desc[] =
2316         {
2317                 tcu::Format::BitDesc(VK_BUFFER_USAGE_TRANSFER_SRC_BIT,                                                  "VK_BUFFER_USAGE_TRANSFER_SRC_BIT"),
2318                 tcu::Format::BitDesc(VK_BUFFER_USAGE_TRANSFER_DST_BIT,                                                  "VK_BUFFER_USAGE_TRANSFER_DST_BIT"),
2319                 tcu::Format::BitDesc(VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT,                                  "VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT"),
2320                 tcu::Format::BitDesc(VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT,                                  "VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT"),
2321                 tcu::Format::BitDesc(VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT,                                                "VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT"),
2322                 tcu::Format::BitDesc(VK_BUFFER_USAGE_STORAGE_BUFFER_BIT,                                                "VK_BUFFER_USAGE_STORAGE_BUFFER_BIT"),
2323                 tcu::Format::BitDesc(VK_BUFFER_USAGE_INDEX_BUFFER_BIT,                                                  "VK_BUFFER_USAGE_INDEX_BUFFER_BIT"),
2324                 tcu::Format::BitDesc(VK_BUFFER_USAGE_VERTEX_BUFFER_BIT,                                                 "VK_BUFFER_USAGE_VERTEX_BUFFER_BIT"),
2325                 tcu::Format::BitDesc(VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT,                                               "VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT"),
2326                 tcu::Format::BitDesc(VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT,                 "VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT"),
2327                 tcu::Format::BitDesc(VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT, "VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT"),
2328                 tcu::Format::BitDesc(VK_BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT,                             "VK_BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT"),
2329                 tcu::Format::BitDesc(VK_BUFFER_USAGE_RAY_TRACING_BIT_NV,                                                "VK_BUFFER_USAGE_RAY_TRACING_BIT_NV"),
2330                 tcu::Format::BitDesc(VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT,                             "VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT"),
2331                 tcu::Format::BitDesc(VK_BUFFER_USAGE_FLAG_BITS_MAX_ENUM,                                                "VK_BUFFER_USAGE_FLAG_BITS_MAX_ENUM"),
2332         };
2333         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2334 }
2335
2336 tcu::Format::Bitfield<32> getImageViewCreateFlagsStr (VkImageViewCreateFlags value)
2337 {
2338         static const tcu::Format::BitDesc s_desc[] =
2339         {
2340                 tcu::Format::BitDesc(VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT, "VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT"),
2341                 tcu::Format::BitDesc(VK_IMAGE_VIEW_CREATE_FLAG_BITS_MAX_ENUM,                                   "VK_IMAGE_VIEW_CREATE_FLAG_BITS_MAX_ENUM"),
2342         };
2343         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2344 }
2345
2346 tcu::Format::Bitfield<32> getShaderModuleCreateFlagsStr (VkShaderModuleCreateFlags value)
2347 {
2348         static const tcu::Format::BitDesc s_desc[] =
2349         {
2350                 tcu::Format::BitDesc(VK_SHADER_MODULE_CREATE_FLAG_BITS_MAX_ENUM,        "VK_SHADER_MODULE_CREATE_FLAG_BITS_MAX_ENUM"),
2351         };
2352         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2353 }
2354
2355 tcu::Format::Bitfield<32> getPipelineCreateFlagsStr (VkPipelineCreateFlags value)
2356 {
2357         static const tcu::Format::BitDesc s_desc[] =
2358         {
2359                 tcu::Format::BitDesc(VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT,                                       "VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT"),
2360                 tcu::Format::BitDesc(VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT,                                          "VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT"),
2361                 tcu::Format::BitDesc(VK_PIPELINE_CREATE_DERIVATIVE_BIT,                                                         "VK_PIPELINE_CREATE_DERIVATIVE_BIT"),
2362                 tcu::Format::BitDesc(VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT,                       "VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT"),
2363                 tcu::Format::BitDesc(VK_PIPELINE_CREATE_DISPATCH_BASE,                                                          "VK_PIPELINE_CREATE_DISPATCH_BASE"),
2364                 tcu::Format::BitDesc(VK_PIPELINE_CREATE_DEFER_COMPILE_BIT_NV,                                           "VK_PIPELINE_CREATE_DEFER_COMPILE_BIT_NV"),
2365                 tcu::Format::BitDesc(VK_PIPELINE_CREATE_CAPTURE_STATISTICS_BIT_KHR,                                     "VK_PIPELINE_CREATE_CAPTURE_STATISTICS_BIT_KHR"),
2366                 tcu::Format::BitDesc(VK_PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR,       "VK_PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR"),
2367                 tcu::Format::BitDesc(VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR,           "VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR"),
2368                 tcu::Format::BitDesc(VK_PIPELINE_CREATE_DISPATCH_BASE_KHR,                                                      "VK_PIPELINE_CREATE_DISPATCH_BASE_KHR"),
2369                 tcu::Format::BitDesc(VK_PIPELINE_CREATE_FLAG_BITS_MAX_ENUM,                                                     "VK_PIPELINE_CREATE_FLAG_BITS_MAX_ENUM"),
2370         };
2371         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2372 }
2373
2374 tcu::Format::Bitfield<32> getPipelineShaderStageCreateFlagsStr (VkPipelineShaderStageCreateFlags value)
2375 {
2376         static const tcu::Format::BitDesc s_desc[] =
2377         {
2378                 tcu::Format::BitDesc(VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT,       "VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT"),
2379                 tcu::Format::BitDesc(VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT,            "VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT"),
2380                 tcu::Format::BitDesc(VK_PIPELINE_SHADER_STAGE_CREATE_FLAG_BITS_MAX_ENUM,                                        "VK_PIPELINE_SHADER_STAGE_CREATE_FLAG_BITS_MAX_ENUM"),
2381         };
2382         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2383 }
2384
2385 tcu::Format::Bitfield<32> getShaderStageFlagsStr (VkShaderStageFlags value)
2386 {
2387         static const tcu::Format::BitDesc s_desc[] =
2388         {
2389                 tcu::Format::BitDesc(VK_SHADER_STAGE_VERTEX_BIT,                                        "VK_SHADER_STAGE_VERTEX_BIT"),
2390                 tcu::Format::BitDesc(VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT,          "VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT"),
2391                 tcu::Format::BitDesc(VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT,       "VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT"),
2392                 tcu::Format::BitDesc(VK_SHADER_STAGE_GEOMETRY_BIT,                                      "VK_SHADER_STAGE_GEOMETRY_BIT"),
2393                 tcu::Format::BitDesc(VK_SHADER_STAGE_FRAGMENT_BIT,                                      "VK_SHADER_STAGE_FRAGMENT_BIT"),
2394                 tcu::Format::BitDesc(VK_SHADER_STAGE_COMPUTE_BIT,                                       "VK_SHADER_STAGE_COMPUTE_BIT"),
2395                 tcu::Format::BitDesc(VK_SHADER_STAGE_ALL_GRAPHICS,                                      "VK_SHADER_STAGE_ALL_GRAPHICS"),
2396                 tcu::Format::BitDesc(VK_SHADER_STAGE_ALL,                                                       "VK_SHADER_STAGE_ALL"),
2397                 tcu::Format::BitDesc(VK_SHADER_STAGE_RAYGEN_BIT_NV,                                     "VK_SHADER_STAGE_RAYGEN_BIT_NV"),
2398                 tcu::Format::BitDesc(VK_SHADER_STAGE_ANY_HIT_BIT_NV,                            "VK_SHADER_STAGE_ANY_HIT_BIT_NV"),
2399                 tcu::Format::BitDesc(VK_SHADER_STAGE_CLOSEST_HIT_BIT_NV,                        "VK_SHADER_STAGE_CLOSEST_HIT_BIT_NV"),
2400                 tcu::Format::BitDesc(VK_SHADER_STAGE_MISS_BIT_NV,                                       "VK_SHADER_STAGE_MISS_BIT_NV"),
2401                 tcu::Format::BitDesc(VK_SHADER_STAGE_INTERSECTION_BIT_NV,                       "VK_SHADER_STAGE_INTERSECTION_BIT_NV"),
2402                 tcu::Format::BitDesc(VK_SHADER_STAGE_CALLABLE_BIT_NV,                           "VK_SHADER_STAGE_CALLABLE_BIT_NV"),
2403                 tcu::Format::BitDesc(VK_SHADER_STAGE_TASK_BIT_NV,                                       "VK_SHADER_STAGE_TASK_BIT_NV"),
2404                 tcu::Format::BitDesc(VK_SHADER_STAGE_MESH_BIT_NV,                                       "VK_SHADER_STAGE_MESH_BIT_NV"),
2405                 tcu::Format::BitDesc(VK_SHADER_STAGE_FLAG_BITS_MAX_ENUM,                        "VK_SHADER_STAGE_FLAG_BITS_MAX_ENUM"),
2406         };
2407         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2408 }
2409
2410 tcu::Format::Bitfield<32> getCullModeFlagsStr (VkCullModeFlags value)
2411 {
2412         static const tcu::Format::BitDesc s_desc[] =
2413         {
2414                 tcu::Format::BitDesc(VK_CULL_MODE_NONE,                                 "VK_CULL_MODE_NONE"),
2415                 tcu::Format::BitDesc(VK_CULL_MODE_FRONT_BIT,                    "VK_CULL_MODE_FRONT_BIT"),
2416                 tcu::Format::BitDesc(VK_CULL_MODE_BACK_BIT,                             "VK_CULL_MODE_BACK_BIT"),
2417                 tcu::Format::BitDesc(VK_CULL_MODE_FRONT_AND_BACK,               "VK_CULL_MODE_FRONT_AND_BACK"),
2418                 tcu::Format::BitDesc(VK_CULL_MODE_FLAG_BITS_MAX_ENUM,   "VK_CULL_MODE_FLAG_BITS_MAX_ENUM"),
2419         };
2420         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2421 }
2422
2423 tcu::Format::Bitfield<32> getColorComponentFlagsStr (VkColorComponentFlags value)
2424 {
2425         static const tcu::Format::BitDesc s_desc[] =
2426         {
2427                 tcu::Format::BitDesc(VK_COLOR_COMPONENT_R_BIT,                          "VK_COLOR_COMPONENT_R_BIT"),
2428                 tcu::Format::BitDesc(VK_COLOR_COMPONENT_G_BIT,                          "VK_COLOR_COMPONENT_G_BIT"),
2429                 tcu::Format::BitDesc(VK_COLOR_COMPONENT_B_BIT,                          "VK_COLOR_COMPONENT_B_BIT"),
2430                 tcu::Format::BitDesc(VK_COLOR_COMPONENT_A_BIT,                          "VK_COLOR_COMPONENT_A_BIT"),
2431                 tcu::Format::BitDesc(VK_COLOR_COMPONENT_FLAG_BITS_MAX_ENUM,     "VK_COLOR_COMPONENT_FLAG_BITS_MAX_ENUM"),
2432         };
2433         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2434 }
2435
2436 tcu::Format::Bitfield<32> getSamplerCreateFlagsStr (VkSamplerCreateFlags value)
2437 {
2438         static const tcu::Format::BitDesc s_desc[] =
2439         {
2440                 tcu::Format::BitDesc(VK_SAMPLER_CREATE_SUBSAMPLED_BIT_EXT,                                                      "VK_SAMPLER_CREATE_SUBSAMPLED_BIT_EXT"),
2441                 tcu::Format::BitDesc(VK_SAMPLER_CREATE_SUBSAMPLED_COARSE_RECONSTRUCTION_BIT_EXT,        "VK_SAMPLER_CREATE_SUBSAMPLED_COARSE_RECONSTRUCTION_BIT_EXT"),
2442                 tcu::Format::BitDesc(VK_SAMPLER_CREATE_FLAG_BITS_MAX_ENUM,                                                      "VK_SAMPLER_CREATE_FLAG_BITS_MAX_ENUM"),
2443         };
2444         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2445 }
2446
2447 tcu::Format::Bitfield<32> getDescriptorSetLayoutCreateFlagsStr (VkDescriptorSetLayoutCreateFlags value)
2448 {
2449         static const tcu::Format::BitDesc s_desc[] =
2450         {
2451                 tcu::Format::BitDesc(VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR,                   "VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR"),
2452                 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"),
2453                 tcu::Format::BitDesc(VK_DESCRIPTOR_SET_LAYOUT_CREATE_FLAG_BITS_MAX_ENUM,                                "VK_DESCRIPTOR_SET_LAYOUT_CREATE_FLAG_BITS_MAX_ENUM"),
2454         };
2455         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2456 }
2457
2458 tcu::Format::Bitfield<32> getDescriptorPoolCreateFlagsStr (VkDescriptorPoolCreateFlags value)
2459 {
2460         static const tcu::Format::BitDesc s_desc[] =
2461         {
2462                 tcu::Format::BitDesc(VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT,         "VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT"),
2463                 tcu::Format::BitDesc(VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT,       "VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT"),
2464                 tcu::Format::BitDesc(VK_DESCRIPTOR_POOL_CREATE_FLAG_BITS_MAX_ENUM,                      "VK_DESCRIPTOR_POOL_CREATE_FLAG_BITS_MAX_ENUM"),
2465         };
2466         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2467 }
2468
2469 tcu::Format::Bitfield<32> getFramebufferCreateFlagsStr (VkFramebufferCreateFlags value)
2470 {
2471         static const tcu::Format::BitDesc s_desc[] =
2472         {
2473                 tcu::Format::BitDesc(VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR,   "VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR"),
2474                 tcu::Format::BitDesc(VK_FRAMEBUFFER_CREATE_FLAG_BITS_MAX_ENUM,  "VK_FRAMEBUFFER_CREATE_FLAG_BITS_MAX_ENUM"),
2475         };
2476         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2477 }
2478
2479 tcu::Format::Bitfield<32> getRenderPassCreateFlagsStr (VkRenderPassCreateFlags value)
2480 {
2481         static const tcu::Format::BitDesc s_desc[] =
2482         {
2483                 tcu::Format::BitDesc(VK_RENDER_PASS_CREATE_FLAG_BITS_MAX_ENUM,  "VK_RENDER_PASS_CREATE_FLAG_BITS_MAX_ENUM"),
2484         };
2485         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2486 }
2487
2488 tcu::Format::Bitfield<32> getAttachmentDescriptionFlagsStr (VkAttachmentDescriptionFlags value)
2489 {
2490         static const tcu::Format::BitDesc s_desc[] =
2491         {
2492                 tcu::Format::BitDesc(VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT,           "VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT"),
2493                 tcu::Format::BitDesc(VK_ATTACHMENT_DESCRIPTION_FLAG_BITS_MAX_ENUM,      "VK_ATTACHMENT_DESCRIPTION_FLAG_BITS_MAX_ENUM"),
2494         };
2495         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2496 }
2497
2498 tcu::Format::Bitfield<32> getSubpassDescriptionFlagsStr (VkSubpassDescriptionFlags value)
2499 {
2500         static const tcu::Format::BitDesc s_desc[] =
2501         {
2502                 tcu::Format::BitDesc(VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX,                "VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX"),
2503                 tcu::Format::BitDesc(VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX,   "VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX"),
2504                 tcu::Format::BitDesc(VK_SUBPASS_DESCRIPTION_FLAG_BITS_MAX_ENUM,                                 "VK_SUBPASS_DESCRIPTION_FLAG_BITS_MAX_ENUM"),
2505         };
2506         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2507 }
2508
2509 tcu::Format::Bitfield<32> getAccessFlagsStr (VkAccessFlags value)
2510 {
2511         static const tcu::Format::BitDesc s_desc[] =
2512         {
2513                 tcu::Format::BitDesc(VK_ACCESS_INDIRECT_COMMAND_READ_BIT,                                       "VK_ACCESS_INDIRECT_COMMAND_READ_BIT"),
2514                 tcu::Format::BitDesc(VK_ACCESS_INDEX_READ_BIT,                                                          "VK_ACCESS_INDEX_READ_BIT"),
2515                 tcu::Format::BitDesc(VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT,                                       "VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT"),
2516                 tcu::Format::BitDesc(VK_ACCESS_UNIFORM_READ_BIT,                                                        "VK_ACCESS_UNIFORM_READ_BIT"),
2517                 tcu::Format::BitDesc(VK_ACCESS_INPUT_ATTACHMENT_READ_BIT,                                       "VK_ACCESS_INPUT_ATTACHMENT_READ_BIT"),
2518                 tcu::Format::BitDesc(VK_ACCESS_SHADER_READ_BIT,                                                         "VK_ACCESS_SHADER_READ_BIT"),
2519                 tcu::Format::BitDesc(VK_ACCESS_SHADER_WRITE_BIT,                                                        "VK_ACCESS_SHADER_WRITE_BIT"),
2520                 tcu::Format::BitDesc(VK_ACCESS_COLOR_ATTACHMENT_READ_BIT,                                       "VK_ACCESS_COLOR_ATTACHMENT_READ_BIT"),
2521                 tcu::Format::BitDesc(VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT,                                      "VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT"),
2522                 tcu::Format::BitDesc(VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT,                       "VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT"),
2523                 tcu::Format::BitDesc(VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT,                      "VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT"),
2524                 tcu::Format::BitDesc(VK_ACCESS_TRANSFER_READ_BIT,                                                       "VK_ACCESS_TRANSFER_READ_BIT"),
2525                 tcu::Format::BitDesc(VK_ACCESS_TRANSFER_WRITE_BIT,                                                      "VK_ACCESS_TRANSFER_WRITE_BIT"),
2526                 tcu::Format::BitDesc(VK_ACCESS_HOST_READ_BIT,                                                           "VK_ACCESS_HOST_READ_BIT"),
2527                 tcu::Format::BitDesc(VK_ACCESS_HOST_WRITE_BIT,                                                          "VK_ACCESS_HOST_WRITE_BIT"),
2528                 tcu::Format::BitDesc(VK_ACCESS_MEMORY_READ_BIT,                                                         "VK_ACCESS_MEMORY_READ_BIT"),
2529                 tcu::Format::BitDesc(VK_ACCESS_MEMORY_WRITE_BIT,                                                        "VK_ACCESS_MEMORY_WRITE_BIT"),
2530                 tcu::Format::BitDesc(VK_ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT,                        "VK_ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT"),
2531                 tcu::Format::BitDesc(VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT,         "VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT"),
2532                 tcu::Format::BitDesc(VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT,        "VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT"),
2533                 tcu::Format::BitDesc(VK_ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT,                      "VK_ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT"),
2534                 tcu::Format::BitDesc(VK_ACCESS_COMMAND_PROCESS_READ_BIT_NVX,                            "VK_ACCESS_COMMAND_PROCESS_READ_BIT_NVX"),
2535                 tcu::Format::BitDesc(VK_ACCESS_COMMAND_PROCESS_WRITE_BIT_NVX,                           "VK_ACCESS_COMMAND_PROCESS_WRITE_BIT_NVX"),
2536                 tcu::Format::BitDesc(VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT,       "VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT"),
2537                 tcu::Format::BitDesc(VK_ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV,                          "VK_ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV"),
2538                 tcu::Format::BitDesc(VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV,                      "VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV"),
2539                 tcu::Format::BitDesc(VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV,                     "VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV"),
2540                 tcu::Format::BitDesc(VK_ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT,                       "VK_ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT"),
2541                 tcu::Format::BitDesc(VK_ACCESS_FLAG_BITS_MAX_ENUM,                                                      "VK_ACCESS_FLAG_BITS_MAX_ENUM"),
2542         };
2543         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2544 }
2545
2546 tcu::Format::Bitfield<32> getDependencyFlagsStr (VkDependencyFlags value)
2547 {
2548         static const tcu::Format::BitDesc s_desc[] =
2549         {
2550                 tcu::Format::BitDesc(VK_DEPENDENCY_BY_REGION_BIT,                       "VK_DEPENDENCY_BY_REGION_BIT"),
2551                 tcu::Format::BitDesc(VK_DEPENDENCY_DEVICE_GROUP_BIT,            "VK_DEPENDENCY_DEVICE_GROUP_BIT"),
2552                 tcu::Format::BitDesc(VK_DEPENDENCY_VIEW_LOCAL_BIT,                      "VK_DEPENDENCY_VIEW_LOCAL_BIT"),
2553                 tcu::Format::BitDesc(VK_DEPENDENCY_VIEW_LOCAL_BIT_KHR,          "VK_DEPENDENCY_VIEW_LOCAL_BIT_KHR"),
2554                 tcu::Format::BitDesc(VK_DEPENDENCY_DEVICE_GROUP_BIT_KHR,        "VK_DEPENDENCY_DEVICE_GROUP_BIT_KHR"),
2555                 tcu::Format::BitDesc(VK_DEPENDENCY_FLAG_BITS_MAX_ENUM,          "VK_DEPENDENCY_FLAG_BITS_MAX_ENUM"),
2556         };
2557         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2558 }
2559
2560 tcu::Format::Bitfield<32> getCommandPoolCreateFlagsStr (VkCommandPoolCreateFlags value)
2561 {
2562         static const tcu::Format::BitDesc s_desc[] =
2563         {
2564                 tcu::Format::BitDesc(VK_COMMAND_POOL_CREATE_TRANSIENT_BIT,                              "VK_COMMAND_POOL_CREATE_TRANSIENT_BIT"),
2565                 tcu::Format::BitDesc(VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT,   "VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT"),
2566                 tcu::Format::BitDesc(VK_COMMAND_POOL_CREATE_PROTECTED_BIT,                              "VK_COMMAND_POOL_CREATE_PROTECTED_BIT"),
2567                 tcu::Format::BitDesc(VK_COMMAND_POOL_CREATE_FLAG_BITS_MAX_ENUM,                 "VK_COMMAND_POOL_CREATE_FLAG_BITS_MAX_ENUM"),
2568         };
2569         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2570 }
2571
2572 tcu::Format::Bitfield<32> getCommandPoolResetFlagsStr (VkCommandPoolResetFlags value)
2573 {
2574         static const tcu::Format::BitDesc s_desc[] =
2575         {
2576                 tcu::Format::BitDesc(VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT,       "VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT"),
2577                 tcu::Format::BitDesc(VK_COMMAND_POOL_RESET_FLAG_BITS_MAX_ENUM,          "VK_COMMAND_POOL_RESET_FLAG_BITS_MAX_ENUM"),
2578         };
2579         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2580 }
2581
2582 tcu::Format::Bitfield<32> getCommandBufferUsageFlagsStr (VkCommandBufferUsageFlags value)
2583 {
2584         static const tcu::Format::BitDesc s_desc[] =
2585         {
2586                 tcu::Format::BitDesc(VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT,               "VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT"),
2587                 tcu::Format::BitDesc(VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT,  "VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT"),
2588                 tcu::Format::BitDesc(VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT,              "VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT"),
2589                 tcu::Format::BitDesc(VK_COMMAND_BUFFER_USAGE_FLAG_BITS_MAX_ENUM,                "VK_COMMAND_BUFFER_USAGE_FLAG_BITS_MAX_ENUM"),
2590         };
2591         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2592 }
2593
2594 tcu::Format::Bitfield<32> getQueryControlFlagsStr (VkQueryControlFlags value)
2595 {
2596         static const tcu::Format::BitDesc s_desc[] =
2597         {
2598                 tcu::Format::BitDesc(VK_QUERY_CONTROL_PRECISE_BIT,                      "VK_QUERY_CONTROL_PRECISE_BIT"),
2599                 tcu::Format::BitDesc(VK_QUERY_CONTROL_FLAG_BITS_MAX_ENUM,       "VK_QUERY_CONTROL_FLAG_BITS_MAX_ENUM"),
2600         };
2601         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2602 }
2603
2604 tcu::Format::Bitfield<32> getCommandBufferResetFlagsStr (VkCommandBufferResetFlags value)
2605 {
2606         static const tcu::Format::BitDesc s_desc[] =
2607         {
2608                 tcu::Format::BitDesc(VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT,     "VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT"),
2609                 tcu::Format::BitDesc(VK_COMMAND_BUFFER_RESET_FLAG_BITS_MAX_ENUM,        "VK_COMMAND_BUFFER_RESET_FLAG_BITS_MAX_ENUM"),
2610         };
2611         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2612 }
2613
2614 tcu::Format::Bitfield<32> getStencilFaceFlagsStr (VkStencilFaceFlags value)
2615 {
2616         static const tcu::Format::BitDesc s_desc[] =
2617         {
2618                 tcu::Format::BitDesc(VK_STENCIL_FACE_FRONT_BIT,                         "VK_STENCIL_FACE_FRONT_BIT"),
2619                 tcu::Format::BitDesc(VK_STENCIL_FACE_BACK_BIT,                          "VK_STENCIL_FACE_BACK_BIT"),
2620                 tcu::Format::BitDesc(VK_STENCIL_FACE_FRONT_AND_BACK,            "VK_STENCIL_FACE_FRONT_AND_BACK"),
2621                 tcu::Format::BitDesc(VK_STENCIL_FRONT_AND_BACK,                         "VK_STENCIL_FRONT_AND_BACK"),
2622                 tcu::Format::BitDesc(VK_STENCIL_FACE_FLAG_BITS_MAX_ENUM,        "VK_STENCIL_FACE_FLAG_BITS_MAX_ENUM"),
2623         };
2624         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2625 }
2626
2627 tcu::Format::Bitfield<32> getSubgroupFeatureFlagsStr (VkSubgroupFeatureFlags value)
2628 {
2629         static const tcu::Format::BitDesc s_desc[] =
2630         {
2631                 tcu::Format::BitDesc(VK_SUBGROUP_FEATURE_BASIC_BIT,                             "VK_SUBGROUP_FEATURE_BASIC_BIT"),
2632                 tcu::Format::BitDesc(VK_SUBGROUP_FEATURE_VOTE_BIT,                              "VK_SUBGROUP_FEATURE_VOTE_BIT"),
2633                 tcu::Format::BitDesc(VK_SUBGROUP_FEATURE_ARITHMETIC_BIT,                "VK_SUBGROUP_FEATURE_ARITHMETIC_BIT"),
2634                 tcu::Format::BitDesc(VK_SUBGROUP_FEATURE_BALLOT_BIT,                    "VK_SUBGROUP_FEATURE_BALLOT_BIT"),
2635                 tcu::Format::BitDesc(VK_SUBGROUP_FEATURE_SHUFFLE_BIT,                   "VK_SUBGROUP_FEATURE_SHUFFLE_BIT"),
2636                 tcu::Format::BitDesc(VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT,  "VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT"),
2637                 tcu::Format::BitDesc(VK_SUBGROUP_FEATURE_CLUSTERED_BIT,                 "VK_SUBGROUP_FEATURE_CLUSTERED_BIT"),
2638                 tcu::Format::BitDesc(VK_SUBGROUP_FEATURE_QUAD_BIT,                              "VK_SUBGROUP_FEATURE_QUAD_BIT"),
2639                 tcu::Format::BitDesc(VK_SUBGROUP_FEATURE_PARTITIONED_BIT_NV,    "VK_SUBGROUP_FEATURE_PARTITIONED_BIT_NV"),
2640                 tcu::Format::BitDesc(VK_SUBGROUP_FEATURE_FLAG_BITS_MAX_ENUM,    "VK_SUBGROUP_FEATURE_FLAG_BITS_MAX_ENUM"),
2641         };
2642         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2643 }
2644
2645 tcu::Format::Bitfield<32> getPeerMemoryFeatureFlagsStr (VkPeerMemoryFeatureFlags value)
2646 {
2647         static const tcu::Format::BitDesc s_desc[] =
2648         {
2649                 tcu::Format::BitDesc(VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT,                       "VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT"),
2650                 tcu::Format::BitDesc(VK_PEER_MEMORY_FEATURE_COPY_DST_BIT,                       "VK_PEER_MEMORY_FEATURE_COPY_DST_BIT"),
2651                 tcu::Format::BitDesc(VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT,            "VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT"),
2652                 tcu::Format::BitDesc(VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT,            "VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT"),
2653                 tcu::Format::BitDesc(VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT_KHR,           "VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT_KHR"),
2654                 tcu::Format::BitDesc(VK_PEER_MEMORY_FEATURE_COPY_DST_BIT_KHR,           "VK_PEER_MEMORY_FEATURE_COPY_DST_BIT_KHR"),
2655                 tcu::Format::BitDesc(VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT_KHR,        "VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT_KHR"),
2656                 tcu::Format::BitDesc(VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT_KHR,        "VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT_KHR"),
2657                 tcu::Format::BitDesc(VK_PEER_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM,         "VK_PEER_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM"),
2658         };
2659         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2660 }
2661
2662 tcu::Format::Bitfield<32> getMemoryAllocateFlagsStr (VkMemoryAllocateFlags value)
2663 {
2664         static const tcu::Format::BitDesc s_desc[] =
2665         {
2666                 tcu::Format::BitDesc(VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT,                "VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT"),
2667                 tcu::Format::BitDesc(VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHR,    "VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHR"),
2668                 tcu::Format::BitDesc(VK_MEMORY_ALLOCATE_FLAG_BITS_MAX_ENUM,             "VK_MEMORY_ALLOCATE_FLAG_BITS_MAX_ENUM"),
2669         };
2670         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2671 }
2672
2673 tcu::Format::Bitfield<32> getExternalMemoryHandleTypeFlagsStr (VkExternalMemoryHandleTypeFlags value)
2674 {
2675         static const tcu::Format::BitDesc s_desc[] =
2676         {
2677                 tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT,                                                      "VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT"),
2678                 tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT,                                           "VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT"),
2679                 tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT,                                       "VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT"),
2680                 tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT,                                          "VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT"),
2681                 tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT,                                      "VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT"),
2682                 tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT,                                                     "VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT"),
2683                 tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT,                                         "VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT"),
2684                 tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT,                                            "VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT"),
2685                 tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID,        "VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID"),
2686                 tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT,                            "VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT"),
2687                 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"),
2688                 tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR,                                          "VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR"),
2689                 tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR,                                       "VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR"),
2690                 tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR,                           "VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR"),
2691                 tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT_KHR,                                      "VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT_KHR"),
2692                 tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT_KHR,                          "VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT_KHR"),
2693                 tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT_KHR,                                         "VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT_KHR"),
2694                 tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT_KHR,                                     "VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT_KHR"),
2695                 tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_FLAG_BITS_MAX_ENUM,                                         "VK_EXTERNAL_MEMORY_HANDLE_TYPE_FLAG_BITS_MAX_ENUM"),
2696         };
2697         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2698 }
2699
2700 tcu::Format::Bitfield<32> getExternalMemoryFeatureFlagsStr (VkExternalMemoryFeatureFlags value)
2701 {
2702         static const tcu::Format::BitDesc s_desc[] =
2703         {
2704                 tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT,             "VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT"),
2705                 tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT,                 "VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT"),
2706                 tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT,                 "VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT"),
2707                 tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_KHR, "VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_KHR"),
2708                 tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_KHR,             "VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_KHR"),
2709                 tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_KHR,             "VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_KHR"),
2710                 tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM,             "VK_EXTERNAL_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM"),
2711         };
2712         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2713 }
2714
2715 tcu::Format::Bitfield<32> getExternalFenceHandleTypeFlagsStr (VkExternalFenceHandleTypeFlags value)
2716 {
2717         static const tcu::Format::BitDesc s_desc[] =
2718         {
2719                 tcu::Format::BitDesc(VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT,                               "VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT"),
2720                 tcu::Format::BitDesc(VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT,                    "VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT"),
2721                 tcu::Format::BitDesc(VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT,                "VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT"),
2722                 tcu::Format::BitDesc(VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT,                                 "VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT"),
2723                 tcu::Format::BitDesc(VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR,                   "VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR"),
2724                 tcu::Format::BitDesc(VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR,                "VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR"),
2725                 tcu::Format::BitDesc(VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR,    "VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR"),
2726                 tcu::Format::BitDesc(VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT_KHR,                             "VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT_KHR"),
2727                 tcu::Format::BitDesc(VK_EXTERNAL_FENCE_HANDLE_TYPE_FLAG_BITS_MAX_ENUM,                  "VK_EXTERNAL_FENCE_HANDLE_TYPE_FLAG_BITS_MAX_ENUM"),
2728         };
2729         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2730 }
2731
2732 tcu::Format::Bitfield<32> getExternalFenceFeatureFlagsStr (VkExternalFenceFeatureFlags value)
2733 {
2734         static const tcu::Format::BitDesc s_desc[] =
2735         {
2736                 tcu::Format::BitDesc(VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT,          "VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT"),
2737                 tcu::Format::BitDesc(VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT,          "VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT"),
2738                 tcu::Format::BitDesc(VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT_KHR,      "VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT_KHR"),
2739                 tcu::Format::BitDesc(VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT_KHR,      "VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT_KHR"),
2740                 tcu::Format::BitDesc(VK_EXTERNAL_FENCE_FEATURE_FLAG_BITS_MAX_ENUM,      "VK_EXTERNAL_FENCE_FEATURE_FLAG_BITS_MAX_ENUM"),
2741         };
2742         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2743 }
2744
2745 tcu::Format::Bitfield<32> getFenceImportFlagsStr (VkFenceImportFlags value)
2746 {
2747         static const tcu::Format::BitDesc s_desc[] =
2748         {
2749                 tcu::Format::BitDesc(VK_FENCE_IMPORT_TEMPORARY_BIT,                     "VK_FENCE_IMPORT_TEMPORARY_BIT"),
2750                 tcu::Format::BitDesc(VK_FENCE_IMPORT_TEMPORARY_BIT_KHR,         "VK_FENCE_IMPORT_TEMPORARY_BIT_KHR"),
2751                 tcu::Format::BitDesc(VK_FENCE_IMPORT_FLAG_BITS_MAX_ENUM,        "VK_FENCE_IMPORT_FLAG_BITS_MAX_ENUM"),
2752         };
2753         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2754 }
2755
2756 tcu::Format::Bitfield<32> getSemaphoreImportFlagsStr (VkSemaphoreImportFlags value)
2757 {
2758         static const tcu::Format::BitDesc s_desc[] =
2759         {
2760                 tcu::Format::BitDesc(VK_SEMAPHORE_IMPORT_TEMPORARY_BIT,                 "VK_SEMAPHORE_IMPORT_TEMPORARY_BIT"),
2761                 tcu::Format::BitDesc(VK_SEMAPHORE_IMPORT_TEMPORARY_BIT_KHR,             "VK_SEMAPHORE_IMPORT_TEMPORARY_BIT_KHR"),
2762                 tcu::Format::BitDesc(VK_SEMAPHORE_IMPORT_FLAG_BITS_MAX_ENUM,    "VK_SEMAPHORE_IMPORT_FLAG_BITS_MAX_ENUM"),
2763         };
2764         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2765 }
2766
2767 tcu::Format::Bitfield<32> getExternalSemaphoreHandleTypeFlagsStr (VkExternalSemaphoreHandleTypeFlags value)
2768 {
2769         static const tcu::Format::BitDesc s_desc[] =
2770         {
2771                 tcu::Format::BitDesc(VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT,                           "VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT"),
2772                 tcu::Format::BitDesc(VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT,                        "VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT"),
2773                 tcu::Format::BitDesc(VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT,            "VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT"),
2774                 tcu::Format::BitDesc(VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT,                         "VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT"),
2775                 tcu::Format::BitDesc(VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT,                                     "VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT"),
2776                 tcu::Format::BitDesc(VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR,                       "VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR"),
2777                 tcu::Format::BitDesc(VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR,            "VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR"),
2778                 tcu::Format::BitDesc(VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR,        "VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR"),
2779                 tcu::Format::BitDesc(VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT_KHR,                     "VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT_KHR"),
2780                 tcu::Format::BitDesc(VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT_KHR,                         "VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT_KHR"),
2781                 tcu::Format::BitDesc(VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_FLAG_BITS_MAX_ENUM,                      "VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_FLAG_BITS_MAX_ENUM"),
2782         };
2783         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2784 }
2785
2786 tcu::Format::Bitfield<32> getExternalSemaphoreFeatureFlagsStr (VkExternalSemaphoreFeatureFlags value)
2787 {
2788         static const tcu::Format::BitDesc s_desc[] =
2789         {
2790                 tcu::Format::BitDesc(VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT,              "VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT"),
2791                 tcu::Format::BitDesc(VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT,              "VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT"),
2792                 tcu::Format::BitDesc(VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT_KHR,  "VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT_KHR"),
2793                 tcu::Format::BitDesc(VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT_KHR,  "VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT_KHR"),
2794                 tcu::Format::BitDesc(VK_EXTERNAL_SEMAPHORE_FEATURE_FLAG_BITS_MAX_ENUM,  "VK_EXTERNAL_SEMAPHORE_FEATURE_FLAG_BITS_MAX_ENUM"),
2795         };
2796         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2797 }
2798
2799 tcu::Format::Bitfield<32> getSurfaceTransformFlagsKHRStr (VkSurfaceTransformFlagsKHR value)
2800 {
2801         static const tcu::Format::BitDesc s_desc[] =
2802         {
2803                 tcu::Format::BitDesc(VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR,                                             "VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR"),
2804                 tcu::Format::BitDesc(VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR,                                    "VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR"),
2805                 tcu::Format::BitDesc(VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR,                                   "VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR"),
2806                 tcu::Format::BitDesc(VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR,                                   "VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR"),
2807                 tcu::Format::BitDesc(VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR,                    "VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR"),
2808                 tcu::Format::BitDesc(VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR,  "VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR"),
2809                 tcu::Format::BitDesc(VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR, "VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR"),
2810                 tcu::Format::BitDesc(VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR, "VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR"),
2811                 tcu::Format::BitDesc(VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR,                                              "VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR"),
2812                 tcu::Format::BitDesc(VK_SURFACE_TRANSFORM_FLAG_BITS_MAX_ENUM_KHR,                               "VK_SURFACE_TRANSFORM_FLAG_BITS_MAX_ENUM_KHR"),
2813         };
2814         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2815 }
2816
2817 tcu::Format::Bitfield<32> getCompositeAlphaFlagsKHRStr (VkCompositeAlphaFlagsKHR value)
2818 {
2819         static const tcu::Format::BitDesc s_desc[] =
2820         {
2821                 tcu::Format::BitDesc(VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR,                         "VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR"),
2822                 tcu::Format::BitDesc(VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR,         "VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR"),
2823                 tcu::Format::BitDesc(VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR,        "VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR"),
2824                 tcu::Format::BitDesc(VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR,                        "VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR"),
2825                 tcu::Format::BitDesc(VK_COMPOSITE_ALPHA_FLAG_BITS_MAX_ENUM_KHR,         "VK_COMPOSITE_ALPHA_FLAG_BITS_MAX_ENUM_KHR"),
2826         };
2827         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2828 }
2829
2830 tcu::Format::Bitfield<32> getSwapchainCreateFlagsKHRStr (VkSwapchainCreateFlagsKHR value)
2831 {
2832         static const tcu::Format::BitDesc s_desc[] =
2833         {
2834                 tcu::Format::BitDesc(VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR,   "VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR"),
2835                 tcu::Format::BitDesc(VK_SWAPCHAIN_CREATE_PROTECTED_BIT_KHR,                                             "VK_SWAPCHAIN_CREATE_PROTECTED_BIT_KHR"),
2836                 tcu::Format::BitDesc(VK_SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR,                                "VK_SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR"),
2837                 tcu::Format::BitDesc(VK_SWAPCHAIN_CREATE_FLAG_BITS_MAX_ENUM_KHR,                                "VK_SWAPCHAIN_CREATE_FLAG_BITS_MAX_ENUM_KHR"),
2838         };
2839         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2840 }
2841
2842 tcu::Format::Bitfield<32> getDeviceGroupPresentModeFlagsKHRStr (VkDeviceGroupPresentModeFlagsKHR value)
2843 {
2844         static const tcu::Format::BitDesc s_desc[] =
2845         {
2846                 tcu::Format::BitDesc(VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR,                                "VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR"),
2847                 tcu::Format::BitDesc(VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR,                               "VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR"),
2848                 tcu::Format::BitDesc(VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR,                                  "VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR"),
2849                 tcu::Format::BitDesc(VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR,   "VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR"),
2850                 tcu::Format::BitDesc(VK_DEVICE_GROUP_PRESENT_MODE_FLAG_BITS_MAX_ENUM_KHR,               "VK_DEVICE_GROUP_PRESENT_MODE_FLAG_BITS_MAX_ENUM_KHR"),
2851         };
2852         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2853 }
2854
2855 tcu::Format::Bitfield<32> getDisplayPlaneAlphaFlagsKHRStr (VkDisplayPlaneAlphaFlagsKHR value)
2856 {
2857         static const tcu::Format::BitDesc s_desc[] =
2858         {
2859                 tcu::Format::BitDesc(VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR,                                             "VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR"),
2860                 tcu::Format::BitDesc(VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR,                                             "VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR"),
2861                 tcu::Format::BitDesc(VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR,                                  "VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR"),
2862                 tcu::Format::BitDesc(VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR,    "VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR"),
2863                 tcu::Format::BitDesc(VK_DISPLAY_PLANE_ALPHA_FLAG_BITS_MAX_ENUM_KHR,                             "VK_DISPLAY_PLANE_ALPHA_FLAG_BITS_MAX_ENUM_KHR"),
2864         };
2865         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2866 }
2867
2868 tcu::Format::Bitfield<32> getResolveModeFlagsKHRStr (VkResolveModeFlagsKHR value)
2869 {
2870         static const tcu::Format::BitDesc s_desc[] =
2871         {
2872                 tcu::Format::BitDesc(VK_RESOLVE_MODE_NONE_KHR,                                  "VK_RESOLVE_MODE_NONE_KHR"),
2873                 tcu::Format::BitDesc(VK_RESOLVE_MODE_SAMPLE_ZERO_BIT_KHR,               "VK_RESOLVE_MODE_SAMPLE_ZERO_BIT_KHR"),
2874                 tcu::Format::BitDesc(VK_RESOLVE_MODE_AVERAGE_BIT_KHR,                   "VK_RESOLVE_MODE_AVERAGE_BIT_KHR"),
2875                 tcu::Format::BitDesc(VK_RESOLVE_MODE_MIN_BIT_KHR,                               "VK_RESOLVE_MODE_MIN_BIT_KHR"),
2876                 tcu::Format::BitDesc(VK_RESOLVE_MODE_MAX_BIT_KHR,                               "VK_RESOLVE_MODE_MAX_BIT_KHR"),
2877                 tcu::Format::BitDesc(VK_RESOLVE_MODE_FLAG_BITS_MAX_ENUM_KHR,    "VK_RESOLVE_MODE_FLAG_BITS_MAX_ENUM_KHR"),
2878         };
2879         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2880 }
2881
2882 tcu::Format::Bitfield<32> getSemaphoreWaitFlagsKHRStr (VkSemaphoreWaitFlagsKHR value)
2883 {
2884         static const tcu::Format::BitDesc s_desc[] =
2885         {
2886                 tcu::Format::BitDesc(VK_SEMAPHORE_WAIT_ANY_BIT_KHR,                             "VK_SEMAPHORE_WAIT_ANY_BIT_KHR"),
2887                 tcu::Format::BitDesc(VK_SEMAPHORE_WAIT_FLAG_BITS_MAX_ENUM_KHR,  "VK_SEMAPHORE_WAIT_FLAG_BITS_MAX_ENUM_KHR"),
2888         };
2889         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2890 }
2891
2892 tcu::Format::Bitfield<32> getDebugReportFlagsEXTStr (VkDebugReportFlagsEXT value)
2893 {
2894         static const tcu::Format::BitDesc s_desc[] =
2895         {
2896                 tcu::Format::BitDesc(VK_DEBUG_REPORT_INFORMATION_BIT_EXT,                       "VK_DEBUG_REPORT_INFORMATION_BIT_EXT"),
2897                 tcu::Format::BitDesc(VK_DEBUG_REPORT_WARNING_BIT_EXT,                           "VK_DEBUG_REPORT_WARNING_BIT_EXT"),
2898                 tcu::Format::BitDesc(VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT,       "VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT"),
2899                 tcu::Format::BitDesc(VK_DEBUG_REPORT_ERROR_BIT_EXT,                                     "VK_DEBUG_REPORT_ERROR_BIT_EXT"),
2900                 tcu::Format::BitDesc(VK_DEBUG_REPORT_DEBUG_BIT_EXT,                                     "VK_DEBUG_REPORT_DEBUG_BIT_EXT"),
2901                 tcu::Format::BitDesc(VK_DEBUG_REPORT_FLAG_BITS_MAX_ENUM_EXT,            "VK_DEBUG_REPORT_FLAG_BITS_MAX_ENUM_EXT"),
2902         };
2903         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2904 }
2905
2906 tcu::Format::Bitfield<32> getExternalMemoryHandleTypeFlagsNVStr (VkExternalMemoryHandleTypeFlagsNV value)
2907 {
2908         static const tcu::Format::BitDesc s_desc[] =
2909         {
2910                 tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV,                "VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV"),
2911                 tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV,    "VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV"),
2912                 tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV,                 "VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV"),
2913                 tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV,             "VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV"),
2914                 tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_FLAG_BITS_MAX_ENUM_NV,              "VK_EXTERNAL_MEMORY_HANDLE_TYPE_FLAG_BITS_MAX_ENUM_NV"),
2915         };
2916         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2917 }
2918
2919 tcu::Format::Bitfield<32> getExternalMemoryFeatureFlagsNVStr (VkExternalMemoryFeatureFlagsNV value)
2920 {
2921         static const tcu::Format::BitDesc s_desc[] =
2922         {
2923                 tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV,  "VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV"),
2924                 tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV,              "VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV"),
2925                 tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV,              "VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV"),
2926                 tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM_NV,  "VK_EXTERNAL_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM_NV"),
2927         };
2928         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2929 }
2930
2931 tcu::Format::Bitfield<32> getConditionalRenderingFlagsEXTStr (VkConditionalRenderingFlagsEXT value)
2932 {
2933         static const tcu::Format::BitDesc s_desc[] =
2934         {
2935                 tcu::Format::BitDesc(VK_CONDITIONAL_RENDERING_INVERTED_BIT_EXT,                 "VK_CONDITIONAL_RENDERING_INVERTED_BIT_EXT"),
2936                 tcu::Format::BitDesc(VK_CONDITIONAL_RENDERING_FLAG_BITS_MAX_ENUM_EXT,   "VK_CONDITIONAL_RENDERING_FLAG_BITS_MAX_ENUM_EXT"),
2937         };
2938         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2939 }
2940
2941 tcu::Format::Bitfield<32> getIndirectCommandsLayoutUsageFlagsNVXStr (VkIndirectCommandsLayoutUsageFlagsNVX value)
2942 {
2943         static const tcu::Format::BitDesc s_desc[] =
2944         {
2945                 tcu::Format::BitDesc(VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NVX,     "VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NVX"),
2946                 tcu::Format::BitDesc(VK_INDIRECT_COMMANDS_LAYOUT_USAGE_SPARSE_SEQUENCES_BIT_NVX,        "VK_INDIRECT_COMMANDS_LAYOUT_USAGE_SPARSE_SEQUENCES_BIT_NVX"),
2947                 tcu::Format::BitDesc(VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EMPTY_EXECUTIONS_BIT_NVX,        "VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EMPTY_EXECUTIONS_BIT_NVX"),
2948                 tcu::Format::BitDesc(VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NVX,       "VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NVX"),
2949                 tcu::Format::BitDesc(VK_INDIRECT_COMMANDS_LAYOUT_USAGE_FLAG_BITS_MAX_ENUM_NVX,          "VK_INDIRECT_COMMANDS_LAYOUT_USAGE_FLAG_BITS_MAX_ENUM_NVX"),
2950         };
2951         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2952 }
2953
2954 tcu::Format::Bitfield<32> getObjectEntryUsageFlagsNVXStr (VkObjectEntryUsageFlagsNVX value)
2955 {
2956         static const tcu::Format::BitDesc s_desc[] =
2957         {
2958                 tcu::Format::BitDesc(VK_OBJECT_ENTRY_USAGE_GRAPHICS_BIT_NVX,            "VK_OBJECT_ENTRY_USAGE_GRAPHICS_BIT_NVX"),
2959                 tcu::Format::BitDesc(VK_OBJECT_ENTRY_USAGE_COMPUTE_BIT_NVX,                     "VK_OBJECT_ENTRY_USAGE_COMPUTE_BIT_NVX"),
2960                 tcu::Format::BitDesc(VK_OBJECT_ENTRY_USAGE_FLAG_BITS_MAX_ENUM_NVX,      "VK_OBJECT_ENTRY_USAGE_FLAG_BITS_MAX_ENUM_NVX"),
2961         };
2962         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2963 }
2964
2965 tcu::Format::Bitfield<32> getSurfaceCounterFlagsEXTStr (VkSurfaceCounterFlagsEXT value)
2966 {
2967         static const tcu::Format::BitDesc s_desc[] =
2968         {
2969                 tcu::Format::BitDesc(VK_SURFACE_COUNTER_VBLANK_EXT,                             "VK_SURFACE_COUNTER_VBLANK_EXT"),
2970                 tcu::Format::BitDesc(VK_SURFACE_COUNTER_FLAG_BITS_MAX_ENUM_EXT, "VK_SURFACE_COUNTER_FLAG_BITS_MAX_ENUM_EXT"),
2971         };
2972         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2973 }
2974
2975 tcu::Format::Bitfield<32> getDebugUtilsMessageSeverityFlagsEXTStr (VkDebugUtilsMessageSeverityFlagsEXT value)
2976 {
2977         static const tcu::Format::BitDesc s_desc[] =
2978         {
2979                 tcu::Format::BitDesc(VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT,                   "VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT"),
2980                 tcu::Format::BitDesc(VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT,                              "VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT"),
2981                 tcu::Format::BitDesc(VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT,                   "VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT"),
2982                 tcu::Format::BitDesc(VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT,                             "VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT"),
2983                 tcu::Format::BitDesc(VK_DEBUG_UTILS_MESSAGE_SEVERITY_FLAG_BITS_MAX_ENUM_EXT,    "VK_DEBUG_UTILS_MESSAGE_SEVERITY_FLAG_BITS_MAX_ENUM_EXT"),
2984         };
2985         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2986 }
2987
2988 tcu::Format::Bitfield<32> getDebugUtilsMessageTypeFlagsEXTStr (VkDebugUtilsMessageTypeFlagsEXT value)
2989 {
2990         static const tcu::Format::BitDesc s_desc[] =
2991         {
2992                 tcu::Format::BitDesc(VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT,                       "VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT"),
2993                 tcu::Format::BitDesc(VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT,            "VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT"),
2994                 tcu::Format::BitDesc(VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT,           "VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT"),
2995                 tcu::Format::BitDesc(VK_DEBUG_UTILS_MESSAGE_TYPE_FLAG_BITS_MAX_ENUM_EXT,        "VK_DEBUG_UTILS_MESSAGE_TYPE_FLAG_BITS_MAX_ENUM_EXT"),
2996         };
2997         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2998 }
2999
3000 tcu::Format::Bitfield<32> getDescriptorBindingFlagsEXTStr (VkDescriptorBindingFlagsEXT value)
3001 {
3002         static const tcu::Format::BitDesc s_desc[] =
3003         {
3004                 tcu::Format::BitDesc(VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT,                   "VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT"),
3005                 tcu::Format::BitDesc(VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT, "VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT"),
3006                 tcu::Format::BitDesc(VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT,                             "VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT"),
3007                 tcu::Format::BitDesc(VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT,   "VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT"),
3008                 tcu::Format::BitDesc(VK_DESCRIPTOR_BINDING_FLAG_BITS_MAX_ENUM_EXT,                              "VK_DESCRIPTOR_BINDING_FLAG_BITS_MAX_ENUM_EXT"),
3009         };
3010         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
3011 }
3012
3013 tcu::Format::Bitfield<32> getGeometryFlagsNVStr (VkGeometryFlagsNV value)
3014 {
3015         static const tcu::Format::BitDesc s_desc[] =
3016         {
3017                 tcu::Format::BitDesc(VK_GEOMETRY_OPAQUE_BIT_NV,                                                         "VK_GEOMETRY_OPAQUE_BIT_NV"),
3018                 tcu::Format::BitDesc(VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_NV,        "VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_NV"),
3019                 tcu::Format::BitDesc(VK_GEOMETRY_FLAG_BITS_MAX_ENUM_NV,                                         "VK_GEOMETRY_FLAG_BITS_MAX_ENUM_NV"),
3020         };
3021         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
3022 }
3023
3024 tcu::Format::Bitfield<32> getGeometryInstanceFlagsNVStr (VkGeometryInstanceFlagsNV value)
3025 {
3026         static const tcu::Format::BitDesc s_desc[] =
3027         {
3028                 tcu::Format::BitDesc(VK_GEOMETRY_INSTANCE_TRIANGLE_CULL_DISABLE_BIT_NV,                         "VK_GEOMETRY_INSTANCE_TRIANGLE_CULL_DISABLE_BIT_NV"),
3029                 tcu::Format::BitDesc(VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_NV,       "VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_NV"),
3030                 tcu::Format::BitDesc(VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_NV,                                          "VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_NV"),
3031                 tcu::Format::BitDesc(VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_NV,                                       "VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_NV"),
3032                 tcu::Format::BitDesc(VK_GEOMETRY_INSTANCE_FLAG_BITS_MAX_ENUM_NV,                                        "VK_GEOMETRY_INSTANCE_FLAG_BITS_MAX_ENUM_NV"),
3033         };
3034         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
3035 }
3036
3037 tcu::Format::Bitfield<32> getBuildAccelerationStructureFlagsNVStr (VkBuildAccelerationStructureFlagsNV value)
3038 {
3039         static const tcu::Format::BitDesc s_desc[] =
3040         {
3041                 tcu::Format::BitDesc(VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV,               "VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV"),
3042                 tcu::Format::BitDesc(VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV,   "VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV"),
3043                 tcu::Format::BitDesc(VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV,  "VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV"),
3044                 tcu::Format::BitDesc(VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV,  "VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV"),
3045                 tcu::Format::BitDesc(VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_NV,                 "VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_NV"),
3046                 tcu::Format::BitDesc(VK_BUILD_ACCELERATION_STRUCTURE_FLAG_BITS_MAX_ENUM_NV,             "VK_BUILD_ACCELERATION_STRUCTURE_FLAG_BITS_MAX_ENUM_NV"),
3047         };
3048         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
3049 }
3050
3051 tcu::Format::Bitfield<32> getPipelineCompilerControlFlagsAMDStr (VkPipelineCompilerControlFlagsAMD value)
3052 {
3053         static const tcu::Format::BitDesc s_desc[] =
3054         {
3055                 tcu::Format::BitDesc(VK_PIPELINE_COMPILER_CONTROL_FLAG_BITS_MAX_ENUM_AMD,       "VK_PIPELINE_COMPILER_CONTROL_FLAG_BITS_MAX_ENUM_AMD"),
3056         };
3057         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
3058 }
3059
3060 tcu::Format::Bitfield<32> getPipelineCreationFeedbackFlagsEXTStr (VkPipelineCreationFeedbackFlagsEXT value)
3061 {
3062         static const tcu::Format::BitDesc s_desc[] =
3063         {
3064                 tcu::Format::BitDesc(VK_PIPELINE_CREATION_FEEDBACK_VALID_BIT_EXT,                                                       "VK_PIPELINE_CREATION_FEEDBACK_VALID_BIT_EXT"),
3065                 tcu::Format::BitDesc(VK_PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT_EXT,      "VK_PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT_EXT"),
3066                 tcu::Format::BitDesc(VK_PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT_EXT,          "VK_PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT_EXT"),
3067                 tcu::Format::BitDesc(VK_PIPELINE_CREATION_FEEDBACK_FLAG_BITS_MAX_ENUM_EXT,                                      "VK_PIPELINE_CREATION_FEEDBACK_FLAG_BITS_MAX_ENUM_EXT"),
3068         };
3069         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
3070 }
3071
3072 tcu::Format::Bitfield<32> getShaderCorePropertiesFlagsAMDStr (VkShaderCorePropertiesFlagsAMD value)
3073 {
3074         static const tcu::Format::BitDesc s_desc[] =
3075         {
3076                 tcu::Format::BitDesc(VK_SHADER_CORE_PROPERTIES_FLAG_BITS_MAX_ENUM_AMD,  "VK_SHADER_CORE_PROPERTIES_FLAG_BITS_MAX_ENUM_AMD"),
3077         };
3078         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
3079 }
3080
3081 tcu::Format::Bitfield<32> getInstanceCreateFlagsStr (VkInstanceCreateFlags value)
3082 {
3083         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3084 }
3085
3086 tcu::Format::Bitfield<32> getDeviceCreateFlagsStr (VkDeviceCreateFlags value)
3087 {
3088         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3089 }
3090
3091 tcu::Format::Bitfield<32> getMemoryMapFlagsStr (VkMemoryMapFlags value)
3092 {
3093         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3094 }
3095
3096 tcu::Format::Bitfield<32> getSemaphoreCreateFlagsStr (VkSemaphoreCreateFlags value)
3097 {
3098         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3099 }
3100
3101 tcu::Format::Bitfield<32> getEventCreateFlagsStr (VkEventCreateFlags value)
3102 {
3103         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3104 }
3105
3106 tcu::Format::Bitfield<32> getQueryPoolCreateFlagsStr (VkQueryPoolCreateFlags value)
3107 {
3108         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3109 }
3110
3111 tcu::Format::Bitfield<32> getBufferViewCreateFlagsStr (VkBufferViewCreateFlags value)
3112 {
3113         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3114 }
3115
3116 tcu::Format::Bitfield<32> getPipelineCacheCreateFlagsStr (VkPipelineCacheCreateFlags value)
3117 {
3118         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3119 }
3120
3121 tcu::Format::Bitfield<32> getPipelineVertexInputStateCreateFlagsStr (VkPipelineVertexInputStateCreateFlags value)
3122 {
3123         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3124 }
3125
3126 tcu::Format::Bitfield<32> getPipelineInputAssemblyStateCreateFlagsStr (VkPipelineInputAssemblyStateCreateFlags value)
3127 {
3128         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3129 }
3130
3131 tcu::Format::Bitfield<32> getPipelineTessellationStateCreateFlagsStr (VkPipelineTessellationStateCreateFlags value)
3132 {
3133         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3134 }
3135
3136 tcu::Format::Bitfield<32> getPipelineViewportStateCreateFlagsStr (VkPipelineViewportStateCreateFlags value)
3137 {
3138         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3139 }
3140
3141 tcu::Format::Bitfield<32> getPipelineRasterizationStateCreateFlagsStr (VkPipelineRasterizationStateCreateFlags value)
3142 {
3143         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3144 }
3145
3146 tcu::Format::Bitfield<32> getPipelineMultisampleStateCreateFlagsStr (VkPipelineMultisampleStateCreateFlags value)
3147 {
3148         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3149 }
3150
3151 tcu::Format::Bitfield<32> getPipelineDepthStencilStateCreateFlagsStr (VkPipelineDepthStencilStateCreateFlags value)
3152 {
3153         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3154 }
3155
3156 tcu::Format::Bitfield<32> getPipelineColorBlendStateCreateFlagsStr (VkPipelineColorBlendStateCreateFlags value)
3157 {
3158         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3159 }
3160
3161 tcu::Format::Bitfield<32> getPipelineDynamicStateCreateFlagsStr (VkPipelineDynamicStateCreateFlags value)
3162 {
3163         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3164 }
3165
3166 tcu::Format::Bitfield<32> getPipelineLayoutCreateFlagsStr (VkPipelineLayoutCreateFlags value)
3167 {
3168         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3169 }
3170
3171 tcu::Format::Bitfield<32> getDescriptorPoolResetFlagsStr (VkDescriptorPoolResetFlags value)
3172 {
3173         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3174 }
3175
3176 tcu::Format::Bitfield<32> getCommandPoolTrimFlagsStr (VkCommandPoolTrimFlags value)
3177 {
3178         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3179 }
3180
3181 tcu::Format::Bitfield<32> getDescriptorUpdateTemplateCreateFlagsStr (VkDescriptorUpdateTemplateCreateFlags value)
3182 {
3183         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3184 }
3185
3186 tcu::Format::Bitfield<32> getDisplayModeCreateFlagsKHRStr (VkDisplayModeCreateFlagsKHR value)
3187 {
3188         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3189 }
3190
3191 tcu::Format::Bitfield<32> getDisplaySurfaceCreateFlagsKHRStr (VkDisplaySurfaceCreateFlagsKHR value)
3192 {
3193         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3194 }
3195
3196 tcu::Format::Bitfield<32> getPipelineRasterizationStateStreamCreateFlagsEXTStr (VkPipelineRasterizationStateStreamCreateFlagsEXT value)
3197 {
3198         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3199 }
3200
3201 tcu::Format::Bitfield<32> getPipelineViewportSwizzleStateCreateFlagsNVStr (VkPipelineViewportSwizzleStateCreateFlagsNV value)
3202 {
3203         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3204 }
3205
3206 tcu::Format::Bitfield<32> getPipelineDiscardRectangleStateCreateFlagsEXTStr (VkPipelineDiscardRectangleStateCreateFlagsEXT value)
3207 {
3208         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3209 }
3210
3211 tcu::Format::Bitfield<32> getPipelineRasterizationConservativeStateCreateFlagsEXTStr (VkPipelineRasterizationConservativeStateCreateFlagsEXT value)
3212 {
3213         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3214 }
3215
3216 tcu::Format::Bitfield<32> getPipelineRasterizationDepthClipStateCreateFlagsEXTStr (VkPipelineRasterizationDepthClipStateCreateFlagsEXT value)
3217 {
3218         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3219 }
3220
3221 tcu::Format::Bitfield<32> getDebugUtilsMessengerCallbackDataFlagsEXTStr (VkDebugUtilsMessengerCallbackDataFlagsEXT value)
3222 {
3223         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3224 }
3225
3226 tcu::Format::Bitfield<32> getDebugUtilsMessengerCreateFlagsEXTStr (VkDebugUtilsMessengerCreateFlagsEXT value)
3227 {
3228         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3229 }
3230
3231 tcu::Format::Bitfield<32> getPipelineCoverageToColorStateCreateFlagsNVStr (VkPipelineCoverageToColorStateCreateFlagsNV value)
3232 {
3233         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3234 }
3235
3236 tcu::Format::Bitfield<32> getPipelineCoverageModulationStateCreateFlagsNVStr (VkPipelineCoverageModulationStateCreateFlagsNV value)
3237 {
3238         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3239 }
3240
3241 tcu::Format::Bitfield<32> getValidationCacheCreateFlagsEXTStr (VkValidationCacheCreateFlagsEXT value)
3242 {
3243         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3244 }
3245
3246 tcu::Format::Bitfield<32> getPipelineCoverageReductionStateCreateFlagsNVStr (VkPipelineCoverageReductionStateCreateFlagsNV value)
3247 {
3248         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3249 }
3250
3251 tcu::Format::Bitfield<32> getHeadlessSurfaceCreateFlagsEXTStr (VkHeadlessSurfaceCreateFlagsEXT value)
3252 {
3253         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3254 }
3255
3256 tcu::Format::Bitfield<32> getAndroidSurfaceCreateFlagsKHRStr (VkAndroidSurfaceCreateFlagsKHR value)
3257 {
3258         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3259 }
3260
3261 tcu::Format::Bitfield<32> getImagePipeSurfaceCreateFlagsFUCHSIAStr (VkImagePipeSurfaceCreateFlagsFUCHSIA value)
3262 {
3263         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3264 }
3265
3266 tcu::Format::Bitfield<32> getStreamDescriptorSurfaceCreateFlagsGGPStr (VkStreamDescriptorSurfaceCreateFlagsGGP value)
3267 {
3268         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3269 }
3270
3271 tcu::Format::Bitfield<32> getIOSSurfaceCreateFlagsMVKStr (VkIOSSurfaceCreateFlagsMVK value)
3272 {
3273         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3274 }
3275
3276 tcu::Format::Bitfield<32> getMacOSSurfaceCreateFlagsMVKStr (VkMacOSSurfaceCreateFlagsMVK value)
3277 {
3278         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3279 }
3280
3281 tcu::Format::Bitfield<32> getMetalSurfaceCreateFlagsEXTStr (VkMetalSurfaceCreateFlagsEXT value)
3282 {
3283         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3284 }
3285
3286 tcu::Format::Bitfield<32> getViSurfaceCreateFlagsNNStr (VkViSurfaceCreateFlagsNN value)
3287 {
3288         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3289 }
3290
3291 tcu::Format::Bitfield<32> getWaylandSurfaceCreateFlagsKHRStr (VkWaylandSurfaceCreateFlagsKHR value)
3292 {
3293         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3294 }
3295
3296 tcu::Format::Bitfield<32> getWin32SurfaceCreateFlagsKHRStr (VkWin32SurfaceCreateFlagsKHR value)
3297 {
3298         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3299 }
3300
3301 tcu::Format::Bitfield<32> getXcbSurfaceCreateFlagsKHRStr (VkXcbSurfaceCreateFlagsKHR value)
3302 {
3303         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3304 }
3305
3306 tcu::Format::Bitfield<32> getXlibSurfaceCreateFlagsKHRStr (VkXlibSurfaceCreateFlagsKHR value)
3307 {
3308         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3309 }
3310
3311 std::ostream& operator<< (std::ostream& s, const VkApplicationInfo& value)
3312 {
3313         s << "VkApplicationInfo = {\n";
3314         s << "\tsType = " << value.sType << '\n';
3315         s << "\tpNext = " << value.pNext << '\n';
3316         s << "\tpApplicationName = " << getCharPtrStr(value.pApplicationName) << '\n';
3317         s << "\tapplicationVersion = " << value.applicationVersion << '\n';
3318         s << "\tpEngineName = " << getCharPtrStr(value.pEngineName) << '\n';
3319         s << "\tengineVersion = " << value.engineVersion << '\n';
3320         s << "\tapiVersion = " << value.apiVersion << '\n';
3321         s << '}';
3322         return s;
3323 }
3324
3325 std::ostream& operator<< (std::ostream& s, const VkInstanceCreateInfo& value)
3326 {
3327         s << "VkInstanceCreateInfo = {\n";
3328         s << "\tsType = " << value.sType << '\n';
3329         s << "\tpNext = " << value.pNext << '\n';
3330         s << "\tflags = " << getInstanceCreateFlagsStr(value.flags) << '\n';
3331         s << "\tpApplicationInfo = " << value.pApplicationInfo << '\n';
3332         s << "\tenabledLayerCount = " << value.enabledLayerCount << '\n';
3333         s << "\tppEnabledLayerNames = " << value.ppEnabledLayerNames << '\n';
3334         s << "\tenabledExtensionCount = " << value.enabledExtensionCount << '\n';
3335         s << "\tppEnabledExtensionNames = " << value.ppEnabledExtensionNames << '\n';
3336         s << '}';
3337         return s;
3338 }
3339
3340 std::ostream& operator<< (std::ostream& s, const VkAllocationCallbacks& value)
3341 {
3342         s << "VkAllocationCallbacks = {\n";
3343         s << "\tpUserData = " << value.pUserData << '\n';
3344         s << "\tpfnAllocation = " << value.pfnAllocation << '\n';
3345         s << "\tpfnReallocation = " << value.pfnReallocation << '\n';
3346         s << "\tpfnFree = " << value.pfnFree << '\n';
3347         s << "\tpfnInternalAllocation = " << value.pfnInternalAllocation << '\n';
3348         s << "\tpfnInternalFree = " << value.pfnInternalFree << '\n';
3349         s << '}';
3350         return s;
3351 }
3352
3353 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceFeatures& value)
3354 {
3355         s << "VkPhysicalDeviceFeatures = {\n";
3356         s << "\trobustBufferAccess = " << value.robustBufferAccess << '\n';
3357         s << "\tfullDrawIndexUint32 = " << value.fullDrawIndexUint32 << '\n';
3358         s << "\timageCubeArray = " << value.imageCubeArray << '\n';
3359         s << "\tindependentBlend = " << value.independentBlend << '\n';
3360         s << "\tgeometryShader = " << value.geometryShader << '\n';
3361         s << "\ttessellationShader = " << value.tessellationShader << '\n';
3362         s << "\tsampleRateShading = " << value.sampleRateShading << '\n';
3363         s << "\tdualSrcBlend = " << value.dualSrcBlend << '\n';
3364         s << "\tlogicOp = " << value.logicOp << '\n';
3365         s << "\tmultiDrawIndirect = " << value.multiDrawIndirect << '\n';
3366         s << "\tdrawIndirectFirstInstance = " << value.drawIndirectFirstInstance << '\n';
3367         s << "\tdepthClamp = " << value.depthClamp << '\n';
3368         s << "\tdepthBiasClamp = " << value.depthBiasClamp << '\n';
3369         s << "\tfillModeNonSolid = " << value.fillModeNonSolid << '\n';
3370         s << "\tdepthBounds = " << value.depthBounds << '\n';
3371         s << "\twideLines = " << value.wideLines << '\n';
3372         s << "\tlargePoints = " << value.largePoints << '\n';
3373         s << "\talphaToOne = " << value.alphaToOne << '\n';
3374         s << "\tmultiViewport = " << value.multiViewport << '\n';
3375         s << "\tsamplerAnisotropy = " << value.samplerAnisotropy << '\n';
3376         s << "\ttextureCompressionETC2 = " << value.textureCompressionETC2 << '\n';
3377         s << "\ttextureCompressionASTC_LDR = " << value.textureCompressionASTC_LDR << '\n';
3378         s << "\ttextureCompressionBC = " << value.textureCompressionBC << '\n';
3379         s << "\tocclusionQueryPrecise = " << value.occlusionQueryPrecise << '\n';
3380         s << "\tpipelineStatisticsQuery = " << value.pipelineStatisticsQuery << '\n';
3381         s << "\tvertexPipelineStoresAndAtomics = " << value.vertexPipelineStoresAndAtomics << '\n';
3382         s << "\tfragmentStoresAndAtomics = " << value.fragmentStoresAndAtomics << '\n';
3383         s << "\tshaderTessellationAndGeometryPointSize = " << value.shaderTessellationAndGeometryPointSize << '\n';
3384         s << "\tshaderImageGatherExtended = " << value.shaderImageGatherExtended << '\n';
3385         s << "\tshaderStorageImageExtendedFormats = " << value.shaderStorageImageExtendedFormats << '\n';
3386         s << "\tshaderStorageImageMultisample = " << value.shaderStorageImageMultisample << '\n';
3387         s << "\tshaderStorageImageReadWithoutFormat = " << value.shaderStorageImageReadWithoutFormat << '\n';
3388         s << "\tshaderStorageImageWriteWithoutFormat = " << value.shaderStorageImageWriteWithoutFormat << '\n';
3389         s << "\tshaderUniformBufferArrayDynamicIndexing = " << value.shaderUniformBufferArrayDynamicIndexing << '\n';
3390         s << "\tshaderSampledImageArrayDynamicIndexing = " << value.shaderSampledImageArrayDynamicIndexing << '\n';
3391         s << "\tshaderStorageBufferArrayDynamicIndexing = " << value.shaderStorageBufferArrayDynamicIndexing << '\n';
3392         s << "\tshaderStorageImageArrayDynamicIndexing = " << value.shaderStorageImageArrayDynamicIndexing << '\n';
3393         s << "\tshaderClipDistance = " << value.shaderClipDistance << '\n';
3394         s << "\tshaderCullDistance = " << value.shaderCullDistance << '\n';
3395         s << "\tshaderFloat64 = " << value.shaderFloat64 << '\n';
3396         s << "\tshaderInt64 = " << value.shaderInt64 << '\n';
3397         s << "\tshaderInt16 = " << value.shaderInt16 << '\n';
3398         s << "\tshaderResourceResidency = " << value.shaderResourceResidency << '\n';
3399         s << "\tshaderResourceMinLod = " << value.shaderResourceMinLod << '\n';
3400         s << "\tsparseBinding = " << value.sparseBinding << '\n';
3401         s << "\tsparseResidencyBuffer = " << value.sparseResidencyBuffer << '\n';
3402         s << "\tsparseResidencyImage2D = " << value.sparseResidencyImage2D << '\n';
3403         s << "\tsparseResidencyImage3D = " << value.sparseResidencyImage3D << '\n';
3404         s << "\tsparseResidency2Samples = " << value.sparseResidency2Samples << '\n';
3405         s << "\tsparseResidency4Samples = " << value.sparseResidency4Samples << '\n';
3406         s << "\tsparseResidency8Samples = " << value.sparseResidency8Samples << '\n';
3407         s << "\tsparseResidency16Samples = " << value.sparseResidency16Samples << '\n';
3408         s << "\tsparseResidencyAliased = " << value.sparseResidencyAliased << '\n';
3409         s << "\tvariableMultisampleRate = " << value.variableMultisampleRate << '\n';
3410         s << "\tinheritedQueries = " << value.inheritedQueries << '\n';
3411         s << '}';
3412         return s;
3413 }
3414
3415 std::ostream& operator<< (std::ostream& s, const VkFormatProperties& value)
3416 {
3417         s << "VkFormatProperties = {\n";
3418         s << "\tlinearTilingFeatures = " << getFormatFeatureFlagsStr(value.linearTilingFeatures) << '\n';
3419         s << "\toptimalTilingFeatures = " << getFormatFeatureFlagsStr(value.optimalTilingFeatures) << '\n';
3420         s << "\tbufferFeatures = " << getFormatFeatureFlagsStr(value.bufferFeatures) << '\n';
3421         s << '}';
3422         return s;
3423 }
3424
3425 std::ostream& operator<< (std::ostream& s, const VkExtent3D& value)
3426 {
3427         s << "VkExtent3D = {\n";
3428         s << "\twidth = " << value.width << '\n';
3429         s << "\theight = " << value.height << '\n';
3430         s << "\tdepth = " << value.depth << '\n';
3431         s << '}';
3432         return s;
3433 }
3434
3435 std::ostream& operator<< (std::ostream& s, const VkImageFormatProperties& value)
3436 {
3437         s << "VkImageFormatProperties = {\n";
3438         s << "\tmaxExtent = " << value.maxExtent << '\n';
3439         s << "\tmaxMipLevels = " << value.maxMipLevels << '\n';
3440         s << "\tmaxArrayLayers = " << value.maxArrayLayers << '\n';
3441         s << "\tsampleCounts = " << getSampleCountFlagsStr(value.sampleCounts) << '\n';
3442         s << "\tmaxResourceSize = " << value.maxResourceSize << '\n';
3443         s << '}';
3444         return s;
3445 }
3446
3447 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceLimits& value)
3448 {
3449         s << "VkPhysicalDeviceLimits = {\n";
3450         s << "\tmaxImageDimension1D = " << value.maxImageDimension1D << '\n';
3451         s << "\tmaxImageDimension2D = " << value.maxImageDimension2D << '\n';
3452         s << "\tmaxImageDimension3D = " << value.maxImageDimension3D << '\n';
3453         s << "\tmaxImageDimensionCube = " << value.maxImageDimensionCube << '\n';
3454         s << "\tmaxImageArrayLayers = " << value.maxImageArrayLayers << '\n';
3455         s << "\tmaxTexelBufferElements = " << value.maxTexelBufferElements << '\n';
3456         s << "\tmaxUniformBufferRange = " << value.maxUniformBufferRange << '\n';
3457         s << "\tmaxStorageBufferRange = " << value.maxStorageBufferRange << '\n';
3458         s << "\tmaxPushConstantsSize = " << value.maxPushConstantsSize << '\n';
3459         s << "\tmaxMemoryAllocationCount = " << value.maxMemoryAllocationCount << '\n';
3460         s << "\tmaxSamplerAllocationCount = " << value.maxSamplerAllocationCount << '\n';
3461         s << "\tbufferImageGranularity = " << value.bufferImageGranularity << '\n';
3462         s << "\tsparseAddressSpaceSize = " << value.sparseAddressSpaceSize << '\n';
3463         s << "\tmaxBoundDescriptorSets = " << value.maxBoundDescriptorSets << '\n';
3464         s << "\tmaxPerStageDescriptorSamplers = " << value.maxPerStageDescriptorSamplers << '\n';
3465         s << "\tmaxPerStageDescriptorUniformBuffers = " << value.maxPerStageDescriptorUniformBuffers << '\n';
3466         s << "\tmaxPerStageDescriptorStorageBuffers = " << value.maxPerStageDescriptorStorageBuffers << '\n';
3467         s << "\tmaxPerStageDescriptorSampledImages = " << value.maxPerStageDescriptorSampledImages << '\n';
3468         s << "\tmaxPerStageDescriptorStorageImages = " << value.maxPerStageDescriptorStorageImages << '\n';
3469         s << "\tmaxPerStageDescriptorInputAttachments = " << value.maxPerStageDescriptorInputAttachments << '\n';
3470         s << "\tmaxPerStageResources = " << value.maxPerStageResources << '\n';
3471         s << "\tmaxDescriptorSetSamplers = " << value.maxDescriptorSetSamplers << '\n';
3472         s << "\tmaxDescriptorSetUniformBuffers = " << value.maxDescriptorSetUniformBuffers << '\n';
3473         s << "\tmaxDescriptorSetUniformBuffersDynamic = " << value.maxDescriptorSetUniformBuffersDynamic << '\n';
3474         s << "\tmaxDescriptorSetStorageBuffers = " << value.maxDescriptorSetStorageBuffers << '\n';
3475         s << "\tmaxDescriptorSetStorageBuffersDynamic = " << value.maxDescriptorSetStorageBuffersDynamic << '\n';
3476         s << "\tmaxDescriptorSetSampledImages = " << value.maxDescriptorSetSampledImages << '\n';
3477         s << "\tmaxDescriptorSetStorageImages = " << value.maxDescriptorSetStorageImages << '\n';
3478         s << "\tmaxDescriptorSetInputAttachments = " << value.maxDescriptorSetInputAttachments << '\n';
3479         s << "\tmaxVertexInputAttributes = " << value.maxVertexInputAttributes << '\n';
3480         s << "\tmaxVertexInputBindings = " << value.maxVertexInputBindings << '\n';
3481         s << "\tmaxVertexInputAttributeOffset = " << value.maxVertexInputAttributeOffset << '\n';
3482         s << "\tmaxVertexInputBindingStride = " << value.maxVertexInputBindingStride << '\n';
3483         s << "\tmaxVertexOutputComponents = " << value.maxVertexOutputComponents << '\n';
3484         s << "\tmaxTessellationGenerationLevel = " << value.maxTessellationGenerationLevel << '\n';
3485         s << "\tmaxTessellationPatchSize = " << value.maxTessellationPatchSize << '\n';
3486         s << "\tmaxTessellationControlPerVertexInputComponents = " << value.maxTessellationControlPerVertexInputComponents << '\n';
3487         s << "\tmaxTessellationControlPerVertexOutputComponents = " << value.maxTessellationControlPerVertexOutputComponents << '\n';
3488         s << "\tmaxTessellationControlPerPatchOutputComponents = " << value.maxTessellationControlPerPatchOutputComponents << '\n';
3489         s << "\tmaxTessellationControlTotalOutputComponents = " << value.maxTessellationControlTotalOutputComponents << '\n';
3490         s << "\tmaxTessellationEvaluationInputComponents = " << value.maxTessellationEvaluationInputComponents << '\n';
3491         s << "\tmaxTessellationEvaluationOutputComponents = " << value.maxTessellationEvaluationOutputComponents << '\n';
3492         s << "\tmaxGeometryShaderInvocations = " << value.maxGeometryShaderInvocations << '\n';
3493         s << "\tmaxGeometryInputComponents = " << value.maxGeometryInputComponents << '\n';
3494         s << "\tmaxGeometryOutputComponents = " << value.maxGeometryOutputComponents << '\n';
3495         s << "\tmaxGeometryOutputVertices = " << value.maxGeometryOutputVertices << '\n';
3496         s << "\tmaxGeometryTotalOutputComponents = " << value.maxGeometryTotalOutputComponents << '\n';
3497         s << "\tmaxFragmentInputComponents = " << value.maxFragmentInputComponents << '\n';
3498         s << "\tmaxFragmentOutputAttachments = " << value.maxFragmentOutputAttachments << '\n';
3499         s << "\tmaxFragmentDualSrcAttachments = " << value.maxFragmentDualSrcAttachments << '\n';
3500         s << "\tmaxFragmentCombinedOutputResources = " << value.maxFragmentCombinedOutputResources << '\n';
3501         s << "\tmaxComputeSharedMemorySize = " << value.maxComputeSharedMemorySize << '\n';
3502         s << "\tmaxComputeWorkGroupCount = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.maxComputeWorkGroupCount), DE_ARRAY_END(value.maxComputeWorkGroupCount)) << '\n';
3503         s << "\tmaxComputeWorkGroupInvocations = " << value.maxComputeWorkGroupInvocations << '\n';
3504         s << "\tmaxComputeWorkGroupSize = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.maxComputeWorkGroupSize), DE_ARRAY_END(value.maxComputeWorkGroupSize)) << '\n';
3505         s << "\tsubPixelPrecisionBits = " << value.subPixelPrecisionBits << '\n';
3506         s << "\tsubTexelPrecisionBits = " << value.subTexelPrecisionBits << '\n';
3507         s << "\tmipmapPrecisionBits = " << value.mipmapPrecisionBits << '\n';
3508         s << "\tmaxDrawIndexedIndexValue = " << value.maxDrawIndexedIndexValue << '\n';
3509         s << "\tmaxDrawIndirectCount = " << value.maxDrawIndirectCount << '\n';
3510         s << "\tmaxSamplerLodBias = " << value.maxSamplerLodBias << '\n';
3511         s << "\tmaxSamplerAnisotropy = " << value.maxSamplerAnisotropy << '\n';
3512         s << "\tmaxViewports = " << value.maxViewports << '\n';
3513         s << "\tmaxViewportDimensions = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.maxViewportDimensions), DE_ARRAY_END(value.maxViewportDimensions)) << '\n';
3514         s << "\tviewportBoundsRange = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.viewportBoundsRange), DE_ARRAY_END(value.viewportBoundsRange)) << '\n';
3515         s << "\tviewportSubPixelBits = " << value.viewportSubPixelBits << '\n';
3516         s << "\tminMemoryMapAlignment = " << value.minMemoryMapAlignment << '\n';
3517         s << "\tminTexelBufferOffsetAlignment = " << value.minTexelBufferOffsetAlignment << '\n';
3518         s << "\tminUniformBufferOffsetAlignment = " << value.minUniformBufferOffsetAlignment << '\n';
3519         s << "\tminStorageBufferOffsetAlignment = " << value.minStorageBufferOffsetAlignment << '\n';
3520         s << "\tminTexelOffset = " << value.minTexelOffset << '\n';
3521         s << "\tmaxTexelOffset = " << value.maxTexelOffset << '\n';
3522         s << "\tminTexelGatherOffset = " << value.minTexelGatherOffset << '\n';
3523         s << "\tmaxTexelGatherOffset = " << value.maxTexelGatherOffset << '\n';
3524         s << "\tminInterpolationOffset = " << value.minInterpolationOffset << '\n';
3525         s << "\tmaxInterpolationOffset = " << value.maxInterpolationOffset << '\n';
3526         s << "\tsubPixelInterpolationOffsetBits = " << value.subPixelInterpolationOffsetBits << '\n';
3527         s << "\tmaxFramebufferWidth = " << value.maxFramebufferWidth << '\n';
3528         s << "\tmaxFramebufferHeight = " << value.maxFramebufferHeight << '\n';
3529         s << "\tmaxFramebufferLayers = " << value.maxFramebufferLayers << '\n';
3530         s << "\tframebufferColorSampleCounts = " << getSampleCountFlagsStr(value.framebufferColorSampleCounts) << '\n';
3531         s << "\tframebufferDepthSampleCounts = " << getSampleCountFlagsStr(value.framebufferDepthSampleCounts) << '\n';
3532         s << "\tframebufferStencilSampleCounts = " << getSampleCountFlagsStr(value.framebufferStencilSampleCounts) << '\n';
3533         s << "\tframebufferNoAttachmentsSampleCounts = " << getSampleCountFlagsStr(value.framebufferNoAttachmentsSampleCounts) << '\n';
3534         s << "\tmaxColorAttachments = " << value.maxColorAttachments << '\n';
3535         s << "\tsampledImageColorSampleCounts = " << getSampleCountFlagsStr(value.sampledImageColorSampleCounts) << '\n';
3536         s << "\tsampledImageIntegerSampleCounts = " << getSampleCountFlagsStr(value.sampledImageIntegerSampleCounts) << '\n';
3537         s << "\tsampledImageDepthSampleCounts = " << getSampleCountFlagsStr(value.sampledImageDepthSampleCounts) << '\n';
3538         s << "\tsampledImageStencilSampleCounts = " << getSampleCountFlagsStr(value.sampledImageStencilSampleCounts) << '\n';
3539         s << "\tstorageImageSampleCounts = " << getSampleCountFlagsStr(value.storageImageSampleCounts) << '\n';
3540         s << "\tmaxSampleMaskWords = " << value.maxSampleMaskWords << '\n';
3541         s << "\ttimestampComputeAndGraphics = " << value.timestampComputeAndGraphics << '\n';
3542         s << "\ttimestampPeriod = " << value.timestampPeriod << '\n';
3543         s << "\tmaxClipDistances = " << value.maxClipDistances << '\n';
3544         s << "\tmaxCullDistances = " << value.maxCullDistances << '\n';
3545         s << "\tmaxCombinedClipAndCullDistances = " << value.maxCombinedClipAndCullDistances << '\n';
3546         s << "\tdiscreteQueuePriorities = " << value.discreteQueuePriorities << '\n';
3547         s << "\tpointSizeRange = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.pointSizeRange), DE_ARRAY_END(value.pointSizeRange)) << '\n';
3548         s << "\tlineWidthRange = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.lineWidthRange), DE_ARRAY_END(value.lineWidthRange)) << '\n';
3549         s << "\tpointSizeGranularity = " << value.pointSizeGranularity << '\n';
3550         s << "\tlineWidthGranularity = " << value.lineWidthGranularity << '\n';
3551         s << "\tstrictLines = " << value.strictLines << '\n';
3552         s << "\tstandardSampleLocations = " << value.standardSampleLocations << '\n';
3553         s << "\toptimalBufferCopyOffsetAlignment = " << value.optimalBufferCopyOffsetAlignment << '\n';
3554         s << "\toptimalBufferCopyRowPitchAlignment = " << value.optimalBufferCopyRowPitchAlignment << '\n';
3555         s << "\tnonCoherentAtomSize = " << value.nonCoherentAtomSize << '\n';
3556         s << '}';
3557         return s;
3558 }
3559
3560 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceSparseProperties& value)
3561 {
3562         s << "VkPhysicalDeviceSparseProperties = {\n";
3563         s << "\tresidencyStandard2DBlockShape = " << value.residencyStandard2DBlockShape << '\n';
3564         s << "\tresidencyStandard2DMultisampleBlockShape = " << value.residencyStandard2DMultisampleBlockShape << '\n';
3565         s << "\tresidencyStandard3DBlockShape = " << value.residencyStandard3DBlockShape << '\n';
3566         s << "\tresidencyAlignedMipSize = " << value.residencyAlignedMipSize << '\n';
3567         s << "\tresidencyNonResidentStrict = " << value.residencyNonResidentStrict << '\n';
3568         s << '}';
3569         return s;
3570 }
3571
3572 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceProperties& value)
3573 {
3574         s << "VkPhysicalDeviceProperties = {\n";
3575         s << "\tapiVersion = " << value.apiVersion << '\n';
3576         s << "\tdriverVersion = " << value.driverVersion << '\n';
3577         s << "\tvendorID = " << value.vendorID << '\n';
3578         s << "\tdeviceID = " << value.deviceID << '\n';
3579         s << "\tdeviceType = " << value.deviceType << '\n';
3580         s << "\tdeviceName = " << (const char*)value.deviceName << '\n';
3581         s << "\tpipelineCacheUUID = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<deUint8>(DE_ARRAY_BEGIN(value.pipelineCacheUUID)), tcu::Format::HexIterator<deUint8>(DE_ARRAY_END(value.pipelineCacheUUID))) << '\n';
3582         s << "\tlimits = " << value.limits << '\n';
3583         s << "\tsparseProperties = " << value.sparseProperties << '\n';
3584         s << '}';
3585         return s;
3586 }
3587
3588 std::ostream& operator<< (std::ostream& s, const VkQueueFamilyProperties& value)
3589 {
3590         s << "VkQueueFamilyProperties = {\n";
3591         s << "\tqueueFlags = " << getQueueFlagsStr(value.queueFlags) << '\n';
3592         s << "\tqueueCount = " << value.queueCount << '\n';
3593         s << "\ttimestampValidBits = " << value.timestampValidBits << '\n';
3594         s << "\tminImageTransferGranularity = " << value.minImageTransferGranularity << '\n';
3595         s << '}';
3596         return s;
3597 }
3598
3599 std::ostream& operator<< (std::ostream& s, const VkMemoryType& value)
3600 {
3601         s << "VkMemoryType = {\n";
3602         s << "\tpropertyFlags = " << getMemoryPropertyFlagsStr(value.propertyFlags) << '\n';
3603         s << "\theapIndex = " << value.heapIndex << '\n';
3604         s << '}';
3605         return s;
3606 }
3607
3608 std::ostream& operator<< (std::ostream& s, const VkMemoryHeap& value)
3609 {
3610         s << "VkMemoryHeap = {\n";
3611         s << "\tsize = " << value.size << '\n';
3612         s << "\tflags = " << getMemoryHeapFlagsStr(value.flags) << '\n';
3613         s << '}';
3614         return s;
3615 }
3616
3617 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceMemoryProperties& value)
3618 {
3619         s << "VkPhysicalDeviceMemoryProperties = {\n";
3620         s << "\tmemoryTypeCount = " << value.memoryTypeCount << '\n';
3621         s << "\tmemoryTypes = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.memoryTypes), DE_ARRAY_BEGIN(value.memoryTypes) + value.memoryTypeCount) << '\n';
3622         s << "\tmemoryHeapCount = " << value.memoryHeapCount << '\n';
3623         s << "\tmemoryHeaps = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.memoryHeaps), DE_ARRAY_BEGIN(value.memoryHeaps) + value.memoryHeapCount) << '\n';
3624         s << '}';
3625         return s;
3626 }
3627
3628 std::ostream& operator<< (std::ostream& s, const VkDeviceQueueCreateInfo& value)
3629 {
3630         s << "VkDeviceQueueCreateInfo = {\n";
3631         s << "\tsType = " << value.sType << '\n';
3632         s << "\tpNext = " << value.pNext << '\n';
3633         s << "\tflags = " << getDeviceQueueCreateFlagsStr(value.flags) << '\n';
3634         s << "\tqueueFamilyIndex = " << value.queueFamilyIndex << '\n';
3635         s << "\tqueueCount = " << value.queueCount << '\n';
3636         s << "\tpQueuePriorities = " << value.pQueuePriorities << '\n';
3637         s << '}';
3638         return s;
3639 }
3640
3641 std::ostream& operator<< (std::ostream& s, const VkDeviceCreateInfo& value)
3642 {
3643         s << "VkDeviceCreateInfo = {\n";
3644         s << "\tsType = " << value.sType << '\n';
3645         s << "\tpNext = " << value.pNext << '\n';
3646         s << "\tflags = " << getDeviceCreateFlagsStr(value.flags) << '\n';
3647         s << "\tqueueCreateInfoCount = " << value.queueCreateInfoCount << '\n';
3648         s << "\tpQueueCreateInfos = " << value.pQueueCreateInfos << '\n';
3649         s << "\tenabledLayerCount = " << value.enabledLayerCount << '\n';
3650         s << "\tppEnabledLayerNames = " << value.ppEnabledLayerNames << '\n';
3651         s << "\tenabledExtensionCount = " << value.enabledExtensionCount << '\n';
3652         s << "\tppEnabledExtensionNames = " << value.ppEnabledExtensionNames << '\n';
3653         s << "\tpEnabledFeatures = " << value.pEnabledFeatures << '\n';
3654         s << '}';
3655         return s;
3656 }
3657
3658 std::ostream& operator<< (std::ostream& s, const VkExtensionProperties& value)
3659 {
3660         s << "VkExtensionProperties = {\n";
3661         s << "\textensionName = " << (const char*)value.extensionName << '\n';
3662         s << "\tspecVersion = " << value.specVersion << '\n';
3663         s << '}';
3664         return s;
3665 }
3666
3667 std::ostream& operator<< (std::ostream& s, const VkLayerProperties& value)
3668 {
3669         s << "VkLayerProperties = {\n";
3670         s << "\tlayerName = " << (const char*)value.layerName << '\n';
3671         s << "\tspecVersion = " << value.specVersion << '\n';
3672         s << "\timplementationVersion = " << value.implementationVersion << '\n';
3673         s << "\tdescription = " << (const char*)value.description << '\n';
3674         s << '}';
3675         return s;
3676 }
3677
3678 std::ostream& operator<< (std::ostream& s, const VkSubmitInfo& value)
3679 {
3680         s << "VkSubmitInfo = {\n";
3681         s << "\tsType = " << value.sType << '\n';
3682         s << "\tpNext = " << value.pNext << '\n';
3683         s << "\twaitSemaphoreCount = " << value.waitSemaphoreCount << '\n';
3684         s << "\tpWaitSemaphores = " << value.pWaitSemaphores << '\n';
3685         s << "\tpWaitDstStageMask = " << value.pWaitDstStageMask << '\n';
3686         s << "\tcommandBufferCount = " << value.commandBufferCount << '\n';
3687         s << "\tpCommandBuffers = " << value.pCommandBuffers << '\n';
3688         s << "\tsignalSemaphoreCount = " << value.signalSemaphoreCount << '\n';
3689         s << "\tpSignalSemaphores = " << value.pSignalSemaphores << '\n';
3690         s << '}';
3691         return s;
3692 }
3693
3694 std::ostream& operator<< (std::ostream& s, const VkMemoryAllocateInfo& value)
3695 {
3696         s << "VkMemoryAllocateInfo = {\n";
3697         s << "\tsType = " << value.sType << '\n';
3698         s << "\tpNext = " << value.pNext << '\n';
3699         s << "\tallocationSize = " << value.allocationSize << '\n';
3700         s << "\tmemoryTypeIndex = " << value.memoryTypeIndex << '\n';
3701         s << '}';
3702         return s;
3703 }
3704
3705 std::ostream& operator<< (std::ostream& s, const VkMappedMemoryRange& value)
3706 {
3707         s << "VkMappedMemoryRange = {\n";
3708         s << "\tsType = " << value.sType << '\n';
3709         s << "\tpNext = " << value.pNext << '\n';
3710         s << "\tmemory = " << value.memory << '\n';
3711         s << "\toffset = " << value.offset << '\n';
3712         s << "\tsize = " << value.size << '\n';
3713         s << '}';
3714         return s;
3715 }
3716
3717 std::ostream& operator<< (std::ostream& s, const VkMemoryRequirements& value)
3718 {
3719         s << "VkMemoryRequirements = {\n";
3720         s << "\tsize = " << value.size << '\n';
3721         s << "\talignment = " << value.alignment << '\n';
3722         s << "\tmemoryTypeBits = " << value.memoryTypeBits << '\n';
3723         s << '}';
3724         return s;
3725 }
3726
3727 std::ostream& operator<< (std::ostream& s, const VkSparseImageFormatProperties& value)
3728 {
3729         s << "VkSparseImageFormatProperties = {\n";
3730         s << "\taspectMask = " << getImageAspectFlagsStr(value.aspectMask) << '\n';
3731         s << "\timageGranularity = " << value.imageGranularity << '\n';
3732         s << "\tflags = " << getSparseImageFormatFlagsStr(value.flags) << '\n';
3733         s << '}';
3734         return s;
3735 }
3736
3737 std::ostream& operator<< (std::ostream& s, const VkSparseImageMemoryRequirements& value)
3738 {
3739         s << "VkSparseImageMemoryRequirements = {\n";
3740         s << "\tformatProperties = " << value.formatProperties << '\n';
3741         s << "\timageMipTailFirstLod = " << value.imageMipTailFirstLod << '\n';
3742         s << "\timageMipTailSize = " << value.imageMipTailSize << '\n';
3743         s << "\timageMipTailOffset = " << value.imageMipTailOffset << '\n';
3744         s << "\timageMipTailStride = " << value.imageMipTailStride << '\n';
3745         s << '}';
3746         return s;
3747 }
3748
3749 std::ostream& operator<< (std::ostream& s, const VkSparseMemoryBind& value)
3750 {
3751         s << "VkSparseMemoryBind = {\n";
3752         s << "\tresourceOffset = " << value.resourceOffset << '\n';
3753         s << "\tsize = " << value.size << '\n';
3754         s << "\tmemory = " << value.memory << '\n';
3755         s << "\tmemoryOffset = " << value.memoryOffset << '\n';
3756         s << "\tflags = " << getSparseMemoryBindFlagsStr(value.flags) << '\n';
3757         s << '}';
3758         return s;
3759 }
3760
3761 std::ostream& operator<< (std::ostream& s, const VkSparseBufferMemoryBindInfo& value)
3762 {
3763         s << "VkSparseBufferMemoryBindInfo = {\n";
3764         s << "\tbuffer = " << value.buffer << '\n';
3765         s << "\tbindCount = " << value.bindCount << '\n';
3766         s << "\tpBinds = " << value.pBinds << '\n';
3767         s << '}';
3768         return s;
3769 }
3770
3771 std::ostream& operator<< (std::ostream& s, const VkSparseImageOpaqueMemoryBindInfo& value)
3772 {
3773         s << "VkSparseImageOpaqueMemoryBindInfo = {\n";
3774         s << "\timage = " << value.image << '\n';
3775         s << "\tbindCount = " << value.bindCount << '\n';
3776         s << "\tpBinds = " << value.pBinds << '\n';
3777         s << '}';
3778         return s;
3779 }
3780
3781 std::ostream& operator<< (std::ostream& s, const VkImageSubresource& value)
3782 {
3783         s << "VkImageSubresource = {\n";
3784         s << "\taspectMask = " << getImageAspectFlagsStr(value.aspectMask) << '\n';
3785         s << "\tmipLevel = " << value.mipLevel << '\n';
3786         s << "\tarrayLayer = " << value.arrayLayer << '\n';
3787         s << '}';
3788         return s;
3789 }
3790
3791 std::ostream& operator<< (std::ostream& s, const VkOffset3D& value)
3792 {
3793         s << "VkOffset3D = {\n";
3794         s << "\tx = " << value.x << '\n';
3795         s << "\ty = " << value.y << '\n';
3796         s << "\tz = " << value.z << '\n';
3797         s << '}';
3798         return s;
3799 }
3800
3801 std::ostream& operator<< (std::ostream& s, const VkSparseImageMemoryBind& value)
3802 {
3803         s << "VkSparseImageMemoryBind = {\n";
3804         s << "\tsubresource = " << value.subresource << '\n';
3805         s << "\toffset = " << value.offset << '\n';
3806         s << "\textent = " << value.extent << '\n';
3807         s << "\tmemory = " << value.memory << '\n';
3808         s << "\tmemoryOffset = " << value.memoryOffset << '\n';
3809         s << "\tflags = " << getSparseMemoryBindFlagsStr(value.flags) << '\n';
3810         s << '}';
3811         return s;
3812 }
3813
3814 std::ostream& operator<< (std::ostream& s, const VkSparseImageMemoryBindInfo& value)
3815 {
3816         s << "VkSparseImageMemoryBindInfo = {\n";
3817         s << "\timage = " << value.image << '\n';
3818         s << "\tbindCount = " << value.bindCount << '\n';
3819         s << "\tpBinds = " << value.pBinds << '\n';
3820         s << '}';
3821         return s;
3822 }
3823
3824 std::ostream& operator<< (std::ostream& s, const VkBindSparseInfo& value)
3825 {
3826         s << "VkBindSparseInfo = {\n";
3827         s << "\tsType = " << value.sType << '\n';
3828         s << "\tpNext = " << value.pNext << '\n';
3829         s << "\twaitSemaphoreCount = " << value.waitSemaphoreCount << '\n';
3830         s << "\tpWaitSemaphores = " << value.pWaitSemaphores << '\n';
3831         s << "\tbufferBindCount = " << value.bufferBindCount << '\n';
3832         s << "\tpBufferBinds = " << value.pBufferBinds << '\n';
3833         s << "\timageOpaqueBindCount = " << value.imageOpaqueBindCount << '\n';
3834         s << "\tpImageOpaqueBinds = " << value.pImageOpaqueBinds << '\n';
3835         s << "\timageBindCount = " << value.imageBindCount << '\n';
3836         s << "\tpImageBinds = " << value.pImageBinds << '\n';
3837         s << "\tsignalSemaphoreCount = " << value.signalSemaphoreCount << '\n';
3838         s << "\tpSignalSemaphores = " << value.pSignalSemaphores << '\n';
3839         s << '}';
3840         return s;
3841 }
3842
3843 std::ostream& operator<< (std::ostream& s, const VkFenceCreateInfo& value)
3844 {
3845         s << "VkFenceCreateInfo = {\n";
3846         s << "\tsType = " << value.sType << '\n';
3847         s << "\tpNext = " << value.pNext << '\n';
3848         s << "\tflags = " << getFenceCreateFlagsStr(value.flags) << '\n';
3849         s << '}';
3850         return s;
3851 }
3852
3853 std::ostream& operator<< (std::ostream& s, const VkSemaphoreCreateInfo& value)
3854 {
3855         s << "VkSemaphoreCreateInfo = {\n";
3856         s << "\tsType = " << value.sType << '\n';
3857         s << "\tpNext = " << value.pNext << '\n';
3858         s << "\tflags = " << getSemaphoreCreateFlagsStr(value.flags) << '\n';
3859         s << '}';
3860         return s;
3861 }
3862
3863 std::ostream& operator<< (std::ostream& s, const VkEventCreateInfo& value)
3864 {
3865         s << "VkEventCreateInfo = {\n";
3866         s << "\tsType = " << value.sType << '\n';
3867         s << "\tpNext = " << value.pNext << '\n';
3868         s << "\tflags = " << getEventCreateFlagsStr(value.flags) << '\n';
3869         s << '}';
3870         return s;
3871 }
3872
3873 std::ostream& operator<< (std::ostream& s, const VkQueryPoolCreateInfo& value)
3874 {
3875         s << "VkQueryPoolCreateInfo = {\n";
3876         s << "\tsType = " << value.sType << '\n';
3877         s << "\tpNext = " << value.pNext << '\n';
3878         s << "\tflags = " << getQueryPoolCreateFlagsStr(value.flags) << '\n';
3879         s << "\tqueryType = " << value.queryType << '\n';
3880         s << "\tqueryCount = " << value.queryCount << '\n';
3881         s << "\tpipelineStatistics = " << getQueryPipelineStatisticFlagsStr(value.pipelineStatistics) << '\n';
3882         s << '}';
3883         return s;
3884 }
3885
3886 std::ostream& operator<< (std::ostream& s, const VkBufferCreateInfo& value)
3887 {
3888         s << "VkBufferCreateInfo = {\n";
3889         s << "\tsType = " << value.sType << '\n';
3890         s << "\tpNext = " << value.pNext << '\n';
3891         s << "\tflags = " << getBufferCreateFlagsStr(value.flags) << '\n';
3892         s << "\tsize = " << value.size << '\n';
3893         s << "\tusage = " << getBufferUsageFlagsStr(value.usage) << '\n';
3894         s << "\tsharingMode = " << value.sharingMode << '\n';
3895         s << "\tqueueFamilyIndexCount = " << value.queueFamilyIndexCount << '\n';
3896         s << "\tpQueueFamilyIndices = " << value.pQueueFamilyIndices << '\n';
3897         s << '}';
3898         return s;
3899 }
3900
3901 std::ostream& operator<< (std::ostream& s, const VkBufferViewCreateInfo& value)
3902 {
3903         s << "VkBufferViewCreateInfo = {\n";
3904         s << "\tsType = " << value.sType << '\n';
3905         s << "\tpNext = " << value.pNext << '\n';
3906         s << "\tflags = " << getBufferViewCreateFlagsStr(value.flags) << '\n';
3907         s << "\tbuffer = " << value.buffer << '\n';
3908         s << "\tformat = " << value.format << '\n';
3909         s << "\toffset = " << value.offset << '\n';
3910         s << "\trange = " << value.range << '\n';
3911         s << '}';
3912         return s;
3913 }
3914
3915 std::ostream& operator<< (std::ostream& s, const VkImageCreateInfo& value)
3916 {
3917         s << "VkImageCreateInfo = {\n";
3918         s << "\tsType = " << value.sType << '\n';
3919         s << "\tpNext = " << value.pNext << '\n';
3920         s << "\tflags = " << getImageCreateFlagsStr(value.flags) << '\n';
3921         s << "\timageType = " << value.imageType << '\n';
3922         s << "\tformat = " << value.format << '\n';
3923         s << "\textent = " << value.extent << '\n';
3924         s << "\tmipLevels = " << value.mipLevels << '\n';
3925         s << "\tarrayLayers = " << value.arrayLayers << '\n';
3926         s << "\tsamples = " << value.samples << '\n';
3927         s << "\ttiling = " << value.tiling << '\n';
3928         s << "\tusage = " << getImageUsageFlagsStr(value.usage) << '\n';
3929         s << "\tsharingMode = " << value.sharingMode << '\n';
3930         s << "\tqueueFamilyIndexCount = " << value.queueFamilyIndexCount << '\n';
3931         s << "\tpQueueFamilyIndices = " << value.pQueueFamilyIndices << '\n';
3932         s << "\tinitialLayout = " << value.initialLayout << '\n';
3933         s << '}';
3934         return s;
3935 }
3936
3937 std::ostream& operator<< (std::ostream& s, const VkSubresourceLayout& value)
3938 {
3939         s << "VkSubresourceLayout = {\n";
3940         s << "\toffset = " << value.offset << '\n';
3941         s << "\tsize = " << value.size << '\n';
3942         s << "\trowPitch = " << value.rowPitch << '\n';
3943         s << "\tarrayPitch = " << value.arrayPitch << '\n';
3944         s << "\tdepthPitch = " << value.depthPitch << '\n';
3945         s << '}';
3946         return s;
3947 }
3948
3949 std::ostream& operator<< (std::ostream& s, const VkComponentMapping& value)
3950 {
3951         s << "VkComponentMapping = {\n";
3952         s << "\tr = " << value.r << '\n';
3953         s << "\tg = " << value.g << '\n';
3954         s << "\tb = " << value.b << '\n';
3955         s << "\ta = " << value.a << '\n';
3956         s << '}';
3957         return s;
3958 }
3959
3960 std::ostream& operator<< (std::ostream& s, const VkImageSubresourceRange& value)
3961 {
3962         s << "VkImageSubresourceRange = {\n";
3963         s << "\taspectMask = " << getImageAspectFlagsStr(value.aspectMask) << '\n';
3964         s << "\tbaseMipLevel = " << value.baseMipLevel << '\n';
3965         s << "\tlevelCount = " << value.levelCount << '\n';
3966         s << "\tbaseArrayLayer = " << value.baseArrayLayer << '\n';
3967         s << "\tlayerCount = " << value.layerCount << '\n';
3968         s << '}';
3969         return s;
3970 }
3971
3972 std::ostream& operator<< (std::ostream& s, const VkImageViewCreateInfo& value)
3973 {
3974         s << "VkImageViewCreateInfo = {\n";
3975         s << "\tsType = " << value.sType << '\n';
3976         s << "\tpNext = " << value.pNext << '\n';
3977         s << "\tflags = " << getImageViewCreateFlagsStr(value.flags) << '\n';
3978         s << "\timage = " << value.image << '\n';
3979         s << "\tviewType = " << value.viewType << '\n';
3980         s << "\tformat = " << value.format << '\n';
3981         s << "\tcomponents = " << value.components << '\n';
3982         s << "\tsubresourceRange = " << value.subresourceRange << '\n';
3983         s << '}';
3984         return s;
3985 }
3986
3987 std::ostream& operator<< (std::ostream& s, const VkShaderModuleCreateInfo& value)
3988 {
3989         s << "VkShaderModuleCreateInfo = {\n";
3990         s << "\tsType = " << value.sType << '\n';
3991         s << "\tpNext = " << value.pNext << '\n';
3992         s << "\tflags = " << getShaderModuleCreateFlagsStr(value.flags) << '\n';
3993         s << "\tcodeSize = " << value.codeSize << '\n';
3994         s << "\tpCode = " << value.pCode << '\n';
3995         s << '}';
3996         return s;
3997 }
3998
3999 std::ostream& operator<< (std::ostream& s, const VkPipelineCacheCreateInfo& value)
4000 {
4001         s << "VkPipelineCacheCreateInfo = {\n";
4002         s << "\tsType = " << value.sType << '\n';
4003         s << "\tpNext = " << value.pNext << '\n';
4004         s << "\tflags = " << getPipelineCacheCreateFlagsStr(value.flags) << '\n';
4005         s << "\tinitialDataSize = " << value.initialDataSize << '\n';
4006         s << "\tpInitialData = " << value.pInitialData << '\n';
4007         s << '}';
4008         return s;
4009 }
4010
4011 std::ostream& operator<< (std::ostream& s, const VkSpecializationMapEntry& value)
4012 {
4013         s << "VkSpecializationMapEntry = {\n";
4014         s << "\tconstantID = " << value.constantID << '\n';
4015         s << "\toffset = " << value.offset << '\n';
4016         s << "\tsize = " << value.size << '\n';
4017         s << '}';
4018         return s;
4019 }
4020
4021 std::ostream& operator<< (std::ostream& s, const VkSpecializationInfo& value)
4022 {
4023         s << "VkSpecializationInfo = {\n";
4024         s << "\tmapEntryCount = " << value.mapEntryCount << '\n';
4025         s << "\tpMapEntries = " << value.pMapEntries << '\n';
4026         s << "\tdataSize = " << value.dataSize << '\n';
4027         s << "\tpData = " << value.pData << '\n';
4028         s << '}';
4029         return s;
4030 }
4031
4032 std::ostream& operator<< (std::ostream& s, const VkPipelineShaderStageCreateInfo& value)
4033 {
4034         s << "VkPipelineShaderStageCreateInfo = {\n";
4035         s << "\tsType = " << value.sType << '\n';
4036         s << "\tpNext = " << value.pNext << '\n';
4037         s << "\tflags = " << getPipelineShaderStageCreateFlagsStr(value.flags) << '\n';
4038         s << "\tstage = " << value.stage << '\n';
4039         s << "\tmodule = " << value.module << '\n';
4040         s << "\tpName = " << getCharPtrStr(value.pName) << '\n';
4041         s << "\tpSpecializationInfo = " << value.pSpecializationInfo << '\n';
4042         s << '}';
4043         return s;
4044 }
4045
4046 std::ostream& operator<< (std::ostream& s, const VkVertexInputBindingDescription& value)
4047 {
4048         s << "VkVertexInputBindingDescription = {\n";
4049         s << "\tbinding = " << value.binding << '\n';
4050         s << "\tstride = " << value.stride << '\n';
4051         s << "\tinputRate = " << value.inputRate << '\n';
4052         s << '}';
4053         return s;
4054 }
4055
4056 std::ostream& operator<< (std::ostream& s, const VkVertexInputAttributeDescription& value)
4057 {
4058         s << "VkVertexInputAttributeDescription = {\n";
4059         s << "\tlocation = " << value.location << '\n';
4060         s << "\tbinding = " << value.binding << '\n';
4061         s << "\tformat = " << value.format << '\n';
4062         s << "\toffset = " << value.offset << '\n';
4063         s << '}';
4064         return s;
4065 }
4066
4067 std::ostream& operator<< (std::ostream& s, const VkPipelineVertexInputStateCreateInfo& value)
4068 {
4069         s << "VkPipelineVertexInputStateCreateInfo = {\n";
4070         s << "\tsType = " << value.sType << '\n';
4071         s << "\tpNext = " << value.pNext << '\n';
4072         s << "\tflags = " << getPipelineVertexInputStateCreateFlagsStr(value.flags) << '\n';
4073         s << "\tvertexBindingDescriptionCount = " << value.vertexBindingDescriptionCount << '\n';
4074         s << "\tpVertexBindingDescriptions = " << value.pVertexBindingDescriptions << '\n';
4075         s << "\tvertexAttributeDescriptionCount = " << value.vertexAttributeDescriptionCount << '\n';
4076         s << "\tpVertexAttributeDescriptions = " << value.pVertexAttributeDescriptions << '\n';
4077         s << '}';
4078         return s;
4079 }
4080
4081 std::ostream& operator<< (std::ostream& s, const VkPipelineInputAssemblyStateCreateInfo& value)
4082 {
4083         s << "VkPipelineInputAssemblyStateCreateInfo = {\n";
4084         s << "\tsType = " << value.sType << '\n';
4085         s << "\tpNext = " << value.pNext << '\n';
4086         s << "\tflags = " << getPipelineInputAssemblyStateCreateFlagsStr(value.flags) << '\n';
4087         s << "\ttopology = " << value.topology << '\n';
4088         s << "\tprimitiveRestartEnable = " << value.primitiveRestartEnable << '\n';
4089         s << '}';
4090         return s;
4091 }
4092
4093 std::ostream& operator<< (std::ostream& s, const VkPipelineTessellationStateCreateInfo& value)
4094 {
4095         s << "VkPipelineTessellationStateCreateInfo = {\n";
4096         s << "\tsType = " << value.sType << '\n';
4097         s << "\tpNext = " << value.pNext << '\n';
4098         s << "\tflags = " << getPipelineTessellationStateCreateFlagsStr(value.flags) << '\n';
4099         s << "\tpatchControlPoints = " << value.patchControlPoints << '\n';
4100         s << '}';
4101         return s;
4102 }
4103
4104 std::ostream& operator<< (std::ostream& s, const VkViewport& value)
4105 {
4106         s << "VkViewport = {\n";
4107         s << "\tx = " << value.x << '\n';
4108         s << "\ty = " << value.y << '\n';
4109         s << "\twidth = " << value.width << '\n';
4110         s << "\theight = " << value.height << '\n';
4111         s << "\tminDepth = " << value.minDepth << '\n';
4112         s << "\tmaxDepth = " << value.maxDepth << '\n';
4113         s << '}';
4114         return s;
4115 }
4116
4117 std::ostream& operator<< (std::ostream& s, const VkOffset2D& value)
4118 {
4119         s << "VkOffset2D = {\n";
4120         s << "\tx = " << value.x << '\n';
4121         s << "\ty = " << value.y << '\n';
4122         s << '}';
4123         return s;
4124 }
4125
4126 std::ostream& operator<< (std::ostream& s, const VkExtent2D& value)
4127 {
4128         s << "VkExtent2D = {\n";
4129         s << "\twidth = " << value.width << '\n';
4130         s << "\theight = " << value.height << '\n';
4131         s << '}';
4132         return s;
4133 }
4134
4135 std::ostream& operator<< (std::ostream& s, const VkRect2D& value)
4136 {
4137         s << "VkRect2D = {\n";
4138         s << "\toffset = " << value.offset << '\n';
4139         s << "\textent = " << value.extent << '\n';
4140         s << '}';
4141         return s;
4142 }
4143
4144 std::ostream& operator<< (std::ostream& s, const VkPipelineViewportStateCreateInfo& value)
4145 {
4146         s << "VkPipelineViewportStateCreateInfo = {\n";
4147         s << "\tsType = " << value.sType << '\n';
4148         s << "\tpNext = " << value.pNext << '\n';
4149         s << "\tflags = " << getPipelineViewportStateCreateFlagsStr(value.flags) << '\n';
4150         s << "\tviewportCount = " << value.viewportCount << '\n';
4151         s << "\tpViewports = " << value.pViewports << '\n';
4152         s << "\tscissorCount = " << value.scissorCount << '\n';
4153         s << "\tpScissors = " << value.pScissors << '\n';
4154         s << '}';
4155         return s;
4156 }
4157
4158 std::ostream& operator<< (std::ostream& s, const VkPipelineRasterizationStateCreateInfo& value)
4159 {
4160         s << "VkPipelineRasterizationStateCreateInfo = {\n";
4161         s << "\tsType = " << value.sType << '\n';
4162         s << "\tpNext = " << value.pNext << '\n';
4163         s << "\tflags = " << getPipelineRasterizationStateCreateFlagsStr(value.flags) << '\n';
4164         s << "\tdepthClampEnable = " << value.depthClampEnable << '\n';
4165         s << "\trasterizerDiscardEnable = " << value.rasterizerDiscardEnable << '\n';
4166         s << "\tpolygonMode = " << value.polygonMode << '\n';
4167         s << "\tcullMode = " << getCullModeFlagsStr(value.cullMode) << '\n';
4168         s << "\tfrontFace = " << value.frontFace << '\n';
4169         s << "\tdepthBiasEnable = " << value.depthBiasEnable << '\n';
4170         s << "\tdepthBiasConstantFactor = " << value.depthBiasConstantFactor << '\n';
4171         s << "\tdepthBiasClamp = " << value.depthBiasClamp << '\n';
4172         s << "\tdepthBiasSlopeFactor = " << value.depthBiasSlopeFactor << '\n';
4173         s << "\tlineWidth = " << value.lineWidth << '\n';
4174         s << '}';
4175         return s;
4176 }
4177
4178 std::ostream& operator<< (std::ostream& s, const VkPipelineMultisampleStateCreateInfo& value)
4179 {
4180         s << "VkPipelineMultisampleStateCreateInfo = {\n";
4181         s << "\tsType = " << value.sType << '\n';
4182         s << "\tpNext = " << value.pNext << '\n';
4183         s << "\tflags = " << getPipelineMultisampleStateCreateFlagsStr(value.flags) << '\n';
4184         s << "\trasterizationSamples = " << value.rasterizationSamples << '\n';
4185         s << "\tsampleShadingEnable = " << value.sampleShadingEnable << '\n';
4186         s << "\tminSampleShading = " << value.minSampleShading << '\n';
4187         s << "\tpSampleMask = " << value.pSampleMask << '\n';
4188         s << "\talphaToCoverageEnable = " << value.alphaToCoverageEnable << '\n';
4189         s << "\talphaToOneEnable = " << value.alphaToOneEnable << '\n';
4190         s << '}';
4191         return s;
4192 }
4193
4194 std::ostream& operator<< (std::ostream& s, const VkStencilOpState& value)
4195 {
4196         s << "VkStencilOpState = {\n";
4197         s << "\tfailOp = " << value.failOp << '\n';
4198         s << "\tpassOp = " << value.passOp << '\n';
4199         s << "\tdepthFailOp = " << value.depthFailOp << '\n';
4200         s << "\tcompareOp = " << value.compareOp << '\n';
4201         s << "\tcompareMask = " << value.compareMask << '\n';
4202         s << "\twriteMask = " << value.writeMask << '\n';
4203         s << "\treference = " << value.reference << '\n';
4204         s << '}';
4205         return s;
4206 }
4207
4208 std::ostream& operator<< (std::ostream& s, const VkPipelineDepthStencilStateCreateInfo& value)
4209 {
4210         s << "VkPipelineDepthStencilStateCreateInfo = {\n";
4211         s << "\tsType = " << value.sType << '\n';
4212         s << "\tpNext = " << value.pNext << '\n';
4213         s << "\tflags = " << getPipelineDepthStencilStateCreateFlagsStr(value.flags) << '\n';
4214         s << "\tdepthTestEnable = " << value.depthTestEnable << '\n';
4215         s << "\tdepthWriteEnable = " << value.depthWriteEnable << '\n';
4216         s << "\tdepthCompareOp = " << value.depthCompareOp << '\n';
4217         s << "\tdepthBoundsTestEnable = " << value.depthBoundsTestEnable << '\n';
4218         s << "\tstencilTestEnable = " << value.stencilTestEnable << '\n';
4219         s << "\tfront = " << value.front << '\n';
4220         s << "\tback = " << value.back << '\n';
4221         s << "\tminDepthBounds = " << value.minDepthBounds << '\n';
4222         s << "\tmaxDepthBounds = " << value.maxDepthBounds << '\n';
4223         s << '}';
4224         return s;
4225 }
4226
4227 std::ostream& operator<< (std::ostream& s, const VkPipelineColorBlendAttachmentState& value)
4228 {
4229         s << "VkPipelineColorBlendAttachmentState = {\n";
4230         s << "\tblendEnable = " << value.blendEnable << '\n';
4231         s << "\tsrcColorBlendFactor = " << value.srcColorBlendFactor << '\n';
4232         s << "\tdstColorBlendFactor = " << value.dstColorBlendFactor << '\n';
4233         s << "\tcolorBlendOp = " << value.colorBlendOp << '\n';
4234         s << "\tsrcAlphaBlendFactor = " << value.srcAlphaBlendFactor << '\n';
4235         s << "\tdstAlphaBlendFactor = " << value.dstAlphaBlendFactor << '\n';
4236         s << "\talphaBlendOp = " << value.alphaBlendOp << '\n';
4237         s << "\tcolorWriteMask = " << getColorComponentFlagsStr(value.colorWriteMask) << '\n';
4238         s << '}';
4239         return s;
4240 }
4241
4242 std::ostream& operator<< (std::ostream& s, const VkPipelineColorBlendStateCreateInfo& value)
4243 {
4244         s << "VkPipelineColorBlendStateCreateInfo = {\n";
4245         s << "\tsType = " << value.sType << '\n';
4246         s << "\tpNext = " << value.pNext << '\n';
4247         s << "\tflags = " << getPipelineColorBlendStateCreateFlagsStr(value.flags) << '\n';
4248         s << "\tlogicOpEnable = " << value.logicOpEnable << '\n';
4249         s << "\tlogicOp = " << value.logicOp << '\n';
4250         s << "\tattachmentCount = " << value.attachmentCount << '\n';
4251         s << "\tpAttachments = " << value.pAttachments << '\n';
4252         s << "\tblendConstants = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.blendConstants), DE_ARRAY_END(value.blendConstants)) << '\n';
4253         s << '}';
4254         return s;
4255 }
4256
4257 std::ostream& operator<< (std::ostream& s, const VkPipelineDynamicStateCreateInfo& value)
4258 {
4259         s << "VkPipelineDynamicStateCreateInfo = {\n";
4260         s << "\tsType = " << value.sType << '\n';
4261         s << "\tpNext = " << value.pNext << '\n';
4262         s << "\tflags = " << getPipelineDynamicStateCreateFlagsStr(value.flags) << '\n';
4263         s << "\tdynamicStateCount = " << value.dynamicStateCount << '\n';
4264         s << "\tpDynamicStates = " << value.pDynamicStates << '\n';
4265         s << '}';
4266         return s;
4267 }
4268
4269 std::ostream& operator<< (std::ostream& s, const VkGraphicsPipelineCreateInfo& value)
4270 {
4271         s << "VkGraphicsPipelineCreateInfo = {\n";
4272         s << "\tsType = " << value.sType << '\n';
4273         s << "\tpNext = " << value.pNext << '\n';
4274         s << "\tflags = " << getPipelineCreateFlagsStr(value.flags) << '\n';
4275         s << "\tstageCount = " << value.stageCount << '\n';
4276         s << "\tpStages = " << value.pStages << '\n';
4277         s << "\tpVertexInputState = " << value.pVertexInputState << '\n';
4278         s << "\tpInputAssemblyState = " << value.pInputAssemblyState << '\n';
4279         s << "\tpTessellationState = " << value.pTessellationState << '\n';
4280         s << "\tpViewportState = " << value.pViewportState << '\n';
4281         s << "\tpRasterizationState = " << value.pRasterizationState << '\n';
4282         s << "\tpMultisampleState = " << value.pMultisampleState << '\n';
4283         s << "\tpDepthStencilState = " << value.pDepthStencilState << '\n';
4284         s << "\tpColorBlendState = " << value.pColorBlendState << '\n';
4285         s << "\tpDynamicState = " << value.pDynamicState << '\n';
4286         s << "\tlayout = " << value.layout << '\n';
4287         s << "\trenderPass = " << value.renderPass << '\n';
4288         s << "\tsubpass = " << value.subpass << '\n';
4289         s << "\tbasePipelineHandle = " << value.basePipelineHandle << '\n';
4290         s << "\tbasePipelineIndex = " << value.basePipelineIndex << '\n';
4291         s << '}';
4292         return s;
4293 }
4294
4295 std::ostream& operator<< (std::ostream& s, const VkComputePipelineCreateInfo& value)
4296 {
4297         s << "VkComputePipelineCreateInfo = {\n";
4298         s << "\tsType = " << value.sType << '\n';
4299         s << "\tpNext = " << value.pNext << '\n';
4300         s << "\tflags = " << getPipelineCreateFlagsStr(value.flags) << '\n';
4301         s << "\tstage = " << value.stage << '\n';
4302         s << "\tlayout = " << value.layout << '\n';
4303         s << "\tbasePipelineHandle = " << value.basePipelineHandle << '\n';
4304         s << "\tbasePipelineIndex = " << value.basePipelineIndex << '\n';
4305         s << '}';
4306         return s;
4307 }
4308
4309 std::ostream& operator<< (std::ostream& s, const VkPushConstantRange& value)
4310 {
4311         s << "VkPushConstantRange = {\n";
4312         s << "\tstageFlags = " << getShaderStageFlagsStr(value.stageFlags) << '\n';
4313         s << "\toffset = " << value.offset << '\n';
4314         s << "\tsize = " << value.size << '\n';
4315         s << '}';
4316         return s;
4317 }
4318
4319 std::ostream& operator<< (std::ostream& s, const VkPipelineLayoutCreateInfo& value)
4320 {
4321         s << "VkPipelineLayoutCreateInfo = {\n";
4322         s << "\tsType = " << value.sType << '\n';
4323         s << "\tpNext = " << value.pNext << '\n';
4324         s << "\tflags = " << getPipelineLayoutCreateFlagsStr(value.flags) << '\n';
4325         s << "\tsetLayoutCount = " << value.setLayoutCount << '\n';
4326         s << "\tpSetLayouts = " << value.pSetLayouts << '\n';
4327         s << "\tpushConstantRangeCount = " << value.pushConstantRangeCount << '\n';
4328         s << "\tpPushConstantRanges = " << value.pPushConstantRanges << '\n';
4329         s << '}';
4330         return s;
4331 }
4332
4333 std::ostream& operator<< (std::ostream& s, const VkSamplerCreateInfo& value)
4334 {
4335         s << "VkSamplerCreateInfo = {\n";
4336         s << "\tsType = " << value.sType << '\n';
4337         s << "\tpNext = " << value.pNext << '\n';
4338         s << "\tflags = " << getSamplerCreateFlagsStr(value.flags) << '\n';
4339         s << "\tmagFilter = " << value.magFilter << '\n';
4340         s << "\tminFilter = " << value.minFilter << '\n';
4341         s << "\tmipmapMode = " << value.mipmapMode << '\n';
4342         s << "\taddressModeU = " << value.addressModeU << '\n';
4343         s << "\taddressModeV = " << value.addressModeV << '\n';
4344         s << "\taddressModeW = " << value.addressModeW << '\n';
4345         s << "\tmipLodBias = " << value.mipLodBias << '\n';
4346         s << "\tanisotropyEnable = " << value.anisotropyEnable << '\n';
4347         s << "\tmaxAnisotropy = " << value.maxAnisotropy << '\n';
4348         s << "\tcompareEnable = " << value.compareEnable << '\n';
4349         s << "\tcompareOp = " << value.compareOp << '\n';
4350         s << "\tminLod = " << value.minLod << '\n';
4351         s << "\tmaxLod = " << value.maxLod << '\n';
4352         s << "\tborderColor = " << value.borderColor << '\n';
4353         s << "\tunnormalizedCoordinates = " << value.unnormalizedCoordinates << '\n';
4354         s << '}';
4355         return s;
4356 }
4357
4358 std::ostream& operator<< (std::ostream& s, const VkDescriptorSetLayoutBinding& value)
4359 {
4360         s << "VkDescriptorSetLayoutBinding = {\n";
4361         s << "\tbinding = " << value.binding << '\n';
4362         s << "\tdescriptorType = " << value.descriptorType << '\n';
4363         s << "\tdescriptorCount = " << value.descriptorCount << '\n';
4364         s << "\tstageFlags = " << getShaderStageFlagsStr(value.stageFlags) << '\n';
4365         s << "\tpImmutableSamplers = " << value.pImmutableSamplers << '\n';
4366         s << '}';
4367         return s;
4368 }
4369
4370 std::ostream& operator<< (std::ostream& s, const VkDescriptorSetLayoutCreateInfo& value)
4371 {
4372         s << "VkDescriptorSetLayoutCreateInfo = {\n";
4373         s << "\tsType = " << value.sType << '\n';
4374         s << "\tpNext = " << value.pNext << '\n';
4375         s << "\tflags = " << getDescriptorSetLayoutCreateFlagsStr(value.flags) << '\n';
4376         s << "\tbindingCount = " << value.bindingCount << '\n';
4377         s << "\tpBindings = " << value.pBindings << '\n';
4378         s << '}';
4379         return s;
4380 }
4381
4382 std::ostream& operator<< (std::ostream& s, const VkDescriptorPoolSize& value)
4383 {
4384         s << "VkDescriptorPoolSize = {\n";
4385         s << "\ttype = " << value.type << '\n';
4386         s << "\tdescriptorCount = " << value.descriptorCount << '\n';
4387         s << '}';
4388         return s;
4389 }
4390
4391 std::ostream& operator<< (std::ostream& s, const VkDescriptorPoolCreateInfo& value)
4392 {
4393         s << "VkDescriptorPoolCreateInfo = {\n";
4394         s << "\tsType = " << value.sType << '\n';
4395         s << "\tpNext = " << value.pNext << '\n';
4396         s << "\tflags = " << getDescriptorPoolCreateFlagsStr(value.flags) << '\n';
4397         s << "\tmaxSets = " << value.maxSets << '\n';
4398         s << "\tpoolSizeCount = " << value.poolSizeCount << '\n';
4399         s << "\tpPoolSizes = " << value.pPoolSizes << '\n';
4400         s << '}';
4401         return s;
4402 }
4403
4404 std::ostream& operator<< (std::ostream& s, const VkDescriptorSetAllocateInfo& value)
4405 {
4406         s << "VkDescriptorSetAllocateInfo = {\n";
4407         s << "\tsType = " << value.sType << '\n';
4408         s << "\tpNext = " << value.pNext << '\n';
4409         s << "\tdescriptorPool = " << value.descriptorPool << '\n';
4410         s << "\tdescriptorSetCount = " << value.descriptorSetCount << '\n';
4411         s << "\tpSetLayouts = " << value.pSetLayouts << '\n';
4412         s << '}';
4413         return s;
4414 }
4415
4416 std::ostream& operator<< (std::ostream& s, const VkDescriptorImageInfo& value)
4417 {
4418         s << "VkDescriptorImageInfo = {\n";
4419         s << "\tsampler = " << value.sampler << '\n';
4420         s << "\timageView = " << value.imageView << '\n';
4421         s << "\timageLayout = " << value.imageLayout << '\n';
4422         s << '}';
4423         return s;
4424 }
4425
4426 std::ostream& operator<< (std::ostream& s, const VkDescriptorBufferInfo& value)
4427 {
4428         s << "VkDescriptorBufferInfo = {\n";
4429         s << "\tbuffer = " << value.buffer << '\n';
4430         s << "\toffset = " << value.offset << '\n';
4431         s << "\trange = " << value.range << '\n';
4432         s << '}';
4433         return s;
4434 }
4435
4436 std::ostream& operator<< (std::ostream& s, const VkWriteDescriptorSet& value)
4437 {
4438         s << "VkWriteDescriptorSet = {\n";
4439         s << "\tsType = " << value.sType << '\n';
4440         s << "\tpNext = " << value.pNext << '\n';
4441         s << "\tdstSet = " << value.dstSet << '\n';
4442         s << "\tdstBinding = " << value.dstBinding << '\n';
4443         s << "\tdstArrayElement = " << value.dstArrayElement << '\n';
4444         s << "\tdescriptorCount = " << value.descriptorCount << '\n';
4445         s << "\tdescriptorType = " << value.descriptorType << '\n';
4446         s << "\tpImageInfo = " << value.pImageInfo << '\n';
4447         s << "\tpBufferInfo = " << value.pBufferInfo << '\n';
4448         s << "\tpTexelBufferView = " << value.pTexelBufferView << '\n';
4449         s << '}';
4450         return s;
4451 }
4452
4453 std::ostream& operator<< (std::ostream& s, const VkCopyDescriptorSet& value)
4454 {
4455         s << "VkCopyDescriptorSet = {\n";
4456         s << "\tsType = " << value.sType << '\n';
4457         s << "\tpNext = " << value.pNext << '\n';
4458         s << "\tsrcSet = " << value.srcSet << '\n';
4459         s << "\tsrcBinding = " << value.srcBinding << '\n';
4460         s << "\tsrcArrayElement = " << value.srcArrayElement << '\n';
4461         s << "\tdstSet = " << value.dstSet << '\n';
4462         s << "\tdstBinding = " << value.dstBinding << '\n';
4463         s << "\tdstArrayElement = " << value.dstArrayElement << '\n';
4464         s << "\tdescriptorCount = " << value.descriptorCount << '\n';
4465         s << '}';
4466         return s;
4467 }
4468
4469 std::ostream& operator<< (std::ostream& s, const VkFramebufferCreateInfo& value)
4470 {
4471         s << "VkFramebufferCreateInfo = {\n";
4472         s << "\tsType = " << value.sType << '\n';
4473         s << "\tpNext = " << value.pNext << '\n';
4474         s << "\tflags = " << getFramebufferCreateFlagsStr(value.flags) << '\n';
4475         s << "\trenderPass = " << value.renderPass << '\n';
4476         s << "\tattachmentCount = " << value.attachmentCount << '\n';
4477         s << "\tpAttachments = " << value.pAttachments << '\n';
4478         s << "\twidth = " << value.width << '\n';
4479         s << "\theight = " << value.height << '\n';
4480         s << "\tlayers = " << value.layers << '\n';
4481         s << '}';
4482         return s;
4483 }
4484
4485 std::ostream& operator<< (std::ostream& s, const VkAttachmentDescription& value)
4486 {
4487         s << "VkAttachmentDescription = {\n";
4488         s << "\tflags = " << getAttachmentDescriptionFlagsStr(value.flags) << '\n';
4489         s << "\tformat = " << value.format << '\n';
4490         s << "\tsamples = " << value.samples << '\n';
4491         s << "\tloadOp = " << value.loadOp << '\n';
4492         s << "\tstoreOp = " << value.storeOp << '\n';
4493         s << "\tstencilLoadOp = " << value.stencilLoadOp << '\n';
4494         s << "\tstencilStoreOp = " << value.stencilStoreOp << '\n';
4495         s << "\tinitialLayout = " << value.initialLayout << '\n';
4496         s << "\tfinalLayout = " << value.finalLayout << '\n';
4497         s << '}';
4498         return s;
4499 }
4500
4501 std::ostream& operator<< (std::ostream& s, const VkAttachmentReference& value)
4502 {
4503         s << "VkAttachmentReference = {\n";
4504         s << "\tattachment = " << value.attachment << '\n';
4505         s << "\tlayout = " << value.layout << '\n';
4506         s << '}';
4507         return s;
4508 }
4509
4510 std::ostream& operator<< (std::ostream& s, const VkSubpassDescription& value)
4511 {
4512         s << "VkSubpassDescription = {\n";
4513         s << "\tflags = " << getSubpassDescriptionFlagsStr(value.flags) << '\n';
4514         s << "\tpipelineBindPoint = " << value.pipelineBindPoint << '\n';
4515         s << "\tinputAttachmentCount = " << value.inputAttachmentCount << '\n';
4516         s << "\tpInputAttachments = " << value.pInputAttachments << '\n';
4517         s << "\tcolorAttachmentCount = " << value.colorAttachmentCount << '\n';
4518         s << "\tpColorAttachments = " << value.pColorAttachments << '\n';
4519         s << "\tpResolveAttachments = " << value.pResolveAttachments << '\n';
4520         s << "\tpDepthStencilAttachment = " << value.pDepthStencilAttachment << '\n';
4521         s << "\tpreserveAttachmentCount = " << value.preserveAttachmentCount << '\n';
4522         s << "\tpPreserveAttachments = " << value.pPreserveAttachments << '\n';
4523         s << '}';
4524         return s;
4525 }
4526
4527 std::ostream& operator<< (std::ostream& s, const VkSubpassDependency& value)
4528 {
4529         s << "VkSubpassDependency = {\n";
4530         s << "\tsrcSubpass = " << value.srcSubpass << '\n';
4531         s << "\tdstSubpass = " << value.dstSubpass << '\n';
4532         s << "\tsrcStageMask = " << getPipelineStageFlagsStr(value.srcStageMask) << '\n';
4533         s << "\tdstStageMask = " << getPipelineStageFlagsStr(value.dstStageMask) << '\n';
4534         s << "\tsrcAccessMask = " << getAccessFlagsStr(value.srcAccessMask) << '\n';
4535         s << "\tdstAccessMask = " << getAccessFlagsStr(value.dstAccessMask) << '\n';
4536         s << "\tdependencyFlags = " << getDependencyFlagsStr(value.dependencyFlags) << '\n';
4537         s << '}';
4538         return s;
4539 }
4540
4541 std::ostream& operator<< (std::ostream& s, const VkRenderPassCreateInfo& value)
4542 {
4543         s << "VkRenderPassCreateInfo = {\n";
4544         s << "\tsType = " << value.sType << '\n';
4545         s << "\tpNext = " << value.pNext << '\n';
4546         s << "\tflags = " << getRenderPassCreateFlagsStr(value.flags) << '\n';
4547         s << "\tattachmentCount = " << value.attachmentCount << '\n';
4548         s << "\tpAttachments = " << value.pAttachments << '\n';
4549         s << "\tsubpassCount = " << value.subpassCount << '\n';
4550         s << "\tpSubpasses = " << value.pSubpasses << '\n';
4551         s << "\tdependencyCount = " << value.dependencyCount << '\n';
4552         s << "\tpDependencies = " << value.pDependencies << '\n';
4553         s << '}';
4554         return s;
4555 }
4556
4557 std::ostream& operator<< (std::ostream& s, const VkCommandPoolCreateInfo& value)
4558 {
4559         s << "VkCommandPoolCreateInfo = {\n";
4560         s << "\tsType = " << value.sType << '\n';
4561         s << "\tpNext = " << value.pNext << '\n';
4562         s << "\tflags = " << getCommandPoolCreateFlagsStr(value.flags) << '\n';
4563         s << "\tqueueFamilyIndex = " << value.queueFamilyIndex << '\n';
4564         s << '}';
4565         return s;
4566 }
4567
4568 std::ostream& operator<< (std::ostream& s, const VkCommandBufferAllocateInfo& value)
4569 {
4570         s << "VkCommandBufferAllocateInfo = {\n";
4571         s << "\tsType = " << value.sType << '\n';
4572         s << "\tpNext = " << value.pNext << '\n';
4573         s << "\tcommandPool = " << value.commandPool << '\n';
4574         s << "\tlevel = " << value.level << '\n';
4575         s << "\tcommandBufferCount = " << value.commandBufferCount << '\n';
4576         s << '}';
4577         return s;
4578 }
4579
4580 std::ostream& operator<< (std::ostream& s, const VkCommandBufferInheritanceInfo& value)
4581 {
4582         s << "VkCommandBufferInheritanceInfo = {\n";
4583         s << "\tsType = " << value.sType << '\n';
4584         s << "\tpNext = " << value.pNext << '\n';
4585         s << "\trenderPass = " << value.renderPass << '\n';
4586         s << "\tsubpass = " << value.subpass << '\n';
4587         s << "\tframebuffer = " << value.framebuffer << '\n';
4588         s << "\tocclusionQueryEnable = " << value.occlusionQueryEnable << '\n';
4589         s << "\tqueryFlags = " << getQueryControlFlagsStr(value.queryFlags) << '\n';
4590         s << "\tpipelineStatistics = " << getQueryPipelineStatisticFlagsStr(value.pipelineStatistics) << '\n';
4591         s << '}';
4592         return s;
4593 }
4594
4595 std::ostream& operator<< (std::ostream& s, const VkCommandBufferBeginInfo& value)
4596 {
4597         s << "VkCommandBufferBeginInfo = {\n";
4598         s << "\tsType = " << value.sType << '\n';
4599         s << "\tpNext = " << value.pNext << '\n';
4600         s << "\tflags = " << getCommandBufferUsageFlagsStr(value.flags) << '\n';
4601         s << "\tpInheritanceInfo = " << value.pInheritanceInfo << '\n';
4602         s << '}';
4603         return s;
4604 }
4605
4606 std::ostream& operator<< (std::ostream& s, const VkBufferCopy& value)
4607 {
4608         s << "VkBufferCopy = {\n";
4609         s << "\tsrcOffset = " << value.srcOffset << '\n';
4610         s << "\tdstOffset = " << value.dstOffset << '\n';
4611         s << "\tsize = " << value.size << '\n';
4612         s << '}';
4613         return s;
4614 }
4615
4616 std::ostream& operator<< (std::ostream& s, const VkImageSubresourceLayers& value)
4617 {
4618         s << "VkImageSubresourceLayers = {\n";
4619         s << "\taspectMask = " << getImageAspectFlagsStr(value.aspectMask) << '\n';
4620         s << "\tmipLevel = " << value.mipLevel << '\n';
4621         s << "\tbaseArrayLayer = " << value.baseArrayLayer << '\n';
4622         s << "\tlayerCount = " << value.layerCount << '\n';
4623         s << '}';
4624         return s;
4625 }
4626
4627 std::ostream& operator<< (std::ostream& s, const VkImageCopy& value)
4628 {
4629         s << "VkImageCopy = {\n";
4630         s << "\tsrcSubresource = " << value.srcSubresource << '\n';
4631         s << "\tsrcOffset = " << value.srcOffset << '\n';
4632         s << "\tdstSubresource = " << value.dstSubresource << '\n';
4633         s << "\tdstOffset = " << value.dstOffset << '\n';
4634         s << "\textent = " << value.extent << '\n';
4635         s << '}';
4636         return s;
4637 }
4638
4639 std::ostream& operator<< (std::ostream& s, const VkImageBlit& value)
4640 {
4641         s << "VkImageBlit = {\n";
4642         s << "\tsrcSubresource = " << value.srcSubresource << '\n';
4643         s << "\tsrcOffsets = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.srcOffsets), DE_ARRAY_END(value.srcOffsets)) << '\n';
4644         s << "\tdstSubresource = " << value.dstSubresource << '\n';
4645         s << "\tdstOffsets = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.dstOffsets), DE_ARRAY_END(value.dstOffsets)) << '\n';
4646         s << '}';
4647         return s;
4648 }
4649
4650 std::ostream& operator<< (std::ostream& s, const VkBufferImageCopy& value)
4651 {
4652         s << "VkBufferImageCopy = {\n";
4653         s << "\tbufferOffset = " << value.bufferOffset << '\n';
4654         s << "\tbufferRowLength = " << value.bufferRowLength << '\n';
4655         s << "\tbufferImageHeight = " << value.bufferImageHeight << '\n';
4656         s << "\timageSubresource = " << value.imageSubresource << '\n';
4657         s << "\timageOffset = " << value.imageOffset << '\n';
4658         s << "\timageExtent = " << value.imageExtent << '\n';
4659         s << '}';
4660         return s;
4661 }
4662
4663 std::ostream& operator<< (std::ostream& s, const VkClearColorValue& value)
4664 {
4665         s << "VkClearColorValue = {\n";
4666         s << "\tfloat32 = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.float32), DE_ARRAY_END(value.float32)) << '\n';
4667         s << "\tint32 = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.int32), DE_ARRAY_END(value.int32)) << '\n';
4668         s << "\tuint32 = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.uint32), DE_ARRAY_END(value.uint32)) << '\n';
4669         s << '}';
4670         return s;
4671 }
4672
4673 std::ostream& operator<< (std::ostream& s, const VkClearDepthStencilValue& value)
4674 {
4675         s << "VkClearDepthStencilValue = {\n";
4676         s << "\tdepth = " << value.depth << '\n';
4677         s << "\tstencil = " << value.stencil << '\n';
4678         s << '}';
4679         return s;
4680 }
4681
4682 std::ostream& operator<< (std::ostream& s, const VkClearValue& value)
4683 {
4684         s << "VkClearValue = {\n";
4685         s << "\tcolor = " << value.color << '\n';
4686         s << "\tdepthStencil = " << value.depthStencil << '\n';
4687         s << '}';
4688         return s;
4689 }
4690
4691 std::ostream& operator<< (std::ostream& s, const VkClearAttachment& value)
4692 {
4693         s << "VkClearAttachment = {\n";
4694         s << "\taspectMask = " << getImageAspectFlagsStr(value.aspectMask) << '\n';
4695         s << "\tcolorAttachment = " << value.colorAttachment << '\n';
4696         s << "\tclearValue = " << value.clearValue << '\n';
4697         s << '}';
4698         return s;
4699 }
4700
4701 std::ostream& operator<< (std::ostream& s, const VkClearRect& value)
4702 {
4703         s << "VkClearRect = {\n";
4704         s << "\trect = " << value.rect << '\n';
4705         s << "\tbaseArrayLayer = " << value.baseArrayLayer << '\n';
4706         s << "\tlayerCount = " << value.layerCount << '\n';
4707         s << '}';
4708         return s;
4709 }
4710
4711 std::ostream& operator<< (std::ostream& s, const VkImageResolve& value)
4712 {
4713         s << "VkImageResolve = {\n";
4714         s << "\tsrcSubresource = " << value.srcSubresource << '\n';
4715         s << "\tsrcOffset = " << value.srcOffset << '\n';
4716         s << "\tdstSubresource = " << value.dstSubresource << '\n';
4717         s << "\tdstOffset = " << value.dstOffset << '\n';
4718         s << "\textent = " << value.extent << '\n';
4719         s << '}';
4720         return s;
4721 }
4722
4723 std::ostream& operator<< (std::ostream& s, const VkMemoryBarrier& value)
4724 {
4725         s << "VkMemoryBarrier = {\n";
4726         s << "\tsType = " << value.sType << '\n';
4727         s << "\tpNext = " << value.pNext << '\n';
4728         s << "\tsrcAccessMask = " << getAccessFlagsStr(value.srcAccessMask) << '\n';
4729         s << "\tdstAccessMask = " << getAccessFlagsStr(value.dstAccessMask) << '\n';
4730         s << '}';
4731         return s;
4732 }
4733
4734 std::ostream& operator<< (std::ostream& s, const VkBufferMemoryBarrier& value)
4735 {
4736         s << "VkBufferMemoryBarrier = {\n";
4737         s << "\tsType = " << value.sType << '\n';
4738         s << "\tpNext = " << value.pNext << '\n';
4739         s << "\tsrcAccessMask = " << getAccessFlagsStr(value.srcAccessMask) << '\n';
4740         s << "\tdstAccessMask = " << getAccessFlagsStr(value.dstAccessMask) << '\n';
4741         s << "\tsrcQueueFamilyIndex = " << value.srcQueueFamilyIndex << '\n';
4742         s << "\tdstQueueFamilyIndex = " << value.dstQueueFamilyIndex << '\n';
4743         s << "\tbuffer = " << value.buffer << '\n';
4744         s << "\toffset = " << value.offset << '\n';
4745         s << "\tsize = " << value.size << '\n';
4746         s << '}';
4747         return s;
4748 }
4749
4750 std::ostream& operator<< (std::ostream& s, const VkImageMemoryBarrier& value)
4751 {
4752         s << "VkImageMemoryBarrier = {\n";
4753         s << "\tsType = " << value.sType << '\n';
4754         s << "\tpNext = " << value.pNext << '\n';
4755         s << "\tsrcAccessMask = " << getAccessFlagsStr(value.srcAccessMask) << '\n';
4756         s << "\tdstAccessMask = " << getAccessFlagsStr(value.dstAccessMask) << '\n';
4757         s << "\toldLayout = " << value.oldLayout << '\n';
4758         s << "\tnewLayout = " << value.newLayout << '\n';
4759         s << "\tsrcQueueFamilyIndex = " << value.srcQueueFamilyIndex << '\n';
4760         s << "\tdstQueueFamilyIndex = " << value.dstQueueFamilyIndex << '\n';
4761         s << "\timage = " << value.image << '\n';
4762         s << "\tsubresourceRange = " << value.subresourceRange << '\n';
4763         s << '}';
4764         return s;
4765 }
4766
4767 std::ostream& operator<< (std::ostream& s, const VkRenderPassBeginInfo& value)
4768 {
4769         s << "VkRenderPassBeginInfo = {\n";
4770         s << "\tsType = " << value.sType << '\n';
4771         s << "\tpNext = " << value.pNext << '\n';
4772         s << "\trenderPass = " << value.renderPass << '\n';
4773         s << "\tframebuffer = " << value.framebuffer << '\n';
4774         s << "\trenderArea = " << value.renderArea << '\n';
4775         s << "\tclearValueCount = " << value.clearValueCount << '\n';
4776         s << "\tpClearValues = " << value.pClearValues << '\n';
4777         s << '}';
4778         return s;
4779 }
4780
4781 std::ostream& operator<< (std::ostream& s, const VkDispatchIndirectCommand& value)
4782 {
4783         s << "VkDispatchIndirectCommand = {\n";
4784         s << "\tx = " << value.x << '\n';
4785         s << "\ty = " << value.y << '\n';
4786         s << "\tz = " << value.z << '\n';
4787         s << '}';
4788         return s;
4789 }
4790
4791 std::ostream& operator<< (std::ostream& s, const VkDrawIndexedIndirectCommand& value)
4792 {
4793         s << "VkDrawIndexedIndirectCommand = {\n";
4794         s << "\tindexCount = " << value.indexCount << '\n';
4795         s << "\tinstanceCount = " << value.instanceCount << '\n';
4796         s << "\tfirstIndex = " << value.firstIndex << '\n';
4797         s << "\tvertexOffset = " << value.vertexOffset << '\n';
4798         s << "\tfirstInstance = " << value.firstInstance << '\n';
4799         s << '}';
4800         return s;
4801 }
4802
4803 std::ostream& operator<< (std::ostream& s, const VkDrawIndirectCommand& value)
4804 {
4805         s << "VkDrawIndirectCommand = {\n";
4806         s << "\tvertexCount = " << value.vertexCount << '\n';
4807         s << "\tinstanceCount = " << value.instanceCount << '\n';
4808         s << "\tfirstVertex = " << value.firstVertex << '\n';
4809         s << "\tfirstInstance = " << value.firstInstance << '\n';
4810         s << '}';
4811         return s;
4812 }
4813
4814 std::ostream& operator<< (std::ostream& s, const VkBaseOutStructure& value)
4815 {
4816         s << "VkBaseOutStructure = {\n";
4817         s << "\tsType = " << value.sType << '\n';
4818         s << "\tpNext = " << value.pNext << '\n';
4819         s << '}';
4820         return s;
4821 }
4822
4823 std::ostream& operator<< (std::ostream& s, const VkBaseInStructure& value)
4824 {
4825         s << "VkBaseInStructure = {\n";
4826         s << "\tsType = " << value.sType << '\n';
4827         s << "\tpNext = " << value.pNext << '\n';
4828         s << '}';
4829         return s;
4830 }
4831
4832 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceSubgroupProperties& value)
4833 {
4834         s << "VkPhysicalDeviceSubgroupProperties = {\n";
4835         s << "\tsType = " << value.sType << '\n';
4836         s << "\tpNext = " << value.pNext << '\n';
4837         s << "\tsubgroupSize = " << value.subgroupSize << '\n';
4838         s << "\tsupportedStages = " << getShaderStageFlagsStr(value.supportedStages) << '\n';
4839         s << "\tsupportedOperations = " << getSubgroupFeatureFlagsStr(value.supportedOperations) << '\n';
4840         s << "\tquadOperationsInAllStages = " << value.quadOperationsInAllStages << '\n';
4841         s << '}';
4842         return s;
4843 }
4844
4845 std::ostream& operator<< (std::ostream& s, const VkBindBufferMemoryInfo& value)
4846 {
4847         s << "VkBindBufferMemoryInfo = {\n";
4848         s << "\tsType = " << value.sType << '\n';
4849         s << "\tpNext = " << value.pNext << '\n';
4850         s << "\tbuffer = " << value.buffer << '\n';
4851         s << "\tmemory = " << value.memory << '\n';
4852         s << "\tmemoryOffset = " << value.memoryOffset << '\n';
4853         s << '}';
4854         return s;
4855 }
4856
4857 std::ostream& operator<< (std::ostream& s, const VkBindImageMemoryInfo& value)
4858 {
4859         s << "VkBindImageMemoryInfo = {\n";
4860         s << "\tsType = " << value.sType << '\n';
4861         s << "\tpNext = " << value.pNext << '\n';
4862         s << "\timage = " << value.image << '\n';
4863         s << "\tmemory = " << value.memory << '\n';
4864         s << "\tmemoryOffset = " << value.memoryOffset << '\n';
4865         s << '}';
4866         return s;
4867 }
4868
4869 std::ostream& operator<< (std::ostream& s, const VkPhysicalDevice16BitStorageFeatures& value)
4870 {
4871         s << "VkPhysicalDevice16BitStorageFeatures = {\n";
4872         s << "\tsType = " << value.sType << '\n';
4873         s << "\tpNext = " << value.pNext << '\n';
4874         s << "\tstorageBuffer16BitAccess = " << value.storageBuffer16BitAccess << '\n';
4875         s << "\tuniformAndStorageBuffer16BitAccess = " << value.uniformAndStorageBuffer16BitAccess << '\n';
4876         s << "\tstoragePushConstant16 = " << value.storagePushConstant16 << '\n';
4877         s << "\tstorageInputOutput16 = " << value.storageInputOutput16 << '\n';
4878         s << '}';
4879         return s;
4880 }
4881
4882 std::ostream& operator<< (std::ostream& s, const VkMemoryDedicatedRequirements& value)
4883 {
4884         s << "VkMemoryDedicatedRequirements = {\n";
4885         s << "\tsType = " << value.sType << '\n';
4886         s << "\tpNext = " << value.pNext << '\n';
4887         s << "\tprefersDedicatedAllocation = " << value.prefersDedicatedAllocation << '\n';
4888         s << "\trequiresDedicatedAllocation = " << value.requiresDedicatedAllocation << '\n';
4889         s << '}';
4890         return s;
4891 }
4892
4893 std::ostream& operator<< (std::ostream& s, const VkMemoryDedicatedAllocateInfo& value)
4894 {
4895         s << "VkMemoryDedicatedAllocateInfo = {\n";
4896         s << "\tsType = " << value.sType << '\n';
4897         s << "\tpNext = " << value.pNext << '\n';
4898         s << "\timage = " << value.image << '\n';
4899         s << "\tbuffer = " << value.buffer << '\n';
4900         s << '}';
4901         return s;
4902 }
4903
4904 std::ostream& operator<< (std::ostream& s, const VkMemoryAllocateFlagsInfo& value)
4905 {
4906         s << "VkMemoryAllocateFlagsInfo = {\n";
4907         s << "\tsType = " << value.sType << '\n';
4908         s << "\tpNext = " << value.pNext << '\n';
4909         s << "\tflags = " << getMemoryAllocateFlagsStr(value.flags) << '\n';
4910         s << "\tdeviceMask = " << value.deviceMask << '\n';
4911         s << '}';
4912         return s;
4913 }
4914
4915 std::ostream& operator<< (std::ostream& s, const VkDeviceGroupRenderPassBeginInfo& value)
4916 {
4917         s << "VkDeviceGroupRenderPassBeginInfo = {\n";
4918         s << "\tsType = " << value.sType << '\n';
4919         s << "\tpNext = " << value.pNext << '\n';
4920         s << "\tdeviceMask = " << value.deviceMask << '\n';
4921         s << "\tdeviceRenderAreaCount = " << value.deviceRenderAreaCount << '\n';
4922         s << "\tpDeviceRenderAreas = " << value.pDeviceRenderAreas << '\n';
4923         s << '}';
4924         return s;
4925 }
4926
4927 std::ostream& operator<< (std::ostream& s, const VkDeviceGroupCommandBufferBeginInfo& value)
4928 {
4929         s << "VkDeviceGroupCommandBufferBeginInfo = {\n";
4930         s << "\tsType = " << value.sType << '\n';
4931         s << "\tpNext = " << value.pNext << '\n';
4932         s << "\tdeviceMask = " << value.deviceMask << '\n';
4933         s << '}';
4934         return s;
4935 }
4936
4937 std::ostream& operator<< (std::ostream& s, const VkDeviceGroupSubmitInfo& value)
4938 {
4939         s << "VkDeviceGroupSubmitInfo = {\n";
4940         s << "\tsType = " << value.sType << '\n';
4941         s << "\tpNext = " << value.pNext << '\n';
4942         s << "\twaitSemaphoreCount = " << value.waitSemaphoreCount << '\n';
4943         s << "\tpWaitSemaphoreDeviceIndices = " << value.pWaitSemaphoreDeviceIndices << '\n';
4944         s << "\tcommandBufferCount = " << value.commandBufferCount << '\n';
4945         s << "\tpCommandBufferDeviceMasks = " << value.pCommandBufferDeviceMasks << '\n';
4946         s << "\tsignalSemaphoreCount = " << value.signalSemaphoreCount << '\n';
4947         s << "\tpSignalSemaphoreDeviceIndices = " << value.pSignalSemaphoreDeviceIndices << '\n';
4948         s << '}';
4949         return s;
4950 }
4951
4952 std::ostream& operator<< (std::ostream& s, const VkDeviceGroupBindSparseInfo& value)
4953 {
4954         s << "VkDeviceGroupBindSparseInfo = {\n";
4955         s << "\tsType = " << value.sType << '\n';
4956         s << "\tpNext = " << value.pNext << '\n';
4957         s << "\tresourceDeviceIndex = " << value.resourceDeviceIndex << '\n';
4958         s << "\tmemoryDeviceIndex = " << value.memoryDeviceIndex << '\n';
4959         s << '}';
4960         return s;
4961 }
4962
4963 std::ostream& operator<< (std::ostream& s, const VkBindBufferMemoryDeviceGroupInfo& value)
4964 {
4965         s << "VkBindBufferMemoryDeviceGroupInfo = {\n";
4966         s << "\tsType = " << value.sType << '\n';
4967         s << "\tpNext = " << value.pNext << '\n';
4968         s << "\tdeviceIndexCount = " << value.deviceIndexCount << '\n';
4969         s << "\tpDeviceIndices = " << value.pDeviceIndices << '\n';
4970         s << '}';
4971         return s;
4972 }
4973
4974 std::ostream& operator<< (std::ostream& s, const VkBindImageMemoryDeviceGroupInfo& value)
4975 {
4976         s << "VkBindImageMemoryDeviceGroupInfo = {\n";
4977         s << "\tsType = " << value.sType << '\n';
4978         s << "\tpNext = " << value.pNext << '\n';
4979         s << "\tdeviceIndexCount = " << value.deviceIndexCount << '\n';
4980         s << "\tpDeviceIndices = " << value.pDeviceIndices << '\n';
4981         s << "\tsplitInstanceBindRegionCount = " << value.splitInstanceBindRegionCount << '\n';
4982         s << "\tpSplitInstanceBindRegions = " << value.pSplitInstanceBindRegions << '\n';
4983         s << '}';
4984         return s;
4985 }
4986
4987 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceGroupProperties& value)
4988 {
4989         s << "VkPhysicalDeviceGroupProperties = {\n";
4990         s << "\tsType = " << value.sType << '\n';
4991         s << "\tpNext = " << value.pNext << '\n';
4992         s << "\tphysicalDeviceCount = " << value.physicalDeviceCount << '\n';
4993         s << "\tphysicalDevices = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.physicalDevices), DE_ARRAY_END(value.physicalDevices)) << '\n';
4994         s << "\tsubsetAllocation = " << value.subsetAllocation << '\n';
4995         s << '}';
4996         return s;
4997 }
4998
4999 std::ostream& operator<< (std::ostream& s, const VkDeviceGroupDeviceCreateInfo& value)
5000 {
5001         s << "VkDeviceGroupDeviceCreateInfo = {\n";
5002         s << "\tsType = " << value.sType << '\n';
5003         s << "\tpNext = " << value.pNext << '\n';
5004         s << "\tphysicalDeviceCount = " << value.physicalDeviceCount << '\n';
5005         s << "\tpPhysicalDevices = " << value.pPhysicalDevices << '\n';
5006         s << '}';
5007         return s;
5008 }
5009
5010 std::ostream& operator<< (std::ostream& s, const VkBufferMemoryRequirementsInfo2& value)
5011 {
5012         s << "VkBufferMemoryRequirementsInfo2 = {\n";
5013         s << "\tsType = " << value.sType << '\n';
5014         s << "\tpNext = " << value.pNext << '\n';
5015         s << "\tbuffer = " << value.buffer << '\n';
5016         s << '}';
5017         return s;
5018 }
5019
5020 std::ostream& operator<< (std::ostream& s, const VkImageMemoryRequirementsInfo2& value)
5021 {
5022         s << "VkImageMemoryRequirementsInfo2 = {\n";
5023         s << "\tsType = " << value.sType << '\n';
5024         s << "\tpNext = " << value.pNext << '\n';
5025         s << "\timage = " << value.image << '\n';
5026         s << '}';
5027         return s;
5028 }
5029
5030 std::ostream& operator<< (std::ostream& s, const VkImageSparseMemoryRequirementsInfo2& value)
5031 {
5032         s << "VkImageSparseMemoryRequirementsInfo2 = {\n";
5033         s << "\tsType = " << value.sType << '\n';
5034         s << "\tpNext = " << value.pNext << '\n';
5035         s << "\timage = " << value.image << '\n';
5036         s << '}';
5037         return s;
5038 }
5039
5040 std::ostream& operator<< (std::ostream& s, const VkMemoryRequirements2& value)
5041 {
5042         s << "VkMemoryRequirements2 = {\n";
5043         s << "\tsType = " << value.sType << '\n';
5044         s << "\tpNext = " << value.pNext << '\n';
5045         s << "\tmemoryRequirements = " << value.memoryRequirements << '\n';
5046         s << '}';
5047         return s;
5048 }
5049
5050 std::ostream& operator<< (std::ostream& s, const VkSparseImageMemoryRequirements2& value)
5051 {
5052         s << "VkSparseImageMemoryRequirements2 = {\n";
5053         s << "\tsType = " << value.sType << '\n';
5054         s << "\tpNext = " << value.pNext << '\n';
5055         s << "\tmemoryRequirements = " << value.memoryRequirements << '\n';
5056         s << '}';
5057         return s;
5058 }
5059
5060 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceFeatures2& value)
5061 {
5062         s << "VkPhysicalDeviceFeatures2 = {\n";
5063         s << "\tsType = " << value.sType << '\n';
5064         s << "\tpNext = " << value.pNext << '\n';
5065         s << "\tfeatures = " << value.features << '\n';
5066         s << '}';
5067         return s;
5068 }
5069
5070 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceProperties2& value)
5071 {
5072         s << "VkPhysicalDeviceProperties2 = {\n";
5073         s << "\tsType = " << value.sType << '\n';
5074         s << "\tpNext = " << value.pNext << '\n';
5075         s << "\tproperties = " << value.properties << '\n';
5076         s << '}';
5077         return s;
5078 }
5079
5080 std::ostream& operator<< (std::ostream& s, const VkFormatProperties2& value)
5081 {
5082         s << "VkFormatProperties2 = {\n";
5083         s << "\tsType = " << value.sType << '\n';
5084         s << "\tpNext = " << value.pNext << '\n';
5085         s << "\tformatProperties = " << value.formatProperties << '\n';
5086         s << '}';
5087         return s;
5088 }
5089
5090 std::ostream& operator<< (std::ostream& s, const VkImageFormatProperties2& value)
5091 {
5092         s << "VkImageFormatProperties2 = {\n";
5093         s << "\tsType = " << value.sType << '\n';
5094         s << "\tpNext = " << value.pNext << '\n';
5095         s << "\timageFormatProperties = " << value.imageFormatProperties << '\n';
5096         s << '}';
5097         return s;
5098 }
5099
5100 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceImageFormatInfo2& value)
5101 {
5102         s << "VkPhysicalDeviceImageFormatInfo2 = {\n";
5103         s << "\tsType = " << value.sType << '\n';
5104         s << "\tpNext = " << value.pNext << '\n';
5105         s << "\tformat = " << value.format << '\n';
5106         s << "\ttype = " << value.type << '\n';
5107         s << "\ttiling = " << value.tiling << '\n';
5108         s << "\tusage = " << getImageUsageFlagsStr(value.usage) << '\n';
5109         s << "\tflags = " << getImageCreateFlagsStr(value.flags) << '\n';
5110         s << '}';
5111         return s;
5112 }
5113
5114 std::ostream& operator<< (std::ostream& s, const VkQueueFamilyProperties2& value)
5115 {
5116         s << "VkQueueFamilyProperties2 = {\n";
5117         s << "\tsType = " << value.sType << '\n';
5118         s << "\tpNext = " << value.pNext << '\n';
5119         s << "\tqueueFamilyProperties = " << value.queueFamilyProperties << '\n';
5120         s << '}';
5121         return s;
5122 }
5123
5124 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceMemoryProperties2& value)
5125 {
5126         s << "VkPhysicalDeviceMemoryProperties2 = {\n";
5127         s << "\tsType = " << value.sType << '\n';
5128         s << "\tpNext = " << value.pNext << '\n';
5129         s << "\tmemoryProperties = " << value.memoryProperties << '\n';
5130         s << '}';
5131         return s;
5132 }
5133
5134 std::ostream& operator<< (std::ostream& s, const VkSparseImageFormatProperties2& value)
5135 {
5136         s << "VkSparseImageFormatProperties2 = {\n";
5137         s << "\tsType = " << value.sType << '\n';
5138         s << "\tpNext = " << value.pNext << '\n';
5139         s << "\tproperties = " << value.properties << '\n';
5140         s << '}';
5141         return s;
5142 }
5143
5144 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceSparseImageFormatInfo2& value)
5145 {
5146         s << "VkPhysicalDeviceSparseImageFormatInfo2 = {\n";
5147         s << "\tsType = " << value.sType << '\n';
5148         s << "\tpNext = " << value.pNext << '\n';
5149         s << "\tformat = " << value.format << '\n';
5150         s << "\ttype = " << value.type << '\n';
5151         s << "\tsamples = " << value.samples << '\n';
5152         s << "\tusage = " << getImageUsageFlagsStr(value.usage) << '\n';
5153         s << "\ttiling = " << value.tiling << '\n';
5154         s << '}';
5155         return s;
5156 }
5157
5158 std::ostream& operator<< (std::ostream& s, const VkPhysicalDevicePointClippingProperties& value)
5159 {
5160         s << "VkPhysicalDevicePointClippingProperties = {\n";
5161         s << "\tsType = " << value.sType << '\n';
5162         s << "\tpNext = " << value.pNext << '\n';
5163         s << "\tpointClippingBehavior = " << value.pointClippingBehavior << '\n';
5164         s << '}';
5165         return s;
5166 }
5167
5168 std::ostream& operator<< (std::ostream& s, const VkInputAttachmentAspectReference& value)
5169 {
5170         s << "VkInputAttachmentAspectReference = {\n";
5171         s << "\tsubpass = " << value.subpass << '\n';
5172         s << "\tinputAttachmentIndex = " << value.inputAttachmentIndex << '\n';
5173         s << "\taspectMask = " << getImageAspectFlagsStr(value.aspectMask) << '\n';
5174         s << '}';
5175         return s;
5176 }
5177
5178 std::ostream& operator<< (std::ostream& s, const VkRenderPassInputAttachmentAspectCreateInfo& value)
5179 {
5180         s << "VkRenderPassInputAttachmentAspectCreateInfo = {\n";
5181         s << "\tsType = " << value.sType << '\n';
5182         s << "\tpNext = " << value.pNext << '\n';
5183         s << "\taspectReferenceCount = " << value.aspectReferenceCount << '\n';
5184         s << "\tpAspectReferences = " << value.pAspectReferences << '\n';
5185         s << '}';
5186         return s;
5187 }
5188
5189 std::ostream& operator<< (std::ostream& s, const VkImageViewUsageCreateInfo& value)
5190 {
5191         s << "VkImageViewUsageCreateInfo = {\n";
5192         s << "\tsType = " << value.sType << '\n';
5193         s << "\tpNext = " << value.pNext << '\n';
5194         s << "\tusage = " << getImageUsageFlagsStr(value.usage) << '\n';
5195         s << '}';
5196         return s;
5197 }
5198
5199 std::ostream& operator<< (std::ostream& s, const VkPipelineTessellationDomainOriginStateCreateInfo& value)
5200 {
5201         s << "VkPipelineTessellationDomainOriginStateCreateInfo = {\n";
5202         s << "\tsType = " << value.sType << '\n';
5203         s << "\tpNext = " << value.pNext << '\n';
5204         s << "\tdomainOrigin = " << value.domainOrigin << '\n';
5205         s << '}';
5206         return s;
5207 }
5208
5209 std::ostream& operator<< (std::ostream& s, const VkRenderPassMultiviewCreateInfo& value)
5210 {
5211         s << "VkRenderPassMultiviewCreateInfo = {\n";
5212         s << "\tsType = " << value.sType << '\n';
5213         s << "\tpNext = " << value.pNext << '\n';
5214         s << "\tsubpassCount = " << value.subpassCount << '\n';
5215         s << "\tpViewMasks = " << value.pViewMasks << '\n';
5216         s << "\tdependencyCount = " << value.dependencyCount << '\n';
5217         s << "\tpViewOffsets = " << value.pViewOffsets << '\n';
5218         s << "\tcorrelationMaskCount = " << value.correlationMaskCount << '\n';
5219         s << "\tpCorrelationMasks = " << value.pCorrelationMasks << '\n';
5220         s << '}';
5221         return s;
5222 }
5223
5224 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceMultiviewFeatures& value)
5225 {
5226         s << "VkPhysicalDeviceMultiviewFeatures = {\n";
5227         s << "\tsType = " << value.sType << '\n';
5228         s << "\tpNext = " << value.pNext << '\n';
5229         s << "\tmultiview = " << value.multiview << '\n';
5230         s << "\tmultiviewGeometryShader = " << value.multiviewGeometryShader << '\n';
5231         s << "\tmultiviewTessellationShader = " << value.multiviewTessellationShader << '\n';
5232         s << '}';
5233         return s;
5234 }
5235
5236 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceMultiviewProperties& value)
5237 {
5238         s << "VkPhysicalDeviceMultiviewProperties = {\n";
5239         s << "\tsType = " << value.sType << '\n';
5240         s << "\tpNext = " << value.pNext << '\n';
5241         s << "\tmaxMultiviewViewCount = " << value.maxMultiviewViewCount << '\n';
5242         s << "\tmaxMultiviewInstanceIndex = " << value.maxMultiviewInstanceIndex << '\n';
5243         s << '}';
5244         return s;
5245 }
5246
5247 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceVariablePointersFeatures& value)
5248 {
5249         s << "VkPhysicalDeviceVariablePointersFeatures = {\n";
5250         s << "\tsType = " << value.sType << '\n';
5251         s << "\tpNext = " << value.pNext << '\n';
5252         s << "\tvariablePointersStorageBuffer = " << value.variablePointersStorageBuffer << '\n';
5253         s << "\tvariablePointers = " << value.variablePointers << '\n';
5254         s << '}';
5255         return s;
5256 }
5257
5258 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceProtectedMemoryFeatures& value)
5259 {
5260         s << "VkPhysicalDeviceProtectedMemoryFeatures = {\n";
5261         s << "\tsType = " << value.sType << '\n';
5262         s << "\tpNext = " << value.pNext << '\n';
5263         s << "\tprotectedMemory = " << value.protectedMemory << '\n';
5264         s << '}';
5265         return s;
5266 }
5267
5268 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceProtectedMemoryProperties& value)
5269 {
5270         s << "VkPhysicalDeviceProtectedMemoryProperties = {\n";
5271         s << "\tsType = " << value.sType << '\n';
5272         s << "\tpNext = " << value.pNext << '\n';
5273         s << "\tprotectedNoFault = " << value.protectedNoFault << '\n';
5274         s << '}';
5275         return s;
5276 }
5277
5278 std::ostream& operator<< (std::ostream& s, const VkDeviceQueueInfo2& value)
5279 {
5280         s << "VkDeviceQueueInfo2 = {\n";
5281         s << "\tsType = " << value.sType << '\n';
5282         s << "\tpNext = " << value.pNext << '\n';
5283         s << "\tflags = " << getDeviceQueueCreateFlagsStr(value.flags) << '\n';
5284         s << "\tqueueFamilyIndex = " << value.queueFamilyIndex << '\n';
5285         s << "\tqueueIndex = " << value.queueIndex << '\n';
5286         s << '}';
5287         return s;
5288 }
5289
5290 std::ostream& operator<< (std::ostream& s, const VkProtectedSubmitInfo& value)
5291 {
5292         s << "VkProtectedSubmitInfo = {\n";
5293         s << "\tsType = " << value.sType << '\n';
5294         s << "\tpNext = " << value.pNext << '\n';
5295         s << "\tprotectedSubmit = " << value.protectedSubmit << '\n';
5296         s << '}';
5297         return s;
5298 }
5299
5300 std::ostream& operator<< (std::ostream& s, const VkSamplerYcbcrConversionCreateInfo& value)
5301 {
5302         s << "VkSamplerYcbcrConversionCreateInfo = {\n";
5303         s << "\tsType = " << value.sType << '\n';
5304         s << "\tpNext = " << value.pNext << '\n';
5305         s << "\tformat = " << value.format << '\n';
5306         s << "\tycbcrModel = " << value.ycbcrModel << '\n';
5307         s << "\tycbcrRange = " << value.ycbcrRange << '\n';
5308         s << "\tcomponents = " << value.components << '\n';
5309         s << "\txChromaOffset = " << value.xChromaOffset << '\n';
5310         s << "\tyChromaOffset = " << value.yChromaOffset << '\n';
5311         s << "\tchromaFilter = " << value.chromaFilter << '\n';
5312         s << "\tforceExplicitReconstruction = " << value.forceExplicitReconstruction << '\n';
5313         s << '}';
5314         return s;
5315 }
5316
5317 std::ostream& operator<< (std::ostream& s, const VkSamplerYcbcrConversionInfo& value)
5318 {
5319         s << "VkSamplerYcbcrConversionInfo = {\n";
5320         s << "\tsType = " << value.sType << '\n';
5321         s << "\tpNext = " << value.pNext << '\n';
5322         s << "\tconversion = " << value.conversion << '\n';
5323         s << '}';
5324         return s;
5325 }
5326
5327 std::ostream& operator<< (std::ostream& s, const VkBindImagePlaneMemoryInfo& value)
5328 {
5329         s << "VkBindImagePlaneMemoryInfo = {\n";
5330         s << "\tsType = " << value.sType << '\n';
5331         s << "\tpNext = " << value.pNext << '\n';
5332         s << "\tplaneAspect = " << value.planeAspect << '\n';
5333         s << '}';
5334         return s;
5335 }
5336
5337 std::ostream& operator<< (std::ostream& s, const VkImagePlaneMemoryRequirementsInfo& value)
5338 {
5339         s << "VkImagePlaneMemoryRequirementsInfo = {\n";
5340         s << "\tsType = " << value.sType << '\n';
5341         s << "\tpNext = " << value.pNext << '\n';
5342         s << "\tplaneAspect = " << value.planeAspect << '\n';
5343         s << '}';
5344         return s;
5345 }
5346
5347 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceSamplerYcbcrConversionFeatures& value)
5348 {
5349         s << "VkPhysicalDeviceSamplerYcbcrConversionFeatures = {\n";
5350         s << "\tsType = " << value.sType << '\n';
5351         s << "\tpNext = " << value.pNext << '\n';
5352         s << "\tsamplerYcbcrConversion = " << value.samplerYcbcrConversion << '\n';
5353         s << '}';
5354         return s;
5355 }
5356
5357 std::ostream& operator<< (std::ostream& s, const VkSamplerYcbcrConversionImageFormatProperties& value)
5358 {
5359         s << "VkSamplerYcbcrConversionImageFormatProperties = {\n";
5360         s << "\tsType = " << value.sType << '\n';
5361         s << "\tpNext = " << value.pNext << '\n';
5362         s << "\tcombinedImageSamplerDescriptorCount = " << value.combinedImageSamplerDescriptorCount << '\n';
5363         s << '}';
5364         return s;
5365 }
5366
5367 std::ostream& operator<< (std::ostream& s, const VkDescriptorUpdateTemplateEntry& value)
5368 {
5369         s << "VkDescriptorUpdateTemplateEntry = {\n";
5370         s << "\tdstBinding = " << value.dstBinding << '\n';
5371         s << "\tdstArrayElement = " << value.dstArrayElement << '\n';
5372         s << "\tdescriptorCount = " << value.descriptorCount << '\n';
5373         s << "\tdescriptorType = " << value.descriptorType << '\n';
5374         s << "\toffset = " << value.offset << '\n';
5375         s << "\tstride = " << value.stride << '\n';
5376         s << '}';
5377         return s;
5378 }
5379
5380 std::ostream& operator<< (std::ostream& s, const VkDescriptorUpdateTemplateCreateInfo& value)
5381 {
5382         s << "VkDescriptorUpdateTemplateCreateInfo = {\n";
5383         s << "\tsType = " << value.sType << '\n';
5384         s << "\tpNext = " << value.pNext << '\n';
5385         s << "\tflags = " << getDescriptorUpdateTemplateCreateFlagsStr(value.flags) << '\n';
5386         s << "\tdescriptorUpdateEntryCount = " << value.descriptorUpdateEntryCount << '\n';
5387         s << "\tpDescriptorUpdateEntries = " << value.pDescriptorUpdateEntries << '\n';
5388         s << "\ttemplateType = " << value.templateType << '\n';
5389         s << "\tdescriptorSetLayout = " << value.descriptorSetLayout << '\n';
5390         s << "\tpipelineBindPoint = " << value.pipelineBindPoint << '\n';
5391         s << "\tpipelineLayout = " << value.pipelineLayout << '\n';
5392         s << "\tset = " << value.set << '\n';
5393         s << '}';
5394         return s;
5395 }
5396
5397 std::ostream& operator<< (std::ostream& s, const VkExternalMemoryProperties& value)
5398 {
5399         s << "VkExternalMemoryProperties = {\n";
5400         s << "\texternalMemoryFeatures = " << getExternalMemoryFeatureFlagsStr(value.externalMemoryFeatures) << '\n';
5401         s << "\texportFromImportedHandleTypes = " << getExternalMemoryHandleTypeFlagsStr(value.exportFromImportedHandleTypes) << '\n';
5402         s << "\tcompatibleHandleTypes = " << getExternalMemoryHandleTypeFlagsStr(value.compatibleHandleTypes) << '\n';
5403         s << '}';
5404         return s;
5405 }
5406
5407 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceExternalImageFormatInfo& value)
5408 {
5409         s << "VkPhysicalDeviceExternalImageFormatInfo = {\n";
5410         s << "\tsType = " << value.sType << '\n';
5411         s << "\tpNext = " << value.pNext << '\n';
5412         s << "\thandleType = " << value.handleType << '\n';
5413         s << '}';
5414         return s;
5415 }
5416
5417 std::ostream& operator<< (std::ostream& s, const VkExternalImageFormatProperties& value)
5418 {
5419         s << "VkExternalImageFormatProperties = {\n";
5420         s << "\tsType = " << value.sType << '\n';
5421         s << "\tpNext = " << value.pNext << '\n';
5422         s << "\texternalMemoryProperties = " << value.externalMemoryProperties << '\n';
5423         s << '}';
5424         return s;
5425 }
5426
5427 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceExternalBufferInfo& value)
5428 {
5429         s << "VkPhysicalDeviceExternalBufferInfo = {\n";
5430         s << "\tsType = " << value.sType << '\n';
5431         s << "\tpNext = " << value.pNext << '\n';
5432         s << "\tflags = " << getBufferCreateFlagsStr(value.flags) << '\n';
5433         s << "\tusage = " << getBufferUsageFlagsStr(value.usage) << '\n';
5434         s << "\thandleType = " << value.handleType << '\n';
5435         s << '}';
5436         return s;
5437 }
5438
5439 std::ostream& operator<< (std::ostream& s, const VkExternalBufferProperties& value)
5440 {
5441         s << "VkExternalBufferProperties = {\n";
5442         s << "\tsType = " << value.sType << '\n';
5443         s << "\tpNext = " << value.pNext << '\n';
5444         s << "\texternalMemoryProperties = " << value.externalMemoryProperties << '\n';
5445         s << '}';
5446         return s;
5447 }
5448
5449 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceIDProperties& value)
5450 {
5451         s << "VkPhysicalDeviceIDProperties = {\n";
5452         s << "\tsType = " << value.sType << '\n';
5453         s << "\tpNext = " << value.pNext << '\n';
5454         s << "\tdeviceUUID = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<deUint8>(DE_ARRAY_BEGIN(value.deviceUUID)), tcu::Format::HexIterator<deUint8>(DE_ARRAY_END(value.deviceUUID))) << '\n';
5455         s << "\tdriverUUID = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<deUint8>(DE_ARRAY_BEGIN(value.driverUUID)), tcu::Format::HexIterator<deUint8>(DE_ARRAY_END(value.driverUUID))) << '\n';
5456         s << "\tdeviceLUID = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<deUint8>(DE_ARRAY_BEGIN(value.deviceLUID)), tcu::Format::HexIterator<deUint8>(DE_ARRAY_END(value.deviceLUID))) << '\n';
5457         s << "\tdeviceNodeMask = " << value.deviceNodeMask << '\n';
5458         s << "\tdeviceLUIDValid = " << value.deviceLUIDValid << '\n';
5459         s << '}';
5460         return s;
5461 }
5462
5463 std::ostream& operator<< (std::ostream& s, const VkExternalMemoryImageCreateInfo& value)
5464 {
5465         s << "VkExternalMemoryImageCreateInfo = {\n";
5466         s << "\tsType = " << value.sType << '\n';
5467         s << "\tpNext = " << value.pNext << '\n';
5468         s << "\thandleTypes = " << getExternalMemoryHandleTypeFlagsStr(value.handleTypes) << '\n';
5469         s << '}';
5470         return s;
5471 }
5472
5473 std::ostream& operator<< (std::ostream& s, const VkExternalMemoryBufferCreateInfo& value)
5474 {
5475         s << "VkExternalMemoryBufferCreateInfo = {\n";
5476         s << "\tsType = " << value.sType << '\n';
5477         s << "\tpNext = " << value.pNext << '\n';
5478         s << "\thandleTypes = " << getExternalMemoryHandleTypeFlagsStr(value.handleTypes) << '\n';
5479         s << '}';
5480         return s;
5481 }
5482
5483 std::ostream& operator<< (std::ostream& s, const VkExportMemoryAllocateInfo& value)
5484 {
5485         s << "VkExportMemoryAllocateInfo = {\n";
5486         s << "\tsType = " << value.sType << '\n';
5487         s << "\tpNext = " << value.pNext << '\n';
5488         s << "\thandleTypes = " << getExternalMemoryHandleTypeFlagsStr(value.handleTypes) << '\n';
5489         s << '}';
5490         return s;
5491 }
5492
5493 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceExternalFenceInfo& value)
5494 {
5495         s << "VkPhysicalDeviceExternalFenceInfo = {\n";
5496         s << "\tsType = " << value.sType << '\n';
5497         s << "\tpNext = " << value.pNext << '\n';
5498         s << "\thandleType = " << value.handleType << '\n';
5499         s << '}';
5500         return s;
5501 }
5502
5503 std::ostream& operator<< (std::ostream& s, const VkExternalFenceProperties& value)
5504 {
5505         s << "VkExternalFenceProperties = {\n";
5506         s << "\tsType = " << value.sType << '\n';
5507         s << "\tpNext = " << value.pNext << '\n';
5508         s << "\texportFromImportedHandleTypes = " << getExternalFenceHandleTypeFlagsStr(value.exportFromImportedHandleTypes) << '\n';
5509         s << "\tcompatibleHandleTypes = " << getExternalFenceHandleTypeFlagsStr(value.compatibleHandleTypes) << '\n';
5510         s << "\texternalFenceFeatures = " << getExternalFenceFeatureFlagsStr(value.externalFenceFeatures) << '\n';
5511         s << '}';
5512         return s;
5513 }
5514
5515 std::ostream& operator<< (std::ostream& s, const VkExportFenceCreateInfo& value)
5516 {
5517         s << "VkExportFenceCreateInfo = {\n";
5518         s << "\tsType = " << value.sType << '\n';
5519         s << "\tpNext = " << value.pNext << '\n';
5520         s << "\thandleTypes = " << getExternalFenceHandleTypeFlagsStr(value.handleTypes) << '\n';
5521         s << '}';
5522         return s;
5523 }
5524
5525 std::ostream& operator<< (std::ostream& s, const VkExportSemaphoreCreateInfo& value)
5526 {
5527         s << "VkExportSemaphoreCreateInfo = {\n";
5528         s << "\tsType = " << value.sType << '\n';
5529         s << "\tpNext = " << value.pNext << '\n';
5530         s << "\thandleTypes = " << getExternalSemaphoreHandleTypeFlagsStr(value.handleTypes) << '\n';
5531         s << '}';
5532         return s;
5533 }
5534
5535 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceExternalSemaphoreInfo& value)
5536 {
5537         s << "VkPhysicalDeviceExternalSemaphoreInfo = {\n";
5538         s << "\tsType = " << value.sType << '\n';
5539         s << "\tpNext = " << value.pNext << '\n';
5540         s << "\thandleType = " << value.handleType << '\n';
5541         s << '}';
5542         return s;
5543 }
5544
5545 std::ostream& operator<< (std::ostream& s, const VkExternalSemaphoreProperties& value)
5546 {
5547         s << "VkExternalSemaphoreProperties = {\n";
5548         s << "\tsType = " << value.sType << '\n';
5549         s << "\tpNext = " << value.pNext << '\n';
5550         s << "\texportFromImportedHandleTypes = " << getExternalSemaphoreHandleTypeFlagsStr(value.exportFromImportedHandleTypes) << '\n';
5551         s << "\tcompatibleHandleTypes = " << getExternalSemaphoreHandleTypeFlagsStr(value.compatibleHandleTypes) << '\n';
5552         s << "\texternalSemaphoreFeatures = " << getExternalSemaphoreFeatureFlagsStr(value.externalSemaphoreFeatures) << '\n';
5553         s << '}';
5554         return s;
5555 }
5556
5557 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceMaintenance3Properties& value)
5558 {
5559         s << "VkPhysicalDeviceMaintenance3Properties = {\n";
5560         s << "\tsType = " << value.sType << '\n';
5561         s << "\tpNext = " << value.pNext << '\n';
5562         s << "\tmaxPerSetDescriptors = " << value.maxPerSetDescriptors << '\n';
5563         s << "\tmaxMemoryAllocationSize = " << value.maxMemoryAllocationSize << '\n';
5564         s << '}';
5565         return s;
5566 }
5567
5568 std::ostream& operator<< (std::ostream& s, const VkDescriptorSetLayoutSupport& value)
5569 {
5570         s << "VkDescriptorSetLayoutSupport = {\n";
5571         s << "\tsType = " << value.sType << '\n';
5572         s << "\tpNext = " << value.pNext << '\n';
5573         s << "\tsupported = " << value.supported << '\n';
5574         s << '}';
5575         return s;
5576 }
5577
5578 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceShaderDrawParametersFeatures& value)
5579 {
5580         s << "VkPhysicalDeviceShaderDrawParametersFeatures = {\n";
5581         s << "\tsType = " << value.sType << '\n';
5582         s << "\tpNext = " << value.pNext << '\n';
5583         s << "\tshaderDrawParameters = " << value.shaderDrawParameters << '\n';
5584         s << '}';
5585         return s;
5586 }
5587
5588 std::ostream& operator<< (std::ostream& s, const VkSurfaceCapabilitiesKHR& value)
5589 {
5590         s << "VkSurfaceCapabilitiesKHR = {\n";
5591         s << "\tminImageCount = " << value.minImageCount << '\n';
5592         s << "\tmaxImageCount = " << value.maxImageCount << '\n';
5593         s << "\tcurrentExtent = " << value.currentExtent << '\n';
5594         s << "\tminImageExtent = " << value.minImageExtent << '\n';
5595         s << "\tmaxImageExtent = " << value.maxImageExtent << '\n';
5596         s << "\tmaxImageArrayLayers = " << value.maxImageArrayLayers << '\n';
5597         s << "\tsupportedTransforms = " << getSurfaceTransformFlagsKHRStr(value.supportedTransforms) << '\n';
5598         s << "\tcurrentTransform = " << value.currentTransform << '\n';
5599         s << "\tsupportedCompositeAlpha = " << getCompositeAlphaFlagsKHRStr(value.supportedCompositeAlpha) << '\n';
5600         s << "\tsupportedUsageFlags = " << getImageUsageFlagsStr(value.supportedUsageFlags) << '\n';
5601         s << '}';
5602         return s;
5603 }
5604
5605 std::ostream& operator<< (std::ostream& s, const VkSurfaceFormatKHR& value)
5606 {
5607         s << "VkSurfaceFormatKHR = {\n";
5608         s << "\tformat = " << value.format << '\n';
5609         s << "\tcolorSpace = " << value.colorSpace << '\n';
5610         s << '}';
5611         return s;
5612 }
5613
5614 std::ostream& operator<< (std::ostream& s, const VkSwapchainCreateInfoKHR& value)
5615 {
5616         s << "VkSwapchainCreateInfoKHR = {\n";
5617         s << "\tsType = " << value.sType << '\n';
5618         s << "\tpNext = " << value.pNext << '\n';
5619         s << "\tflags = " << getSwapchainCreateFlagsKHRStr(value.flags) << '\n';
5620         s << "\tsurface = " << value.surface << '\n';
5621         s << "\tminImageCount = " << value.minImageCount << '\n';
5622         s << "\timageFormat = " << value.imageFormat << '\n';
5623         s << "\timageColorSpace = " << value.imageColorSpace << '\n';
5624         s << "\timageExtent = " << value.imageExtent << '\n';
5625         s << "\timageArrayLayers = " << value.imageArrayLayers << '\n';
5626         s << "\timageUsage = " << getImageUsageFlagsStr(value.imageUsage) << '\n';
5627         s << "\timageSharingMode = " << value.imageSharingMode << '\n';
5628         s << "\tqueueFamilyIndexCount = " << value.queueFamilyIndexCount << '\n';
5629         s << "\tpQueueFamilyIndices = " << value.pQueueFamilyIndices << '\n';
5630         s << "\tpreTransform = " << value.preTransform << '\n';
5631         s << "\tcompositeAlpha = " << value.compositeAlpha << '\n';
5632         s << "\tpresentMode = " << value.presentMode << '\n';
5633         s << "\tclipped = " << value.clipped << '\n';
5634         s << "\toldSwapchain = " << value.oldSwapchain << '\n';
5635         s << '}';
5636         return s;
5637 }
5638
5639 std::ostream& operator<< (std::ostream& s, const VkPresentInfoKHR& value)
5640 {
5641         s << "VkPresentInfoKHR = {\n";
5642         s << "\tsType = " << value.sType << '\n';
5643         s << "\tpNext = " << value.pNext << '\n';
5644         s << "\twaitSemaphoreCount = " << value.waitSemaphoreCount << '\n';
5645         s << "\tpWaitSemaphores = " << value.pWaitSemaphores << '\n';
5646         s << "\tswapchainCount = " << value.swapchainCount << '\n';
5647         s << "\tpSwapchains = " << value.pSwapchains << '\n';
5648         s << "\tpImageIndices = " << value.pImageIndices << '\n';
5649         s << "\tpResults = " << value.pResults << '\n';
5650         s << '}';
5651         return s;
5652 }
5653
5654 std::ostream& operator<< (std::ostream& s, const VkImageSwapchainCreateInfoKHR& value)
5655 {
5656         s << "VkImageSwapchainCreateInfoKHR = {\n";
5657         s << "\tsType = " << value.sType << '\n';
5658         s << "\tpNext = " << value.pNext << '\n';
5659         s << "\tswapchain = " << value.swapchain << '\n';
5660         s << '}';
5661         return s;
5662 }
5663
5664 std::ostream& operator<< (std::ostream& s, const VkBindImageMemorySwapchainInfoKHR& value)
5665 {
5666         s << "VkBindImageMemorySwapchainInfoKHR = {\n";
5667         s << "\tsType = " << value.sType << '\n';
5668         s << "\tpNext = " << value.pNext << '\n';
5669         s << "\tswapchain = " << value.swapchain << '\n';
5670         s << "\timageIndex = " << value.imageIndex << '\n';
5671         s << '}';
5672         return s;
5673 }
5674
5675 std::ostream& operator<< (std::ostream& s, const VkAcquireNextImageInfoKHR& value)
5676 {
5677         s << "VkAcquireNextImageInfoKHR = {\n";
5678         s << "\tsType = " << value.sType << '\n';
5679         s << "\tpNext = " << value.pNext << '\n';
5680         s << "\tswapchain = " << value.swapchain << '\n';
5681         s << "\ttimeout = " << value.timeout << '\n';
5682         s << "\tsemaphore = " << value.semaphore << '\n';
5683         s << "\tfence = " << value.fence << '\n';
5684         s << "\tdeviceMask = " << value.deviceMask << '\n';
5685         s << '}';
5686         return s;
5687 }
5688
5689 std::ostream& operator<< (std::ostream& s, const VkDeviceGroupPresentCapabilitiesKHR& value)
5690 {
5691         s << "VkDeviceGroupPresentCapabilitiesKHR = {\n";
5692         s << "\tsType = " << value.sType << '\n';
5693         s << "\tpNext = " << value.pNext << '\n';
5694         s << "\tpresentMask = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.presentMask), DE_ARRAY_END(value.presentMask)) << '\n';
5695         s << "\tmodes = " << getDeviceGroupPresentModeFlagsKHRStr(value.modes) << '\n';
5696         s << '}';
5697         return s;
5698 }
5699
5700 std::ostream& operator<< (std::ostream& s, const VkDeviceGroupPresentInfoKHR& value)
5701 {
5702         s << "VkDeviceGroupPresentInfoKHR = {\n";
5703         s << "\tsType = " << value.sType << '\n';
5704         s << "\tpNext = " << value.pNext << '\n';
5705         s << "\tswapchainCount = " << value.swapchainCount << '\n';
5706         s << "\tpDeviceMasks = " << value.pDeviceMasks << '\n';
5707         s << "\tmode = " << value.mode << '\n';
5708         s << '}';
5709         return s;
5710 }
5711
5712 std::ostream& operator<< (std::ostream& s, const VkDeviceGroupSwapchainCreateInfoKHR& value)
5713 {
5714         s << "VkDeviceGroupSwapchainCreateInfoKHR = {\n";
5715         s << "\tsType = " << value.sType << '\n';
5716         s << "\tpNext = " << value.pNext << '\n';
5717         s << "\tmodes = " << getDeviceGroupPresentModeFlagsKHRStr(value.modes) << '\n';
5718         s << '}';
5719         return s;
5720 }
5721
5722 std::ostream& operator<< (std::ostream& s, const VkDisplayPropertiesKHR& value)
5723 {
5724         s << "VkDisplayPropertiesKHR = {\n";
5725         s << "\tdisplay = " << value.display << '\n';
5726         s << "\tdisplayName = " << getCharPtrStr(value.displayName) << '\n';
5727         s << "\tphysicalDimensions = " << value.physicalDimensions << '\n';
5728         s << "\tphysicalResolution = " << value.physicalResolution << '\n';
5729         s << "\tsupportedTransforms = " << getSurfaceTransformFlagsKHRStr(value.supportedTransforms) << '\n';
5730         s << "\tplaneReorderPossible = " << value.planeReorderPossible << '\n';
5731         s << "\tpersistentContent = " << value.persistentContent << '\n';
5732         s << '}';
5733         return s;
5734 }
5735
5736 std::ostream& operator<< (std::ostream& s, const VkDisplayModeParametersKHR& value)
5737 {
5738         s << "VkDisplayModeParametersKHR = {\n";
5739         s << "\tvisibleRegion = " << value.visibleRegion << '\n';
5740         s << "\trefreshRate = " << value.refreshRate << '\n';
5741         s << '}';
5742         return s;
5743 }
5744
5745 std::ostream& operator<< (std::ostream& s, const VkDisplayModePropertiesKHR& value)
5746 {
5747         s << "VkDisplayModePropertiesKHR = {\n";
5748         s << "\tdisplayMode = " << value.displayMode << '\n';
5749         s << "\tparameters = " << value.parameters << '\n';
5750         s << '}';
5751         return s;
5752 }
5753
5754 std::ostream& operator<< (std::ostream& s, const VkDisplayModeCreateInfoKHR& value)
5755 {
5756         s << "VkDisplayModeCreateInfoKHR = {\n";
5757         s << "\tsType = " << value.sType << '\n';
5758         s << "\tpNext = " << value.pNext << '\n';
5759         s << "\tflags = " << getDisplayModeCreateFlagsKHRStr(value.flags) << '\n';
5760         s << "\tparameters = " << value.parameters << '\n';
5761         s << '}';
5762         return s;
5763 }
5764
5765 std::ostream& operator<< (std::ostream& s, const VkDisplayPlaneCapabilitiesKHR& value)
5766 {
5767         s << "VkDisplayPlaneCapabilitiesKHR = {\n";
5768         s << "\tsupportedAlpha = " << getDisplayPlaneAlphaFlagsKHRStr(value.supportedAlpha) << '\n';
5769         s << "\tminSrcPosition = " << value.minSrcPosition << '\n';
5770         s << "\tmaxSrcPosition = " << value.maxSrcPosition << '\n';
5771         s << "\tminSrcExtent = " << value.minSrcExtent << '\n';
5772         s << "\tmaxSrcExtent = " << value.maxSrcExtent << '\n';
5773         s << "\tminDstPosition = " << value.minDstPosition << '\n';
5774         s << "\tmaxDstPosition = " << value.maxDstPosition << '\n';
5775         s << "\tminDstExtent = " << value.minDstExtent << '\n';
5776         s << "\tmaxDstExtent = " << value.maxDstExtent << '\n';
5777         s << '}';
5778         return s;
5779 }
5780
5781 std::ostream& operator<< (std::ostream& s, const VkDisplayPlanePropertiesKHR& value)
5782 {
5783         s << "VkDisplayPlanePropertiesKHR = {\n";
5784         s << "\tcurrentDisplay = " << value.currentDisplay << '\n';
5785         s << "\tcurrentStackIndex = " << value.currentStackIndex << '\n';
5786         s << '}';
5787         return s;
5788 }
5789
5790 std::ostream& operator<< (std::ostream& s, const VkDisplaySurfaceCreateInfoKHR& value)
5791 {
5792         s << "VkDisplaySurfaceCreateInfoKHR = {\n";
5793         s << "\tsType = " << value.sType << '\n';
5794         s << "\tpNext = " << value.pNext << '\n';
5795         s << "\tflags = " << getDisplaySurfaceCreateFlagsKHRStr(value.flags) << '\n';
5796         s << "\tdisplayMode = " << value.displayMode << '\n';
5797         s << "\tplaneIndex = " << value.planeIndex << '\n';
5798         s << "\tplaneStackIndex = " << value.planeStackIndex << '\n';
5799         s << "\ttransform = " << value.transform << '\n';
5800         s << "\tglobalAlpha = " << value.globalAlpha << '\n';
5801         s << "\talphaMode = " << value.alphaMode << '\n';
5802         s << "\timageExtent = " << value.imageExtent << '\n';
5803         s << '}';
5804         return s;
5805 }
5806
5807 std::ostream& operator<< (std::ostream& s, const VkDisplayPresentInfoKHR& value)
5808 {
5809         s << "VkDisplayPresentInfoKHR = {\n";
5810         s << "\tsType = " << value.sType << '\n';
5811         s << "\tpNext = " << value.pNext << '\n';
5812         s << "\tsrcRect = " << value.srcRect << '\n';
5813         s << "\tdstRect = " << value.dstRect << '\n';
5814         s << "\tpersistent = " << value.persistent << '\n';
5815         s << '}';
5816         return s;
5817 }
5818
5819 std::ostream& operator<< (std::ostream& s, const VkImportMemoryFdInfoKHR& value)
5820 {
5821         s << "VkImportMemoryFdInfoKHR = {\n";
5822         s << "\tsType = " << value.sType << '\n';
5823         s << "\tpNext = " << value.pNext << '\n';
5824         s << "\thandleType = " << value.handleType << '\n';
5825         s << "\tfd = " << value.fd << '\n';
5826         s << '}';
5827         return s;
5828 }
5829
5830 std::ostream& operator<< (std::ostream& s, const VkMemoryFdPropertiesKHR& value)
5831 {
5832         s << "VkMemoryFdPropertiesKHR = {\n";
5833         s << "\tsType = " << value.sType << '\n';
5834         s << "\tpNext = " << value.pNext << '\n';
5835         s << "\tmemoryTypeBits = " << value.memoryTypeBits << '\n';
5836         s << '}';
5837         return s;
5838 }
5839
5840 std::ostream& operator<< (std::ostream& s, const VkMemoryGetFdInfoKHR& value)
5841 {
5842         s << "VkMemoryGetFdInfoKHR = {\n";
5843         s << "\tsType = " << value.sType << '\n';
5844         s << "\tpNext = " << value.pNext << '\n';
5845         s << "\tmemory = " << value.memory << '\n';
5846         s << "\thandleType = " << value.handleType << '\n';
5847         s << '}';
5848         return s;
5849 }
5850
5851 std::ostream& operator<< (std::ostream& s, const VkImportSemaphoreFdInfoKHR& value)
5852 {
5853         s << "VkImportSemaphoreFdInfoKHR = {\n";
5854         s << "\tsType = " << value.sType << '\n';
5855         s << "\tpNext = " << value.pNext << '\n';
5856         s << "\tsemaphore = " << value.semaphore << '\n';
5857         s << "\tflags = " << getSemaphoreImportFlagsStr(value.flags) << '\n';
5858         s << "\thandleType = " << value.handleType << '\n';
5859         s << "\tfd = " << value.fd << '\n';
5860         s << '}';
5861         return s;
5862 }
5863
5864 std::ostream& operator<< (std::ostream& s, const VkSemaphoreGetFdInfoKHR& value)
5865 {
5866         s << "VkSemaphoreGetFdInfoKHR = {\n";
5867         s << "\tsType = " << value.sType << '\n';
5868         s << "\tpNext = " << value.pNext << '\n';
5869         s << "\tsemaphore = " << value.semaphore << '\n';
5870         s << "\thandleType = " << value.handleType << '\n';
5871         s << '}';
5872         return s;
5873 }
5874
5875 std::ostream& operator<< (std::ostream& s, const VkPhysicalDevicePushDescriptorPropertiesKHR& value)
5876 {
5877         s << "VkPhysicalDevicePushDescriptorPropertiesKHR = {\n";
5878         s << "\tsType = " << value.sType << '\n';
5879         s << "\tpNext = " << value.pNext << '\n';
5880         s << "\tmaxPushDescriptors = " << value.maxPushDescriptors << '\n';
5881         s << '}';
5882         return s;
5883 }
5884
5885 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceShaderFloat16Int8FeaturesKHR& value)
5886 {
5887         s << "VkPhysicalDeviceShaderFloat16Int8FeaturesKHR = {\n";
5888         s << "\tsType = " << value.sType << '\n';
5889         s << "\tpNext = " << value.pNext << '\n';
5890         s << "\tshaderFloat16 = " << value.shaderFloat16 << '\n';
5891         s << "\tshaderInt8 = " << value.shaderInt8 << '\n';
5892         s << '}';
5893         return s;
5894 }
5895
5896 std::ostream& operator<< (std::ostream& s, const VkRectLayerKHR& value)
5897 {
5898         s << "VkRectLayerKHR = {\n";
5899         s << "\toffset = " << value.offset << '\n';
5900         s << "\textent = " << value.extent << '\n';
5901         s << "\tlayer = " << value.layer << '\n';
5902         s << '}';
5903         return s;
5904 }
5905
5906 std::ostream& operator<< (std::ostream& s, const VkPresentRegionKHR& value)
5907 {
5908         s << "VkPresentRegionKHR = {\n";
5909         s << "\trectangleCount = " << value.rectangleCount << '\n';
5910         s << "\tpRectangles = " << value.pRectangles << '\n';
5911         s << '}';
5912         return s;
5913 }
5914
5915 std::ostream& operator<< (std::ostream& s, const VkPresentRegionsKHR& value)
5916 {
5917         s << "VkPresentRegionsKHR = {\n";
5918         s << "\tsType = " << value.sType << '\n';
5919         s << "\tpNext = " << value.pNext << '\n';
5920         s << "\tswapchainCount = " << value.swapchainCount << '\n';
5921         s << "\tpRegions = " << value.pRegions << '\n';
5922         s << '}';
5923         return s;
5924 }
5925
5926 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceImagelessFramebufferFeaturesKHR& value)
5927 {
5928         s << "VkPhysicalDeviceImagelessFramebufferFeaturesKHR = {\n";
5929         s << "\tsType = " << value.sType << '\n';
5930         s << "\tpNext = " << value.pNext << '\n';
5931         s << "\timagelessFramebuffer = " << value.imagelessFramebuffer << '\n';
5932         s << '}';
5933         return s;
5934 }
5935
5936 std::ostream& operator<< (std::ostream& s, const VkFramebufferAttachmentImageInfoKHR& value)
5937 {
5938         s << "VkFramebufferAttachmentImageInfoKHR = {\n";
5939         s << "\tsType = " << value.sType << '\n';
5940         s << "\tpNext = " << value.pNext << '\n';
5941         s << "\tflags = " << getImageCreateFlagsStr(value.flags) << '\n';
5942         s << "\tusage = " << getImageUsageFlagsStr(value.usage) << '\n';
5943         s << "\twidth = " << value.width << '\n';
5944         s << "\theight = " << value.height << '\n';
5945         s << "\tlayerCount = " << value.layerCount << '\n';
5946         s << "\tviewFormatCount = " << value.viewFormatCount << '\n';
5947         s << "\tpViewFormats = " << value.pViewFormats << '\n';
5948         s << '}';
5949         return s;
5950 }
5951
5952 std::ostream& operator<< (std::ostream& s, const VkFramebufferAttachmentsCreateInfoKHR& value)
5953 {
5954         s << "VkFramebufferAttachmentsCreateInfoKHR = {\n";
5955         s << "\tsType = " << value.sType << '\n';
5956         s << "\tpNext = " << value.pNext << '\n';
5957         s << "\tattachmentImageInfoCount = " << value.attachmentImageInfoCount << '\n';
5958         s << "\tpAttachmentImageInfos = " << value.pAttachmentImageInfos << '\n';
5959         s << '}';
5960         return s;
5961 }
5962
5963 std::ostream& operator<< (std::ostream& s, const VkRenderPassAttachmentBeginInfoKHR& value)
5964 {
5965         s << "VkRenderPassAttachmentBeginInfoKHR = {\n";
5966         s << "\tsType = " << value.sType << '\n';
5967         s << "\tpNext = " << value.pNext << '\n';
5968         s << "\tattachmentCount = " << value.attachmentCount << '\n';
5969         s << "\tpAttachments = " << value.pAttachments << '\n';
5970         s << '}';
5971         return s;
5972 }
5973
5974 std::ostream& operator<< (std::ostream& s, const VkAttachmentDescription2KHR& value)
5975 {
5976         s << "VkAttachmentDescription2KHR = {\n";
5977         s << "\tsType = " << value.sType << '\n';
5978         s << "\tpNext = " << value.pNext << '\n';
5979         s << "\tflags = " << getAttachmentDescriptionFlagsStr(value.flags) << '\n';
5980         s << "\tformat = " << value.format << '\n';
5981         s << "\tsamples = " << value.samples << '\n';
5982         s << "\tloadOp = " << value.loadOp << '\n';
5983         s << "\tstoreOp = " << value.storeOp << '\n';
5984         s << "\tstencilLoadOp = " << value.stencilLoadOp << '\n';
5985         s << "\tstencilStoreOp = " << value.stencilStoreOp << '\n';
5986         s << "\tinitialLayout = " << value.initialLayout << '\n';
5987         s << "\tfinalLayout = " << value.finalLayout << '\n';
5988         s << '}';
5989         return s;
5990 }
5991
5992 std::ostream& operator<< (std::ostream& s, const VkAttachmentReference2KHR& value)
5993 {
5994         s << "VkAttachmentReference2KHR = {\n";
5995         s << "\tsType = " << value.sType << '\n';
5996         s << "\tpNext = " << value.pNext << '\n';
5997         s << "\tattachment = " << value.attachment << '\n';
5998         s << "\tlayout = " << value.layout << '\n';
5999         s << "\taspectMask = " << getImageAspectFlagsStr(value.aspectMask) << '\n';
6000         s << '}';
6001         return s;
6002 }
6003
6004 std::ostream& operator<< (std::ostream& s, const VkSubpassDescription2KHR& value)
6005 {
6006         s << "VkSubpassDescription2KHR = {\n";
6007         s << "\tsType = " << value.sType << '\n';
6008         s << "\tpNext = " << value.pNext << '\n';
6009         s << "\tflags = " << getSubpassDescriptionFlagsStr(value.flags) << '\n';
6010         s << "\tpipelineBindPoint = " << value.pipelineBindPoint << '\n';
6011         s << "\tviewMask = " << value.viewMask << '\n';
6012         s << "\tinputAttachmentCount = " << value.inputAttachmentCount << '\n';
6013         s << "\tpInputAttachments = " << value.pInputAttachments << '\n';
6014         s << "\tcolorAttachmentCount = " << value.colorAttachmentCount << '\n';
6015         s << "\tpColorAttachments = " << value.pColorAttachments << '\n';
6016         s << "\tpResolveAttachments = " << value.pResolveAttachments << '\n';
6017         s << "\tpDepthStencilAttachment = " << value.pDepthStencilAttachment << '\n';
6018         s << "\tpreserveAttachmentCount = " << value.preserveAttachmentCount << '\n';
6019         s << "\tpPreserveAttachments = " << value.pPreserveAttachments << '\n';
6020         s << '}';
6021         return s;
6022 }
6023
6024 std::ostream& operator<< (std::ostream& s, const VkSubpassDependency2KHR& value)
6025 {
6026         s << "VkSubpassDependency2KHR = {\n";
6027         s << "\tsType = " << value.sType << '\n';
6028         s << "\tpNext = " << value.pNext << '\n';
6029         s << "\tsrcSubpass = " << value.srcSubpass << '\n';
6030         s << "\tdstSubpass = " << value.dstSubpass << '\n';
6031         s << "\tsrcStageMask = " << getPipelineStageFlagsStr(value.srcStageMask) << '\n';
6032         s << "\tdstStageMask = " << getPipelineStageFlagsStr(value.dstStageMask) << '\n';
6033         s << "\tsrcAccessMask = " << getAccessFlagsStr(value.srcAccessMask) << '\n';
6034         s << "\tdstAccessMask = " << getAccessFlagsStr(value.dstAccessMask) << '\n';
6035         s << "\tdependencyFlags = " << getDependencyFlagsStr(value.dependencyFlags) << '\n';
6036         s << "\tviewOffset = " << value.viewOffset << '\n';
6037         s << '}';
6038         return s;
6039 }
6040
6041 std::ostream& operator<< (std::ostream& s, const VkRenderPassCreateInfo2KHR& value)
6042 {
6043         s << "VkRenderPassCreateInfo2KHR = {\n";
6044         s << "\tsType = " << value.sType << '\n';
6045         s << "\tpNext = " << value.pNext << '\n';
6046         s << "\tflags = " << getRenderPassCreateFlagsStr(value.flags) << '\n';
6047         s << "\tattachmentCount = " << value.attachmentCount << '\n';
6048         s << "\tpAttachments = " << value.pAttachments << '\n';
6049         s << "\tsubpassCount = " << value.subpassCount << '\n';
6050         s << "\tpSubpasses = " << value.pSubpasses << '\n';
6051         s << "\tdependencyCount = " << value.dependencyCount << '\n';
6052         s << "\tpDependencies = " << value.pDependencies << '\n';
6053         s << "\tcorrelatedViewMaskCount = " << value.correlatedViewMaskCount << '\n';
6054         s << "\tpCorrelatedViewMasks = " << value.pCorrelatedViewMasks << '\n';
6055         s << '}';
6056         return s;
6057 }
6058
6059 std::ostream& operator<< (std::ostream& s, const VkSubpassBeginInfoKHR& value)
6060 {
6061         s << "VkSubpassBeginInfoKHR = {\n";
6062         s << "\tsType = " << value.sType << '\n';
6063         s << "\tpNext = " << value.pNext << '\n';
6064         s << "\tcontents = " << value.contents << '\n';
6065         s << '}';
6066         return s;
6067 }
6068
6069 std::ostream& operator<< (std::ostream& s, const VkSubpassEndInfoKHR& value)
6070 {
6071         s << "VkSubpassEndInfoKHR = {\n";
6072         s << "\tsType = " << value.sType << '\n';
6073         s << "\tpNext = " << value.pNext << '\n';
6074         s << '}';
6075         return s;
6076 }
6077
6078 std::ostream& operator<< (std::ostream& s, const VkSharedPresentSurfaceCapabilitiesKHR& value)
6079 {
6080         s << "VkSharedPresentSurfaceCapabilitiesKHR = {\n";
6081         s << "\tsType = " << value.sType << '\n';
6082         s << "\tpNext = " << value.pNext << '\n';
6083         s << "\tsharedPresentSupportedUsageFlags = " << getImageUsageFlagsStr(value.sharedPresentSupportedUsageFlags) << '\n';
6084         s << '}';
6085         return s;
6086 }
6087
6088 std::ostream& operator<< (std::ostream& s, const VkImportFenceFdInfoKHR& value)
6089 {
6090         s << "VkImportFenceFdInfoKHR = {\n";
6091         s << "\tsType = " << value.sType << '\n';
6092         s << "\tpNext = " << value.pNext << '\n';
6093         s << "\tfence = " << value.fence << '\n';
6094         s << "\tflags = " << getFenceImportFlagsStr(value.flags) << '\n';
6095         s << "\thandleType = " << value.handleType << '\n';
6096         s << "\tfd = " << value.fd << '\n';
6097         s << '}';
6098         return s;
6099 }
6100
6101 std::ostream& operator<< (std::ostream& s, const VkFenceGetFdInfoKHR& value)
6102 {
6103         s << "VkFenceGetFdInfoKHR = {\n";
6104         s << "\tsType = " << value.sType << '\n';
6105         s << "\tpNext = " << value.pNext << '\n';
6106         s << "\tfence = " << value.fence << '\n';
6107         s << "\thandleType = " << value.handleType << '\n';
6108         s << '}';
6109         return s;
6110 }
6111
6112 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceSurfaceInfo2KHR& value)
6113 {
6114         s << "VkPhysicalDeviceSurfaceInfo2KHR = {\n";
6115         s << "\tsType = " << value.sType << '\n';
6116         s << "\tpNext = " << value.pNext << '\n';
6117         s << "\tsurface = " << value.surface << '\n';
6118         s << '}';
6119         return s;
6120 }
6121
6122 std::ostream& operator<< (std::ostream& s, const VkSurfaceCapabilities2KHR& value)
6123 {
6124         s << "VkSurfaceCapabilities2KHR = {\n";
6125         s << "\tsType = " << value.sType << '\n';
6126         s << "\tpNext = " << value.pNext << '\n';
6127         s << "\tsurfaceCapabilities = " << value.surfaceCapabilities << '\n';
6128         s << '}';
6129         return s;
6130 }
6131
6132 std::ostream& operator<< (std::ostream& s, const VkSurfaceFormat2KHR& value)
6133 {
6134         s << "VkSurfaceFormat2KHR = {\n";
6135         s << "\tsType = " << value.sType << '\n';
6136         s << "\tpNext = " << value.pNext << '\n';
6137         s << "\tsurfaceFormat = " << value.surfaceFormat << '\n';
6138         s << '}';
6139         return s;
6140 }
6141
6142 std::ostream& operator<< (std::ostream& s, const VkDisplayProperties2KHR& value)
6143 {
6144         s << "VkDisplayProperties2KHR = {\n";
6145         s << "\tsType = " << value.sType << '\n';
6146         s << "\tpNext = " << value.pNext << '\n';
6147         s << "\tdisplayProperties = " << value.displayProperties << '\n';
6148         s << '}';
6149         return s;
6150 }
6151
6152 std::ostream& operator<< (std::ostream& s, const VkDisplayPlaneProperties2KHR& value)
6153 {
6154         s << "VkDisplayPlaneProperties2KHR = {\n";
6155         s << "\tsType = " << value.sType << '\n';
6156         s << "\tpNext = " << value.pNext << '\n';
6157         s << "\tdisplayPlaneProperties = " << value.displayPlaneProperties << '\n';
6158         s << '}';
6159         return s;
6160 }
6161
6162 std::ostream& operator<< (std::ostream& s, const VkDisplayModeProperties2KHR& value)
6163 {
6164         s << "VkDisplayModeProperties2KHR = {\n";
6165         s << "\tsType = " << value.sType << '\n';
6166         s << "\tpNext = " << value.pNext << '\n';
6167         s << "\tdisplayModeProperties = " << value.displayModeProperties << '\n';
6168         s << '}';
6169         return s;
6170 }
6171
6172 std::ostream& operator<< (std::ostream& s, const VkDisplayPlaneInfo2KHR& value)
6173 {
6174         s << "VkDisplayPlaneInfo2KHR = {\n";
6175         s << "\tsType = " << value.sType << '\n';
6176         s << "\tpNext = " << value.pNext << '\n';
6177         s << "\tmode = " << value.mode << '\n';
6178         s << "\tplaneIndex = " << value.planeIndex << '\n';
6179         s << '}';
6180         return s;
6181 }
6182
6183 std::ostream& operator<< (std::ostream& s, const VkDisplayPlaneCapabilities2KHR& value)
6184 {
6185         s << "VkDisplayPlaneCapabilities2KHR = {\n";
6186         s << "\tsType = " << value.sType << '\n';
6187         s << "\tpNext = " << value.pNext << '\n';
6188         s << "\tcapabilities = " << value.capabilities << '\n';
6189         s << '}';
6190         return s;
6191 }
6192
6193 std::ostream& operator<< (std::ostream& s, const VkImageFormatListCreateInfoKHR& value)
6194 {
6195         s << "VkImageFormatListCreateInfoKHR = {\n";
6196         s << "\tsType = " << value.sType << '\n';
6197         s << "\tpNext = " << value.pNext << '\n';
6198         s << "\tviewFormatCount = " << value.viewFormatCount << '\n';
6199         s << "\tpViewFormats = " << value.pViewFormats << '\n';
6200         s << '}';
6201         return s;
6202 }
6203
6204 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR& value)
6205 {
6206         s << "VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR = {\n";
6207         s << "\tsType = " << value.sType << '\n';
6208         s << "\tpNext = " << value.pNext << '\n';
6209         s << "\tshaderSubgroupExtendedTypes = " << value.shaderSubgroupExtendedTypes << '\n';
6210         s << '}';
6211         return s;
6212 }
6213
6214 std::ostream& operator<< (std::ostream& s, const VkPhysicalDevice8BitStorageFeaturesKHR& value)
6215 {
6216         s << "VkPhysicalDevice8BitStorageFeaturesKHR = {\n";
6217         s << "\tsType = " << value.sType << '\n';
6218         s << "\tpNext = " << value.pNext << '\n';
6219         s << "\tstorageBuffer8BitAccess = " << value.storageBuffer8BitAccess << '\n';
6220         s << "\tuniformAndStorageBuffer8BitAccess = " << value.uniformAndStorageBuffer8BitAccess << '\n';
6221         s << "\tstoragePushConstant8 = " << value.storagePushConstant8 << '\n';
6222         s << '}';
6223         return s;
6224 }
6225
6226 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceShaderAtomicInt64FeaturesKHR& value)
6227 {
6228         s << "VkPhysicalDeviceShaderAtomicInt64FeaturesKHR = {\n";
6229         s << "\tsType = " << value.sType << '\n';
6230         s << "\tpNext = " << value.pNext << '\n';
6231         s << "\tshaderBufferInt64Atomics = " << value.shaderBufferInt64Atomics << '\n';
6232         s << "\tshaderSharedInt64Atomics = " << value.shaderSharedInt64Atomics << '\n';
6233         s << '}';
6234         return s;
6235 }
6236
6237 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceShaderClockFeaturesKHR& value)
6238 {
6239         s << "VkPhysicalDeviceShaderClockFeaturesKHR = {\n";
6240         s << "\tsType = " << value.sType << '\n';
6241         s << "\tpNext = " << value.pNext << '\n';
6242         s << "\tshaderSubgroupClock = " << value.shaderSubgroupClock << '\n';
6243         s << "\tshaderDeviceClock = " << value.shaderDeviceClock << '\n';
6244         s << '}';
6245         return s;
6246 }
6247
6248 std::ostream& operator<< (std::ostream& s, const VkConformanceVersionKHR& value)
6249 {
6250         s << "VkConformanceVersionKHR = {\n";
6251         s << "\tmajor = " << value.major << '\n';
6252         s << "\tminor = " << value.minor << '\n';
6253         s << "\tsubminor = " << value.subminor << '\n';
6254         s << "\tpatch = " << value.patch << '\n';
6255         s << '}';
6256         return s;
6257 }
6258
6259 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceDriverPropertiesKHR& value)
6260 {
6261         s << "VkPhysicalDeviceDriverPropertiesKHR = {\n";
6262         s << "\tsType = " << value.sType << '\n';
6263         s << "\tpNext = " << value.pNext << '\n';
6264         s << "\tdriverID = " << value.driverID << '\n';
6265         s << "\tdriverName = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<char>(DE_ARRAY_BEGIN(value.driverName)), tcu::Format::HexIterator<char>(DE_ARRAY_END(value.driverName))) << '\n';
6266         s << "\tdriverInfo = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<char>(DE_ARRAY_BEGIN(value.driverInfo)), tcu::Format::HexIterator<char>(DE_ARRAY_END(value.driverInfo))) << '\n';
6267         s << "\tconformanceVersion = " << value.conformanceVersion << '\n';
6268         s << '}';
6269         return s;
6270 }
6271
6272 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceFloatControlsPropertiesKHR& value)
6273 {
6274         s << "VkPhysicalDeviceFloatControlsPropertiesKHR = {\n";
6275         s << "\tsType = " << value.sType << '\n';
6276         s << "\tpNext = " << value.pNext << '\n';
6277         s << "\tdenormBehaviorIndependence = " << value.denormBehaviorIndependence << '\n';
6278         s << "\troundingModeIndependence = " << value.roundingModeIndependence << '\n';
6279         s << "\tshaderSignedZeroInfNanPreserveFloat16 = " << value.shaderSignedZeroInfNanPreserveFloat16 << '\n';
6280         s << "\tshaderSignedZeroInfNanPreserveFloat32 = " << value.shaderSignedZeroInfNanPreserveFloat32 << '\n';
6281         s << "\tshaderSignedZeroInfNanPreserveFloat64 = " << value.shaderSignedZeroInfNanPreserveFloat64 << '\n';
6282         s << "\tshaderDenormPreserveFloat16 = " << value.shaderDenormPreserveFloat16 << '\n';
6283         s << "\tshaderDenormPreserveFloat32 = " << value.shaderDenormPreserveFloat32 << '\n';
6284         s << "\tshaderDenormPreserveFloat64 = " << value.shaderDenormPreserveFloat64 << '\n';
6285         s << "\tshaderDenormFlushToZeroFloat16 = " << value.shaderDenormFlushToZeroFloat16 << '\n';
6286         s << "\tshaderDenormFlushToZeroFloat32 = " << value.shaderDenormFlushToZeroFloat32 << '\n';
6287         s << "\tshaderDenormFlushToZeroFloat64 = " << value.shaderDenormFlushToZeroFloat64 << '\n';
6288         s << "\tshaderRoundingModeRTEFloat16 = " << value.shaderRoundingModeRTEFloat16 << '\n';
6289         s << "\tshaderRoundingModeRTEFloat32 = " << value.shaderRoundingModeRTEFloat32 << '\n';
6290         s << "\tshaderRoundingModeRTEFloat64 = " << value.shaderRoundingModeRTEFloat64 << '\n';
6291         s << "\tshaderRoundingModeRTZFloat16 = " << value.shaderRoundingModeRTZFloat16 << '\n';
6292         s << "\tshaderRoundingModeRTZFloat32 = " << value.shaderRoundingModeRTZFloat32 << '\n';
6293         s << "\tshaderRoundingModeRTZFloat64 = " << value.shaderRoundingModeRTZFloat64 << '\n';
6294         s << '}';
6295         return s;
6296 }
6297
6298 std::ostream& operator<< (std::ostream& s, const VkSubpassDescriptionDepthStencilResolveKHR& value)
6299 {
6300         s << "VkSubpassDescriptionDepthStencilResolveKHR = {\n";
6301         s << "\tsType = " << value.sType << '\n';
6302         s << "\tpNext = " << value.pNext << '\n';
6303         s << "\tdepthResolveMode = " << value.depthResolveMode << '\n';
6304         s << "\tstencilResolveMode = " << value.stencilResolveMode << '\n';
6305         s << "\tpDepthStencilResolveAttachment = " << value.pDepthStencilResolveAttachment << '\n';
6306         s << '}';
6307         return s;
6308 }
6309
6310 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceDepthStencilResolvePropertiesKHR& value)
6311 {
6312         s << "VkPhysicalDeviceDepthStencilResolvePropertiesKHR = {\n";
6313         s << "\tsType = " << value.sType << '\n';
6314         s << "\tpNext = " << value.pNext << '\n';
6315         s << "\tsupportedDepthResolveModes = " << getResolveModeFlagsKHRStr(value.supportedDepthResolveModes) << '\n';
6316         s << "\tsupportedStencilResolveModes = " << getResolveModeFlagsKHRStr(value.supportedStencilResolveModes) << '\n';
6317         s << "\tindependentResolveNone = " << value.independentResolveNone << '\n';
6318         s << "\tindependentResolve = " << value.independentResolve << '\n';
6319         s << '}';
6320         return s;
6321 }
6322
6323 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceTimelineSemaphoreFeaturesKHR& value)
6324 {
6325         s << "VkPhysicalDeviceTimelineSemaphoreFeaturesKHR = {\n";
6326         s << "\tsType = " << value.sType << '\n';
6327         s << "\tpNext = " << value.pNext << '\n';
6328         s << "\ttimelineSemaphore = " << value.timelineSemaphore << '\n';
6329         s << '}';
6330         return s;
6331 }
6332
6333 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceTimelineSemaphorePropertiesKHR& value)
6334 {
6335         s << "VkPhysicalDeviceTimelineSemaphorePropertiesKHR = {\n";
6336         s << "\tsType = " << value.sType << '\n';
6337         s << "\tpNext = " << value.pNext << '\n';
6338         s << "\tmaxTimelineSemaphoreValueDifference = " << value.maxTimelineSemaphoreValueDifference << '\n';
6339         s << '}';
6340         return s;
6341 }
6342
6343 std::ostream& operator<< (std::ostream& s, const VkSemaphoreTypeCreateInfoKHR& value)
6344 {
6345         s << "VkSemaphoreTypeCreateInfoKHR = {\n";
6346         s << "\tsType = " << value.sType << '\n';
6347         s << "\tpNext = " << value.pNext << '\n';
6348         s << "\tsemaphoreType = " << value.semaphoreType << '\n';
6349         s << "\tinitialValue = " << value.initialValue << '\n';
6350         s << '}';
6351         return s;
6352 }
6353
6354 std::ostream& operator<< (std::ostream& s, const VkTimelineSemaphoreSubmitInfoKHR& value)
6355 {
6356         s << "VkTimelineSemaphoreSubmitInfoKHR = {\n";
6357         s << "\tsType = " << value.sType << '\n';
6358         s << "\tpNext = " << value.pNext << '\n';
6359         s << "\twaitSemaphoreValueCount = " << value.waitSemaphoreValueCount << '\n';
6360         s << "\tpWaitSemaphoreValues = " << value.pWaitSemaphoreValues << '\n';
6361         s << "\tsignalSemaphoreValueCount = " << value.signalSemaphoreValueCount << '\n';
6362         s << "\tpSignalSemaphoreValues = " << value.pSignalSemaphoreValues << '\n';
6363         s << '}';
6364         return s;
6365 }
6366
6367 std::ostream& operator<< (std::ostream& s, const VkSemaphoreWaitInfoKHR& value)
6368 {
6369         s << "VkSemaphoreWaitInfoKHR = {\n";
6370         s << "\tsType = " << value.sType << '\n';
6371         s << "\tpNext = " << value.pNext << '\n';
6372         s << "\tflags = " << getSemaphoreWaitFlagsKHRStr(value.flags) << '\n';
6373         s << "\tsemaphoreCount = " << value.semaphoreCount << '\n';
6374         s << "\tpSemaphores = " << value.pSemaphores << '\n';
6375         s << "\tpValues = " << value.pValues << '\n';
6376         s << '}';
6377         return s;
6378 }
6379
6380 std::ostream& operator<< (std::ostream& s, const VkSemaphoreSignalInfoKHR& value)
6381 {
6382         s << "VkSemaphoreSignalInfoKHR = {\n";
6383         s << "\tsType = " << value.sType << '\n';
6384         s << "\tpNext = " << value.pNext << '\n';
6385         s << "\tsemaphore = " << value.semaphore << '\n';
6386         s << "\tvalue = " << value.value << '\n';
6387         s << '}';
6388         return s;
6389 }
6390
6391 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceVulkanMemoryModelFeaturesKHR& value)
6392 {
6393         s << "VkPhysicalDeviceVulkanMemoryModelFeaturesKHR = {\n";
6394         s << "\tsType = " << value.sType << '\n';
6395         s << "\tpNext = " << value.pNext << '\n';
6396         s << "\tvulkanMemoryModel = " << value.vulkanMemoryModel << '\n';
6397         s << "\tvulkanMemoryModelDeviceScope = " << value.vulkanMemoryModelDeviceScope << '\n';
6398         s << "\tvulkanMemoryModelAvailabilityVisibilityChains = " << value.vulkanMemoryModelAvailabilityVisibilityChains << '\n';
6399         s << '}';
6400         return s;
6401 }
6402
6403 std::ostream& operator<< (std::ostream& s, const VkSurfaceProtectedCapabilitiesKHR& value)
6404 {
6405         s << "VkSurfaceProtectedCapabilitiesKHR = {\n";
6406         s << "\tsType = " << value.sType << '\n';
6407         s << "\tpNext = " << value.pNext << '\n';
6408         s << "\tsupportsProtected = " << value.supportsProtected << '\n';
6409         s << '}';
6410         return s;
6411 }
6412
6413 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR& value)
6414 {
6415         s << "VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR = {\n";
6416         s << "\tsType = " << value.sType << '\n';
6417         s << "\tpNext = " << value.pNext << '\n';
6418         s << "\tuniformBufferStandardLayout = " << value.uniformBufferStandardLayout << '\n';
6419         s << '}';
6420         return s;
6421 }
6422
6423 std::ostream& operator<< (std::ostream& s, const VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR& value)
6424 {
6425         s << "VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR = {\n";
6426         s << "\tsType = " << value.sType << '\n';
6427         s << "\tpNext = " << value.pNext << '\n';
6428         s << "\tpipelineExecutableInfo = " << value.pipelineExecutableInfo << '\n';
6429         s << '}';
6430         return s;
6431 }
6432
6433 std::ostream& operator<< (std::ostream& s, const VkPipelineInfoKHR& value)
6434 {
6435         s << "VkPipelineInfoKHR = {\n";
6436         s << "\tsType = " << value.sType << '\n';
6437         s << "\tpNext = " << value.pNext << '\n';
6438         s << "\tpipeline = " << value.pipeline << '\n';
6439         s << '}';
6440         return s;
6441 }
6442
6443 std::ostream& operator<< (std::ostream& s, const VkPipelineExecutablePropertiesKHR& value)
6444 {
6445         s << "VkPipelineExecutablePropertiesKHR = {\n";
6446         s << "\tsType = " << value.sType << '\n';
6447         s << "\tpNext = " << value.pNext << '\n';
6448         s << "\tstages = " << getShaderStageFlagsStr(value.stages) << '\n';
6449         s << "\tname = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<char>(DE_ARRAY_BEGIN(value.name)), tcu::Format::HexIterator<char>(DE_ARRAY_END(value.name))) << '\n';
6450         s << "\tdescription = " << (const char*)value.description << '\n';
6451         s << "\tsubgroupSize = " << value.subgroupSize << '\n';
6452         s << '}';
6453         return s;
6454 }
6455
6456 std::ostream& operator<< (std::ostream& s, const VkPipelineExecutableInfoKHR& value)
6457 {
6458         s << "VkPipelineExecutableInfoKHR = {\n";
6459         s << "\tsType = " << value.sType << '\n';
6460         s << "\tpNext = " << value.pNext << '\n';
6461         s << "\tpipeline = " << value.pipeline << '\n';
6462         s << "\texecutableIndex = " << value.executableIndex << '\n';
6463         s << '}';
6464         return s;
6465 }
6466
6467 std::ostream& operator<< (std::ostream& s, const VkPipelineExecutableStatisticValueKHR& value)
6468 {
6469         s << "VkPipelineExecutableStatisticValueKHR = {\n";
6470         s << "\tb32 = " << value.b32 << '\n';
6471         s << "\ti64 = " << value.i64 << '\n';
6472         s << "\tu64 = " << value.u64 << '\n';
6473         s << "\tf64 = " << value.f64 << '\n';
6474         s << '}';
6475         return s;
6476 }
6477
6478 std::ostream& operator<< (std::ostream& s, const VkPipelineExecutableStatisticKHR& value)
6479 {
6480         s << "VkPipelineExecutableStatisticKHR = {\n";
6481         s << "\tsType = " << value.sType << '\n';
6482         s << "\tpNext = " << value.pNext << '\n';
6483         s << "\tname = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<char>(DE_ARRAY_BEGIN(value.name)), tcu::Format::HexIterator<char>(DE_ARRAY_END(value.name))) << '\n';
6484         s << "\tdescription = " << (const char*)value.description << '\n';
6485         s << "\tformat = " << value.format << '\n';
6486         s << "\tvalue = " << value.value << '\n';
6487         s << '}';
6488         return s;
6489 }
6490
6491 std::ostream& operator<< (std::ostream& s, const VkPipelineExecutableInternalRepresentationKHR& value)
6492 {
6493         s << "VkPipelineExecutableInternalRepresentationKHR = {\n";
6494         s << "\tsType = " << value.sType << '\n';
6495         s << "\tpNext = " << value.pNext << '\n';
6496         s << "\tname = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<char>(DE_ARRAY_BEGIN(value.name)), tcu::Format::HexIterator<char>(DE_ARRAY_END(value.name))) << '\n';
6497         s << "\tdescription = " << (const char*)value.description << '\n';
6498         s << "\tisText = " << value.isText << '\n';
6499         s << "\tdataSize = " << value.dataSize << '\n';
6500         s << "\tpData = " << value.pData << '\n';
6501         s << '}';
6502         return s;
6503 }
6504
6505 std::ostream& operator<< (std::ostream& s, const VkDebugReportCallbackCreateInfoEXT& value)
6506 {
6507         s << "VkDebugReportCallbackCreateInfoEXT = {\n";
6508         s << "\tsType = " << value.sType << '\n';
6509         s << "\tpNext = " << value.pNext << '\n';
6510         s << "\tflags = " << getDebugReportFlagsEXTStr(value.flags) << '\n';
6511         s << "\tpfnCallback = " << value.pfnCallback << '\n';
6512         s << "\tpUserData = " << value.pUserData << '\n';
6513         s << '}';
6514         return s;
6515 }
6516
6517 std::ostream& operator<< (std::ostream& s, const VkPipelineRasterizationStateRasterizationOrderAMD& value)
6518 {
6519         s << "VkPipelineRasterizationStateRasterizationOrderAMD = {\n";
6520         s << "\tsType = " << value.sType << '\n';
6521         s << "\tpNext = " << value.pNext << '\n';
6522         s << "\trasterizationOrder = " << value.rasterizationOrder << '\n';
6523         s << '}';
6524         return s;
6525 }
6526
6527 std::ostream& operator<< (std::ostream& s, const VkDebugMarkerObjectNameInfoEXT& value)
6528 {
6529         s << "VkDebugMarkerObjectNameInfoEXT = {\n";
6530         s << "\tsType = " << value.sType << '\n';
6531         s << "\tpNext = " << value.pNext << '\n';
6532         s << "\tobjectType = " << value.objectType << '\n';
6533         s << "\tobject = " << value.object << '\n';
6534         s << "\tpObjectName = " << getCharPtrStr(value.pObjectName) << '\n';
6535         s << '}';
6536         return s;
6537 }
6538
6539 std::ostream& operator<< (std::ostream& s, const VkDebugMarkerObjectTagInfoEXT& value)
6540 {
6541         s << "VkDebugMarkerObjectTagInfoEXT = {\n";
6542         s << "\tsType = " << value.sType << '\n';
6543         s << "\tpNext = " << value.pNext << '\n';
6544         s << "\tobjectType = " << value.objectType << '\n';
6545         s << "\tobject = " << value.object << '\n';
6546         s << "\ttagName = " << value.tagName << '\n';
6547         s << "\ttagSize = " << value.tagSize << '\n';
6548         s << "\tpTag = " << value.pTag << '\n';
6549         s << '}';
6550         return s;
6551 }
6552
6553 std::ostream& operator<< (std::ostream& s, const VkDebugMarkerMarkerInfoEXT& value)
6554 {
6555         s << "VkDebugMarkerMarkerInfoEXT = {\n";
6556         s << "\tsType = " << value.sType << '\n';
6557         s << "\tpNext = " << value.pNext << '\n';
6558         s << "\tpMarkerName = " << getCharPtrStr(value.pMarkerName) << '\n';
6559         s << "\tcolor = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.color), DE_ARRAY_END(value.color)) << '\n';
6560         s << '}';
6561         return s;
6562 }
6563
6564 std::ostream& operator<< (std::ostream& s, const VkDedicatedAllocationImageCreateInfoNV& value)
6565 {
6566         s << "VkDedicatedAllocationImageCreateInfoNV = {\n";
6567         s << "\tsType = " << value.sType << '\n';
6568         s << "\tpNext = " << value.pNext << '\n';
6569         s << "\tdedicatedAllocation = " << value.dedicatedAllocation << '\n';
6570         s << '}';
6571         return s;
6572 }
6573
6574 std::ostream& operator<< (std::ostream& s, const VkDedicatedAllocationBufferCreateInfoNV& value)
6575 {
6576         s << "VkDedicatedAllocationBufferCreateInfoNV = {\n";
6577         s << "\tsType = " << value.sType << '\n';
6578         s << "\tpNext = " << value.pNext << '\n';
6579         s << "\tdedicatedAllocation = " << value.dedicatedAllocation << '\n';
6580         s << '}';
6581         return s;
6582 }
6583
6584 std::ostream& operator<< (std::ostream& s, const VkDedicatedAllocationMemoryAllocateInfoNV& value)
6585 {
6586         s << "VkDedicatedAllocationMemoryAllocateInfoNV = {\n";
6587         s << "\tsType = " << value.sType << '\n';
6588         s << "\tpNext = " << value.pNext << '\n';
6589         s << "\timage = " << value.image << '\n';
6590         s << "\tbuffer = " << value.buffer << '\n';
6591         s << '}';
6592         return s;
6593 }
6594
6595 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceTransformFeedbackFeaturesEXT& value)
6596 {
6597         s << "VkPhysicalDeviceTransformFeedbackFeaturesEXT = {\n";
6598         s << "\tsType = " << value.sType << '\n';
6599         s << "\tpNext = " << value.pNext << '\n';
6600         s << "\ttransformFeedback = " << value.transformFeedback << '\n';
6601         s << "\tgeometryStreams = " << value.geometryStreams << '\n';
6602         s << '}';
6603         return s;
6604 }
6605
6606 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceTransformFeedbackPropertiesEXT& value)
6607 {
6608         s << "VkPhysicalDeviceTransformFeedbackPropertiesEXT = {\n";
6609         s << "\tsType = " << value.sType << '\n';
6610         s << "\tpNext = " << value.pNext << '\n';
6611         s << "\tmaxTransformFeedbackStreams = " << value.maxTransformFeedbackStreams << '\n';
6612         s << "\tmaxTransformFeedbackBuffers = " << value.maxTransformFeedbackBuffers << '\n';
6613         s << "\tmaxTransformFeedbackBufferSize = " << value.maxTransformFeedbackBufferSize << '\n';
6614         s << "\tmaxTransformFeedbackStreamDataSize = " << value.maxTransformFeedbackStreamDataSize << '\n';
6615         s << "\tmaxTransformFeedbackBufferDataSize = " << value.maxTransformFeedbackBufferDataSize << '\n';
6616         s << "\tmaxTransformFeedbackBufferDataStride = " << value.maxTransformFeedbackBufferDataStride << '\n';
6617         s << "\ttransformFeedbackQueries = " << value.transformFeedbackQueries << '\n';
6618         s << "\ttransformFeedbackStreamsLinesTriangles = " << value.transformFeedbackStreamsLinesTriangles << '\n';
6619         s << "\ttransformFeedbackRasterizationStreamSelect = " << value.transformFeedbackRasterizationStreamSelect << '\n';
6620         s << "\ttransformFeedbackDraw = " << value.transformFeedbackDraw << '\n';
6621         s << '}';
6622         return s;
6623 }
6624
6625 std::ostream& operator<< (std::ostream& s, const VkPipelineRasterizationStateStreamCreateInfoEXT& value)
6626 {
6627         s << "VkPipelineRasterizationStateStreamCreateInfoEXT = {\n";
6628         s << "\tsType = " << value.sType << '\n';
6629         s << "\tpNext = " << value.pNext << '\n';
6630         s << "\tflags = " << getPipelineRasterizationStateStreamCreateFlagsEXTStr(value.flags) << '\n';
6631         s << "\trasterizationStream = " << value.rasterizationStream << '\n';
6632         s << '}';
6633         return s;
6634 }
6635
6636 std::ostream& operator<< (std::ostream& s, const VkImageViewHandleInfoNVX& value)
6637 {
6638         s << "VkImageViewHandleInfoNVX = {\n";
6639         s << "\tsType = " << value.sType << '\n';
6640         s << "\tpNext = " << value.pNext << '\n';
6641         s << "\timageView = " << value.imageView << '\n';
6642         s << "\tdescriptorType = " << value.descriptorType << '\n';
6643         s << "\tsampler = " << value.sampler << '\n';
6644         s << '}';
6645         return s;
6646 }
6647
6648 std::ostream& operator<< (std::ostream& s, const VkTextureLODGatherFormatPropertiesAMD& value)
6649 {
6650         s << "VkTextureLODGatherFormatPropertiesAMD = {\n";
6651         s << "\tsType = " << value.sType << '\n';
6652         s << "\tpNext = " << value.pNext << '\n';
6653         s << "\tsupportsTextureGatherLODBiasAMD = " << value.supportsTextureGatherLODBiasAMD << '\n';
6654         s << '}';
6655         return s;
6656 }
6657
6658 std::ostream& operator<< (std::ostream& s, const VkShaderResourceUsageAMD& value)
6659 {
6660         s << "VkShaderResourceUsageAMD = {\n";
6661         s << "\tnumUsedVgprs = " << value.numUsedVgprs << '\n';
6662         s << "\tnumUsedSgprs = " << value.numUsedSgprs << '\n';
6663         s << "\tldsSizePerLocalWorkGroup = " << value.ldsSizePerLocalWorkGroup << '\n';
6664         s << "\tldsUsageSizeInBytes = " << value.ldsUsageSizeInBytes << '\n';
6665         s << "\tscratchMemUsageInBytes = " << value.scratchMemUsageInBytes << '\n';
6666         s << '}';
6667         return s;
6668 }
6669
6670 std::ostream& operator<< (std::ostream& s, const VkShaderStatisticsInfoAMD& value)
6671 {
6672         s << "VkShaderStatisticsInfoAMD = {\n";
6673         s << "\tshaderStageMask = " << getShaderStageFlagsStr(value.shaderStageMask) << '\n';
6674         s << "\tresourceUsage = " << value.resourceUsage << '\n';
6675         s << "\tnumPhysicalVgprs = " << value.numPhysicalVgprs << '\n';
6676         s << "\tnumPhysicalSgprs = " << value.numPhysicalSgprs << '\n';
6677         s << "\tnumAvailableVgprs = " << value.numAvailableVgprs << '\n';
6678         s << "\tnumAvailableSgprs = " << value.numAvailableSgprs << '\n';
6679         s << "\tcomputeWorkGroupSize = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.computeWorkGroupSize), DE_ARRAY_END(value.computeWorkGroupSize)) << '\n';
6680         s << '}';
6681         return s;
6682 }
6683
6684 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceCornerSampledImageFeaturesNV& value)
6685 {
6686         s << "VkPhysicalDeviceCornerSampledImageFeaturesNV = {\n";
6687         s << "\tsType = " << value.sType << '\n';
6688         s << "\tpNext = " << value.pNext << '\n';
6689         s << "\tcornerSampledImage = " << value.cornerSampledImage << '\n';
6690         s << '}';
6691         return s;
6692 }
6693
6694 std::ostream& operator<< (std::ostream& s, const VkExternalImageFormatPropertiesNV& value)
6695 {
6696         s << "VkExternalImageFormatPropertiesNV = {\n";
6697         s << "\timageFormatProperties = " << value.imageFormatProperties << '\n';
6698         s << "\texternalMemoryFeatures = " << getExternalMemoryFeatureFlagsNVStr(value.externalMemoryFeatures) << '\n';
6699         s << "\texportFromImportedHandleTypes = " << getExternalMemoryHandleTypeFlagsNVStr(value.exportFromImportedHandleTypes) << '\n';
6700         s << "\tcompatibleHandleTypes = " << getExternalMemoryHandleTypeFlagsNVStr(value.compatibleHandleTypes) << '\n';
6701         s << '}';
6702         return s;
6703 }
6704
6705 std::ostream& operator<< (std::ostream& s, const VkExternalMemoryImageCreateInfoNV& value)
6706 {
6707         s << "VkExternalMemoryImageCreateInfoNV = {\n";
6708         s << "\tsType = " << value.sType << '\n';
6709         s << "\tpNext = " << value.pNext << '\n';
6710         s << "\thandleTypes = " << getExternalMemoryHandleTypeFlagsNVStr(value.handleTypes) << '\n';
6711         s << '}';
6712         return s;
6713 }
6714
6715 std::ostream& operator<< (std::ostream& s, const VkExportMemoryAllocateInfoNV& value)
6716 {
6717         s << "VkExportMemoryAllocateInfoNV = {\n";
6718         s << "\tsType = " << value.sType << '\n';
6719         s << "\tpNext = " << value.pNext << '\n';
6720         s << "\thandleTypes = " << getExternalMemoryHandleTypeFlagsNVStr(value.handleTypes) << '\n';
6721         s << '}';
6722         return s;
6723 }
6724
6725 std::ostream& operator<< (std::ostream& s, const VkValidationFlagsEXT& value)
6726 {
6727         s << "VkValidationFlagsEXT = {\n";
6728         s << "\tsType = " << value.sType << '\n';
6729         s << "\tpNext = " << value.pNext << '\n';
6730         s << "\tdisabledValidationCheckCount = " << value.disabledValidationCheckCount << '\n';
6731         s << "\tpDisabledValidationChecks = " << value.pDisabledValidationChecks << '\n';
6732         s << '}';
6733         return s;
6734 }
6735
6736 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT& value)
6737 {
6738         s << "VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT = {\n";
6739         s << "\tsType = " << value.sType << '\n';
6740         s << "\tpNext = " << value.pNext << '\n';
6741         s << "\ttextureCompressionASTC_HDR = " << value.textureCompressionASTC_HDR << '\n';
6742         s << '}';
6743         return s;
6744 }
6745
6746 std::ostream& operator<< (std::ostream& s, const VkImageViewASTCDecodeModeEXT& value)
6747 {
6748         s << "VkImageViewASTCDecodeModeEXT = {\n";
6749         s << "\tsType = " << value.sType << '\n';
6750         s << "\tpNext = " << value.pNext << '\n';
6751         s << "\tdecodeMode = " << value.decodeMode << '\n';
6752         s << '}';
6753         return s;
6754 }
6755
6756 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceASTCDecodeFeaturesEXT& value)
6757 {
6758         s << "VkPhysicalDeviceASTCDecodeFeaturesEXT = {\n";
6759         s << "\tsType = " << value.sType << '\n';
6760         s << "\tpNext = " << value.pNext << '\n';
6761         s << "\tdecodeModeSharedExponent = " << value.decodeModeSharedExponent << '\n';
6762         s << '}';
6763         return s;
6764 }
6765
6766 std::ostream& operator<< (std::ostream& s, const VkConditionalRenderingBeginInfoEXT& value)
6767 {
6768         s << "VkConditionalRenderingBeginInfoEXT = {\n";
6769         s << "\tsType = " << value.sType << '\n';
6770         s << "\tpNext = " << value.pNext << '\n';
6771         s << "\tbuffer = " << value.buffer << '\n';
6772         s << "\toffset = " << value.offset << '\n';
6773         s << "\tflags = " << getConditionalRenderingFlagsEXTStr(value.flags) << '\n';
6774         s << '}';
6775         return s;
6776 }
6777
6778 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceConditionalRenderingFeaturesEXT& value)
6779 {
6780         s << "VkPhysicalDeviceConditionalRenderingFeaturesEXT = {\n";
6781         s << "\tsType = " << value.sType << '\n';
6782         s << "\tpNext = " << value.pNext << '\n';
6783         s << "\tconditionalRendering = " << value.conditionalRendering << '\n';
6784         s << "\tinheritedConditionalRendering = " << value.inheritedConditionalRendering << '\n';
6785         s << '}';
6786         return s;
6787 }
6788
6789 std::ostream& operator<< (std::ostream& s, const VkCommandBufferInheritanceConditionalRenderingInfoEXT& value)
6790 {
6791         s << "VkCommandBufferInheritanceConditionalRenderingInfoEXT = {\n";
6792         s << "\tsType = " << value.sType << '\n';
6793         s << "\tpNext = " << value.pNext << '\n';
6794         s << "\tconditionalRenderingEnable = " << value.conditionalRenderingEnable << '\n';
6795         s << '}';
6796         return s;
6797 }
6798
6799 std::ostream& operator<< (std::ostream& s, const VkDeviceGeneratedCommandsFeaturesNVX& value)
6800 {
6801         s << "VkDeviceGeneratedCommandsFeaturesNVX = {\n";
6802         s << "\tsType = " << value.sType << '\n';
6803         s << "\tpNext = " << value.pNext << '\n';
6804         s << "\tcomputeBindingPointSupport = " << value.computeBindingPointSupport << '\n';
6805         s << '}';
6806         return s;
6807 }
6808
6809 std::ostream& operator<< (std::ostream& s, const VkDeviceGeneratedCommandsLimitsNVX& value)
6810 {
6811         s << "VkDeviceGeneratedCommandsLimitsNVX = {\n";
6812         s << "\tsType = " << value.sType << '\n';
6813         s << "\tpNext = " << value.pNext << '\n';
6814         s << "\tmaxIndirectCommandsLayoutTokenCount = " << value.maxIndirectCommandsLayoutTokenCount << '\n';
6815         s << "\tmaxObjectEntryCounts = " << value.maxObjectEntryCounts << '\n';
6816         s << "\tminSequenceCountBufferOffsetAlignment = " << value.minSequenceCountBufferOffsetAlignment << '\n';
6817         s << "\tminSequenceIndexBufferOffsetAlignment = " << value.minSequenceIndexBufferOffsetAlignment << '\n';
6818         s << "\tminCommandsTokenBufferOffsetAlignment = " << value.minCommandsTokenBufferOffsetAlignment << '\n';
6819         s << '}';
6820         return s;
6821 }
6822
6823 std::ostream& operator<< (std::ostream& s, const VkIndirectCommandsTokenNVX& value)
6824 {
6825         s << "VkIndirectCommandsTokenNVX = {\n";
6826         s << "\ttokenType = " << value.tokenType << '\n';
6827         s << "\tbuffer = " << value.buffer << '\n';
6828         s << "\toffset = " << value.offset << '\n';
6829         s << '}';
6830         return s;
6831 }
6832
6833 std::ostream& operator<< (std::ostream& s, const VkIndirectCommandsLayoutTokenNVX& value)
6834 {
6835         s << "VkIndirectCommandsLayoutTokenNVX = {\n";
6836         s << "\ttokenType = " << value.tokenType << '\n';
6837         s << "\tbindingUnit = " << value.bindingUnit << '\n';
6838         s << "\tdynamicCount = " << value.dynamicCount << '\n';
6839         s << "\tdivisor = " << value.divisor << '\n';
6840         s << '}';
6841         return s;
6842 }
6843
6844 std::ostream& operator<< (std::ostream& s, const VkIndirectCommandsLayoutCreateInfoNVX& value)
6845 {
6846         s << "VkIndirectCommandsLayoutCreateInfoNVX = {\n";
6847         s << "\tsType = " << value.sType << '\n';
6848         s << "\tpNext = " << value.pNext << '\n';
6849         s << "\tpipelineBindPoint = " << value.pipelineBindPoint << '\n';
6850         s << "\tflags = " << getIndirectCommandsLayoutUsageFlagsNVXStr(value.flags) << '\n';
6851         s << "\ttokenCount = " << value.tokenCount << '\n';
6852         s << "\tpTokens = " << value.pTokens << '\n';
6853         s << '}';
6854         return s;
6855 }
6856
6857 std::ostream& operator<< (std::ostream& s, const VkCmdProcessCommandsInfoNVX& value)
6858 {
6859         s << "VkCmdProcessCommandsInfoNVX = {\n";
6860         s << "\tsType = " << value.sType << '\n';
6861         s << "\tpNext = " << value.pNext << '\n';
6862         s << "\tobjectTable = " << value.objectTable << '\n';
6863         s << "\tindirectCommandsLayout = " << value.indirectCommandsLayout << '\n';
6864         s << "\tindirectCommandsTokenCount = " << value.indirectCommandsTokenCount << '\n';
6865         s << "\tpIndirectCommandsTokens = " << value.pIndirectCommandsTokens << '\n';
6866         s << "\tmaxSequencesCount = " << value.maxSequencesCount << '\n';
6867         s << "\ttargetCommandBuffer = " << value.targetCommandBuffer << '\n';
6868         s << "\tsequencesCountBuffer = " << value.sequencesCountBuffer << '\n';
6869         s << "\tsequencesCountOffset = " << value.sequencesCountOffset << '\n';
6870         s << "\tsequencesIndexBuffer = " << value.sequencesIndexBuffer << '\n';
6871         s << "\tsequencesIndexOffset = " << value.sequencesIndexOffset << '\n';
6872         s << '}';
6873         return s;
6874 }
6875
6876 std::ostream& operator<< (std::ostream& s, const VkCmdReserveSpaceForCommandsInfoNVX& value)
6877 {
6878         s << "VkCmdReserveSpaceForCommandsInfoNVX = {\n";
6879         s << "\tsType = " << value.sType << '\n';
6880         s << "\tpNext = " << value.pNext << '\n';
6881         s << "\tobjectTable = " << value.objectTable << '\n';
6882         s << "\tindirectCommandsLayout = " << value.indirectCommandsLayout << '\n';
6883         s << "\tmaxSequencesCount = " << value.maxSequencesCount << '\n';
6884         s << '}';
6885         return s;
6886 }
6887
6888 std::ostream& operator<< (std::ostream& s, const VkObjectTableCreateInfoNVX& value)
6889 {
6890         s << "VkObjectTableCreateInfoNVX = {\n";
6891         s << "\tsType = " << value.sType << '\n';
6892         s << "\tpNext = " << value.pNext << '\n';
6893         s << "\tobjectCount = " << value.objectCount << '\n';
6894         s << "\tpObjectEntryTypes = " << value.pObjectEntryTypes << '\n';
6895         s << "\tpObjectEntryCounts = " << value.pObjectEntryCounts << '\n';
6896         s << "\tpObjectEntryUsageFlags = " << value.pObjectEntryUsageFlags << '\n';
6897         s << "\tmaxUniformBuffersPerDescriptor = " << value.maxUniformBuffersPerDescriptor << '\n';
6898         s << "\tmaxStorageBuffersPerDescriptor = " << value.maxStorageBuffersPerDescriptor << '\n';
6899         s << "\tmaxStorageImagesPerDescriptor = " << value.maxStorageImagesPerDescriptor << '\n';
6900         s << "\tmaxSampledImagesPerDescriptor = " << value.maxSampledImagesPerDescriptor << '\n';
6901         s << "\tmaxPipelineLayouts = " << value.maxPipelineLayouts << '\n';
6902         s << '}';
6903         return s;
6904 }
6905
6906 std::ostream& operator<< (std::ostream& s, const VkObjectTableEntryNVX& value)
6907 {
6908         s << "VkObjectTableEntryNVX = {\n";
6909         s << "\ttype = " << value.type << '\n';
6910         s << "\tflags = " << getObjectEntryUsageFlagsNVXStr(value.flags) << '\n';
6911         s << '}';
6912         return s;
6913 }
6914
6915 std::ostream& operator<< (std::ostream& s, const VkObjectTablePipelineEntryNVX& value)
6916 {
6917         s << "VkObjectTablePipelineEntryNVX = {\n";
6918         s << "\ttype = " << value.type << '\n';
6919         s << "\tflags = " << getObjectEntryUsageFlagsNVXStr(value.flags) << '\n';
6920         s << "\tpipeline = " << value.pipeline << '\n';
6921         s << '}';
6922         return s;
6923 }
6924
6925 std::ostream& operator<< (std::ostream& s, const VkObjectTableDescriptorSetEntryNVX& value)
6926 {
6927         s << "VkObjectTableDescriptorSetEntryNVX = {\n";
6928         s << "\ttype = " << value.type << '\n';
6929         s << "\tflags = " << getObjectEntryUsageFlagsNVXStr(value.flags) << '\n';
6930         s << "\tpipelineLayout = " << value.pipelineLayout << '\n';
6931         s << "\tdescriptorSet = " << value.descriptorSet << '\n';
6932         s << '}';
6933         return s;
6934 }
6935
6936 std::ostream& operator<< (std::ostream& s, const VkObjectTableVertexBufferEntryNVX& value)
6937 {
6938         s << "VkObjectTableVertexBufferEntryNVX = {\n";
6939         s << "\ttype = " << value.type << '\n';
6940         s << "\tflags = " << getObjectEntryUsageFlagsNVXStr(value.flags) << '\n';
6941         s << "\tbuffer = " << value.buffer << '\n';
6942         s << '}';
6943         return s;
6944 }
6945
6946 std::ostream& operator<< (std::ostream& s, const VkObjectTableIndexBufferEntryNVX& value)
6947 {
6948         s << "VkObjectTableIndexBufferEntryNVX = {\n";
6949         s << "\ttype = " << value.type << '\n';
6950         s << "\tflags = " << getObjectEntryUsageFlagsNVXStr(value.flags) << '\n';
6951         s << "\tbuffer = " << value.buffer << '\n';
6952         s << "\tindexType = " << value.indexType << '\n';
6953         s << '}';
6954         return s;
6955 }
6956
6957 std::ostream& operator<< (std::ostream& s, const VkObjectTablePushConstantEntryNVX& value)
6958 {
6959         s << "VkObjectTablePushConstantEntryNVX = {\n";
6960         s << "\ttype = " << value.type << '\n';
6961         s << "\tflags = " << getObjectEntryUsageFlagsNVXStr(value.flags) << '\n';
6962         s << "\tpipelineLayout = " << value.pipelineLayout << '\n';
6963         s << "\tstageFlags = " << getShaderStageFlagsStr(value.stageFlags) << '\n';
6964         s << '}';
6965         return s;
6966 }
6967
6968 std::ostream& operator<< (std::ostream& s, const VkViewportWScalingNV& value)
6969 {
6970         s << "VkViewportWScalingNV = {\n";
6971         s << "\txcoeff = " << value.xcoeff << '\n';
6972         s << "\tycoeff = " << value.ycoeff << '\n';
6973         s << '}';
6974         return s;
6975 }
6976
6977 std::ostream& operator<< (std::ostream& s, const VkPipelineViewportWScalingStateCreateInfoNV& value)
6978 {
6979         s << "VkPipelineViewportWScalingStateCreateInfoNV = {\n";
6980         s << "\tsType = " << value.sType << '\n';
6981         s << "\tpNext = " << value.pNext << '\n';
6982         s << "\tviewportWScalingEnable = " << value.viewportWScalingEnable << '\n';
6983         s << "\tviewportCount = " << value.viewportCount << '\n';
6984         s << "\tpViewportWScalings = " << value.pViewportWScalings << '\n';
6985         s << '}';
6986         return s;
6987 }
6988
6989 std::ostream& operator<< (std::ostream& s, const VkSurfaceCapabilities2EXT& value)
6990 {
6991         s << "VkSurfaceCapabilities2EXT = {\n";
6992         s << "\tsType = " << value.sType << '\n';
6993         s << "\tpNext = " << value.pNext << '\n';
6994         s << "\tminImageCount = " << value.minImageCount << '\n';
6995         s << "\tmaxImageCount = " << value.maxImageCount << '\n';
6996         s << "\tcurrentExtent = " << value.currentExtent << '\n';
6997         s << "\tminImageExtent = " << value.minImageExtent << '\n';
6998         s << "\tmaxImageExtent = " << value.maxImageExtent << '\n';
6999         s << "\tmaxImageArrayLayers = " << value.maxImageArrayLayers << '\n';
7000         s << "\tsupportedTransforms = " << getSurfaceTransformFlagsKHRStr(value.supportedTransforms) << '\n';
7001         s << "\tcurrentTransform = " << value.currentTransform << '\n';
7002         s << "\tsupportedCompositeAlpha = " << getCompositeAlphaFlagsKHRStr(value.supportedCompositeAlpha) << '\n';
7003         s << "\tsupportedUsageFlags = " << getImageUsageFlagsStr(value.supportedUsageFlags) << '\n';
7004         s << "\tsupportedSurfaceCounters = " << getSurfaceCounterFlagsEXTStr(value.supportedSurfaceCounters) << '\n';
7005         s << '}';
7006         return s;
7007 }
7008
7009 std::ostream& operator<< (std::ostream& s, const VkDisplayPowerInfoEXT& value)
7010 {
7011         s << "VkDisplayPowerInfoEXT = {\n";
7012         s << "\tsType = " << value.sType << '\n';
7013         s << "\tpNext = " << value.pNext << '\n';
7014         s << "\tpowerState = " << value.powerState << '\n';
7015         s << '}';
7016         return s;
7017 }
7018
7019 std::ostream& operator<< (std::ostream& s, const VkDeviceEventInfoEXT& value)
7020 {
7021         s << "VkDeviceEventInfoEXT = {\n";
7022         s << "\tsType = " << value.sType << '\n';
7023         s << "\tpNext = " << value.pNext << '\n';
7024         s << "\tdeviceEvent = " << value.deviceEvent << '\n';
7025         s << '}';
7026         return s;
7027 }
7028
7029 std::ostream& operator<< (std::ostream& s, const VkDisplayEventInfoEXT& value)
7030 {
7031         s << "VkDisplayEventInfoEXT = {\n";
7032         s << "\tsType = " << value.sType << '\n';
7033         s << "\tpNext = " << value.pNext << '\n';
7034         s << "\tdisplayEvent = " << value.displayEvent << '\n';
7035         s << '}';
7036         return s;
7037 }
7038
7039 std::ostream& operator<< (std::ostream& s, const VkSwapchainCounterCreateInfoEXT& value)
7040 {
7041         s << "VkSwapchainCounterCreateInfoEXT = {\n";
7042         s << "\tsType = " << value.sType << '\n';
7043         s << "\tpNext = " << value.pNext << '\n';
7044         s << "\tsurfaceCounters = " << getSurfaceCounterFlagsEXTStr(value.surfaceCounters) << '\n';
7045         s << '}';
7046         return s;
7047 }
7048
7049 std::ostream& operator<< (std::ostream& s, const VkRefreshCycleDurationGOOGLE& value)
7050 {
7051         s << "VkRefreshCycleDurationGOOGLE = {\n";
7052         s << "\trefreshDuration = " << value.refreshDuration << '\n';
7053         s << '}';
7054         return s;
7055 }
7056
7057 std::ostream& operator<< (std::ostream& s, const VkPastPresentationTimingGOOGLE& value)
7058 {
7059         s << "VkPastPresentationTimingGOOGLE = {\n";
7060         s << "\tpresentID = " << value.presentID << '\n';
7061         s << "\tdesiredPresentTime = " << value.desiredPresentTime << '\n';
7062         s << "\tactualPresentTime = " << value.actualPresentTime << '\n';
7063         s << "\tearliestPresentTime = " << value.earliestPresentTime << '\n';
7064         s << "\tpresentMargin = " << value.presentMargin << '\n';
7065         s << '}';
7066         return s;
7067 }
7068
7069 std::ostream& operator<< (std::ostream& s, const VkPresentTimeGOOGLE& value)
7070 {
7071         s << "VkPresentTimeGOOGLE = {\n";
7072         s << "\tpresentID = " << value.presentID << '\n';
7073         s << "\tdesiredPresentTime = " << value.desiredPresentTime << '\n';
7074         s << '}';
7075         return s;
7076 }
7077
7078 std::ostream& operator<< (std::ostream& s, const VkPresentTimesInfoGOOGLE& value)
7079 {
7080         s << "VkPresentTimesInfoGOOGLE = {\n";
7081         s << "\tsType = " << value.sType << '\n';
7082         s << "\tpNext = " << value.pNext << '\n';
7083         s << "\tswapchainCount = " << value.swapchainCount << '\n';
7084         s << "\tpTimes = " << value.pTimes << '\n';
7085         s << '}';
7086         return s;
7087 }
7088
7089 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX& value)
7090 {
7091         s << "VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX = {\n";
7092         s << "\tsType = " << value.sType << '\n';
7093         s << "\tpNext = " << value.pNext << '\n';
7094         s << "\tperViewPositionAllComponents = " << value.perViewPositionAllComponents << '\n';
7095         s << '}';
7096         return s;
7097 }
7098
7099 std::ostream& operator<< (std::ostream& s, const VkViewportSwizzleNV& value)
7100 {
7101         s << "VkViewportSwizzleNV = {\n";
7102         s << "\tx = " << value.x << '\n';
7103         s << "\ty = " << value.y << '\n';
7104         s << "\tz = " << value.z << '\n';
7105         s << "\tw = " << value.w << '\n';
7106         s << '}';
7107         return s;
7108 }
7109
7110 std::ostream& operator<< (std::ostream& s, const VkPipelineViewportSwizzleStateCreateInfoNV& value)
7111 {
7112         s << "VkPipelineViewportSwizzleStateCreateInfoNV = {\n";
7113         s << "\tsType = " << value.sType << '\n';
7114         s << "\tpNext = " << value.pNext << '\n';
7115         s << "\tflags = " << getPipelineViewportSwizzleStateCreateFlagsNVStr(value.flags) << '\n';
7116         s << "\tviewportCount = " << value.viewportCount << '\n';
7117         s << "\tpViewportSwizzles = " << value.pViewportSwizzles << '\n';
7118         s << '}';
7119         return s;
7120 }
7121
7122 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceDiscardRectanglePropertiesEXT& value)
7123 {
7124         s << "VkPhysicalDeviceDiscardRectanglePropertiesEXT = {\n";
7125         s << "\tsType = " << value.sType << '\n';
7126         s << "\tpNext = " << value.pNext << '\n';
7127         s << "\tmaxDiscardRectangles = " << value.maxDiscardRectangles << '\n';
7128         s << '}';
7129         return s;
7130 }
7131
7132 std::ostream& operator<< (std::ostream& s, const VkPipelineDiscardRectangleStateCreateInfoEXT& value)
7133 {
7134         s << "VkPipelineDiscardRectangleStateCreateInfoEXT = {\n";
7135         s << "\tsType = " << value.sType << '\n';
7136         s << "\tpNext = " << value.pNext << '\n';
7137         s << "\tflags = " << getPipelineDiscardRectangleStateCreateFlagsEXTStr(value.flags) << '\n';
7138         s << "\tdiscardRectangleMode = " << value.discardRectangleMode << '\n';
7139         s << "\tdiscardRectangleCount = " << value.discardRectangleCount << '\n';
7140         s << "\tpDiscardRectangles = " << value.pDiscardRectangles << '\n';
7141         s << '}';
7142         return s;
7143 }
7144
7145 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceConservativeRasterizationPropertiesEXT& value)
7146 {
7147         s << "VkPhysicalDeviceConservativeRasterizationPropertiesEXT = {\n";
7148         s << "\tsType = " << value.sType << '\n';
7149         s << "\tpNext = " << value.pNext << '\n';
7150         s << "\tprimitiveOverestimationSize = " << value.primitiveOverestimationSize << '\n';
7151         s << "\tmaxExtraPrimitiveOverestimationSize = " << value.maxExtraPrimitiveOverestimationSize << '\n';
7152         s << "\textraPrimitiveOverestimationSizeGranularity = " << value.extraPrimitiveOverestimationSizeGranularity << '\n';
7153         s << "\tprimitiveUnderestimation = " << value.primitiveUnderestimation << '\n';
7154         s << "\tconservativePointAndLineRasterization = " << value.conservativePointAndLineRasterization << '\n';
7155         s << "\tdegenerateTrianglesRasterized = " << value.degenerateTrianglesRasterized << '\n';
7156         s << "\tdegenerateLinesRasterized = " << value.degenerateLinesRasterized << '\n';
7157         s << "\tfullyCoveredFragmentShaderInputVariable = " << value.fullyCoveredFragmentShaderInputVariable << '\n';
7158         s << "\tconservativeRasterizationPostDepthCoverage = " << value.conservativeRasterizationPostDepthCoverage << '\n';
7159         s << '}';
7160         return s;
7161 }
7162
7163 std::ostream& operator<< (std::ostream& s, const VkPipelineRasterizationConservativeStateCreateInfoEXT& value)
7164 {
7165         s << "VkPipelineRasterizationConservativeStateCreateInfoEXT = {\n";
7166         s << "\tsType = " << value.sType << '\n';
7167         s << "\tpNext = " << value.pNext << '\n';
7168         s << "\tflags = " << getPipelineRasterizationConservativeStateCreateFlagsEXTStr(value.flags) << '\n';
7169         s << "\tconservativeRasterizationMode = " << value.conservativeRasterizationMode << '\n';
7170         s << "\textraPrimitiveOverestimationSize = " << value.extraPrimitiveOverestimationSize << '\n';
7171         s << '}';
7172         return s;
7173 }
7174
7175 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceDepthClipEnableFeaturesEXT& value)
7176 {
7177         s << "VkPhysicalDeviceDepthClipEnableFeaturesEXT = {\n";
7178         s << "\tsType = " << value.sType << '\n';
7179         s << "\tpNext = " << value.pNext << '\n';
7180         s << "\tdepthClipEnable = " << value.depthClipEnable << '\n';
7181         s << '}';
7182         return s;
7183 }
7184
7185 std::ostream& operator<< (std::ostream& s, const VkPipelineRasterizationDepthClipStateCreateInfoEXT& value)
7186 {
7187         s << "VkPipelineRasterizationDepthClipStateCreateInfoEXT = {\n";
7188         s << "\tsType = " << value.sType << '\n';
7189         s << "\tpNext = " << value.pNext << '\n';
7190         s << "\tflags = " << getPipelineRasterizationDepthClipStateCreateFlagsEXTStr(value.flags) << '\n';
7191         s << "\tdepthClipEnable = " << value.depthClipEnable << '\n';
7192         s << '}';
7193         return s;
7194 }
7195
7196 std::ostream& operator<< (std::ostream& s, const VkXYColorEXT& value)
7197 {
7198         s << "VkXYColorEXT = {\n";
7199         s << "\tx = " << value.x << '\n';
7200         s << "\ty = " << value.y << '\n';
7201         s << '}';
7202         return s;
7203 }
7204
7205 std::ostream& operator<< (std::ostream& s, const VkHdrMetadataEXT& value)
7206 {
7207         s << "VkHdrMetadataEXT = {\n";
7208         s << "\tsType = " << value.sType << '\n';
7209         s << "\tpNext = " << value.pNext << '\n';
7210         s << "\tdisplayPrimaryRed = " << value.displayPrimaryRed << '\n';
7211         s << "\tdisplayPrimaryGreen = " << value.displayPrimaryGreen << '\n';
7212         s << "\tdisplayPrimaryBlue = " << value.displayPrimaryBlue << '\n';
7213         s << "\twhitePoint = " << value.whitePoint << '\n';
7214         s << "\tmaxLuminance = " << value.maxLuminance << '\n';
7215         s << "\tminLuminance = " << value.minLuminance << '\n';
7216         s << "\tmaxContentLightLevel = " << value.maxContentLightLevel << '\n';
7217         s << "\tmaxFrameAverageLightLevel = " << value.maxFrameAverageLightLevel << '\n';
7218         s << '}';
7219         return s;
7220 }
7221
7222 std::ostream& operator<< (std::ostream& s, const VkDebugUtilsObjectNameInfoEXT& value)
7223 {
7224         s << "VkDebugUtilsObjectNameInfoEXT = {\n";
7225         s << "\tsType = " << value.sType << '\n';
7226         s << "\tpNext = " << value.pNext << '\n';
7227         s << "\tobjectType = " << value.objectType << '\n';
7228         s << "\tobjectHandle = " << value.objectHandle << '\n';
7229         s << "\tpObjectName = " << getCharPtrStr(value.pObjectName) << '\n';
7230         s << '}';
7231         return s;
7232 }
7233
7234 std::ostream& operator<< (std::ostream& s, const VkDebugUtilsObjectTagInfoEXT& value)
7235 {
7236         s << "VkDebugUtilsObjectTagInfoEXT = {\n";
7237         s << "\tsType = " << value.sType << '\n';
7238         s << "\tpNext = " << value.pNext << '\n';
7239         s << "\tobjectType = " << value.objectType << '\n';
7240         s << "\tobjectHandle = " << value.objectHandle << '\n';
7241         s << "\ttagName = " << value.tagName << '\n';
7242         s << "\ttagSize = " << value.tagSize << '\n';
7243         s << "\tpTag = " << value.pTag << '\n';
7244         s << '}';
7245         return s;
7246 }
7247
7248 std::ostream& operator<< (std::ostream& s, const VkDebugUtilsLabelEXT& value)
7249 {
7250         s << "VkDebugUtilsLabelEXT = {\n";
7251         s << "\tsType = " << value.sType << '\n';
7252         s << "\tpNext = " << value.pNext << '\n';
7253         s << "\tpLabelName = " << getCharPtrStr(value.pLabelName) << '\n';
7254         s << "\tcolor = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.color), DE_ARRAY_END(value.color)) << '\n';
7255         s << '}';
7256         return s;
7257 }
7258
7259 std::ostream& operator<< (std::ostream& s, const VkDebugUtilsMessengerCallbackDataEXT& value)
7260 {
7261         s << "VkDebugUtilsMessengerCallbackDataEXT = {\n";
7262         s << "\tsType = " << value.sType << '\n';
7263         s << "\tpNext = " << value.pNext << '\n';
7264         s << "\tflags = " << getDebugUtilsMessengerCallbackDataFlagsEXTStr(value.flags) << '\n';
7265         s << "\tpMessageIdName = " << getCharPtrStr(value.pMessageIdName) << '\n';
7266         s << "\tmessageIdNumber = " << value.messageIdNumber << '\n';
7267         s << "\tpMessage = " << getCharPtrStr(value.pMessage) << '\n';
7268         s << "\tqueueLabelCount = " << value.queueLabelCount << '\n';
7269         s << "\tpQueueLabels = " << value.pQueueLabels << '\n';
7270         s << "\tcmdBufLabelCount = " << value.cmdBufLabelCount << '\n';
7271         s << "\tpCmdBufLabels = " << value.pCmdBufLabels << '\n';
7272         s << "\tobjectCount = " << value.objectCount << '\n';
7273         s << "\tpObjects = " << value.pObjects << '\n';
7274         s << '}';
7275         return s;
7276 }
7277
7278 std::ostream& operator<< (std::ostream& s, const VkDebugUtilsMessengerCreateInfoEXT& value)
7279 {
7280         s << "VkDebugUtilsMessengerCreateInfoEXT = {\n";
7281         s << "\tsType = " << value.sType << '\n';
7282         s << "\tpNext = " << value.pNext << '\n';
7283         s << "\tflags = " << getDebugUtilsMessengerCreateFlagsEXTStr(value.flags) << '\n';
7284         s << "\tmessageSeverity = " << getDebugUtilsMessageSeverityFlagsEXTStr(value.messageSeverity) << '\n';
7285         s << "\tmessageType = " << getDebugUtilsMessageTypeFlagsEXTStr(value.messageType) << '\n';
7286         s << "\tpfnUserCallback = " << value.pfnUserCallback << '\n';
7287         s << "\tpUserData = " << value.pUserData << '\n';
7288         s << '}';
7289         return s;
7290 }
7291
7292 std::ostream& operator<< (std::ostream& s, const VkSamplerReductionModeCreateInfoEXT& value)
7293 {
7294         s << "VkSamplerReductionModeCreateInfoEXT = {\n";
7295         s << "\tsType = " << value.sType << '\n';
7296         s << "\tpNext = " << value.pNext << '\n';
7297         s << "\treductionMode = " << value.reductionMode << '\n';
7298         s << '}';
7299         return s;
7300 }
7301
7302 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT& value)
7303 {
7304         s << "VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT = {\n";
7305         s << "\tsType = " << value.sType << '\n';
7306         s << "\tpNext = " << value.pNext << '\n';
7307         s << "\tfilterMinmaxSingleComponentFormats = " << value.filterMinmaxSingleComponentFormats << '\n';
7308         s << "\tfilterMinmaxImageComponentMapping = " << value.filterMinmaxImageComponentMapping << '\n';
7309         s << '}';
7310         return s;
7311 }
7312
7313 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceInlineUniformBlockFeaturesEXT& value)
7314 {
7315         s << "VkPhysicalDeviceInlineUniformBlockFeaturesEXT = {\n";
7316         s << "\tsType = " << value.sType << '\n';
7317         s << "\tpNext = " << value.pNext << '\n';
7318         s << "\tinlineUniformBlock = " << value.inlineUniformBlock << '\n';
7319         s << "\tdescriptorBindingInlineUniformBlockUpdateAfterBind = " << value.descriptorBindingInlineUniformBlockUpdateAfterBind << '\n';
7320         s << '}';
7321         return s;
7322 }
7323
7324 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceInlineUniformBlockPropertiesEXT& value)
7325 {
7326         s << "VkPhysicalDeviceInlineUniformBlockPropertiesEXT = {\n";
7327         s << "\tsType = " << value.sType << '\n';
7328         s << "\tpNext = " << value.pNext << '\n';
7329         s << "\tmaxInlineUniformBlockSize = " << value.maxInlineUniformBlockSize << '\n';
7330         s << "\tmaxPerStageDescriptorInlineUniformBlocks = " << value.maxPerStageDescriptorInlineUniformBlocks << '\n';
7331         s << "\tmaxPerStageDescriptorUpdateAfterBindInlineUniformBlocks = " << value.maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks << '\n';
7332         s << "\tmaxDescriptorSetInlineUniformBlocks = " << value.maxDescriptorSetInlineUniformBlocks << '\n';
7333         s << "\tmaxDescriptorSetUpdateAfterBindInlineUniformBlocks = " << value.maxDescriptorSetUpdateAfterBindInlineUniformBlocks << '\n';
7334         s << '}';
7335         return s;
7336 }
7337
7338 std::ostream& operator<< (std::ostream& s, const VkWriteDescriptorSetInlineUniformBlockEXT& value)
7339 {
7340         s << "VkWriteDescriptorSetInlineUniformBlockEXT = {\n";
7341         s << "\tsType = " << value.sType << '\n';
7342         s << "\tpNext = " << value.pNext << '\n';
7343         s << "\tdataSize = " << value.dataSize << '\n';
7344         s << "\tpData = " << value.pData << '\n';
7345         s << '}';
7346         return s;
7347 }
7348
7349 std::ostream& operator<< (std::ostream& s, const VkDescriptorPoolInlineUniformBlockCreateInfoEXT& value)
7350 {
7351         s << "VkDescriptorPoolInlineUniformBlockCreateInfoEXT = {\n";
7352         s << "\tsType = " << value.sType << '\n';
7353         s << "\tpNext = " << value.pNext << '\n';
7354         s << "\tmaxInlineUniformBlockBindings = " << value.maxInlineUniformBlockBindings << '\n';
7355         s << '}';
7356         return s;
7357 }
7358
7359 std::ostream& operator<< (std::ostream& s, const VkSampleLocationEXT& value)
7360 {
7361         s << "VkSampleLocationEXT = {\n";
7362         s << "\tx = " << value.x << '\n';
7363         s << "\ty = " << value.y << '\n';
7364         s << '}';
7365         return s;
7366 }
7367
7368 std::ostream& operator<< (std::ostream& s, const VkSampleLocationsInfoEXT& value)
7369 {
7370         s << "VkSampleLocationsInfoEXT = {\n";
7371         s << "\tsType = " << value.sType << '\n';
7372         s << "\tpNext = " << value.pNext << '\n';
7373         s << "\tsampleLocationsPerPixel = " << value.sampleLocationsPerPixel << '\n';
7374         s << "\tsampleLocationGridSize = " << value.sampleLocationGridSize << '\n';
7375         s << "\tsampleLocationsCount = " << value.sampleLocationsCount << '\n';
7376         s << "\tpSampleLocations = " << value.pSampleLocations << '\n';
7377         s << '}';
7378         return s;
7379 }
7380
7381 std::ostream& operator<< (std::ostream& s, const VkAttachmentSampleLocationsEXT& value)
7382 {
7383         s << "VkAttachmentSampleLocationsEXT = {\n";
7384         s << "\tattachmentIndex = " << value.attachmentIndex << '\n';
7385         s << "\tsampleLocationsInfo = " << value.sampleLocationsInfo << '\n';
7386         s << '}';
7387         return s;
7388 }
7389
7390 std::ostream& operator<< (std::ostream& s, const VkSubpassSampleLocationsEXT& value)
7391 {
7392         s << "VkSubpassSampleLocationsEXT = {\n";
7393         s << "\tsubpassIndex = " << value.subpassIndex << '\n';
7394         s << "\tsampleLocationsInfo = " << value.sampleLocationsInfo << '\n';
7395         s << '}';
7396         return s;
7397 }
7398
7399 std::ostream& operator<< (std::ostream& s, const VkRenderPassSampleLocationsBeginInfoEXT& value)
7400 {
7401         s << "VkRenderPassSampleLocationsBeginInfoEXT = {\n";
7402         s << "\tsType = " << value.sType << '\n';
7403         s << "\tpNext = " << value.pNext << '\n';
7404         s << "\tattachmentInitialSampleLocationsCount = " << value.attachmentInitialSampleLocationsCount << '\n';
7405         s << "\tpAttachmentInitialSampleLocations = " << value.pAttachmentInitialSampleLocations << '\n';
7406         s << "\tpostSubpassSampleLocationsCount = " << value.postSubpassSampleLocationsCount << '\n';
7407         s << "\tpPostSubpassSampleLocations = " << value.pPostSubpassSampleLocations << '\n';
7408         s << '}';
7409         return s;
7410 }
7411
7412 std::ostream& operator<< (std::ostream& s, const VkPipelineSampleLocationsStateCreateInfoEXT& value)
7413 {
7414         s << "VkPipelineSampleLocationsStateCreateInfoEXT = {\n";
7415         s << "\tsType = " << value.sType << '\n';
7416         s << "\tpNext = " << value.pNext << '\n';
7417         s << "\tsampleLocationsEnable = " << value.sampleLocationsEnable << '\n';
7418         s << "\tsampleLocationsInfo = " << value.sampleLocationsInfo << '\n';
7419         s << '}';
7420         return s;
7421 }
7422
7423 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceSampleLocationsPropertiesEXT& value)
7424 {
7425         s << "VkPhysicalDeviceSampleLocationsPropertiesEXT = {\n";
7426         s << "\tsType = " << value.sType << '\n';
7427         s << "\tpNext = " << value.pNext << '\n';
7428         s << "\tsampleLocationSampleCounts = " << getSampleCountFlagsStr(value.sampleLocationSampleCounts) << '\n';
7429         s << "\tmaxSampleLocationGridSize = " << value.maxSampleLocationGridSize << '\n';
7430         s << "\tsampleLocationCoordinateRange = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.sampleLocationCoordinateRange), DE_ARRAY_END(value.sampleLocationCoordinateRange)) << '\n';
7431         s << "\tsampleLocationSubPixelBits = " << value.sampleLocationSubPixelBits << '\n';
7432         s << "\tvariableSampleLocations = " << value.variableSampleLocations << '\n';
7433         s << '}';
7434         return s;
7435 }
7436
7437 std::ostream& operator<< (std::ostream& s, const VkMultisamplePropertiesEXT& value)
7438 {
7439         s << "VkMultisamplePropertiesEXT = {\n";
7440         s << "\tsType = " << value.sType << '\n';
7441         s << "\tpNext = " << value.pNext << '\n';
7442         s << "\tmaxSampleLocationGridSize = " << value.maxSampleLocationGridSize << '\n';
7443         s << '}';
7444         return s;
7445 }
7446
7447 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT& value)
7448 {
7449         s << "VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT = {\n";
7450         s << "\tsType = " << value.sType << '\n';
7451         s << "\tpNext = " << value.pNext << '\n';
7452         s << "\tadvancedBlendCoherentOperations = " << value.advancedBlendCoherentOperations << '\n';
7453         s << '}';
7454         return s;
7455 }
7456
7457 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT& value)
7458 {
7459         s << "VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT = {\n";
7460         s << "\tsType = " << value.sType << '\n';
7461         s << "\tpNext = " << value.pNext << '\n';
7462         s << "\tadvancedBlendMaxColorAttachments = " << value.advancedBlendMaxColorAttachments << '\n';
7463         s << "\tadvancedBlendIndependentBlend = " << value.advancedBlendIndependentBlend << '\n';
7464         s << "\tadvancedBlendNonPremultipliedSrcColor = " << value.advancedBlendNonPremultipliedSrcColor << '\n';
7465         s << "\tadvancedBlendNonPremultipliedDstColor = " << value.advancedBlendNonPremultipliedDstColor << '\n';
7466         s << "\tadvancedBlendCorrelatedOverlap = " << value.advancedBlendCorrelatedOverlap << '\n';
7467         s << "\tadvancedBlendAllOperations = " << value.advancedBlendAllOperations << '\n';
7468         s << '}';
7469         return s;
7470 }
7471
7472 std::ostream& operator<< (std::ostream& s, const VkPipelineColorBlendAdvancedStateCreateInfoEXT& value)
7473 {
7474         s << "VkPipelineColorBlendAdvancedStateCreateInfoEXT = {\n";
7475         s << "\tsType = " << value.sType << '\n';
7476         s << "\tpNext = " << value.pNext << '\n';
7477         s << "\tsrcPremultiplied = " << value.srcPremultiplied << '\n';
7478         s << "\tdstPremultiplied = " << value.dstPremultiplied << '\n';
7479         s << "\tblendOverlap = " << value.blendOverlap << '\n';
7480         s << '}';
7481         return s;
7482 }
7483
7484 std::ostream& operator<< (std::ostream& s, const VkPipelineCoverageToColorStateCreateInfoNV& value)
7485 {
7486         s << "VkPipelineCoverageToColorStateCreateInfoNV = {\n";
7487         s << "\tsType = " << value.sType << '\n';
7488         s << "\tpNext = " << value.pNext << '\n';
7489         s << "\tflags = " << getPipelineCoverageToColorStateCreateFlagsNVStr(value.flags) << '\n';
7490         s << "\tcoverageToColorEnable = " << value.coverageToColorEnable << '\n';
7491         s << "\tcoverageToColorLocation = " << value.coverageToColorLocation << '\n';
7492         s << '}';
7493         return s;
7494 }
7495
7496 std::ostream& operator<< (std::ostream& s, const VkPipelineCoverageModulationStateCreateInfoNV& value)
7497 {
7498         s << "VkPipelineCoverageModulationStateCreateInfoNV = {\n";
7499         s << "\tsType = " << value.sType << '\n';
7500         s << "\tpNext = " << value.pNext << '\n';
7501         s << "\tflags = " << getPipelineCoverageModulationStateCreateFlagsNVStr(value.flags) << '\n';
7502         s << "\tcoverageModulationMode = " << value.coverageModulationMode << '\n';
7503         s << "\tcoverageModulationTableEnable = " << value.coverageModulationTableEnable << '\n';
7504         s << "\tcoverageModulationTableCount = " << value.coverageModulationTableCount << '\n';
7505         s << "\tpCoverageModulationTable = " << value.pCoverageModulationTable << '\n';
7506         s << '}';
7507         return s;
7508 }
7509
7510 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceShaderSMBuiltinsPropertiesNV& value)
7511 {
7512         s << "VkPhysicalDeviceShaderSMBuiltinsPropertiesNV = {\n";
7513         s << "\tsType = " << value.sType << '\n';
7514         s << "\tpNext = " << value.pNext << '\n';
7515         s << "\tshaderSMCount = " << value.shaderSMCount << '\n';
7516         s << "\tshaderWarpsPerSM = " << value.shaderWarpsPerSM << '\n';
7517         s << '}';
7518         return s;
7519 }
7520
7521 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceShaderSMBuiltinsFeaturesNV& value)
7522 {
7523         s << "VkPhysicalDeviceShaderSMBuiltinsFeaturesNV = {\n";
7524         s << "\tsType = " << value.sType << '\n';
7525         s << "\tpNext = " << value.pNext << '\n';
7526         s << "\tshaderSMBuiltins = " << value.shaderSMBuiltins << '\n';
7527         s << '}';
7528         return s;
7529 }
7530
7531 std::ostream& operator<< (std::ostream& s, const VkDrmFormatModifierPropertiesEXT& value)
7532 {
7533         s << "VkDrmFormatModifierPropertiesEXT = {\n";
7534         s << "\tdrmFormatModifier = " << value.drmFormatModifier << '\n';
7535         s << "\tdrmFormatModifierPlaneCount = " << value.drmFormatModifierPlaneCount << '\n';
7536         s << "\tdrmFormatModifierTilingFeatures = " << getFormatFeatureFlagsStr(value.drmFormatModifierTilingFeatures) << '\n';
7537         s << '}';
7538         return s;
7539 }
7540
7541 std::ostream& operator<< (std::ostream& s, const VkDrmFormatModifierPropertiesListEXT& value)
7542 {
7543         s << "VkDrmFormatModifierPropertiesListEXT = {\n";
7544         s << "\tsType = " << value.sType << '\n';
7545         s << "\tpNext = " << value.pNext << '\n';
7546         s << "\tdrmFormatModifierCount = " << value.drmFormatModifierCount << '\n';
7547         s << "\tpDrmFormatModifierProperties = " << value.pDrmFormatModifierProperties << '\n';
7548         s << '}';
7549         return s;
7550 }
7551
7552 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceImageDrmFormatModifierInfoEXT& value)
7553 {
7554         s << "VkPhysicalDeviceImageDrmFormatModifierInfoEXT = {\n";
7555         s << "\tsType = " << value.sType << '\n';
7556         s << "\tpNext = " << value.pNext << '\n';
7557         s << "\tdrmFormatModifier = " << value.drmFormatModifier << '\n';
7558         s << "\tsharingMode = " << value.sharingMode << '\n';
7559         s << "\tqueueFamilyIndexCount = " << value.queueFamilyIndexCount << '\n';
7560         s << "\tpQueueFamilyIndices = " << value.pQueueFamilyIndices << '\n';
7561         s << '}';
7562         return s;
7563 }
7564
7565 std::ostream& operator<< (std::ostream& s, const VkImageDrmFormatModifierListCreateInfoEXT& value)
7566 {
7567         s << "VkImageDrmFormatModifierListCreateInfoEXT = {\n";
7568         s << "\tsType = " << value.sType << '\n';
7569         s << "\tpNext = " << value.pNext << '\n';
7570         s << "\tdrmFormatModifierCount = " << value.drmFormatModifierCount << '\n';
7571         s << "\tpDrmFormatModifiers = " << value.pDrmFormatModifiers << '\n';
7572         s << '}';
7573         return s;
7574 }
7575
7576 std::ostream& operator<< (std::ostream& s, const VkImageDrmFormatModifierExplicitCreateInfoEXT& value)
7577 {
7578         s << "VkImageDrmFormatModifierExplicitCreateInfoEXT = {\n";
7579         s << "\tsType = " << value.sType << '\n';
7580         s << "\tpNext = " << value.pNext << '\n';
7581         s << "\tdrmFormatModifier = " << value.drmFormatModifier << '\n';
7582         s << "\tdrmFormatModifierPlaneCount = " << value.drmFormatModifierPlaneCount << '\n';
7583         s << "\tpPlaneLayouts = " << value.pPlaneLayouts << '\n';
7584         s << '}';
7585         return s;
7586 }
7587
7588 std::ostream& operator<< (std::ostream& s, const VkImageDrmFormatModifierPropertiesEXT& value)
7589 {
7590         s << "VkImageDrmFormatModifierPropertiesEXT = {\n";
7591         s << "\tsType = " << value.sType << '\n';
7592         s << "\tpNext = " << value.pNext << '\n';
7593         s << "\tdrmFormatModifier = " << value.drmFormatModifier << '\n';
7594         s << '}';
7595         return s;
7596 }
7597
7598 std::ostream& operator<< (std::ostream& s, const VkValidationCacheCreateInfoEXT& value)
7599 {
7600         s << "VkValidationCacheCreateInfoEXT = {\n";
7601         s << "\tsType = " << value.sType << '\n';
7602         s << "\tpNext = " << value.pNext << '\n';
7603         s << "\tflags = " << getValidationCacheCreateFlagsEXTStr(value.flags) << '\n';
7604         s << "\tinitialDataSize = " << value.initialDataSize << '\n';
7605         s << "\tpInitialData = " << value.pInitialData << '\n';
7606         s << '}';
7607         return s;
7608 }
7609
7610 std::ostream& operator<< (std::ostream& s, const VkShaderModuleValidationCacheCreateInfoEXT& value)
7611 {
7612         s << "VkShaderModuleValidationCacheCreateInfoEXT = {\n";
7613         s << "\tsType = " << value.sType << '\n';
7614         s << "\tpNext = " << value.pNext << '\n';
7615         s << "\tvalidationCache = " << value.validationCache << '\n';
7616         s << '}';
7617         return s;
7618 }
7619
7620 std::ostream& operator<< (std::ostream& s, const VkDescriptorSetLayoutBindingFlagsCreateInfoEXT& value)
7621 {
7622         s << "VkDescriptorSetLayoutBindingFlagsCreateInfoEXT = {\n";
7623         s << "\tsType = " << value.sType << '\n';
7624         s << "\tpNext = " << value.pNext << '\n';
7625         s << "\tbindingCount = " << value.bindingCount << '\n';
7626         s << "\tpBindingFlags = " << value.pBindingFlags << '\n';
7627         s << '}';
7628         return s;
7629 }
7630
7631 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceDescriptorIndexingFeaturesEXT& value)
7632 {
7633         s << "VkPhysicalDeviceDescriptorIndexingFeaturesEXT = {\n";
7634         s << "\tsType = " << value.sType << '\n';
7635         s << "\tpNext = " << value.pNext << '\n';
7636         s << "\tshaderInputAttachmentArrayDynamicIndexing = " << value.shaderInputAttachmentArrayDynamicIndexing << '\n';
7637         s << "\tshaderUniformTexelBufferArrayDynamicIndexing = " << value.shaderUniformTexelBufferArrayDynamicIndexing << '\n';
7638         s << "\tshaderStorageTexelBufferArrayDynamicIndexing = " << value.shaderStorageTexelBufferArrayDynamicIndexing << '\n';
7639         s << "\tshaderUniformBufferArrayNonUniformIndexing = " << value.shaderUniformBufferArrayNonUniformIndexing << '\n';
7640         s << "\tshaderSampledImageArrayNonUniformIndexing = " << value.shaderSampledImageArrayNonUniformIndexing << '\n';
7641         s << "\tshaderStorageBufferArrayNonUniformIndexing = " << value.shaderStorageBufferArrayNonUniformIndexing << '\n';
7642         s << "\tshaderStorageImageArrayNonUniformIndexing = " << value.shaderStorageImageArrayNonUniformIndexing << '\n';
7643         s << "\tshaderInputAttachmentArrayNonUniformIndexing = " << value.shaderInputAttachmentArrayNonUniformIndexing << '\n';
7644         s << "\tshaderUniformTexelBufferArrayNonUniformIndexing = " << value.shaderUniformTexelBufferArrayNonUniformIndexing << '\n';
7645         s << "\tshaderStorageTexelBufferArrayNonUniformIndexing = " << value.shaderStorageTexelBufferArrayNonUniformIndexing << '\n';
7646         s << "\tdescriptorBindingUniformBufferUpdateAfterBind = " << value.descriptorBindingUniformBufferUpdateAfterBind << '\n';
7647         s << "\tdescriptorBindingSampledImageUpdateAfterBind = " << value.descriptorBindingSampledImageUpdateAfterBind << '\n';
7648         s << "\tdescriptorBindingStorageImageUpdateAfterBind = " << value.descriptorBindingStorageImageUpdateAfterBind << '\n';
7649         s << "\tdescriptorBindingStorageBufferUpdateAfterBind = " << value.descriptorBindingStorageBufferUpdateAfterBind << '\n';
7650         s << "\tdescriptorBindingUniformTexelBufferUpdateAfterBind = " << value.descriptorBindingUniformTexelBufferUpdateAfterBind << '\n';
7651         s << "\tdescriptorBindingStorageTexelBufferUpdateAfterBind = " << value.descriptorBindingStorageTexelBufferUpdateAfterBind << '\n';
7652         s << "\tdescriptorBindingUpdateUnusedWhilePending = " << value.descriptorBindingUpdateUnusedWhilePending << '\n';
7653         s << "\tdescriptorBindingPartiallyBound = " << value.descriptorBindingPartiallyBound << '\n';
7654         s << "\tdescriptorBindingVariableDescriptorCount = " << value.descriptorBindingVariableDescriptorCount << '\n';
7655         s << "\truntimeDescriptorArray = " << value.runtimeDescriptorArray << '\n';
7656         s << '}';
7657         return s;
7658 }
7659
7660 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceDescriptorIndexingPropertiesEXT& value)
7661 {
7662         s << "VkPhysicalDeviceDescriptorIndexingPropertiesEXT = {\n";
7663         s << "\tsType = " << value.sType << '\n';
7664         s << "\tpNext = " << value.pNext << '\n';
7665         s << "\tmaxUpdateAfterBindDescriptorsInAllPools = " << value.maxUpdateAfterBindDescriptorsInAllPools << '\n';
7666         s << "\tshaderUniformBufferArrayNonUniformIndexingNative = " << value.shaderUniformBufferArrayNonUniformIndexingNative << '\n';
7667         s << "\tshaderSampledImageArrayNonUniformIndexingNative = " << value.shaderSampledImageArrayNonUniformIndexingNative << '\n';
7668         s << "\tshaderStorageBufferArrayNonUniformIndexingNative = " << value.shaderStorageBufferArrayNonUniformIndexingNative << '\n';
7669         s << "\tshaderStorageImageArrayNonUniformIndexingNative = " << value.shaderStorageImageArrayNonUniformIndexingNative << '\n';
7670         s << "\tshaderInputAttachmentArrayNonUniformIndexingNative = " << value.shaderInputAttachmentArrayNonUniformIndexingNative << '\n';
7671         s << "\trobustBufferAccessUpdateAfterBind = " << value.robustBufferAccessUpdateAfterBind << '\n';
7672         s << "\tquadDivergentImplicitLod = " << value.quadDivergentImplicitLod << '\n';
7673         s << "\tmaxPerStageDescriptorUpdateAfterBindSamplers = " << value.maxPerStageDescriptorUpdateAfterBindSamplers << '\n';
7674         s << "\tmaxPerStageDescriptorUpdateAfterBindUniformBuffers = " << value.maxPerStageDescriptorUpdateAfterBindUniformBuffers << '\n';
7675         s << "\tmaxPerStageDescriptorUpdateAfterBindStorageBuffers = " << value.maxPerStageDescriptorUpdateAfterBindStorageBuffers << '\n';
7676         s << "\tmaxPerStageDescriptorUpdateAfterBindSampledImages = " << value.maxPerStageDescriptorUpdateAfterBindSampledImages << '\n';
7677         s << "\tmaxPerStageDescriptorUpdateAfterBindStorageImages = " << value.maxPerStageDescriptorUpdateAfterBindStorageImages << '\n';
7678         s << "\tmaxPerStageDescriptorUpdateAfterBindInputAttachments = " << value.maxPerStageDescriptorUpdateAfterBindInputAttachments << '\n';
7679         s << "\tmaxPerStageUpdateAfterBindResources = " << value.maxPerStageUpdateAfterBindResources << '\n';
7680         s << "\tmaxDescriptorSetUpdateAfterBindSamplers = " << value.maxDescriptorSetUpdateAfterBindSamplers << '\n';
7681         s << "\tmaxDescriptorSetUpdateAfterBindUniformBuffers = " << value.maxDescriptorSetUpdateAfterBindUniformBuffers << '\n';
7682         s << "\tmaxDescriptorSetUpdateAfterBindUniformBuffersDynamic = " << value.maxDescriptorSetUpdateAfterBindUniformBuffersDynamic << '\n';
7683         s << "\tmaxDescriptorSetUpdateAfterBindStorageBuffers = " << value.maxDescriptorSetUpdateAfterBindStorageBuffers << '\n';
7684         s << "\tmaxDescriptorSetUpdateAfterBindStorageBuffersDynamic = " << value.maxDescriptorSetUpdateAfterBindStorageBuffersDynamic << '\n';
7685         s << "\tmaxDescriptorSetUpdateAfterBindSampledImages = " << value.maxDescriptorSetUpdateAfterBindSampledImages << '\n';
7686         s << "\tmaxDescriptorSetUpdateAfterBindStorageImages = " << value.maxDescriptorSetUpdateAfterBindStorageImages << '\n';
7687         s << "\tmaxDescriptorSetUpdateAfterBindInputAttachments = " << value.maxDescriptorSetUpdateAfterBindInputAttachments << '\n';
7688         s << '}';
7689         return s;
7690 }
7691
7692 std::ostream& operator<< (std::ostream& s, const VkDescriptorSetVariableDescriptorCountAllocateInfoEXT& value)
7693 {
7694         s << "VkDescriptorSetVariableDescriptorCountAllocateInfoEXT = {\n";
7695         s << "\tsType = " << value.sType << '\n';
7696         s << "\tpNext = " << value.pNext << '\n';
7697         s << "\tdescriptorSetCount = " << value.descriptorSetCount << '\n';
7698         s << "\tpDescriptorCounts = " << value.pDescriptorCounts << '\n';
7699         s << '}';
7700         return s;
7701 }
7702
7703 std::ostream& operator<< (std::ostream& s, const VkDescriptorSetVariableDescriptorCountLayoutSupportEXT& value)
7704 {
7705         s << "VkDescriptorSetVariableDescriptorCountLayoutSupportEXT = {\n";
7706         s << "\tsType = " << value.sType << '\n';
7707         s << "\tpNext = " << value.pNext << '\n';
7708         s << "\tmaxVariableDescriptorCount = " << value.maxVariableDescriptorCount << '\n';
7709         s << '}';
7710         return s;
7711 }
7712
7713 std::ostream& operator<< (std::ostream& s, const VkShadingRatePaletteNV& value)
7714 {
7715         s << "VkShadingRatePaletteNV = {\n";
7716         s << "\tshadingRatePaletteEntryCount = " << value.shadingRatePaletteEntryCount << '\n';
7717         s << "\tpShadingRatePaletteEntries = " << value.pShadingRatePaletteEntries << '\n';
7718         s << '}';
7719         return s;
7720 }
7721
7722 std::ostream& operator<< (std::ostream& s, const VkPipelineViewportShadingRateImageStateCreateInfoNV& value)
7723 {
7724         s << "VkPipelineViewportShadingRateImageStateCreateInfoNV = {\n";
7725         s << "\tsType = " << value.sType << '\n';
7726         s << "\tpNext = " << value.pNext << '\n';
7727         s << "\tshadingRateImageEnable = " << value.shadingRateImageEnable << '\n';
7728         s << "\tviewportCount = " << value.viewportCount << '\n';
7729         s << "\tpShadingRatePalettes = " << value.pShadingRatePalettes << '\n';
7730         s << '}';
7731         return s;
7732 }
7733
7734 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceShadingRateImageFeaturesNV& value)
7735 {
7736         s << "VkPhysicalDeviceShadingRateImageFeaturesNV = {\n";
7737         s << "\tsType = " << value.sType << '\n';
7738         s << "\tpNext = " << value.pNext << '\n';
7739         s << "\tshadingRateImage = " << value.shadingRateImage << '\n';
7740         s << "\tshadingRateCoarseSampleOrder = " << value.shadingRateCoarseSampleOrder << '\n';
7741         s << '}';
7742         return s;
7743 }
7744
7745 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceShadingRateImagePropertiesNV& value)
7746 {
7747         s << "VkPhysicalDeviceShadingRateImagePropertiesNV = {\n";
7748         s << "\tsType = " << value.sType << '\n';
7749         s << "\tpNext = " << value.pNext << '\n';
7750         s << "\tshadingRateTexelSize = " << value.shadingRateTexelSize << '\n';
7751         s << "\tshadingRatePaletteSize = " << value.shadingRatePaletteSize << '\n';
7752         s << "\tshadingRateMaxCoarseSamples = " << value.shadingRateMaxCoarseSamples << '\n';
7753         s << '}';
7754         return s;
7755 }
7756
7757 std::ostream& operator<< (std::ostream& s, const VkCoarseSampleLocationNV& value)
7758 {
7759         s << "VkCoarseSampleLocationNV = {\n";
7760         s << "\tpixelX = " << value.pixelX << '\n';
7761         s << "\tpixelY = " << value.pixelY << '\n';
7762         s << "\tsample = " << value.sample << '\n';
7763         s << '}';
7764         return s;
7765 }
7766
7767 std::ostream& operator<< (std::ostream& s, const VkCoarseSampleOrderCustomNV& value)
7768 {
7769         s << "VkCoarseSampleOrderCustomNV = {\n";
7770         s << "\tshadingRate = " << value.shadingRate << '\n';
7771         s << "\tsampleCount = " << value.sampleCount << '\n';
7772         s << "\tsampleLocationCount = " << value.sampleLocationCount << '\n';
7773         s << "\tpSampleLocations = " << value.pSampleLocations << '\n';
7774         s << '}';
7775         return s;
7776 }
7777
7778 std::ostream& operator<< (std::ostream& s, const VkPipelineViewportCoarseSampleOrderStateCreateInfoNV& value)
7779 {
7780         s << "VkPipelineViewportCoarseSampleOrderStateCreateInfoNV = {\n";
7781         s << "\tsType = " << value.sType << '\n';
7782         s << "\tpNext = " << value.pNext << '\n';
7783         s << "\tsampleOrderType = " << value.sampleOrderType << '\n';
7784         s << "\tcustomSampleOrderCount = " << value.customSampleOrderCount << '\n';
7785         s << "\tpCustomSampleOrders = " << value.pCustomSampleOrders << '\n';
7786         s << '}';
7787         return s;
7788 }
7789
7790 std::ostream& operator<< (std::ostream& s, const VkRayTracingShaderGroupCreateInfoNV& value)
7791 {
7792         s << "VkRayTracingShaderGroupCreateInfoNV = {\n";
7793         s << "\tsType = " << value.sType << '\n';
7794         s << "\tpNext = " << value.pNext << '\n';
7795         s << "\ttype = " << value.type << '\n';
7796         s << "\tgeneralShader = " << value.generalShader << '\n';
7797         s << "\tclosestHitShader = " << value.closestHitShader << '\n';
7798         s << "\tanyHitShader = " << value.anyHitShader << '\n';
7799         s << "\tintersectionShader = " << value.intersectionShader << '\n';
7800         s << '}';
7801         return s;
7802 }
7803
7804 std::ostream& operator<< (std::ostream& s, const VkRayTracingPipelineCreateInfoNV& value)
7805 {
7806         s << "VkRayTracingPipelineCreateInfoNV = {\n";
7807         s << "\tsType = " << value.sType << '\n';
7808         s << "\tpNext = " << value.pNext << '\n';
7809         s << "\tflags = " << getPipelineCreateFlagsStr(value.flags) << '\n';
7810         s << "\tstageCount = " << value.stageCount << '\n';
7811         s << "\tpStages = " << value.pStages << '\n';
7812         s << "\tgroupCount = " << value.groupCount << '\n';
7813         s << "\tpGroups = " << value.pGroups << '\n';
7814         s << "\tmaxRecursionDepth = " << value.maxRecursionDepth << '\n';
7815         s << "\tlayout = " << value.layout << '\n';
7816         s << "\tbasePipelineHandle = " << value.basePipelineHandle << '\n';
7817         s << "\tbasePipelineIndex = " << value.basePipelineIndex << '\n';
7818         s << '}';
7819         return s;
7820 }
7821
7822 std::ostream& operator<< (std::ostream& s, const VkGeometryTrianglesNV& value)
7823 {
7824         s << "VkGeometryTrianglesNV = {\n";
7825         s << "\tsType = " << value.sType << '\n';
7826         s << "\tpNext = " << value.pNext << '\n';
7827         s << "\tvertexData = " << value.vertexData << '\n';
7828         s << "\tvertexOffset = " << value.vertexOffset << '\n';
7829         s << "\tvertexCount = " << value.vertexCount << '\n';
7830         s << "\tvertexStride = " << value.vertexStride << '\n';
7831         s << "\tvertexFormat = " << value.vertexFormat << '\n';
7832         s << "\tindexData = " << value.indexData << '\n';
7833         s << "\tindexOffset = " << value.indexOffset << '\n';
7834         s << "\tindexCount = " << value.indexCount << '\n';
7835         s << "\tindexType = " << value.indexType << '\n';
7836         s << "\ttransformData = " << value.transformData << '\n';
7837         s << "\ttransformOffset = " << value.transformOffset << '\n';
7838         s << '}';
7839         return s;
7840 }
7841
7842 std::ostream& operator<< (std::ostream& s, const VkGeometryAABBNV& value)
7843 {
7844         s << "VkGeometryAABBNV = {\n";
7845         s << "\tsType = " << value.sType << '\n';
7846         s << "\tpNext = " << value.pNext << '\n';
7847         s << "\taabbData = " << value.aabbData << '\n';
7848         s << "\tnumAABBs = " << value.numAABBs << '\n';
7849         s << "\tstride = " << value.stride << '\n';
7850         s << "\toffset = " << value.offset << '\n';
7851         s << '}';
7852         return s;
7853 }
7854
7855 std::ostream& operator<< (std::ostream& s, const VkGeometryDataNV& value)
7856 {
7857         s << "VkGeometryDataNV = {\n";
7858         s << "\ttriangles = " << value.triangles << '\n';
7859         s << "\taabbs = " << value.aabbs << '\n';
7860         s << '}';
7861         return s;
7862 }
7863
7864 std::ostream& operator<< (std::ostream& s, const VkGeometryNV& value)
7865 {
7866         s << "VkGeometryNV = {\n";
7867         s << "\tsType = " << value.sType << '\n';
7868         s << "\tpNext = " << value.pNext << '\n';
7869         s << "\tgeometryType = " << value.geometryType << '\n';
7870         s << "\tgeometry = " << value.geometry << '\n';
7871         s << "\tflags = " << getGeometryFlagsNVStr(value.flags) << '\n';
7872         s << '}';
7873         return s;
7874 }
7875
7876 std::ostream& operator<< (std::ostream& s, const VkAccelerationStructureInfoNV& value)
7877 {
7878         s << "VkAccelerationStructureInfoNV = {\n";
7879         s << "\tsType = " << value.sType << '\n';
7880         s << "\tpNext = " << value.pNext << '\n';
7881         s << "\ttype = " << value.type << '\n';
7882         s << "\tflags = " << getBuildAccelerationStructureFlagsNVStr(value.flags) << '\n';
7883         s << "\tinstanceCount = " << value.instanceCount << '\n';
7884         s << "\tgeometryCount = " << value.geometryCount << '\n';
7885         s << "\tpGeometries = " << value.pGeometries << '\n';
7886         s << '}';
7887         return s;
7888 }
7889
7890 std::ostream& operator<< (std::ostream& s, const VkAccelerationStructureCreateInfoNV& value)
7891 {
7892         s << "VkAccelerationStructureCreateInfoNV = {\n";
7893         s << "\tsType = " << value.sType << '\n';
7894         s << "\tpNext = " << value.pNext << '\n';
7895         s << "\tcompactedSize = " << value.compactedSize << '\n';
7896         s << "\tinfo = " << value.info << '\n';
7897         s << '}';
7898         return s;
7899 }
7900
7901 std::ostream& operator<< (std::ostream& s, const VkBindAccelerationStructureMemoryInfoNV& value)
7902 {
7903         s << "VkBindAccelerationStructureMemoryInfoNV = {\n";
7904         s << "\tsType = " << value.sType << '\n';
7905         s << "\tpNext = " << value.pNext << '\n';
7906         s << "\taccelerationStructure = " << value.accelerationStructure << '\n';
7907         s << "\tmemory = " << value.memory << '\n';
7908         s << "\tmemoryOffset = " << value.memoryOffset << '\n';
7909         s << "\tdeviceIndexCount = " << value.deviceIndexCount << '\n';
7910         s << "\tpDeviceIndices = " << value.pDeviceIndices << '\n';
7911         s << '}';
7912         return s;
7913 }
7914
7915 std::ostream& operator<< (std::ostream& s, const VkWriteDescriptorSetAccelerationStructureNV& value)
7916 {
7917         s << "VkWriteDescriptorSetAccelerationStructureNV = {\n";
7918         s << "\tsType = " << value.sType << '\n';
7919         s << "\tpNext = " << value.pNext << '\n';
7920         s << "\taccelerationStructureCount = " << value.accelerationStructureCount << '\n';
7921         s << "\tpAccelerationStructures = " << value.pAccelerationStructures << '\n';
7922         s << '}';
7923         return s;
7924 }
7925
7926 std::ostream& operator<< (std::ostream& s, const VkAccelerationStructureMemoryRequirementsInfoNV& value)
7927 {
7928         s << "VkAccelerationStructureMemoryRequirementsInfoNV = {\n";
7929         s << "\tsType = " << value.sType << '\n';
7930         s << "\tpNext = " << value.pNext << '\n';
7931         s << "\ttype = " << value.type << '\n';
7932         s << "\taccelerationStructure = " << value.accelerationStructure << '\n';
7933         s << '}';
7934         return s;
7935 }
7936
7937 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceRayTracingPropertiesNV& value)
7938 {
7939         s << "VkPhysicalDeviceRayTracingPropertiesNV = {\n";
7940         s << "\tsType = " << value.sType << '\n';
7941         s << "\tpNext = " << value.pNext << '\n';
7942         s << "\tshaderGroupHandleSize = " << value.shaderGroupHandleSize << '\n';
7943         s << "\tmaxRecursionDepth = " << value.maxRecursionDepth << '\n';
7944         s << "\tmaxShaderGroupStride = " << value.maxShaderGroupStride << '\n';
7945         s << "\tshaderGroupBaseAlignment = " << value.shaderGroupBaseAlignment << '\n';
7946         s << "\tmaxGeometryCount = " << value.maxGeometryCount << '\n';
7947         s << "\tmaxInstanceCount = " << value.maxInstanceCount << '\n';
7948         s << "\tmaxTriangleCount = " << value.maxTriangleCount << '\n';
7949         s << "\tmaxDescriptorSetAccelerationStructures = " << value.maxDescriptorSetAccelerationStructures << '\n';
7950         s << '}';
7951         return s;
7952 }
7953
7954 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV& value)
7955 {
7956         s << "VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV = {\n";
7957         s << "\tsType = " << value.sType << '\n';
7958         s << "\tpNext = " << value.pNext << '\n';
7959         s << "\trepresentativeFragmentTest = " << value.representativeFragmentTest << '\n';
7960         s << '}';
7961         return s;
7962 }
7963
7964 std::ostream& operator<< (std::ostream& s, const VkPipelineRepresentativeFragmentTestStateCreateInfoNV& value)
7965 {
7966         s << "VkPipelineRepresentativeFragmentTestStateCreateInfoNV = {\n";
7967         s << "\tsType = " << value.sType << '\n';
7968         s << "\tpNext = " << value.pNext << '\n';
7969         s << "\trepresentativeFragmentTestEnable = " << value.representativeFragmentTestEnable << '\n';
7970         s << '}';
7971         return s;
7972 }
7973
7974 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceImageViewImageFormatInfoEXT& value)
7975 {
7976         s << "VkPhysicalDeviceImageViewImageFormatInfoEXT = {\n";
7977         s << "\tsType = " << value.sType << '\n';
7978         s << "\tpNext = " << value.pNext << '\n';
7979         s << "\timageViewType = " << value.imageViewType << '\n';
7980         s << '}';
7981         return s;
7982 }
7983
7984 std::ostream& operator<< (std::ostream& s, const VkFilterCubicImageViewImageFormatPropertiesEXT& value)
7985 {
7986         s << "VkFilterCubicImageViewImageFormatPropertiesEXT = {\n";
7987         s << "\tsType = " << value.sType << '\n';
7988         s << "\tpNext = " << value.pNext << '\n';
7989         s << "\tfilterCubic = " << value.filterCubic << '\n';
7990         s << "\tfilterCubicMinmax = " << value.filterCubicMinmax << '\n';
7991         s << '}';
7992         return s;
7993 }
7994
7995 std::ostream& operator<< (std::ostream& s, const VkDeviceQueueGlobalPriorityCreateInfoEXT& value)
7996 {
7997         s << "VkDeviceQueueGlobalPriorityCreateInfoEXT = {\n";
7998         s << "\tsType = " << value.sType << '\n';
7999         s << "\tpNext = " << value.pNext << '\n';
8000         s << "\tglobalPriority = " << value.globalPriority << '\n';
8001         s << '}';
8002         return s;
8003 }
8004
8005 std::ostream& operator<< (std::ostream& s, const VkImportMemoryHostPointerInfoEXT& value)
8006 {
8007         s << "VkImportMemoryHostPointerInfoEXT = {\n";
8008         s << "\tsType = " << value.sType << '\n';
8009         s << "\tpNext = " << value.pNext << '\n';
8010         s << "\thandleType = " << value.handleType << '\n';
8011         s << "\tpHostPointer = " << value.pHostPointer << '\n';
8012         s << '}';
8013         return s;
8014 }
8015
8016 std::ostream& operator<< (std::ostream& s, const VkMemoryHostPointerPropertiesEXT& value)
8017 {
8018         s << "VkMemoryHostPointerPropertiesEXT = {\n";
8019         s << "\tsType = " << value.sType << '\n';
8020         s << "\tpNext = " << value.pNext << '\n';
8021         s << "\tmemoryTypeBits = " << value.memoryTypeBits << '\n';
8022         s << '}';
8023         return s;
8024 }
8025
8026 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceExternalMemoryHostPropertiesEXT& value)
8027 {
8028         s << "VkPhysicalDeviceExternalMemoryHostPropertiesEXT = {\n";
8029         s << "\tsType = " << value.sType << '\n';
8030         s << "\tpNext = " << value.pNext << '\n';
8031         s << "\tminImportedHostPointerAlignment = " << value.minImportedHostPointerAlignment << '\n';
8032         s << '}';
8033         return s;
8034 }
8035
8036 std::ostream& operator<< (std::ostream& s, const VkPipelineCompilerControlCreateInfoAMD& value)
8037 {
8038         s << "VkPipelineCompilerControlCreateInfoAMD = {\n";
8039         s << "\tsType = " << value.sType << '\n';
8040         s << "\tpNext = " << value.pNext << '\n';
8041         s << "\tcompilerControlFlags = " << getPipelineCompilerControlFlagsAMDStr(value.compilerControlFlags) << '\n';
8042         s << '}';
8043         return s;
8044 }
8045
8046 std::ostream& operator<< (std::ostream& s, const VkCalibratedTimestampInfoEXT& value)
8047 {
8048         s << "VkCalibratedTimestampInfoEXT = {\n";
8049         s << "\tsType = " << value.sType << '\n';
8050         s << "\tpNext = " << value.pNext << '\n';
8051         s << "\ttimeDomain = " << value.timeDomain << '\n';
8052         s << '}';
8053         return s;
8054 }
8055
8056 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceShaderCorePropertiesAMD& value)
8057 {
8058         s << "VkPhysicalDeviceShaderCorePropertiesAMD = {\n";
8059         s << "\tsType = " << value.sType << '\n';
8060         s << "\tpNext = " << value.pNext << '\n';
8061         s << "\tshaderEngineCount = " << value.shaderEngineCount << '\n';
8062         s << "\tshaderArraysPerEngineCount = " << value.shaderArraysPerEngineCount << '\n';
8063         s << "\tcomputeUnitsPerShaderArray = " << value.computeUnitsPerShaderArray << '\n';
8064         s << "\tsimdPerComputeUnit = " << value.simdPerComputeUnit << '\n';
8065         s << "\twavefrontsPerSimd = " << value.wavefrontsPerSimd << '\n';
8066         s << "\twavefrontSize = " << value.wavefrontSize << '\n';
8067         s << "\tsgprsPerSimd = " << value.sgprsPerSimd << '\n';
8068         s << "\tminSgprAllocation = " << value.minSgprAllocation << '\n';
8069         s << "\tmaxSgprAllocation = " << value.maxSgprAllocation << '\n';
8070         s << "\tsgprAllocationGranularity = " << value.sgprAllocationGranularity << '\n';
8071         s << "\tvgprsPerSimd = " << value.vgprsPerSimd << '\n';
8072         s << "\tminVgprAllocation = " << value.minVgprAllocation << '\n';
8073         s << "\tmaxVgprAllocation = " << value.maxVgprAllocation << '\n';
8074         s << "\tvgprAllocationGranularity = " << value.vgprAllocationGranularity << '\n';
8075         s << '}';
8076         return s;
8077 }
8078
8079 std::ostream& operator<< (std::ostream& s, const VkDeviceMemoryOverallocationCreateInfoAMD& value)
8080 {
8081         s << "VkDeviceMemoryOverallocationCreateInfoAMD = {\n";
8082         s << "\tsType = " << value.sType << '\n';
8083         s << "\tpNext = " << value.pNext << '\n';
8084         s << "\toverallocationBehavior = " << value.overallocationBehavior << '\n';
8085         s << '}';
8086         return s;
8087 }
8088
8089 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT& value)
8090 {
8091         s << "VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT = {\n";
8092         s << "\tsType = " << value.sType << '\n';
8093         s << "\tpNext = " << value.pNext << '\n';
8094         s << "\tmaxVertexAttribDivisor = " << value.maxVertexAttribDivisor << '\n';
8095         s << '}';
8096         return s;
8097 }
8098
8099 std::ostream& operator<< (std::ostream& s, const VkVertexInputBindingDivisorDescriptionEXT& value)
8100 {
8101         s << "VkVertexInputBindingDivisorDescriptionEXT = {\n";
8102         s << "\tbinding = " << value.binding << '\n';
8103         s << "\tdivisor = " << value.divisor << '\n';
8104         s << '}';
8105         return s;
8106 }
8107
8108 std::ostream& operator<< (std::ostream& s, const VkPipelineVertexInputDivisorStateCreateInfoEXT& value)
8109 {
8110         s << "VkPipelineVertexInputDivisorStateCreateInfoEXT = {\n";
8111         s << "\tsType = " << value.sType << '\n';
8112         s << "\tpNext = " << value.pNext << '\n';
8113         s << "\tvertexBindingDivisorCount = " << value.vertexBindingDivisorCount << '\n';
8114         s << "\tpVertexBindingDivisors = " << value.pVertexBindingDivisors << '\n';
8115         s << '}';
8116         return s;
8117 }
8118
8119 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT& value)
8120 {
8121         s << "VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT = {\n";
8122         s << "\tsType = " << value.sType << '\n';
8123         s << "\tpNext = " << value.pNext << '\n';
8124         s << "\tvertexAttributeInstanceRateDivisor = " << value.vertexAttributeInstanceRateDivisor << '\n';
8125         s << "\tvertexAttributeInstanceRateZeroDivisor = " << value.vertexAttributeInstanceRateZeroDivisor << '\n';
8126         s << '}';
8127         return s;
8128 }
8129
8130 std::ostream& operator<< (std::ostream& s, const VkPipelineCreationFeedbackEXT& value)
8131 {
8132         s << "VkPipelineCreationFeedbackEXT = {\n";
8133         s << "\tflags = " << getPipelineCreationFeedbackFlagsEXTStr(value.flags) << '\n';
8134         s << "\tduration = " << value.duration << '\n';
8135         s << '}';
8136         return s;
8137 }
8138
8139 std::ostream& operator<< (std::ostream& s, const VkPipelineCreationFeedbackCreateInfoEXT& value)
8140 {
8141         s << "VkPipelineCreationFeedbackCreateInfoEXT = {\n";
8142         s << "\tsType = " << value.sType << '\n';
8143         s << "\tpNext = " << value.pNext << '\n';
8144         s << "\tpPipelineCreationFeedback = " << value.pPipelineCreationFeedback << '\n';
8145         s << "\tpipelineStageCreationFeedbackCount = " << value.pipelineStageCreationFeedbackCount << '\n';
8146         s << "\tpPipelineStageCreationFeedbacks = " << value.pPipelineStageCreationFeedbacks << '\n';
8147         s << '}';
8148         return s;
8149 }
8150
8151 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceComputeShaderDerivativesFeaturesNV& value)
8152 {
8153         s << "VkPhysicalDeviceComputeShaderDerivativesFeaturesNV = {\n";
8154         s << "\tsType = " << value.sType << '\n';
8155         s << "\tpNext = " << value.pNext << '\n';
8156         s << "\tcomputeDerivativeGroupQuads = " << value.computeDerivativeGroupQuads << '\n';
8157         s << "\tcomputeDerivativeGroupLinear = " << value.computeDerivativeGroupLinear << '\n';
8158         s << '}';
8159         return s;
8160 }
8161
8162 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceMeshShaderFeaturesNV& value)
8163 {
8164         s << "VkPhysicalDeviceMeshShaderFeaturesNV = {\n";
8165         s << "\tsType = " << value.sType << '\n';
8166         s << "\tpNext = " << value.pNext << '\n';
8167         s << "\ttaskShader = " << value.taskShader << '\n';
8168         s << "\tmeshShader = " << value.meshShader << '\n';
8169         s << '}';
8170         return s;
8171 }
8172
8173 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceMeshShaderPropertiesNV& value)
8174 {
8175         s << "VkPhysicalDeviceMeshShaderPropertiesNV = {\n";
8176         s << "\tsType = " << value.sType << '\n';
8177         s << "\tpNext = " << value.pNext << '\n';
8178         s << "\tmaxDrawMeshTasksCount = " << value.maxDrawMeshTasksCount << '\n';
8179         s << "\tmaxTaskWorkGroupInvocations = " << value.maxTaskWorkGroupInvocations << '\n';
8180         s << "\tmaxTaskWorkGroupSize = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.maxTaskWorkGroupSize), DE_ARRAY_END(value.maxTaskWorkGroupSize)) << '\n';
8181         s << "\tmaxTaskTotalMemorySize = " << value.maxTaskTotalMemorySize << '\n';
8182         s << "\tmaxTaskOutputCount = " << value.maxTaskOutputCount << '\n';
8183         s << "\tmaxMeshWorkGroupInvocations = " << value.maxMeshWorkGroupInvocations << '\n';
8184         s << "\tmaxMeshWorkGroupSize = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.maxMeshWorkGroupSize), DE_ARRAY_END(value.maxMeshWorkGroupSize)) << '\n';
8185         s << "\tmaxMeshTotalMemorySize = " << value.maxMeshTotalMemorySize << '\n';
8186         s << "\tmaxMeshOutputVertices = " << value.maxMeshOutputVertices << '\n';
8187         s << "\tmaxMeshOutputPrimitives = " << value.maxMeshOutputPrimitives << '\n';
8188         s << "\tmaxMeshMultiviewViewCount = " << value.maxMeshMultiviewViewCount << '\n';
8189         s << "\tmeshOutputPerVertexGranularity = " << value.meshOutputPerVertexGranularity << '\n';
8190         s << "\tmeshOutputPerPrimitiveGranularity = " << value.meshOutputPerPrimitiveGranularity << '\n';
8191         s << '}';
8192         return s;
8193 }
8194
8195 std::ostream& operator<< (std::ostream& s, const VkDrawMeshTasksIndirectCommandNV& value)
8196 {
8197         s << "VkDrawMeshTasksIndirectCommandNV = {\n";
8198         s << "\ttaskCount = " << value.taskCount << '\n';
8199         s << "\tfirstTask = " << value.firstTask << '\n';
8200         s << '}';
8201         return s;
8202 }
8203
8204 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV& value)
8205 {
8206         s << "VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV = {\n";
8207         s << "\tsType = " << value.sType << '\n';
8208         s << "\tpNext = " << value.pNext << '\n';
8209         s << "\tfragmentShaderBarycentric = " << value.fragmentShaderBarycentric << '\n';
8210         s << '}';
8211         return s;
8212 }
8213
8214 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceShaderImageFootprintFeaturesNV& value)
8215 {
8216         s << "VkPhysicalDeviceShaderImageFootprintFeaturesNV = {\n";
8217         s << "\tsType = " << value.sType << '\n';
8218         s << "\tpNext = " << value.pNext << '\n';
8219         s << "\timageFootprint = " << value.imageFootprint << '\n';
8220         s << '}';
8221         return s;
8222 }
8223
8224 std::ostream& operator<< (std::ostream& s, const VkPipelineViewportExclusiveScissorStateCreateInfoNV& value)
8225 {
8226         s << "VkPipelineViewportExclusiveScissorStateCreateInfoNV = {\n";
8227         s << "\tsType = " << value.sType << '\n';
8228         s << "\tpNext = " << value.pNext << '\n';
8229         s << "\texclusiveScissorCount = " << value.exclusiveScissorCount << '\n';
8230         s << "\tpExclusiveScissors = " << value.pExclusiveScissors << '\n';
8231         s << '}';
8232         return s;
8233 }
8234
8235 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceExclusiveScissorFeaturesNV& value)
8236 {
8237         s << "VkPhysicalDeviceExclusiveScissorFeaturesNV = {\n";
8238         s << "\tsType = " << value.sType << '\n';
8239         s << "\tpNext = " << value.pNext << '\n';
8240         s << "\texclusiveScissor = " << value.exclusiveScissor << '\n';
8241         s << '}';
8242         return s;
8243 }
8244
8245 std::ostream& operator<< (std::ostream& s, const VkQueueFamilyCheckpointPropertiesNV& value)
8246 {
8247         s << "VkQueueFamilyCheckpointPropertiesNV = {\n";
8248         s << "\tsType = " << value.sType << '\n';
8249         s << "\tpNext = " << value.pNext << '\n';
8250         s << "\tcheckpointExecutionStageMask = " << getPipelineStageFlagsStr(value.checkpointExecutionStageMask) << '\n';
8251         s << '}';
8252         return s;
8253 }
8254
8255 std::ostream& operator<< (std::ostream& s, const VkCheckpointDataNV& value)
8256 {
8257         s << "VkCheckpointDataNV = {\n";
8258         s << "\tsType = " << value.sType << '\n';
8259         s << "\tpNext = " << value.pNext << '\n';
8260         s << "\tstage = " << value.stage << '\n';
8261         s << "\tpCheckpointMarker = " << value.pCheckpointMarker << '\n';
8262         s << '}';
8263         return s;
8264 }
8265
8266 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL& value)
8267 {
8268         s << "VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL = {\n";
8269         s << "\tsType = " << value.sType << '\n';
8270         s << "\tpNext = " << value.pNext << '\n';
8271         s << "\tshaderIntegerFunctions2 = " << value.shaderIntegerFunctions2 << '\n';
8272         s << '}';
8273         return s;
8274 }
8275
8276 std::ostream& operator<< (std::ostream& s, const VkPerformanceValueDataINTEL& value)
8277 {
8278         s << "VkPerformanceValueDataINTEL = {\n";
8279         s << "\tvalue32 = " << value.value32 << '\n';
8280         s << "\tvalue64 = " << value.value64 << '\n';
8281         s << "\tvalueFloat = " << value.valueFloat << '\n';
8282         s << "\tvalueBool = " << value.valueBool << '\n';
8283         s << "\tvalueString = " << getCharPtrStr(value.valueString) << '\n';
8284         s << '}';
8285         return s;
8286 }
8287
8288 std::ostream& operator<< (std::ostream& s, const VkPerformanceValueINTEL& value)
8289 {
8290         s << "VkPerformanceValueINTEL = {\n";
8291         s << "\ttype = " << value.type << '\n';
8292         s << "\tdata = " << value.data << '\n';
8293         s << '}';
8294         return s;
8295 }
8296
8297 std::ostream& operator<< (std::ostream& s, const VkInitializePerformanceApiInfoINTEL& value)
8298 {
8299         s << "VkInitializePerformanceApiInfoINTEL = {\n";
8300         s << "\tsType = " << value.sType << '\n';
8301         s << "\tpNext = " << value.pNext << '\n';
8302         s << "\tpUserData = " << value.pUserData << '\n';
8303         s << '}';
8304         return s;
8305 }
8306
8307 std::ostream& operator<< (std::ostream& s, const VkQueryPoolCreateInfoINTEL& value)
8308 {
8309         s << "VkQueryPoolCreateInfoINTEL = {\n";
8310         s << "\tsType = " << value.sType << '\n';
8311         s << "\tpNext = " << value.pNext << '\n';
8312         s << "\tperformanceCountersSampling = " << value.performanceCountersSampling << '\n';
8313         s << '}';
8314         return s;
8315 }
8316
8317 std::ostream& operator<< (std::ostream& s, const VkPerformanceMarkerInfoINTEL& value)
8318 {
8319         s << "VkPerformanceMarkerInfoINTEL = {\n";
8320         s << "\tsType = " << value.sType << '\n';
8321         s << "\tpNext = " << value.pNext << '\n';
8322         s << "\tmarker = " << value.marker << '\n';
8323         s << '}';
8324         return s;
8325 }
8326
8327 std::ostream& operator<< (std::ostream& s, const VkPerformanceStreamMarkerInfoINTEL& value)
8328 {
8329         s << "VkPerformanceStreamMarkerInfoINTEL = {\n";
8330         s << "\tsType = " << value.sType << '\n';
8331         s << "\tpNext = " << value.pNext << '\n';
8332         s << "\tmarker = " << value.marker << '\n';
8333         s << '}';
8334         return s;
8335 }
8336
8337 std::ostream& operator<< (std::ostream& s, const VkPerformanceOverrideInfoINTEL& value)
8338 {
8339         s << "VkPerformanceOverrideInfoINTEL = {\n";
8340         s << "\tsType = " << value.sType << '\n';
8341         s << "\tpNext = " << value.pNext << '\n';
8342         s << "\ttype = " << value.type << '\n';
8343         s << "\tenable = " << value.enable << '\n';
8344         s << "\tparameter = " << value.parameter << '\n';
8345         s << '}';
8346         return s;
8347 }
8348
8349 std::ostream& operator<< (std::ostream& s, const VkPerformanceConfigurationAcquireInfoINTEL& value)
8350 {
8351         s << "VkPerformanceConfigurationAcquireInfoINTEL = {\n";
8352         s << "\tsType = " << value.sType << '\n';
8353         s << "\tpNext = " << value.pNext << '\n';
8354         s << "\ttype = " << value.type << '\n';
8355         s << '}';
8356         return s;
8357 }
8358
8359 std::ostream& operator<< (std::ostream& s, const VkPhysicalDevicePCIBusInfoPropertiesEXT& value)
8360 {
8361         s << "VkPhysicalDevicePCIBusInfoPropertiesEXT = {\n";
8362         s << "\tsType = " << value.sType << '\n';
8363         s << "\tpNext = " << value.pNext << '\n';
8364         s << "\tpciDomain = " << value.pciDomain << '\n';
8365         s << "\tpciBus = " << value.pciBus << '\n';
8366         s << "\tpciDevice = " << value.pciDevice << '\n';
8367         s << "\tpciFunction = " << value.pciFunction << '\n';
8368         s << '}';
8369         return s;
8370 }
8371
8372 std::ostream& operator<< (std::ostream& s, const VkDisplayNativeHdrSurfaceCapabilitiesAMD& value)
8373 {
8374         s << "VkDisplayNativeHdrSurfaceCapabilitiesAMD = {\n";
8375         s << "\tsType = " << value.sType << '\n';
8376         s << "\tpNext = " << value.pNext << '\n';
8377         s << "\tlocalDimmingSupport = " << value.localDimmingSupport << '\n';
8378         s << '}';
8379         return s;
8380 }
8381
8382 std::ostream& operator<< (std::ostream& s, const VkSwapchainDisplayNativeHdrCreateInfoAMD& value)
8383 {
8384         s << "VkSwapchainDisplayNativeHdrCreateInfoAMD = {\n";
8385         s << "\tsType = " << value.sType << '\n';
8386         s << "\tpNext = " << value.pNext << '\n';
8387         s << "\tlocalDimmingEnable = " << value.localDimmingEnable << '\n';
8388         s << '}';
8389         return s;
8390 }
8391
8392 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceFragmentDensityMapFeaturesEXT& value)
8393 {
8394         s << "VkPhysicalDeviceFragmentDensityMapFeaturesEXT = {\n";
8395         s << "\tsType = " << value.sType << '\n';
8396         s << "\tpNext = " << value.pNext << '\n';
8397         s << "\tfragmentDensityMap = " << value.fragmentDensityMap << '\n';
8398         s << "\tfragmentDensityMapDynamic = " << value.fragmentDensityMapDynamic << '\n';
8399         s << "\tfragmentDensityMapNonSubsampledImages = " << value.fragmentDensityMapNonSubsampledImages << '\n';
8400         s << '}';
8401         return s;
8402 }
8403
8404 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceFragmentDensityMapPropertiesEXT& value)
8405 {
8406         s << "VkPhysicalDeviceFragmentDensityMapPropertiesEXT = {\n";
8407         s << "\tsType = " << value.sType << '\n';
8408         s << "\tpNext = " << value.pNext << '\n';
8409         s << "\tminFragmentDensityTexelSize = " << value.minFragmentDensityTexelSize << '\n';
8410         s << "\tmaxFragmentDensityTexelSize = " << value.maxFragmentDensityTexelSize << '\n';
8411         s << "\tfragmentDensityInvocations = " << value.fragmentDensityInvocations << '\n';
8412         s << '}';
8413         return s;
8414 }
8415
8416 std::ostream& operator<< (std::ostream& s, const VkRenderPassFragmentDensityMapCreateInfoEXT& value)
8417 {
8418         s << "VkRenderPassFragmentDensityMapCreateInfoEXT = {\n";
8419         s << "\tsType = " << value.sType << '\n';
8420         s << "\tpNext = " << value.pNext << '\n';
8421         s << "\tfragmentDensityMapAttachment = " << value.fragmentDensityMapAttachment << '\n';
8422         s << '}';
8423         return s;
8424 }
8425
8426 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceScalarBlockLayoutFeaturesEXT& value)
8427 {
8428         s << "VkPhysicalDeviceScalarBlockLayoutFeaturesEXT = {\n";
8429         s << "\tsType = " << value.sType << '\n';
8430         s << "\tpNext = " << value.pNext << '\n';
8431         s << "\tscalarBlockLayout = " << value.scalarBlockLayout << '\n';
8432         s << '}';
8433         return s;
8434 }
8435
8436 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceSubgroupSizeControlFeaturesEXT& value)
8437 {
8438         s << "VkPhysicalDeviceSubgroupSizeControlFeaturesEXT = {\n";
8439         s << "\tsType = " << value.sType << '\n';
8440         s << "\tpNext = " << value.pNext << '\n';
8441         s << "\tsubgroupSizeControl = " << value.subgroupSizeControl << '\n';
8442         s << "\tcomputeFullSubgroups = " << value.computeFullSubgroups << '\n';
8443         s << '}';
8444         return s;
8445 }
8446
8447 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceSubgroupSizeControlPropertiesEXT& value)
8448 {
8449         s << "VkPhysicalDeviceSubgroupSizeControlPropertiesEXT = {\n";
8450         s << "\tsType = " << value.sType << '\n';
8451         s << "\tpNext = " << value.pNext << '\n';
8452         s << "\tminSubgroupSize = " << value.minSubgroupSize << '\n';
8453         s << "\tmaxSubgroupSize = " << value.maxSubgroupSize << '\n';
8454         s << "\tmaxComputeWorkgroupSubgroups = " << value.maxComputeWorkgroupSubgroups << '\n';
8455         s << "\trequiredSubgroupSizeStages = " << getShaderStageFlagsStr(value.requiredSubgroupSizeStages) << '\n';
8456         s << '}';
8457         return s;
8458 }
8459
8460 std::ostream& operator<< (std::ostream& s, const VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT& value)
8461 {
8462         s << "VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT = {\n";
8463         s << "\tsType = " << value.sType << '\n';
8464         s << "\tpNext = " << value.pNext << '\n';
8465         s << "\trequiredSubgroupSize = " << value.requiredSubgroupSize << '\n';
8466         s << '}';
8467         return s;
8468 }
8469
8470 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceShaderCoreProperties2AMD& value)
8471 {
8472         s << "VkPhysicalDeviceShaderCoreProperties2AMD = {\n";
8473         s << "\tsType = " << value.sType << '\n';
8474         s << "\tpNext = " << value.pNext << '\n';
8475         s << "\tshaderCoreFeatures = " << getShaderCorePropertiesFlagsAMDStr(value.shaderCoreFeatures) << '\n';
8476         s << "\tactiveComputeUnitCount = " << value.activeComputeUnitCount << '\n';
8477         s << '}';
8478         return s;
8479 }
8480
8481 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceCoherentMemoryFeaturesAMD& value)
8482 {
8483         s << "VkPhysicalDeviceCoherentMemoryFeaturesAMD = {\n";
8484         s << "\tsType = " << value.sType << '\n';
8485         s << "\tpNext = " << value.pNext << '\n';
8486         s << "\tdeviceCoherentMemory = " << value.deviceCoherentMemory << '\n';
8487         s << '}';
8488         return s;
8489 }
8490
8491 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceMemoryBudgetPropertiesEXT& value)
8492 {
8493         s << "VkPhysicalDeviceMemoryBudgetPropertiesEXT = {\n";
8494         s << "\tsType = " << value.sType << '\n';
8495         s << "\tpNext = " << value.pNext << '\n';
8496         s << "\theapBudget = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.heapBudget), DE_ARRAY_END(value.heapBudget)) << '\n';
8497         s << "\theapUsage = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.heapUsage), DE_ARRAY_END(value.heapUsage)) << '\n';
8498         s << '}';
8499         return s;
8500 }
8501
8502 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceMemoryPriorityFeaturesEXT& value)
8503 {
8504         s << "VkPhysicalDeviceMemoryPriorityFeaturesEXT = {\n";
8505         s << "\tsType = " << value.sType << '\n';
8506         s << "\tpNext = " << value.pNext << '\n';
8507         s << "\tmemoryPriority = " << value.memoryPriority << '\n';
8508         s << '}';
8509         return s;
8510 }
8511
8512 std::ostream& operator<< (std::ostream& s, const VkMemoryPriorityAllocateInfoEXT& value)
8513 {
8514         s << "VkMemoryPriorityAllocateInfoEXT = {\n";
8515         s << "\tsType = " << value.sType << '\n';
8516         s << "\tpNext = " << value.pNext << '\n';
8517         s << "\tpriority = " << value.priority << '\n';
8518         s << '}';
8519         return s;
8520 }
8521
8522 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV& value)
8523 {
8524         s << "VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV = {\n";
8525         s << "\tsType = " << value.sType << '\n';
8526         s << "\tpNext = " << value.pNext << '\n';
8527         s << "\tdedicatedAllocationImageAliasing = " << value.dedicatedAllocationImageAliasing << '\n';
8528         s << '}';
8529         return s;
8530 }
8531
8532 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceBufferDeviceAddressFeaturesEXT& value)
8533 {
8534         s << "VkPhysicalDeviceBufferDeviceAddressFeaturesEXT = {\n";
8535         s << "\tsType = " << value.sType << '\n';
8536         s << "\tpNext = " << value.pNext << '\n';
8537         s << "\tbufferDeviceAddress = " << value.bufferDeviceAddress << '\n';
8538         s << "\tbufferDeviceAddressCaptureReplay = " << value.bufferDeviceAddressCaptureReplay << '\n';
8539         s << "\tbufferDeviceAddressMultiDevice = " << value.bufferDeviceAddressMultiDevice << '\n';
8540         s << '}';
8541         return s;
8542 }
8543
8544 std::ostream& operator<< (std::ostream& s, const VkBufferDeviceAddressInfoEXT& value)
8545 {
8546         s << "VkBufferDeviceAddressInfoEXT = {\n";
8547         s << "\tsType = " << value.sType << '\n';
8548         s << "\tpNext = " << value.pNext << '\n';
8549         s << "\tbuffer = " << value.buffer << '\n';
8550         s << '}';
8551         return s;
8552 }
8553
8554 std::ostream& operator<< (std::ostream& s, const VkBufferDeviceAddressCreateInfoEXT& value)
8555 {
8556         s << "VkBufferDeviceAddressCreateInfoEXT = {\n";
8557         s << "\tsType = " << value.sType << '\n';
8558         s << "\tpNext = " << value.pNext << '\n';
8559         s << "\tdeviceAddress = " << value.deviceAddress << '\n';
8560         s << '}';
8561         return s;
8562 }
8563
8564 std::ostream& operator<< (std::ostream& s, const VkImageStencilUsageCreateInfoEXT& value)
8565 {
8566         s << "VkImageStencilUsageCreateInfoEXT = {\n";
8567         s << "\tsType = " << value.sType << '\n';
8568         s << "\tpNext = " << value.pNext << '\n';
8569         s << "\tstencilUsage = " << getImageUsageFlagsStr(value.stencilUsage) << '\n';
8570         s << '}';
8571         return s;
8572 }
8573
8574 std::ostream& operator<< (std::ostream& s, const VkValidationFeaturesEXT& value)
8575 {
8576         s << "VkValidationFeaturesEXT = {\n";
8577         s << "\tsType = " << value.sType << '\n';
8578         s << "\tpNext = " << value.pNext << '\n';
8579         s << "\tenabledValidationFeatureCount = " << value.enabledValidationFeatureCount << '\n';
8580         s << "\tpEnabledValidationFeatures = " << value.pEnabledValidationFeatures << '\n';
8581         s << "\tdisabledValidationFeatureCount = " << value.disabledValidationFeatureCount << '\n';
8582         s << "\tpDisabledValidationFeatures = " << value.pDisabledValidationFeatures << '\n';
8583         s << '}';
8584         return s;
8585 }
8586
8587 std::ostream& operator<< (std::ostream& s, const VkCooperativeMatrixPropertiesNV& value)
8588 {
8589         s << "VkCooperativeMatrixPropertiesNV = {\n";
8590         s << "\tsType = " << value.sType << '\n';
8591         s << "\tpNext = " << value.pNext << '\n';
8592         s << "\tMSize = " << value.MSize << '\n';
8593         s << "\tNSize = " << value.NSize << '\n';
8594         s << "\tKSize = " << value.KSize << '\n';
8595         s << "\tAType = " << value.AType << '\n';
8596         s << "\tBType = " << value.BType << '\n';
8597         s << "\tCType = " << value.CType << '\n';
8598         s << "\tDType = " << value.DType << '\n';
8599         s << "\tscope = " << value.scope << '\n';
8600         s << '}';
8601         return s;
8602 }
8603
8604 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceCooperativeMatrixFeaturesNV& value)
8605 {
8606         s << "VkPhysicalDeviceCooperativeMatrixFeaturesNV = {\n";
8607         s << "\tsType = " << value.sType << '\n';
8608         s << "\tpNext = " << value.pNext << '\n';
8609         s << "\tcooperativeMatrix = " << value.cooperativeMatrix << '\n';
8610         s << "\tcooperativeMatrixRobustBufferAccess = " << value.cooperativeMatrixRobustBufferAccess << '\n';
8611         s << '}';
8612         return s;
8613 }
8614
8615 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceCooperativeMatrixPropertiesNV& value)
8616 {
8617         s << "VkPhysicalDeviceCooperativeMatrixPropertiesNV = {\n";
8618         s << "\tsType = " << value.sType << '\n';
8619         s << "\tpNext = " << value.pNext << '\n';
8620         s << "\tcooperativeMatrixSupportedStages = " << getShaderStageFlagsStr(value.cooperativeMatrixSupportedStages) << '\n';
8621         s << '}';
8622         return s;
8623 }
8624
8625 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceCoverageReductionModeFeaturesNV& value)
8626 {
8627         s << "VkPhysicalDeviceCoverageReductionModeFeaturesNV = {\n";
8628         s << "\tsType = " << value.sType << '\n';
8629         s << "\tpNext = " << value.pNext << '\n';
8630         s << "\tcoverageReductionMode = " << value.coverageReductionMode << '\n';
8631         s << '}';
8632         return s;
8633 }
8634
8635 std::ostream& operator<< (std::ostream& s, const VkPipelineCoverageReductionStateCreateInfoNV& value)
8636 {
8637         s << "VkPipelineCoverageReductionStateCreateInfoNV = {\n";
8638         s << "\tsType = " << value.sType << '\n';
8639         s << "\tpNext = " << value.pNext << '\n';
8640         s << "\tflags = " << getPipelineCoverageReductionStateCreateFlagsNVStr(value.flags) << '\n';
8641         s << "\tcoverageReductionMode = " << value.coverageReductionMode << '\n';
8642         s << '}';
8643         return s;
8644 }
8645
8646 std::ostream& operator<< (std::ostream& s, const VkFramebufferMixedSamplesCombinationNV& value)
8647 {
8648         s << "VkFramebufferMixedSamplesCombinationNV = {\n";
8649         s << "\tsType = " << value.sType << '\n';
8650         s << "\tpNext = " << value.pNext << '\n';
8651         s << "\tcoverageReductionMode = " << value.coverageReductionMode << '\n';
8652         s << "\trasterizationSamples = " << value.rasterizationSamples << '\n';
8653         s << "\tdepthStencilSamples = " << getSampleCountFlagsStr(value.depthStencilSamples) << '\n';
8654         s << "\tcolorSamples = " << getSampleCountFlagsStr(value.colorSamples) << '\n';
8655         s << '}';
8656         return s;
8657 }
8658
8659 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT& value)
8660 {
8661         s << "VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT = {\n";
8662         s << "\tsType = " << value.sType << '\n';
8663         s << "\tpNext = " << value.pNext << '\n';
8664         s << "\tfragmentShaderSampleInterlock = " << value.fragmentShaderSampleInterlock << '\n';
8665         s << "\tfragmentShaderPixelInterlock = " << value.fragmentShaderPixelInterlock << '\n';
8666         s << "\tfragmentShaderShadingRateInterlock = " << value.fragmentShaderShadingRateInterlock << '\n';
8667         s << '}';
8668         return s;
8669 }
8670
8671 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceYcbcrImageArraysFeaturesEXT& value)
8672 {
8673         s << "VkPhysicalDeviceYcbcrImageArraysFeaturesEXT = {\n";
8674         s << "\tsType = " << value.sType << '\n';
8675         s << "\tpNext = " << value.pNext << '\n';
8676         s << "\tycbcrImageArrays = " << value.ycbcrImageArrays << '\n';
8677         s << '}';
8678         return s;
8679 }
8680
8681 std::ostream& operator<< (std::ostream& s, const VkHeadlessSurfaceCreateInfoEXT& value)
8682 {
8683         s << "VkHeadlessSurfaceCreateInfoEXT = {\n";
8684         s << "\tsType = " << value.sType << '\n';
8685         s << "\tpNext = " << value.pNext << '\n';
8686         s << "\tflags = " << getHeadlessSurfaceCreateFlagsEXTStr(value.flags) << '\n';
8687         s << '}';
8688         return s;
8689 }
8690
8691 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceLineRasterizationFeaturesEXT& value)
8692 {
8693         s << "VkPhysicalDeviceLineRasterizationFeaturesEXT = {\n";
8694         s << "\tsType = " << value.sType << '\n';
8695         s << "\tpNext = " << value.pNext << '\n';
8696         s << "\trectangularLines = " << value.rectangularLines << '\n';
8697         s << "\tbresenhamLines = " << value.bresenhamLines << '\n';
8698         s << "\tsmoothLines = " << value.smoothLines << '\n';
8699         s << "\tstippledRectangularLines = " << value.stippledRectangularLines << '\n';
8700         s << "\tstippledBresenhamLines = " << value.stippledBresenhamLines << '\n';
8701         s << "\tstippledSmoothLines = " << value.stippledSmoothLines << '\n';
8702         s << '}';
8703         return s;
8704 }
8705
8706 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceLineRasterizationPropertiesEXT& value)
8707 {
8708         s << "VkPhysicalDeviceLineRasterizationPropertiesEXT = {\n";
8709         s << "\tsType = " << value.sType << '\n';
8710         s << "\tpNext = " << value.pNext << '\n';
8711         s << "\tlineSubPixelPrecisionBits = " << value.lineSubPixelPrecisionBits << '\n';
8712         s << '}';
8713         return s;
8714 }
8715
8716 std::ostream& operator<< (std::ostream& s, const VkPipelineRasterizationLineStateCreateInfoEXT& value)
8717 {
8718         s << "VkPipelineRasterizationLineStateCreateInfoEXT = {\n";
8719         s << "\tsType = " << value.sType << '\n';
8720         s << "\tpNext = " << value.pNext << '\n';
8721         s << "\tlineRasterizationMode = " << value.lineRasterizationMode << '\n';
8722         s << "\tstippledLineEnable = " << value.stippledLineEnable << '\n';
8723         s << "\tlineStippleFactor = " << value.lineStippleFactor << '\n';
8724         s << "\tlineStipplePattern = " << value.lineStipplePattern << '\n';
8725         s << '}';
8726         return s;
8727 }
8728
8729 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceHostQueryResetFeaturesEXT& value)
8730 {
8731         s << "VkPhysicalDeviceHostQueryResetFeaturesEXT = {\n";
8732         s << "\tsType = " << value.sType << '\n';
8733         s << "\tpNext = " << value.pNext << '\n';
8734         s << "\thostQueryReset = " << value.hostQueryReset << '\n';
8735         s << '}';
8736         return s;
8737 }
8738
8739 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceIndexTypeUint8FeaturesEXT& value)
8740 {
8741         s << "VkPhysicalDeviceIndexTypeUint8FeaturesEXT = {\n";
8742         s << "\tsType = " << value.sType << '\n';
8743         s << "\tpNext = " << value.pNext << '\n';
8744         s << "\tindexTypeUint8 = " << value.indexTypeUint8 << '\n';
8745         s << '}';
8746         return s;
8747 }
8748
8749 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT& value)
8750 {
8751         s << "VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT = {\n";
8752         s << "\tsType = " << value.sType << '\n';
8753         s << "\tpNext = " << value.pNext << '\n';
8754         s << "\tshaderDemoteToHelperInvocation = " << value.shaderDemoteToHelperInvocation << '\n';
8755         s << '}';
8756         return s;
8757 }
8758
8759 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT& value)
8760 {
8761         s << "VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT = {\n";
8762         s << "\tsType = " << value.sType << '\n';
8763         s << "\tpNext = " << value.pNext << '\n';
8764         s << "\ttexelBufferAlignment = " << value.texelBufferAlignment << '\n';
8765         s << '}';
8766         return s;
8767 }
8768
8769 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT& value)
8770 {
8771         s << "VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT = {\n";
8772         s << "\tsType = " << value.sType << '\n';
8773         s << "\tpNext = " << value.pNext << '\n';
8774         s << "\tstorageTexelBufferOffsetAlignmentBytes = " << value.storageTexelBufferOffsetAlignmentBytes << '\n';
8775         s << "\tstorageTexelBufferOffsetSingleTexelAlignment = " << value.storageTexelBufferOffsetSingleTexelAlignment << '\n';
8776         s << "\tuniformTexelBufferOffsetAlignmentBytes = " << value.uniformTexelBufferOffsetAlignmentBytes << '\n';
8777         s << "\tuniformTexelBufferOffsetSingleTexelAlignment = " << value.uniformTexelBufferOffsetSingleTexelAlignment << '\n';
8778         s << '}';
8779         return s;
8780 }
8781
8782 std::ostream& operator<< (std::ostream& s, const VkAndroidSurfaceCreateInfoKHR& value)
8783 {
8784         s << "VkAndroidSurfaceCreateInfoKHR = {\n";
8785         s << "\tsType = " << value.sType << '\n';
8786         s << "\tpNext = " << value.pNext << '\n';
8787         s << "\tflags = " << getAndroidSurfaceCreateFlagsKHRStr(value.flags) << '\n';
8788         s << "\twindow = " << value.window << '\n';
8789         s << '}';
8790         return s;
8791 }
8792
8793 std::ostream& operator<< (std::ostream& s, const VkAndroidHardwareBufferUsageANDROID& value)
8794 {
8795         s << "VkAndroidHardwareBufferUsageANDROID = {\n";
8796         s << "\tsType = " << value.sType << '\n';
8797         s << "\tpNext = " << value.pNext << '\n';
8798         s << "\tandroidHardwareBufferUsage = " << value.androidHardwareBufferUsage << '\n';
8799         s << '}';
8800         return s;
8801 }
8802
8803 std::ostream& operator<< (std::ostream& s, const VkAndroidHardwareBufferPropertiesANDROID& value)
8804 {
8805         s << "VkAndroidHardwareBufferPropertiesANDROID = {\n";
8806         s << "\tsType = " << value.sType << '\n';
8807         s << "\tpNext = " << value.pNext << '\n';
8808         s << "\tallocationSize = " << value.allocationSize << '\n';
8809         s << "\tmemoryTypeBits = " << value.memoryTypeBits << '\n';
8810         s << '}';
8811         return s;
8812 }
8813
8814 std::ostream& operator<< (std::ostream& s, const VkAndroidHardwareBufferFormatPropertiesANDROID& value)
8815 {
8816         s << "VkAndroidHardwareBufferFormatPropertiesANDROID = {\n";
8817         s << "\tsType = " << value.sType << '\n';
8818         s << "\tpNext = " << value.pNext << '\n';
8819         s << "\tformat = " << value.format << '\n';
8820         s << "\texternalFormat = " << value.externalFormat << '\n';
8821         s << "\tformatFeatures = " << getFormatFeatureFlagsStr(value.formatFeatures) << '\n';
8822         s << "\tsamplerYcbcrConversionComponents = " << value.samplerYcbcrConversionComponents << '\n';
8823         s << "\tsuggestedYcbcrModel = " << value.suggestedYcbcrModel << '\n';
8824         s << "\tsuggestedYcbcrRange = " << value.suggestedYcbcrRange << '\n';
8825         s << "\tsuggestedXChromaOffset = " << value.suggestedXChromaOffset << '\n';
8826         s << "\tsuggestedYChromaOffset = " << value.suggestedYChromaOffset << '\n';
8827         s << '}';
8828         return s;
8829 }
8830
8831 std::ostream& operator<< (std::ostream& s, const VkImportAndroidHardwareBufferInfoANDROID& value)
8832 {
8833         s << "VkImportAndroidHardwareBufferInfoANDROID = {\n";
8834         s << "\tsType = " << value.sType << '\n';
8835         s << "\tpNext = " << value.pNext << '\n';
8836         s << "\tbuffer = " << value.buffer << '\n';
8837         s << '}';
8838         return s;
8839 }
8840
8841 std::ostream& operator<< (std::ostream& s, const VkMemoryGetAndroidHardwareBufferInfoANDROID& value)
8842 {
8843         s << "VkMemoryGetAndroidHardwareBufferInfoANDROID = {\n";
8844         s << "\tsType = " << value.sType << '\n';
8845         s << "\tpNext = " << value.pNext << '\n';
8846         s << "\tmemory = " << value.memory << '\n';
8847         s << '}';
8848         return s;
8849 }
8850
8851 std::ostream& operator<< (std::ostream& s, const VkExternalFormatANDROID& value)
8852 {
8853         s << "VkExternalFormatANDROID = {\n";
8854         s << "\tsType = " << value.sType << '\n';
8855         s << "\tpNext = " << value.pNext << '\n';
8856         s << "\texternalFormat = " << value.externalFormat << '\n';
8857         s << '}';
8858         return s;
8859 }
8860
8861 std::ostream& operator<< (std::ostream& s, const VkImagePipeSurfaceCreateInfoFUCHSIA& value)
8862 {
8863         s << "VkImagePipeSurfaceCreateInfoFUCHSIA = {\n";
8864         s << "\tsType = " << value.sType << '\n';
8865         s << "\tpNext = " << value.pNext << '\n';
8866         s << "\tflags = " << getImagePipeSurfaceCreateFlagsFUCHSIAStr(value.flags) << '\n';
8867         s << "\timagePipeHandle = " << value.imagePipeHandle << '\n';
8868         s << '}';
8869         return s;
8870 }
8871
8872 std::ostream& operator<< (std::ostream& s, const VkStreamDescriptorSurfaceCreateInfoGGP& value)
8873 {
8874         s << "VkStreamDescriptorSurfaceCreateInfoGGP = {\n";
8875         s << "\tsType = " << value.sType << '\n';
8876         s << "\tpNext = " << value.pNext << '\n';
8877         s << "\tflags = " << getStreamDescriptorSurfaceCreateFlagsGGPStr(value.flags) << '\n';
8878         s << "\tstreamDescriptor = " << value.streamDescriptor << '\n';
8879         s << '}';
8880         return s;
8881 }
8882
8883 std::ostream& operator<< (std::ostream& s, const VkPresentFrameTokenGGP& value)
8884 {
8885         s << "VkPresentFrameTokenGGP = {\n";
8886         s << "\tsType = " << value.sType << '\n';
8887         s << "\tpNext = " << value.pNext << '\n';
8888         s << "\tframeToken = " << value.frameToken << '\n';
8889         s << '}';
8890         return s;
8891 }
8892
8893 std::ostream& operator<< (std::ostream& s, const VkIOSSurfaceCreateInfoMVK& value)
8894 {
8895         s << "VkIOSSurfaceCreateInfoMVK = {\n";
8896         s << "\tsType = " << value.sType << '\n';
8897         s << "\tpNext = " << value.pNext << '\n';
8898         s << "\tflags = " << getIOSSurfaceCreateFlagsMVKStr(value.flags) << '\n';
8899         s << "\tpView = " << value.pView << '\n';
8900         s << '}';
8901         return s;
8902 }
8903
8904 std::ostream& operator<< (std::ostream& s, const VkMacOSSurfaceCreateInfoMVK& value)
8905 {
8906         s << "VkMacOSSurfaceCreateInfoMVK = {\n";
8907         s << "\tsType = " << value.sType << '\n';
8908         s << "\tpNext = " << value.pNext << '\n';
8909         s << "\tflags = " << getMacOSSurfaceCreateFlagsMVKStr(value.flags) << '\n';
8910         s << "\tpView = " << value.pView << '\n';
8911         s << '}';
8912         return s;
8913 }
8914
8915 std::ostream& operator<< (std::ostream& s, const VkMetalSurfaceCreateInfoEXT& value)
8916 {
8917         s << "VkMetalSurfaceCreateInfoEXT = {\n";
8918         s << "\tsType = " << value.sType << '\n';
8919         s << "\tpNext = " << value.pNext << '\n';
8920         s << "\tflags = " << getMetalSurfaceCreateFlagsEXTStr(value.flags) << '\n';
8921         s << "\tpLayer = " << value.pLayer << '\n';
8922         s << '}';
8923         return s;
8924 }
8925
8926 std::ostream& operator<< (std::ostream& s, const VkViSurfaceCreateInfoNN& value)
8927 {
8928         s << "VkViSurfaceCreateInfoNN = {\n";
8929         s << "\tsType = " << value.sType << '\n';
8930         s << "\tpNext = " << value.pNext << '\n';
8931         s << "\tflags = " << getViSurfaceCreateFlagsNNStr(value.flags) << '\n';
8932         s << "\twindow = " << value.window << '\n';
8933         s << '}';
8934         return s;
8935 }
8936
8937 std::ostream& operator<< (std::ostream& s, const VkWaylandSurfaceCreateInfoKHR& value)
8938 {
8939         s << "VkWaylandSurfaceCreateInfoKHR = {\n";
8940         s << "\tsType = " << value.sType << '\n';
8941         s << "\tpNext = " << value.pNext << '\n';
8942         s << "\tflags = " << getWaylandSurfaceCreateFlagsKHRStr(value.flags) << '\n';
8943         s << "\tdisplay = " << value.display << '\n';
8944         s << "\tsurface = " << value.surface << '\n';
8945         s << '}';
8946         return s;
8947 }
8948
8949 std::ostream& operator<< (std::ostream& s, const VkWin32SurfaceCreateInfoKHR& value)
8950 {
8951         s << "VkWin32SurfaceCreateInfoKHR = {\n";
8952         s << "\tsType = " << value.sType << '\n';
8953         s << "\tpNext = " << value.pNext << '\n';
8954         s << "\tflags = " << getWin32SurfaceCreateFlagsKHRStr(value.flags) << '\n';
8955         s << "\thinstance = " << value.hinstance << '\n';
8956         s << "\thwnd = " << value.hwnd << '\n';
8957         s << '}';
8958         return s;
8959 }
8960
8961 std::ostream& operator<< (std::ostream& s, const VkImportMemoryWin32HandleInfoKHR& value)
8962 {
8963         s << "VkImportMemoryWin32HandleInfoKHR = {\n";
8964         s << "\tsType = " << value.sType << '\n';
8965         s << "\tpNext = " << value.pNext << '\n';
8966         s << "\thandleType = " << value.handleType << '\n';
8967         s << "\thandle = " << value.handle << '\n';
8968         s << "\tname = " << getCharPtrStr(value.name) << '\n';
8969         s << '}';
8970         return s;
8971 }
8972
8973 std::ostream& operator<< (std::ostream& s, const VkExportMemoryWin32HandleInfoKHR& value)
8974 {
8975         s << "VkExportMemoryWin32HandleInfoKHR = {\n";
8976         s << "\tsType = " << value.sType << '\n';
8977         s << "\tpNext = " << value.pNext << '\n';
8978         s << "\tpAttributes = " << value.pAttributes << '\n';
8979         s << "\tdwAccess = " << value.dwAccess << '\n';
8980         s << "\tname = " << getCharPtrStr(value.name) << '\n';
8981         s << '}';
8982         return s;
8983 }
8984
8985 std::ostream& operator<< (std::ostream& s, const VkMemoryWin32HandlePropertiesKHR& value)
8986 {
8987         s << "VkMemoryWin32HandlePropertiesKHR = {\n";
8988         s << "\tsType = " << value.sType << '\n';
8989         s << "\tpNext = " << value.pNext << '\n';
8990         s << "\tmemoryTypeBits = " << value.memoryTypeBits << '\n';
8991         s << '}';
8992         return s;
8993 }
8994
8995 std::ostream& operator<< (std::ostream& s, const VkMemoryGetWin32HandleInfoKHR& value)
8996 {
8997         s << "VkMemoryGetWin32HandleInfoKHR = {\n";
8998         s << "\tsType = " << value.sType << '\n';
8999         s << "\tpNext = " << value.pNext << '\n';
9000         s << "\tmemory = " << value.memory << '\n';
9001         s << "\thandleType = " << value.handleType << '\n';
9002         s << '}';
9003         return s;
9004 }
9005
9006 std::ostream& operator<< (std::ostream& s, const VkWin32KeyedMutexAcquireReleaseInfoKHR& value)
9007 {
9008         s << "VkWin32KeyedMutexAcquireReleaseInfoKHR = {\n";
9009         s << "\tsType = " << value.sType << '\n';
9010         s << "\tpNext = " << value.pNext << '\n';
9011         s << "\tacquireCount = " << value.acquireCount << '\n';
9012         s << "\tpAcquireSyncs = " << value.pAcquireSyncs << '\n';
9013         s << "\tpAcquireKeys = " << value.pAcquireKeys << '\n';
9014         s << "\tpAcquireTimeouts = " << value.pAcquireTimeouts << '\n';
9015         s << "\treleaseCount = " << value.releaseCount << '\n';
9016         s << "\tpReleaseSyncs = " << value.pReleaseSyncs << '\n';
9017         s << "\tpReleaseKeys = " << value.pReleaseKeys << '\n';
9018         s << '}';
9019         return s;
9020 }
9021
9022 std::ostream& operator<< (std::ostream& s, const VkImportSemaphoreWin32HandleInfoKHR& value)
9023 {
9024         s << "VkImportSemaphoreWin32HandleInfoKHR = {\n";
9025         s << "\tsType = " << value.sType << '\n';
9026         s << "\tpNext = " << value.pNext << '\n';
9027         s << "\tsemaphore = " << value.semaphore << '\n';
9028         s << "\tflags = " << getSemaphoreImportFlagsStr(value.flags) << '\n';
9029         s << "\thandleType = " << value.handleType << '\n';
9030         s << "\thandle = " << value.handle << '\n';
9031         s << "\tname = " << getCharPtrStr(value.name) << '\n';
9032         s << '}';
9033         return s;
9034 }
9035
9036 std::ostream& operator<< (std::ostream& s, const VkExportSemaphoreWin32HandleInfoKHR& value)
9037 {
9038         s << "VkExportSemaphoreWin32HandleInfoKHR = {\n";
9039         s << "\tsType = " << value.sType << '\n';
9040         s << "\tpNext = " << value.pNext << '\n';
9041         s << "\tpAttributes = " << value.pAttributes << '\n';
9042         s << "\tdwAccess = " << value.dwAccess << '\n';
9043         s << "\tname = " << getCharPtrStr(value.name) << '\n';
9044         s << '}';
9045         return s;
9046 }
9047
9048 std::ostream& operator<< (std::ostream& s, const VkD3D12FenceSubmitInfoKHR& value)
9049 {
9050         s << "VkD3D12FenceSubmitInfoKHR = {\n";
9051         s << "\tsType = " << value.sType << '\n';
9052         s << "\tpNext = " << value.pNext << '\n';
9053         s << "\twaitSemaphoreValuesCount = " << value.waitSemaphoreValuesCount << '\n';
9054         s << "\tpWaitSemaphoreValues = " << value.pWaitSemaphoreValues << '\n';
9055         s << "\tsignalSemaphoreValuesCount = " << value.signalSemaphoreValuesCount << '\n';
9056         s << "\tpSignalSemaphoreValues = " << value.pSignalSemaphoreValues << '\n';
9057         s << '}';
9058         return s;
9059 }
9060
9061 std::ostream& operator<< (std::ostream& s, const VkSemaphoreGetWin32HandleInfoKHR& value)
9062 {
9063         s << "VkSemaphoreGetWin32HandleInfoKHR = {\n";
9064         s << "\tsType = " << value.sType << '\n';
9065         s << "\tpNext = " << value.pNext << '\n';
9066         s << "\tsemaphore = " << value.semaphore << '\n';
9067         s << "\thandleType = " << value.handleType << '\n';
9068         s << '}';
9069         return s;
9070 }
9071
9072 std::ostream& operator<< (std::ostream& s, const VkImportFenceWin32HandleInfoKHR& value)
9073 {
9074         s << "VkImportFenceWin32HandleInfoKHR = {\n";
9075         s << "\tsType = " << value.sType << '\n';
9076         s << "\tpNext = " << value.pNext << '\n';
9077         s << "\tfence = " << value.fence << '\n';
9078         s << "\tflags = " << getFenceImportFlagsStr(value.flags) << '\n';
9079         s << "\thandleType = " << value.handleType << '\n';
9080         s << "\thandle = " << value.handle << '\n';
9081         s << "\tname = " << getCharPtrStr(value.name) << '\n';
9082         s << '}';
9083         return s;
9084 }
9085
9086 std::ostream& operator<< (std::ostream& s, const VkExportFenceWin32HandleInfoKHR& value)
9087 {
9088         s << "VkExportFenceWin32HandleInfoKHR = {\n";
9089         s << "\tsType = " << value.sType << '\n';
9090         s << "\tpNext = " << value.pNext << '\n';
9091         s << "\tpAttributes = " << value.pAttributes << '\n';
9092         s << "\tdwAccess = " << value.dwAccess << '\n';
9093         s << "\tname = " << getCharPtrStr(value.name) << '\n';
9094         s << '}';
9095         return s;
9096 }
9097
9098 std::ostream& operator<< (std::ostream& s, const VkFenceGetWin32HandleInfoKHR& value)
9099 {
9100         s << "VkFenceGetWin32HandleInfoKHR = {\n";
9101         s << "\tsType = " << value.sType << '\n';
9102         s << "\tpNext = " << value.pNext << '\n';
9103         s << "\tfence = " << value.fence << '\n';
9104         s << "\thandleType = " << value.handleType << '\n';
9105         s << '}';
9106         return s;
9107 }
9108
9109 std::ostream& operator<< (std::ostream& s, const VkImportMemoryWin32HandleInfoNV& value)
9110 {
9111         s << "VkImportMemoryWin32HandleInfoNV = {\n";
9112         s << "\tsType = " << value.sType << '\n';
9113         s << "\tpNext = " << value.pNext << '\n';
9114         s << "\thandleType = " << getExternalMemoryHandleTypeFlagsNVStr(value.handleType) << '\n';
9115         s << "\thandle = " << value.handle << '\n';
9116         s << '}';
9117         return s;
9118 }
9119
9120 std::ostream& operator<< (std::ostream& s, const VkExportMemoryWin32HandleInfoNV& value)
9121 {
9122         s << "VkExportMemoryWin32HandleInfoNV = {\n";
9123         s << "\tsType = " << value.sType << '\n';
9124         s << "\tpNext = " << value.pNext << '\n';
9125         s << "\tpAttributes = " << value.pAttributes << '\n';
9126         s << "\tdwAccess = " << value.dwAccess << '\n';
9127         s << '}';
9128         return s;
9129 }
9130
9131 std::ostream& operator<< (std::ostream& s, const VkWin32KeyedMutexAcquireReleaseInfoNV& value)
9132 {
9133         s << "VkWin32KeyedMutexAcquireReleaseInfoNV = {\n";
9134         s << "\tsType = " << value.sType << '\n';
9135         s << "\tpNext = " << value.pNext << '\n';
9136         s << "\tacquireCount = " << value.acquireCount << '\n';
9137         s << "\tpAcquireSyncs = " << value.pAcquireSyncs << '\n';
9138         s << "\tpAcquireKeys = " << value.pAcquireKeys << '\n';
9139         s << "\tpAcquireTimeoutMilliseconds = " << value.pAcquireTimeoutMilliseconds << '\n';
9140         s << "\treleaseCount = " << value.releaseCount << '\n';
9141         s << "\tpReleaseSyncs = " << value.pReleaseSyncs << '\n';
9142         s << "\tpReleaseKeys = " << value.pReleaseKeys << '\n';
9143         s << '}';
9144         return s;
9145 }
9146
9147 std::ostream& operator<< (std::ostream& s, const VkSurfaceFullScreenExclusiveInfoEXT& value)
9148 {
9149         s << "VkSurfaceFullScreenExclusiveInfoEXT = {\n";
9150         s << "\tsType = " << value.sType << '\n';
9151         s << "\tpNext = " << value.pNext << '\n';
9152         s << "\tfullScreenExclusive = " << value.fullScreenExclusive << '\n';
9153         s << '}';
9154         return s;
9155 }
9156
9157 std::ostream& operator<< (std::ostream& s, const VkSurfaceCapabilitiesFullScreenExclusiveEXT& value)
9158 {
9159         s << "VkSurfaceCapabilitiesFullScreenExclusiveEXT = {\n";
9160         s << "\tsType = " << value.sType << '\n';
9161         s << "\tpNext = " << value.pNext << '\n';
9162         s << "\tfullScreenExclusiveSupported = " << value.fullScreenExclusiveSupported << '\n';
9163         s << '}';
9164         return s;
9165 }
9166
9167 std::ostream& operator<< (std::ostream& s, const VkSurfaceFullScreenExclusiveWin32InfoEXT& value)
9168 {
9169         s << "VkSurfaceFullScreenExclusiveWin32InfoEXT = {\n";
9170         s << "\tsType = " << value.sType << '\n';
9171         s << "\tpNext = " << value.pNext << '\n';
9172         s << "\thmonitor = " << value.hmonitor << '\n';
9173         s << '}';
9174         return s;
9175 }
9176
9177 std::ostream& operator<< (std::ostream& s, const VkXcbSurfaceCreateInfoKHR& value)
9178 {
9179         s << "VkXcbSurfaceCreateInfoKHR = {\n";
9180         s << "\tsType = " << value.sType << '\n';
9181         s << "\tpNext = " << value.pNext << '\n';
9182         s << "\tflags = " << getXcbSurfaceCreateFlagsKHRStr(value.flags) << '\n';
9183         s << "\tconnection = " << value.connection << '\n';
9184         s << "\twindow = " << value.window << '\n';
9185         s << '}';
9186         return s;
9187 }
9188
9189 std::ostream& operator<< (std::ostream& s, const VkXlibSurfaceCreateInfoKHR& value)
9190 {
9191         s << "VkXlibSurfaceCreateInfoKHR = {\n";
9192         s << "\tsType = " << value.sType << '\n';
9193         s << "\tpNext = " << value.pNext << '\n';
9194         s << "\tflags = " << getXlibSurfaceCreateFlagsKHRStr(value.flags) << '\n';
9195         s << "\tdpy = " << value.dpy << '\n';
9196         s << "\twindow = " << value.window << '\n';
9197         s << '}';
9198         return s;
9199 }