Update Vulkan Headers
[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<VkBuffer>                                                   (void) { return "VkBuffer";                                                     }
5 template<> const char*  getTypeName<VkImage>                                                    (void) { return "VkImage";                                                      }
6 template<> const char*  getTypeName<VkInstance>                                                 (void) { return "VkInstance";                                           }
7 template<> const char*  getTypeName<VkPhysicalDevice>                                   (void) { return "VkPhysicalDevice";                                     }
8 template<> const char*  getTypeName<VkDevice>                                                   (void) { return "VkDevice";                                                     }
9 template<> const char*  getTypeName<VkQueue>                                                    (void) { return "VkQueue";                                                      }
10 template<> const char*  getTypeName<VkSemaphore>                                                (void) { return "VkSemaphore";                                          }
11 template<> const char*  getTypeName<VkCommandBuffer>                                    (void) { return "VkCommandBuffer";                                      }
12 template<> const char*  getTypeName<VkFence>                                                    (void) { return "VkFence";                                                      }
13 template<> const char*  getTypeName<VkDeviceMemory>                                             (void) { return "VkDeviceMemory";                                       }
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<VkPipeline>                                                 (void) { return "VkPipeline";                                           }
22 template<> const char*  getTypeName<VkRenderPass>                                               (void) { return "VkRenderPass";                                         }
23 template<> const char*  getTypeName<VkDescriptorSetLayout>                              (void) { return "VkDescriptorSetLayout";                        }
24 template<> const char*  getTypeName<VkSampler>                                                  (void) { return "VkSampler";                                            }
25 template<> const char*  getTypeName<VkDescriptorSet>                                    (void) { return "VkDescriptorSet";                                      }
26 template<> const char*  getTypeName<VkDescriptorPool>                                   (void) { return "VkDescriptorPool";                                     }
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<VkDeferredOperationKHR>                             (void) { return "VkDeferredOperationKHR";                       }
36 template<> const char*  getTypeName<VkDebugReportCallbackEXT>                   (void) { return "VkDebugReportCallbackEXT";                     }
37 template<> const char*  getTypeName<VkDebugUtilsMessengerEXT>                   (void) { return "VkDebugUtilsMessengerEXT";                     }
38 template<> const char*  getTypeName<VkValidationCacheEXT>                               (void) { return "VkValidationCacheEXT";                         }
39 template<> const char*  getTypeName<VkAccelerationStructureNV>                  (void) { return "VkAccelerationStructureNV";            }
40 template<> const char*  getTypeName<VkPerformanceConfigurationINTEL>    (void) { return "VkPerformanceConfigurationINTEL";      }
41 template<> const char*  getTypeName<VkIndirectCommandsLayoutNV>                 (void) { return "VkIndirectCommandsLayoutNV";           }
42 template<> const char*  getTypeName<VkPrivateDataSlotEXT>                               (void) { return "VkPrivateDataSlotEXT";                         }
43 template<> const char*  getTypeName<VkAccelerationStructureKHR>                 (void) { return "VkAccelerationStructureKHR";           }
44
45 namespace pt
46 {
47 std::ostream& operator<< (std::ostream& s, XlibDisplayPtr                               v) { return s << tcu::toHex(v.internal); }
48 std::ostream& operator<< (std::ostream& s, XlibWindow                                   v) { return s << tcu::toHex(v.internal); }
49 std::ostream& operator<< (std::ostream& s, XlibVisualID                                 v) { return s << tcu::toHex(v.internal); }
50 std::ostream& operator<< (std::ostream& s, XcbConnectionPtr                             v) { return s << tcu::toHex(v.internal); }
51 std::ostream& operator<< (std::ostream& s, XcbWindow                                    v) { return s << tcu::toHex(v.internal); }
52 std::ostream& operator<< (std::ostream& s, XcbVisualid                                  v) { return s << tcu::toHex(v.internal); }
53 std::ostream& operator<< (std::ostream& s, WaylandDisplayPtr                    v) { return s << tcu::toHex(v.internal); }
54 std::ostream& operator<< (std::ostream& s, WaylandSurfacePtr                    v) { return s << tcu::toHex(v.internal); }
55 std::ostream& operator<< (std::ostream& s, MirConnectionPtr                             v) { return s << tcu::toHex(v.internal); }
56 std::ostream& operator<< (std::ostream& s, MirSurfacePtr                                v) { return s << tcu::toHex(v.internal); }
57 std::ostream& operator<< (std::ostream& s, AndroidNativeWindowPtr               v) { return s << tcu::toHex(v.internal); }
58 std::ostream& operator<< (std::ostream& s, Win32InstanceHandle                  v) { return s << tcu::toHex(v.internal); }
59 std::ostream& operator<< (std::ostream& s, Win32WindowHandle                    v) { return s << tcu::toHex(v.internal); }
60 std::ostream& operator<< (std::ostream& s, Win32Handle                                  v) { return s << tcu::toHex(v.internal); }
61 std::ostream& operator<< (std::ostream& s, Win32SecurityAttributesPtr   v) { return s << tcu::toHex(v.internal); }
62 std::ostream& operator<< (std::ostream& s, AndroidHardwareBufferPtr             v) { return s << tcu::toHex(v.internal); }
63 std::ostream& operator<< (std::ostream& s, Win32MonitorHandle                   v) { return s << tcu::toHex(v.internal); }
64 std::ostream& operator<< (std::ostream& s, Win32LPCWSTR                                 v) { return s << tcu::toHex(v.internal); }
65 std::ostream& operator<< (std::ostream& s, RROutput                                             v) { return s << tcu::toHex(v.internal); }
66 std::ostream& operator<< (std::ostream& s, zx_handle_t                                  v) { return s << tcu::toHex(v.internal); }
67 std::ostream& operator<< (std::ostream& s, GgpFrameToken                                v) { return s << tcu::toHex(v.internal); }
68 std::ostream& operator<< (std::ostream& s, GgpStreamDescriptor                  v) { return s << tcu::toHex(v.internal); }
69 std::ostream& operator<< (std::ostream& s, CAMetalLayer                                 v) { return s << tcu::toHex(v.internal); }
70 }
71
72 const char* getResultName (VkResult value)
73 {
74         switch (value)
75         {
76                 case VK_SUCCESS:                                                                                        return "VK_SUCCESS";
77                 case VK_NOT_READY:                                                                                      return "VK_NOT_READY";
78                 case VK_TIMEOUT:                                                                                        return "VK_TIMEOUT";
79                 case VK_EVENT_SET:                                                                                      return "VK_EVENT_SET";
80                 case VK_EVENT_RESET:                                                                            return "VK_EVENT_RESET";
81                 case VK_INCOMPLETE:                                                                                     return "VK_INCOMPLETE";
82                 case VK_ERROR_OUT_OF_HOST_MEMORY:                                                       return "VK_ERROR_OUT_OF_HOST_MEMORY";
83                 case VK_ERROR_OUT_OF_DEVICE_MEMORY:                                                     return "VK_ERROR_OUT_OF_DEVICE_MEMORY";
84                 case VK_ERROR_INITIALIZATION_FAILED:                                            return "VK_ERROR_INITIALIZATION_FAILED";
85                 case VK_ERROR_DEVICE_LOST:                                                                      return "VK_ERROR_DEVICE_LOST";
86                 case VK_ERROR_MEMORY_MAP_FAILED:                                                        return "VK_ERROR_MEMORY_MAP_FAILED";
87                 case VK_ERROR_LAYER_NOT_PRESENT:                                                        return "VK_ERROR_LAYER_NOT_PRESENT";
88                 case VK_ERROR_EXTENSION_NOT_PRESENT:                                            return "VK_ERROR_EXTENSION_NOT_PRESENT";
89                 case VK_ERROR_FEATURE_NOT_PRESENT:                                                      return "VK_ERROR_FEATURE_NOT_PRESENT";
90                 case VK_ERROR_INCOMPATIBLE_DRIVER:                                                      return "VK_ERROR_INCOMPATIBLE_DRIVER";
91                 case VK_ERROR_TOO_MANY_OBJECTS:                                                         return "VK_ERROR_TOO_MANY_OBJECTS";
92                 case VK_ERROR_FORMAT_NOT_SUPPORTED:                                                     return "VK_ERROR_FORMAT_NOT_SUPPORTED";
93                 case VK_ERROR_FRAGMENTED_POOL:                                                          return "VK_ERROR_FRAGMENTED_POOL";
94                 case VK_ERROR_UNKNOWN:                                                                          return "VK_ERROR_UNKNOWN";
95                 case VK_ERROR_OUT_OF_POOL_MEMORY:                                                       return "VK_ERROR_OUT_OF_POOL_MEMORY";
96                 case VK_ERROR_INVALID_EXTERNAL_HANDLE:                                          return "VK_ERROR_INVALID_EXTERNAL_HANDLE";
97                 case VK_ERROR_FRAGMENTATION:                                                            return "VK_ERROR_FRAGMENTATION";
98                 case VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS:                           return "VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS";
99                 case VK_ERROR_SURFACE_LOST_KHR:                                                         return "VK_ERROR_SURFACE_LOST_KHR";
100                 case VK_ERROR_NATIVE_WINDOW_IN_USE_KHR:                                         return "VK_ERROR_NATIVE_WINDOW_IN_USE_KHR";
101                 case VK_SUBOPTIMAL_KHR:                                                                         return "VK_SUBOPTIMAL_KHR";
102                 case VK_ERROR_OUT_OF_DATE_KHR:                                                          return "VK_ERROR_OUT_OF_DATE_KHR";
103                 case VK_ERROR_INCOMPATIBLE_DISPLAY_KHR:                                         return "VK_ERROR_INCOMPATIBLE_DISPLAY_KHR";
104                 case VK_ERROR_VALIDATION_FAILED_EXT:                                            return "VK_ERROR_VALIDATION_FAILED_EXT";
105                 case VK_ERROR_INVALID_SHADER_NV:                                                        return "VK_ERROR_INVALID_SHADER_NV";
106                 case VK_ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT:     return "VK_ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT";
107                 case VK_ERROR_NOT_PERMITTED_EXT:                                                        return "VK_ERROR_NOT_PERMITTED_EXT";
108                 case VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT:                      return "VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT";
109                 case VK_THREAD_IDLE_KHR:                                                                        return "VK_THREAD_IDLE_KHR";
110                 case VK_THREAD_DONE_KHR:                                                                        return "VK_THREAD_DONE_KHR";
111                 case VK_OPERATION_DEFERRED_KHR:                                                         return "VK_OPERATION_DEFERRED_KHR";
112                 case VK_OPERATION_NOT_DEFERRED_KHR:                                                     return "VK_OPERATION_NOT_DEFERRED_KHR";
113                 case VK_PIPELINE_COMPILE_REQUIRED_EXT:                                          return "VK_PIPELINE_COMPILE_REQUIRED_EXT";
114                 case VK_RESULT_MAX_ENUM:                                                                        return "VK_RESULT_MAX_ENUM";
115                 default:                                                                                                        return DE_NULL;
116         }
117 }
118
119 const char* getStructureTypeName (VkStructureType value)
120 {
121         switch (value)
122         {
123                 case VK_STRUCTURE_TYPE_APPLICATION_INFO:                                                                                                return "VK_STRUCTURE_TYPE_APPLICATION_INFO";
124                 case VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO:                                                                                    return "VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO";
125                 case VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO:                                                                                return "VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO";
126                 case VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO:                                                                                              return "VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO";
127                 case VK_STRUCTURE_TYPE_SUBMIT_INFO:                                                                                                             return "VK_STRUCTURE_TYPE_SUBMIT_INFO";
128                 case VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO:                                                                                    return "VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO";
129                 case VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE:                                                                                             return "VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE";
130                 case VK_STRUCTURE_TYPE_BIND_SPARSE_INFO:                                                                                                return "VK_STRUCTURE_TYPE_BIND_SPARSE_INFO";
131                 case VK_STRUCTURE_TYPE_FENCE_CREATE_INFO:                                                                                               return "VK_STRUCTURE_TYPE_FENCE_CREATE_INFO";
132                 case VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO:                                                                                   return "VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO";
133                 case VK_STRUCTURE_TYPE_EVENT_CREATE_INFO:                                                                                               return "VK_STRUCTURE_TYPE_EVENT_CREATE_INFO";
134                 case VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO:                                                                                  return "VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO";
135                 case VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO:                                                                                              return "VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO";
136                 case VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO:                                                                                 return "VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO";
137                 case VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO:                                                                                               return "VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO";
138                 case VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO:                                                                                  return "VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO";
139                 case VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO:                                                                               return "VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO";
140                 case VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO:                                                                              return "VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO";
141                 case VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO:                                                               return "VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO";
142                 case VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO:                                                 return "VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO";
143                 case VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO:                                               return "VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO";
144                 case VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO:                                                 return "VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO";
145                 case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO:                                                             return "VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO";
146                 case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO:                                                return "VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO";
147                 case VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO:                                                  return "VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO";
148                 case VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO:                                                return "VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO";
149                 case VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO:                                                  return "VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO";
150                 case VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO:                                                              return "VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO";
151                 case VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO:                                                                   return "VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO";
152                 case VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO:                                                                    return "VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO";
153                 case VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO:                                                                             return "VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO";
154                 case VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO:                                                                                             return "VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO";
155                 case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO:                                                               return "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO";
156                 case VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO:                                                                             return "VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO";
157                 case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO:                                                                    return "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO";
158                 case VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET:                                                                                    return "VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET";
159                 case VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET:                                                                                             return "VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET";
160                 case VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO:                                                                                 return "VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO";
161                 case VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO:                                                                                 return "VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO";
162                 case VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO:                                                                                return "VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO";
163                 case VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO:                                                                    return "VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO";
164                 case VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO:                                                                 return "VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO";
165                 case VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO:                                                                               return "VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO";
166                 case VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO:                                                                                  return "VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO";
167                 case VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER:                                                                                   return "VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER";
168                 case VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER:                                                                                    return "VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER";
169                 case VK_STRUCTURE_TYPE_MEMORY_BARRIER:                                                                                                  return "VK_STRUCTURE_TYPE_MEMORY_BARRIER";
170                 case VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO:                                                                             return "VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO";
171                 case VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO:                                                                               return "VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO";
172                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES:                                                             return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES";
173                 case VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO:                                                                                 return "VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO";
174                 case VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO:                                                                                  return "VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO";
175                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES:                                                  return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES";
176                 case VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS:                                                                   return "VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS";
177                 case VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO:                                                                  return "VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO";
178                 case VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO:                                                                              return "VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO";
179                 case VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO:                                                             return "VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO";
180                 case VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO:                                                  return "VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO";
181                 case VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO:                                                                                return "VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO";
182                 case VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO:                                                                   return "VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO";
183                 case VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO:                                                    return "VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO";
184                 case VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO:                                                             return "VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO";
185                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES:                                                                return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES";
186                 case VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO:                                                                 return "VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO";
187                 case VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2:                                                               return "VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2";
188                 case VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2:                                                                return "VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2";
189                 case VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2:                                                 return "VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2";
190                 case VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2:                                                                                   return "VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2";
191                 case VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2:                                                              return "VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2";
192                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2:                                                                              return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2";
193                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2:                                                                    return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2";
194                 case VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2:                                                                                             return "VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2";
195                 case VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2:                                                                               return "VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2";
196                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2:                                                             return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2";
197                 case VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2:                                                                               return "VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2";
198                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2:                                                             return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2";
199                 case VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2:                                                                return "VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2";
200                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2:                                              return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2";
201                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES:                                               return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES";
202                 case VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO:                                 return "VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO";
203                 case VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO:                                                                    return "VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO";
204                 case VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO:                   return "VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO";
205                 case VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO:                                                               return "VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO";
206                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES:                                                              return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES";
207                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES:                                                    return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES";
208                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES:                                              return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES";
209                 case VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO:                                                                                   return "VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO";
210                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES:                                               return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES";
211                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES:                                             return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES";
212                 case VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2:                                                                                             return "VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2";
213                 case VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO:                                                    return "VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO";
214                 case VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO:                                                                   return "VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO";
215                 case VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO:                                                                    return "VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO";
216                 case VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO:                                                    return "VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO";
217                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES:                               return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES";
218                 case VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES:                                return "VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES";
219                 case VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO:                                                  return "VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO";
220                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO:                                              return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO";
221                 case VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES:                                                                return "VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES";
222                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO:                                                    return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO";
223                 case VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES:                                                                              return "VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES";
224                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES:                                                                   return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES";
225                 case VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO:                                                              return "VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO";
226                 case VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO:                                                               return "VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO";
227                 case VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO:                                                                             return "VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO";
228                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO:                                                             return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO";
229                 case VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES:                                                                               return "VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES";
230                 case VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO:                                                                                return "VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO";
231                 case VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO:                                                                    return "VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO";
232                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO:                                                 return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO";
233                 case VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES:                                                                   return "VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES";
234                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES:                                                return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES";
235                 case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT:                                                                   return "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT";
236                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES:                                 return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES";
237                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES:                                                             return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES";
238                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES:                                                   return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES";
239                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES:                                                             return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES";
240                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES:                                                   return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES";
241                 case VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO:                                                                   return "VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO";
242                 case VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2:                                                                                return "VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2";
243                 case VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2:                                                                                  return "VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2";
244                 case VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2:                                                                                   return "VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2";
245                 case VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2:                                                                                    return "VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2";
246                 case VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2:                                                                               return "VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2";
247                 case VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO:                                                                                              return "VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO";
248                 case VK_STRUCTURE_TYPE_SUBPASS_END_INFO:                                                                                                return "VK_STRUCTURE_TYPE_SUBPASS_END_INFO";
249                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES:                                                   return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES";
250                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES:                                                               return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES";
251                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES:                                    return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES";
252                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES:                                    return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES";
253                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES:                                               return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES";
254                 case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO:                                 return "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO";
255                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES:                                    return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES";
256                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES:                                  return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES";
257                 case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO:                  return "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO";
258                 case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT:                 return "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT";
259                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES:                                return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES";
260                 case VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE:                                               return "VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE";
261                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES:                                    return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES";
262                 case VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO:                                                                 return "VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO";
263                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES:                                return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES";
264                 case VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO:                                                              return "VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO";
265                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES:                                    return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES";
266                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES:                                  return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES";
267                 case VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO:                                                             return "VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO";
268                 case VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO:                                                               return "VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO";
269                 case VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO:                                                               return "VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO";
270                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES:                 return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES";
271                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES:                 return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES";
272                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES:                 return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES";
273                 case VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT:                                                             return "VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT";
274                 case VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT:                                                   return "VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT";
275                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES:                                               return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES";
276                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES:                                             return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES";
277                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES:                                   return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES";
278                 case VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO:                                                                              return "VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO";
279                 case VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO:                                                                  return "VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO";
280                 case VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO:                                                                                             return "VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO";
281                 case VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO:                                                                                   return "VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO";
282                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES:                                  return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES";
283                 case VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO:                                                                              return "VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO";
284                 case VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO:                                               return "VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO";
285                 case VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO:                                             return "VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO";
286                 case VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO:                                               return "VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO";
287                 case VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR:                                                                               return "VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR";
288                 case VK_STRUCTURE_TYPE_PRESENT_INFO_KHR:                                                                                                return "VK_STRUCTURE_TYPE_PRESENT_INFO_KHR";
289                 case VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR:                                                   return "VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR";
290                 case VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR:                                                                 return "VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR";
291                 case VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR:                                                    return "VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR";
292                 case VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR:                                                                             return "VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR";
293                 case VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR:                                                                   return "VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR";
294                 case VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR:                                                  return "VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR";
295                 case VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR:                                                                    return "VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR";
296                 case VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR:                                                                 return "VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR";
297                 case VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR:                                                                                return "VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR";
298                 case VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR:                                                                    return "VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR";
299                 case VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR:                                                                             return "VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR";
300                 case VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR:                                                                 return "VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR";
301                 case VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR:                                                                 return "VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR";
302                 case VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR:                                                                   return "VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR";
303                 case VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT:                                                   return "VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT";
304                 case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD:                    return "VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD";
305                 case VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT:                                                               return "VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT";
306                 case VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT:                                                                return "VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT";
307                 case VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT:                                                                    return "VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT";
308                 case VK_STRUCTURE_TYPE_VIDEO_PROFILE_KHR:                                                                                               return "VK_STRUCTURE_TYPE_VIDEO_PROFILE_KHR";
309                 case VK_STRUCTURE_TYPE_VIDEO_CAPABILITIES_KHR:                                                                                  return "VK_STRUCTURE_TYPE_VIDEO_CAPABILITIES_KHR";
310                 case VK_STRUCTURE_TYPE_VIDEO_PICTURE_RESOURCE_KHR:                                                                              return "VK_STRUCTURE_TYPE_VIDEO_PICTURE_RESOURCE_KHR";
311                 case VK_STRUCTURE_TYPE_VIDEO_GET_MEMORY_PROPERTIES_KHR:                                                                 return "VK_STRUCTURE_TYPE_VIDEO_GET_MEMORY_PROPERTIES_KHR";
312                 case VK_STRUCTURE_TYPE_VIDEO_BIND_MEMORY_KHR:                                                                                   return "VK_STRUCTURE_TYPE_VIDEO_BIND_MEMORY_KHR";
313                 case VK_STRUCTURE_TYPE_VIDEO_SESSION_CREATE_INFO_KHR:                                                                   return "VK_STRUCTURE_TYPE_VIDEO_SESSION_CREATE_INFO_KHR";
314                 case VK_STRUCTURE_TYPE_VIDEO_SESSION_PARAMETERS_CREATE_INFO_KHR:                                                return "VK_STRUCTURE_TYPE_VIDEO_SESSION_PARAMETERS_CREATE_INFO_KHR";
315                 case VK_STRUCTURE_TYPE_VIDEO_SESSION_PARAMETERS_UPDATE_INFO_KHR:                                                return "VK_STRUCTURE_TYPE_VIDEO_SESSION_PARAMETERS_UPDATE_INFO_KHR";
316                 case VK_STRUCTURE_TYPE_VIDEO_BEGIN_CODING_INFO_KHR:                                                                             return "VK_STRUCTURE_TYPE_VIDEO_BEGIN_CODING_INFO_KHR";
317                 case VK_STRUCTURE_TYPE_VIDEO_END_CODING_INFO_KHR:                                                                               return "VK_STRUCTURE_TYPE_VIDEO_END_CODING_INFO_KHR";
318                 case VK_STRUCTURE_TYPE_VIDEO_CODING_CONTROL_INFO_KHR:                                                                   return "VK_STRUCTURE_TYPE_VIDEO_CODING_CONTROL_INFO_KHR";
319                 case VK_STRUCTURE_TYPE_VIDEO_REFERENCE_SLOT_KHR:                                                                                return "VK_STRUCTURE_TYPE_VIDEO_REFERENCE_SLOT_KHR";
320                 case VK_STRUCTURE_TYPE_VIDEO_QUEUE_FAMILY_PROPERTIES_2_KHR:                                                             return "VK_STRUCTURE_TYPE_VIDEO_QUEUE_FAMILY_PROPERTIES_2_KHR";
321                 case VK_STRUCTURE_TYPE_VIDEO_PROFILES_KHR:                                                                                              return "VK_STRUCTURE_TYPE_VIDEO_PROFILES_KHR";
322                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_FORMAT_INFO_KHR:                                                   return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_FORMAT_INFO_KHR";
323                 case VK_STRUCTURE_TYPE_VIDEO_FORMAT_PROPERTIES_KHR:                                                                             return "VK_STRUCTURE_TYPE_VIDEO_FORMAT_PROPERTIES_KHR";
324                 case VK_STRUCTURE_TYPE_VIDEO_DECODE_INFO_KHR:                                                                                   return "VK_STRUCTURE_TYPE_VIDEO_DECODE_INFO_KHR";
325                 case VK_STRUCTURE_TYPE_VIDEO_ENCODE_INFO_KHR:                                                                                   return "VK_STRUCTURE_TYPE_VIDEO_ENCODE_INFO_KHR";
326                 case VK_STRUCTURE_TYPE_VIDEO_ENCODE_RATE_CONTROL_INFO_KHR:                                                              return "VK_STRUCTURE_TYPE_VIDEO_ENCODE_RATE_CONTROL_INFO_KHR";
327                 case VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV:                                               return "VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV";
328                 case VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV:                                              return "VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV";
329                 case VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV:                                    return "VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV";
330                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT:                                 return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT";
331                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT:                               return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT";
332                 case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT:                             return "VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT";
333                 case VK_STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX:                                                                              return "VK_STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX";
334                 case VK_STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX:                                                               return "VK_STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX";
335                 case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_CAPABILITIES_EXT:                                                              return "VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_CAPABILITIES_EXT";
336                 case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_CREATE_INFO_EXT:                                               return "VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_CREATE_INFO_EXT";
337                 case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_CREATE_INFO_EXT:                    return "VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_CREATE_INFO_EXT";
338                 case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_ADD_INFO_EXT:                               return "VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_ADD_INFO_EXT";
339                 case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_VCL_FRAME_INFO_EXT:                                                    return "VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_VCL_FRAME_INFO_EXT";
340                 case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_DPB_SLOT_INFO_EXT:                                                             return "VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_DPB_SLOT_INFO_EXT";
341                 case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_NALU_SLICE_EXT:                                                                return "VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_NALU_SLICE_EXT";
342                 case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_EMIT_PICTURE_PARAMETERS_EXT:                                   return "VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_EMIT_PICTURE_PARAMETERS_EXT";
343                 case VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_PROFILE_EXT:                                                                   return "VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_PROFILE_EXT";
344                 case VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_CAPABILITIES_EXT:                                                              return "VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_CAPABILITIES_EXT";
345                 case VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_CREATE_INFO_EXT:                                               return "VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_CREATE_INFO_EXT";
346                 case VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PICTURE_INFO_EXT:                                                              return "VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PICTURE_INFO_EXT";
347                 case VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_MVC_EXT:                                                                               return "VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_MVC_EXT";
348                 case VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PROFILE_EXT:                                                                   return "VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PROFILE_EXT";
349                 case VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_CREATE_INFO_EXT:                    return "VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_CREATE_INFO_EXT";
350                 case VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_ADD_INFO_EXT:                               return "VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_ADD_INFO_EXT";
351                 case VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_DPB_SLOT_INFO_EXT:                                                             return "VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_DPB_SLOT_INFO_EXT";
352                 case VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD:                                                return "VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD";
353                 case VK_STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP:                                               return "VK_STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP";
354                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV:                                return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV";
355                 case VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV:                                                    return "VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV";
356                 case VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV:                                                                  return "VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV";
357                 case VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV:                                                              return "VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV";
358                 case VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV:                                                              return "VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV";
359                 case VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV:                                               return "VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV";
360                 case VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT:                                                                                    return "VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT";
361                 case VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN:                                                                               return "VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN";
362                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT:               return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT";
363                 case VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT:                                                                 return "VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT";
364                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT:                                                return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT";
365                 case VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR:                                                             return "VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR";
366                 case VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR:                                                             return "VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR";
367                 case VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR:                                                              return "VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR";
368                 case VK_STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR:                                                                return "VK_STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR";
369                 case VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR:                                                                               return "VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR";
370                 case VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR:                                                                                return "VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR";
371                 case VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR:                                                                                  return "VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR";
372                 case VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR:                                              return "VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR";
373                 case VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR:                                                  return "VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR";
374                 case VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR:                                                  return "VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR";
375                 case VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR:                                                                             return "VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR";
376                 case VK_STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR:                                                             return "VK_STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR";
377                 case VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR:                                                                    return "VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR";
378                 case VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR:                                                                               return "VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR";
379                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR:                                  return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR";
380                 case VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT:               return "VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT";
381                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT:                              return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT";
382                 case VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT:                                                    return "VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT";
383                 case VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR:                                                                                             return "VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR";
384                 case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV:                                return "VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV";
385                 case VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT:                                                                              return "VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT";
386                 case VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT:                                                                                  return "VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT";
387                 case VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT:                                                                                   return "VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT";
388                 case VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT:                                                                                  return "VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT";
389                 case VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT:                                                               return "VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT";
390                 case VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE:                                                                               return "VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE";
391                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX:    return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX";
392                 case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV:                                  return "VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV";
393                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT:                                return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT";
394                 case VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT:                                return "VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT";
395                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT:               return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT";
396                 case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT:               return "VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT";
397                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT:                                  return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT";
398                 case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT:                 return "VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT";
399                 case VK_STRUCTURE_TYPE_HDR_METADATA_EXT:                                                                                                return "VK_STRUCTURE_TYPE_HDR_METADATA_EXT";
400                 case VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR:                                                 return "VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR";
401                 case VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR:                                                              return "VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR";
402                 case VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR:                                                              return "VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR";
403                 case VK_STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR:                                                                 return "VK_STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR";
404                 case VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR:                                                                                return "VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR";
405                 case VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR:                                                                                   return "VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR";
406                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR:                                  return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR";
407                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR:                                return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR";
408                 case VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR:                                                  return "VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR";
409                 case VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR:                                                               return "VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR";
410                 case VK_STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR:                                                                 return "VK_STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR";
411                 case VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR:                                                                                 return "VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR";
412                 case VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR:                                                             return "VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR";
413                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR:                                                              return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR";
414                 case VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR:                                                                              return "VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR";
415                 case VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR:                                                                                    return "VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR";
416                 case VK_STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR:                                                                                return "VK_STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR";
417                 case VK_STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR:                                                                  return "VK_STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR";
418                 case VK_STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR:                                                                   return "VK_STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR";
419                 case VK_STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR:                                                                                return "VK_STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR";
420                 case VK_STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR:                                                                return "VK_STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR";
421                 case VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK:                                                                             return "VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK";
422                 case VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK:                                                                   return "VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK";
423                 case VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT:                                                                return "VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT";
424                 case VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT:                                                                 return "VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT";
425                 case VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT:                                                                                   return "VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT";
426                 case VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT:                                                 return "VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT";
427                 case VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT:                                                   return "VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT";
428                 case VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID:                                                   return "VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID";
429                 case VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID:                                              return "VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID";
430                 case VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID:                               return "VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID";
431                 case VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID:                                             return "VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID";
432                 case VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID:                                 return "VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID";
433                 case VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID:                                                                                 return "VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID";
434                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT:                               return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT";
435                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT:                             return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT";
436                 case VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT:                                   return "VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT";
437                 case VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT:                    return "VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT";
438                 case VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT:                                                                               return "VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT";
439                 case VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT:                                             return "VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT";
440                 case VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT:                                 return "VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT";
441                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT:                                 return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT";
442                 case VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT:                                                                              return "VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT";
443                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT:                   return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT";
444                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT:                 return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT";
445                 case VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT:                             return "VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT";
446                 case VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV:                                 return "VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV";
447                 case VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR:                                 return "VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR";
448                 case VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR:                                  return "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR";
449                 case VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR:                                  return "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR";
450                 case VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR:                                  return "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR";
451                 case VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR:                              return "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR";
452                 case VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR:                              return "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR";
453                 case VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR:                                                             return "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR";
454                 case VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_INFO_KHR:                                                 return "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_INFO_KHR";
455                 case VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR:                                                    return "VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR";
456                 case VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR:                                  return "VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR";
457                 case VK_STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR:                                  return "VK_STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR";
458                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR:                             return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR";
459                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_PROPERTIES_KHR:                   return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_PROPERTIES_KHR";
460                 case VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR:                                                  return "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR";
461                 case VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_SIZES_INFO_KHR:                                             return "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_SIZES_INFO_KHR";
462                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR:                               return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR";
463                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_PROPERTIES_KHR:                             return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_PROPERTIES_KHR";
464                 case VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR:                                                    return "VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR";
465                 case VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR:                                                return "VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR";
466                 case VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR:                                  return "VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR";
467                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_QUERY_FEATURES_KHR:                                                  return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_QUERY_FEATURES_KHR";
468                 case VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV:                               return "VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV";
469                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV:                                  return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV";
470                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV:                                return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV";
471                 case VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT:                                                 return "VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT";
472                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT:                              return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT";
473                 case VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT:                                  return "VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT";
474                 case VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT:                              return "VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT";
475                 case VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT:                                                return "VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT";
476                 case VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT:                                                                return "VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT";
477                 case VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT:                                  return "VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT";
478                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_FEATURES_KHR:                                 return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_FEATURES_KHR";
479                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_PROPERTIES_KHR:                               return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_PROPERTIES_KHR";
480                 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";
481                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV:                                  return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV";
482                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV:                                return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV";
483                 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";
484                 case VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV:                                                             return "VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV";
485                 case VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV:                                                   return "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV";
486                 case VK_STRUCTURE_TYPE_GEOMETRY_NV:                                                                                                             return "VK_STRUCTURE_TYPE_GEOMETRY_NV";
487                 case VK_STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV:                                                                                   return "VK_STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV";
488                 case VK_STRUCTURE_TYPE_GEOMETRY_AABB_NV:                                                                                                return "VK_STRUCTURE_TYPE_GEOMETRY_AABB_NV";
489                 case VK_STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV:                                              return "VK_STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV";
490                 case VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV:                                  return "VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV";
491                 case VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV:                              return "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV";
492                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV:                                               return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV";
493                 case VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV:                                                 return "VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV";
494                 case VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV:                                                                  return "VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV";
495                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV:                return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV";
496                 case VK_STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV:              return "VK_STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV";
497                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT:                                return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT";
498                 case VK_STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT:                             return "VK_STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT";
499                 case VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT:                                    return "VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT";
500                 case VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT:                                                             return "VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT";
501                 case VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT:                                                              return "VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT";
502                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT:                             return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT";
503                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR:                                               return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR";
504                 case VK_STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD:                                               return "VK_STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD";
505                 case VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT:                                                                   return "VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT";
506                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD:                                              return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD";
507                 case VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_CAPABILITIES_EXT:                                                              return "VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_CAPABILITIES_EXT";
508                 case VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_CREATE_INFO_EXT:                                               return "VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_CREATE_INFO_EXT";
509                 case VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_CREATE_INFO_EXT:                    return "VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_CREATE_INFO_EXT";
510                 case VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_ADD_INFO_EXT:                               return "VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_ADD_INFO_EXT";
511                 case VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PROFILE_EXT:                                                                   return "VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PROFILE_EXT";
512                 case VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PICTURE_INFO_EXT:                                                              return "VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PICTURE_INFO_EXT";
513                 case VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_DPB_SLOT_INFO_EXT:                                                             return "VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_DPB_SLOT_INFO_EXT";
514                 case VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD:                                    return "VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD";
515                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT:                 return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT";
516                 case VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT:                             return "VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT";
517                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT:                   return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT";
518                 case VK_STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP:                                                                                 return "VK_STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP";
519                 case VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT:                                              return "VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT";
520                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV:                  return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV";
521                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV:                                                 return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV";
522                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV:                                               return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV";
523                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV:                 return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV";
524                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV:                              return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV";
525                 case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV:                return "VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV";
526                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV:                                   return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV";
527                 case VK_STRUCTURE_TYPE_CHECKPOINT_DATA_NV:                                                                                              return "VK_STRUCTURE_TYPE_CHECKPOINT_DATA_NV";
528                 case VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV:                                                   return "VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV";
529                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL:               return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL";
530                 case VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL:                                  return "VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL";
531                 case VK_STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL:                                                   return "VK_STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL";
532                 case VK_STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL:                                                                   return "VK_STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL";
533                 case VK_STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL:                                                    return "VK_STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL";
534                 case VK_STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL:                                                                 return "VK_STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL";
535                 case VK_STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL:                                    return "VK_STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL";
536                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT:                                             return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT";
537                 case VK_STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD:                                             return "VK_STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD";
538                 case VK_STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD:                                    return "VK_STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD";
539                 case VK_STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA:                                                   return "VK_STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA";
540                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES_KHR:                return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES_KHR";
541                 case VK_STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT:                                                                   return "VK_STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT";
542                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT:                               return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT";
543                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT:                             return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT";
544                 case VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT:                                return "VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT";
545                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT:                    return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT";
546                 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";
547                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT:                              return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT";
548                 case VK_STRUCTURE_TYPE_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR:                                               return "VK_STRUCTURE_TYPE_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR";
549                 case VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_STATE_CREATE_INFO_KHR:                    return "VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_STATE_CREATE_INFO_KHR";
550                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHR:                    return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHR";
551                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR:                              return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR";
552                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_KHR:                                               return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_KHR";
553                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD:                                    return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD";
554                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD:                                    return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD";
555                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT:                  return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT";
556                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT:                                    return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT";
557                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT:                                    return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT";
558                 case VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT:                                                               return "VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT";
559                 case VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR:                                                              return "VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR";
560                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV: return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV";
561                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT:                              return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT";
562                 case VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT:                                                   return "VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT";
563                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT:                                                             return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT";
564                 case VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT:                                                                                 return "VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT";
565                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV:                                  return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV";
566                 case VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV:                                                                return "VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV";
567                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV:                                return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV";
568                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV:                             return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV";
569                 case VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV:                                return "VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV";
570                 case VK_STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV:                                                return "VK_STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV";
571                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT:                  return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT";
572                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT:                                 return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT";
573                 case VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT:                                                  return "VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT";
574                 case VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT:                                  return "VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT";
575                 case VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT:                                    return "VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT";
576                 case VK_STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT:                                                                return "VK_STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT";
577                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT:                                 return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT";
578                 case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT:                               return "VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT";
579                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT:                               return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT";
580                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT:                                return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT";
581                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT:                                   return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT";
582                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT:                             return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT";
583                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR:             return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR";
584                 case VK_STRUCTURE_TYPE_PIPELINE_INFO_KHR:                                                                                               return "VK_STRUCTURE_TYPE_PIPELINE_INFO_KHR";
585                 case VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR:                                                              return "VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR";
586                 case VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR:                                                                    return "VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR";
587                 case VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR:                                                               return "VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR";
588                 case VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR:                                 return "VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR";
589                 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";
590                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV:                 return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV";
591                 case VK_STRUCTURE_TYPE_GRAPHICS_SHADER_GROUP_CREATE_INFO_NV:                                                    return "VK_STRUCTURE_TYPE_GRAPHICS_SHADER_GROUP_CREATE_INFO_NV";
592                 case VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV:                                  return "VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV";
593                 case VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV:                                                               return "VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV";
594                 case VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV:                                                 return "VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV";
595                 case VK_STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV:                                                                              return "VK_STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV";
596                 case VK_STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV:                                  return "VK_STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV";
597                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV:                   return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV";
598                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INHERITED_VIEWPORT_SCISSOR_FEATURES_NV:                  return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INHERITED_VIEWPORT_SCISSOR_FEATURES_NV";
599                 case VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_VIEWPORT_SCISSOR_INFO_NV:                             return "VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_VIEWPORT_SCISSOR_INFO_NV";
600                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT:                             return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT";
601                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT:                   return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT";
602                 case VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM:              return "VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM";
603                 case VK_STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM:                                                   return "VK_STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM";
604                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_MEMORY_REPORT_FEATURES_EXT:                               return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_MEMORY_REPORT_FEATURES_EXT";
605                 case VK_STRUCTURE_TYPE_DEVICE_DEVICE_MEMORY_REPORT_CREATE_INFO_EXT:                                             return "VK_STRUCTURE_TYPE_DEVICE_DEVICE_MEMORY_REPORT_CREATE_INFO_EXT";
606                 case VK_STRUCTURE_TYPE_DEVICE_MEMORY_REPORT_CALLBACK_DATA_EXT:                                                  return "VK_STRUCTURE_TYPE_DEVICE_MEMORY_REPORT_CALLBACK_DATA_EXT";
607                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT:                                               return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT";
608                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT:                                             return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT";
609                 case VK_STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT:                                             return "VK_STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT";
610                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT:                              return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT";
611                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT:                                return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT";
612                 case VK_STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR:                                                                return "VK_STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR";
613                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT:                                               return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT";
614                 case VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO_EXT:                                                             return "VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO_EXT";
615                 case VK_STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO_EXT:                                                               return "VK_STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO_EXT";
616                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT:    return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT";
617                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV:                                  return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV";
618                 case VK_STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV:                                                return "VK_STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV";
619                 case VK_STRUCTURE_TYPE_MEMORY_BARRIER_2_KHR:                                                                                    return "VK_STRUCTURE_TYPE_MEMORY_BARRIER_2_KHR";
620                 case VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER_2_KHR:                                                                             return "VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER_2_KHR";
621                 case VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2_KHR:                                                                              return "VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2_KHR";
622                 case VK_STRUCTURE_TYPE_DEPENDENCY_INFO_KHR:                                                                                             return "VK_STRUCTURE_TYPE_DEPENDENCY_INFO_KHR";
623                 case VK_STRUCTURE_TYPE_SUBMIT_INFO_2_KHR:                                                                                               return "VK_STRUCTURE_TYPE_SUBMIT_INFO_2_KHR";
624                 case VK_STRUCTURE_TYPE_SEMAPHORE_SUBMIT_INFO_KHR:                                                                               return "VK_STRUCTURE_TYPE_SEMAPHORE_SUBMIT_INFO_KHR";
625                 case VK_STRUCTURE_TYPE_COMMAND_BUFFER_SUBMIT_INFO_KHR:                                                                  return "VK_STRUCTURE_TYPE_COMMAND_BUFFER_SUBMIT_INFO_KHR";
626                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES_KHR:                                  return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES_KHR";
627                 case VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV:                                                 return "VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV";
628                 case VK_STRUCTURE_TYPE_CHECKPOINT_DATA_2_NV:                                                                                    return "VK_STRUCTURE_TYPE_CHECKPOINT_DATA_2_NV";
629                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES_KHR:   return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES_KHR";
630                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_PROPERTIES_NV:               return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_PROPERTIES_NV";
631                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_FEATURES_NV:                 return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_FEATURES_NV";
632                 case VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_ENUM_STATE_CREATE_INFO_NV:                return "VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_ENUM_STATE_CREATE_INFO_NV";
633                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT:                  return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT";
634                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT:                             return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT";
635                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT:                   return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT";
636                 case VK_STRUCTURE_TYPE_COPY_COMMAND_TRANSFORM_INFO_QCOM:                                                                return "VK_STRUCTURE_TYPE_COPY_COMMAND_TRANSFORM_INFO_QCOM";
637                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES_EXT:                                   return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES_EXT";
638                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_FEATURES_KHR:   return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_FEATURES_KHR";
639                 case VK_STRUCTURE_TYPE_COPY_BUFFER_INFO_2_KHR:                                                                                  return "VK_STRUCTURE_TYPE_COPY_BUFFER_INFO_2_KHR";
640                 case VK_STRUCTURE_TYPE_COPY_IMAGE_INFO_2_KHR:                                                                                   return "VK_STRUCTURE_TYPE_COPY_IMAGE_INFO_2_KHR";
641                 case VK_STRUCTURE_TYPE_COPY_BUFFER_TO_IMAGE_INFO_2_KHR:                                                                 return "VK_STRUCTURE_TYPE_COPY_BUFFER_TO_IMAGE_INFO_2_KHR";
642                 case VK_STRUCTURE_TYPE_COPY_IMAGE_TO_BUFFER_INFO_2_KHR:                                                                 return "VK_STRUCTURE_TYPE_COPY_IMAGE_TO_BUFFER_INFO_2_KHR";
643                 case VK_STRUCTURE_TYPE_BLIT_IMAGE_INFO_2_KHR:                                                                                   return "VK_STRUCTURE_TYPE_BLIT_IMAGE_INFO_2_KHR";
644                 case VK_STRUCTURE_TYPE_RESOLVE_IMAGE_INFO_2_KHR:                                                                                return "VK_STRUCTURE_TYPE_RESOLVE_IMAGE_INFO_2_KHR";
645                 case VK_STRUCTURE_TYPE_BUFFER_COPY_2_KHR:                                                                                               return "VK_STRUCTURE_TYPE_BUFFER_COPY_2_KHR";
646                 case VK_STRUCTURE_TYPE_IMAGE_COPY_2_KHR:                                                                                                return "VK_STRUCTURE_TYPE_IMAGE_COPY_2_KHR";
647                 case VK_STRUCTURE_TYPE_IMAGE_BLIT_2_KHR:                                                                                                return "VK_STRUCTURE_TYPE_IMAGE_BLIT_2_KHR";
648                 case VK_STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2_KHR:                                                                                 return "VK_STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2_KHR";
649                 case VK_STRUCTURE_TYPE_IMAGE_RESOLVE_2_KHR:                                                                                             return "VK_STRUCTURE_TYPE_IMAGE_RESOLVE_2_KHR";
650                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT:                                               return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT";
651                 case VK_STRUCTURE_TYPE_DIRECTFB_SURFACE_CREATE_INFO_EXT:                                                                return "VK_STRUCTURE_TYPE_DIRECTFB_SURFACE_CREATE_INFO_EXT";
652                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_VALVE:                  return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_VALVE";
653                 case VK_STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_VALVE:                                               return "VK_STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_VALVE";
654                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_INPUT_DYNAMIC_STATE_FEATURES_EXT:                 return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_INPUT_DYNAMIC_STATE_FEATURES_EXT";
655                 case VK_STRUCTURE_TYPE_VERTEX_INPUT_BINDING_DESCRIPTION_2_EXT:                                                  return "VK_STRUCTURE_TYPE_VERTEX_INPUT_BINDING_DESCRIPTION_2_EXT";
656                 case VK_STRUCTURE_TYPE_VERTEX_INPUT_ATTRIBUTE_DESCRIPTION_2_EXT:                                                return "VK_STRUCTURE_TYPE_VERTEX_INPUT_ATTRIBUTE_DESCRIPTION_2_EXT";
657                 case VK_STRUCTURE_TYPE_IMPORT_MEMORY_ZIRCON_HANDLE_INFO_FUCHSIA:                                                return "VK_STRUCTURE_TYPE_IMPORT_MEMORY_ZIRCON_HANDLE_INFO_FUCHSIA";
658                 case VK_STRUCTURE_TYPE_MEMORY_ZIRCON_HANDLE_PROPERTIES_FUCHSIA:                                                 return "VK_STRUCTURE_TYPE_MEMORY_ZIRCON_HANDLE_PROPERTIES_FUCHSIA";
659                 case VK_STRUCTURE_TYPE_MEMORY_GET_ZIRCON_HANDLE_INFO_FUCHSIA:                                                   return "VK_STRUCTURE_TYPE_MEMORY_GET_ZIRCON_HANDLE_INFO_FUCHSIA";
660                 case VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_ZIRCON_HANDLE_INFO_FUCHSIA:                                             return "VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_ZIRCON_HANDLE_INFO_FUCHSIA";
661                 case VK_STRUCTURE_TYPE_SEMAPHORE_GET_ZIRCON_HANDLE_INFO_FUCHSIA:                                                return "VK_STRUCTURE_TYPE_SEMAPHORE_GET_ZIRCON_HANDLE_INFO_FUCHSIA";
662                 case VK_STRUCTURE_TYPE_SCREEN_SURFACE_CREATE_INFO_QNX:                                                                  return "VK_STRUCTURE_TYPE_SCREEN_SURFACE_CREATE_INFO_QNX";
663                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT:                                 return "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT";
664                 case VK_STRUCTURE_TYPE_PIPELINE_COLOR_WRITE_CREATE_INFO_EXT:                                                    return "VK_STRUCTURE_TYPE_PIPELINE_COLOR_WRITE_CREATE_INFO_EXT";
665                 case VK_STRUCTURE_TYPE_MAX_ENUM:                                                                                                                return "VK_STRUCTURE_TYPE_MAX_ENUM";
666                 default:                                                                                                                                                                return DE_NULL;
667         }
668 }
669
670 const char* getImageLayoutName (VkImageLayout value)
671 {
672         switch (value)
673         {
674                 case VK_IMAGE_LAYOUT_UNDEFINED:                                                                         return "VK_IMAGE_LAYOUT_UNDEFINED";
675                 case VK_IMAGE_LAYOUT_GENERAL:                                                                           return "VK_IMAGE_LAYOUT_GENERAL";
676                 case VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL:                                          return "VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL";
677                 case VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL:                          return "VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL";
678                 case VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL:                           return "VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL";
679                 case VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL:                                          return "VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL";
680                 case VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL:                                                      return "VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL";
681                 case VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL:                                                      return "VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL";
682                 case VK_IMAGE_LAYOUT_PREINITIALIZED:                                                            return "VK_IMAGE_LAYOUT_PREINITIALIZED";
683                 case VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL:        return "VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL";
684                 case VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL:        return "VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL";
685                 case VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL:                                          return "VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL";
686                 case VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL:                                           return "VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL";
687                 case VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL:                                        return "VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL";
688                 case VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL:                                         return "VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL";
689                 case VK_IMAGE_LAYOUT_PRESENT_SRC_KHR:                                                           return "VK_IMAGE_LAYOUT_PRESENT_SRC_KHR";
690                 case VK_IMAGE_LAYOUT_VIDEO_DECODE_DST_KHR:                                                      return "VK_IMAGE_LAYOUT_VIDEO_DECODE_DST_KHR";
691                 case VK_IMAGE_LAYOUT_VIDEO_DECODE_SRC_KHR:                                                      return "VK_IMAGE_LAYOUT_VIDEO_DECODE_SRC_KHR";
692                 case VK_IMAGE_LAYOUT_VIDEO_DECODE_DPB_KHR:                                                      return "VK_IMAGE_LAYOUT_VIDEO_DECODE_DPB_KHR";
693                 case VK_IMAGE_LAYOUT_VIDEO_ENCODE_DST_KHR:                                                      return "VK_IMAGE_LAYOUT_VIDEO_ENCODE_DST_KHR";
694                 case VK_IMAGE_LAYOUT_VIDEO_ENCODE_SRC_KHR:                                                      return "VK_IMAGE_LAYOUT_VIDEO_ENCODE_SRC_KHR";
695                 case VK_IMAGE_LAYOUT_VIDEO_ENCODE_DPB_KHR:                                                      return "VK_IMAGE_LAYOUT_VIDEO_ENCODE_DPB_KHR";
696                 case VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR:                                                        return "VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR";
697                 case VK_IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV:                                           return "VK_IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV";
698                 case VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT:                          return "VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT";
699                 case VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR:                                                     return "VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR";
700                 case VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL_KHR:                                            return "VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL_KHR";
701                 case VK_IMAGE_LAYOUT_MAX_ENUM:                                                                          return "VK_IMAGE_LAYOUT_MAX_ENUM";
702                 default:                                                                                                                        return DE_NULL;
703         }
704 }
705
706 const char* getObjectTypeName (VkObjectType value)
707 {
708         switch (value)
709         {
710                 case VK_OBJECT_TYPE_UNKNOWN:                                                    return "VK_OBJECT_TYPE_UNKNOWN";
711                 case VK_OBJECT_TYPE_INSTANCE:                                                   return "VK_OBJECT_TYPE_INSTANCE";
712                 case VK_OBJECT_TYPE_PHYSICAL_DEVICE:                                    return "VK_OBJECT_TYPE_PHYSICAL_DEVICE";
713                 case VK_OBJECT_TYPE_DEVICE:                                                             return "VK_OBJECT_TYPE_DEVICE";
714                 case VK_OBJECT_TYPE_QUEUE:                                                              return "VK_OBJECT_TYPE_QUEUE";
715                 case VK_OBJECT_TYPE_SEMAPHORE:                                                  return "VK_OBJECT_TYPE_SEMAPHORE";
716                 case VK_OBJECT_TYPE_COMMAND_BUFFER:                                             return "VK_OBJECT_TYPE_COMMAND_BUFFER";
717                 case VK_OBJECT_TYPE_FENCE:                                                              return "VK_OBJECT_TYPE_FENCE";
718                 case VK_OBJECT_TYPE_DEVICE_MEMORY:                                              return "VK_OBJECT_TYPE_DEVICE_MEMORY";
719                 case VK_OBJECT_TYPE_BUFFER:                                                             return "VK_OBJECT_TYPE_BUFFER";
720                 case VK_OBJECT_TYPE_IMAGE:                                                              return "VK_OBJECT_TYPE_IMAGE";
721                 case VK_OBJECT_TYPE_EVENT:                                                              return "VK_OBJECT_TYPE_EVENT";
722                 case VK_OBJECT_TYPE_QUERY_POOL:                                                 return "VK_OBJECT_TYPE_QUERY_POOL";
723                 case VK_OBJECT_TYPE_BUFFER_VIEW:                                                return "VK_OBJECT_TYPE_BUFFER_VIEW";
724                 case VK_OBJECT_TYPE_IMAGE_VIEW:                                                 return "VK_OBJECT_TYPE_IMAGE_VIEW";
725                 case VK_OBJECT_TYPE_SHADER_MODULE:                                              return "VK_OBJECT_TYPE_SHADER_MODULE";
726                 case VK_OBJECT_TYPE_PIPELINE_CACHE:                                             return "VK_OBJECT_TYPE_PIPELINE_CACHE";
727                 case VK_OBJECT_TYPE_PIPELINE_LAYOUT:                                    return "VK_OBJECT_TYPE_PIPELINE_LAYOUT";
728                 case VK_OBJECT_TYPE_RENDER_PASS:                                                return "VK_OBJECT_TYPE_RENDER_PASS";
729                 case VK_OBJECT_TYPE_PIPELINE:                                                   return "VK_OBJECT_TYPE_PIPELINE";
730                 case VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT:                              return "VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT";
731                 case VK_OBJECT_TYPE_SAMPLER:                                                    return "VK_OBJECT_TYPE_SAMPLER";
732                 case VK_OBJECT_TYPE_DESCRIPTOR_POOL:                                    return "VK_OBJECT_TYPE_DESCRIPTOR_POOL";
733                 case VK_OBJECT_TYPE_DESCRIPTOR_SET:                                             return "VK_OBJECT_TYPE_DESCRIPTOR_SET";
734                 case VK_OBJECT_TYPE_FRAMEBUFFER:                                                return "VK_OBJECT_TYPE_FRAMEBUFFER";
735                 case VK_OBJECT_TYPE_COMMAND_POOL:                                               return "VK_OBJECT_TYPE_COMMAND_POOL";
736                 case VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION:                   return "VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION";
737                 case VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE:                 return "VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE";
738                 case VK_OBJECT_TYPE_SURFACE_KHR:                                                return "VK_OBJECT_TYPE_SURFACE_KHR";
739                 case VK_OBJECT_TYPE_SWAPCHAIN_KHR:                                              return "VK_OBJECT_TYPE_SWAPCHAIN_KHR";
740                 case VK_OBJECT_TYPE_DISPLAY_KHR:                                                return "VK_OBJECT_TYPE_DISPLAY_KHR";
741                 case VK_OBJECT_TYPE_DISPLAY_MODE_KHR:                                   return "VK_OBJECT_TYPE_DISPLAY_MODE_KHR";
742                 case VK_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT:                  return "VK_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT";
743                 case VK_OBJECT_TYPE_VIDEO_SESSION_KHR:                                  return "VK_OBJECT_TYPE_VIDEO_SESSION_KHR";
744                 case VK_OBJECT_TYPE_VIDEO_SESSION_PARAMETERS_KHR:               return "VK_OBJECT_TYPE_VIDEO_SESSION_PARAMETERS_KHR";
745                 case VK_OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT:                  return "VK_OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT";
746                 case VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR:                 return "VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR";
747                 case VK_OBJECT_TYPE_VALIDATION_CACHE_EXT:                               return "VK_OBJECT_TYPE_VALIDATION_CACHE_EXT";
748                 case VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV:                  return "VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV";
749                 case VK_OBJECT_TYPE_PERFORMANCE_CONFIGURATION_INTEL:    return "VK_OBJECT_TYPE_PERFORMANCE_CONFIGURATION_INTEL";
750                 case VK_OBJECT_TYPE_DEFERRED_OPERATION_KHR:                             return "VK_OBJECT_TYPE_DEFERRED_OPERATION_KHR";
751                 case VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV:                return "VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV";
752                 case VK_OBJECT_TYPE_PRIVATE_DATA_SLOT_EXT:                              return "VK_OBJECT_TYPE_PRIVATE_DATA_SLOT_EXT";
753                 case VK_OBJECT_TYPE_MAX_ENUM:                                                   return "VK_OBJECT_TYPE_MAX_ENUM";
754                 default:                                                                                                return DE_NULL;
755         }
756 }
757
758 const char* getVendorIdName (VkVendorId value)
759 {
760         switch (value)
761         {
762                 case VK_VENDOR_ID_VIV:          return "VK_VENDOR_ID_VIV";
763                 case VK_VENDOR_ID_VSI:          return "VK_VENDOR_ID_VSI";
764                 case VK_VENDOR_ID_KAZAN:        return "VK_VENDOR_ID_KAZAN";
765                 case VK_VENDOR_ID_CODEPLAY:     return "VK_VENDOR_ID_CODEPLAY";
766                 case VK_VENDOR_ID_MESA:         return "VK_VENDOR_ID_MESA";
767                 case VK_VENDOR_ID_POCL:         return "VK_VENDOR_ID_POCL";
768                 case VK_VENDOR_ID_MAX_ENUM:     return "VK_VENDOR_ID_MAX_ENUM";
769                 default:                                        return DE_NULL;
770         }
771 }
772
773 const char* getPipelineCacheHeaderVersionName (VkPipelineCacheHeaderVersion value)
774 {
775         switch (value)
776         {
777                 case VK_PIPELINE_CACHE_HEADER_VERSION_ONE:              return "VK_PIPELINE_CACHE_HEADER_VERSION_ONE";
778                 case VK_PIPELINE_CACHE_HEADER_VERSION_MAX_ENUM: return "VK_PIPELINE_CACHE_HEADER_VERSION_MAX_ENUM";
779                 default:                                                                                return DE_NULL;
780         }
781 }
782
783 const char* getSystemAllocationScopeName (VkSystemAllocationScope value)
784 {
785         switch (value)
786         {
787                 case VK_SYSTEM_ALLOCATION_SCOPE_COMMAND:        return "VK_SYSTEM_ALLOCATION_SCOPE_COMMAND";
788                 case VK_SYSTEM_ALLOCATION_SCOPE_OBJECT:         return "VK_SYSTEM_ALLOCATION_SCOPE_OBJECT";
789                 case VK_SYSTEM_ALLOCATION_SCOPE_CACHE:          return "VK_SYSTEM_ALLOCATION_SCOPE_CACHE";
790                 case VK_SYSTEM_ALLOCATION_SCOPE_DEVICE:         return "VK_SYSTEM_ALLOCATION_SCOPE_DEVICE";
791                 case VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE:       return "VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE";
792                 case VK_SYSTEM_ALLOCATION_SCOPE_MAX_ENUM:       return "VK_SYSTEM_ALLOCATION_SCOPE_MAX_ENUM";
793                 default:                                                                        return DE_NULL;
794         }
795 }
796
797 const char* getInternalAllocationTypeName (VkInternalAllocationType value)
798 {
799         switch (value)
800         {
801                 case VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE:    return "VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE";
802                 case VK_INTERNAL_ALLOCATION_TYPE_MAX_ENUM:              return "VK_INTERNAL_ALLOCATION_TYPE_MAX_ENUM";
803                 default:                                                                                return DE_NULL;
804         }
805 }
806
807 const char* getFormatName (VkFormat value)
808 {
809         switch (value)
810         {
811                 case VK_FORMAT_UNDEFINED:                                                                               return "VK_FORMAT_UNDEFINED";
812                 case VK_FORMAT_R4G4_UNORM_PACK8:                                                                return "VK_FORMAT_R4G4_UNORM_PACK8";
813                 case VK_FORMAT_R4G4B4A4_UNORM_PACK16:                                                   return "VK_FORMAT_R4G4B4A4_UNORM_PACK16";
814                 case VK_FORMAT_B4G4R4A4_UNORM_PACK16:                                                   return "VK_FORMAT_B4G4R4A4_UNORM_PACK16";
815                 case VK_FORMAT_R5G6B5_UNORM_PACK16:                                                             return "VK_FORMAT_R5G6B5_UNORM_PACK16";
816                 case VK_FORMAT_B5G6R5_UNORM_PACK16:                                                             return "VK_FORMAT_B5G6R5_UNORM_PACK16";
817                 case VK_FORMAT_R5G5B5A1_UNORM_PACK16:                                                   return "VK_FORMAT_R5G5B5A1_UNORM_PACK16";
818                 case VK_FORMAT_B5G5R5A1_UNORM_PACK16:                                                   return "VK_FORMAT_B5G5R5A1_UNORM_PACK16";
819                 case VK_FORMAT_A1R5G5B5_UNORM_PACK16:                                                   return "VK_FORMAT_A1R5G5B5_UNORM_PACK16";
820                 case VK_FORMAT_R8_UNORM:                                                                                return "VK_FORMAT_R8_UNORM";
821                 case VK_FORMAT_R8_SNORM:                                                                                return "VK_FORMAT_R8_SNORM";
822                 case VK_FORMAT_R8_USCALED:                                                                              return "VK_FORMAT_R8_USCALED";
823                 case VK_FORMAT_R8_SSCALED:                                                                              return "VK_FORMAT_R8_SSCALED";
824                 case VK_FORMAT_R8_UINT:                                                                                 return "VK_FORMAT_R8_UINT";
825                 case VK_FORMAT_R8_SINT:                                                                                 return "VK_FORMAT_R8_SINT";
826                 case VK_FORMAT_R8_SRGB:                                                                                 return "VK_FORMAT_R8_SRGB";
827                 case VK_FORMAT_R8G8_UNORM:                                                                              return "VK_FORMAT_R8G8_UNORM";
828                 case VK_FORMAT_R8G8_SNORM:                                                                              return "VK_FORMAT_R8G8_SNORM";
829                 case VK_FORMAT_R8G8_USCALED:                                                                    return "VK_FORMAT_R8G8_USCALED";
830                 case VK_FORMAT_R8G8_SSCALED:                                                                    return "VK_FORMAT_R8G8_SSCALED";
831                 case VK_FORMAT_R8G8_UINT:                                                                               return "VK_FORMAT_R8G8_UINT";
832                 case VK_FORMAT_R8G8_SINT:                                                                               return "VK_FORMAT_R8G8_SINT";
833                 case VK_FORMAT_R8G8_SRGB:                                                                               return "VK_FORMAT_R8G8_SRGB";
834                 case VK_FORMAT_R8G8B8_UNORM:                                                                    return "VK_FORMAT_R8G8B8_UNORM";
835                 case VK_FORMAT_R8G8B8_SNORM:                                                                    return "VK_FORMAT_R8G8B8_SNORM";
836                 case VK_FORMAT_R8G8B8_USCALED:                                                                  return "VK_FORMAT_R8G8B8_USCALED";
837                 case VK_FORMAT_R8G8B8_SSCALED:                                                                  return "VK_FORMAT_R8G8B8_SSCALED";
838                 case VK_FORMAT_R8G8B8_UINT:                                                                             return "VK_FORMAT_R8G8B8_UINT";
839                 case VK_FORMAT_R8G8B8_SINT:                                                                             return "VK_FORMAT_R8G8B8_SINT";
840                 case VK_FORMAT_R8G8B8_SRGB:                                                                             return "VK_FORMAT_R8G8B8_SRGB";
841                 case VK_FORMAT_B8G8R8_UNORM:                                                                    return "VK_FORMAT_B8G8R8_UNORM";
842                 case VK_FORMAT_B8G8R8_SNORM:                                                                    return "VK_FORMAT_B8G8R8_SNORM";
843                 case VK_FORMAT_B8G8R8_USCALED:                                                                  return "VK_FORMAT_B8G8R8_USCALED";
844                 case VK_FORMAT_B8G8R8_SSCALED:                                                                  return "VK_FORMAT_B8G8R8_SSCALED";
845                 case VK_FORMAT_B8G8R8_UINT:                                                                             return "VK_FORMAT_B8G8R8_UINT";
846                 case VK_FORMAT_B8G8R8_SINT:                                                                             return "VK_FORMAT_B8G8R8_SINT";
847                 case VK_FORMAT_B8G8R8_SRGB:                                                                             return "VK_FORMAT_B8G8R8_SRGB";
848                 case VK_FORMAT_R8G8B8A8_UNORM:                                                                  return "VK_FORMAT_R8G8B8A8_UNORM";
849                 case VK_FORMAT_R8G8B8A8_SNORM:                                                                  return "VK_FORMAT_R8G8B8A8_SNORM";
850                 case VK_FORMAT_R8G8B8A8_USCALED:                                                                return "VK_FORMAT_R8G8B8A8_USCALED";
851                 case VK_FORMAT_R8G8B8A8_SSCALED:                                                                return "VK_FORMAT_R8G8B8A8_SSCALED";
852                 case VK_FORMAT_R8G8B8A8_UINT:                                                                   return "VK_FORMAT_R8G8B8A8_UINT";
853                 case VK_FORMAT_R8G8B8A8_SINT:                                                                   return "VK_FORMAT_R8G8B8A8_SINT";
854                 case VK_FORMAT_R8G8B8A8_SRGB:                                                                   return "VK_FORMAT_R8G8B8A8_SRGB";
855                 case VK_FORMAT_B8G8R8A8_UNORM:                                                                  return "VK_FORMAT_B8G8R8A8_UNORM";
856                 case VK_FORMAT_B8G8R8A8_SNORM:                                                                  return "VK_FORMAT_B8G8R8A8_SNORM";
857                 case VK_FORMAT_B8G8R8A8_USCALED:                                                                return "VK_FORMAT_B8G8R8A8_USCALED";
858                 case VK_FORMAT_B8G8R8A8_SSCALED:                                                                return "VK_FORMAT_B8G8R8A8_SSCALED";
859                 case VK_FORMAT_B8G8R8A8_UINT:                                                                   return "VK_FORMAT_B8G8R8A8_UINT";
860                 case VK_FORMAT_B8G8R8A8_SINT:                                                                   return "VK_FORMAT_B8G8R8A8_SINT";
861                 case VK_FORMAT_B8G8R8A8_SRGB:                                                                   return "VK_FORMAT_B8G8R8A8_SRGB";
862                 case VK_FORMAT_A8B8G8R8_UNORM_PACK32:                                                   return "VK_FORMAT_A8B8G8R8_UNORM_PACK32";
863                 case VK_FORMAT_A8B8G8R8_SNORM_PACK32:                                                   return "VK_FORMAT_A8B8G8R8_SNORM_PACK32";
864                 case VK_FORMAT_A8B8G8R8_USCALED_PACK32:                                                 return "VK_FORMAT_A8B8G8R8_USCALED_PACK32";
865                 case VK_FORMAT_A8B8G8R8_SSCALED_PACK32:                                                 return "VK_FORMAT_A8B8G8R8_SSCALED_PACK32";
866                 case VK_FORMAT_A8B8G8R8_UINT_PACK32:                                                    return "VK_FORMAT_A8B8G8R8_UINT_PACK32";
867                 case VK_FORMAT_A8B8G8R8_SINT_PACK32:                                                    return "VK_FORMAT_A8B8G8R8_SINT_PACK32";
868                 case VK_FORMAT_A8B8G8R8_SRGB_PACK32:                                                    return "VK_FORMAT_A8B8G8R8_SRGB_PACK32";
869                 case VK_FORMAT_A2R10G10B10_UNORM_PACK32:                                                return "VK_FORMAT_A2R10G10B10_UNORM_PACK32";
870                 case VK_FORMAT_A2R10G10B10_SNORM_PACK32:                                                return "VK_FORMAT_A2R10G10B10_SNORM_PACK32";
871                 case VK_FORMAT_A2R10G10B10_USCALED_PACK32:                                              return "VK_FORMAT_A2R10G10B10_USCALED_PACK32";
872                 case VK_FORMAT_A2R10G10B10_SSCALED_PACK32:                                              return "VK_FORMAT_A2R10G10B10_SSCALED_PACK32";
873                 case VK_FORMAT_A2R10G10B10_UINT_PACK32:                                                 return "VK_FORMAT_A2R10G10B10_UINT_PACK32";
874                 case VK_FORMAT_A2R10G10B10_SINT_PACK32:                                                 return "VK_FORMAT_A2R10G10B10_SINT_PACK32";
875                 case VK_FORMAT_A2B10G10R10_UNORM_PACK32:                                                return "VK_FORMAT_A2B10G10R10_UNORM_PACK32";
876                 case VK_FORMAT_A2B10G10R10_SNORM_PACK32:                                                return "VK_FORMAT_A2B10G10R10_SNORM_PACK32";
877                 case VK_FORMAT_A2B10G10R10_USCALED_PACK32:                                              return "VK_FORMAT_A2B10G10R10_USCALED_PACK32";
878                 case VK_FORMAT_A2B10G10R10_SSCALED_PACK32:                                              return "VK_FORMAT_A2B10G10R10_SSCALED_PACK32";
879                 case VK_FORMAT_A2B10G10R10_UINT_PACK32:                                                 return "VK_FORMAT_A2B10G10R10_UINT_PACK32";
880                 case VK_FORMAT_A2B10G10R10_SINT_PACK32:                                                 return "VK_FORMAT_A2B10G10R10_SINT_PACK32";
881                 case VK_FORMAT_R16_UNORM:                                                                               return "VK_FORMAT_R16_UNORM";
882                 case VK_FORMAT_R16_SNORM:                                                                               return "VK_FORMAT_R16_SNORM";
883                 case VK_FORMAT_R16_USCALED:                                                                             return "VK_FORMAT_R16_USCALED";
884                 case VK_FORMAT_R16_SSCALED:                                                                             return "VK_FORMAT_R16_SSCALED";
885                 case VK_FORMAT_R16_UINT:                                                                                return "VK_FORMAT_R16_UINT";
886                 case VK_FORMAT_R16_SINT:                                                                                return "VK_FORMAT_R16_SINT";
887                 case VK_FORMAT_R16_SFLOAT:                                                                              return "VK_FORMAT_R16_SFLOAT";
888                 case VK_FORMAT_R16G16_UNORM:                                                                    return "VK_FORMAT_R16G16_UNORM";
889                 case VK_FORMAT_R16G16_SNORM:                                                                    return "VK_FORMAT_R16G16_SNORM";
890                 case VK_FORMAT_R16G16_USCALED:                                                                  return "VK_FORMAT_R16G16_USCALED";
891                 case VK_FORMAT_R16G16_SSCALED:                                                                  return "VK_FORMAT_R16G16_SSCALED";
892                 case VK_FORMAT_R16G16_UINT:                                                                             return "VK_FORMAT_R16G16_UINT";
893                 case VK_FORMAT_R16G16_SINT:                                                                             return "VK_FORMAT_R16G16_SINT";
894                 case VK_FORMAT_R16G16_SFLOAT:                                                                   return "VK_FORMAT_R16G16_SFLOAT";
895                 case VK_FORMAT_R16G16B16_UNORM:                                                                 return "VK_FORMAT_R16G16B16_UNORM";
896                 case VK_FORMAT_R16G16B16_SNORM:                                                                 return "VK_FORMAT_R16G16B16_SNORM";
897                 case VK_FORMAT_R16G16B16_USCALED:                                                               return "VK_FORMAT_R16G16B16_USCALED";
898                 case VK_FORMAT_R16G16B16_SSCALED:                                                               return "VK_FORMAT_R16G16B16_SSCALED";
899                 case VK_FORMAT_R16G16B16_UINT:                                                                  return "VK_FORMAT_R16G16B16_UINT";
900                 case VK_FORMAT_R16G16B16_SINT:                                                                  return "VK_FORMAT_R16G16B16_SINT";
901                 case VK_FORMAT_R16G16B16_SFLOAT:                                                                return "VK_FORMAT_R16G16B16_SFLOAT";
902                 case VK_FORMAT_R16G16B16A16_UNORM:                                                              return "VK_FORMAT_R16G16B16A16_UNORM";
903                 case VK_FORMAT_R16G16B16A16_SNORM:                                                              return "VK_FORMAT_R16G16B16A16_SNORM";
904                 case VK_FORMAT_R16G16B16A16_USCALED:                                                    return "VK_FORMAT_R16G16B16A16_USCALED";
905                 case VK_FORMAT_R16G16B16A16_SSCALED:                                                    return "VK_FORMAT_R16G16B16A16_SSCALED";
906                 case VK_FORMAT_R16G16B16A16_UINT:                                                               return "VK_FORMAT_R16G16B16A16_UINT";
907                 case VK_FORMAT_R16G16B16A16_SINT:                                                               return "VK_FORMAT_R16G16B16A16_SINT";
908                 case VK_FORMAT_R16G16B16A16_SFLOAT:                                                             return "VK_FORMAT_R16G16B16A16_SFLOAT";
909                 case VK_FORMAT_R32_UINT:                                                                                return "VK_FORMAT_R32_UINT";
910                 case VK_FORMAT_R32_SINT:                                                                                return "VK_FORMAT_R32_SINT";
911                 case VK_FORMAT_R32_SFLOAT:                                                                              return "VK_FORMAT_R32_SFLOAT";
912                 case VK_FORMAT_R32G32_UINT:                                                                             return "VK_FORMAT_R32G32_UINT";
913                 case VK_FORMAT_R32G32_SINT:                                                                             return "VK_FORMAT_R32G32_SINT";
914                 case VK_FORMAT_R32G32_SFLOAT:                                                                   return "VK_FORMAT_R32G32_SFLOAT";
915                 case VK_FORMAT_R32G32B32_UINT:                                                                  return "VK_FORMAT_R32G32B32_UINT";
916                 case VK_FORMAT_R32G32B32_SINT:                                                                  return "VK_FORMAT_R32G32B32_SINT";
917                 case VK_FORMAT_R32G32B32_SFLOAT:                                                                return "VK_FORMAT_R32G32B32_SFLOAT";
918                 case VK_FORMAT_R32G32B32A32_UINT:                                                               return "VK_FORMAT_R32G32B32A32_UINT";
919                 case VK_FORMAT_R32G32B32A32_SINT:                                                               return "VK_FORMAT_R32G32B32A32_SINT";
920                 case VK_FORMAT_R32G32B32A32_SFLOAT:                                                             return "VK_FORMAT_R32G32B32A32_SFLOAT";
921                 case VK_FORMAT_R64_UINT:                                                                                return "VK_FORMAT_R64_UINT";
922                 case VK_FORMAT_R64_SINT:                                                                                return "VK_FORMAT_R64_SINT";
923                 case VK_FORMAT_R64_SFLOAT:                                                                              return "VK_FORMAT_R64_SFLOAT";
924                 case VK_FORMAT_R64G64_UINT:                                                                             return "VK_FORMAT_R64G64_UINT";
925                 case VK_FORMAT_R64G64_SINT:                                                                             return "VK_FORMAT_R64G64_SINT";
926                 case VK_FORMAT_R64G64_SFLOAT:                                                                   return "VK_FORMAT_R64G64_SFLOAT";
927                 case VK_FORMAT_R64G64B64_UINT:                                                                  return "VK_FORMAT_R64G64B64_UINT";
928                 case VK_FORMAT_R64G64B64_SINT:                                                                  return "VK_FORMAT_R64G64B64_SINT";
929                 case VK_FORMAT_R64G64B64_SFLOAT:                                                                return "VK_FORMAT_R64G64B64_SFLOAT";
930                 case VK_FORMAT_R64G64B64A64_UINT:                                                               return "VK_FORMAT_R64G64B64A64_UINT";
931                 case VK_FORMAT_R64G64B64A64_SINT:                                                               return "VK_FORMAT_R64G64B64A64_SINT";
932                 case VK_FORMAT_R64G64B64A64_SFLOAT:                                                             return "VK_FORMAT_R64G64B64A64_SFLOAT";
933                 case VK_FORMAT_B10G11R11_UFLOAT_PACK32:                                                 return "VK_FORMAT_B10G11R11_UFLOAT_PACK32";
934                 case VK_FORMAT_E5B9G9R9_UFLOAT_PACK32:                                                  return "VK_FORMAT_E5B9G9R9_UFLOAT_PACK32";
935                 case VK_FORMAT_D16_UNORM:                                                                               return "VK_FORMAT_D16_UNORM";
936                 case VK_FORMAT_X8_D24_UNORM_PACK32:                                                             return "VK_FORMAT_X8_D24_UNORM_PACK32";
937                 case VK_FORMAT_D32_SFLOAT:                                                                              return "VK_FORMAT_D32_SFLOAT";
938                 case VK_FORMAT_S8_UINT:                                                                                 return "VK_FORMAT_S8_UINT";
939                 case VK_FORMAT_D16_UNORM_S8_UINT:                                                               return "VK_FORMAT_D16_UNORM_S8_UINT";
940                 case VK_FORMAT_D24_UNORM_S8_UINT:                                                               return "VK_FORMAT_D24_UNORM_S8_UINT";
941                 case VK_FORMAT_D32_SFLOAT_S8_UINT:                                                              return "VK_FORMAT_D32_SFLOAT_S8_UINT";
942                 case VK_FORMAT_BC1_RGB_UNORM_BLOCK:                                                             return "VK_FORMAT_BC1_RGB_UNORM_BLOCK";
943                 case VK_FORMAT_BC1_RGB_SRGB_BLOCK:                                                              return "VK_FORMAT_BC1_RGB_SRGB_BLOCK";
944                 case VK_FORMAT_BC1_RGBA_UNORM_BLOCK:                                                    return "VK_FORMAT_BC1_RGBA_UNORM_BLOCK";
945                 case VK_FORMAT_BC1_RGBA_SRGB_BLOCK:                                                             return "VK_FORMAT_BC1_RGBA_SRGB_BLOCK";
946                 case VK_FORMAT_BC2_UNORM_BLOCK:                                                                 return "VK_FORMAT_BC2_UNORM_BLOCK";
947                 case VK_FORMAT_BC2_SRGB_BLOCK:                                                                  return "VK_FORMAT_BC2_SRGB_BLOCK";
948                 case VK_FORMAT_BC3_UNORM_BLOCK:                                                                 return "VK_FORMAT_BC3_UNORM_BLOCK";
949                 case VK_FORMAT_BC3_SRGB_BLOCK:                                                                  return "VK_FORMAT_BC3_SRGB_BLOCK";
950                 case VK_FORMAT_BC4_UNORM_BLOCK:                                                                 return "VK_FORMAT_BC4_UNORM_BLOCK";
951                 case VK_FORMAT_BC4_SNORM_BLOCK:                                                                 return "VK_FORMAT_BC4_SNORM_BLOCK";
952                 case VK_FORMAT_BC5_UNORM_BLOCK:                                                                 return "VK_FORMAT_BC5_UNORM_BLOCK";
953                 case VK_FORMAT_BC5_SNORM_BLOCK:                                                                 return "VK_FORMAT_BC5_SNORM_BLOCK";
954                 case VK_FORMAT_BC6H_UFLOAT_BLOCK:                                                               return "VK_FORMAT_BC6H_UFLOAT_BLOCK";
955                 case VK_FORMAT_BC6H_SFLOAT_BLOCK:                                                               return "VK_FORMAT_BC6H_SFLOAT_BLOCK";
956                 case VK_FORMAT_BC7_UNORM_BLOCK:                                                                 return "VK_FORMAT_BC7_UNORM_BLOCK";
957                 case VK_FORMAT_BC7_SRGB_BLOCK:                                                                  return "VK_FORMAT_BC7_SRGB_BLOCK";
958                 case VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK:                                                 return "VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK";
959                 case VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK:                                                  return "VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK";
960                 case VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK:                                               return "VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK";
961                 case VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK:                                                return "VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK";
962                 case VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK:                                               return "VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK";
963                 case VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK:                                                return "VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK";
964                 case VK_FORMAT_EAC_R11_UNORM_BLOCK:                                                             return "VK_FORMAT_EAC_R11_UNORM_BLOCK";
965                 case VK_FORMAT_EAC_R11_SNORM_BLOCK:                                                             return "VK_FORMAT_EAC_R11_SNORM_BLOCK";
966                 case VK_FORMAT_EAC_R11G11_UNORM_BLOCK:                                                  return "VK_FORMAT_EAC_R11G11_UNORM_BLOCK";
967                 case VK_FORMAT_EAC_R11G11_SNORM_BLOCK:                                                  return "VK_FORMAT_EAC_R11G11_SNORM_BLOCK";
968                 case VK_FORMAT_ASTC_4x4_UNORM_BLOCK:                                                    return "VK_FORMAT_ASTC_4x4_UNORM_BLOCK";
969                 case VK_FORMAT_ASTC_4x4_SRGB_BLOCK:                                                             return "VK_FORMAT_ASTC_4x4_SRGB_BLOCK";
970                 case VK_FORMAT_ASTC_5x4_UNORM_BLOCK:                                                    return "VK_FORMAT_ASTC_5x4_UNORM_BLOCK";
971                 case VK_FORMAT_ASTC_5x4_SRGB_BLOCK:                                                             return "VK_FORMAT_ASTC_5x4_SRGB_BLOCK";
972                 case VK_FORMAT_ASTC_5x5_UNORM_BLOCK:                                                    return "VK_FORMAT_ASTC_5x5_UNORM_BLOCK";
973                 case VK_FORMAT_ASTC_5x5_SRGB_BLOCK:                                                             return "VK_FORMAT_ASTC_5x5_SRGB_BLOCK";
974                 case VK_FORMAT_ASTC_6x5_UNORM_BLOCK:                                                    return "VK_FORMAT_ASTC_6x5_UNORM_BLOCK";
975                 case VK_FORMAT_ASTC_6x5_SRGB_BLOCK:                                                             return "VK_FORMAT_ASTC_6x5_SRGB_BLOCK";
976                 case VK_FORMAT_ASTC_6x6_UNORM_BLOCK:                                                    return "VK_FORMAT_ASTC_6x6_UNORM_BLOCK";
977                 case VK_FORMAT_ASTC_6x6_SRGB_BLOCK:                                                             return "VK_FORMAT_ASTC_6x6_SRGB_BLOCK";
978                 case VK_FORMAT_ASTC_8x5_UNORM_BLOCK:                                                    return "VK_FORMAT_ASTC_8x5_UNORM_BLOCK";
979                 case VK_FORMAT_ASTC_8x5_SRGB_BLOCK:                                                             return "VK_FORMAT_ASTC_8x5_SRGB_BLOCK";
980                 case VK_FORMAT_ASTC_8x6_UNORM_BLOCK:                                                    return "VK_FORMAT_ASTC_8x6_UNORM_BLOCK";
981                 case VK_FORMAT_ASTC_8x6_SRGB_BLOCK:                                                             return "VK_FORMAT_ASTC_8x6_SRGB_BLOCK";
982                 case VK_FORMAT_ASTC_8x8_UNORM_BLOCK:                                                    return "VK_FORMAT_ASTC_8x8_UNORM_BLOCK";
983                 case VK_FORMAT_ASTC_8x8_SRGB_BLOCK:                                                             return "VK_FORMAT_ASTC_8x8_SRGB_BLOCK";
984                 case VK_FORMAT_ASTC_10x5_UNORM_BLOCK:                                                   return "VK_FORMAT_ASTC_10x5_UNORM_BLOCK";
985                 case VK_FORMAT_ASTC_10x5_SRGB_BLOCK:                                                    return "VK_FORMAT_ASTC_10x5_SRGB_BLOCK";
986                 case VK_FORMAT_ASTC_10x6_UNORM_BLOCK:                                                   return "VK_FORMAT_ASTC_10x6_UNORM_BLOCK";
987                 case VK_FORMAT_ASTC_10x6_SRGB_BLOCK:                                                    return "VK_FORMAT_ASTC_10x6_SRGB_BLOCK";
988                 case VK_FORMAT_ASTC_10x8_UNORM_BLOCK:                                                   return "VK_FORMAT_ASTC_10x8_UNORM_BLOCK";
989                 case VK_FORMAT_ASTC_10x8_SRGB_BLOCK:                                                    return "VK_FORMAT_ASTC_10x8_SRGB_BLOCK";
990                 case VK_FORMAT_ASTC_10x10_UNORM_BLOCK:                                                  return "VK_FORMAT_ASTC_10x10_UNORM_BLOCK";
991                 case VK_FORMAT_ASTC_10x10_SRGB_BLOCK:                                                   return "VK_FORMAT_ASTC_10x10_SRGB_BLOCK";
992                 case VK_FORMAT_ASTC_12x10_UNORM_BLOCK:                                                  return "VK_FORMAT_ASTC_12x10_UNORM_BLOCK";
993                 case VK_FORMAT_ASTC_12x10_SRGB_BLOCK:                                                   return "VK_FORMAT_ASTC_12x10_SRGB_BLOCK";
994                 case VK_FORMAT_ASTC_12x12_UNORM_BLOCK:                                                  return "VK_FORMAT_ASTC_12x12_UNORM_BLOCK";
995                 case VK_FORMAT_ASTC_12x12_SRGB_BLOCK:                                                   return "VK_FORMAT_ASTC_12x12_SRGB_BLOCK";
996                 case VK_FORMAT_G8B8G8R8_422_UNORM:                                                              return "VK_FORMAT_G8B8G8R8_422_UNORM";
997                 case VK_FORMAT_B8G8R8G8_422_UNORM:                                                              return "VK_FORMAT_B8G8R8G8_422_UNORM";
998                 case VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM:                                               return "VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM";
999                 case VK_FORMAT_G8_B8R8_2PLANE_420_UNORM:                                                return "VK_FORMAT_G8_B8R8_2PLANE_420_UNORM";
1000                 case VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM:                                               return "VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM";
1001                 case VK_FORMAT_G8_B8R8_2PLANE_422_UNORM:                                                return "VK_FORMAT_G8_B8R8_2PLANE_422_UNORM";
1002                 case VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM:                                               return "VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM";
1003                 case VK_FORMAT_R10X6_UNORM_PACK16:                                                              return "VK_FORMAT_R10X6_UNORM_PACK16";
1004                 case VK_FORMAT_R10X6G10X6_UNORM_2PACK16:                                                return "VK_FORMAT_R10X6G10X6_UNORM_2PACK16";
1005                 case VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16:                              return "VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16";
1006                 case VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16:                  return "VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16";
1007                 case VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16:                  return "VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16";
1008                 case VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16:              return "VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16";
1009                 case VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16:               return "VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16";
1010                 case VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16:              return "VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16";
1011                 case VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16:               return "VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16";
1012                 case VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16:              return "VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16";
1013                 case VK_FORMAT_R12X4_UNORM_PACK16:                                                              return "VK_FORMAT_R12X4_UNORM_PACK16";
1014                 case VK_FORMAT_R12X4G12X4_UNORM_2PACK16:                                                return "VK_FORMAT_R12X4G12X4_UNORM_2PACK16";
1015                 case VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16:                              return "VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16";
1016                 case VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16:                  return "VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16";
1017                 case VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16:                  return "VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16";
1018                 case VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16:              return "VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16";
1019                 case VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16:               return "VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16";
1020                 case VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16:              return "VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16";
1021                 case VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16:               return "VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16";
1022                 case VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16:              return "VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16";
1023                 case VK_FORMAT_G16B16G16R16_422_UNORM:                                                  return "VK_FORMAT_G16B16G16R16_422_UNORM";
1024                 case VK_FORMAT_B16G16R16G16_422_UNORM:                                                  return "VK_FORMAT_B16G16R16G16_422_UNORM";
1025                 case VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM:                                    return "VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM";
1026                 case VK_FORMAT_G16_B16R16_2PLANE_420_UNORM:                                             return "VK_FORMAT_G16_B16R16_2PLANE_420_UNORM";
1027                 case VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM:                                    return "VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM";
1028                 case VK_FORMAT_G16_B16R16_2PLANE_422_UNORM:                                             return "VK_FORMAT_G16_B16R16_2PLANE_422_UNORM";
1029                 case VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM:                                    return "VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM";
1030                 case VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG:                                             return "VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG";
1031                 case VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG:                                             return "VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG";
1032                 case VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG:                                             return "VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG";
1033                 case VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG:                                             return "VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG";
1034                 case VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG:                                              return "VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG";
1035                 case VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG:                                              return "VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG";
1036                 case VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG:                                              return "VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG";
1037                 case VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG:                                              return "VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG";
1038                 case VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT:                                               return "VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT";
1039                 case VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT:                                               return "VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT";
1040                 case VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT:                                               return "VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT";
1041                 case VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT:                                               return "VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT";
1042                 case VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT:                                               return "VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT";
1043                 case VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT:                                               return "VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT";
1044                 case VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT:                                               return "VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT";
1045                 case VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT:                                               return "VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT";
1046                 case VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT:                                              return "VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT";
1047                 case VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT:                                              return "VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT";
1048                 case VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT:                                              return "VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT";
1049                 case VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT:                                             return "VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT";
1050                 case VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT:                                             return "VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT";
1051                 case VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT:                                             return "VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT";
1052                 case VK_FORMAT_G8_B8R8_2PLANE_444_UNORM_EXT:                                    return "VK_FORMAT_G8_B8R8_2PLANE_444_UNORM_EXT";
1053                 case VK_FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16_EXT:   return "VK_FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16_EXT";
1054                 case VK_FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16_EXT:   return "VK_FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16_EXT";
1055                 case VK_FORMAT_G16_B16R16_2PLANE_444_UNORM_EXT:                                 return "VK_FORMAT_G16_B16R16_2PLANE_444_UNORM_EXT";
1056                 case VK_FORMAT_A4R4G4B4_UNORM_PACK16_EXT:                                               return "VK_FORMAT_A4R4G4B4_UNORM_PACK16_EXT";
1057                 case VK_FORMAT_A4B4G4R4_UNORM_PACK16_EXT:                                               return "VK_FORMAT_A4B4G4R4_UNORM_PACK16_EXT";
1058                 case VK_FORMAT_MAX_ENUM:                                                                                return "VK_FORMAT_MAX_ENUM";
1059                 default:                                                                                                                return DE_NULL;
1060         }
1061 }
1062
1063 const char* getImageTilingName (VkImageTiling value)
1064 {
1065         switch (value)
1066         {
1067                 case VK_IMAGE_TILING_OPTIMAL:                                   return "VK_IMAGE_TILING_OPTIMAL";
1068                 case VK_IMAGE_TILING_LINEAR:                                    return "VK_IMAGE_TILING_LINEAR";
1069                 case VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT:   return "VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT";
1070                 case VK_IMAGE_TILING_MAX_ENUM:                                  return "VK_IMAGE_TILING_MAX_ENUM";
1071                 default:                                                                                return DE_NULL;
1072         }
1073 }
1074
1075 const char* getImageTypeName (VkImageType value)
1076 {
1077         switch (value)
1078         {
1079                 case VK_IMAGE_TYPE_1D:                  return "VK_IMAGE_TYPE_1D";
1080                 case VK_IMAGE_TYPE_2D:                  return "VK_IMAGE_TYPE_2D";
1081                 case VK_IMAGE_TYPE_3D:                  return "VK_IMAGE_TYPE_3D";
1082                 case VK_IMAGE_TYPE_MAX_ENUM:    return "VK_IMAGE_TYPE_MAX_ENUM";
1083                 default:                                                return DE_NULL;
1084         }
1085 }
1086
1087 const char* getPhysicalDeviceTypeName (VkPhysicalDeviceType value)
1088 {
1089         switch (value)
1090         {
1091                 case VK_PHYSICAL_DEVICE_TYPE_OTHER:                             return "VK_PHYSICAL_DEVICE_TYPE_OTHER";
1092                 case VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU:    return "VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU";
1093                 case VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU:              return "VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU";
1094                 case VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU:               return "VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU";
1095                 case VK_PHYSICAL_DEVICE_TYPE_CPU:                               return "VK_PHYSICAL_DEVICE_TYPE_CPU";
1096                 case VK_PHYSICAL_DEVICE_TYPE_MAX_ENUM:                  return "VK_PHYSICAL_DEVICE_TYPE_MAX_ENUM";
1097                 default:                                                                                return DE_NULL;
1098         }
1099 }
1100
1101 const char* getQueryTypeName (VkQueryType value)
1102 {
1103         switch (value)
1104         {
1105                 case VK_QUERY_TYPE_OCCLUSION:                                                                           return "VK_QUERY_TYPE_OCCLUSION";
1106                 case VK_QUERY_TYPE_PIPELINE_STATISTICS:                                                         return "VK_QUERY_TYPE_PIPELINE_STATISTICS";
1107                 case VK_QUERY_TYPE_TIMESTAMP:                                                                           return "VK_QUERY_TYPE_TIMESTAMP";
1108                 case VK_QUERY_TYPE_RESULT_STATUS_ONLY_KHR:                                                      return "VK_QUERY_TYPE_RESULT_STATUS_ONLY_KHR";
1109                 case VK_QUERY_TYPE_VIDEO_ENCODE_BITSTREAM_BUFFER_RANGE_KHR:                     return "VK_QUERY_TYPE_VIDEO_ENCODE_BITSTREAM_BUFFER_RANGE_KHR";
1110                 case VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT:                                       return "VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT";
1111                 case VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR:                                                       return "VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR";
1112                 case VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR:           return "VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR";
1113                 case VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR:       return "VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR";
1114                 case VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV:            return "VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV";
1115                 case VK_QUERY_TYPE_PERFORMANCE_QUERY_INTEL:                                                     return "VK_QUERY_TYPE_PERFORMANCE_QUERY_INTEL";
1116                 case VK_QUERY_TYPE_MAX_ENUM:                                                                            return "VK_QUERY_TYPE_MAX_ENUM";
1117                 default:                                                                                                                        return DE_NULL;
1118         }
1119 }
1120
1121 const char* getSharingModeName (VkSharingMode value)
1122 {
1123         switch (value)
1124         {
1125                 case VK_SHARING_MODE_EXCLUSIVE:         return "VK_SHARING_MODE_EXCLUSIVE";
1126                 case VK_SHARING_MODE_CONCURRENT:        return "VK_SHARING_MODE_CONCURRENT";
1127                 case VK_SHARING_MODE_MAX_ENUM:          return "VK_SHARING_MODE_MAX_ENUM";
1128                 default:                                                        return DE_NULL;
1129         }
1130 }
1131
1132 const char* getComponentSwizzleName (VkComponentSwizzle value)
1133 {
1134         switch (value)
1135         {
1136                 case VK_COMPONENT_SWIZZLE_IDENTITY:     return "VK_COMPONENT_SWIZZLE_IDENTITY";
1137                 case VK_COMPONENT_SWIZZLE_ZERO:         return "VK_COMPONENT_SWIZZLE_ZERO";
1138                 case VK_COMPONENT_SWIZZLE_ONE:          return "VK_COMPONENT_SWIZZLE_ONE";
1139                 case VK_COMPONENT_SWIZZLE_R:            return "VK_COMPONENT_SWIZZLE_R";
1140                 case VK_COMPONENT_SWIZZLE_G:            return "VK_COMPONENT_SWIZZLE_G";
1141                 case VK_COMPONENT_SWIZZLE_B:            return "VK_COMPONENT_SWIZZLE_B";
1142                 case VK_COMPONENT_SWIZZLE_A:            return "VK_COMPONENT_SWIZZLE_A";
1143                 case VK_COMPONENT_SWIZZLE_MAX_ENUM:     return "VK_COMPONENT_SWIZZLE_MAX_ENUM";
1144                 default:                                                        return DE_NULL;
1145         }
1146 }
1147
1148 const char* getImageViewTypeName (VkImageViewType value)
1149 {
1150         switch (value)
1151         {
1152                 case VK_IMAGE_VIEW_TYPE_1D:                     return "VK_IMAGE_VIEW_TYPE_1D";
1153                 case VK_IMAGE_VIEW_TYPE_2D:                     return "VK_IMAGE_VIEW_TYPE_2D";
1154                 case VK_IMAGE_VIEW_TYPE_3D:                     return "VK_IMAGE_VIEW_TYPE_3D";
1155                 case VK_IMAGE_VIEW_TYPE_CUBE:           return "VK_IMAGE_VIEW_TYPE_CUBE";
1156                 case VK_IMAGE_VIEW_TYPE_1D_ARRAY:       return "VK_IMAGE_VIEW_TYPE_1D_ARRAY";
1157                 case VK_IMAGE_VIEW_TYPE_2D_ARRAY:       return "VK_IMAGE_VIEW_TYPE_2D_ARRAY";
1158                 case VK_IMAGE_VIEW_TYPE_CUBE_ARRAY:     return "VK_IMAGE_VIEW_TYPE_CUBE_ARRAY";
1159                 case VK_IMAGE_VIEW_TYPE_MAX_ENUM:       return "VK_IMAGE_VIEW_TYPE_MAX_ENUM";
1160                 default:                                                        return DE_NULL;
1161         }
1162 }
1163
1164 const char* getBlendFactorName (VkBlendFactor value)
1165 {
1166         switch (value)
1167         {
1168                 case VK_BLEND_FACTOR_ZERO:                                              return "VK_BLEND_FACTOR_ZERO";
1169                 case VK_BLEND_FACTOR_ONE:                                               return "VK_BLEND_FACTOR_ONE";
1170                 case VK_BLEND_FACTOR_SRC_COLOR:                                 return "VK_BLEND_FACTOR_SRC_COLOR";
1171                 case VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR:               return "VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR";
1172                 case VK_BLEND_FACTOR_DST_COLOR:                                 return "VK_BLEND_FACTOR_DST_COLOR";
1173                 case VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR:               return "VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR";
1174                 case VK_BLEND_FACTOR_SRC_ALPHA:                                 return "VK_BLEND_FACTOR_SRC_ALPHA";
1175                 case VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA:               return "VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA";
1176                 case VK_BLEND_FACTOR_DST_ALPHA:                                 return "VK_BLEND_FACTOR_DST_ALPHA";
1177                 case VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA:               return "VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA";
1178                 case VK_BLEND_FACTOR_CONSTANT_COLOR:                    return "VK_BLEND_FACTOR_CONSTANT_COLOR";
1179                 case VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR:  return "VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR";
1180                 case VK_BLEND_FACTOR_CONSTANT_ALPHA:                    return "VK_BLEND_FACTOR_CONSTANT_ALPHA";
1181                 case VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA:  return "VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA";
1182                 case VK_BLEND_FACTOR_SRC_ALPHA_SATURATE:                return "VK_BLEND_FACTOR_SRC_ALPHA_SATURATE";
1183                 case VK_BLEND_FACTOR_SRC1_COLOR:                                return "VK_BLEND_FACTOR_SRC1_COLOR";
1184                 case VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR:              return "VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR";
1185                 case VK_BLEND_FACTOR_SRC1_ALPHA:                                return "VK_BLEND_FACTOR_SRC1_ALPHA";
1186                 case VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA:              return "VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA";
1187                 case VK_BLEND_FACTOR_MAX_ENUM:                                  return "VK_BLEND_FACTOR_MAX_ENUM";
1188                 default:                                                                                return DE_NULL;
1189         }
1190 }
1191
1192 const char* getBlendOpName (VkBlendOp value)
1193 {
1194         switch (value)
1195         {
1196                 case VK_BLEND_OP_ADD:                                           return "VK_BLEND_OP_ADD";
1197                 case VK_BLEND_OP_SUBTRACT:                                      return "VK_BLEND_OP_SUBTRACT";
1198                 case VK_BLEND_OP_REVERSE_SUBTRACT:                      return "VK_BLEND_OP_REVERSE_SUBTRACT";
1199                 case VK_BLEND_OP_MIN:                                           return "VK_BLEND_OP_MIN";
1200                 case VK_BLEND_OP_MAX:                                           return "VK_BLEND_OP_MAX";
1201                 case VK_BLEND_OP_ZERO_EXT:                                      return "VK_BLEND_OP_ZERO_EXT";
1202                 case VK_BLEND_OP_SRC_EXT:                                       return "VK_BLEND_OP_SRC_EXT";
1203                 case VK_BLEND_OP_DST_EXT:                                       return "VK_BLEND_OP_DST_EXT";
1204                 case VK_BLEND_OP_SRC_OVER_EXT:                          return "VK_BLEND_OP_SRC_OVER_EXT";
1205                 case VK_BLEND_OP_DST_OVER_EXT:                          return "VK_BLEND_OP_DST_OVER_EXT";
1206                 case VK_BLEND_OP_SRC_IN_EXT:                            return "VK_BLEND_OP_SRC_IN_EXT";
1207                 case VK_BLEND_OP_DST_IN_EXT:                            return "VK_BLEND_OP_DST_IN_EXT";
1208                 case VK_BLEND_OP_SRC_OUT_EXT:                           return "VK_BLEND_OP_SRC_OUT_EXT";
1209                 case VK_BLEND_OP_DST_OUT_EXT:                           return "VK_BLEND_OP_DST_OUT_EXT";
1210                 case VK_BLEND_OP_SRC_ATOP_EXT:                          return "VK_BLEND_OP_SRC_ATOP_EXT";
1211                 case VK_BLEND_OP_DST_ATOP_EXT:                          return "VK_BLEND_OP_DST_ATOP_EXT";
1212                 case VK_BLEND_OP_XOR_EXT:                                       return "VK_BLEND_OP_XOR_EXT";
1213                 case VK_BLEND_OP_MULTIPLY_EXT:                          return "VK_BLEND_OP_MULTIPLY_EXT";
1214                 case VK_BLEND_OP_SCREEN_EXT:                            return "VK_BLEND_OP_SCREEN_EXT";
1215                 case VK_BLEND_OP_OVERLAY_EXT:                           return "VK_BLEND_OP_OVERLAY_EXT";
1216                 case VK_BLEND_OP_DARKEN_EXT:                            return "VK_BLEND_OP_DARKEN_EXT";
1217                 case VK_BLEND_OP_LIGHTEN_EXT:                           return "VK_BLEND_OP_LIGHTEN_EXT";
1218                 case VK_BLEND_OP_COLORDODGE_EXT:                        return "VK_BLEND_OP_COLORDODGE_EXT";
1219                 case VK_BLEND_OP_COLORBURN_EXT:                         return "VK_BLEND_OP_COLORBURN_EXT";
1220                 case VK_BLEND_OP_HARDLIGHT_EXT:                         return "VK_BLEND_OP_HARDLIGHT_EXT";
1221                 case VK_BLEND_OP_SOFTLIGHT_EXT:                         return "VK_BLEND_OP_SOFTLIGHT_EXT";
1222                 case VK_BLEND_OP_DIFFERENCE_EXT:                        return "VK_BLEND_OP_DIFFERENCE_EXT";
1223                 case VK_BLEND_OP_EXCLUSION_EXT:                         return "VK_BLEND_OP_EXCLUSION_EXT";
1224                 case VK_BLEND_OP_INVERT_EXT:                            return "VK_BLEND_OP_INVERT_EXT";
1225                 case VK_BLEND_OP_INVERT_RGB_EXT:                        return "VK_BLEND_OP_INVERT_RGB_EXT";
1226                 case VK_BLEND_OP_LINEARDODGE_EXT:                       return "VK_BLEND_OP_LINEARDODGE_EXT";
1227                 case VK_BLEND_OP_LINEARBURN_EXT:                        return "VK_BLEND_OP_LINEARBURN_EXT";
1228                 case VK_BLEND_OP_VIVIDLIGHT_EXT:                        return "VK_BLEND_OP_VIVIDLIGHT_EXT";
1229                 case VK_BLEND_OP_LINEARLIGHT_EXT:                       return "VK_BLEND_OP_LINEARLIGHT_EXT";
1230                 case VK_BLEND_OP_PINLIGHT_EXT:                          return "VK_BLEND_OP_PINLIGHT_EXT";
1231                 case VK_BLEND_OP_HARDMIX_EXT:                           return "VK_BLEND_OP_HARDMIX_EXT";
1232                 case VK_BLEND_OP_HSL_HUE_EXT:                           return "VK_BLEND_OP_HSL_HUE_EXT";
1233                 case VK_BLEND_OP_HSL_SATURATION_EXT:            return "VK_BLEND_OP_HSL_SATURATION_EXT";
1234                 case VK_BLEND_OP_HSL_COLOR_EXT:                         return "VK_BLEND_OP_HSL_COLOR_EXT";
1235                 case VK_BLEND_OP_HSL_LUMINOSITY_EXT:            return "VK_BLEND_OP_HSL_LUMINOSITY_EXT";
1236                 case VK_BLEND_OP_PLUS_EXT:                                      return "VK_BLEND_OP_PLUS_EXT";
1237                 case VK_BLEND_OP_PLUS_CLAMPED_EXT:                      return "VK_BLEND_OP_PLUS_CLAMPED_EXT";
1238                 case VK_BLEND_OP_PLUS_CLAMPED_ALPHA_EXT:        return "VK_BLEND_OP_PLUS_CLAMPED_ALPHA_EXT";
1239                 case VK_BLEND_OP_PLUS_DARKER_EXT:                       return "VK_BLEND_OP_PLUS_DARKER_EXT";
1240                 case VK_BLEND_OP_MINUS_EXT:                                     return "VK_BLEND_OP_MINUS_EXT";
1241                 case VK_BLEND_OP_MINUS_CLAMPED_EXT:                     return "VK_BLEND_OP_MINUS_CLAMPED_EXT";
1242                 case VK_BLEND_OP_CONTRAST_EXT:                          return "VK_BLEND_OP_CONTRAST_EXT";
1243                 case VK_BLEND_OP_INVERT_OVG_EXT:                        return "VK_BLEND_OP_INVERT_OVG_EXT";
1244                 case VK_BLEND_OP_RED_EXT:                                       return "VK_BLEND_OP_RED_EXT";
1245                 case VK_BLEND_OP_GREEN_EXT:                                     return "VK_BLEND_OP_GREEN_EXT";
1246                 case VK_BLEND_OP_BLUE_EXT:                                      return "VK_BLEND_OP_BLUE_EXT";
1247                 case VK_BLEND_OP_MAX_ENUM:                                      return "VK_BLEND_OP_MAX_ENUM";
1248                 default:                                                                        return DE_NULL;
1249         }
1250 }
1251
1252 const char* getCompareOpName (VkCompareOp value)
1253 {
1254         switch (value)
1255         {
1256                 case VK_COMPARE_OP_NEVER:                               return "VK_COMPARE_OP_NEVER";
1257                 case VK_COMPARE_OP_LESS:                                return "VK_COMPARE_OP_LESS";
1258                 case VK_COMPARE_OP_EQUAL:                               return "VK_COMPARE_OP_EQUAL";
1259                 case VK_COMPARE_OP_LESS_OR_EQUAL:               return "VK_COMPARE_OP_LESS_OR_EQUAL";
1260                 case VK_COMPARE_OP_GREATER:                             return "VK_COMPARE_OP_GREATER";
1261                 case VK_COMPARE_OP_NOT_EQUAL:                   return "VK_COMPARE_OP_NOT_EQUAL";
1262                 case VK_COMPARE_OP_GREATER_OR_EQUAL:    return "VK_COMPARE_OP_GREATER_OR_EQUAL";
1263                 case VK_COMPARE_OP_ALWAYS:                              return "VK_COMPARE_OP_ALWAYS";
1264                 case VK_COMPARE_OP_MAX_ENUM:                    return "VK_COMPARE_OP_MAX_ENUM";
1265                 default:                                                                return DE_NULL;
1266         }
1267 }
1268
1269 const char* getDynamicStateName (VkDynamicState value)
1270 {
1271         switch (value)
1272         {
1273                 case VK_DYNAMIC_STATE_VIEWPORT:                                                         return "VK_DYNAMIC_STATE_VIEWPORT";
1274                 case VK_DYNAMIC_STATE_SCISSOR:                                                          return "VK_DYNAMIC_STATE_SCISSOR";
1275                 case VK_DYNAMIC_STATE_LINE_WIDTH:                                                       return "VK_DYNAMIC_STATE_LINE_WIDTH";
1276                 case VK_DYNAMIC_STATE_DEPTH_BIAS:                                                       return "VK_DYNAMIC_STATE_DEPTH_BIAS";
1277                 case VK_DYNAMIC_STATE_BLEND_CONSTANTS:                                          return "VK_DYNAMIC_STATE_BLEND_CONSTANTS";
1278                 case VK_DYNAMIC_STATE_DEPTH_BOUNDS:                                                     return "VK_DYNAMIC_STATE_DEPTH_BOUNDS";
1279                 case VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK:                                     return "VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK";
1280                 case VK_DYNAMIC_STATE_STENCIL_WRITE_MASK:                                       return "VK_DYNAMIC_STATE_STENCIL_WRITE_MASK";
1281                 case VK_DYNAMIC_STATE_STENCIL_REFERENCE:                                        return "VK_DYNAMIC_STATE_STENCIL_REFERENCE";
1282                 case VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV:                            return "VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV";
1283                 case VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT:                            return "VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT";
1284                 case VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT:                                     return "VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT";
1285                 case VK_DYNAMIC_STATE_RAY_TRACING_PIPELINE_STACK_SIZE_KHR:      return "VK_DYNAMIC_STATE_RAY_TRACING_PIPELINE_STACK_SIZE_KHR";
1286                 case VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV:         return "VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV";
1287                 case VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV:          return "VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV";
1288                 case VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV:                                     return "VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV";
1289                 case VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR:                        return "VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR";
1290                 case VK_DYNAMIC_STATE_LINE_STIPPLE_EXT:                                         return "VK_DYNAMIC_STATE_LINE_STIPPLE_EXT";
1291                 case VK_DYNAMIC_STATE_CULL_MODE_EXT:                                            return "VK_DYNAMIC_STATE_CULL_MODE_EXT";
1292                 case VK_DYNAMIC_STATE_FRONT_FACE_EXT:                                           return "VK_DYNAMIC_STATE_FRONT_FACE_EXT";
1293                 case VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT:                           return "VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT";
1294                 case VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT:                          return "VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT";
1295                 case VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT:                           return "VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT";
1296                 case VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT:          return "VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT";
1297                 case VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE_EXT:                            return "VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE_EXT";
1298                 case VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE_EXT:                           return "VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE_EXT";
1299                 case VK_DYNAMIC_STATE_DEPTH_COMPARE_OP_EXT:                                     return "VK_DYNAMIC_STATE_DEPTH_COMPARE_OP_EXT";
1300                 case VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE_EXT:                     return "VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE_EXT";
1301                 case VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE_EXT:                          return "VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE_EXT";
1302                 case VK_DYNAMIC_STATE_STENCIL_OP_EXT:                                           return "VK_DYNAMIC_STATE_STENCIL_OP_EXT";
1303                 case VK_DYNAMIC_STATE_VERTEX_INPUT_EXT:                                         return "VK_DYNAMIC_STATE_VERTEX_INPUT_EXT";
1304                 case VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT:                           return "VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT";
1305                 case VK_DYNAMIC_STATE_MAX_ENUM:                                                         return "VK_DYNAMIC_STATE_MAX_ENUM";
1306                 default:                                                                                                        return DE_NULL;
1307         }
1308 }
1309
1310 const char* getFrontFaceName (VkFrontFace value)
1311 {
1312         switch (value)
1313         {
1314                 case VK_FRONT_FACE_COUNTER_CLOCKWISE:   return "VK_FRONT_FACE_COUNTER_CLOCKWISE";
1315                 case VK_FRONT_FACE_CLOCKWISE:                   return "VK_FRONT_FACE_CLOCKWISE";
1316                 case VK_FRONT_FACE_MAX_ENUM:                    return "VK_FRONT_FACE_MAX_ENUM";
1317                 default:                                                                return DE_NULL;
1318         }
1319 }
1320
1321 const char* getVertexInputRateName (VkVertexInputRate value)
1322 {
1323         switch (value)
1324         {
1325                 case VK_VERTEX_INPUT_RATE_VERTEX:       return "VK_VERTEX_INPUT_RATE_VERTEX";
1326                 case VK_VERTEX_INPUT_RATE_INSTANCE:     return "VK_VERTEX_INPUT_RATE_INSTANCE";
1327                 case VK_VERTEX_INPUT_RATE_MAX_ENUM:     return "VK_VERTEX_INPUT_RATE_MAX_ENUM";
1328                 default:                                                        return DE_NULL;
1329         }
1330 }
1331
1332 const char* getPrimitiveTopologyName (VkPrimitiveTopology value)
1333 {
1334         switch (value)
1335         {
1336                 case VK_PRIMITIVE_TOPOLOGY_POINT_LIST:                                          return "VK_PRIMITIVE_TOPOLOGY_POINT_LIST";
1337                 case VK_PRIMITIVE_TOPOLOGY_LINE_LIST:                                           return "VK_PRIMITIVE_TOPOLOGY_LINE_LIST";
1338                 case VK_PRIMITIVE_TOPOLOGY_LINE_STRIP:                                          return "VK_PRIMITIVE_TOPOLOGY_LINE_STRIP";
1339                 case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST:                                       return "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST";
1340                 case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP:                                      return "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP";
1341                 case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN:                                        return "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN";
1342                 case VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY:            return "VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY";
1343                 case VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY:           return "VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY";
1344                 case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY:        return "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY";
1345                 case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY:       return "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY";
1346                 case VK_PRIMITIVE_TOPOLOGY_PATCH_LIST:                                          return "VK_PRIMITIVE_TOPOLOGY_PATCH_LIST";
1347                 case VK_PRIMITIVE_TOPOLOGY_MAX_ENUM:                                            return "VK_PRIMITIVE_TOPOLOGY_MAX_ENUM";
1348                 default:                                                                                                        return DE_NULL;
1349         }
1350 }
1351
1352 const char* getPolygonModeName (VkPolygonMode value)
1353 {
1354         switch (value)
1355         {
1356                 case VK_POLYGON_MODE_FILL:                              return "VK_POLYGON_MODE_FILL";
1357                 case VK_POLYGON_MODE_LINE:                              return "VK_POLYGON_MODE_LINE";
1358                 case VK_POLYGON_MODE_POINT:                             return "VK_POLYGON_MODE_POINT";
1359                 case VK_POLYGON_MODE_FILL_RECTANGLE_NV: return "VK_POLYGON_MODE_FILL_RECTANGLE_NV";
1360                 case VK_POLYGON_MODE_MAX_ENUM:                  return "VK_POLYGON_MODE_MAX_ENUM";
1361                 default:                                                                return DE_NULL;
1362         }
1363 }
1364
1365 const char* getStencilOpName (VkStencilOp value)
1366 {
1367         switch (value)
1368         {
1369                 case VK_STENCIL_OP_KEEP:                                return "VK_STENCIL_OP_KEEP";
1370                 case VK_STENCIL_OP_ZERO:                                return "VK_STENCIL_OP_ZERO";
1371                 case VK_STENCIL_OP_REPLACE:                             return "VK_STENCIL_OP_REPLACE";
1372                 case VK_STENCIL_OP_INCREMENT_AND_CLAMP: return "VK_STENCIL_OP_INCREMENT_AND_CLAMP";
1373                 case VK_STENCIL_OP_DECREMENT_AND_CLAMP: return "VK_STENCIL_OP_DECREMENT_AND_CLAMP";
1374                 case VK_STENCIL_OP_INVERT:                              return "VK_STENCIL_OP_INVERT";
1375                 case VK_STENCIL_OP_INCREMENT_AND_WRAP:  return "VK_STENCIL_OP_INCREMENT_AND_WRAP";
1376                 case VK_STENCIL_OP_DECREMENT_AND_WRAP:  return "VK_STENCIL_OP_DECREMENT_AND_WRAP";
1377                 case VK_STENCIL_OP_MAX_ENUM:                    return "VK_STENCIL_OP_MAX_ENUM";
1378                 default:                                                                return DE_NULL;
1379         }
1380 }
1381
1382 const char* getLogicOpName (VkLogicOp value)
1383 {
1384         switch (value)
1385         {
1386                 case VK_LOGIC_OP_CLEAR:                 return "VK_LOGIC_OP_CLEAR";
1387                 case VK_LOGIC_OP_AND:                   return "VK_LOGIC_OP_AND";
1388                 case VK_LOGIC_OP_AND_REVERSE:   return "VK_LOGIC_OP_AND_REVERSE";
1389                 case VK_LOGIC_OP_COPY:                  return "VK_LOGIC_OP_COPY";
1390                 case VK_LOGIC_OP_AND_INVERTED:  return "VK_LOGIC_OP_AND_INVERTED";
1391                 case VK_LOGIC_OP_NO_OP:                 return "VK_LOGIC_OP_NO_OP";
1392                 case VK_LOGIC_OP_XOR:                   return "VK_LOGIC_OP_XOR";
1393                 case VK_LOGIC_OP_OR:                    return "VK_LOGIC_OP_OR";
1394                 case VK_LOGIC_OP_NOR:                   return "VK_LOGIC_OP_NOR";
1395                 case VK_LOGIC_OP_EQUIVALENT:    return "VK_LOGIC_OP_EQUIVALENT";
1396                 case VK_LOGIC_OP_INVERT:                return "VK_LOGIC_OP_INVERT";
1397                 case VK_LOGIC_OP_OR_REVERSE:    return "VK_LOGIC_OP_OR_REVERSE";
1398                 case VK_LOGIC_OP_COPY_INVERTED: return "VK_LOGIC_OP_COPY_INVERTED";
1399                 case VK_LOGIC_OP_OR_INVERTED:   return "VK_LOGIC_OP_OR_INVERTED";
1400                 case VK_LOGIC_OP_NAND:                  return "VK_LOGIC_OP_NAND";
1401                 case VK_LOGIC_OP_SET:                   return "VK_LOGIC_OP_SET";
1402                 case VK_LOGIC_OP_MAX_ENUM:              return "VK_LOGIC_OP_MAX_ENUM";
1403                 default:                                                return DE_NULL;
1404         }
1405 }
1406
1407 const char* getBorderColorName (VkBorderColor value)
1408 {
1409         switch (value)
1410         {
1411                 case VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK:   return "VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK";
1412                 case VK_BORDER_COLOR_INT_TRANSPARENT_BLACK:             return "VK_BORDER_COLOR_INT_TRANSPARENT_BLACK";
1413                 case VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK:                return "VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK";
1414                 case VK_BORDER_COLOR_INT_OPAQUE_BLACK:                  return "VK_BORDER_COLOR_INT_OPAQUE_BLACK";
1415                 case VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE:                return "VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE";
1416                 case VK_BORDER_COLOR_INT_OPAQUE_WHITE:                  return "VK_BORDER_COLOR_INT_OPAQUE_WHITE";
1417                 case VK_BORDER_COLOR_FLOAT_CUSTOM_EXT:                  return "VK_BORDER_COLOR_FLOAT_CUSTOM_EXT";
1418                 case VK_BORDER_COLOR_INT_CUSTOM_EXT:                    return "VK_BORDER_COLOR_INT_CUSTOM_EXT";
1419                 case VK_BORDER_COLOR_MAX_ENUM:                                  return "VK_BORDER_COLOR_MAX_ENUM";
1420                 default:                                                                                return DE_NULL;
1421         }
1422 }
1423
1424 const char* getFilterName (VkFilter value)
1425 {
1426         switch (value)
1427         {
1428                 case VK_FILTER_NEAREST:         return "VK_FILTER_NEAREST";
1429                 case VK_FILTER_LINEAR:          return "VK_FILTER_LINEAR";
1430                 case VK_FILTER_CUBIC_IMG:       return "VK_FILTER_CUBIC_IMG";
1431                 case VK_FILTER_MAX_ENUM:        return "VK_FILTER_MAX_ENUM";
1432                 default:                                        return DE_NULL;
1433         }
1434 }
1435
1436 const char* getSamplerAddressModeName (VkSamplerAddressMode value)
1437 {
1438         switch (value)
1439         {
1440                 case VK_SAMPLER_ADDRESS_MODE_REPEAT:                            return "VK_SAMPLER_ADDRESS_MODE_REPEAT";
1441                 case VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT:           return "VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT";
1442                 case VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE:                     return "VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE";
1443                 case VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER:           return "VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER";
1444                 case VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE:      return "VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE";
1445                 case VK_SAMPLER_ADDRESS_MODE_MAX_ENUM:                          return "VK_SAMPLER_ADDRESS_MODE_MAX_ENUM";
1446                 default:                                                                                        return DE_NULL;
1447         }
1448 }
1449
1450 const char* getSamplerMipmapModeName (VkSamplerMipmapMode value)
1451 {
1452         switch (value)
1453         {
1454                 case VK_SAMPLER_MIPMAP_MODE_NEAREST:    return "VK_SAMPLER_MIPMAP_MODE_NEAREST";
1455                 case VK_SAMPLER_MIPMAP_MODE_LINEAR:             return "VK_SAMPLER_MIPMAP_MODE_LINEAR";
1456                 case VK_SAMPLER_MIPMAP_MODE_MAX_ENUM:   return "VK_SAMPLER_MIPMAP_MODE_MAX_ENUM";
1457                 default:                                                                return DE_NULL;
1458         }
1459 }
1460
1461 const char* getDescriptorTypeName (VkDescriptorType value)
1462 {
1463         switch (value)
1464         {
1465                 case VK_DESCRIPTOR_TYPE_SAMPLER:                                        return "VK_DESCRIPTOR_TYPE_SAMPLER";
1466                 case VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER:         return "VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER";
1467                 case VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE:                          return "VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE";
1468                 case VK_DESCRIPTOR_TYPE_STORAGE_IMAGE:                          return "VK_DESCRIPTOR_TYPE_STORAGE_IMAGE";
1469                 case VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER:           return "VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER";
1470                 case VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER:           return "VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER";
1471                 case VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER:                         return "VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER";
1472                 case VK_DESCRIPTOR_TYPE_STORAGE_BUFFER:                         return "VK_DESCRIPTOR_TYPE_STORAGE_BUFFER";
1473                 case VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC:         return "VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC";
1474                 case VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC:         return "VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC";
1475                 case VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT:                       return "VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT";
1476                 case VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT:       return "VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT";
1477                 case VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR:     return "VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR";
1478                 case VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV:      return "VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV";
1479                 case VK_DESCRIPTOR_TYPE_MUTABLE_VALVE:                          return "VK_DESCRIPTOR_TYPE_MUTABLE_VALVE";
1480                 case VK_DESCRIPTOR_TYPE_MAX_ENUM:                                       return "VK_DESCRIPTOR_TYPE_MAX_ENUM";
1481                 default:                                                                                        return DE_NULL;
1482         }
1483 }
1484
1485 const char* getAttachmentLoadOpName (VkAttachmentLoadOp value)
1486 {
1487         switch (value)
1488         {
1489                 case VK_ATTACHMENT_LOAD_OP_LOAD:                return "VK_ATTACHMENT_LOAD_OP_LOAD";
1490                 case VK_ATTACHMENT_LOAD_OP_CLEAR:               return "VK_ATTACHMENT_LOAD_OP_CLEAR";
1491                 case VK_ATTACHMENT_LOAD_OP_DONT_CARE:   return "VK_ATTACHMENT_LOAD_OP_DONT_CARE";
1492                 case VK_ATTACHMENT_LOAD_OP_MAX_ENUM:    return "VK_ATTACHMENT_LOAD_OP_MAX_ENUM";
1493                 default:                                                                return DE_NULL;
1494         }
1495 }
1496
1497 const char* getAttachmentStoreOpName (VkAttachmentStoreOp value)
1498 {
1499         switch (value)
1500         {
1501                 case VK_ATTACHMENT_STORE_OP_STORE:              return "VK_ATTACHMENT_STORE_OP_STORE";
1502                 case VK_ATTACHMENT_STORE_OP_DONT_CARE:  return "VK_ATTACHMENT_STORE_OP_DONT_CARE";
1503                 case VK_ATTACHMENT_STORE_OP_NONE_QCOM:  return "VK_ATTACHMENT_STORE_OP_NONE_QCOM";
1504                 case VK_ATTACHMENT_STORE_OP_MAX_ENUM:   return "VK_ATTACHMENT_STORE_OP_MAX_ENUM";
1505                 default:                                                                return DE_NULL;
1506         }
1507 }
1508
1509 const char* getPipelineBindPointName (VkPipelineBindPoint value)
1510 {
1511         switch (value)
1512         {
1513                 case VK_PIPELINE_BIND_POINT_GRAPHICS:                   return "VK_PIPELINE_BIND_POINT_GRAPHICS";
1514                 case VK_PIPELINE_BIND_POINT_COMPUTE:                    return "VK_PIPELINE_BIND_POINT_COMPUTE";
1515                 case VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR:    return "VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR";
1516                 case VK_PIPELINE_BIND_POINT_MAX_ENUM:                   return "VK_PIPELINE_BIND_POINT_MAX_ENUM";
1517                 default:                                                                                return DE_NULL;
1518         }
1519 }
1520
1521 const char* getCommandBufferLevelName (VkCommandBufferLevel value)
1522 {
1523         switch (value)
1524         {
1525                 case VK_COMMAND_BUFFER_LEVEL_PRIMARY:   return "VK_COMMAND_BUFFER_LEVEL_PRIMARY";
1526                 case VK_COMMAND_BUFFER_LEVEL_SECONDARY: return "VK_COMMAND_BUFFER_LEVEL_SECONDARY";
1527                 case VK_COMMAND_BUFFER_LEVEL_MAX_ENUM:  return "VK_COMMAND_BUFFER_LEVEL_MAX_ENUM";
1528                 default:                                                                return DE_NULL;
1529         }
1530 }
1531
1532 const char* getIndexTypeName (VkIndexType value)
1533 {
1534         switch (value)
1535         {
1536                 case VK_INDEX_TYPE_UINT16:              return "VK_INDEX_TYPE_UINT16";
1537                 case VK_INDEX_TYPE_UINT32:              return "VK_INDEX_TYPE_UINT32";
1538                 case VK_INDEX_TYPE_NONE_KHR:    return "VK_INDEX_TYPE_NONE_KHR";
1539                 case VK_INDEX_TYPE_UINT8_EXT:   return "VK_INDEX_TYPE_UINT8_EXT";
1540                 case VK_INDEX_TYPE_MAX_ENUM:    return "VK_INDEX_TYPE_MAX_ENUM";
1541                 default:                                                return DE_NULL;
1542         }
1543 }
1544
1545 const char* getSubpassContentsName (VkSubpassContents value)
1546 {
1547         switch (value)
1548         {
1549                 case VK_SUBPASS_CONTENTS_INLINE:                                        return "VK_SUBPASS_CONTENTS_INLINE";
1550                 case VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS:     return "VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS";
1551                 case VK_SUBPASS_CONTENTS_MAX_ENUM:                                      return "VK_SUBPASS_CONTENTS_MAX_ENUM";
1552                 default:                                                                                        return DE_NULL;
1553         }
1554 }
1555
1556 const char* getPointClippingBehaviorName (VkPointClippingBehavior value)
1557 {
1558         switch (value)
1559         {
1560                 case VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES:                return "VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES";
1561                 case VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY:  return "VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY";
1562                 case VK_POINT_CLIPPING_BEHAVIOR_MAX_ENUM:                               return "VK_POINT_CLIPPING_BEHAVIOR_MAX_ENUM";
1563                 default:                                                                                                return DE_NULL;
1564         }
1565 }
1566
1567 const char* getTessellationDomainOriginName (VkTessellationDomainOrigin value)
1568 {
1569         switch (value)
1570         {
1571                 case VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT:  return "VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT";
1572                 case VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT:  return "VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT";
1573                 case VK_TESSELLATION_DOMAIN_ORIGIN_MAX_ENUM:    return "VK_TESSELLATION_DOMAIN_ORIGIN_MAX_ENUM";
1574                 default:                                                                                return DE_NULL;
1575         }
1576 }
1577
1578 const char* getSamplerYcbcrModelConversionName (VkSamplerYcbcrModelConversion value)
1579 {
1580         switch (value)
1581         {
1582                 case VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY:    return "VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY";
1583                 case VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY:  return "VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY";
1584                 case VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709:               return "VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709";
1585                 case VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601:               return "VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601";
1586                 case VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020:              return "VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020";
1587                 case VK_SAMPLER_YCBCR_MODEL_CONVERSION_MAX_ENUM:                return "VK_SAMPLER_YCBCR_MODEL_CONVERSION_MAX_ENUM";
1588                 default:                                                                                                return DE_NULL;
1589         }
1590 }
1591
1592 const char* getSamplerYcbcrRangeName (VkSamplerYcbcrRange value)
1593 {
1594         switch (value)
1595         {
1596                 case VK_SAMPLER_YCBCR_RANGE_ITU_FULL:   return "VK_SAMPLER_YCBCR_RANGE_ITU_FULL";
1597                 case VK_SAMPLER_YCBCR_RANGE_ITU_NARROW: return "VK_SAMPLER_YCBCR_RANGE_ITU_NARROW";
1598                 case VK_SAMPLER_YCBCR_RANGE_MAX_ENUM:   return "VK_SAMPLER_YCBCR_RANGE_MAX_ENUM";
1599                 default:                                                                return DE_NULL;
1600         }
1601 }
1602
1603 const char* getChromaLocationName (VkChromaLocation value)
1604 {
1605         switch (value)
1606         {
1607                 case VK_CHROMA_LOCATION_COSITED_EVEN:   return "VK_CHROMA_LOCATION_COSITED_EVEN";
1608                 case VK_CHROMA_LOCATION_MIDPOINT:               return "VK_CHROMA_LOCATION_MIDPOINT";
1609                 case VK_CHROMA_LOCATION_MAX_ENUM:               return "VK_CHROMA_LOCATION_MAX_ENUM";
1610                 default:                                                                return DE_NULL;
1611         }
1612 }
1613
1614 const char* getDescriptorUpdateTemplateTypeName (VkDescriptorUpdateTemplateType value)
1615 {
1616         switch (value)
1617         {
1618                 case VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET:                 return "VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET";
1619                 case VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR:   return "VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR";
1620                 case VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_MAX_ENUM:                               return "VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_MAX_ENUM";
1621                 default:                                                                                                                return DE_NULL;
1622         }
1623 }
1624
1625 const char* getDriverIdName (VkDriverId value)
1626 {
1627         switch (value)
1628         {
1629                 case VK_DRIVER_ID_AMD_PROPRIETARY:                              return "VK_DRIVER_ID_AMD_PROPRIETARY";
1630                 case VK_DRIVER_ID_AMD_OPEN_SOURCE:                              return "VK_DRIVER_ID_AMD_OPEN_SOURCE";
1631                 case VK_DRIVER_ID_MESA_RADV:                                    return "VK_DRIVER_ID_MESA_RADV";
1632                 case VK_DRIVER_ID_NVIDIA_PROPRIETARY:                   return "VK_DRIVER_ID_NVIDIA_PROPRIETARY";
1633                 case VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS:    return "VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS";
1634                 case VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA:               return "VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA";
1635                 case VK_DRIVER_ID_IMAGINATION_PROPRIETARY:              return "VK_DRIVER_ID_IMAGINATION_PROPRIETARY";
1636                 case VK_DRIVER_ID_QUALCOMM_PROPRIETARY:                 return "VK_DRIVER_ID_QUALCOMM_PROPRIETARY";
1637                 case VK_DRIVER_ID_ARM_PROPRIETARY:                              return "VK_DRIVER_ID_ARM_PROPRIETARY";
1638                 case VK_DRIVER_ID_GOOGLE_SWIFTSHADER:                   return "VK_DRIVER_ID_GOOGLE_SWIFTSHADER";
1639                 case VK_DRIVER_ID_GGP_PROPRIETARY:                              return "VK_DRIVER_ID_GGP_PROPRIETARY";
1640                 case VK_DRIVER_ID_BROADCOM_PROPRIETARY:                 return "VK_DRIVER_ID_BROADCOM_PROPRIETARY";
1641                 case VK_DRIVER_ID_MESA_LLVMPIPE:                                return "VK_DRIVER_ID_MESA_LLVMPIPE";
1642                 case VK_DRIVER_ID_MOLTENVK:                                             return "VK_DRIVER_ID_MOLTENVK";
1643                 case VK_DRIVER_ID_COREAVI_PROPRIETARY:                  return "VK_DRIVER_ID_COREAVI_PROPRIETARY";
1644                 case VK_DRIVER_ID_MAX_ENUM:                                             return "VK_DRIVER_ID_MAX_ENUM";
1645                 default:                                                                                return DE_NULL;
1646         }
1647 }
1648
1649 const char* getShaderFloatControlsIndependenceName (VkShaderFloatControlsIndependence value)
1650 {
1651         switch (value)
1652         {
1653                 case VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY: return "VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY";
1654                 case VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL:                 return "VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL";
1655                 case VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE:                return "VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE";
1656                 case VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_MAX_ENUM:    return "VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_MAX_ENUM";
1657                 default:                                                                                                return DE_NULL;
1658         }
1659 }
1660
1661 const char* getSamplerReductionModeName (VkSamplerReductionMode value)
1662 {
1663         switch (value)
1664         {
1665                 case VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE:        return "VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE";
1666                 case VK_SAMPLER_REDUCTION_MODE_MIN:                                     return "VK_SAMPLER_REDUCTION_MODE_MIN";
1667                 case VK_SAMPLER_REDUCTION_MODE_MAX:                                     return "VK_SAMPLER_REDUCTION_MODE_MAX";
1668                 case VK_SAMPLER_REDUCTION_MODE_MAX_ENUM:                        return "VK_SAMPLER_REDUCTION_MODE_MAX_ENUM";
1669                 default:                                                                                        return DE_NULL;
1670         }
1671 }
1672
1673 const char* getSemaphoreTypeName (VkSemaphoreType value)
1674 {
1675         switch (value)
1676         {
1677                 case VK_SEMAPHORE_TYPE_BINARY:          return "VK_SEMAPHORE_TYPE_BINARY";
1678                 case VK_SEMAPHORE_TYPE_TIMELINE:        return "VK_SEMAPHORE_TYPE_TIMELINE";
1679                 case VK_SEMAPHORE_TYPE_MAX_ENUM:        return "VK_SEMAPHORE_TYPE_MAX_ENUM";
1680                 default:                                                        return DE_NULL;
1681         }
1682 }
1683
1684 const char* getPresentModeKHRName (VkPresentModeKHR value)
1685 {
1686         switch (value)
1687         {
1688                 case VK_PRESENT_MODE_IMMEDIATE_KHR:                                     return "VK_PRESENT_MODE_IMMEDIATE_KHR";
1689                 case VK_PRESENT_MODE_MAILBOX_KHR:                                       return "VK_PRESENT_MODE_MAILBOX_KHR";
1690                 case VK_PRESENT_MODE_FIFO_KHR:                                          return "VK_PRESENT_MODE_FIFO_KHR";
1691                 case VK_PRESENT_MODE_FIFO_RELAXED_KHR:                          return "VK_PRESENT_MODE_FIFO_RELAXED_KHR";
1692                 case VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR:         return "VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR";
1693                 case VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR:     return "VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR";
1694                 case VK_PRESENT_MODE_MAX_ENUM_KHR:                                      return "VK_PRESENT_MODE_MAX_ENUM_KHR";
1695                 default:                                                                                        return DE_NULL;
1696         }
1697 }
1698
1699 const char* getColorSpaceKHRName (VkColorSpaceKHR value)
1700 {
1701         switch (value)
1702         {
1703                 case VK_COLOR_SPACE_SRGB_NONLINEAR_KHR:                         return "VK_COLOR_SPACE_SRGB_NONLINEAR_KHR";
1704                 case VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT:           return "VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT";
1705                 case VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT:           return "VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT";
1706                 case VK_COLOR_SPACE_DISPLAY_P3_LINEAR_EXT:                      return "VK_COLOR_SPACE_DISPLAY_P3_LINEAR_EXT";
1707                 case VK_COLOR_SPACE_DCI_P3_NONLINEAR_EXT:                       return "VK_COLOR_SPACE_DCI_P3_NONLINEAR_EXT";
1708                 case VK_COLOR_SPACE_BT709_LINEAR_EXT:                           return "VK_COLOR_SPACE_BT709_LINEAR_EXT";
1709                 case VK_COLOR_SPACE_BT709_NONLINEAR_EXT:                        return "VK_COLOR_SPACE_BT709_NONLINEAR_EXT";
1710                 case VK_COLOR_SPACE_BT2020_LINEAR_EXT:                          return "VK_COLOR_SPACE_BT2020_LINEAR_EXT";
1711                 case VK_COLOR_SPACE_HDR10_ST2084_EXT:                           return "VK_COLOR_SPACE_HDR10_ST2084_EXT";
1712                 case VK_COLOR_SPACE_DOLBYVISION_EXT:                            return "VK_COLOR_SPACE_DOLBYVISION_EXT";
1713                 case VK_COLOR_SPACE_HDR10_HLG_EXT:                                      return "VK_COLOR_SPACE_HDR10_HLG_EXT";
1714                 case VK_COLOR_SPACE_ADOBERGB_LINEAR_EXT:                        return "VK_COLOR_SPACE_ADOBERGB_LINEAR_EXT";
1715                 case VK_COLOR_SPACE_ADOBERGB_NONLINEAR_EXT:                     return "VK_COLOR_SPACE_ADOBERGB_NONLINEAR_EXT";
1716                 case VK_COLOR_SPACE_PASS_THROUGH_EXT:                           return "VK_COLOR_SPACE_PASS_THROUGH_EXT";
1717                 case VK_COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT:        return "VK_COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT";
1718                 case VK_COLOR_SPACE_DISPLAY_NATIVE_AMD:                         return "VK_COLOR_SPACE_DISPLAY_NATIVE_AMD";
1719                 case VK_COLOR_SPACE_MAX_ENUM_KHR:                                       return "VK_COLOR_SPACE_MAX_ENUM_KHR";
1720                 default:                                                                                        return DE_NULL;
1721         }
1722 }
1723
1724 const char* getPerformanceCounterUnitKHRName (VkPerformanceCounterUnitKHR value)
1725 {
1726         switch (value)
1727         {
1728                 case VK_PERFORMANCE_COUNTER_UNIT_GENERIC_KHR:                   return "VK_PERFORMANCE_COUNTER_UNIT_GENERIC_KHR";
1729                 case VK_PERFORMANCE_COUNTER_UNIT_PERCENTAGE_KHR:                return "VK_PERFORMANCE_COUNTER_UNIT_PERCENTAGE_KHR";
1730                 case VK_PERFORMANCE_COUNTER_UNIT_NANOSECONDS_KHR:               return "VK_PERFORMANCE_COUNTER_UNIT_NANOSECONDS_KHR";
1731                 case VK_PERFORMANCE_COUNTER_UNIT_BYTES_KHR:                             return "VK_PERFORMANCE_COUNTER_UNIT_BYTES_KHR";
1732                 case VK_PERFORMANCE_COUNTER_UNIT_BYTES_PER_SECOND_KHR:  return "VK_PERFORMANCE_COUNTER_UNIT_BYTES_PER_SECOND_KHR";
1733                 case VK_PERFORMANCE_COUNTER_UNIT_KELVIN_KHR:                    return "VK_PERFORMANCE_COUNTER_UNIT_KELVIN_KHR";
1734                 case VK_PERFORMANCE_COUNTER_UNIT_WATTS_KHR:                             return "VK_PERFORMANCE_COUNTER_UNIT_WATTS_KHR";
1735                 case VK_PERFORMANCE_COUNTER_UNIT_VOLTS_KHR:                             return "VK_PERFORMANCE_COUNTER_UNIT_VOLTS_KHR";
1736                 case VK_PERFORMANCE_COUNTER_UNIT_AMPS_KHR:                              return "VK_PERFORMANCE_COUNTER_UNIT_AMPS_KHR";
1737                 case VK_PERFORMANCE_COUNTER_UNIT_HERTZ_KHR:                             return "VK_PERFORMANCE_COUNTER_UNIT_HERTZ_KHR";
1738                 case VK_PERFORMANCE_COUNTER_UNIT_CYCLES_KHR:                    return "VK_PERFORMANCE_COUNTER_UNIT_CYCLES_KHR";
1739                 case VK_PERFORMANCE_COUNTER_UNIT_MAX_ENUM_KHR:                  return "VK_PERFORMANCE_COUNTER_UNIT_MAX_ENUM_KHR";
1740                 default:                                                                                                return DE_NULL;
1741         }
1742 }
1743
1744 const char* getPerformanceCounterScopeKHRName (VkPerformanceCounterScopeKHR value)
1745 {
1746         switch (value)
1747         {
1748                 case VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR:   return "VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR";
1749                 case VK_PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR:              return "VK_PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR";
1750                 case VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_KHR:                  return "VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_KHR";
1751                 case VK_PERFORMANCE_COUNTER_SCOPE_MAX_ENUM_KHR:                 return "VK_PERFORMANCE_COUNTER_SCOPE_MAX_ENUM_KHR";
1752                 default:                                                                                                return DE_NULL;
1753         }
1754 }
1755
1756 const char* getPerformanceCounterStorageKHRName (VkPerformanceCounterStorageKHR value)
1757 {
1758         switch (value)
1759         {
1760                 case VK_PERFORMANCE_COUNTER_STORAGE_INT32_KHR:          return "VK_PERFORMANCE_COUNTER_STORAGE_INT32_KHR";
1761                 case VK_PERFORMANCE_COUNTER_STORAGE_INT64_KHR:          return "VK_PERFORMANCE_COUNTER_STORAGE_INT64_KHR";
1762                 case VK_PERFORMANCE_COUNTER_STORAGE_UINT32_KHR:         return "VK_PERFORMANCE_COUNTER_STORAGE_UINT32_KHR";
1763                 case VK_PERFORMANCE_COUNTER_STORAGE_UINT64_KHR:         return "VK_PERFORMANCE_COUNTER_STORAGE_UINT64_KHR";
1764                 case VK_PERFORMANCE_COUNTER_STORAGE_FLOAT32_KHR:        return "VK_PERFORMANCE_COUNTER_STORAGE_FLOAT32_KHR";
1765                 case VK_PERFORMANCE_COUNTER_STORAGE_FLOAT64_KHR:        return "VK_PERFORMANCE_COUNTER_STORAGE_FLOAT64_KHR";
1766                 case VK_PERFORMANCE_COUNTER_STORAGE_MAX_ENUM_KHR:       return "VK_PERFORMANCE_COUNTER_STORAGE_MAX_ENUM_KHR";
1767                 default:                                                                                        return DE_NULL;
1768         }
1769 }
1770
1771 const char* getFragmentShadingRateCombinerOpKHRName (VkFragmentShadingRateCombinerOpKHR value)
1772 {
1773         switch (value)
1774         {
1775                 case VK_FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR:             return "VK_FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR";
1776                 case VK_FRAGMENT_SHADING_RATE_COMBINER_OP_REPLACE_KHR:  return "VK_FRAGMENT_SHADING_RATE_COMBINER_OP_REPLACE_KHR";
1777                 case VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MIN_KHR:              return "VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MIN_KHR";
1778                 case VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MAX_KHR:              return "VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MAX_KHR";
1779                 case VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MUL_KHR:              return "VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MUL_KHR";
1780                 case VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MAX_ENUM_KHR: return "VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MAX_ENUM_KHR";
1781                 default:                                                                                                return DE_NULL;
1782         }
1783 }
1784
1785 const char* getPipelineExecutableStatisticFormatKHRName (VkPipelineExecutableStatisticFormatKHR value)
1786 {
1787         switch (value)
1788         {
1789                 case VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_BOOL32_KHR:        return "VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_BOOL32_KHR";
1790                 case VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_INT64_KHR:         return "VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_INT64_KHR";
1791                 case VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_UINT64_KHR:        return "VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_UINT64_KHR";
1792                 case VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_FLOAT64_KHR:       return "VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_FLOAT64_KHR";
1793                 case VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_MAX_ENUM_KHR:      return "VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_MAX_ENUM_KHR";
1794                 default:                                                                                                        return DE_NULL;
1795         }
1796 }
1797
1798 const char* getDebugReportObjectTypeEXTName (VkDebugReportObjectTypeEXT value)
1799 {
1800         switch (value)
1801         {
1802                 case VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT:                                           return "VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT";
1803                 case VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT:                                          return "VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT";
1804                 case VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT:                           return "VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT";
1805                 case VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT:                                            return "VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT";
1806                 case VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT:                                                     return "VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT";
1807                 case VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT:                                         return "VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT";
1808                 case VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT:                            return "VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT";
1809                 case VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT:                                                     return "VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT";
1810                 case VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT:                                     return "VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT";
1811                 case VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT:                                            return "VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT";
1812                 case VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT:                                                     return "VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT";
1813                 case VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT:                                                     return "VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT";
1814                 case VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT:                                        return "VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT";
1815                 case VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT:                                       return "VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT";
1816                 case VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT:                                        return "VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT";
1817                 case VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT:                                     return "VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT";
1818                 case VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT:                            return "VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT";
1819                 case VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT:                           return "VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT";
1820                 case VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT:                                       return "VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT";
1821                 case VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT:                                          return "VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT";
1822                 case VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT:                     return "VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT";
1823                 case VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT:                                           return "VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT";
1824                 case VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT:                           return "VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT";
1825                 case VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT:                            return "VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT";
1826                 case VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT:                                       return "VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT";
1827                 case VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT:                                      return "VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT";
1828                 case VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT:                                       return "VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT";
1829                 case VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT:                                     return "VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT";
1830                 case VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT:         return "VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT";
1831                 case VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT:                                       return "VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT";
1832                 case VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT:                          return "VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT";
1833                 case VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT:                      return "VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT";
1834                 case VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT:          return "VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT";
1835                 case VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT:        return "VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT";
1836                 case VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR_EXT:        return "VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR_EXT";
1837                 case VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV_EXT:         return "VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV_EXT";
1838                 case VK_DEBUG_REPORT_OBJECT_TYPE_MAX_ENUM_EXT:                                          return "VK_DEBUG_REPORT_OBJECT_TYPE_MAX_ENUM_EXT";
1839                 default:                                                                                                                        return DE_NULL;
1840         }
1841 }
1842
1843 const char* getRasterizationOrderAMDName (VkRasterizationOrderAMD value)
1844 {
1845         switch (value)
1846         {
1847                 case VK_RASTERIZATION_ORDER_STRICT_AMD:         return "VK_RASTERIZATION_ORDER_STRICT_AMD";
1848                 case VK_RASTERIZATION_ORDER_RELAXED_AMD:        return "VK_RASTERIZATION_ORDER_RELAXED_AMD";
1849                 case VK_RASTERIZATION_ORDER_MAX_ENUM_AMD:       return "VK_RASTERIZATION_ORDER_MAX_ENUM_AMD";
1850                 default:                                                                        return DE_NULL;
1851         }
1852 }
1853
1854 const char* getShaderInfoTypeAMDName (VkShaderInfoTypeAMD value)
1855 {
1856         switch (value)
1857         {
1858                 case VK_SHADER_INFO_TYPE_STATISTICS_AMD:        return "VK_SHADER_INFO_TYPE_STATISTICS_AMD";
1859                 case VK_SHADER_INFO_TYPE_BINARY_AMD:            return "VK_SHADER_INFO_TYPE_BINARY_AMD";
1860                 case VK_SHADER_INFO_TYPE_DISASSEMBLY_AMD:       return "VK_SHADER_INFO_TYPE_DISASSEMBLY_AMD";
1861                 case VK_SHADER_INFO_TYPE_MAX_ENUM_AMD:          return "VK_SHADER_INFO_TYPE_MAX_ENUM_AMD";
1862                 default:                                                                        return DE_NULL;
1863         }
1864 }
1865
1866 const char* getValidationCheckEXTName (VkValidationCheckEXT value)
1867 {
1868         switch (value)
1869         {
1870                 case VK_VALIDATION_CHECK_ALL_EXT:               return "VK_VALIDATION_CHECK_ALL_EXT";
1871                 case VK_VALIDATION_CHECK_SHADERS_EXT:   return "VK_VALIDATION_CHECK_SHADERS_EXT";
1872                 case VK_VALIDATION_CHECK_MAX_ENUM_EXT:  return "VK_VALIDATION_CHECK_MAX_ENUM_EXT";
1873                 default:                                                                return DE_NULL;
1874         }
1875 }
1876
1877 const char* getDisplayPowerStateEXTName (VkDisplayPowerStateEXT value)
1878 {
1879         switch (value)
1880         {
1881                 case VK_DISPLAY_POWER_STATE_OFF_EXT:            return "VK_DISPLAY_POWER_STATE_OFF_EXT";
1882                 case VK_DISPLAY_POWER_STATE_SUSPEND_EXT:        return "VK_DISPLAY_POWER_STATE_SUSPEND_EXT";
1883                 case VK_DISPLAY_POWER_STATE_ON_EXT:                     return "VK_DISPLAY_POWER_STATE_ON_EXT";
1884                 case VK_DISPLAY_POWER_STATE_MAX_ENUM_EXT:       return "VK_DISPLAY_POWER_STATE_MAX_ENUM_EXT";
1885                 default:                                                                        return DE_NULL;
1886         }
1887 }
1888
1889 const char* getDeviceEventTypeEXTName (VkDeviceEventTypeEXT value)
1890 {
1891         switch (value)
1892         {
1893                 case VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT:  return "VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT";
1894                 case VK_DEVICE_EVENT_TYPE_MAX_ENUM_EXT:                 return "VK_DEVICE_EVENT_TYPE_MAX_ENUM_EXT";
1895                 default:                                                                                return DE_NULL;
1896         }
1897 }
1898
1899 const char* getDisplayEventTypeEXTName (VkDisplayEventTypeEXT value)
1900 {
1901         switch (value)
1902         {
1903                 case VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT: return "VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT";
1904                 case VK_DISPLAY_EVENT_TYPE_MAX_ENUM_EXT:                return "VK_DISPLAY_EVENT_TYPE_MAX_ENUM_EXT";
1905                 default:                                                                                return DE_NULL;
1906         }
1907 }
1908
1909 const char* getViewportCoordinateSwizzleNVName (VkViewportCoordinateSwizzleNV value)
1910 {
1911         switch (value)
1912         {
1913                 case VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV:      return "VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV";
1914                 case VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV:      return "VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV";
1915                 case VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV:      return "VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV";
1916                 case VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV:      return "VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV";
1917                 case VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV:      return "VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV";
1918                 case VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV:      return "VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV";
1919                 case VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV:      return "VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV";
1920                 case VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV:      return "VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV";
1921                 case VK_VIEWPORT_COORDINATE_SWIZZLE_MAX_ENUM_NV:        return "VK_VIEWPORT_COORDINATE_SWIZZLE_MAX_ENUM_NV";
1922                 default:                                                                                        return DE_NULL;
1923         }
1924 }
1925
1926 const char* getDiscardRectangleModeEXTName (VkDiscardRectangleModeEXT value)
1927 {
1928         switch (value)
1929         {
1930                 case VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT:   return "VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT";
1931                 case VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT:   return "VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT";
1932                 case VK_DISCARD_RECTANGLE_MODE_MAX_ENUM_EXT:    return "VK_DISCARD_RECTANGLE_MODE_MAX_ENUM_EXT";
1933                 default:                                                                                return DE_NULL;
1934         }
1935 }
1936
1937 const char* getConservativeRasterizationModeEXTName (VkConservativeRasterizationModeEXT value)
1938 {
1939         switch (value)
1940         {
1941                 case VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT:           return "VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT";
1942                 case VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT:       return "VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT";
1943                 case VK_CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT:      return "VK_CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT";
1944                 case VK_CONSERVATIVE_RASTERIZATION_MODE_MAX_ENUM_EXT:           return "VK_CONSERVATIVE_RASTERIZATION_MODE_MAX_ENUM_EXT";
1945                 default:                                                                                                        return DE_NULL;
1946         }
1947 }
1948
1949 const char* getBlendOverlapEXTName (VkBlendOverlapEXT value)
1950 {
1951         switch (value)
1952         {
1953                 case VK_BLEND_OVERLAP_UNCORRELATED_EXT: return "VK_BLEND_OVERLAP_UNCORRELATED_EXT";
1954                 case VK_BLEND_OVERLAP_DISJOINT_EXT:             return "VK_BLEND_OVERLAP_DISJOINT_EXT";
1955                 case VK_BLEND_OVERLAP_CONJOINT_EXT:             return "VK_BLEND_OVERLAP_CONJOINT_EXT";
1956                 case VK_BLEND_OVERLAP_MAX_ENUM_EXT:             return "VK_BLEND_OVERLAP_MAX_ENUM_EXT";
1957                 default:                                                                return DE_NULL;
1958         }
1959 }
1960
1961 const char* getCoverageModulationModeNVName (VkCoverageModulationModeNV value)
1962 {
1963         switch (value)
1964         {
1965                 case VK_COVERAGE_MODULATION_MODE_NONE_NV:               return "VK_COVERAGE_MODULATION_MODE_NONE_NV";
1966                 case VK_COVERAGE_MODULATION_MODE_RGB_NV:                return "VK_COVERAGE_MODULATION_MODE_RGB_NV";
1967                 case VK_COVERAGE_MODULATION_MODE_ALPHA_NV:              return "VK_COVERAGE_MODULATION_MODE_ALPHA_NV";
1968                 case VK_COVERAGE_MODULATION_MODE_RGBA_NV:               return "VK_COVERAGE_MODULATION_MODE_RGBA_NV";
1969                 case VK_COVERAGE_MODULATION_MODE_MAX_ENUM_NV:   return "VK_COVERAGE_MODULATION_MODE_MAX_ENUM_NV";
1970                 default:                                                                                return DE_NULL;
1971         }
1972 }
1973
1974 const char* getValidationCacheHeaderVersionEXTName (VkValidationCacheHeaderVersionEXT value)
1975 {
1976         switch (value)
1977         {
1978                 case VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT:                return "VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT";
1979                 case VK_VALIDATION_CACHE_HEADER_VERSION_MAX_ENUM_EXT:   return "VK_VALIDATION_CACHE_HEADER_VERSION_MAX_ENUM_EXT";
1980                 default:                                                                                                return DE_NULL;
1981         }
1982 }
1983
1984 const char* getShadingRatePaletteEntryNVName (VkShadingRatePaletteEntryNV value)
1985 {
1986         switch (value)
1987         {
1988                 case VK_SHADING_RATE_PALETTE_ENTRY_NO_INVOCATIONS_NV:                           return "VK_SHADING_RATE_PALETTE_ENTRY_NO_INVOCATIONS_NV";
1989                 case VK_SHADING_RATE_PALETTE_ENTRY_16_INVOCATIONS_PER_PIXEL_NV:         return "VK_SHADING_RATE_PALETTE_ENTRY_16_INVOCATIONS_PER_PIXEL_NV";
1990                 case VK_SHADING_RATE_PALETTE_ENTRY_8_INVOCATIONS_PER_PIXEL_NV:          return "VK_SHADING_RATE_PALETTE_ENTRY_8_INVOCATIONS_PER_PIXEL_NV";
1991                 case VK_SHADING_RATE_PALETTE_ENTRY_4_INVOCATIONS_PER_PIXEL_NV:          return "VK_SHADING_RATE_PALETTE_ENTRY_4_INVOCATIONS_PER_PIXEL_NV";
1992                 case VK_SHADING_RATE_PALETTE_ENTRY_2_INVOCATIONS_PER_PIXEL_NV:          return "VK_SHADING_RATE_PALETTE_ENTRY_2_INVOCATIONS_PER_PIXEL_NV";
1993                 case VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_PIXEL_NV:           return "VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_PIXEL_NV";
1994                 case VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X1_PIXELS_NV:      return "VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X1_PIXELS_NV";
1995                 case VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_1X2_PIXELS_NV:      return "VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_1X2_PIXELS_NV";
1996                 case VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X2_PIXELS_NV:      return "VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X2_PIXELS_NV";
1997                 case VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X2_PIXELS_NV:      return "VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X2_PIXELS_NV";
1998                 case VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X4_PIXELS_NV:      return "VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X4_PIXELS_NV";
1999                 case VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X4_PIXELS_NV:      return "VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X4_PIXELS_NV";
2000                 case VK_SHADING_RATE_PALETTE_ENTRY_MAX_ENUM_NV:                                         return "VK_SHADING_RATE_PALETTE_ENTRY_MAX_ENUM_NV";
2001                 default:                                                                                                                        return DE_NULL;
2002         }
2003 }
2004
2005 const char* getCoarseSampleOrderTypeNVName (VkCoarseSampleOrderTypeNV value)
2006 {
2007         switch (value)
2008         {
2009                 case VK_COARSE_SAMPLE_ORDER_TYPE_DEFAULT_NV:            return "VK_COARSE_SAMPLE_ORDER_TYPE_DEFAULT_NV";
2010                 case VK_COARSE_SAMPLE_ORDER_TYPE_CUSTOM_NV:                     return "VK_COARSE_SAMPLE_ORDER_TYPE_CUSTOM_NV";
2011                 case VK_COARSE_SAMPLE_ORDER_TYPE_PIXEL_MAJOR_NV:        return "VK_COARSE_SAMPLE_ORDER_TYPE_PIXEL_MAJOR_NV";
2012                 case VK_COARSE_SAMPLE_ORDER_TYPE_SAMPLE_MAJOR_NV:       return "VK_COARSE_SAMPLE_ORDER_TYPE_SAMPLE_MAJOR_NV";
2013                 case VK_COARSE_SAMPLE_ORDER_TYPE_MAX_ENUM_NV:           return "VK_COARSE_SAMPLE_ORDER_TYPE_MAX_ENUM_NV";
2014                 default:                                                                                        return DE_NULL;
2015         }
2016 }
2017
2018 const char* getRayTracingShaderGroupTypeKHRName (VkRayTracingShaderGroupTypeKHR value)
2019 {
2020         switch (value)
2021         {
2022                 case VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR:                              return "VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR";
2023                 case VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR:  return "VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR";
2024                 case VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR: return "VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR";
2025                 case VK_RAY_TRACING_SHADER_GROUP_TYPE_MAX_ENUM_KHR:                             return "VK_RAY_TRACING_SHADER_GROUP_TYPE_MAX_ENUM_KHR";
2026                 default:                                                                                                                return DE_NULL;
2027         }
2028 }
2029
2030 const char* getGeometryTypeKHRName (VkGeometryTypeKHR value)
2031 {
2032         switch (value)
2033         {
2034                 case VK_GEOMETRY_TYPE_TRIANGLES_KHR:    return "VK_GEOMETRY_TYPE_TRIANGLES_KHR";
2035                 case VK_GEOMETRY_TYPE_AABBS_KHR:                return "VK_GEOMETRY_TYPE_AABBS_KHR";
2036                 case VK_GEOMETRY_TYPE_INSTANCES_KHR:    return "VK_GEOMETRY_TYPE_INSTANCES_KHR";
2037                 case VK_GEOMETRY_TYPE_MAX_ENUM_KHR:             return "VK_GEOMETRY_TYPE_MAX_ENUM_KHR";
2038                 default:                                                                return DE_NULL;
2039         }
2040 }
2041
2042 const char* getAccelerationStructureTypeKHRName (VkAccelerationStructureTypeKHR value)
2043 {
2044         switch (value)
2045         {
2046                 case VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR:              return "VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR";
2047                 case VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR:   return "VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR";
2048                 case VK_ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR:                return "VK_ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR";
2049                 case VK_ACCELERATION_STRUCTURE_TYPE_MAX_ENUM_KHR:               return "VK_ACCELERATION_STRUCTURE_TYPE_MAX_ENUM_KHR";
2050                 default:                                                                                                return DE_NULL;
2051         }
2052 }
2053
2054 const char* getCopyAccelerationStructureModeKHRName (VkCopyAccelerationStructureModeKHR value)
2055 {
2056         switch (value)
2057         {
2058                 case VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR:                     return "VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR";
2059                 case VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR:           return "VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR";
2060                 case VK_COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR:         return "VK_COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR";
2061                 case VK_COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR:       return "VK_COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR";
2062                 case VK_COPY_ACCELERATION_STRUCTURE_MODE_MAX_ENUM_KHR:          return "VK_COPY_ACCELERATION_STRUCTURE_MODE_MAX_ENUM_KHR";
2063                 default:                                                                                                        return DE_NULL;
2064         }
2065 }
2066
2067 const char* getAccelerationStructureMemoryRequirementsTypeNVName (VkAccelerationStructureMemoryRequirementsTypeNV value)
2068 {
2069         switch (value)
2070         {
2071                 case VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV:                      return "VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV";
2072                 case VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV:       return "VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV";
2073                 case VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV:      return "VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV";
2074                 case VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_MAX_ENUM_NV:            return "VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_MAX_ENUM_NV";
2075                 default:                                                                                                                                        return DE_NULL;
2076         }
2077 }
2078
2079 const char* getQueueGlobalPriorityEXTName (VkQueueGlobalPriorityEXT value)
2080 {
2081         switch (value)
2082         {
2083                 case VK_QUEUE_GLOBAL_PRIORITY_LOW_EXT:          return "VK_QUEUE_GLOBAL_PRIORITY_LOW_EXT";
2084                 case VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT:       return "VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT";
2085                 case VK_QUEUE_GLOBAL_PRIORITY_HIGH_EXT:         return "VK_QUEUE_GLOBAL_PRIORITY_HIGH_EXT";
2086                 case VK_QUEUE_GLOBAL_PRIORITY_REALTIME_EXT:     return "VK_QUEUE_GLOBAL_PRIORITY_REALTIME_EXT";
2087                 case VK_QUEUE_GLOBAL_PRIORITY_MAX_ENUM_EXT:     return "VK_QUEUE_GLOBAL_PRIORITY_MAX_ENUM_EXT";
2088                 default:                                                                        return DE_NULL;
2089         }
2090 }
2091
2092 const char* getTimeDomainEXTName (VkTimeDomainEXT value)
2093 {
2094         switch (value)
2095         {
2096                 case VK_TIME_DOMAIN_DEVICE_EXT:                                         return "VK_TIME_DOMAIN_DEVICE_EXT";
2097                 case VK_TIME_DOMAIN_CLOCK_MONOTONIC_EXT:                        return "VK_TIME_DOMAIN_CLOCK_MONOTONIC_EXT";
2098                 case VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXT:            return "VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXT";
2099                 case VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXT:      return "VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXT";
2100                 case VK_TIME_DOMAIN_MAX_ENUM_EXT:                                       return "VK_TIME_DOMAIN_MAX_ENUM_EXT";
2101                 default:                                                                                        return DE_NULL;
2102         }
2103 }
2104
2105 const char* getMemoryOverallocationBehaviorAMDName (VkMemoryOverallocationBehaviorAMD value)
2106 {
2107         switch (value)
2108         {
2109                 case VK_MEMORY_OVERALLOCATION_BEHAVIOR_DEFAULT_AMD:             return "VK_MEMORY_OVERALLOCATION_BEHAVIOR_DEFAULT_AMD";
2110                 case VK_MEMORY_OVERALLOCATION_BEHAVIOR_ALLOWED_AMD:             return "VK_MEMORY_OVERALLOCATION_BEHAVIOR_ALLOWED_AMD";
2111                 case VK_MEMORY_OVERALLOCATION_BEHAVIOR_DISALLOWED_AMD:  return "VK_MEMORY_OVERALLOCATION_BEHAVIOR_DISALLOWED_AMD";
2112                 case VK_MEMORY_OVERALLOCATION_BEHAVIOR_MAX_ENUM_AMD:    return "VK_MEMORY_OVERALLOCATION_BEHAVIOR_MAX_ENUM_AMD";
2113                 default:                                                                                                return DE_NULL;
2114         }
2115 }
2116
2117 const char* getPerformanceConfigurationTypeINTELName (VkPerformanceConfigurationTypeINTEL value)
2118 {
2119         switch (value)
2120         {
2121                 case VK_PERFORMANCE_CONFIGURATION_TYPE_COMMAND_QUEUE_METRICS_DISCOVERY_ACTIVATED_INTEL: return "VK_PERFORMANCE_CONFIGURATION_TYPE_COMMAND_QUEUE_METRICS_DISCOVERY_ACTIVATED_INTEL";
2122                 case VK_PERFORMANCE_CONFIGURATION_TYPE_MAX_ENUM_INTEL:                                                                  return "VK_PERFORMANCE_CONFIGURATION_TYPE_MAX_ENUM_INTEL";
2123                 default:                                                                                                                                                                return DE_NULL;
2124         }
2125 }
2126
2127 const char* getQueryPoolSamplingModeINTELName (VkQueryPoolSamplingModeINTEL value)
2128 {
2129         switch (value)
2130         {
2131                 case VK_QUERY_POOL_SAMPLING_MODE_MANUAL_INTEL:          return "VK_QUERY_POOL_SAMPLING_MODE_MANUAL_INTEL";
2132                 case VK_QUERY_POOL_SAMPLING_MODE_MAX_ENUM_INTEL:        return "VK_QUERY_POOL_SAMPLING_MODE_MAX_ENUM_INTEL";
2133                 default:                                                                                        return DE_NULL;
2134         }
2135 }
2136
2137 const char* getPerformanceOverrideTypeINTELName (VkPerformanceOverrideTypeINTEL value)
2138 {
2139         switch (value)
2140         {
2141                 case VK_PERFORMANCE_OVERRIDE_TYPE_NULL_HARDWARE_INTEL:          return "VK_PERFORMANCE_OVERRIDE_TYPE_NULL_HARDWARE_INTEL";
2142                 case VK_PERFORMANCE_OVERRIDE_TYPE_FLUSH_GPU_CACHES_INTEL:       return "VK_PERFORMANCE_OVERRIDE_TYPE_FLUSH_GPU_CACHES_INTEL";
2143                 case VK_PERFORMANCE_OVERRIDE_TYPE_MAX_ENUM_INTEL:                       return "VK_PERFORMANCE_OVERRIDE_TYPE_MAX_ENUM_INTEL";
2144                 default:                                                                                                        return DE_NULL;
2145         }
2146 }
2147
2148 const char* getPerformanceParameterTypeINTELName (VkPerformanceParameterTypeINTEL value)
2149 {
2150         switch (value)
2151         {
2152                 case VK_PERFORMANCE_PARAMETER_TYPE_HW_COUNTERS_SUPPORTED_INTEL:         return "VK_PERFORMANCE_PARAMETER_TYPE_HW_COUNTERS_SUPPORTED_INTEL";
2153                 case VK_PERFORMANCE_PARAMETER_TYPE_STREAM_MARKER_VALID_BITS_INTEL:      return "VK_PERFORMANCE_PARAMETER_TYPE_STREAM_MARKER_VALID_BITS_INTEL";
2154                 case VK_PERFORMANCE_PARAMETER_TYPE_MAX_ENUM_INTEL:                                      return "VK_PERFORMANCE_PARAMETER_TYPE_MAX_ENUM_INTEL";
2155                 default:                                                                                                                        return DE_NULL;
2156         }
2157 }
2158
2159 const char* getPerformanceValueTypeINTELName (VkPerformanceValueTypeINTEL value)
2160 {
2161         switch (value)
2162         {
2163                 case VK_PERFORMANCE_VALUE_TYPE_UINT32_INTEL:    return "VK_PERFORMANCE_VALUE_TYPE_UINT32_INTEL";
2164                 case VK_PERFORMANCE_VALUE_TYPE_UINT64_INTEL:    return "VK_PERFORMANCE_VALUE_TYPE_UINT64_INTEL";
2165                 case VK_PERFORMANCE_VALUE_TYPE_FLOAT_INTEL:             return "VK_PERFORMANCE_VALUE_TYPE_FLOAT_INTEL";
2166                 case VK_PERFORMANCE_VALUE_TYPE_BOOL_INTEL:              return "VK_PERFORMANCE_VALUE_TYPE_BOOL_INTEL";
2167                 case VK_PERFORMANCE_VALUE_TYPE_STRING_INTEL:    return "VK_PERFORMANCE_VALUE_TYPE_STRING_INTEL";
2168                 case VK_PERFORMANCE_VALUE_TYPE_MAX_ENUM_INTEL:  return "VK_PERFORMANCE_VALUE_TYPE_MAX_ENUM_INTEL";
2169                 default:                                                                                return DE_NULL;
2170         }
2171 }
2172
2173 const char* getValidationFeatureEnableEXTName (VkValidationFeatureEnableEXT value)
2174 {
2175         switch (value)
2176         {
2177                 case VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT:                                                     return "VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT";
2178                 case VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT:        return "VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT";
2179                 case VK_VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT:                                           return "VK_VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT";
2180                 case VK_VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT:                                                     return "VK_VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT";
2181                 case VK_VALIDATION_FEATURE_ENABLE_SYNCHRONIZATION_VALIDATION_EXT:                       return "VK_VALIDATION_FEATURE_ENABLE_SYNCHRONIZATION_VALIDATION_EXT";
2182                 case VK_VALIDATION_FEATURE_ENABLE_MAX_ENUM_EXT:                                                         return "VK_VALIDATION_FEATURE_ENABLE_MAX_ENUM_EXT";
2183                 default:                                                                                                                                        return DE_NULL;
2184         }
2185 }
2186
2187 const char* getValidationFeatureDisableEXTName (VkValidationFeatureDisableEXT value)
2188 {
2189         switch (value)
2190         {
2191                 case VK_VALIDATION_FEATURE_DISABLE_ALL_EXT:                                     return "VK_VALIDATION_FEATURE_DISABLE_ALL_EXT";
2192                 case VK_VALIDATION_FEATURE_DISABLE_SHADERS_EXT:                         return "VK_VALIDATION_FEATURE_DISABLE_SHADERS_EXT";
2193                 case VK_VALIDATION_FEATURE_DISABLE_THREAD_SAFETY_EXT:           return "VK_VALIDATION_FEATURE_DISABLE_THREAD_SAFETY_EXT";
2194                 case VK_VALIDATION_FEATURE_DISABLE_API_PARAMETERS_EXT:          return "VK_VALIDATION_FEATURE_DISABLE_API_PARAMETERS_EXT";
2195                 case VK_VALIDATION_FEATURE_DISABLE_OBJECT_LIFETIMES_EXT:        return "VK_VALIDATION_FEATURE_DISABLE_OBJECT_LIFETIMES_EXT";
2196                 case VK_VALIDATION_FEATURE_DISABLE_CORE_CHECKS_EXT:                     return "VK_VALIDATION_FEATURE_DISABLE_CORE_CHECKS_EXT";
2197                 case VK_VALIDATION_FEATURE_DISABLE_UNIQUE_HANDLES_EXT:          return "VK_VALIDATION_FEATURE_DISABLE_UNIQUE_HANDLES_EXT";
2198                 case VK_VALIDATION_FEATURE_DISABLE_MAX_ENUM_EXT:                        return "VK_VALIDATION_FEATURE_DISABLE_MAX_ENUM_EXT";
2199                 default:                                                                                                        return DE_NULL;
2200         }
2201 }
2202
2203 const char* getComponentTypeNVName (VkComponentTypeNV value)
2204 {
2205         switch (value)
2206         {
2207                 case VK_COMPONENT_TYPE_FLOAT16_NV:      return "VK_COMPONENT_TYPE_FLOAT16_NV";
2208                 case VK_COMPONENT_TYPE_FLOAT32_NV:      return "VK_COMPONENT_TYPE_FLOAT32_NV";
2209                 case VK_COMPONENT_TYPE_FLOAT64_NV:      return "VK_COMPONENT_TYPE_FLOAT64_NV";
2210                 case VK_COMPONENT_TYPE_SINT8_NV:        return "VK_COMPONENT_TYPE_SINT8_NV";
2211                 case VK_COMPONENT_TYPE_SINT16_NV:       return "VK_COMPONENT_TYPE_SINT16_NV";
2212                 case VK_COMPONENT_TYPE_SINT32_NV:       return "VK_COMPONENT_TYPE_SINT32_NV";
2213                 case VK_COMPONENT_TYPE_SINT64_NV:       return "VK_COMPONENT_TYPE_SINT64_NV";
2214                 case VK_COMPONENT_TYPE_UINT8_NV:        return "VK_COMPONENT_TYPE_UINT8_NV";
2215                 case VK_COMPONENT_TYPE_UINT16_NV:       return "VK_COMPONENT_TYPE_UINT16_NV";
2216                 case VK_COMPONENT_TYPE_UINT32_NV:       return "VK_COMPONENT_TYPE_UINT32_NV";
2217                 case VK_COMPONENT_TYPE_UINT64_NV:       return "VK_COMPONENT_TYPE_UINT64_NV";
2218                 case VK_COMPONENT_TYPE_MAX_ENUM_NV:     return "VK_COMPONENT_TYPE_MAX_ENUM_NV";
2219                 default:                                                        return DE_NULL;
2220         }
2221 }
2222
2223 const char* getScopeNVName (VkScopeNV value)
2224 {
2225         switch (value)
2226         {
2227                 case VK_SCOPE_DEVICE_NV:                return "VK_SCOPE_DEVICE_NV";
2228                 case VK_SCOPE_WORKGROUP_NV:             return "VK_SCOPE_WORKGROUP_NV";
2229                 case VK_SCOPE_SUBGROUP_NV:              return "VK_SCOPE_SUBGROUP_NV";
2230                 case VK_SCOPE_QUEUE_FAMILY_NV:  return "VK_SCOPE_QUEUE_FAMILY_NV";
2231                 case VK_SCOPE_MAX_ENUM_NV:              return "VK_SCOPE_MAX_ENUM_NV";
2232                 default:                                                return DE_NULL;
2233         }
2234 }
2235
2236 const char* getCoverageReductionModeNVName (VkCoverageReductionModeNV value)
2237 {
2238         switch (value)
2239         {
2240                 case VK_COVERAGE_REDUCTION_MODE_MERGE_NV:               return "VK_COVERAGE_REDUCTION_MODE_MERGE_NV";
2241                 case VK_COVERAGE_REDUCTION_MODE_TRUNCATE_NV:    return "VK_COVERAGE_REDUCTION_MODE_TRUNCATE_NV";
2242                 case VK_COVERAGE_REDUCTION_MODE_MAX_ENUM_NV:    return "VK_COVERAGE_REDUCTION_MODE_MAX_ENUM_NV";
2243                 default:                                                                                return DE_NULL;
2244         }
2245 }
2246
2247 const char* getLineRasterizationModeEXTName (VkLineRasterizationModeEXT value)
2248 {
2249         switch (value)
2250         {
2251                 case VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT:                    return "VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT";
2252                 case VK_LINE_RASTERIZATION_MODE_RECTANGULAR_EXT:                return "VK_LINE_RASTERIZATION_MODE_RECTANGULAR_EXT";
2253                 case VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT:                  return "VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT";
2254                 case VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT: return "VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT";
2255                 case VK_LINE_RASTERIZATION_MODE_MAX_ENUM_EXT:                   return "VK_LINE_RASTERIZATION_MODE_MAX_ENUM_EXT";
2256                 default:                                                                                                return DE_NULL;
2257         }
2258 }
2259
2260 const char* getIndirectCommandsTokenTypeNVName (VkIndirectCommandsTokenTypeNV value)
2261 {
2262         switch (value)
2263         {
2264                 case VK_INDIRECT_COMMANDS_TOKEN_TYPE_SHADER_GROUP_NV:   return "VK_INDIRECT_COMMANDS_TOKEN_TYPE_SHADER_GROUP_NV";
2265                 case VK_INDIRECT_COMMANDS_TOKEN_TYPE_STATE_FLAGS_NV:    return "VK_INDIRECT_COMMANDS_TOKEN_TYPE_STATE_FLAGS_NV";
2266                 case VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NV:   return "VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NV";
2267                 case VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NV:  return "VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NV";
2268                 case VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV:  return "VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV";
2269                 case VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NV:   return "VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NV";
2270                 case VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NV:                   return "VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NV";
2271                 case VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_TASKS_NV:             return "VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_TASKS_NV";
2272                 case VK_INDIRECT_COMMANDS_TOKEN_TYPE_MAX_ENUM_NV:               return "VK_INDIRECT_COMMANDS_TOKEN_TYPE_MAX_ENUM_NV";
2273                 default:                                                                                                return DE_NULL;
2274         }
2275 }
2276
2277 const char* getDeviceMemoryReportEventTypeEXTName (VkDeviceMemoryReportEventTypeEXT value)
2278 {
2279         switch (value)
2280         {
2281                 case VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_ALLOCATE_EXT:                   return "VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_ALLOCATE_EXT";
2282                 case VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_FREE_EXT:                               return "VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_FREE_EXT";
2283                 case VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_IMPORT_EXT:                             return "VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_IMPORT_EXT";
2284                 case VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_UNIMPORT_EXT:                   return "VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_UNIMPORT_EXT";
2285                 case VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_ALLOCATION_FAILED_EXT:  return "VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_ALLOCATION_FAILED_EXT";
2286                 case VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_MAX_ENUM_EXT:                   return "VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_MAX_ENUM_EXT";
2287                 default:                                                                                                                return DE_NULL;
2288         }
2289 }
2290
2291 const char* getFragmentShadingRateTypeNVName (VkFragmentShadingRateTypeNV value)
2292 {
2293         switch (value)
2294         {
2295                 case VK_FRAGMENT_SHADING_RATE_TYPE_FRAGMENT_SIZE_NV:    return "VK_FRAGMENT_SHADING_RATE_TYPE_FRAGMENT_SIZE_NV";
2296                 case VK_FRAGMENT_SHADING_RATE_TYPE_ENUMS_NV:                    return "VK_FRAGMENT_SHADING_RATE_TYPE_ENUMS_NV";
2297                 case VK_FRAGMENT_SHADING_RATE_TYPE_MAX_ENUM_NV:                 return "VK_FRAGMENT_SHADING_RATE_TYPE_MAX_ENUM_NV";
2298                 default:                                                                                                return DE_NULL;
2299         }
2300 }
2301
2302 const char* getFragmentShadingRateNVName (VkFragmentShadingRateNV value)
2303 {
2304         switch (value)
2305         {
2306                 case VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_PIXEL_NV:                return "VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_PIXEL_NV";
2307                 case VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_1X2_PIXELS_NV:   return "VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_1X2_PIXELS_NV";
2308                 case VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_2X1_PIXELS_NV:   return "VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_2X1_PIXELS_NV";
2309                 case VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_2X2_PIXELS_NV:   return "VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_2X2_PIXELS_NV";
2310                 case VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_2X4_PIXELS_NV:   return "VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_2X4_PIXELS_NV";
2311                 case VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_4X2_PIXELS_NV:   return "VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_4X2_PIXELS_NV";
2312                 case VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_4X4_PIXELS_NV:   return "VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_4X4_PIXELS_NV";
2313                 case VK_FRAGMENT_SHADING_RATE_2_INVOCATIONS_PER_PIXEL_NV:               return "VK_FRAGMENT_SHADING_RATE_2_INVOCATIONS_PER_PIXEL_NV";
2314                 case VK_FRAGMENT_SHADING_RATE_4_INVOCATIONS_PER_PIXEL_NV:               return "VK_FRAGMENT_SHADING_RATE_4_INVOCATIONS_PER_PIXEL_NV";
2315                 case VK_FRAGMENT_SHADING_RATE_8_INVOCATIONS_PER_PIXEL_NV:               return "VK_FRAGMENT_SHADING_RATE_8_INVOCATIONS_PER_PIXEL_NV";
2316                 case VK_FRAGMENT_SHADING_RATE_16_INVOCATIONS_PER_PIXEL_NV:              return "VK_FRAGMENT_SHADING_RATE_16_INVOCATIONS_PER_PIXEL_NV";
2317                 case VK_FRAGMENT_SHADING_RATE_NO_INVOCATIONS_NV:                                return "VK_FRAGMENT_SHADING_RATE_NO_INVOCATIONS_NV";
2318                 case VK_FRAGMENT_SHADING_RATE_MAX_ENUM_NV:                                              return "VK_FRAGMENT_SHADING_RATE_MAX_ENUM_NV";
2319                 default:                                                                                                                return DE_NULL;
2320         }
2321 }
2322
2323 const char* getBuildAccelerationStructureModeKHRName (VkBuildAccelerationStructureModeKHR value)
2324 {
2325         switch (value)
2326         {
2327                 case VK_BUILD_ACCELERATION_STRUCTURE_MODE_BUILD_KHR:    return "VK_BUILD_ACCELERATION_STRUCTURE_MODE_BUILD_KHR";
2328                 case VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR:   return "VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR";
2329                 case VK_BUILD_ACCELERATION_STRUCTURE_MODE_MAX_ENUM_KHR: return "VK_BUILD_ACCELERATION_STRUCTURE_MODE_MAX_ENUM_KHR";
2330                 default:                                                                                                return DE_NULL;
2331         }
2332 }
2333
2334 const char* getAccelerationStructureBuildTypeKHRName (VkAccelerationStructureBuildTypeKHR value)
2335 {
2336         switch (value)
2337         {
2338                 case VK_ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_KHR:                             return "VK_ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_KHR";
2339                 case VK_ACCELERATION_STRUCTURE_BUILD_TYPE_DEVICE_KHR:                   return "VK_ACCELERATION_STRUCTURE_BUILD_TYPE_DEVICE_KHR";
2340                 case VK_ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_OR_DEVICE_KHR:   return "VK_ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_OR_DEVICE_KHR";
2341                 case VK_ACCELERATION_STRUCTURE_BUILD_TYPE_MAX_ENUM_KHR:                 return "VK_ACCELERATION_STRUCTURE_BUILD_TYPE_MAX_ENUM_KHR";
2342                 default:                                                                                                                return DE_NULL;
2343         }
2344 }
2345
2346 const char* getAccelerationStructureCompatibilityKHRName (VkAccelerationStructureCompatibilityKHR value)
2347 {
2348         switch (value)
2349         {
2350                 case VK_ACCELERATION_STRUCTURE_COMPATIBILITY_COMPATIBLE_KHR:    return "VK_ACCELERATION_STRUCTURE_COMPATIBILITY_COMPATIBLE_KHR";
2351                 case VK_ACCELERATION_STRUCTURE_COMPATIBILITY_INCOMPATIBLE_KHR:  return "VK_ACCELERATION_STRUCTURE_COMPATIBILITY_INCOMPATIBLE_KHR";
2352                 case VK_ACCELERATION_STRUCTURE_COMPATIBILITY_MAX_ENUM_KHR:              return "VK_ACCELERATION_STRUCTURE_COMPATIBILITY_MAX_ENUM_KHR";
2353                 default:                                                                                                                return DE_NULL;
2354         }
2355 }
2356
2357 const char* getShaderGroupShaderKHRName (VkShaderGroupShaderKHR value)
2358 {
2359         switch (value)
2360         {
2361                 case VK_SHADER_GROUP_SHADER_GENERAL_KHR:                return "VK_SHADER_GROUP_SHADER_GENERAL_KHR";
2362                 case VK_SHADER_GROUP_SHADER_CLOSEST_HIT_KHR:    return "VK_SHADER_GROUP_SHADER_CLOSEST_HIT_KHR";
2363                 case VK_SHADER_GROUP_SHADER_ANY_HIT_KHR:                return "VK_SHADER_GROUP_SHADER_ANY_HIT_KHR";
2364                 case VK_SHADER_GROUP_SHADER_INTERSECTION_KHR:   return "VK_SHADER_GROUP_SHADER_INTERSECTION_KHR";
2365                 case VK_SHADER_GROUP_SHADER_MAX_ENUM_KHR:               return "VK_SHADER_GROUP_SHADER_MAX_ENUM_KHR";
2366                 default:                                                                                return DE_NULL;
2367         }
2368 }
2369
2370 const char* getFullScreenExclusiveEXTName (VkFullScreenExclusiveEXT value)
2371 {
2372         switch (value)
2373         {
2374                 case VK_FULL_SCREEN_EXCLUSIVE_DEFAULT_EXT:                                      return "VK_FULL_SCREEN_EXCLUSIVE_DEFAULT_EXT";
2375                 case VK_FULL_SCREEN_EXCLUSIVE_ALLOWED_EXT:                                      return "VK_FULL_SCREEN_EXCLUSIVE_ALLOWED_EXT";
2376                 case VK_FULL_SCREEN_EXCLUSIVE_DISALLOWED_EXT:                           return "VK_FULL_SCREEN_EXCLUSIVE_DISALLOWED_EXT";
2377                 case VK_FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT:       return "VK_FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT";
2378                 case VK_FULL_SCREEN_EXCLUSIVE_MAX_ENUM_EXT:                                     return "VK_FULL_SCREEN_EXCLUSIVE_MAX_ENUM_EXT";
2379                 default:                                                                                                        return DE_NULL;
2380         }
2381 }
2382
2383 tcu::Format::Bitfield<32> getAccessFlagsStr (VkAccessFlags value)
2384 {
2385         static const tcu::Format::BitDesc s_desc[] =
2386         {
2387                 tcu::Format::BitDesc(VK_ACCESS_INDIRECT_COMMAND_READ_BIT,                                               "VK_ACCESS_INDIRECT_COMMAND_READ_BIT"),
2388                 tcu::Format::BitDesc(VK_ACCESS_INDEX_READ_BIT,                                                                  "VK_ACCESS_INDEX_READ_BIT"),
2389                 tcu::Format::BitDesc(VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT,                                               "VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT"),
2390                 tcu::Format::BitDesc(VK_ACCESS_UNIFORM_READ_BIT,                                                                "VK_ACCESS_UNIFORM_READ_BIT"),
2391                 tcu::Format::BitDesc(VK_ACCESS_INPUT_ATTACHMENT_READ_BIT,                                               "VK_ACCESS_INPUT_ATTACHMENT_READ_BIT"),
2392                 tcu::Format::BitDesc(VK_ACCESS_SHADER_READ_BIT,                                                                 "VK_ACCESS_SHADER_READ_BIT"),
2393                 tcu::Format::BitDesc(VK_ACCESS_SHADER_WRITE_BIT,                                                                "VK_ACCESS_SHADER_WRITE_BIT"),
2394                 tcu::Format::BitDesc(VK_ACCESS_COLOR_ATTACHMENT_READ_BIT,                                               "VK_ACCESS_COLOR_ATTACHMENT_READ_BIT"),
2395                 tcu::Format::BitDesc(VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT,                                              "VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT"),
2396                 tcu::Format::BitDesc(VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT,                               "VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT"),
2397                 tcu::Format::BitDesc(VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT,                              "VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT"),
2398                 tcu::Format::BitDesc(VK_ACCESS_TRANSFER_READ_BIT,                                                               "VK_ACCESS_TRANSFER_READ_BIT"),
2399                 tcu::Format::BitDesc(VK_ACCESS_TRANSFER_WRITE_BIT,                                                              "VK_ACCESS_TRANSFER_WRITE_BIT"),
2400                 tcu::Format::BitDesc(VK_ACCESS_HOST_READ_BIT,                                                                   "VK_ACCESS_HOST_READ_BIT"),
2401                 tcu::Format::BitDesc(VK_ACCESS_HOST_WRITE_BIT,                                                                  "VK_ACCESS_HOST_WRITE_BIT"),
2402                 tcu::Format::BitDesc(VK_ACCESS_MEMORY_READ_BIT,                                                                 "VK_ACCESS_MEMORY_READ_BIT"),
2403                 tcu::Format::BitDesc(VK_ACCESS_MEMORY_WRITE_BIT,                                                                "VK_ACCESS_MEMORY_WRITE_BIT"),
2404                 tcu::Format::BitDesc(VK_ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT,                                "VK_ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT"),
2405                 tcu::Format::BitDesc(VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT,                 "VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT"),
2406                 tcu::Format::BitDesc(VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT,                "VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT"),
2407                 tcu::Format::BitDesc(VK_ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT,                              "VK_ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT"),
2408                 tcu::Format::BitDesc(VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT,               "VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT"),
2409                 tcu::Format::BitDesc(VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR,                             "VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR"),
2410                 tcu::Format::BitDesc(VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR,                    "VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR"),
2411                 tcu::Format::BitDesc(VK_ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV,                                  "VK_ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV"),
2412                 tcu::Format::BitDesc(VK_ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT,                               "VK_ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT"),
2413                 tcu::Format::BitDesc(VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_NV,                                  "VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_NV"),
2414                 tcu::Format::BitDesc(VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV,                                 "VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV"),
2415                 tcu::Format::BitDesc(VK_ACCESS_NONE_KHR,                                                                                "VK_ACCESS_NONE_KHR"),
2416                 tcu::Format::BitDesc(VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV,                              "VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV"),
2417                 tcu::Format::BitDesc(VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV,                             "VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV"),
2418                 tcu::Format::BitDesc(VK_ACCESS_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR,   "VK_ACCESS_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR"),
2419                 tcu::Format::BitDesc(VK_ACCESS_FLAG_BITS_MAX_ENUM,                                                              "VK_ACCESS_FLAG_BITS_MAX_ENUM"),
2420         };
2421         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2422 }
2423
2424 tcu::Format::Bitfield<32> getImageAspectFlagsStr (VkImageAspectFlags value)
2425 {
2426         static const tcu::Format::BitDesc s_desc[] =
2427         {
2428                 tcu::Format::BitDesc(VK_IMAGE_ASPECT_COLOR_BIT,                                 "VK_IMAGE_ASPECT_COLOR_BIT"),
2429                 tcu::Format::BitDesc(VK_IMAGE_ASPECT_DEPTH_BIT,                                 "VK_IMAGE_ASPECT_DEPTH_BIT"),
2430                 tcu::Format::BitDesc(VK_IMAGE_ASPECT_STENCIL_BIT,                               "VK_IMAGE_ASPECT_STENCIL_BIT"),
2431                 tcu::Format::BitDesc(VK_IMAGE_ASPECT_METADATA_BIT,                              "VK_IMAGE_ASPECT_METADATA_BIT"),
2432                 tcu::Format::BitDesc(VK_IMAGE_ASPECT_PLANE_0_BIT,                               "VK_IMAGE_ASPECT_PLANE_0_BIT"),
2433                 tcu::Format::BitDesc(VK_IMAGE_ASPECT_PLANE_1_BIT,                               "VK_IMAGE_ASPECT_PLANE_1_BIT"),
2434                 tcu::Format::BitDesc(VK_IMAGE_ASPECT_PLANE_2_BIT,                               "VK_IMAGE_ASPECT_PLANE_2_BIT"),
2435                 tcu::Format::BitDesc(VK_IMAGE_ASPECT_MEMORY_PLANE_0_BIT_EXT,    "VK_IMAGE_ASPECT_MEMORY_PLANE_0_BIT_EXT"),
2436                 tcu::Format::BitDesc(VK_IMAGE_ASPECT_MEMORY_PLANE_1_BIT_EXT,    "VK_IMAGE_ASPECT_MEMORY_PLANE_1_BIT_EXT"),
2437                 tcu::Format::BitDesc(VK_IMAGE_ASPECT_MEMORY_PLANE_2_BIT_EXT,    "VK_IMAGE_ASPECT_MEMORY_PLANE_2_BIT_EXT"),
2438                 tcu::Format::BitDesc(VK_IMAGE_ASPECT_MEMORY_PLANE_3_BIT_EXT,    "VK_IMAGE_ASPECT_MEMORY_PLANE_3_BIT_EXT"),
2439                 tcu::Format::BitDesc(VK_IMAGE_ASPECT_PLANE_0_BIT_KHR,                   "VK_IMAGE_ASPECT_PLANE_0_BIT_KHR"),
2440                 tcu::Format::BitDesc(VK_IMAGE_ASPECT_PLANE_1_BIT_KHR,                   "VK_IMAGE_ASPECT_PLANE_1_BIT_KHR"),
2441                 tcu::Format::BitDesc(VK_IMAGE_ASPECT_PLANE_2_BIT_KHR,                   "VK_IMAGE_ASPECT_PLANE_2_BIT_KHR"),
2442                 tcu::Format::BitDesc(VK_IMAGE_ASPECT_FLAG_BITS_MAX_ENUM,                "VK_IMAGE_ASPECT_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> getFormatFeatureFlagsStr (VkFormatFeatureFlags value)
2448 {
2449         static const tcu::Format::BitDesc s_desc[] =
2450         {
2451                 tcu::Format::BitDesc(VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT,                                                                                                                               "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT"),
2452                 tcu::Format::BitDesc(VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT,                                                                                                                               "VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT"),
2453                 tcu::Format::BitDesc(VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT,                                                                                                                "VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT"),
2454                 tcu::Format::BitDesc(VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT,                                                                                                                "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT"),
2455                 tcu::Format::BitDesc(VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT,                                                                                                                "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT"),
2456                 tcu::Format::BitDesc(VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT,                                                                                                 "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT"),
2457                 tcu::Format::BitDesc(VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT,                                                                                                                               "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT"),
2458                 tcu::Format::BitDesc(VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT,                                                                                                                    "VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT"),
2459                 tcu::Format::BitDesc(VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT,                                                                                                              "VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT"),
2460                 tcu::Format::BitDesc(VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT,                                                                                                    "VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT"),
2461                 tcu::Format::BitDesc(VK_FORMAT_FEATURE_BLIT_SRC_BIT,                                                                                                                                    "VK_FORMAT_FEATURE_BLIT_SRC_BIT"),
2462                 tcu::Format::BitDesc(VK_FORMAT_FEATURE_BLIT_DST_BIT,                                                                                                                                    "VK_FORMAT_FEATURE_BLIT_DST_BIT"),
2463                 tcu::Format::BitDesc(VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT,                                                                                                 "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT"),
2464                 tcu::Format::BitDesc(VK_FORMAT_FEATURE_TRANSFER_SRC_BIT,                                                                                                                                "VK_FORMAT_FEATURE_TRANSFER_SRC_BIT"),
2465                 tcu::Format::BitDesc(VK_FORMAT_FEATURE_TRANSFER_DST_BIT,                                                                                                                                "VK_FORMAT_FEATURE_TRANSFER_DST_BIT"),
2466                 tcu::Format::BitDesc(VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT,                                                                                                             "VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT"),
2467                 tcu::Format::BitDesc(VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT,                                                                "VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT"),
2468                 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"),
2469                 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"),
2470                 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"),
2471                 tcu::Format::BitDesc(VK_FORMAT_FEATURE_DISJOINT_BIT,                                                                                                                                    "VK_FORMAT_FEATURE_DISJOINT_BIT"),
2472                 tcu::Format::BitDesc(VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT,                                                                                                              "VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT"),
2473                 tcu::Format::BitDesc(VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT,                                                                                                 "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT"),
2474                 tcu::Format::BitDesc(VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG,                                                                                              "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG"),
2475                 tcu::Format::BitDesc(VK_FORMAT_FEATURE_VIDEO_DECODE_OUTPUT_BIT_KHR,                                                                                                             "VK_FORMAT_FEATURE_VIDEO_DECODE_OUTPUT_BIT_KHR"),
2476                 tcu::Format::BitDesc(VK_FORMAT_FEATURE_VIDEO_DECODE_DPB_BIT_KHR,                                                                                                                "VK_FORMAT_FEATURE_VIDEO_DECODE_DPB_BIT_KHR"),
2477                 tcu::Format::BitDesc(VK_FORMAT_FEATURE_VIDEO_ENCODE_INPUT_BIT_KHR,                                                                                                              "VK_FORMAT_FEATURE_VIDEO_ENCODE_INPUT_BIT_KHR"),
2478                 tcu::Format::BitDesc(VK_FORMAT_FEATURE_VIDEO_ENCODE_DPB_BIT_KHR,                                                                                                                "VK_FORMAT_FEATURE_VIDEO_ENCODE_DPB_BIT_KHR"),
2479                 tcu::Format::BitDesc(VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR,                                                                    "VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR"),
2480                 tcu::Format::BitDesc(VK_FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT,                                                                                                    "VK_FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT"),
2481                 tcu::Format::BitDesc(VK_FORMAT_FEATURE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR,                                                                                "VK_FORMAT_FEATURE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR"),
2482                 tcu::Format::BitDesc(VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR,                                                                                                                    "VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR"),
2483                 tcu::Format::BitDesc(VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR,                                                                                                                    "VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR"),
2484                 tcu::Format::BitDesc(VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT,                                                                                             "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT"),
2485                 tcu::Format::BitDesc(VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT_KHR,                                                                                                 "VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT_KHR"),
2486                 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"),
2487                 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"),
2488                 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"),
2489                 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"),
2490                 tcu::Format::BitDesc(VK_FORMAT_FEATURE_DISJOINT_BIT_KHR,                                                                                                                                "VK_FORMAT_FEATURE_DISJOINT_BIT_KHR"),
2491                 tcu::Format::BitDesc(VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT_KHR,                                                                                                  "VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT_KHR"),
2492                 tcu::Format::BitDesc(VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT,                                                                                              "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT"),
2493                 tcu::Format::BitDesc(VK_FORMAT_FEATURE_FLAG_BITS_MAX_ENUM,                                                                                                                              "VK_FORMAT_FEATURE_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> getImageCreateFlagsStr (VkImageCreateFlags value)
2499 {
2500         static const tcu::Format::BitDesc s_desc[] =
2501         {
2502                 tcu::Format::BitDesc(VK_IMAGE_CREATE_SPARSE_BINDING_BIT,                                                "VK_IMAGE_CREATE_SPARSE_BINDING_BIT"),
2503                 tcu::Format::BitDesc(VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT,                                              "VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT"),
2504                 tcu::Format::BitDesc(VK_IMAGE_CREATE_SPARSE_ALIASED_BIT,                                                "VK_IMAGE_CREATE_SPARSE_ALIASED_BIT"),
2505                 tcu::Format::BitDesc(VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT,                                                "VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT"),
2506                 tcu::Format::BitDesc(VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT,                                               "VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT"),
2507                 tcu::Format::BitDesc(VK_IMAGE_CREATE_ALIAS_BIT,                                                                 "VK_IMAGE_CREATE_ALIAS_BIT"),
2508                 tcu::Format::BitDesc(VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT,                   "VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT"),
2509                 tcu::Format::BitDesc(VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT,                                   "VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT"),
2510                 tcu::Format::BitDesc(VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT,                   "VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT"),
2511                 tcu::Format::BitDesc(VK_IMAGE_CREATE_EXTENDED_USAGE_BIT,                                                "VK_IMAGE_CREATE_EXTENDED_USAGE_BIT"),
2512                 tcu::Format::BitDesc(VK_IMAGE_CREATE_PROTECTED_BIT,                                                             "VK_IMAGE_CREATE_PROTECTED_BIT"),
2513                 tcu::Format::BitDesc(VK_IMAGE_CREATE_DISJOINT_BIT,                                                              "VK_IMAGE_CREATE_DISJOINT_BIT"),
2514                 tcu::Format::BitDesc(VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV,                                             "VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV"),
2515                 tcu::Format::BitDesc(VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT, "VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT"),
2516                 tcu::Format::BitDesc(VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT,                                                "VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT"),
2517                 tcu::Format::BitDesc(VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR,               "VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR"),
2518                 tcu::Format::BitDesc(VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT_KHR,                               "VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT_KHR"),
2519                 tcu::Format::BitDesc(VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT_KHR,               "VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT_KHR"),
2520                 tcu::Format::BitDesc(VK_IMAGE_CREATE_EXTENDED_USAGE_BIT_KHR,                                    "VK_IMAGE_CREATE_EXTENDED_USAGE_BIT_KHR"),
2521                 tcu::Format::BitDesc(VK_IMAGE_CREATE_DISJOINT_BIT_KHR,                                                  "VK_IMAGE_CREATE_DISJOINT_BIT_KHR"),
2522                 tcu::Format::BitDesc(VK_IMAGE_CREATE_ALIAS_BIT_KHR,                                                             "VK_IMAGE_CREATE_ALIAS_BIT_KHR"),
2523                 tcu::Format::BitDesc(VK_IMAGE_CREATE_FLAG_BITS_MAX_ENUM,                                                "VK_IMAGE_CREATE_FLAG_BITS_MAX_ENUM"),
2524         };
2525         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2526 }
2527
2528 tcu::Format::Bitfield<32> getSampleCountFlagsStr (VkSampleCountFlags value)
2529 {
2530         static const tcu::Format::BitDesc s_desc[] =
2531         {
2532                 tcu::Format::BitDesc(VK_SAMPLE_COUNT_1_BIT,                                     "VK_SAMPLE_COUNT_1_BIT"),
2533                 tcu::Format::BitDesc(VK_SAMPLE_COUNT_2_BIT,                                     "VK_SAMPLE_COUNT_2_BIT"),
2534                 tcu::Format::BitDesc(VK_SAMPLE_COUNT_4_BIT,                                     "VK_SAMPLE_COUNT_4_BIT"),
2535                 tcu::Format::BitDesc(VK_SAMPLE_COUNT_8_BIT,                                     "VK_SAMPLE_COUNT_8_BIT"),
2536                 tcu::Format::BitDesc(VK_SAMPLE_COUNT_16_BIT,                            "VK_SAMPLE_COUNT_16_BIT"),
2537                 tcu::Format::BitDesc(VK_SAMPLE_COUNT_32_BIT,                            "VK_SAMPLE_COUNT_32_BIT"),
2538                 tcu::Format::BitDesc(VK_SAMPLE_COUNT_64_BIT,                            "VK_SAMPLE_COUNT_64_BIT"),
2539                 tcu::Format::BitDesc(VK_SAMPLE_COUNT_FLAG_BITS_MAX_ENUM,        "VK_SAMPLE_COUNT_FLAG_BITS_MAX_ENUM"),
2540         };
2541         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2542 }
2543
2544 tcu::Format::Bitfield<32> getImageUsageFlagsStr (VkImageUsageFlags value)
2545 {
2546         static const tcu::Format::BitDesc s_desc[] =
2547         {
2548                 tcu::Format::BitDesc(VK_IMAGE_USAGE_TRANSFER_SRC_BIT,                                                   "VK_IMAGE_USAGE_TRANSFER_SRC_BIT"),
2549                 tcu::Format::BitDesc(VK_IMAGE_USAGE_TRANSFER_DST_BIT,                                                   "VK_IMAGE_USAGE_TRANSFER_DST_BIT"),
2550                 tcu::Format::BitDesc(VK_IMAGE_USAGE_SAMPLED_BIT,                                                                "VK_IMAGE_USAGE_SAMPLED_BIT"),
2551                 tcu::Format::BitDesc(VK_IMAGE_USAGE_STORAGE_BIT,                                                                "VK_IMAGE_USAGE_STORAGE_BIT"),
2552                 tcu::Format::BitDesc(VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT,                                               "VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT"),
2553                 tcu::Format::BitDesc(VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT,                               "VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT"),
2554                 tcu::Format::BitDesc(VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT,                                   "VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT"),
2555                 tcu::Format::BitDesc(VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT,                                               "VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT"),
2556                 tcu::Format::BitDesc(VK_IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR,                                   "VK_IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR"),
2557                 tcu::Format::BitDesc(VK_IMAGE_USAGE_VIDEO_DECODE_SRC_BIT_KHR,                                   "VK_IMAGE_USAGE_VIDEO_DECODE_SRC_BIT_KHR"),
2558                 tcu::Format::BitDesc(VK_IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR,                                   "VK_IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR"),
2559                 tcu::Format::BitDesc(VK_IMAGE_USAGE_VIDEO_ENCODE_DST_BIT_KHR,                                   "VK_IMAGE_USAGE_VIDEO_ENCODE_DST_BIT_KHR"),
2560                 tcu::Format::BitDesc(VK_IMAGE_USAGE_VIDEO_ENCODE_SRC_BIT_KHR,                                   "VK_IMAGE_USAGE_VIDEO_ENCODE_SRC_BIT_KHR"),
2561                 tcu::Format::BitDesc(VK_IMAGE_USAGE_VIDEO_ENCODE_DPB_BIT_KHR,                                   "VK_IMAGE_USAGE_VIDEO_ENCODE_DPB_BIT_KHR"),
2562                 tcu::Format::BitDesc(VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV,                                  "VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV"),
2563                 tcu::Format::BitDesc(VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT,                               "VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT"),
2564                 tcu::Format::BitDesc(VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR,   "VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR"),
2565                 tcu::Format::BitDesc(VK_IMAGE_USAGE_FLAG_BITS_MAX_ENUM,                                                 "VK_IMAGE_USAGE_FLAG_BITS_MAX_ENUM"),
2566         };
2567         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2568 }
2569
2570 tcu::Format::Bitfield<32> getMemoryHeapFlagsStr (VkMemoryHeapFlags value)
2571 {
2572         static const tcu::Format::BitDesc s_desc[] =
2573         {
2574                 tcu::Format::BitDesc(VK_MEMORY_HEAP_DEVICE_LOCAL_BIT,           "VK_MEMORY_HEAP_DEVICE_LOCAL_BIT"),
2575                 tcu::Format::BitDesc(VK_MEMORY_HEAP_MULTI_INSTANCE_BIT,         "VK_MEMORY_HEAP_MULTI_INSTANCE_BIT"),
2576                 tcu::Format::BitDesc(VK_MEMORY_HEAP_MULTI_INSTANCE_BIT_KHR,     "VK_MEMORY_HEAP_MULTI_INSTANCE_BIT_KHR"),
2577                 tcu::Format::BitDesc(VK_MEMORY_HEAP_FLAG_BITS_MAX_ENUM,         "VK_MEMORY_HEAP_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> getMemoryPropertyFlagsStr (VkMemoryPropertyFlags value)
2583 {
2584         static const tcu::Format::BitDesc s_desc[] =
2585         {
2586                 tcu::Format::BitDesc(VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT,                       "VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT"),
2587                 tcu::Format::BitDesc(VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT,                       "VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT"),
2588                 tcu::Format::BitDesc(VK_MEMORY_PROPERTY_HOST_COHERENT_BIT,                      "VK_MEMORY_PROPERTY_HOST_COHERENT_BIT"),
2589                 tcu::Format::BitDesc(VK_MEMORY_PROPERTY_HOST_CACHED_BIT,                        "VK_MEMORY_PROPERTY_HOST_CACHED_BIT"),
2590                 tcu::Format::BitDesc(VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT,           "VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT"),
2591                 tcu::Format::BitDesc(VK_MEMORY_PROPERTY_PROTECTED_BIT,                          "VK_MEMORY_PROPERTY_PROTECTED_BIT"),
2592                 tcu::Format::BitDesc(VK_MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD,        "VK_MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD"),
2593                 tcu::Format::BitDesc(VK_MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD,        "VK_MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD"),
2594                 tcu::Format::BitDesc(VK_MEMORY_PROPERTY_FLAG_BITS_MAX_ENUM,                     "VK_MEMORY_PROPERTY_FLAG_BITS_MAX_ENUM"),
2595         };
2596         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2597 }
2598
2599 tcu::Format::Bitfield<32> getQueueFlagsStr (VkQueueFlags value)
2600 {
2601         static const tcu::Format::BitDesc s_desc[] =
2602         {
2603                 tcu::Format::BitDesc(VK_QUEUE_GRAPHICS_BIT,                     "VK_QUEUE_GRAPHICS_BIT"),
2604                 tcu::Format::BitDesc(VK_QUEUE_COMPUTE_BIT,                      "VK_QUEUE_COMPUTE_BIT"),
2605                 tcu::Format::BitDesc(VK_QUEUE_TRANSFER_BIT,                     "VK_QUEUE_TRANSFER_BIT"),
2606                 tcu::Format::BitDesc(VK_QUEUE_SPARSE_BINDING_BIT,       "VK_QUEUE_SPARSE_BINDING_BIT"),
2607                 tcu::Format::BitDesc(VK_QUEUE_PROTECTED_BIT,            "VK_QUEUE_PROTECTED_BIT"),
2608                 tcu::Format::BitDesc(VK_QUEUE_VIDEO_DECODE_BIT_KHR,     "VK_QUEUE_VIDEO_DECODE_BIT_KHR"),
2609                 tcu::Format::BitDesc(VK_QUEUE_VIDEO_ENCODE_BIT_KHR,     "VK_QUEUE_VIDEO_ENCODE_BIT_KHR"),
2610                 tcu::Format::BitDesc(VK_QUEUE_FLAG_BITS_MAX_ENUM,       "VK_QUEUE_FLAG_BITS_MAX_ENUM"),
2611         };
2612         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2613 }
2614
2615 tcu::Format::Bitfield<32> getDeviceQueueCreateFlagsStr (VkDeviceQueueCreateFlags value)
2616 {
2617         static const tcu::Format::BitDesc s_desc[] =
2618         {
2619                 tcu::Format::BitDesc(VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT,              "VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT"),
2620                 tcu::Format::BitDesc(VK_DEVICE_QUEUE_CREATE_FLAG_BITS_MAX_ENUM, "VK_DEVICE_QUEUE_CREATE_FLAG_BITS_MAX_ENUM"),
2621         };
2622         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2623 }
2624
2625 tcu::Format::Bitfield<32> getPipelineStageFlagsStr (VkPipelineStageFlags value)
2626 {
2627         static const tcu::Format::BitDesc s_desc[] =
2628         {
2629                 tcu::Format::BitDesc(VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,                                                         "VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT"),
2630                 tcu::Format::BitDesc(VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT,                                                       "VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT"),
2631                 tcu::Format::BitDesc(VK_PIPELINE_STAGE_VERTEX_INPUT_BIT,                                                        "VK_PIPELINE_STAGE_VERTEX_INPUT_BIT"),
2632                 tcu::Format::BitDesc(VK_PIPELINE_STAGE_VERTEX_SHADER_BIT,                                                       "VK_PIPELINE_STAGE_VERTEX_SHADER_BIT"),
2633                 tcu::Format::BitDesc(VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT,                         "VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT"),
2634                 tcu::Format::BitDesc(VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT,                      "VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT"),
2635                 tcu::Format::BitDesc(VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT,                                                     "VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT"),
2636                 tcu::Format::BitDesc(VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT,                                                     "VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT"),
2637                 tcu::Format::BitDesc(VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT,                                        "VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT"),
2638                 tcu::Format::BitDesc(VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT,                                         "VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT"),
2639                 tcu::Format::BitDesc(VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT,                                     "VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT"),
2640                 tcu::Format::BitDesc(VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT,                                                      "VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT"),
2641                 tcu::Format::BitDesc(VK_PIPELINE_STAGE_TRANSFER_BIT,                                                            "VK_PIPELINE_STAGE_TRANSFER_BIT"),
2642                 tcu::Format::BitDesc(VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT,                                                      "VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT"),
2643                 tcu::Format::BitDesc(VK_PIPELINE_STAGE_HOST_BIT,                                                                        "VK_PIPELINE_STAGE_HOST_BIT"),
2644                 tcu::Format::BitDesc(VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT,                                                        "VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT"),
2645                 tcu::Format::BitDesc(VK_PIPELINE_STAGE_ALL_COMMANDS_BIT,                                                        "VK_PIPELINE_STAGE_ALL_COMMANDS_BIT"),
2646                 tcu::Format::BitDesc(VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT,                                      "VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT"),
2647                 tcu::Format::BitDesc(VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT,                           "VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT"),
2648                 tcu::Format::BitDesc(VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR,            "VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR"),
2649                 tcu::Format::BitDesc(VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR,                                      "VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR"),
2650                 tcu::Format::BitDesc(VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV,                                       "VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV"),
2651                 tcu::Format::BitDesc(VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV,                                                      "VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV"),
2652                 tcu::Format::BitDesc(VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV,                                                      "VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV"),
2653                 tcu::Format::BitDesc(VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT,                        "VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT"),
2654                 tcu::Format::BitDesc(VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV,                                       "VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV"),
2655                 tcu::Format::BitDesc(VK_PIPELINE_STAGE_NONE_KHR,                                                                        "VK_PIPELINE_STAGE_NONE_KHR"),
2656                 tcu::Format::BitDesc(VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV,                                       "VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV"),
2657                 tcu::Format::BitDesc(VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV,                     "VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV"),
2658                 tcu::Format::BitDesc(VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR,        "VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR"),
2659                 tcu::Format::BitDesc(VK_PIPELINE_STAGE_FLAG_BITS_MAX_ENUM,                                                      "VK_PIPELINE_STAGE_FLAG_BITS_MAX_ENUM"),
2660         };
2661         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2662 }
2663
2664 tcu::Format::Bitfield<32> getSparseMemoryBindFlagsStr (VkSparseMemoryBindFlags value)
2665 {
2666         static const tcu::Format::BitDesc s_desc[] =
2667         {
2668                 tcu::Format::BitDesc(VK_SPARSE_MEMORY_BIND_METADATA_BIT,                "VK_SPARSE_MEMORY_BIND_METADATA_BIT"),
2669                 tcu::Format::BitDesc(VK_SPARSE_MEMORY_BIND_FLAG_BITS_MAX_ENUM,  "VK_SPARSE_MEMORY_BIND_FLAG_BITS_MAX_ENUM"),
2670         };
2671         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2672 }
2673
2674 tcu::Format::Bitfield<32> getSparseImageFormatFlagsStr (VkSparseImageFormatFlags value)
2675 {
2676         static const tcu::Format::BitDesc s_desc[] =
2677         {
2678                 tcu::Format::BitDesc(VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT,                 "VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT"),
2679                 tcu::Format::BitDesc(VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT,               "VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT"),
2680                 tcu::Format::BitDesc(VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT, "VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT"),
2681                 tcu::Format::BitDesc(VK_SPARSE_IMAGE_FORMAT_FLAG_BITS_MAX_ENUM,                 "VK_SPARSE_IMAGE_FORMAT_FLAG_BITS_MAX_ENUM"),
2682         };
2683         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2684 }
2685
2686 tcu::Format::Bitfield<32> getFenceCreateFlagsStr (VkFenceCreateFlags value)
2687 {
2688         static const tcu::Format::BitDesc s_desc[] =
2689         {
2690                 tcu::Format::BitDesc(VK_FENCE_CREATE_SIGNALED_BIT,                      "VK_FENCE_CREATE_SIGNALED_BIT"),
2691                 tcu::Format::BitDesc(VK_FENCE_CREATE_FLAG_BITS_MAX_ENUM,        "VK_FENCE_CREATE_FLAG_BITS_MAX_ENUM"),
2692         };
2693         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2694 }
2695
2696 tcu::Format::Bitfield<32> getEventCreateFlagsStr (VkEventCreateFlags value)
2697 {
2698         static const tcu::Format::BitDesc s_desc[] =
2699         {
2700                 tcu::Format::BitDesc(VK_EVENT_CREATE_DEVICE_ONLY_BIT_KHR,       "VK_EVENT_CREATE_DEVICE_ONLY_BIT_KHR"),
2701                 tcu::Format::BitDesc(VK_EVENT_CREATE_FLAG_BITS_MAX_ENUM,        "VK_EVENT_CREATE_FLAG_BITS_MAX_ENUM"),
2702         };
2703         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2704 }
2705
2706 tcu::Format::Bitfield<32> getQueryPipelineStatisticFlagsStr (VkQueryPipelineStatisticFlags value)
2707 {
2708         static const tcu::Format::BitDesc s_desc[] =
2709         {
2710                 tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT,                                           "VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT"),
2711                 tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT,                                         "VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT"),
2712                 tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT,                                         "VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT"),
2713                 tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT,                                       "VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT"),
2714                 tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT,                                        "VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT"),
2715                 tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT,                                                      "VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT"),
2716                 tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT,                                                       "VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT"),
2717                 tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT,                                       "VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT"),
2718                 tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT,                       "VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT"),
2719                 tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT,        "VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT"),
2720                 tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT,                                        "VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT"),
2721                 tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_FLAG_BITS_MAX_ENUM,                                                            "VK_QUERY_PIPELINE_STATISTIC_FLAG_BITS_MAX_ENUM"),
2722         };
2723         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2724 }
2725
2726 tcu::Format::Bitfield<32> getQueryResultFlagsStr (VkQueryResultFlags value)
2727 {
2728         static const tcu::Format::BitDesc s_desc[] =
2729         {
2730                 tcu::Format::BitDesc(VK_QUERY_RESULT_64_BIT,                            "VK_QUERY_RESULT_64_BIT"),
2731                 tcu::Format::BitDesc(VK_QUERY_RESULT_WAIT_BIT,                          "VK_QUERY_RESULT_WAIT_BIT"),
2732                 tcu::Format::BitDesc(VK_QUERY_RESULT_WITH_AVAILABILITY_BIT,     "VK_QUERY_RESULT_WITH_AVAILABILITY_BIT"),
2733                 tcu::Format::BitDesc(VK_QUERY_RESULT_PARTIAL_BIT,                       "VK_QUERY_RESULT_PARTIAL_BIT"),
2734                 tcu::Format::BitDesc(VK_QUERY_RESULT_WITH_STATUS_BIT_KHR,       "VK_QUERY_RESULT_WITH_STATUS_BIT_KHR"),
2735                 tcu::Format::BitDesc(VK_QUERY_RESULT_FLAG_BITS_MAX_ENUM,        "VK_QUERY_RESULT_FLAG_BITS_MAX_ENUM"),
2736         };
2737         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2738 }
2739
2740 tcu::Format::Bitfield<32> getBufferCreateFlagsStr (VkBufferCreateFlags value)
2741 {
2742         static const tcu::Format::BitDesc s_desc[] =
2743         {
2744                 tcu::Format::BitDesc(VK_BUFFER_CREATE_SPARSE_BINDING_BIT,                                               "VK_BUFFER_CREATE_SPARSE_BINDING_BIT"),
2745                 tcu::Format::BitDesc(VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT,                                             "VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT"),
2746                 tcu::Format::BitDesc(VK_BUFFER_CREATE_SPARSE_ALIASED_BIT,                                               "VK_BUFFER_CREATE_SPARSE_ALIASED_BIT"),
2747                 tcu::Format::BitDesc(VK_BUFFER_CREATE_PROTECTED_BIT,                                                    "VK_BUFFER_CREATE_PROTECTED_BIT"),
2748                 tcu::Format::BitDesc(VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT,                "VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT"),
2749                 tcu::Format::BitDesc(VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT,    "VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT"),
2750                 tcu::Format::BitDesc(VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR,    "VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR"),
2751                 tcu::Format::BitDesc(VK_BUFFER_CREATE_FLAG_BITS_MAX_ENUM,                                               "VK_BUFFER_CREATE_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> getBufferUsageFlagsStr (VkBufferUsageFlags value)
2757 {
2758         static const tcu::Format::BitDesc s_desc[] =
2759         {
2760                 tcu::Format::BitDesc(VK_BUFFER_USAGE_TRANSFER_SRC_BIT,                                                                          "VK_BUFFER_USAGE_TRANSFER_SRC_BIT"),
2761                 tcu::Format::BitDesc(VK_BUFFER_USAGE_TRANSFER_DST_BIT,                                                                          "VK_BUFFER_USAGE_TRANSFER_DST_BIT"),
2762                 tcu::Format::BitDesc(VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT,                                                          "VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT"),
2763                 tcu::Format::BitDesc(VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT,                                                          "VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT"),
2764                 tcu::Format::BitDesc(VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT,                                                                        "VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT"),
2765                 tcu::Format::BitDesc(VK_BUFFER_USAGE_STORAGE_BUFFER_BIT,                                                                        "VK_BUFFER_USAGE_STORAGE_BUFFER_BIT"),
2766                 tcu::Format::BitDesc(VK_BUFFER_USAGE_INDEX_BUFFER_BIT,                                                                          "VK_BUFFER_USAGE_INDEX_BUFFER_BIT"),
2767                 tcu::Format::BitDesc(VK_BUFFER_USAGE_VERTEX_BUFFER_BIT,                                                                         "VK_BUFFER_USAGE_VERTEX_BUFFER_BIT"),
2768                 tcu::Format::BitDesc(VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT,                                                                       "VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT"),
2769                 tcu::Format::BitDesc(VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT,                                                         "VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT"),
2770                 tcu::Format::BitDesc(VK_BUFFER_USAGE_VIDEO_DECODE_SRC_BIT_KHR,                                                          "VK_BUFFER_USAGE_VIDEO_DECODE_SRC_BIT_KHR"),
2771                 tcu::Format::BitDesc(VK_BUFFER_USAGE_VIDEO_DECODE_DST_BIT_KHR,                                                          "VK_BUFFER_USAGE_VIDEO_DECODE_DST_BIT_KHR"),
2772                 tcu::Format::BitDesc(VK_BUFFER_USAGE_VIDEO_ENCODE_DST_BIT_KHR,                                                          "VK_BUFFER_USAGE_VIDEO_ENCODE_DST_BIT_KHR"),
2773                 tcu::Format::BitDesc(VK_BUFFER_USAGE_VIDEO_ENCODE_SRC_BIT_KHR,                                                          "VK_BUFFER_USAGE_VIDEO_ENCODE_SRC_BIT_KHR"),
2774                 tcu::Format::BitDesc(VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT,                                         "VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT"),
2775                 tcu::Format::BitDesc(VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT,                         "VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT"),
2776                 tcu::Format::BitDesc(VK_BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT,                                                     "VK_BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT"),
2777                 tcu::Format::BitDesc(VK_BUFFER_USAGE_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT_KHR,      "VK_BUFFER_USAGE_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT_KHR"),
2778                 tcu::Format::BitDesc(VK_BUFFER_USAGE_ACCELERATION_STRUCTURE_STORAGE_BIT_KHR,                            "VK_BUFFER_USAGE_ACCELERATION_STRUCTURE_STORAGE_BIT_KHR"),
2779                 tcu::Format::BitDesc(VK_BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR,                                                      "VK_BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR"),
2780                 tcu::Format::BitDesc(VK_BUFFER_USAGE_RAY_TRACING_BIT_NV,                                                                        "VK_BUFFER_USAGE_RAY_TRACING_BIT_NV"),
2781                 tcu::Format::BitDesc(VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT,                                                     "VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT"),
2782                 tcu::Format::BitDesc(VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_KHR,                                                     "VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_KHR"),
2783                 tcu::Format::BitDesc(VK_BUFFER_USAGE_FLAG_BITS_MAX_ENUM,                                                                        "VK_BUFFER_USAGE_FLAG_BITS_MAX_ENUM"),
2784         };
2785         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2786 }
2787
2788 tcu::Format::Bitfield<32> getImageViewCreateFlagsStr (VkImageViewCreateFlags value)
2789 {
2790         static const tcu::Format::BitDesc s_desc[] =
2791         {
2792                 tcu::Format::BitDesc(VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT,         "VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT"),
2793                 tcu::Format::BitDesc(VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DEFERRED_BIT_EXT,        "VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DEFERRED_BIT_EXT"),
2794                 tcu::Format::BitDesc(VK_IMAGE_VIEW_CREATE_FLAG_BITS_MAX_ENUM,                                           "VK_IMAGE_VIEW_CREATE_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> getShaderModuleCreateFlagsStr (VkShaderModuleCreateFlags value)
2800 {
2801         static const tcu::Format::BitDesc s_desc[] =
2802         {
2803                 tcu::Format::BitDesc(VK_SHADER_MODULE_CREATE_FLAG_BITS_MAX_ENUM,        "VK_SHADER_MODULE_CREATE_FLAG_BITS_MAX_ENUM"),
2804         };
2805         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2806 }
2807
2808 tcu::Format::Bitfield<32> getPipelineCacheCreateFlagsStr (VkPipelineCacheCreateFlags value)
2809 {
2810         static const tcu::Format::BitDesc s_desc[] =
2811         {
2812                 tcu::Format::BitDesc(VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT,  "VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT"),
2813                 tcu::Format::BitDesc(VK_PIPELINE_CACHE_CREATE_FLAG_BITS_MAX_ENUM,                               "VK_PIPELINE_CACHE_CREATE_FLAG_BITS_MAX_ENUM"),
2814         };
2815         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2816 }
2817
2818 tcu::Format::Bitfield<32> getColorComponentFlagsStr (VkColorComponentFlags value)
2819 {
2820         static const tcu::Format::BitDesc s_desc[] =
2821         {
2822                 tcu::Format::BitDesc(VK_COLOR_COMPONENT_R_BIT,                          "VK_COLOR_COMPONENT_R_BIT"),
2823                 tcu::Format::BitDesc(VK_COLOR_COMPONENT_G_BIT,                          "VK_COLOR_COMPONENT_G_BIT"),
2824                 tcu::Format::BitDesc(VK_COLOR_COMPONENT_B_BIT,                          "VK_COLOR_COMPONENT_B_BIT"),
2825                 tcu::Format::BitDesc(VK_COLOR_COMPONENT_A_BIT,                          "VK_COLOR_COMPONENT_A_BIT"),
2826                 tcu::Format::BitDesc(VK_COLOR_COMPONENT_FLAG_BITS_MAX_ENUM,     "VK_COLOR_COMPONENT_FLAG_BITS_MAX_ENUM"),
2827         };
2828         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2829 }
2830
2831 tcu::Format::Bitfield<32> getPipelineCreateFlagsStr (VkPipelineCreateFlags value)
2832 {
2833         static const tcu::Format::BitDesc s_desc[] =
2834         {
2835                 tcu::Format::BitDesc(VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT,                                                               "VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT"),
2836                 tcu::Format::BitDesc(VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT,                                                                  "VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT"),
2837                 tcu::Format::BitDesc(VK_PIPELINE_CREATE_DERIVATIVE_BIT,                                                                                 "VK_PIPELINE_CREATE_DERIVATIVE_BIT"),
2838                 tcu::Format::BitDesc(VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT,                                               "VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT"),
2839                 tcu::Format::BitDesc(VK_PIPELINE_CREATE_DISPATCH_BASE_BIT,                                                                              "VK_PIPELINE_CREATE_DISPATCH_BASE_BIT"),
2840                 tcu::Format::BitDesc(VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR,                    "VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR"),
2841                 tcu::Format::BitDesc(VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR,                "VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR"),
2842                 tcu::Format::BitDesc(VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR,                               "VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR"),
2843                 tcu::Format::BitDesc(VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR,               "VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR"),
2844                 tcu::Format::BitDesc(VK_PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR,                                             "VK_PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR"),
2845                 tcu::Format::BitDesc(VK_PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR,                                                 "VK_PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR"),
2846                 tcu::Format::BitDesc(VK_PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR, "VK_PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR"),
2847                 tcu::Format::BitDesc(VK_PIPELINE_CREATE_DEFER_COMPILE_BIT_NV,                                                                   "VK_PIPELINE_CREATE_DEFER_COMPILE_BIT_NV"),
2848                 tcu::Format::BitDesc(VK_PIPELINE_CREATE_CAPTURE_STATISTICS_BIT_KHR,                                                             "VK_PIPELINE_CREATE_CAPTURE_STATISTICS_BIT_KHR"),
2849                 tcu::Format::BitDesc(VK_PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR,                               "VK_PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR"),
2850                 tcu::Format::BitDesc(VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV,                                                               "VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV"),
2851                 tcu::Format::BitDesc(VK_PIPELINE_CREATE_LIBRARY_BIT_KHR,                                                                                "VK_PIPELINE_CREATE_LIBRARY_BIT_KHR"),
2852                 tcu::Format::BitDesc(VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT,                              "VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT"),
2853                 tcu::Format::BitDesc(VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT,                                                "VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT"),
2854                 tcu::Format::BitDesc(VK_PIPELINE_CREATE_DISPATCH_BASE,                                                                                  "VK_PIPELINE_CREATE_DISPATCH_BASE"),
2855                 tcu::Format::BitDesc(VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR,                                   "VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR"),
2856                 tcu::Format::BitDesc(VK_PIPELINE_CREATE_DISPATCH_BASE_KHR,                                                                              "VK_PIPELINE_CREATE_DISPATCH_BASE_KHR"),
2857                 tcu::Format::BitDesc(VK_PIPELINE_CREATE_FLAG_BITS_MAX_ENUM,                                                                             "VK_PIPELINE_CREATE_FLAG_BITS_MAX_ENUM"),
2858         };
2859         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2860 }
2861
2862 tcu::Format::Bitfield<32> getPipelineShaderStageCreateFlagsStr (VkPipelineShaderStageCreateFlags value)
2863 {
2864         static const tcu::Format::BitDesc s_desc[] =
2865         {
2866                 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"),
2867                 tcu::Format::BitDesc(VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT,            "VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT"),
2868                 tcu::Format::BitDesc(VK_PIPELINE_SHADER_STAGE_CREATE_FLAG_BITS_MAX_ENUM,                                        "VK_PIPELINE_SHADER_STAGE_CREATE_FLAG_BITS_MAX_ENUM"),
2869         };
2870         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2871 }
2872
2873 tcu::Format::Bitfield<32> getShaderStageFlagsStr (VkShaderStageFlags value)
2874 {
2875         static const tcu::Format::BitDesc s_desc[] =
2876         {
2877                 tcu::Format::BitDesc(VK_SHADER_STAGE_VERTEX_BIT,                                        "VK_SHADER_STAGE_VERTEX_BIT"),
2878                 tcu::Format::BitDesc(VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT,          "VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT"),
2879                 tcu::Format::BitDesc(VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT,       "VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT"),
2880                 tcu::Format::BitDesc(VK_SHADER_STAGE_GEOMETRY_BIT,                                      "VK_SHADER_STAGE_GEOMETRY_BIT"),
2881                 tcu::Format::BitDesc(VK_SHADER_STAGE_FRAGMENT_BIT,                                      "VK_SHADER_STAGE_FRAGMENT_BIT"),
2882                 tcu::Format::BitDesc(VK_SHADER_STAGE_COMPUTE_BIT,                                       "VK_SHADER_STAGE_COMPUTE_BIT"),
2883                 tcu::Format::BitDesc(VK_SHADER_STAGE_ALL_GRAPHICS,                                      "VK_SHADER_STAGE_ALL_GRAPHICS"),
2884                 tcu::Format::BitDesc(VK_SHADER_STAGE_ALL,                                                       "VK_SHADER_STAGE_ALL"),
2885                 tcu::Format::BitDesc(VK_SHADER_STAGE_RAYGEN_BIT_KHR,                            "VK_SHADER_STAGE_RAYGEN_BIT_KHR"),
2886                 tcu::Format::BitDesc(VK_SHADER_STAGE_ANY_HIT_BIT_KHR,                           "VK_SHADER_STAGE_ANY_HIT_BIT_KHR"),
2887                 tcu::Format::BitDesc(VK_SHADER_STAGE_CLOSEST_HIT_BIT_KHR,                       "VK_SHADER_STAGE_CLOSEST_HIT_BIT_KHR"),
2888                 tcu::Format::BitDesc(VK_SHADER_STAGE_MISS_BIT_KHR,                                      "VK_SHADER_STAGE_MISS_BIT_KHR"),
2889                 tcu::Format::BitDesc(VK_SHADER_STAGE_INTERSECTION_BIT_KHR,                      "VK_SHADER_STAGE_INTERSECTION_BIT_KHR"),
2890                 tcu::Format::BitDesc(VK_SHADER_STAGE_CALLABLE_BIT_KHR,                          "VK_SHADER_STAGE_CALLABLE_BIT_KHR"),
2891                 tcu::Format::BitDesc(VK_SHADER_STAGE_TASK_BIT_NV,                                       "VK_SHADER_STAGE_TASK_BIT_NV"),
2892                 tcu::Format::BitDesc(VK_SHADER_STAGE_MESH_BIT_NV,                                       "VK_SHADER_STAGE_MESH_BIT_NV"),
2893                 tcu::Format::BitDesc(VK_SHADER_STAGE_RAYGEN_BIT_NV,                                     "VK_SHADER_STAGE_RAYGEN_BIT_NV"),
2894                 tcu::Format::BitDesc(VK_SHADER_STAGE_ANY_HIT_BIT_NV,                            "VK_SHADER_STAGE_ANY_HIT_BIT_NV"),
2895                 tcu::Format::BitDesc(VK_SHADER_STAGE_CLOSEST_HIT_BIT_NV,                        "VK_SHADER_STAGE_CLOSEST_HIT_BIT_NV"),
2896                 tcu::Format::BitDesc(VK_SHADER_STAGE_MISS_BIT_NV,                                       "VK_SHADER_STAGE_MISS_BIT_NV"),
2897                 tcu::Format::BitDesc(VK_SHADER_STAGE_INTERSECTION_BIT_NV,                       "VK_SHADER_STAGE_INTERSECTION_BIT_NV"),
2898                 tcu::Format::BitDesc(VK_SHADER_STAGE_CALLABLE_BIT_NV,                           "VK_SHADER_STAGE_CALLABLE_BIT_NV"),
2899                 tcu::Format::BitDesc(VK_SHADER_STAGE_FLAG_BITS_MAX_ENUM,                        "VK_SHADER_STAGE_FLAG_BITS_MAX_ENUM"),
2900         };
2901         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2902 }
2903
2904 tcu::Format::Bitfield<32> getCullModeFlagsStr (VkCullModeFlags value)
2905 {
2906         static const tcu::Format::BitDesc s_desc[] =
2907         {
2908                 tcu::Format::BitDesc(VK_CULL_MODE_NONE,                                 "VK_CULL_MODE_NONE"),
2909                 tcu::Format::BitDesc(VK_CULL_MODE_FRONT_BIT,                    "VK_CULL_MODE_FRONT_BIT"),
2910                 tcu::Format::BitDesc(VK_CULL_MODE_BACK_BIT,                             "VK_CULL_MODE_BACK_BIT"),
2911                 tcu::Format::BitDesc(VK_CULL_MODE_FRONT_AND_BACK,               "VK_CULL_MODE_FRONT_AND_BACK"),
2912                 tcu::Format::BitDesc(VK_CULL_MODE_FLAG_BITS_MAX_ENUM,   "VK_CULL_MODE_FLAG_BITS_MAX_ENUM"),
2913         };
2914         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2915 }
2916
2917 tcu::Format::Bitfield<32> getSamplerCreateFlagsStr (VkSamplerCreateFlags value)
2918 {
2919         static const tcu::Format::BitDesc s_desc[] =
2920         {
2921                 tcu::Format::BitDesc(VK_SAMPLER_CREATE_SUBSAMPLED_BIT_EXT,                                                      "VK_SAMPLER_CREATE_SUBSAMPLED_BIT_EXT"),
2922                 tcu::Format::BitDesc(VK_SAMPLER_CREATE_SUBSAMPLED_COARSE_RECONSTRUCTION_BIT_EXT,        "VK_SAMPLER_CREATE_SUBSAMPLED_COARSE_RECONSTRUCTION_BIT_EXT"),
2923                 tcu::Format::BitDesc(VK_SAMPLER_CREATE_FLAG_BITS_MAX_ENUM,                                                      "VK_SAMPLER_CREATE_FLAG_BITS_MAX_ENUM"),
2924         };
2925         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2926 }
2927
2928 tcu::Format::Bitfield<32> getDescriptorPoolCreateFlagsStr (VkDescriptorPoolCreateFlags value)
2929 {
2930         static const tcu::Format::BitDesc s_desc[] =
2931         {
2932                 tcu::Format::BitDesc(VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT,         "VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT"),
2933                 tcu::Format::BitDesc(VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT,           "VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT"),
2934                 tcu::Format::BitDesc(VK_DESCRIPTOR_POOL_CREATE_HOST_ONLY_BIT_VALVE,                     "VK_DESCRIPTOR_POOL_CREATE_HOST_ONLY_BIT_VALVE"),
2935                 tcu::Format::BitDesc(VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT,       "VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT"),
2936                 tcu::Format::BitDesc(VK_DESCRIPTOR_POOL_CREATE_FLAG_BITS_MAX_ENUM,                      "VK_DESCRIPTOR_POOL_CREATE_FLAG_BITS_MAX_ENUM"),
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> getDescriptorSetLayoutCreateFlagsStr (VkDescriptorSetLayoutCreateFlags value)
2942 {
2943         static const tcu::Format::BitDesc s_desc[] =
2944         {
2945                 tcu::Format::BitDesc(VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT,                "VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT"),
2946                 tcu::Format::BitDesc(VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR,                   "VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR"),
2947                 tcu::Format::BitDesc(VK_DESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_VALVE,                  "VK_DESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_VALVE"),
2948                 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"),
2949                 tcu::Format::BitDesc(VK_DESCRIPTOR_SET_LAYOUT_CREATE_FLAG_BITS_MAX_ENUM,                                "VK_DESCRIPTOR_SET_LAYOUT_CREATE_FLAG_BITS_MAX_ENUM"),
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> getAttachmentDescriptionFlagsStr (VkAttachmentDescriptionFlags value)
2955 {
2956         static const tcu::Format::BitDesc s_desc[] =
2957         {
2958                 tcu::Format::BitDesc(VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT,           "VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT"),
2959                 tcu::Format::BitDesc(VK_ATTACHMENT_DESCRIPTION_FLAG_BITS_MAX_ENUM,      "VK_ATTACHMENT_DESCRIPTION_FLAG_BITS_MAX_ENUM"),
2960         };
2961         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2962 }
2963
2964 tcu::Format::Bitfield<32> getDependencyFlagsStr (VkDependencyFlags value)
2965 {
2966         static const tcu::Format::BitDesc s_desc[] =
2967         {
2968                 tcu::Format::BitDesc(VK_DEPENDENCY_BY_REGION_BIT,                       "VK_DEPENDENCY_BY_REGION_BIT"),
2969                 tcu::Format::BitDesc(VK_DEPENDENCY_DEVICE_GROUP_BIT,            "VK_DEPENDENCY_DEVICE_GROUP_BIT"),
2970                 tcu::Format::BitDesc(VK_DEPENDENCY_VIEW_LOCAL_BIT,                      "VK_DEPENDENCY_VIEW_LOCAL_BIT"),
2971                 tcu::Format::BitDesc(VK_DEPENDENCY_VIEW_LOCAL_BIT_KHR,          "VK_DEPENDENCY_VIEW_LOCAL_BIT_KHR"),
2972                 tcu::Format::BitDesc(VK_DEPENDENCY_DEVICE_GROUP_BIT_KHR,        "VK_DEPENDENCY_DEVICE_GROUP_BIT_KHR"),
2973                 tcu::Format::BitDesc(VK_DEPENDENCY_FLAG_BITS_MAX_ENUM,          "VK_DEPENDENCY_FLAG_BITS_MAX_ENUM"),
2974         };
2975         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2976 }
2977
2978 tcu::Format::Bitfield<32> getFramebufferCreateFlagsStr (VkFramebufferCreateFlags value)
2979 {
2980         static const tcu::Format::BitDesc s_desc[] =
2981         {
2982                 tcu::Format::BitDesc(VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT,               "VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT"),
2983                 tcu::Format::BitDesc(VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR,   "VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR"),
2984                 tcu::Format::BitDesc(VK_FRAMEBUFFER_CREATE_FLAG_BITS_MAX_ENUM,  "VK_FRAMEBUFFER_CREATE_FLAG_BITS_MAX_ENUM"),
2985         };
2986         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2987 }
2988
2989 tcu::Format::Bitfield<32> getRenderPassCreateFlagsStr (VkRenderPassCreateFlags value)
2990 {
2991         static const tcu::Format::BitDesc s_desc[] =
2992         {
2993                 tcu::Format::BitDesc(VK_RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM,  "VK_RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM"),
2994                 tcu::Format::BitDesc(VK_RENDER_PASS_CREATE_FLAG_BITS_MAX_ENUM,  "VK_RENDER_PASS_CREATE_FLAG_BITS_MAX_ENUM"),
2995         };
2996         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
2997 }
2998
2999 tcu::Format::Bitfield<32> getSubpassDescriptionFlagsStr (VkSubpassDescriptionFlags value)
3000 {
3001         static const tcu::Format::BitDesc s_desc[] =
3002         {
3003                 tcu::Format::BitDesc(VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX,                "VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX"),
3004                 tcu::Format::BitDesc(VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX,   "VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX"),
3005                 tcu::Format::BitDesc(VK_SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM,                   "VK_SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM"),
3006                 tcu::Format::BitDesc(VK_SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM,                    "VK_SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM"),
3007                 tcu::Format::BitDesc(VK_SUBPASS_DESCRIPTION_FLAG_BITS_MAX_ENUM,                                 "VK_SUBPASS_DESCRIPTION_FLAG_BITS_MAX_ENUM"),
3008         };
3009         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
3010 }
3011
3012 tcu::Format::Bitfield<32> getCommandPoolCreateFlagsStr (VkCommandPoolCreateFlags value)
3013 {
3014         static const tcu::Format::BitDesc s_desc[] =
3015         {
3016                 tcu::Format::BitDesc(VK_COMMAND_POOL_CREATE_TRANSIENT_BIT,                              "VK_COMMAND_POOL_CREATE_TRANSIENT_BIT"),
3017                 tcu::Format::BitDesc(VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT,   "VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT"),
3018                 tcu::Format::BitDesc(VK_COMMAND_POOL_CREATE_PROTECTED_BIT,                              "VK_COMMAND_POOL_CREATE_PROTECTED_BIT"),
3019                 tcu::Format::BitDesc(VK_COMMAND_POOL_CREATE_FLAG_BITS_MAX_ENUM,                 "VK_COMMAND_POOL_CREATE_FLAG_BITS_MAX_ENUM"),
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> getCommandPoolResetFlagsStr (VkCommandPoolResetFlags value)
3025 {
3026         static const tcu::Format::BitDesc s_desc[] =
3027         {
3028                 tcu::Format::BitDesc(VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT,       "VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT"),
3029                 tcu::Format::BitDesc(VK_COMMAND_POOL_RESET_FLAG_BITS_MAX_ENUM,          "VK_COMMAND_POOL_RESET_FLAG_BITS_MAX_ENUM"),
3030         };
3031         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
3032 }
3033
3034 tcu::Format::Bitfield<32> getCommandBufferUsageFlagsStr (VkCommandBufferUsageFlags value)
3035 {
3036         static const tcu::Format::BitDesc s_desc[] =
3037         {
3038                 tcu::Format::BitDesc(VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT,               "VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT"),
3039                 tcu::Format::BitDesc(VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT,  "VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT"),
3040                 tcu::Format::BitDesc(VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT,              "VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT"),
3041                 tcu::Format::BitDesc(VK_COMMAND_BUFFER_USAGE_FLAG_BITS_MAX_ENUM,                "VK_COMMAND_BUFFER_USAGE_FLAG_BITS_MAX_ENUM"),
3042         };
3043         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
3044 }
3045
3046 tcu::Format::Bitfield<32> getQueryControlFlagsStr (VkQueryControlFlags value)
3047 {
3048         static const tcu::Format::BitDesc s_desc[] =
3049         {
3050                 tcu::Format::BitDesc(VK_QUERY_CONTROL_PRECISE_BIT,                      "VK_QUERY_CONTROL_PRECISE_BIT"),
3051                 tcu::Format::BitDesc(VK_QUERY_CONTROL_FLAG_BITS_MAX_ENUM,       "VK_QUERY_CONTROL_FLAG_BITS_MAX_ENUM"),
3052         };
3053         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
3054 }
3055
3056 tcu::Format::Bitfield<32> getCommandBufferResetFlagsStr (VkCommandBufferResetFlags value)
3057 {
3058         static const tcu::Format::BitDesc s_desc[] =
3059         {
3060                 tcu::Format::BitDesc(VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT,     "VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT"),
3061                 tcu::Format::BitDesc(VK_COMMAND_BUFFER_RESET_FLAG_BITS_MAX_ENUM,        "VK_COMMAND_BUFFER_RESET_FLAG_BITS_MAX_ENUM"),
3062         };
3063         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
3064 }
3065
3066 tcu::Format::Bitfield<32> getStencilFaceFlagsStr (VkStencilFaceFlags value)
3067 {
3068         static const tcu::Format::BitDesc s_desc[] =
3069         {
3070                 tcu::Format::BitDesc(VK_STENCIL_FACE_FRONT_BIT,                         "VK_STENCIL_FACE_FRONT_BIT"),
3071                 tcu::Format::BitDesc(VK_STENCIL_FACE_BACK_BIT,                          "VK_STENCIL_FACE_BACK_BIT"),
3072                 tcu::Format::BitDesc(VK_STENCIL_FACE_FRONT_AND_BACK,            "VK_STENCIL_FACE_FRONT_AND_BACK"),
3073                 tcu::Format::BitDesc(VK_STENCIL_FRONT_AND_BACK,                         "VK_STENCIL_FRONT_AND_BACK"),
3074                 tcu::Format::BitDesc(VK_STENCIL_FACE_FLAG_BITS_MAX_ENUM,        "VK_STENCIL_FACE_FLAG_BITS_MAX_ENUM"),
3075         };
3076         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
3077 }
3078
3079 tcu::Format::Bitfield<32> getSubgroupFeatureFlagsStr (VkSubgroupFeatureFlags value)
3080 {
3081         static const tcu::Format::BitDesc s_desc[] =
3082         {
3083                 tcu::Format::BitDesc(VK_SUBGROUP_FEATURE_BASIC_BIT,                             "VK_SUBGROUP_FEATURE_BASIC_BIT"),
3084                 tcu::Format::BitDesc(VK_SUBGROUP_FEATURE_VOTE_BIT,                              "VK_SUBGROUP_FEATURE_VOTE_BIT"),
3085                 tcu::Format::BitDesc(VK_SUBGROUP_FEATURE_ARITHMETIC_BIT,                "VK_SUBGROUP_FEATURE_ARITHMETIC_BIT"),
3086                 tcu::Format::BitDesc(VK_SUBGROUP_FEATURE_BALLOT_BIT,                    "VK_SUBGROUP_FEATURE_BALLOT_BIT"),
3087                 tcu::Format::BitDesc(VK_SUBGROUP_FEATURE_SHUFFLE_BIT,                   "VK_SUBGROUP_FEATURE_SHUFFLE_BIT"),
3088                 tcu::Format::BitDesc(VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT,  "VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT"),
3089                 tcu::Format::BitDesc(VK_SUBGROUP_FEATURE_CLUSTERED_BIT,                 "VK_SUBGROUP_FEATURE_CLUSTERED_BIT"),
3090                 tcu::Format::BitDesc(VK_SUBGROUP_FEATURE_QUAD_BIT,                              "VK_SUBGROUP_FEATURE_QUAD_BIT"),
3091                 tcu::Format::BitDesc(VK_SUBGROUP_FEATURE_PARTITIONED_BIT_NV,    "VK_SUBGROUP_FEATURE_PARTITIONED_BIT_NV"),
3092                 tcu::Format::BitDesc(VK_SUBGROUP_FEATURE_FLAG_BITS_MAX_ENUM,    "VK_SUBGROUP_FEATURE_FLAG_BITS_MAX_ENUM"),
3093         };
3094         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
3095 }
3096
3097 tcu::Format::Bitfield<32> getPeerMemoryFeatureFlagsStr (VkPeerMemoryFeatureFlags value)
3098 {
3099         static const tcu::Format::BitDesc s_desc[] =
3100         {
3101                 tcu::Format::BitDesc(VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT,                       "VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT"),
3102                 tcu::Format::BitDesc(VK_PEER_MEMORY_FEATURE_COPY_DST_BIT,                       "VK_PEER_MEMORY_FEATURE_COPY_DST_BIT"),
3103                 tcu::Format::BitDesc(VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT,            "VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT"),
3104                 tcu::Format::BitDesc(VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT,            "VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT"),
3105                 tcu::Format::BitDesc(VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT_KHR,           "VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT_KHR"),
3106                 tcu::Format::BitDesc(VK_PEER_MEMORY_FEATURE_COPY_DST_BIT_KHR,           "VK_PEER_MEMORY_FEATURE_COPY_DST_BIT_KHR"),
3107                 tcu::Format::BitDesc(VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT_KHR,        "VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT_KHR"),
3108                 tcu::Format::BitDesc(VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT_KHR,        "VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT_KHR"),
3109                 tcu::Format::BitDesc(VK_PEER_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM,         "VK_PEER_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM"),
3110         };
3111         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
3112 }
3113
3114 tcu::Format::Bitfield<32> getMemoryAllocateFlagsStr (VkMemoryAllocateFlags value)
3115 {
3116         static const tcu::Format::BitDesc s_desc[] =
3117         {
3118                 tcu::Format::BitDesc(VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT,                                                "VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT"),
3119                 tcu::Format::BitDesc(VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT,                                             "VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT"),
3120                 tcu::Format::BitDesc(VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT,              "VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT"),
3121                 tcu::Format::BitDesc(VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHR,                                    "VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHR"),
3122                 tcu::Format::BitDesc(VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT_KHR,                                 "VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT_KHR"),
3123                 tcu::Format::BitDesc(VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR,  "VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR"),
3124                 tcu::Format::BitDesc(VK_MEMORY_ALLOCATE_FLAG_BITS_MAX_ENUM,                                             "VK_MEMORY_ALLOCATE_FLAG_BITS_MAX_ENUM"),
3125         };
3126         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
3127 }
3128
3129 tcu::Format::Bitfield<32> getExternalMemoryHandleTypeFlagsStr (VkExternalMemoryHandleTypeFlags value)
3130 {
3131         static const tcu::Format::BitDesc s_desc[] =
3132         {
3133                 tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT,                                                      "VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT"),
3134                 tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT,                                           "VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT"),
3135                 tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT,                                       "VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT"),
3136                 tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT,                                          "VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT"),
3137                 tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT,                                      "VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT"),
3138                 tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT,                                                     "VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT"),
3139                 tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT,                                         "VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT"),
3140                 tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT,                                            "VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT"),
3141                 tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID,        "VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID"),
3142                 tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT,                            "VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT"),
3143                 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"),
3144                 tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_ZIRCON_VMO_BIT_FUCHSIA,                                     "VK_EXTERNAL_MEMORY_HANDLE_TYPE_ZIRCON_VMO_BIT_FUCHSIA"),
3145                 tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR,                                          "VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR"),
3146                 tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR,                                       "VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR"),
3147                 tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR,                           "VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR"),
3148                 tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT_KHR,                                      "VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT_KHR"),
3149                 tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT_KHR,                          "VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT_KHR"),
3150                 tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT_KHR,                                         "VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT_KHR"),
3151                 tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT_KHR,                                     "VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT_KHR"),
3152                 tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_FLAG_BITS_MAX_ENUM,                                         "VK_EXTERNAL_MEMORY_HANDLE_TYPE_FLAG_BITS_MAX_ENUM"),
3153         };
3154         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
3155 }
3156
3157 tcu::Format::Bitfield<32> getExternalMemoryFeatureFlagsStr (VkExternalMemoryFeatureFlags value)
3158 {
3159         static const tcu::Format::BitDesc s_desc[] =
3160         {
3161                 tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT,             "VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT"),
3162                 tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT,                 "VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT"),
3163                 tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT,                 "VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT"),
3164                 tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_KHR, "VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_KHR"),
3165                 tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_KHR,             "VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_KHR"),
3166                 tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_KHR,             "VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_KHR"),
3167                 tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM,             "VK_EXTERNAL_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM"),
3168         };
3169         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
3170 }
3171
3172 tcu::Format::Bitfield<32> getExternalFenceHandleTypeFlagsStr (VkExternalFenceHandleTypeFlags value)
3173 {
3174         static const tcu::Format::BitDesc s_desc[] =
3175         {
3176                 tcu::Format::BitDesc(VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT,                               "VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT"),
3177                 tcu::Format::BitDesc(VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT,                    "VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT"),
3178                 tcu::Format::BitDesc(VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT,                "VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT"),
3179                 tcu::Format::BitDesc(VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT,                                 "VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT"),
3180                 tcu::Format::BitDesc(VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR,                   "VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR"),
3181                 tcu::Format::BitDesc(VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR,                "VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR"),
3182                 tcu::Format::BitDesc(VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR,    "VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR"),
3183                 tcu::Format::BitDesc(VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT_KHR,                             "VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT_KHR"),
3184                 tcu::Format::BitDesc(VK_EXTERNAL_FENCE_HANDLE_TYPE_FLAG_BITS_MAX_ENUM,                  "VK_EXTERNAL_FENCE_HANDLE_TYPE_FLAG_BITS_MAX_ENUM"),
3185         };
3186         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
3187 }
3188
3189 tcu::Format::Bitfield<32> getExternalFenceFeatureFlagsStr (VkExternalFenceFeatureFlags value)
3190 {
3191         static const tcu::Format::BitDesc s_desc[] =
3192         {
3193                 tcu::Format::BitDesc(VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT,          "VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT"),
3194                 tcu::Format::BitDesc(VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT,          "VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT"),
3195                 tcu::Format::BitDesc(VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT_KHR,      "VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT_KHR"),
3196                 tcu::Format::BitDesc(VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT_KHR,      "VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT_KHR"),
3197                 tcu::Format::BitDesc(VK_EXTERNAL_FENCE_FEATURE_FLAG_BITS_MAX_ENUM,      "VK_EXTERNAL_FENCE_FEATURE_FLAG_BITS_MAX_ENUM"),
3198         };
3199         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
3200 }
3201
3202 tcu::Format::Bitfield<32> getFenceImportFlagsStr (VkFenceImportFlags value)
3203 {
3204         static const tcu::Format::BitDesc s_desc[] =
3205         {
3206                 tcu::Format::BitDesc(VK_FENCE_IMPORT_TEMPORARY_BIT,                     "VK_FENCE_IMPORT_TEMPORARY_BIT"),
3207                 tcu::Format::BitDesc(VK_FENCE_IMPORT_TEMPORARY_BIT_KHR,         "VK_FENCE_IMPORT_TEMPORARY_BIT_KHR"),
3208                 tcu::Format::BitDesc(VK_FENCE_IMPORT_FLAG_BITS_MAX_ENUM,        "VK_FENCE_IMPORT_FLAG_BITS_MAX_ENUM"),
3209         };
3210         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
3211 }
3212
3213 tcu::Format::Bitfield<32> getSemaphoreImportFlagsStr (VkSemaphoreImportFlags value)
3214 {
3215         static const tcu::Format::BitDesc s_desc[] =
3216         {
3217                 tcu::Format::BitDesc(VK_SEMAPHORE_IMPORT_TEMPORARY_BIT,                 "VK_SEMAPHORE_IMPORT_TEMPORARY_BIT"),
3218                 tcu::Format::BitDesc(VK_SEMAPHORE_IMPORT_TEMPORARY_BIT_KHR,             "VK_SEMAPHORE_IMPORT_TEMPORARY_BIT_KHR"),
3219                 tcu::Format::BitDesc(VK_SEMAPHORE_IMPORT_FLAG_BITS_MAX_ENUM,    "VK_SEMAPHORE_IMPORT_FLAG_BITS_MAX_ENUM"),
3220         };
3221         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
3222 }
3223
3224 tcu::Format::Bitfield<32> getExternalSemaphoreHandleTypeFlagsStr (VkExternalSemaphoreHandleTypeFlags value)
3225 {
3226         static const tcu::Format::BitDesc s_desc[] =
3227         {
3228                 tcu::Format::BitDesc(VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT,                           "VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT"),
3229                 tcu::Format::BitDesc(VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT,                        "VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT"),
3230                 tcu::Format::BitDesc(VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT,            "VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT"),
3231                 tcu::Format::BitDesc(VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT,                         "VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT"),
3232                 tcu::Format::BitDesc(VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT,                                     "VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT"),
3233                 tcu::Format::BitDesc(VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_ZIRCON_EVENT_BIT_FUCHSIA,        "VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_ZIRCON_EVENT_BIT_FUCHSIA"),
3234                 tcu::Format::BitDesc(VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D11_FENCE_BIT,                         "VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D11_FENCE_BIT"),
3235                 tcu::Format::BitDesc(VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR,                       "VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR"),
3236                 tcu::Format::BitDesc(VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR,            "VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR"),
3237                 tcu::Format::BitDesc(VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR,        "VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR"),
3238                 tcu::Format::BitDesc(VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT_KHR,                     "VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT_KHR"),
3239                 tcu::Format::BitDesc(VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT_KHR,                         "VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT_KHR"),
3240                 tcu::Format::BitDesc(VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_FLAG_BITS_MAX_ENUM,                      "VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_FLAG_BITS_MAX_ENUM"),
3241         };
3242         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
3243 }
3244
3245 tcu::Format::Bitfield<32> getExternalSemaphoreFeatureFlagsStr (VkExternalSemaphoreFeatureFlags value)
3246 {
3247         static const tcu::Format::BitDesc s_desc[] =
3248         {
3249                 tcu::Format::BitDesc(VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT,              "VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT"),
3250                 tcu::Format::BitDesc(VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT,              "VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT"),
3251                 tcu::Format::BitDesc(VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT_KHR,  "VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT_KHR"),
3252                 tcu::Format::BitDesc(VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT_KHR,  "VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT_KHR"),
3253                 tcu::Format::BitDesc(VK_EXTERNAL_SEMAPHORE_FEATURE_FLAG_BITS_MAX_ENUM,  "VK_EXTERNAL_SEMAPHORE_FEATURE_FLAG_BITS_MAX_ENUM"),
3254         };
3255         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
3256 }
3257
3258 tcu::Format::Bitfield<32> getResolveModeFlagsStr (VkResolveModeFlags value)
3259 {
3260         static const tcu::Format::BitDesc s_desc[] =
3261         {
3262                 tcu::Format::BitDesc(VK_RESOLVE_MODE_NONE,                                      "VK_RESOLVE_MODE_NONE"),
3263                 tcu::Format::BitDesc(VK_RESOLVE_MODE_SAMPLE_ZERO_BIT,           "VK_RESOLVE_MODE_SAMPLE_ZERO_BIT"),
3264                 tcu::Format::BitDesc(VK_RESOLVE_MODE_AVERAGE_BIT,                       "VK_RESOLVE_MODE_AVERAGE_BIT"),
3265                 tcu::Format::BitDesc(VK_RESOLVE_MODE_MIN_BIT,                           "VK_RESOLVE_MODE_MIN_BIT"),
3266                 tcu::Format::BitDesc(VK_RESOLVE_MODE_MAX_BIT,                           "VK_RESOLVE_MODE_MAX_BIT"),
3267                 tcu::Format::BitDesc(VK_RESOLVE_MODE_NONE_KHR,                          "VK_RESOLVE_MODE_NONE_KHR"),
3268                 tcu::Format::BitDesc(VK_RESOLVE_MODE_SAMPLE_ZERO_BIT_KHR,       "VK_RESOLVE_MODE_SAMPLE_ZERO_BIT_KHR"),
3269                 tcu::Format::BitDesc(VK_RESOLVE_MODE_AVERAGE_BIT_KHR,           "VK_RESOLVE_MODE_AVERAGE_BIT_KHR"),
3270                 tcu::Format::BitDesc(VK_RESOLVE_MODE_MIN_BIT_KHR,                       "VK_RESOLVE_MODE_MIN_BIT_KHR"),
3271                 tcu::Format::BitDesc(VK_RESOLVE_MODE_MAX_BIT_KHR,                       "VK_RESOLVE_MODE_MAX_BIT_KHR"),
3272                 tcu::Format::BitDesc(VK_RESOLVE_MODE_FLAG_BITS_MAX_ENUM,        "VK_RESOLVE_MODE_FLAG_BITS_MAX_ENUM"),
3273         };
3274         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
3275 }
3276
3277 tcu::Format::Bitfield<32> getDescriptorBindingFlagsStr (VkDescriptorBindingFlags value)
3278 {
3279         static const tcu::Format::BitDesc s_desc[] =
3280         {
3281                 tcu::Format::BitDesc(VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT,                               "VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT"),
3282                 tcu::Format::BitDesc(VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT,             "VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT"),
3283                 tcu::Format::BitDesc(VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT,                                 "VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT"),
3284                 tcu::Format::BitDesc(VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT,               "VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT"),
3285                 tcu::Format::BitDesc(VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT,                   "VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT"),
3286                 tcu::Format::BitDesc(VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT, "VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT"),
3287                 tcu::Format::BitDesc(VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT,                             "VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT"),
3288                 tcu::Format::BitDesc(VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT,   "VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT"),
3289                 tcu::Format::BitDesc(VK_DESCRIPTOR_BINDING_FLAG_BITS_MAX_ENUM,                                  "VK_DESCRIPTOR_BINDING_FLAG_BITS_MAX_ENUM"),
3290         };
3291         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
3292 }
3293
3294 tcu::Format::Bitfield<32> getSemaphoreWaitFlagsStr (VkSemaphoreWaitFlags value)
3295 {
3296         static const tcu::Format::BitDesc s_desc[] =
3297         {
3298                 tcu::Format::BitDesc(VK_SEMAPHORE_WAIT_ANY_BIT,                         "VK_SEMAPHORE_WAIT_ANY_BIT"),
3299                 tcu::Format::BitDesc(VK_SEMAPHORE_WAIT_ANY_BIT_KHR,                     "VK_SEMAPHORE_WAIT_ANY_BIT_KHR"),
3300                 tcu::Format::BitDesc(VK_SEMAPHORE_WAIT_FLAG_BITS_MAX_ENUM,      "VK_SEMAPHORE_WAIT_FLAG_BITS_MAX_ENUM"),
3301         };
3302         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
3303 }
3304
3305 tcu::Format::Bitfield<32> getSurfaceTransformFlagsKHRStr (VkSurfaceTransformFlagsKHR value)
3306 {
3307         static const tcu::Format::BitDesc s_desc[] =
3308         {
3309                 tcu::Format::BitDesc(VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR,                                             "VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR"),
3310                 tcu::Format::BitDesc(VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR,                                    "VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR"),
3311                 tcu::Format::BitDesc(VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR,                                   "VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR"),
3312                 tcu::Format::BitDesc(VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR,                                   "VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR"),
3313                 tcu::Format::BitDesc(VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR,                    "VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR"),
3314                 tcu::Format::BitDesc(VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR,  "VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR"),
3315                 tcu::Format::BitDesc(VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR, "VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR"),
3316                 tcu::Format::BitDesc(VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR, "VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR"),
3317                 tcu::Format::BitDesc(VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR,                                              "VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR"),
3318                 tcu::Format::BitDesc(VK_SURFACE_TRANSFORM_FLAG_BITS_MAX_ENUM_KHR,                               "VK_SURFACE_TRANSFORM_FLAG_BITS_MAX_ENUM_KHR"),
3319         };
3320         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
3321 }
3322
3323 tcu::Format::Bitfield<32> getCompositeAlphaFlagsKHRStr (VkCompositeAlphaFlagsKHR value)
3324 {
3325         static const tcu::Format::BitDesc s_desc[] =
3326         {
3327                 tcu::Format::BitDesc(VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR,                         "VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR"),
3328                 tcu::Format::BitDesc(VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR,         "VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR"),
3329                 tcu::Format::BitDesc(VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR,        "VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR"),
3330                 tcu::Format::BitDesc(VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR,                        "VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR"),
3331                 tcu::Format::BitDesc(VK_COMPOSITE_ALPHA_FLAG_BITS_MAX_ENUM_KHR,         "VK_COMPOSITE_ALPHA_FLAG_BITS_MAX_ENUM_KHR"),
3332         };
3333         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
3334 }
3335
3336 tcu::Format::Bitfield<32> getSwapchainCreateFlagsKHRStr (VkSwapchainCreateFlagsKHR value)
3337 {
3338         static const tcu::Format::BitDesc s_desc[] =
3339         {
3340                 tcu::Format::BitDesc(VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR,   "VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR"),
3341                 tcu::Format::BitDesc(VK_SWAPCHAIN_CREATE_PROTECTED_BIT_KHR,                                             "VK_SWAPCHAIN_CREATE_PROTECTED_BIT_KHR"),
3342                 tcu::Format::BitDesc(VK_SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR,                                "VK_SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR"),
3343                 tcu::Format::BitDesc(VK_SWAPCHAIN_CREATE_FLAG_BITS_MAX_ENUM_KHR,                                "VK_SWAPCHAIN_CREATE_FLAG_BITS_MAX_ENUM_KHR"),
3344         };
3345         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
3346 }
3347
3348 tcu::Format::Bitfield<32> getDeviceGroupPresentModeFlagsKHRStr (VkDeviceGroupPresentModeFlagsKHR value)
3349 {
3350         static const tcu::Format::BitDesc s_desc[] =
3351         {
3352                 tcu::Format::BitDesc(VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR,                                "VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR"),
3353                 tcu::Format::BitDesc(VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR,                               "VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR"),
3354                 tcu::Format::BitDesc(VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR,                                  "VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR"),
3355                 tcu::Format::BitDesc(VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR,   "VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR"),
3356                 tcu::Format::BitDesc(VK_DEVICE_GROUP_PRESENT_MODE_FLAG_BITS_MAX_ENUM_KHR,               "VK_DEVICE_GROUP_PRESENT_MODE_FLAG_BITS_MAX_ENUM_KHR"),
3357         };
3358         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
3359 }
3360
3361 tcu::Format::Bitfield<32> getDisplayPlaneAlphaFlagsKHRStr (VkDisplayPlaneAlphaFlagsKHR value)
3362 {
3363         static const tcu::Format::BitDesc s_desc[] =
3364         {
3365                 tcu::Format::BitDesc(VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR,                                             "VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR"),
3366                 tcu::Format::BitDesc(VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR,                                             "VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR"),
3367                 tcu::Format::BitDesc(VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR,                                  "VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR"),
3368                 tcu::Format::BitDesc(VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR,    "VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR"),
3369                 tcu::Format::BitDesc(VK_DISPLAY_PLANE_ALPHA_FLAG_BITS_MAX_ENUM_KHR,                             "VK_DISPLAY_PLANE_ALPHA_FLAG_BITS_MAX_ENUM_KHR"),
3370         };
3371         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
3372 }
3373
3374 tcu::Format::Bitfield<32> getPerformanceCounterDescriptionFlagsKHRStr (VkPerformanceCounterDescriptionFlagsKHR value)
3375 {
3376         static const tcu::Format::BitDesc s_desc[] =
3377         {
3378                 tcu::Format::BitDesc(VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_BIT_KHR,  "VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_BIT_KHR"),
3379                 tcu::Format::BitDesc(VK_PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_BIT_KHR,  "VK_PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_BIT_KHR"),
3380                 tcu::Format::BitDesc(VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_KHR,              "VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_KHR"),
3381                 tcu::Format::BitDesc(VK_PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_KHR,              "VK_PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_KHR"),
3382                 tcu::Format::BitDesc(VK_PERFORMANCE_COUNTER_DESCRIPTION_FLAG_BITS_MAX_ENUM_KHR,                 "VK_PERFORMANCE_COUNTER_DESCRIPTION_FLAG_BITS_MAX_ENUM_KHR"),
3383         };
3384         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
3385 }
3386
3387 tcu::Format::Bitfield<32> getAcquireProfilingLockFlagsKHRStr (VkAcquireProfilingLockFlagsKHR value)
3388 {
3389         static const tcu::Format::BitDesc s_desc[] =
3390         {
3391                 tcu::Format::BitDesc(VK_ACQUIRE_PROFILING_LOCK_FLAG_BITS_MAX_ENUM_KHR,  "VK_ACQUIRE_PROFILING_LOCK_FLAG_BITS_MAX_ENUM_KHR"),
3392         };
3393         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
3394 }
3395
3396 tcu::Format::Bitfield<32> getSubmitFlagsKHRStr (VkSubmitFlagsKHR value)
3397 {
3398         static const tcu::Format::BitDesc s_desc[] =
3399         {
3400                 tcu::Format::BitDesc(VK_SUBMIT_PROTECTED_BIT_KHR,               "VK_SUBMIT_PROTECTED_BIT_KHR"),
3401                 tcu::Format::BitDesc(VK_SUBMIT_FLAG_BITS_MAX_ENUM_KHR,  "VK_SUBMIT_FLAG_BITS_MAX_ENUM_KHR"),
3402         };
3403         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
3404 }
3405
3406 tcu::Format::Bitfield<32> getDebugReportFlagsEXTStr (VkDebugReportFlagsEXT value)
3407 {
3408         static const tcu::Format::BitDesc s_desc[] =
3409         {
3410                 tcu::Format::BitDesc(VK_DEBUG_REPORT_INFORMATION_BIT_EXT,                       "VK_DEBUG_REPORT_INFORMATION_BIT_EXT"),
3411                 tcu::Format::BitDesc(VK_DEBUG_REPORT_WARNING_BIT_EXT,                           "VK_DEBUG_REPORT_WARNING_BIT_EXT"),
3412                 tcu::Format::BitDesc(VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT,       "VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT"),
3413                 tcu::Format::BitDesc(VK_DEBUG_REPORT_ERROR_BIT_EXT,                                     "VK_DEBUG_REPORT_ERROR_BIT_EXT"),
3414                 tcu::Format::BitDesc(VK_DEBUG_REPORT_DEBUG_BIT_EXT,                                     "VK_DEBUG_REPORT_DEBUG_BIT_EXT"),
3415                 tcu::Format::BitDesc(VK_DEBUG_REPORT_FLAG_BITS_MAX_ENUM_EXT,            "VK_DEBUG_REPORT_FLAG_BITS_MAX_ENUM_EXT"),
3416         };
3417         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
3418 }
3419
3420 tcu::Format::Bitfield<32> getExternalMemoryHandleTypeFlagsNVStr (VkExternalMemoryHandleTypeFlagsNV value)
3421 {
3422         static const tcu::Format::BitDesc s_desc[] =
3423         {
3424                 tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV,                "VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV"),
3425                 tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV,    "VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV"),
3426                 tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV,                 "VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV"),
3427                 tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV,             "VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV"),
3428                 tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_HANDLE_TYPE_FLAG_BITS_MAX_ENUM_NV,              "VK_EXTERNAL_MEMORY_HANDLE_TYPE_FLAG_BITS_MAX_ENUM_NV"),
3429         };
3430         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
3431 }
3432
3433 tcu::Format::Bitfield<32> getExternalMemoryFeatureFlagsNVStr (VkExternalMemoryFeatureFlagsNV value)
3434 {
3435         static const tcu::Format::BitDesc s_desc[] =
3436         {
3437                 tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV,  "VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV"),
3438                 tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV,              "VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV"),
3439                 tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV,              "VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV"),
3440                 tcu::Format::BitDesc(VK_EXTERNAL_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM_NV,  "VK_EXTERNAL_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM_NV"),
3441         };
3442         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
3443 }
3444
3445 tcu::Format::Bitfield<32> getConditionalRenderingFlagsEXTStr (VkConditionalRenderingFlagsEXT value)
3446 {
3447         static const tcu::Format::BitDesc s_desc[] =
3448         {
3449                 tcu::Format::BitDesc(VK_CONDITIONAL_RENDERING_INVERTED_BIT_EXT,                 "VK_CONDITIONAL_RENDERING_INVERTED_BIT_EXT"),
3450                 tcu::Format::BitDesc(VK_CONDITIONAL_RENDERING_FLAG_BITS_MAX_ENUM_EXT,   "VK_CONDITIONAL_RENDERING_FLAG_BITS_MAX_ENUM_EXT"),
3451         };
3452         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
3453 }
3454
3455 tcu::Format::Bitfield<32> getSurfaceCounterFlagsEXTStr (VkSurfaceCounterFlagsEXT value)
3456 {
3457         static const tcu::Format::BitDesc s_desc[] =
3458         {
3459                 tcu::Format::BitDesc(VK_SURFACE_COUNTER_VBLANK_BIT_EXT,                 "VK_SURFACE_COUNTER_VBLANK_BIT_EXT"),
3460                 tcu::Format::BitDesc(VK_SURFACE_COUNTER_VBLANK_EXT,                             "VK_SURFACE_COUNTER_VBLANK_EXT"),
3461                 tcu::Format::BitDesc(VK_SURFACE_COUNTER_FLAG_BITS_MAX_ENUM_EXT, "VK_SURFACE_COUNTER_FLAG_BITS_MAX_ENUM_EXT"),
3462         };
3463         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
3464 }
3465
3466 tcu::Format::Bitfield<32> getDebugUtilsMessageSeverityFlagsEXTStr (VkDebugUtilsMessageSeverityFlagsEXT value)
3467 {
3468         static const tcu::Format::BitDesc s_desc[] =
3469         {
3470                 tcu::Format::BitDesc(VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT,                   "VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT"),
3471                 tcu::Format::BitDesc(VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT,                              "VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT"),
3472                 tcu::Format::BitDesc(VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT,                   "VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT"),
3473                 tcu::Format::BitDesc(VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT,                             "VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT"),
3474                 tcu::Format::BitDesc(VK_DEBUG_UTILS_MESSAGE_SEVERITY_FLAG_BITS_MAX_ENUM_EXT,    "VK_DEBUG_UTILS_MESSAGE_SEVERITY_FLAG_BITS_MAX_ENUM_EXT"),
3475         };
3476         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
3477 }
3478
3479 tcu::Format::Bitfield<32> getDebugUtilsMessageTypeFlagsEXTStr (VkDebugUtilsMessageTypeFlagsEXT value)
3480 {
3481         static const tcu::Format::BitDesc s_desc[] =
3482         {
3483                 tcu::Format::BitDesc(VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT,                       "VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT"),
3484                 tcu::Format::BitDesc(VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT,            "VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT"),
3485                 tcu::Format::BitDesc(VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT,           "VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT"),
3486                 tcu::Format::BitDesc(VK_DEBUG_UTILS_MESSAGE_TYPE_FLAG_BITS_MAX_ENUM_EXT,        "VK_DEBUG_UTILS_MESSAGE_TYPE_FLAG_BITS_MAX_ENUM_EXT"),
3487         };
3488         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
3489 }
3490
3491 tcu::Format::Bitfield<32> getGeometryFlagsKHRStr (VkGeometryFlagsKHR value)
3492 {
3493         static const tcu::Format::BitDesc s_desc[] =
3494         {
3495                 tcu::Format::BitDesc(VK_GEOMETRY_OPAQUE_BIT_KHR,                                                        "VK_GEOMETRY_OPAQUE_BIT_KHR"),
3496                 tcu::Format::BitDesc(VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR,       "VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR"),
3497                 tcu::Format::BitDesc(VK_GEOMETRY_OPAQUE_BIT_NV,                                                         "VK_GEOMETRY_OPAQUE_BIT_NV"),
3498                 tcu::Format::BitDesc(VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_NV,        "VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_NV"),
3499                 tcu::Format::BitDesc(VK_GEOMETRY_FLAG_BITS_MAX_ENUM_KHR,                                        "VK_GEOMETRY_FLAG_BITS_MAX_ENUM_KHR"),
3500         };
3501         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
3502 }
3503
3504 tcu::Format::Bitfield<32> getGeometryInstanceFlagsKHRStr (VkGeometryInstanceFlagsKHR value)
3505 {
3506         static const tcu::Format::BitDesc s_desc[] =
3507         {
3508                 tcu::Format::BitDesc(VK_GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR,         "VK_GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR"),
3509                 tcu::Format::BitDesc(VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR,      "VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR"),
3510                 tcu::Format::BitDesc(VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR,                                         "VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR"),
3511                 tcu::Format::BitDesc(VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR,                                      "VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR"),
3512                 tcu::Format::BitDesc(VK_GEOMETRY_INSTANCE_TRIANGLE_CULL_DISABLE_BIT_NV,                         "VK_GEOMETRY_INSTANCE_TRIANGLE_CULL_DISABLE_BIT_NV"),
3513                 tcu::Format::BitDesc(VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_NV,       "VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_NV"),
3514                 tcu::Format::BitDesc(VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_NV,                                          "VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_NV"),
3515                 tcu::Format::BitDesc(VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_NV,                                       "VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_NV"),
3516                 tcu::Format::BitDesc(VK_GEOMETRY_INSTANCE_FLAG_BITS_MAX_ENUM_KHR,                                       "VK_GEOMETRY_INSTANCE_FLAG_BITS_MAX_ENUM_KHR"),
3517         };
3518         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
3519 }
3520
3521 tcu::Format::Bitfield<32> getBuildAccelerationStructureFlagsKHRStr (VkBuildAccelerationStructureFlagsKHR value)
3522 {
3523         static const tcu::Format::BitDesc s_desc[] =
3524         {
3525                 tcu::Format::BitDesc(VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR,              "VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR"),
3526                 tcu::Format::BitDesc(VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR,  "VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR"),
3527                 tcu::Format::BitDesc(VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR, "VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR"),
3528                 tcu::Format::BitDesc(VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR, "VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR"),
3529                 tcu::Format::BitDesc(VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR,                "VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR"),
3530                 tcu::Format::BitDesc(VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV,               "VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV"),
3531                 tcu::Format::BitDesc(VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV,   "VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV"),
3532                 tcu::Format::BitDesc(VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV,  "VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV"),
3533                 tcu::Format::BitDesc(VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV,  "VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV"),
3534                 tcu::Format::BitDesc(VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_NV,                 "VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_NV"),
3535                 tcu::Format::BitDesc(VK_BUILD_ACCELERATION_STRUCTURE_FLAG_BITS_MAX_ENUM_KHR,    "VK_BUILD_ACCELERATION_STRUCTURE_FLAG_BITS_MAX_ENUM_KHR"),
3536         };
3537         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
3538 }
3539
3540 tcu::Format::Bitfield<32> getPipelineCompilerControlFlagsAMDStr (VkPipelineCompilerControlFlagsAMD value)
3541 {
3542         static const tcu::Format::BitDesc s_desc[] =
3543         {
3544                 tcu::Format::BitDesc(VK_PIPELINE_COMPILER_CONTROL_FLAG_BITS_MAX_ENUM_AMD,       "VK_PIPELINE_COMPILER_CONTROL_FLAG_BITS_MAX_ENUM_AMD"),
3545         };
3546         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
3547 }
3548
3549 tcu::Format::Bitfield<32> getPipelineCreationFeedbackFlagsEXTStr (VkPipelineCreationFeedbackFlagsEXT value)
3550 {
3551         static const tcu::Format::BitDesc s_desc[] =
3552         {
3553                 tcu::Format::BitDesc(VK_PIPELINE_CREATION_FEEDBACK_VALID_BIT_EXT,                                                       "VK_PIPELINE_CREATION_FEEDBACK_VALID_BIT_EXT"),
3554                 tcu::Format::BitDesc(VK_PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT_EXT,      "VK_PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT_EXT"),
3555                 tcu::Format::BitDesc(VK_PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT_EXT,          "VK_PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT_EXT"),
3556                 tcu::Format::BitDesc(VK_PIPELINE_CREATION_FEEDBACK_FLAG_BITS_MAX_ENUM_EXT,                                      "VK_PIPELINE_CREATION_FEEDBACK_FLAG_BITS_MAX_ENUM_EXT"),
3557         };
3558         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
3559 }
3560
3561 tcu::Format::Bitfield<32> getShaderCorePropertiesFlagsAMDStr (VkShaderCorePropertiesFlagsAMD value)
3562 {
3563         static const tcu::Format::BitDesc s_desc[] =
3564         {
3565                 tcu::Format::BitDesc(VK_SHADER_CORE_PROPERTIES_FLAG_BITS_MAX_ENUM_AMD,  "VK_SHADER_CORE_PROPERTIES_FLAG_BITS_MAX_ENUM_AMD"),
3566         };
3567         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
3568 }
3569
3570 tcu::Format::Bitfield<32> getToolPurposeFlagsEXTStr (VkToolPurposeFlagsEXT value)
3571 {
3572         static const tcu::Format::BitDesc s_desc[] =
3573         {
3574                 tcu::Format::BitDesc(VK_TOOL_PURPOSE_VALIDATION_BIT_EXT,                        "VK_TOOL_PURPOSE_VALIDATION_BIT_EXT"),
3575                 tcu::Format::BitDesc(VK_TOOL_PURPOSE_PROFILING_BIT_EXT,                         "VK_TOOL_PURPOSE_PROFILING_BIT_EXT"),
3576                 tcu::Format::BitDesc(VK_TOOL_PURPOSE_TRACING_BIT_EXT,                           "VK_TOOL_PURPOSE_TRACING_BIT_EXT"),
3577                 tcu::Format::BitDesc(VK_TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT_EXT,       "VK_TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT_EXT"),
3578                 tcu::Format::BitDesc(VK_TOOL_PURPOSE_MODIFYING_FEATURES_BIT_EXT,        "VK_TOOL_PURPOSE_MODIFYING_FEATURES_BIT_EXT"),
3579                 tcu::Format::BitDesc(VK_TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT,           "VK_TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT"),
3580                 tcu::Format::BitDesc(VK_TOOL_PURPOSE_DEBUG_MARKERS_BIT_EXT,                     "VK_TOOL_PURPOSE_DEBUG_MARKERS_BIT_EXT"),
3581                 tcu::Format::BitDesc(VK_TOOL_PURPOSE_FLAG_BITS_MAX_ENUM_EXT,            "VK_TOOL_PURPOSE_FLAG_BITS_MAX_ENUM_EXT"),
3582         };
3583         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
3584 }
3585
3586 tcu::Format::Bitfield<32> getIndirectStateFlagsNVStr (VkIndirectStateFlagsNV value)
3587 {
3588         static const tcu::Format::BitDesc s_desc[] =
3589         {
3590                 tcu::Format::BitDesc(VK_INDIRECT_STATE_FLAG_FRONTFACE_BIT_NV,   "VK_INDIRECT_STATE_FLAG_FRONTFACE_BIT_NV"),
3591                 tcu::Format::BitDesc(VK_INDIRECT_STATE_FLAG_BITS_MAX_ENUM_NV,   "VK_INDIRECT_STATE_FLAG_BITS_MAX_ENUM_NV"),
3592         };
3593         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
3594 }
3595
3596 tcu::Format::Bitfield<32> getIndirectCommandsLayoutUsageFlagsNVStr (VkIndirectCommandsLayoutUsageFlagsNV value)
3597 {
3598         static const tcu::Format::BitDesc s_desc[] =
3599         {
3600                 tcu::Format::BitDesc(VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_NV,      "VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_NV"),
3601                 tcu::Format::BitDesc(VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NV,        "VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NV"),
3602                 tcu::Format::BitDesc(VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NV,      "VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NV"),
3603                 tcu::Format::BitDesc(VK_INDIRECT_COMMANDS_LAYOUT_USAGE_FLAG_BITS_MAX_ENUM_NV,           "VK_INDIRECT_COMMANDS_LAYOUT_USAGE_FLAG_BITS_MAX_ENUM_NV"),
3604         };
3605         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
3606 }
3607
3608 tcu::Format::Bitfield<32> getPrivateDataSlotCreateFlagsEXTStr (VkPrivateDataSlotCreateFlagsEXT value)
3609 {
3610         static const tcu::Format::BitDesc s_desc[] =
3611         {
3612                 tcu::Format::BitDesc(VK_PRIVATE_DATA_SLOT_CREATE_FLAG_BITS_MAX_ENUM_EXT,        "VK_PRIVATE_DATA_SLOT_CREATE_FLAG_BITS_MAX_ENUM_EXT"),
3613         };
3614         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
3615 }
3616
3617 tcu::Format::Bitfield<32> getDeviceDiagnosticsConfigFlagsNVStr (VkDeviceDiagnosticsConfigFlagsNV value)
3618 {
3619         static const tcu::Format::BitDesc s_desc[] =
3620         {
3621                 tcu::Format::BitDesc(VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_SHADER_DEBUG_INFO_BIT_NV,              "VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_SHADER_DEBUG_INFO_BIT_NV"),
3622                 tcu::Format::BitDesc(VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_RESOURCE_TRACKING_BIT_NV,              "VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_RESOURCE_TRACKING_BIT_NV"),
3623                 tcu::Format::BitDesc(VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_AUTOMATIC_CHECKPOINTS_BIT_NV,  "VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_AUTOMATIC_CHECKPOINTS_BIT_NV"),
3624                 tcu::Format::BitDesc(VK_DEVICE_DIAGNOSTICS_CONFIG_FLAG_BITS_MAX_ENUM_NV,                                "VK_DEVICE_DIAGNOSTICS_CONFIG_FLAG_BITS_MAX_ENUM_NV"),
3625         };
3626         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
3627 }
3628
3629 tcu::Format::Bitfield<32> getAccelerationStructureCreateFlagsKHRStr (VkAccelerationStructureCreateFlagsKHR value)
3630 {
3631         static const tcu::Format::BitDesc s_desc[] =
3632         {
3633                 tcu::Format::BitDesc(VK_ACCELERATION_STRUCTURE_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR,    "VK_ACCELERATION_STRUCTURE_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR"),
3634                 tcu::Format::BitDesc(VK_ACCELERATION_STRUCTURE_CREATE_FLAG_BITS_MAX_ENUM_KHR,                                   "VK_ACCELERATION_STRUCTURE_CREATE_FLAG_BITS_MAX_ENUM_KHR"),
3635         };
3636         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
3637 }
3638
3639 tcu::Format::Bitfield<32> getInstanceCreateFlagsStr (VkInstanceCreateFlags value)
3640 {
3641         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3642 }
3643
3644 tcu::Format::Bitfield<32> getDeviceCreateFlagsStr (VkDeviceCreateFlags value)
3645 {
3646         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3647 }
3648
3649 tcu::Format::Bitfield<32> getMemoryMapFlagsStr (VkMemoryMapFlags value)
3650 {
3651         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3652 }
3653
3654 tcu::Format::Bitfield<32> getSemaphoreCreateFlagsStr (VkSemaphoreCreateFlags value)
3655 {
3656         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3657 }
3658
3659 tcu::Format::Bitfield<32> getQueryPoolCreateFlagsStr (VkQueryPoolCreateFlags value)
3660 {
3661         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3662 }
3663
3664 tcu::Format::Bitfield<32> getBufferViewCreateFlagsStr (VkBufferViewCreateFlags value)
3665 {
3666         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3667 }
3668
3669 tcu::Format::Bitfield<32> getPipelineVertexInputStateCreateFlagsStr (VkPipelineVertexInputStateCreateFlags value)
3670 {
3671         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3672 }
3673
3674 tcu::Format::Bitfield<32> getPipelineInputAssemblyStateCreateFlagsStr (VkPipelineInputAssemblyStateCreateFlags value)
3675 {
3676         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3677 }
3678
3679 tcu::Format::Bitfield<32> getPipelineTessellationStateCreateFlagsStr (VkPipelineTessellationStateCreateFlags value)
3680 {
3681         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3682 }
3683
3684 tcu::Format::Bitfield<32> getPipelineViewportStateCreateFlagsStr (VkPipelineViewportStateCreateFlags value)
3685 {
3686         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3687 }
3688
3689 tcu::Format::Bitfield<32> getPipelineRasterizationStateCreateFlagsStr (VkPipelineRasterizationStateCreateFlags value)
3690 {
3691         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3692 }
3693
3694 tcu::Format::Bitfield<32> getPipelineMultisampleStateCreateFlagsStr (VkPipelineMultisampleStateCreateFlags value)
3695 {
3696         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3697 }
3698
3699 tcu::Format::Bitfield<32> getPipelineDepthStencilStateCreateFlagsStr (VkPipelineDepthStencilStateCreateFlags value)
3700 {
3701         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3702 }
3703
3704 tcu::Format::Bitfield<32> getPipelineColorBlendStateCreateFlagsStr (VkPipelineColorBlendStateCreateFlags value)
3705 {
3706         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3707 }
3708
3709 tcu::Format::Bitfield<32> getPipelineDynamicStateCreateFlagsStr (VkPipelineDynamicStateCreateFlags value)
3710 {
3711         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3712 }
3713
3714 tcu::Format::Bitfield<32> getPipelineLayoutCreateFlagsStr (VkPipelineLayoutCreateFlags value)
3715 {
3716         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3717 }
3718
3719 tcu::Format::Bitfield<32> getDescriptorPoolResetFlagsStr (VkDescriptorPoolResetFlags value)
3720 {
3721         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3722 }
3723
3724 tcu::Format::Bitfield<32> getCommandPoolTrimFlagsStr (VkCommandPoolTrimFlags value)
3725 {
3726         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3727 }
3728
3729 tcu::Format::Bitfield<32> getDescriptorUpdateTemplateCreateFlagsStr (VkDescriptorUpdateTemplateCreateFlags value)
3730 {
3731         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3732 }
3733
3734 tcu::Format::Bitfield<32> getDisplayModeCreateFlagsKHRStr (VkDisplayModeCreateFlagsKHR value)
3735 {
3736         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3737 }
3738
3739 tcu::Format::Bitfield<32> getDisplaySurfaceCreateFlagsKHRStr (VkDisplaySurfaceCreateFlagsKHR value)
3740 {
3741         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3742 }
3743
3744 tcu::Format::Bitfield<32> getPipelineRasterizationStateStreamCreateFlagsEXTStr (VkPipelineRasterizationStateStreamCreateFlagsEXT value)
3745 {
3746         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3747 }
3748
3749 tcu::Format::Bitfield<32> getPipelineViewportSwizzleStateCreateFlagsNVStr (VkPipelineViewportSwizzleStateCreateFlagsNV value)
3750 {
3751         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3752 }
3753
3754 tcu::Format::Bitfield<32> getPipelineDiscardRectangleStateCreateFlagsEXTStr (VkPipelineDiscardRectangleStateCreateFlagsEXT value)
3755 {
3756         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3757 }
3758
3759 tcu::Format::Bitfield<32> getPipelineRasterizationConservativeStateCreateFlagsEXTStr (VkPipelineRasterizationConservativeStateCreateFlagsEXT value)
3760 {
3761         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3762 }
3763
3764 tcu::Format::Bitfield<32> getPipelineRasterizationDepthClipStateCreateFlagsEXTStr (VkPipelineRasterizationDepthClipStateCreateFlagsEXT value)
3765 {
3766         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3767 }
3768
3769 tcu::Format::Bitfield<32> getDebugUtilsMessengerCallbackDataFlagsEXTStr (VkDebugUtilsMessengerCallbackDataFlagsEXT value)
3770 {
3771         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3772 }
3773
3774 tcu::Format::Bitfield<32> getDebugUtilsMessengerCreateFlagsEXTStr (VkDebugUtilsMessengerCreateFlagsEXT value)
3775 {
3776         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3777 }
3778
3779 tcu::Format::Bitfield<32> getPipelineCoverageToColorStateCreateFlagsNVStr (VkPipelineCoverageToColorStateCreateFlagsNV value)
3780 {
3781         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3782 }
3783
3784 tcu::Format::Bitfield<32> getPipelineCoverageModulationStateCreateFlagsNVStr (VkPipelineCoverageModulationStateCreateFlagsNV value)
3785 {
3786         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3787 }
3788
3789 tcu::Format::Bitfield<32> getValidationCacheCreateFlagsEXTStr (VkValidationCacheCreateFlagsEXT value)
3790 {
3791         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3792 }
3793
3794 tcu::Format::Bitfield<32> getPipelineCoverageReductionStateCreateFlagsNVStr (VkPipelineCoverageReductionStateCreateFlagsNV value)
3795 {
3796         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3797 }
3798
3799 tcu::Format::Bitfield<32> getHeadlessSurfaceCreateFlagsEXTStr (VkHeadlessSurfaceCreateFlagsEXT value)
3800 {
3801         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3802 }
3803
3804 tcu::Format::Bitfield<32> getDeviceMemoryReportFlagsEXTStr (VkDeviceMemoryReportFlagsEXT value)
3805 {
3806         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3807 }
3808
3809 tcu::Format::Bitfield<32> getAndroidSurfaceCreateFlagsKHRStr (VkAndroidSurfaceCreateFlagsKHR value)
3810 {
3811         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3812 }
3813
3814 tcu::Format::Bitfield<32> getImagePipeSurfaceCreateFlagsFUCHSIAStr (VkImagePipeSurfaceCreateFlagsFUCHSIA value)
3815 {
3816         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3817 }
3818
3819 tcu::Format::Bitfield<32> getStreamDescriptorSurfaceCreateFlagsGGPStr (VkStreamDescriptorSurfaceCreateFlagsGGP value)
3820 {
3821         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3822 }
3823
3824 tcu::Format::Bitfield<32> getIOSSurfaceCreateFlagsMVKStr (VkIOSSurfaceCreateFlagsMVK value)
3825 {
3826         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3827 }
3828
3829 tcu::Format::Bitfield<32> getMacOSSurfaceCreateFlagsMVKStr (VkMacOSSurfaceCreateFlagsMVK value)
3830 {
3831         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3832 }
3833
3834 tcu::Format::Bitfield<32> getMetalSurfaceCreateFlagsEXTStr (VkMetalSurfaceCreateFlagsEXT value)
3835 {
3836         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3837 }
3838
3839 tcu::Format::Bitfield<32> getViSurfaceCreateFlagsNNStr (VkViSurfaceCreateFlagsNN value)
3840 {
3841         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3842 }
3843
3844 tcu::Format::Bitfield<32> getWaylandSurfaceCreateFlagsKHRStr (VkWaylandSurfaceCreateFlagsKHR value)
3845 {
3846         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3847 }
3848
3849 tcu::Format::Bitfield<32> getWin32SurfaceCreateFlagsKHRStr (VkWin32SurfaceCreateFlagsKHR value)
3850 {
3851         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3852 }
3853
3854 tcu::Format::Bitfield<32> getXcbSurfaceCreateFlagsKHRStr (VkXcbSurfaceCreateFlagsKHR value)
3855 {
3856         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3857 }
3858
3859 tcu::Format::Bitfield<32> getXlibSurfaceCreateFlagsKHRStr (VkXlibSurfaceCreateFlagsKHR value)
3860 {
3861         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
3862 }
3863
3864 tcu::Format::Bitfield<32> getBuildAccelerationStructureFlagsNVStr (VkBuildAccelerationStructureFlagsNV value)
3865 {
3866         static const tcu::Format::BitDesc s_desc[] =
3867         {
3868                 tcu::Format::BitDesc(VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR,              "VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR"),
3869                 tcu::Format::BitDesc(VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR,  "VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR"),
3870                 tcu::Format::BitDesc(VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR, "VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR"),
3871                 tcu::Format::BitDesc(VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR, "VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR"),
3872                 tcu::Format::BitDesc(VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR,                "VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR"),
3873                 tcu::Format::BitDesc(VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV,               "VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV"),
3874                 tcu::Format::BitDesc(VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV,   "VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV"),
3875                 tcu::Format::BitDesc(VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV,  "VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV"),
3876                 tcu::Format::BitDesc(VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV,  "VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV"),
3877                 tcu::Format::BitDesc(VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_NV,                 "VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_NV"),
3878                 tcu::Format::BitDesc(VK_BUILD_ACCELERATION_STRUCTURE_FLAG_BITS_MAX_ENUM_KHR,    "VK_BUILD_ACCELERATION_STRUCTURE_FLAG_BITS_MAX_ENUM_KHR"),
3879         };
3880         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
3881 }
3882
3883 std::ostream& operator<< (std::ostream& s, const VkExtent2D& value)
3884 {
3885         s << "VkExtent2D = {\n";
3886         s << "\twidth = " << value.width << '\n';
3887         s << "\theight = " << value.height << '\n';
3888         s << '}';
3889         return s;
3890 }
3891
3892 std::ostream& operator<< (std::ostream& s, const VkExtent3D& value)
3893 {
3894         s << "VkExtent3D = {\n";
3895         s << "\twidth = " << value.width << '\n';
3896         s << "\theight = " << value.height << '\n';
3897         s << "\tdepth = " << value.depth << '\n';
3898         s << '}';
3899         return s;
3900 }
3901
3902 std::ostream& operator<< (std::ostream& s, const VkOffset2D& value)
3903 {
3904         s << "VkOffset2D = {\n";
3905         s << "\tx = " << value.x << '\n';
3906         s << "\ty = " << value.y << '\n';
3907         s << '}';
3908         return s;
3909 }
3910
3911 std::ostream& operator<< (std::ostream& s, const VkOffset3D& value)
3912 {
3913         s << "VkOffset3D = {\n";
3914         s << "\tx = " << value.x << '\n';
3915         s << "\ty = " << value.y << '\n';
3916         s << "\tz = " << value.z << '\n';
3917         s << '}';
3918         return s;
3919 }
3920
3921 std::ostream& operator<< (std::ostream& s, const VkRect2D& value)
3922 {
3923         s << "VkRect2D = {\n";
3924         s << "\toffset = " << value.offset << '\n';
3925         s << "\textent = " << value.extent << '\n';
3926         s << '}';
3927         return s;
3928 }
3929
3930 std::ostream& operator<< (std::ostream& s, const VkBaseInStructure& value)
3931 {
3932         s << "VkBaseInStructure = {\n";
3933         s << "\tsType = " << value.sType << '\n';
3934         s << "\tpNext = " << value.pNext << '\n';
3935         s << '}';
3936         return s;
3937 }
3938
3939 std::ostream& operator<< (std::ostream& s, const VkBaseOutStructure& value)
3940 {
3941         s << "VkBaseOutStructure = {\n";
3942         s << "\tsType = " << value.sType << '\n';
3943         s << "\tpNext = " << value.pNext << '\n';
3944         s << '}';
3945         return s;
3946 }
3947
3948 std::ostream& operator<< (std::ostream& s, const VkBufferMemoryBarrier& value)
3949 {
3950         s << "VkBufferMemoryBarrier = {\n";
3951         s << "\tsType = " << value.sType << '\n';
3952         s << "\tpNext = " << value.pNext << '\n';
3953         s << "\tsrcAccessMask = " << getAccessFlagsStr(value.srcAccessMask) << '\n';
3954         s << "\tdstAccessMask = " << getAccessFlagsStr(value.dstAccessMask) << '\n';
3955         s << "\tsrcQueueFamilyIndex = " << value.srcQueueFamilyIndex << '\n';
3956         s << "\tdstQueueFamilyIndex = " << value.dstQueueFamilyIndex << '\n';
3957         s << "\tbuffer = " << value.buffer << '\n';
3958         s << "\toffset = " << value.offset << '\n';
3959         s << "\tsize = " << value.size << '\n';
3960         s << '}';
3961         return s;
3962 }
3963
3964 std::ostream& operator<< (std::ostream& s, const VkDispatchIndirectCommand& value)
3965 {
3966         s << "VkDispatchIndirectCommand = {\n";
3967         s << "\tx = " << value.x << '\n';
3968         s << "\ty = " << value.y << '\n';
3969         s << "\tz = " << value.z << '\n';
3970         s << '}';
3971         return s;
3972 }
3973
3974 std::ostream& operator<< (std::ostream& s, const VkDrawIndexedIndirectCommand& value)
3975 {
3976         s << "VkDrawIndexedIndirectCommand = {\n";
3977         s << "\tindexCount = " << value.indexCount << '\n';
3978         s << "\tinstanceCount = " << value.instanceCount << '\n';
3979         s << "\tfirstIndex = " << value.firstIndex << '\n';
3980         s << "\tvertexOffset = " << value.vertexOffset << '\n';
3981         s << "\tfirstInstance = " << value.firstInstance << '\n';
3982         s << '}';
3983         return s;
3984 }
3985
3986 std::ostream& operator<< (std::ostream& s, const VkDrawIndirectCommand& value)
3987 {
3988         s << "VkDrawIndirectCommand = {\n";
3989         s << "\tvertexCount = " << value.vertexCount << '\n';
3990         s << "\tinstanceCount = " << value.instanceCount << '\n';
3991         s << "\tfirstVertex = " << value.firstVertex << '\n';
3992         s << "\tfirstInstance = " << value.firstInstance << '\n';
3993         s << '}';
3994         return s;
3995 }
3996
3997 std::ostream& operator<< (std::ostream& s, const VkImageSubresourceRange& value)
3998 {
3999         s << "VkImageSubresourceRange = {\n";
4000         s << "\taspectMask = " << getImageAspectFlagsStr(value.aspectMask) << '\n';
4001         s << "\tbaseMipLevel = " << value.baseMipLevel << '\n';
4002         s << "\tlevelCount = " << value.levelCount << '\n';
4003         s << "\tbaseArrayLayer = " << value.baseArrayLayer << '\n';
4004         s << "\tlayerCount = " << value.layerCount << '\n';
4005         s << '}';
4006         return s;
4007 }
4008
4009 std::ostream& operator<< (std::ostream& s, const VkImageMemoryBarrier& value)
4010 {
4011         s << "VkImageMemoryBarrier = {\n";
4012         s << "\tsType = " << value.sType << '\n';
4013         s << "\tpNext = " << value.pNext << '\n';
4014         s << "\tsrcAccessMask = " << getAccessFlagsStr(value.srcAccessMask) << '\n';
4015         s << "\tdstAccessMask = " << getAccessFlagsStr(value.dstAccessMask) << '\n';
4016         s << "\toldLayout = " << value.oldLayout << '\n';
4017         s << "\tnewLayout = " << value.newLayout << '\n';
4018         s << "\tsrcQueueFamilyIndex = " << value.srcQueueFamilyIndex << '\n';
4019         s << "\tdstQueueFamilyIndex = " << value.dstQueueFamilyIndex << '\n';
4020         s << "\timage = " << value.image << '\n';
4021         s << "\tsubresourceRange = " << value.subresourceRange << '\n';
4022         s << '}';
4023         return s;
4024 }
4025
4026 std::ostream& operator<< (std::ostream& s, const VkMemoryBarrier& value)
4027 {
4028         s << "VkMemoryBarrier = {\n";
4029         s << "\tsType = " << value.sType << '\n';
4030         s << "\tpNext = " << value.pNext << '\n';
4031         s << "\tsrcAccessMask = " << getAccessFlagsStr(value.srcAccessMask) << '\n';
4032         s << "\tdstAccessMask = " << getAccessFlagsStr(value.dstAccessMask) << '\n';
4033         s << '}';
4034         return s;
4035 }
4036
4037 std::ostream& operator<< (std::ostream& s, const VkAllocationCallbacks& value)
4038 {
4039         s << "VkAllocationCallbacks = {\n";
4040         s << "\tpUserData = " << value.pUserData << '\n';
4041         s << "\tpfnAllocation = " << value.pfnAllocation << '\n';
4042         s << "\tpfnReallocation = " << value.pfnReallocation << '\n';
4043         s << "\tpfnFree = " << value.pfnFree << '\n';
4044         s << "\tpfnInternalAllocation = " << value.pfnInternalAllocation << '\n';
4045         s << "\tpfnInternalFree = " << value.pfnInternalFree << '\n';
4046         s << '}';
4047         return s;
4048 }
4049
4050 std::ostream& operator<< (std::ostream& s, const VkApplicationInfo& value)
4051 {
4052         s << "VkApplicationInfo = {\n";
4053         s << "\tsType = " << value.sType << '\n';
4054         s << "\tpNext = " << value.pNext << '\n';
4055         s << "\tpApplicationName = " << getCharPtrStr(value.pApplicationName) << '\n';
4056         s << "\tapplicationVersion = " << value.applicationVersion << '\n';
4057         s << "\tpEngineName = " << getCharPtrStr(value.pEngineName) << '\n';
4058         s << "\tengineVersion = " << value.engineVersion << '\n';
4059         s << "\tapiVersion = " << value.apiVersion << '\n';
4060         s << '}';
4061         return s;
4062 }
4063
4064 std::ostream& operator<< (std::ostream& s, const VkFormatProperties& value)
4065 {
4066         s << "VkFormatProperties = {\n";
4067         s << "\tlinearTilingFeatures = " << getFormatFeatureFlagsStr(value.linearTilingFeatures) << '\n';
4068         s << "\toptimalTilingFeatures = " << getFormatFeatureFlagsStr(value.optimalTilingFeatures) << '\n';
4069         s << "\tbufferFeatures = " << getFormatFeatureFlagsStr(value.bufferFeatures) << '\n';
4070         s << '}';
4071         return s;
4072 }
4073
4074 std::ostream& operator<< (std::ostream& s, const VkImageFormatProperties& value)
4075 {
4076         s << "VkImageFormatProperties = {\n";
4077         s << "\tmaxExtent = " << value.maxExtent << '\n';
4078         s << "\tmaxMipLevels = " << value.maxMipLevels << '\n';
4079         s << "\tmaxArrayLayers = " << value.maxArrayLayers << '\n';
4080         s << "\tsampleCounts = " << getSampleCountFlagsStr(value.sampleCounts) << '\n';
4081         s << "\tmaxResourceSize = " << value.maxResourceSize << '\n';
4082         s << '}';
4083         return s;
4084 }
4085
4086 std::ostream& operator<< (std::ostream& s, const VkInstanceCreateInfo& value)
4087 {
4088         s << "VkInstanceCreateInfo = {\n";
4089         s << "\tsType = " << value.sType << '\n';
4090         s << "\tpNext = " << value.pNext << '\n';
4091         s << "\tflags = " << getInstanceCreateFlagsStr(value.flags) << '\n';
4092         s << "\tpApplicationInfo = " << value.pApplicationInfo << '\n';
4093         s << "\tenabledLayerCount = " << value.enabledLayerCount << '\n';
4094         s << "\tppEnabledLayerNames = " << value.ppEnabledLayerNames << '\n';
4095         s << "\tenabledExtensionCount = " << value.enabledExtensionCount << '\n';
4096         s << "\tppEnabledExtensionNames = " << value.ppEnabledExtensionNames << '\n';
4097         s << '}';
4098         return s;
4099 }
4100
4101 std::ostream& operator<< (std::ostream& s, const VkMemoryHeap& value)
4102 {
4103         s << "VkMemoryHeap = {\n";
4104         s << "\tsize = " << value.size << '\n';
4105         s << "\tflags = " << getMemoryHeapFlagsStr(value.flags) << '\n';
4106         s << '}';
4107         return s;
4108 }
4109
4110 std::ostream& operator<< (std::ostream& s, const VkMemoryType& value)
4111 {
4112         s << "VkMemoryType = {\n";
4113         s << "\tpropertyFlags = " << getMemoryPropertyFlagsStr(value.propertyFlags) << '\n';
4114         s << "\theapIndex = " << value.heapIndex << '\n';
4115         s << '}';
4116         return s;
4117 }
4118
4119 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceFeatures& value)
4120 {
4121         s << "VkPhysicalDeviceFeatures = {\n";
4122         s << "\trobustBufferAccess = " << value.robustBufferAccess << '\n';
4123         s << "\tfullDrawIndexUint32 = " << value.fullDrawIndexUint32 << '\n';
4124         s << "\timageCubeArray = " << value.imageCubeArray << '\n';
4125         s << "\tindependentBlend = " << value.independentBlend << '\n';
4126         s << "\tgeometryShader = " << value.geometryShader << '\n';
4127         s << "\ttessellationShader = " << value.tessellationShader << '\n';
4128         s << "\tsampleRateShading = " << value.sampleRateShading << '\n';
4129         s << "\tdualSrcBlend = " << value.dualSrcBlend << '\n';
4130         s << "\tlogicOp = " << value.logicOp << '\n';
4131         s << "\tmultiDrawIndirect = " << value.multiDrawIndirect << '\n';
4132         s << "\tdrawIndirectFirstInstance = " << value.drawIndirectFirstInstance << '\n';
4133         s << "\tdepthClamp = " << value.depthClamp << '\n';
4134         s << "\tdepthBiasClamp = " << value.depthBiasClamp << '\n';
4135         s << "\tfillModeNonSolid = " << value.fillModeNonSolid << '\n';
4136         s << "\tdepthBounds = " << value.depthBounds << '\n';
4137         s << "\twideLines = " << value.wideLines << '\n';
4138         s << "\tlargePoints = " << value.largePoints << '\n';
4139         s << "\talphaToOne = " << value.alphaToOne << '\n';
4140         s << "\tmultiViewport = " << value.multiViewport << '\n';
4141         s << "\tsamplerAnisotropy = " << value.samplerAnisotropy << '\n';
4142         s << "\ttextureCompressionETC2 = " << value.textureCompressionETC2 << '\n';
4143         s << "\ttextureCompressionASTC_LDR = " << value.textureCompressionASTC_LDR << '\n';
4144         s << "\ttextureCompressionBC = " << value.textureCompressionBC << '\n';
4145         s << "\tocclusionQueryPrecise = " << value.occlusionQueryPrecise << '\n';
4146         s << "\tpipelineStatisticsQuery = " << value.pipelineStatisticsQuery << '\n';
4147         s << "\tvertexPipelineStoresAndAtomics = " << value.vertexPipelineStoresAndAtomics << '\n';
4148         s << "\tfragmentStoresAndAtomics = " << value.fragmentStoresAndAtomics << '\n';
4149         s << "\tshaderTessellationAndGeometryPointSize = " << value.shaderTessellationAndGeometryPointSize << '\n';
4150         s << "\tshaderImageGatherExtended = " << value.shaderImageGatherExtended << '\n';
4151         s << "\tshaderStorageImageExtendedFormats = " << value.shaderStorageImageExtendedFormats << '\n';
4152         s << "\tshaderStorageImageMultisample = " << value.shaderStorageImageMultisample << '\n';
4153         s << "\tshaderStorageImageReadWithoutFormat = " << value.shaderStorageImageReadWithoutFormat << '\n';
4154         s << "\tshaderStorageImageWriteWithoutFormat = " << value.shaderStorageImageWriteWithoutFormat << '\n';
4155         s << "\tshaderUniformBufferArrayDynamicIndexing = " << value.shaderUniformBufferArrayDynamicIndexing << '\n';
4156         s << "\tshaderSampledImageArrayDynamicIndexing = " << value.shaderSampledImageArrayDynamicIndexing << '\n';
4157         s << "\tshaderStorageBufferArrayDynamicIndexing = " << value.shaderStorageBufferArrayDynamicIndexing << '\n';
4158         s << "\tshaderStorageImageArrayDynamicIndexing = " << value.shaderStorageImageArrayDynamicIndexing << '\n';
4159         s << "\tshaderClipDistance = " << value.shaderClipDistance << '\n';
4160         s << "\tshaderCullDistance = " << value.shaderCullDistance << '\n';
4161         s << "\tshaderFloat64 = " << value.shaderFloat64 << '\n';
4162         s << "\tshaderInt64 = " << value.shaderInt64 << '\n';
4163         s << "\tshaderInt16 = " << value.shaderInt16 << '\n';
4164         s << "\tshaderResourceResidency = " << value.shaderResourceResidency << '\n';
4165         s << "\tshaderResourceMinLod = " << value.shaderResourceMinLod << '\n';
4166         s << "\tsparseBinding = " << value.sparseBinding << '\n';
4167         s << "\tsparseResidencyBuffer = " << value.sparseResidencyBuffer << '\n';
4168         s << "\tsparseResidencyImage2D = " << value.sparseResidencyImage2D << '\n';
4169         s << "\tsparseResidencyImage3D = " << value.sparseResidencyImage3D << '\n';
4170         s << "\tsparseResidency2Samples = " << value.sparseResidency2Samples << '\n';
4171         s << "\tsparseResidency4Samples = " << value.sparseResidency4Samples << '\n';
4172         s << "\tsparseResidency8Samples = " << value.sparseResidency8Samples << '\n';
4173         s << "\tsparseResidency16Samples = " << value.sparseResidency16Samples << '\n';
4174         s << "\tsparseResidencyAliased = " << value.sparseResidencyAliased << '\n';
4175         s << "\tvariableMultisampleRate = " << value.variableMultisampleRate << '\n';
4176         s << "\tinheritedQueries = " << value.inheritedQueries << '\n';
4177         s << '}';
4178         return s;
4179 }
4180
4181 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceLimits& value)
4182 {
4183         s << "VkPhysicalDeviceLimits = {\n";
4184         s << "\tmaxImageDimension1D = " << value.maxImageDimension1D << '\n';
4185         s << "\tmaxImageDimension2D = " << value.maxImageDimension2D << '\n';
4186         s << "\tmaxImageDimension3D = " << value.maxImageDimension3D << '\n';
4187         s << "\tmaxImageDimensionCube = " << value.maxImageDimensionCube << '\n';
4188         s << "\tmaxImageArrayLayers = " << value.maxImageArrayLayers << '\n';
4189         s << "\tmaxTexelBufferElements = " << value.maxTexelBufferElements << '\n';
4190         s << "\tmaxUniformBufferRange = " << value.maxUniformBufferRange << '\n';
4191         s << "\tmaxStorageBufferRange = " << value.maxStorageBufferRange << '\n';
4192         s << "\tmaxPushConstantsSize = " << value.maxPushConstantsSize << '\n';
4193         s << "\tmaxMemoryAllocationCount = " << value.maxMemoryAllocationCount << '\n';
4194         s << "\tmaxSamplerAllocationCount = " << value.maxSamplerAllocationCount << '\n';
4195         s << "\tbufferImageGranularity = " << value.bufferImageGranularity << '\n';
4196         s << "\tsparseAddressSpaceSize = " << value.sparseAddressSpaceSize << '\n';
4197         s << "\tmaxBoundDescriptorSets = " << value.maxBoundDescriptorSets << '\n';
4198         s << "\tmaxPerStageDescriptorSamplers = " << value.maxPerStageDescriptorSamplers << '\n';
4199         s << "\tmaxPerStageDescriptorUniformBuffers = " << value.maxPerStageDescriptorUniformBuffers << '\n';
4200         s << "\tmaxPerStageDescriptorStorageBuffers = " << value.maxPerStageDescriptorStorageBuffers << '\n';
4201         s << "\tmaxPerStageDescriptorSampledImages = " << value.maxPerStageDescriptorSampledImages << '\n';
4202         s << "\tmaxPerStageDescriptorStorageImages = " << value.maxPerStageDescriptorStorageImages << '\n';
4203         s << "\tmaxPerStageDescriptorInputAttachments = " << value.maxPerStageDescriptorInputAttachments << '\n';
4204         s << "\tmaxPerStageResources = " << value.maxPerStageResources << '\n';
4205         s << "\tmaxDescriptorSetSamplers = " << value.maxDescriptorSetSamplers << '\n';
4206         s << "\tmaxDescriptorSetUniformBuffers = " << value.maxDescriptorSetUniformBuffers << '\n';
4207         s << "\tmaxDescriptorSetUniformBuffersDynamic = " << value.maxDescriptorSetUniformBuffersDynamic << '\n';
4208         s << "\tmaxDescriptorSetStorageBuffers = " << value.maxDescriptorSetStorageBuffers << '\n';
4209         s << "\tmaxDescriptorSetStorageBuffersDynamic = " << value.maxDescriptorSetStorageBuffersDynamic << '\n';
4210         s << "\tmaxDescriptorSetSampledImages = " << value.maxDescriptorSetSampledImages << '\n';
4211         s << "\tmaxDescriptorSetStorageImages = " << value.maxDescriptorSetStorageImages << '\n';
4212         s << "\tmaxDescriptorSetInputAttachments = " << value.maxDescriptorSetInputAttachments << '\n';
4213         s << "\tmaxVertexInputAttributes = " << value.maxVertexInputAttributes << '\n';
4214         s << "\tmaxVertexInputBindings = " << value.maxVertexInputBindings << '\n';
4215         s << "\tmaxVertexInputAttributeOffset = " << value.maxVertexInputAttributeOffset << '\n';
4216         s << "\tmaxVertexInputBindingStride = " << value.maxVertexInputBindingStride << '\n';
4217         s << "\tmaxVertexOutputComponents = " << value.maxVertexOutputComponents << '\n';
4218         s << "\tmaxTessellationGenerationLevel = " << value.maxTessellationGenerationLevel << '\n';
4219         s << "\tmaxTessellationPatchSize = " << value.maxTessellationPatchSize << '\n';
4220         s << "\tmaxTessellationControlPerVertexInputComponents = " << value.maxTessellationControlPerVertexInputComponents << '\n';
4221         s << "\tmaxTessellationControlPerVertexOutputComponents = " << value.maxTessellationControlPerVertexOutputComponents << '\n';
4222         s << "\tmaxTessellationControlPerPatchOutputComponents = " << value.maxTessellationControlPerPatchOutputComponents << '\n';
4223         s << "\tmaxTessellationControlTotalOutputComponents = " << value.maxTessellationControlTotalOutputComponents << '\n';
4224         s << "\tmaxTessellationEvaluationInputComponents = " << value.maxTessellationEvaluationInputComponents << '\n';
4225         s << "\tmaxTessellationEvaluationOutputComponents = " << value.maxTessellationEvaluationOutputComponents << '\n';
4226         s << "\tmaxGeometryShaderInvocations = " << value.maxGeometryShaderInvocations << '\n';
4227         s << "\tmaxGeometryInputComponents = " << value.maxGeometryInputComponents << '\n';
4228         s << "\tmaxGeometryOutputComponents = " << value.maxGeometryOutputComponents << '\n';
4229         s << "\tmaxGeometryOutputVertices = " << value.maxGeometryOutputVertices << '\n';
4230         s << "\tmaxGeometryTotalOutputComponents = " << value.maxGeometryTotalOutputComponents << '\n';
4231         s << "\tmaxFragmentInputComponents = " << value.maxFragmentInputComponents << '\n';
4232         s << "\tmaxFragmentOutputAttachments = " << value.maxFragmentOutputAttachments << '\n';
4233         s << "\tmaxFragmentDualSrcAttachments = " << value.maxFragmentDualSrcAttachments << '\n';
4234         s << "\tmaxFragmentCombinedOutputResources = " << value.maxFragmentCombinedOutputResources << '\n';
4235         s << "\tmaxComputeSharedMemorySize = " << value.maxComputeSharedMemorySize << '\n';
4236         s << "\tmaxComputeWorkGroupCount = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.maxComputeWorkGroupCount), DE_ARRAY_END(value.maxComputeWorkGroupCount)) << '\n';
4237         s << "\tmaxComputeWorkGroupInvocations = " << value.maxComputeWorkGroupInvocations << '\n';
4238         s << "\tmaxComputeWorkGroupSize = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.maxComputeWorkGroupSize), DE_ARRAY_END(value.maxComputeWorkGroupSize)) << '\n';
4239         s << "\tsubPixelPrecisionBits = " << value.subPixelPrecisionBits << '\n';
4240         s << "\tsubTexelPrecisionBits = " << value.subTexelPrecisionBits << '\n';
4241         s << "\tmipmapPrecisionBits = " << value.mipmapPrecisionBits << '\n';
4242         s << "\tmaxDrawIndexedIndexValue = " << value.maxDrawIndexedIndexValue << '\n';
4243         s << "\tmaxDrawIndirectCount = " << value.maxDrawIndirectCount << '\n';
4244         s << "\tmaxSamplerLodBias = " << value.maxSamplerLodBias << '\n';
4245         s << "\tmaxSamplerAnisotropy = " << value.maxSamplerAnisotropy << '\n';
4246         s << "\tmaxViewports = " << value.maxViewports << '\n';
4247         s << "\tmaxViewportDimensions = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.maxViewportDimensions), DE_ARRAY_END(value.maxViewportDimensions)) << '\n';
4248         s << "\tviewportBoundsRange = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.viewportBoundsRange), DE_ARRAY_END(value.viewportBoundsRange)) << '\n';
4249         s << "\tviewportSubPixelBits = " << value.viewportSubPixelBits << '\n';
4250         s << "\tminMemoryMapAlignment = " << value.minMemoryMapAlignment << '\n';
4251         s << "\tminTexelBufferOffsetAlignment = " << value.minTexelBufferOffsetAlignment << '\n';
4252         s << "\tminUniformBufferOffsetAlignment = " << value.minUniformBufferOffsetAlignment << '\n';
4253         s << "\tminStorageBufferOffsetAlignment = " << value.minStorageBufferOffsetAlignment << '\n';
4254         s << "\tminTexelOffset = " << value.minTexelOffset << '\n';
4255         s << "\tmaxTexelOffset = " << value.maxTexelOffset << '\n';
4256         s << "\tminTexelGatherOffset = " << value.minTexelGatherOffset << '\n';
4257         s << "\tmaxTexelGatherOffset = " << value.maxTexelGatherOffset << '\n';
4258         s << "\tminInterpolationOffset = " << value.minInterpolationOffset << '\n';
4259         s << "\tmaxInterpolationOffset = " << value.maxInterpolationOffset << '\n';
4260         s << "\tsubPixelInterpolationOffsetBits = " << value.subPixelInterpolationOffsetBits << '\n';
4261         s << "\tmaxFramebufferWidth = " << value.maxFramebufferWidth << '\n';
4262         s << "\tmaxFramebufferHeight = " << value.maxFramebufferHeight << '\n';
4263         s << "\tmaxFramebufferLayers = " << value.maxFramebufferLayers << '\n';
4264         s << "\tframebufferColorSampleCounts = " << getSampleCountFlagsStr(value.framebufferColorSampleCounts) << '\n';
4265         s << "\tframebufferDepthSampleCounts = " << getSampleCountFlagsStr(value.framebufferDepthSampleCounts) << '\n';
4266         s << "\tframebufferStencilSampleCounts = " << getSampleCountFlagsStr(value.framebufferStencilSampleCounts) << '\n';
4267         s << "\tframebufferNoAttachmentsSampleCounts = " << getSampleCountFlagsStr(value.framebufferNoAttachmentsSampleCounts) << '\n';
4268         s << "\tmaxColorAttachments = " << value.maxColorAttachments << '\n';
4269         s << "\tsampledImageColorSampleCounts = " << getSampleCountFlagsStr(value.sampledImageColorSampleCounts) << '\n';
4270         s << "\tsampledImageIntegerSampleCounts = " << getSampleCountFlagsStr(value.sampledImageIntegerSampleCounts) << '\n';
4271         s << "\tsampledImageDepthSampleCounts = " << getSampleCountFlagsStr(value.sampledImageDepthSampleCounts) << '\n';
4272         s << "\tsampledImageStencilSampleCounts = " << getSampleCountFlagsStr(value.sampledImageStencilSampleCounts) << '\n';
4273         s << "\tstorageImageSampleCounts = " << getSampleCountFlagsStr(value.storageImageSampleCounts) << '\n';
4274         s << "\tmaxSampleMaskWords = " << value.maxSampleMaskWords << '\n';
4275         s << "\ttimestampComputeAndGraphics = " << value.timestampComputeAndGraphics << '\n';
4276         s << "\ttimestampPeriod = " << value.timestampPeriod << '\n';
4277         s << "\tmaxClipDistances = " << value.maxClipDistances << '\n';
4278         s << "\tmaxCullDistances = " << value.maxCullDistances << '\n';
4279         s << "\tmaxCombinedClipAndCullDistances = " << value.maxCombinedClipAndCullDistances << '\n';
4280         s << "\tdiscreteQueuePriorities = " << value.discreteQueuePriorities << '\n';
4281         s << "\tpointSizeRange = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.pointSizeRange), DE_ARRAY_END(value.pointSizeRange)) << '\n';
4282         s << "\tlineWidthRange = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.lineWidthRange), DE_ARRAY_END(value.lineWidthRange)) << '\n';
4283         s << "\tpointSizeGranularity = " << value.pointSizeGranularity << '\n';
4284         s << "\tlineWidthGranularity = " << value.lineWidthGranularity << '\n';
4285         s << "\tstrictLines = " << value.strictLines << '\n';
4286         s << "\tstandardSampleLocations = " << value.standardSampleLocations << '\n';
4287         s << "\toptimalBufferCopyOffsetAlignment = " << value.optimalBufferCopyOffsetAlignment << '\n';
4288         s << "\toptimalBufferCopyRowPitchAlignment = " << value.optimalBufferCopyRowPitchAlignment << '\n';
4289         s << "\tnonCoherentAtomSize = " << value.nonCoherentAtomSize << '\n';
4290         s << '}';
4291         return s;
4292 }
4293
4294 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceMemoryProperties& value)
4295 {
4296         s << "VkPhysicalDeviceMemoryProperties = {\n";
4297         s << "\tmemoryTypeCount = " << value.memoryTypeCount << '\n';
4298         s << "\tmemoryTypes = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.memoryTypes), DE_ARRAY_BEGIN(value.memoryTypes) + value.memoryTypeCount) << '\n';
4299         s << "\tmemoryHeapCount = " << value.memoryHeapCount << '\n';
4300         s << "\tmemoryHeaps = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.memoryHeaps), DE_ARRAY_BEGIN(value.memoryHeaps) + value.memoryHeapCount) << '\n';
4301         s << '}';
4302         return s;
4303 }
4304
4305 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceSparseProperties& value)
4306 {
4307         s << "VkPhysicalDeviceSparseProperties = {\n";
4308         s << "\tresidencyStandard2DBlockShape = " << value.residencyStandard2DBlockShape << '\n';
4309         s << "\tresidencyStandard2DMultisampleBlockShape = " << value.residencyStandard2DMultisampleBlockShape << '\n';
4310         s << "\tresidencyStandard3DBlockShape = " << value.residencyStandard3DBlockShape << '\n';
4311         s << "\tresidencyAlignedMipSize = " << value.residencyAlignedMipSize << '\n';
4312         s << "\tresidencyNonResidentStrict = " << value.residencyNonResidentStrict << '\n';
4313         s << '}';
4314         return s;
4315 }
4316
4317 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceProperties& value)
4318 {
4319         s << "VkPhysicalDeviceProperties = {\n";
4320         s << "\tapiVersion = " << value.apiVersion << '\n';
4321         s << "\tdriverVersion = " << value.driverVersion << '\n';
4322         s << "\tvendorID = " << value.vendorID << '\n';
4323         s << "\tdeviceID = " << value.deviceID << '\n';
4324         s << "\tdeviceType = " << value.deviceType << '\n';
4325         s << "\tdeviceName = " << (const char*)value.deviceName << '\n';
4326         s << "\tpipelineCacheUUID = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<deUint8>(DE_ARRAY_BEGIN(value.pipelineCacheUUID)), tcu::Format::HexIterator<deUint8>(DE_ARRAY_END(value.pipelineCacheUUID))) << '\n';
4327         s << "\tlimits = " << value.limits << '\n';
4328         s << "\tsparseProperties = " << value.sparseProperties << '\n';
4329         s << '}';
4330         return s;
4331 }
4332
4333 std::ostream& operator<< (std::ostream& s, const VkQueueFamilyProperties& value)
4334 {
4335         s << "VkQueueFamilyProperties = {\n";
4336         s << "\tqueueFlags = " << getQueueFlagsStr(value.queueFlags) << '\n';
4337         s << "\tqueueCount = " << value.queueCount << '\n';
4338         s << "\ttimestampValidBits = " << value.timestampValidBits << '\n';
4339         s << "\tminImageTransferGranularity = " << value.minImageTransferGranularity << '\n';
4340         s << '}';
4341         return s;
4342 }
4343
4344 std::ostream& operator<< (std::ostream& s, const VkDeviceQueueCreateInfo& value)
4345 {
4346         s << "VkDeviceQueueCreateInfo = {\n";
4347         s << "\tsType = " << value.sType << '\n';
4348         s << "\tpNext = " << value.pNext << '\n';
4349         s << "\tflags = " << getDeviceQueueCreateFlagsStr(value.flags) << '\n';
4350         s << "\tqueueFamilyIndex = " << value.queueFamilyIndex << '\n';
4351         s << "\tqueueCount = " << value.queueCount << '\n';
4352         s << "\tpQueuePriorities = " << value.pQueuePriorities << '\n';
4353         s << '}';
4354         return s;
4355 }
4356
4357 std::ostream& operator<< (std::ostream& s, const VkDeviceCreateInfo& value)
4358 {
4359         s << "VkDeviceCreateInfo = {\n";
4360         s << "\tsType = " << value.sType << '\n';
4361         s << "\tpNext = " << value.pNext << '\n';
4362         s << "\tflags = " << getDeviceCreateFlagsStr(value.flags) << '\n';
4363         s << "\tqueueCreateInfoCount = " << value.queueCreateInfoCount << '\n';
4364         s << "\tpQueueCreateInfos = " << value.pQueueCreateInfos << '\n';
4365         s << "\tenabledLayerCount = " << value.enabledLayerCount << '\n';
4366         s << "\tppEnabledLayerNames = " << value.ppEnabledLayerNames << '\n';
4367         s << "\tenabledExtensionCount = " << value.enabledExtensionCount << '\n';
4368         s << "\tppEnabledExtensionNames = " << value.ppEnabledExtensionNames << '\n';
4369         s << "\tpEnabledFeatures = " << value.pEnabledFeatures << '\n';
4370         s << '}';
4371         return s;
4372 }
4373
4374 std::ostream& operator<< (std::ostream& s, const VkExtensionProperties& value)
4375 {
4376         s << "VkExtensionProperties = {\n";
4377         s << "\textensionName = " << (const char*)value.extensionName << '\n';
4378         s << "\tspecVersion = " << value.specVersion << '\n';
4379         s << '}';
4380         return s;
4381 }
4382
4383 std::ostream& operator<< (std::ostream& s, const VkLayerProperties& value)
4384 {
4385         s << "VkLayerProperties = {\n";
4386         s << "\tlayerName = " << (const char*)value.layerName << '\n';
4387         s << "\tspecVersion = " << value.specVersion << '\n';
4388         s << "\timplementationVersion = " << value.implementationVersion << '\n';
4389         s << "\tdescription = " << (const char*)value.description << '\n';
4390         s << '}';
4391         return s;
4392 }
4393
4394 std::ostream& operator<< (std::ostream& s, const VkSubmitInfo& value)
4395 {
4396         s << "VkSubmitInfo = {\n";
4397         s << "\tsType = " << value.sType << '\n';
4398         s << "\tpNext = " << value.pNext << '\n';
4399         s << "\twaitSemaphoreCount = " << value.waitSemaphoreCount << '\n';
4400         s << "\tpWaitSemaphores = " << value.pWaitSemaphores << '\n';
4401         s << "\tpWaitDstStageMask = " << value.pWaitDstStageMask << '\n';
4402         s << "\tcommandBufferCount = " << value.commandBufferCount << '\n';
4403         s << "\tpCommandBuffers = " << value.pCommandBuffers << '\n';
4404         s << "\tsignalSemaphoreCount = " << value.signalSemaphoreCount << '\n';
4405         s << "\tpSignalSemaphores = " << value.pSignalSemaphores << '\n';
4406         s << '}';
4407         return s;
4408 }
4409
4410 std::ostream& operator<< (std::ostream& s, const VkMappedMemoryRange& value)
4411 {
4412         s << "VkMappedMemoryRange = {\n";
4413         s << "\tsType = " << value.sType << '\n';
4414         s << "\tpNext = " << value.pNext << '\n';
4415         s << "\tmemory = " << value.memory << '\n';
4416         s << "\toffset = " << value.offset << '\n';
4417         s << "\tsize = " << value.size << '\n';
4418         s << '}';
4419         return s;
4420 }
4421
4422 std::ostream& operator<< (std::ostream& s, const VkMemoryAllocateInfo& value)
4423 {
4424         s << "VkMemoryAllocateInfo = {\n";
4425         s << "\tsType = " << value.sType << '\n';
4426         s << "\tpNext = " << value.pNext << '\n';
4427         s << "\tallocationSize = " << value.allocationSize << '\n';
4428         s << "\tmemoryTypeIndex = " << value.memoryTypeIndex << '\n';
4429         s << '}';
4430         return s;
4431 }
4432
4433 std::ostream& operator<< (std::ostream& s, const VkMemoryRequirements& value)
4434 {
4435         s << "VkMemoryRequirements = {\n";
4436         s << "\tsize = " << value.size << '\n';
4437         s << "\talignment = " << value.alignment << '\n';
4438         s << "\tmemoryTypeBits = " << value.memoryTypeBits << '\n';
4439         s << '}';
4440         return s;
4441 }
4442
4443 std::ostream& operator<< (std::ostream& s, const VkSparseMemoryBind& value)
4444 {
4445         s << "VkSparseMemoryBind = {\n";
4446         s << "\tresourceOffset = " << value.resourceOffset << '\n';
4447         s << "\tsize = " << value.size << '\n';
4448         s << "\tmemory = " << value.memory << '\n';
4449         s << "\tmemoryOffset = " << value.memoryOffset << '\n';
4450         s << "\tflags = " << getSparseMemoryBindFlagsStr(value.flags) << '\n';
4451         s << '}';
4452         return s;
4453 }
4454
4455 std::ostream& operator<< (std::ostream& s, const VkSparseBufferMemoryBindInfo& value)
4456 {
4457         s << "VkSparseBufferMemoryBindInfo = {\n";
4458         s << "\tbuffer = " << value.buffer << '\n';
4459         s << "\tbindCount = " << value.bindCount << '\n';
4460         s << "\tpBinds = " << value.pBinds << '\n';
4461         s << '}';
4462         return s;
4463 }
4464
4465 std::ostream& operator<< (std::ostream& s, const VkSparseImageOpaqueMemoryBindInfo& value)
4466 {
4467         s << "VkSparseImageOpaqueMemoryBindInfo = {\n";
4468         s << "\timage = " << value.image << '\n';
4469         s << "\tbindCount = " << value.bindCount << '\n';
4470         s << "\tpBinds = " << value.pBinds << '\n';
4471         s << '}';
4472         return s;
4473 }
4474
4475 std::ostream& operator<< (std::ostream& s, const VkImageSubresource& value)
4476 {
4477         s << "VkImageSubresource = {\n";
4478         s << "\taspectMask = " << getImageAspectFlagsStr(value.aspectMask) << '\n';
4479         s << "\tmipLevel = " << value.mipLevel << '\n';
4480         s << "\tarrayLayer = " << value.arrayLayer << '\n';
4481         s << '}';
4482         return s;
4483 }
4484
4485 std::ostream& operator<< (std::ostream& s, const VkSparseImageMemoryBind& value)
4486 {
4487         s << "VkSparseImageMemoryBind = {\n";
4488         s << "\tsubresource = " << value.subresource << '\n';
4489         s << "\toffset = " << value.offset << '\n';
4490         s << "\textent = " << value.extent << '\n';
4491         s << "\tmemory = " << value.memory << '\n';
4492         s << "\tmemoryOffset = " << value.memoryOffset << '\n';
4493         s << "\tflags = " << getSparseMemoryBindFlagsStr(value.flags) << '\n';
4494         s << '}';
4495         return s;
4496 }
4497
4498 std::ostream& operator<< (std::ostream& s, const VkSparseImageMemoryBindInfo& value)
4499 {
4500         s << "VkSparseImageMemoryBindInfo = {\n";
4501         s << "\timage = " << value.image << '\n';
4502         s << "\tbindCount = " << value.bindCount << '\n';
4503         s << "\tpBinds = " << value.pBinds << '\n';
4504         s << '}';
4505         return s;
4506 }
4507
4508 std::ostream& operator<< (std::ostream& s, const VkBindSparseInfo& value)
4509 {
4510         s << "VkBindSparseInfo = {\n";
4511         s << "\tsType = " << value.sType << '\n';
4512         s << "\tpNext = " << value.pNext << '\n';
4513         s << "\twaitSemaphoreCount = " << value.waitSemaphoreCount << '\n';
4514         s << "\tpWaitSemaphores = " << value.pWaitSemaphores << '\n';
4515         s << "\tbufferBindCount = " << value.bufferBindCount << '\n';
4516         s << "\tpBufferBinds = " << value.pBufferBinds << '\n';
4517         s << "\timageOpaqueBindCount = " << value.imageOpaqueBindCount << '\n';
4518         s << "\tpImageOpaqueBinds = " << value.pImageOpaqueBinds << '\n';
4519         s << "\timageBindCount = " << value.imageBindCount << '\n';
4520         s << "\tpImageBinds = " << value.pImageBinds << '\n';
4521         s << "\tsignalSemaphoreCount = " << value.signalSemaphoreCount << '\n';
4522         s << "\tpSignalSemaphores = " << value.pSignalSemaphores << '\n';
4523         s << '}';
4524         return s;
4525 }
4526
4527 std::ostream& operator<< (std::ostream& s, const VkSparseImageFormatProperties& value)
4528 {
4529         s << "VkSparseImageFormatProperties = {\n";
4530         s << "\taspectMask = " << getImageAspectFlagsStr(value.aspectMask) << '\n';
4531         s << "\timageGranularity = " << value.imageGranularity << '\n';
4532         s << "\tflags = " << getSparseImageFormatFlagsStr(value.flags) << '\n';
4533         s << '}';
4534         return s;
4535 }
4536
4537 std::ostream& operator<< (std::ostream& s, const VkSparseImageMemoryRequirements& value)
4538 {
4539         s << "VkSparseImageMemoryRequirements = {\n";
4540         s << "\tformatProperties = " << value.formatProperties << '\n';
4541         s << "\timageMipTailFirstLod = " << value.imageMipTailFirstLod << '\n';
4542         s << "\timageMipTailSize = " << value.imageMipTailSize << '\n';
4543         s << "\timageMipTailOffset = " << value.imageMipTailOffset << '\n';
4544         s << "\timageMipTailStride = " << value.imageMipTailStride << '\n';
4545         s << '}';
4546         return s;
4547 }
4548
4549 std::ostream& operator<< (std::ostream& s, const VkFenceCreateInfo& value)
4550 {
4551         s << "VkFenceCreateInfo = {\n";
4552         s << "\tsType = " << value.sType << '\n';
4553         s << "\tpNext = " << value.pNext << '\n';
4554         s << "\tflags = " << getFenceCreateFlagsStr(value.flags) << '\n';
4555         s << '}';
4556         return s;
4557 }
4558
4559 std::ostream& operator<< (std::ostream& s, const VkSemaphoreCreateInfo& value)
4560 {
4561         s << "VkSemaphoreCreateInfo = {\n";
4562         s << "\tsType = " << value.sType << '\n';
4563         s << "\tpNext = " << value.pNext << '\n';
4564         s << "\tflags = " << getSemaphoreCreateFlagsStr(value.flags) << '\n';
4565         s << '}';
4566         return s;
4567 }
4568
4569 std::ostream& operator<< (std::ostream& s, const VkEventCreateInfo& value)
4570 {
4571         s << "VkEventCreateInfo = {\n";
4572         s << "\tsType = " << value.sType << '\n';
4573         s << "\tpNext = " << value.pNext << '\n';
4574         s << "\tflags = " << getEventCreateFlagsStr(value.flags) << '\n';
4575         s << '}';
4576         return s;
4577 }
4578
4579 std::ostream& operator<< (std::ostream& s, const VkQueryPoolCreateInfo& value)
4580 {
4581         s << "VkQueryPoolCreateInfo = {\n";
4582         s << "\tsType = " << value.sType << '\n';
4583         s << "\tpNext = " << value.pNext << '\n';
4584         s << "\tflags = " << getQueryPoolCreateFlagsStr(value.flags) << '\n';
4585         s << "\tqueryType = " << value.queryType << '\n';
4586         s << "\tqueryCount = " << value.queryCount << '\n';
4587         s << "\tpipelineStatistics = " << getQueryPipelineStatisticFlagsStr(value.pipelineStatistics) << '\n';
4588         s << '}';
4589         return s;
4590 }
4591
4592 std::ostream& operator<< (std::ostream& s, const VkBufferCreateInfo& value)
4593 {
4594         s << "VkBufferCreateInfo = {\n";
4595         s << "\tsType = " << value.sType << '\n';
4596         s << "\tpNext = " << value.pNext << '\n';
4597         s << "\tflags = " << getBufferCreateFlagsStr(value.flags) << '\n';
4598         s << "\tsize = " << value.size << '\n';
4599         s << "\tusage = " << getBufferUsageFlagsStr(value.usage) << '\n';
4600         s << "\tsharingMode = " << value.sharingMode << '\n';
4601         s << "\tqueueFamilyIndexCount = " << value.queueFamilyIndexCount << '\n';
4602         s << "\tpQueueFamilyIndices = " << value.pQueueFamilyIndices << '\n';
4603         s << '}';
4604         return s;
4605 }
4606
4607 std::ostream& operator<< (std::ostream& s, const VkBufferViewCreateInfo& value)
4608 {
4609         s << "VkBufferViewCreateInfo = {\n";
4610         s << "\tsType = " << value.sType << '\n';
4611         s << "\tpNext = " << value.pNext << '\n';
4612         s << "\tflags = " << getBufferViewCreateFlagsStr(value.flags) << '\n';
4613         s << "\tbuffer = " << value.buffer << '\n';
4614         s << "\tformat = " << value.format << '\n';
4615         s << "\toffset = " << value.offset << '\n';
4616         s << "\trange = " << value.range << '\n';
4617         s << '}';
4618         return s;
4619 }
4620
4621 std::ostream& operator<< (std::ostream& s, const VkImageCreateInfo& value)
4622 {
4623         s << "VkImageCreateInfo = {\n";
4624         s << "\tsType = " << value.sType << '\n';
4625         s << "\tpNext = " << value.pNext << '\n';
4626         s << "\tflags = " << getImageCreateFlagsStr(value.flags) << '\n';
4627         s << "\timageType = " << value.imageType << '\n';
4628         s << "\tformat = " << value.format << '\n';
4629         s << "\textent = " << value.extent << '\n';
4630         s << "\tmipLevels = " << value.mipLevels << '\n';
4631         s << "\tarrayLayers = " << value.arrayLayers << '\n';
4632         s << "\tsamples = " << value.samples << '\n';
4633         s << "\ttiling = " << value.tiling << '\n';
4634         s << "\tusage = " << getImageUsageFlagsStr(value.usage) << '\n';
4635         s << "\tsharingMode = " << value.sharingMode << '\n';
4636         s << "\tqueueFamilyIndexCount = " << value.queueFamilyIndexCount << '\n';
4637         s << "\tpQueueFamilyIndices = " << value.pQueueFamilyIndices << '\n';
4638         s << "\tinitialLayout = " << value.initialLayout << '\n';
4639         s << '}';
4640         return s;
4641 }
4642
4643 std::ostream& operator<< (std::ostream& s, const VkSubresourceLayout& value)
4644 {
4645         s << "VkSubresourceLayout = {\n";
4646         s << "\toffset = " << value.offset << '\n';
4647         s << "\tsize = " << value.size << '\n';
4648         s << "\trowPitch = " << value.rowPitch << '\n';
4649         s << "\tarrayPitch = " << value.arrayPitch << '\n';
4650         s << "\tdepthPitch = " << value.depthPitch << '\n';
4651         s << '}';
4652         return s;
4653 }
4654
4655 std::ostream& operator<< (std::ostream& s, const VkComponentMapping& value)
4656 {
4657         s << "VkComponentMapping = {\n";
4658         s << "\tr = " << value.r << '\n';
4659         s << "\tg = " << value.g << '\n';
4660         s << "\tb = " << value.b << '\n';
4661         s << "\ta = " << value.a << '\n';
4662         s << '}';
4663         return s;
4664 }
4665
4666 std::ostream& operator<< (std::ostream& s, const VkImageViewCreateInfo& value)
4667 {
4668         s << "VkImageViewCreateInfo = {\n";
4669         s << "\tsType = " << value.sType << '\n';
4670         s << "\tpNext = " << value.pNext << '\n';
4671         s << "\tflags = " << getImageViewCreateFlagsStr(value.flags) << '\n';
4672         s << "\timage = " << value.image << '\n';
4673         s << "\tviewType = " << value.viewType << '\n';
4674         s << "\tformat = " << value.format << '\n';
4675         s << "\tcomponents = " << value.components << '\n';
4676         s << "\tsubresourceRange = " << value.subresourceRange << '\n';
4677         s << '}';
4678         return s;
4679 }
4680
4681 std::ostream& operator<< (std::ostream& s, const VkShaderModuleCreateInfo& value)
4682 {
4683         s << "VkShaderModuleCreateInfo = {\n";
4684         s << "\tsType = " << value.sType << '\n';
4685         s << "\tpNext = " << value.pNext << '\n';
4686         s << "\tflags = " << getShaderModuleCreateFlagsStr(value.flags) << '\n';
4687         s << "\tcodeSize = " << value.codeSize << '\n';
4688         s << "\tpCode = " << value.pCode << '\n';
4689         s << '}';
4690         return s;
4691 }
4692
4693 std::ostream& operator<< (std::ostream& s, const VkPipelineCacheCreateInfo& value)
4694 {
4695         s << "VkPipelineCacheCreateInfo = {\n";
4696         s << "\tsType = " << value.sType << '\n';
4697         s << "\tpNext = " << value.pNext << '\n';
4698         s << "\tflags = " << getPipelineCacheCreateFlagsStr(value.flags) << '\n';
4699         s << "\tinitialDataSize = " << value.initialDataSize << '\n';
4700         s << "\tpInitialData = " << value.pInitialData << '\n';
4701         s << '}';
4702         return s;
4703 }
4704
4705 std::ostream& operator<< (std::ostream& s, const VkSpecializationMapEntry& value)
4706 {
4707         s << "VkSpecializationMapEntry = {\n";
4708         s << "\tconstantID = " << value.constantID << '\n';
4709         s << "\toffset = " << value.offset << '\n';
4710         s << "\tsize = " << value.size << '\n';
4711         s << '}';
4712         return s;
4713 }
4714
4715 std::ostream& operator<< (std::ostream& s, const VkSpecializationInfo& value)
4716 {
4717         s << "VkSpecializationInfo = {\n";
4718         s << "\tmapEntryCount = " << value.mapEntryCount << '\n';
4719         s << "\tpMapEntries = " << value.pMapEntries << '\n';
4720         s << "\tdataSize = " << value.dataSize << '\n';
4721         s << "\tpData = " << value.pData << '\n';
4722         s << '}';
4723         return s;
4724 }
4725
4726 std::ostream& operator<< (std::ostream& s, const VkPipelineShaderStageCreateInfo& value)
4727 {
4728         s << "VkPipelineShaderStageCreateInfo = {\n";
4729         s << "\tsType = " << value.sType << '\n';
4730         s << "\tpNext = " << value.pNext << '\n';
4731         s << "\tflags = " << getPipelineShaderStageCreateFlagsStr(value.flags) << '\n';
4732         s << "\tstage = " << value.stage << '\n';
4733         s << "\tmodule = " << value.module << '\n';
4734         s << "\tpName = " << getCharPtrStr(value.pName) << '\n';
4735         s << "\tpSpecializationInfo = " << value.pSpecializationInfo << '\n';
4736         s << '}';
4737         return s;
4738 }
4739
4740 std::ostream& operator<< (std::ostream& s, const VkComputePipelineCreateInfo& value)
4741 {
4742         s << "VkComputePipelineCreateInfo = {\n";
4743         s << "\tsType = " << value.sType << '\n';
4744         s << "\tpNext = " << value.pNext << '\n';
4745         s << "\tflags = " << getPipelineCreateFlagsStr(value.flags) << '\n';
4746         s << "\tstage = " << value.stage << '\n';
4747         s << "\tlayout = " << value.layout << '\n';
4748         s << "\tbasePipelineHandle = " << value.basePipelineHandle << '\n';
4749         s << "\tbasePipelineIndex = " << value.basePipelineIndex << '\n';
4750         s << '}';
4751         return s;
4752 }
4753
4754 std::ostream& operator<< (std::ostream& s, const VkVertexInputBindingDescription& value)
4755 {
4756         s << "VkVertexInputBindingDescription = {\n";
4757         s << "\tbinding = " << value.binding << '\n';
4758         s << "\tstride = " << value.stride << '\n';
4759         s << "\tinputRate = " << value.inputRate << '\n';
4760         s << '}';
4761         return s;
4762 }
4763
4764 std::ostream& operator<< (std::ostream& s, const VkVertexInputAttributeDescription& value)
4765 {
4766         s << "VkVertexInputAttributeDescription = {\n";
4767         s << "\tlocation = " << value.location << '\n';
4768         s << "\tbinding = " << value.binding << '\n';
4769         s << "\tformat = " << value.format << '\n';
4770         s << "\toffset = " << value.offset << '\n';
4771         s << '}';
4772         return s;
4773 }
4774
4775 std::ostream& operator<< (std::ostream& s, const VkPipelineVertexInputStateCreateInfo& value)
4776 {
4777         s << "VkPipelineVertexInputStateCreateInfo = {\n";
4778         s << "\tsType = " << value.sType << '\n';
4779         s << "\tpNext = " << value.pNext << '\n';
4780         s << "\tflags = " << getPipelineVertexInputStateCreateFlagsStr(value.flags) << '\n';
4781         s << "\tvertexBindingDescriptionCount = " << value.vertexBindingDescriptionCount << '\n';
4782         s << "\tpVertexBindingDescriptions = " << value.pVertexBindingDescriptions << '\n';
4783         s << "\tvertexAttributeDescriptionCount = " << value.vertexAttributeDescriptionCount << '\n';
4784         s << "\tpVertexAttributeDescriptions = " << value.pVertexAttributeDescriptions << '\n';
4785         s << '}';
4786         return s;
4787 }
4788
4789 std::ostream& operator<< (std::ostream& s, const VkPipelineInputAssemblyStateCreateInfo& value)
4790 {
4791         s << "VkPipelineInputAssemblyStateCreateInfo = {\n";
4792         s << "\tsType = " << value.sType << '\n';
4793         s << "\tpNext = " << value.pNext << '\n';
4794         s << "\tflags = " << getPipelineInputAssemblyStateCreateFlagsStr(value.flags) << '\n';
4795         s << "\ttopology = " << value.topology << '\n';
4796         s << "\tprimitiveRestartEnable = " << value.primitiveRestartEnable << '\n';
4797         s << '}';
4798         return s;
4799 }
4800
4801 std::ostream& operator<< (std::ostream& s, const VkPipelineTessellationStateCreateInfo& value)
4802 {
4803         s << "VkPipelineTessellationStateCreateInfo = {\n";
4804         s << "\tsType = " << value.sType << '\n';
4805         s << "\tpNext = " << value.pNext << '\n';
4806         s << "\tflags = " << getPipelineTessellationStateCreateFlagsStr(value.flags) << '\n';
4807         s << "\tpatchControlPoints = " << value.patchControlPoints << '\n';
4808         s << '}';
4809         return s;
4810 }
4811
4812 std::ostream& operator<< (std::ostream& s, const VkViewport& value)
4813 {
4814         s << "VkViewport = {\n";
4815         s << "\tx = " << value.x << '\n';
4816         s << "\ty = " << value.y << '\n';
4817         s << "\twidth = " << value.width << '\n';
4818         s << "\theight = " << value.height << '\n';
4819         s << "\tminDepth = " << value.minDepth << '\n';
4820         s << "\tmaxDepth = " << value.maxDepth << '\n';
4821         s << '}';
4822         return s;
4823 }
4824
4825 std::ostream& operator<< (std::ostream& s, const VkPipelineViewportStateCreateInfo& value)
4826 {
4827         s << "VkPipelineViewportStateCreateInfo = {\n";
4828         s << "\tsType = " << value.sType << '\n';
4829         s << "\tpNext = " << value.pNext << '\n';
4830         s << "\tflags = " << getPipelineViewportStateCreateFlagsStr(value.flags) << '\n';
4831         s << "\tviewportCount = " << value.viewportCount << '\n';
4832         s << "\tpViewports = " << value.pViewports << '\n';
4833         s << "\tscissorCount = " << value.scissorCount << '\n';
4834         s << "\tpScissors = " << value.pScissors << '\n';
4835         s << '}';
4836         return s;
4837 }
4838
4839 std::ostream& operator<< (std::ostream& s, const VkPipelineRasterizationStateCreateInfo& value)
4840 {
4841         s << "VkPipelineRasterizationStateCreateInfo = {\n";
4842         s << "\tsType = " << value.sType << '\n';
4843         s << "\tpNext = " << value.pNext << '\n';
4844         s << "\tflags = " << getPipelineRasterizationStateCreateFlagsStr(value.flags) << '\n';
4845         s << "\tdepthClampEnable = " << value.depthClampEnable << '\n';
4846         s << "\trasterizerDiscardEnable = " << value.rasterizerDiscardEnable << '\n';
4847         s << "\tpolygonMode = " << value.polygonMode << '\n';
4848         s << "\tcullMode = " << getCullModeFlagsStr(value.cullMode) << '\n';
4849         s << "\tfrontFace = " << value.frontFace << '\n';
4850         s << "\tdepthBiasEnable = " << value.depthBiasEnable << '\n';
4851         s << "\tdepthBiasConstantFactor = " << value.depthBiasConstantFactor << '\n';
4852         s << "\tdepthBiasClamp = " << value.depthBiasClamp << '\n';
4853         s << "\tdepthBiasSlopeFactor = " << value.depthBiasSlopeFactor << '\n';
4854         s << "\tlineWidth = " << value.lineWidth << '\n';
4855         s << '}';
4856         return s;
4857 }
4858
4859 std::ostream& operator<< (std::ostream& s, const VkPipelineMultisampleStateCreateInfo& value)
4860 {
4861         s << "VkPipelineMultisampleStateCreateInfo = {\n";
4862         s << "\tsType = " << value.sType << '\n';
4863         s << "\tpNext = " << value.pNext << '\n';
4864         s << "\tflags = " << getPipelineMultisampleStateCreateFlagsStr(value.flags) << '\n';
4865         s << "\trasterizationSamples = " << value.rasterizationSamples << '\n';
4866         s << "\tsampleShadingEnable = " << value.sampleShadingEnable << '\n';
4867         s << "\tminSampleShading = " << value.minSampleShading << '\n';
4868         s << "\tpSampleMask = " << value.pSampleMask << '\n';
4869         s << "\talphaToCoverageEnable = " << value.alphaToCoverageEnable << '\n';
4870         s << "\talphaToOneEnable = " << value.alphaToOneEnable << '\n';
4871         s << '}';
4872         return s;
4873 }
4874
4875 std::ostream& operator<< (std::ostream& s, const VkStencilOpState& value)
4876 {
4877         s << "VkStencilOpState = {\n";
4878         s << "\tfailOp = " << value.failOp << '\n';
4879         s << "\tpassOp = " << value.passOp << '\n';
4880         s << "\tdepthFailOp = " << value.depthFailOp << '\n';
4881         s << "\tcompareOp = " << value.compareOp << '\n';
4882         s << "\tcompareMask = " << value.compareMask << '\n';
4883         s << "\twriteMask = " << value.writeMask << '\n';
4884         s << "\treference = " << value.reference << '\n';
4885         s << '}';
4886         return s;
4887 }
4888
4889 std::ostream& operator<< (std::ostream& s, const VkPipelineDepthStencilStateCreateInfo& value)
4890 {
4891         s << "VkPipelineDepthStencilStateCreateInfo = {\n";
4892         s << "\tsType = " << value.sType << '\n';
4893         s << "\tpNext = " << value.pNext << '\n';
4894         s << "\tflags = " << getPipelineDepthStencilStateCreateFlagsStr(value.flags) << '\n';
4895         s << "\tdepthTestEnable = " << value.depthTestEnable << '\n';
4896         s << "\tdepthWriteEnable = " << value.depthWriteEnable << '\n';
4897         s << "\tdepthCompareOp = " << value.depthCompareOp << '\n';
4898         s << "\tdepthBoundsTestEnable = " << value.depthBoundsTestEnable << '\n';
4899         s << "\tstencilTestEnable = " << value.stencilTestEnable << '\n';
4900         s << "\tfront = " << value.front << '\n';
4901         s << "\tback = " << value.back << '\n';
4902         s << "\tminDepthBounds = " << value.minDepthBounds << '\n';
4903         s << "\tmaxDepthBounds = " << value.maxDepthBounds << '\n';
4904         s << '}';
4905         return s;
4906 }
4907
4908 std::ostream& operator<< (std::ostream& s, const VkPipelineColorBlendAttachmentState& value)
4909 {
4910         s << "VkPipelineColorBlendAttachmentState = {\n";
4911         s << "\tblendEnable = " << value.blendEnable << '\n';
4912         s << "\tsrcColorBlendFactor = " << value.srcColorBlendFactor << '\n';
4913         s << "\tdstColorBlendFactor = " << value.dstColorBlendFactor << '\n';
4914         s << "\tcolorBlendOp = " << value.colorBlendOp << '\n';
4915         s << "\tsrcAlphaBlendFactor = " << value.srcAlphaBlendFactor << '\n';
4916         s << "\tdstAlphaBlendFactor = " << value.dstAlphaBlendFactor << '\n';
4917         s << "\talphaBlendOp = " << value.alphaBlendOp << '\n';
4918         s << "\tcolorWriteMask = " << getColorComponentFlagsStr(value.colorWriteMask) << '\n';
4919         s << '}';
4920         return s;
4921 }
4922
4923 std::ostream& operator<< (std::ostream& s, const VkPipelineColorBlendStateCreateInfo& value)
4924 {
4925         s << "VkPipelineColorBlendStateCreateInfo = {\n";
4926         s << "\tsType = " << value.sType << '\n';
4927         s << "\tpNext = " << value.pNext << '\n';
4928         s << "\tflags = " << getPipelineColorBlendStateCreateFlagsStr(value.flags) << '\n';
4929         s << "\tlogicOpEnable = " << value.logicOpEnable << '\n';
4930         s << "\tlogicOp = " << value.logicOp << '\n';
4931         s << "\tattachmentCount = " << value.attachmentCount << '\n';
4932         s << "\tpAttachments = " << value.pAttachments << '\n';
4933         s << "\tblendConstants = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.blendConstants), DE_ARRAY_END(value.blendConstants)) << '\n';
4934         s << '}';
4935         return s;
4936 }
4937
4938 std::ostream& operator<< (std::ostream& s, const VkPipelineDynamicStateCreateInfo& value)
4939 {
4940         s << "VkPipelineDynamicStateCreateInfo = {\n";
4941         s << "\tsType = " << value.sType << '\n';
4942         s << "\tpNext = " << value.pNext << '\n';
4943         s << "\tflags = " << getPipelineDynamicStateCreateFlagsStr(value.flags) << '\n';
4944         s << "\tdynamicStateCount = " << value.dynamicStateCount << '\n';
4945         s << "\tpDynamicStates = " << value.pDynamicStates << '\n';
4946         s << '}';
4947         return s;
4948 }
4949
4950 std::ostream& operator<< (std::ostream& s, const VkGraphicsPipelineCreateInfo& value)
4951 {
4952         s << "VkGraphicsPipelineCreateInfo = {\n";
4953         s << "\tsType = " << value.sType << '\n';
4954         s << "\tpNext = " << value.pNext << '\n';
4955         s << "\tflags = " << getPipelineCreateFlagsStr(value.flags) << '\n';
4956         s << "\tstageCount = " << value.stageCount << '\n';
4957         s << "\tpStages = " << value.pStages << '\n';
4958         s << "\tpVertexInputState = " << value.pVertexInputState << '\n';
4959         s << "\tpInputAssemblyState = " << value.pInputAssemblyState << '\n';
4960         s << "\tpTessellationState = " << value.pTessellationState << '\n';
4961         s << "\tpViewportState = " << value.pViewportState << '\n';
4962         s << "\tpRasterizationState = " << value.pRasterizationState << '\n';
4963         s << "\tpMultisampleState = " << value.pMultisampleState << '\n';
4964         s << "\tpDepthStencilState = " << value.pDepthStencilState << '\n';
4965         s << "\tpColorBlendState = " << value.pColorBlendState << '\n';
4966         s << "\tpDynamicState = " << value.pDynamicState << '\n';
4967         s << "\tlayout = " << value.layout << '\n';
4968         s << "\trenderPass = " << value.renderPass << '\n';
4969         s << "\tsubpass = " << value.subpass << '\n';
4970         s << "\tbasePipelineHandle = " << value.basePipelineHandle << '\n';
4971         s << "\tbasePipelineIndex = " << value.basePipelineIndex << '\n';
4972         s << '}';
4973         return s;
4974 }
4975
4976 std::ostream& operator<< (std::ostream& s, const VkPushConstantRange& value)
4977 {
4978         s << "VkPushConstantRange = {\n";
4979         s << "\tstageFlags = " << getShaderStageFlagsStr(value.stageFlags) << '\n';
4980         s << "\toffset = " << value.offset << '\n';
4981         s << "\tsize = " << value.size << '\n';
4982         s << '}';
4983         return s;
4984 }
4985
4986 std::ostream& operator<< (std::ostream& s, const VkPipelineLayoutCreateInfo& value)
4987 {
4988         s << "VkPipelineLayoutCreateInfo = {\n";
4989         s << "\tsType = " << value.sType << '\n';
4990         s << "\tpNext = " << value.pNext << '\n';
4991         s << "\tflags = " << getPipelineLayoutCreateFlagsStr(value.flags) << '\n';
4992         s << "\tsetLayoutCount = " << value.setLayoutCount << '\n';
4993         s << "\tpSetLayouts = " << value.pSetLayouts << '\n';
4994         s << "\tpushConstantRangeCount = " << value.pushConstantRangeCount << '\n';
4995         s << "\tpPushConstantRanges = " << value.pPushConstantRanges << '\n';
4996         s << '}';
4997         return s;
4998 }
4999
5000 std::ostream& operator<< (std::ostream& s, const VkSamplerCreateInfo& value)
5001 {
5002         s << "VkSamplerCreateInfo = {\n";
5003         s << "\tsType = " << value.sType << '\n';
5004         s << "\tpNext = " << value.pNext << '\n';
5005         s << "\tflags = " << getSamplerCreateFlagsStr(value.flags) << '\n';
5006         s << "\tmagFilter = " << value.magFilter << '\n';
5007         s << "\tminFilter = " << value.minFilter << '\n';
5008         s << "\tmipmapMode = " << value.mipmapMode << '\n';
5009         s << "\taddressModeU = " << value.addressModeU << '\n';
5010         s << "\taddressModeV = " << value.addressModeV << '\n';
5011         s << "\taddressModeW = " << value.addressModeW << '\n';
5012         s << "\tmipLodBias = " << value.mipLodBias << '\n';
5013         s << "\tanisotropyEnable = " << value.anisotropyEnable << '\n';
5014         s << "\tmaxAnisotropy = " << value.maxAnisotropy << '\n';
5015         s << "\tcompareEnable = " << value.compareEnable << '\n';
5016         s << "\tcompareOp = " << value.compareOp << '\n';
5017         s << "\tminLod = " << value.minLod << '\n';
5018         s << "\tmaxLod = " << value.maxLod << '\n';
5019         s << "\tborderColor = " << value.borderColor << '\n';
5020         s << "\tunnormalizedCoordinates = " << value.unnormalizedCoordinates << '\n';
5021         s << '}';
5022         return s;
5023 }
5024
5025 std::ostream& operator<< (std::ostream& s, const VkCopyDescriptorSet& value)
5026 {
5027         s << "VkCopyDescriptorSet = {\n";
5028         s << "\tsType = " << value.sType << '\n';
5029         s << "\tpNext = " << value.pNext << '\n';
5030         s << "\tsrcSet = " << value.srcSet << '\n';
5031         s << "\tsrcBinding = " << value.srcBinding << '\n';
5032         s << "\tsrcArrayElement = " << value.srcArrayElement << '\n';
5033         s << "\tdstSet = " << value.dstSet << '\n';
5034         s << "\tdstBinding = " << value.dstBinding << '\n';
5035         s << "\tdstArrayElement = " << value.dstArrayElement << '\n';
5036         s << "\tdescriptorCount = " << value.descriptorCount << '\n';
5037         s << '}';
5038         return s;
5039 }
5040
5041 std::ostream& operator<< (std::ostream& s, const VkDescriptorBufferInfo& value)
5042 {
5043         s << "VkDescriptorBufferInfo = {\n";
5044         s << "\tbuffer = " << value.buffer << '\n';
5045         s << "\toffset = " << value.offset << '\n';
5046         s << "\trange = " << value.range << '\n';
5047         s << '}';
5048         return s;
5049 }
5050
5051 std::ostream& operator<< (std::ostream& s, const VkDescriptorImageInfo& value)
5052 {
5053         s << "VkDescriptorImageInfo = {\n";
5054         s << "\tsampler = " << value.sampler << '\n';
5055         s << "\timageView = " << value.imageView << '\n';
5056         s << "\timageLayout = " << value.imageLayout << '\n';
5057         s << '}';
5058         return s;
5059 }
5060
5061 std::ostream& operator<< (std::ostream& s, const VkDescriptorPoolSize& value)
5062 {
5063         s << "VkDescriptorPoolSize = {\n";
5064         s << "\ttype = " << value.type << '\n';
5065         s << "\tdescriptorCount = " << value.descriptorCount << '\n';
5066         s << '}';
5067         return s;
5068 }
5069
5070 std::ostream& operator<< (std::ostream& s, const VkDescriptorPoolCreateInfo& value)
5071 {
5072         s << "VkDescriptorPoolCreateInfo = {\n";
5073         s << "\tsType = " << value.sType << '\n';
5074         s << "\tpNext = " << value.pNext << '\n';
5075         s << "\tflags = " << getDescriptorPoolCreateFlagsStr(value.flags) << '\n';
5076         s << "\tmaxSets = " << value.maxSets << '\n';
5077         s << "\tpoolSizeCount = " << value.poolSizeCount << '\n';
5078         s << "\tpPoolSizes = " << value.pPoolSizes << '\n';
5079         s << '}';
5080         return s;
5081 }
5082
5083 std::ostream& operator<< (std::ostream& s, const VkDescriptorSetAllocateInfo& value)
5084 {
5085         s << "VkDescriptorSetAllocateInfo = {\n";
5086         s << "\tsType = " << value.sType << '\n';
5087         s << "\tpNext = " << value.pNext << '\n';
5088         s << "\tdescriptorPool = " << value.descriptorPool << '\n';
5089         s << "\tdescriptorSetCount = " << value.descriptorSetCount << '\n';
5090         s << "\tpSetLayouts = " << value.pSetLayouts << '\n';
5091         s << '}';
5092         return s;
5093 }
5094
5095 std::ostream& operator<< (std::ostream& s, const VkDescriptorSetLayoutBinding& value)
5096 {
5097         s << "VkDescriptorSetLayoutBinding = {\n";
5098         s << "\tbinding = " << value.binding << '\n';
5099         s << "\tdescriptorType = " << value.descriptorType << '\n';
5100         s << "\tdescriptorCount = " << value.descriptorCount << '\n';
5101         s << "\tstageFlags = " << getShaderStageFlagsStr(value.stageFlags) << '\n';
5102         s << "\tpImmutableSamplers = " << value.pImmutableSamplers << '\n';
5103         s << '}';
5104         return s;
5105 }
5106
5107 std::ostream& operator<< (std::ostream& s, const VkDescriptorSetLayoutCreateInfo& value)
5108 {
5109         s << "VkDescriptorSetLayoutCreateInfo = {\n";
5110         s << "\tsType = " << value.sType << '\n';
5111         s << "\tpNext = " << value.pNext << '\n';
5112         s << "\tflags = " << getDescriptorSetLayoutCreateFlagsStr(value.flags) << '\n';
5113         s << "\tbindingCount = " << value.bindingCount << '\n';
5114         s << "\tpBindings = " << value.pBindings << '\n';
5115         s << '}';
5116         return s;
5117 }
5118
5119 std::ostream& operator<< (std::ostream& s, const VkWriteDescriptorSet& value)
5120 {
5121         s << "VkWriteDescriptorSet = {\n";
5122         s << "\tsType = " << value.sType << '\n';
5123         s << "\tpNext = " << value.pNext << '\n';
5124         s << "\tdstSet = " << value.dstSet << '\n';
5125         s << "\tdstBinding = " << value.dstBinding << '\n';
5126         s << "\tdstArrayElement = " << value.dstArrayElement << '\n';
5127         s << "\tdescriptorCount = " << value.descriptorCount << '\n';
5128         s << "\tdescriptorType = " << value.descriptorType << '\n';
5129         s << "\tpImageInfo = " << value.pImageInfo << '\n';
5130         s << "\tpBufferInfo = " << value.pBufferInfo << '\n';
5131         s << "\tpTexelBufferView = " << value.pTexelBufferView << '\n';
5132         s << '}';
5133         return s;
5134 }
5135
5136 std::ostream& operator<< (std::ostream& s, const VkAttachmentDescription& value)
5137 {
5138         s << "VkAttachmentDescription = {\n";
5139         s << "\tflags = " << getAttachmentDescriptionFlagsStr(value.flags) << '\n';
5140         s << "\tformat = " << value.format << '\n';
5141         s << "\tsamples = " << value.samples << '\n';
5142         s << "\tloadOp = " << value.loadOp << '\n';
5143         s << "\tstoreOp = " << value.storeOp << '\n';
5144         s << "\tstencilLoadOp = " << value.stencilLoadOp << '\n';
5145         s << "\tstencilStoreOp = " << value.stencilStoreOp << '\n';
5146         s << "\tinitialLayout = " << value.initialLayout << '\n';
5147         s << "\tfinalLayout = " << value.finalLayout << '\n';
5148         s << '}';
5149         return s;
5150 }
5151
5152 std::ostream& operator<< (std::ostream& s, const VkAttachmentReference& value)
5153 {
5154         s << "VkAttachmentReference = {\n";
5155         s << "\tattachment = " << value.attachment << '\n';
5156         s << "\tlayout = " << value.layout << '\n';
5157         s << '}';
5158         return s;
5159 }
5160
5161 std::ostream& operator<< (std::ostream& s, const VkFramebufferCreateInfo& value)
5162 {
5163         s << "VkFramebufferCreateInfo = {\n";
5164         s << "\tsType = " << value.sType << '\n';
5165         s << "\tpNext = " << value.pNext << '\n';
5166         s << "\tflags = " << getFramebufferCreateFlagsStr(value.flags) << '\n';
5167         s << "\trenderPass = " << value.renderPass << '\n';
5168         s << "\tattachmentCount = " << value.attachmentCount << '\n';
5169         s << "\tpAttachments = " << value.pAttachments << '\n';
5170         s << "\twidth = " << value.width << '\n';
5171         s << "\theight = " << value.height << '\n';
5172         s << "\tlayers = " << value.layers << '\n';
5173         s << '}';
5174         return s;
5175 }
5176
5177 std::ostream& operator<< (std::ostream& s, const VkSubpassDescription& value)
5178 {
5179         s << "VkSubpassDescription = {\n";
5180         s << "\tflags = " << getSubpassDescriptionFlagsStr(value.flags) << '\n';
5181         s << "\tpipelineBindPoint = " << value.pipelineBindPoint << '\n';
5182         s << "\tinputAttachmentCount = " << value.inputAttachmentCount << '\n';
5183         s << "\tpInputAttachments = " << value.pInputAttachments << '\n';
5184         s << "\tcolorAttachmentCount = " << value.colorAttachmentCount << '\n';
5185         s << "\tpColorAttachments = " << value.pColorAttachments << '\n';
5186         s << "\tpResolveAttachments = " << value.pResolveAttachments << '\n';
5187         s << "\tpDepthStencilAttachment = " << value.pDepthStencilAttachment << '\n';
5188         s << "\tpreserveAttachmentCount = " << value.preserveAttachmentCount << '\n';
5189         s << "\tpPreserveAttachments = " << value.pPreserveAttachments << '\n';
5190         s << '}';
5191         return s;
5192 }
5193
5194 std::ostream& operator<< (std::ostream& s, const VkSubpassDependency& value)
5195 {
5196         s << "VkSubpassDependency = {\n";
5197         s << "\tsrcSubpass = " << value.srcSubpass << '\n';
5198         s << "\tdstSubpass = " << value.dstSubpass << '\n';
5199         s << "\tsrcStageMask = " << getPipelineStageFlagsStr(value.srcStageMask) << '\n';
5200         s << "\tdstStageMask = " << getPipelineStageFlagsStr(value.dstStageMask) << '\n';
5201         s << "\tsrcAccessMask = " << getAccessFlagsStr(value.srcAccessMask) << '\n';
5202         s << "\tdstAccessMask = " << getAccessFlagsStr(value.dstAccessMask) << '\n';
5203         s << "\tdependencyFlags = " << getDependencyFlagsStr(value.dependencyFlags) << '\n';
5204         s << '}';
5205         return s;
5206 }
5207
5208 std::ostream& operator<< (std::ostream& s, const VkRenderPassCreateInfo& value)
5209 {
5210         s << "VkRenderPassCreateInfo = {\n";
5211         s << "\tsType = " << value.sType << '\n';
5212         s << "\tpNext = " << value.pNext << '\n';
5213         s << "\tflags = " << getRenderPassCreateFlagsStr(value.flags) << '\n';
5214         s << "\tattachmentCount = " << value.attachmentCount << '\n';
5215         s << "\tpAttachments = " << value.pAttachments << '\n';
5216         s << "\tsubpassCount = " << value.subpassCount << '\n';
5217         s << "\tpSubpasses = " << value.pSubpasses << '\n';
5218         s << "\tdependencyCount = " << value.dependencyCount << '\n';
5219         s << "\tpDependencies = " << value.pDependencies << '\n';
5220         s << '}';
5221         return s;
5222 }
5223
5224 std::ostream& operator<< (std::ostream& s, const VkCommandPoolCreateInfo& value)
5225 {
5226         s << "VkCommandPoolCreateInfo = {\n";
5227         s << "\tsType = " << value.sType << '\n';
5228         s << "\tpNext = " << value.pNext << '\n';
5229         s << "\tflags = " << getCommandPoolCreateFlagsStr(value.flags) << '\n';
5230         s << "\tqueueFamilyIndex = " << value.queueFamilyIndex << '\n';
5231         s << '}';
5232         return s;
5233 }
5234
5235 std::ostream& operator<< (std::ostream& s, const VkCommandBufferAllocateInfo& value)
5236 {
5237         s << "VkCommandBufferAllocateInfo = {\n";
5238         s << "\tsType = " << value.sType << '\n';
5239         s << "\tpNext = " << value.pNext << '\n';
5240         s << "\tcommandPool = " << value.commandPool << '\n';
5241         s << "\tlevel = " << value.level << '\n';
5242         s << "\tcommandBufferCount = " << value.commandBufferCount << '\n';
5243         s << '}';
5244         return s;
5245 }
5246
5247 std::ostream& operator<< (std::ostream& s, const VkCommandBufferInheritanceInfo& value)
5248 {
5249         s << "VkCommandBufferInheritanceInfo = {\n";
5250         s << "\tsType = " << value.sType << '\n';
5251         s << "\tpNext = " << value.pNext << '\n';
5252         s << "\trenderPass = " << value.renderPass << '\n';
5253         s << "\tsubpass = " << value.subpass << '\n';
5254         s << "\tframebuffer = " << value.framebuffer << '\n';
5255         s << "\tocclusionQueryEnable = " << value.occlusionQueryEnable << '\n';
5256         s << "\tqueryFlags = " << getQueryControlFlagsStr(value.queryFlags) << '\n';
5257         s << "\tpipelineStatistics = " << getQueryPipelineStatisticFlagsStr(value.pipelineStatistics) << '\n';
5258         s << '}';
5259         return s;
5260 }
5261
5262 std::ostream& operator<< (std::ostream& s, const VkCommandBufferBeginInfo& value)
5263 {
5264         s << "VkCommandBufferBeginInfo = {\n";
5265         s << "\tsType = " << value.sType << '\n';
5266         s << "\tpNext = " << value.pNext << '\n';
5267         s << "\tflags = " << getCommandBufferUsageFlagsStr(value.flags) << '\n';
5268         s << "\tpInheritanceInfo = " << value.pInheritanceInfo << '\n';
5269         s << '}';
5270         return s;
5271 }
5272
5273 std::ostream& operator<< (std::ostream& s, const VkBufferCopy& value)
5274 {
5275         s << "VkBufferCopy = {\n";
5276         s << "\tsrcOffset = " << value.srcOffset << '\n';
5277         s << "\tdstOffset = " << value.dstOffset << '\n';
5278         s << "\tsize = " << value.size << '\n';
5279         s << '}';
5280         return s;
5281 }
5282
5283 std::ostream& operator<< (std::ostream& s, const VkImageSubresourceLayers& value)
5284 {
5285         s << "VkImageSubresourceLayers = {\n";
5286         s << "\taspectMask = " << getImageAspectFlagsStr(value.aspectMask) << '\n';
5287         s << "\tmipLevel = " << value.mipLevel << '\n';
5288         s << "\tbaseArrayLayer = " << value.baseArrayLayer << '\n';
5289         s << "\tlayerCount = " << value.layerCount << '\n';
5290         s << '}';
5291         return s;
5292 }
5293
5294 std::ostream& operator<< (std::ostream& s, const VkBufferImageCopy& value)
5295 {
5296         s << "VkBufferImageCopy = {\n";
5297         s << "\tbufferOffset = " << value.bufferOffset << '\n';
5298         s << "\tbufferRowLength = " << value.bufferRowLength << '\n';
5299         s << "\tbufferImageHeight = " << value.bufferImageHeight << '\n';
5300         s << "\timageSubresource = " << value.imageSubresource << '\n';
5301         s << "\timageOffset = " << value.imageOffset << '\n';
5302         s << "\timageExtent = " << value.imageExtent << '\n';
5303         s << '}';
5304         return s;
5305 }
5306
5307 std::ostream& operator<< (std::ostream& s, const VkClearColorValue& value)
5308 {
5309         s << "VkClearColorValue = {\n";
5310         s << "\tfloat32 = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.float32), DE_ARRAY_END(value.float32)) << '\n';
5311         s << "\tint32 = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.int32), DE_ARRAY_END(value.int32)) << '\n';
5312         s << "\tuint32 = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.uint32), DE_ARRAY_END(value.uint32)) << '\n';
5313         s << '}';
5314         return s;
5315 }
5316
5317 std::ostream& operator<< (std::ostream& s, const VkClearDepthStencilValue& value)
5318 {
5319         s << "VkClearDepthStencilValue = {\n";
5320         s << "\tdepth = " << value.depth << '\n';
5321         s << "\tstencil = " << value.stencil << '\n';
5322         s << '}';
5323         return s;
5324 }
5325
5326 std::ostream& operator<< (std::ostream& s, const VkClearValue& value)
5327 {
5328         s << "VkClearValue = {\n";
5329         s << "\tcolor = " << value.color << '\n';
5330         s << "\tdepthStencil = " << value.depthStencil << '\n';
5331         s << '}';
5332         return s;
5333 }
5334
5335 std::ostream& operator<< (std::ostream& s, const VkClearAttachment& value)
5336 {
5337         s << "VkClearAttachment = {\n";
5338         s << "\taspectMask = " << getImageAspectFlagsStr(value.aspectMask) << '\n';
5339         s << "\tcolorAttachment = " << value.colorAttachment << '\n';
5340         s << "\tclearValue = " << value.clearValue << '\n';
5341         s << '}';
5342         return s;
5343 }
5344
5345 std::ostream& operator<< (std::ostream& s, const VkClearRect& value)
5346 {
5347         s << "VkClearRect = {\n";
5348         s << "\trect = " << value.rect << '\n';
5349         s << "\tbaseArrayLayer = " << value.baseArrayLayer << '\n';
5350         s << "\tlayerCount = " << value.layerCount << '\n';
5351         s << '}';
5352         return s;
5353 }
5354
5355 std::ostream& operator<< (std::ostream& s, const VkImageBlit& value)
5356 {
5357         s << "VkImageBlit = {\n";
5358         s << "\tsrcSubresource = " << value.srcSubresource << '\n';
5359         s << "\tsrcOffsets = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.srcOffsets), DE_ARRAY_END(value.srcOffsets)) << '\n';
5360         s << "\tdstSubresource = " << value.dstSubresource << '\n';
5361         s << "\tdstOffsets = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.dstOffsets), DE_ARRAY_END(value.dstOffsets)) << '\n';
5362         s << '}';
5363         return s;
5364 }
5365
5366 std::ostream& operator<< (std::ostream& s, const VkImageCopy& value)
5367 {
5368         s << "VkImageCopy = {\n";
5369         s << "\tsrcSubresource = " << value.srcSubresource << '\n';
5370         s << "\tsrcOffset = " << value.srcOffset << '\n';
5371         s << "\tdstSubresource = " << value.dstSubresource << '\n';
5372         s << "\tdstOffset = " << value.dstOffset << '\n';
5373         s << "\textent = " << value.extent << '\n';
5374         s << '}';
5375         return s;
5376 }
5377
5378 std::ostream& operator<< (std::ostream& s, const VkImageResolve& value)
5379 {
5380         s << "VkImageResolve = {\n";
5381         s << "\tsrcSubresource = " << value.srcSubresource << '\n';
5382         s << "\tsrcOffset = " << value.srcOffset << '\n';
5383         s << "\tdstSubresource = " << value.dstSubresource << '\n';
5384         s << "\tdstOffset = " << value.dstOffset << '\n';
5385         s << "\textent = " << value.extent << '\n';
5386         s << '}';
5387         return s;
5388 }
5389
5390 std::ostream& operator<< (std::ostream& s, const VkRenderPassBeginInfo& value)
5391 {
5392         s << "VkRenderPassBeginInfo = {\n";
5393         s << "\tsType = " << value.sType << '\n';
5394         s << "\tpNext = " << value.pNext << '\n';
5395         s << "\trenderPass = " << value.renderPass << '\n';
5396         s << "\tframebuffer = " << value.framebuffer << '\n';
5397         s << "\trenderArea = " << value.renderArea << '\n';
5398         s << "\tclearValueCount = " << value.clearValueCount << '\n';
5399         s << "\tpClearValues = " << value.pClearValues << '\n';
5400         s << '}';
5401         return s;
5402 }
5403
5404 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceSubgroupProperties& value)
5405 {
5406         s << "VkPhysicalDeviceSubgroupProperties = {\n";
5407         s << "\tsType = " << value.sType << '\n';
5408         s << "\tpNext = " << value.pNext << '\n';
5409         s << "\tsubgroupSize = " << value.subgroupSize << '\n';
5410         s << "\tsupportedStages = " << getShaderStageFlagsStr(value.supportedStages) << '\n';
5411         s << "\tsupportedOperations = " << getSubgroupFeatureFlagsStr(value.supportedOperations) << '\n';
5412         s << "\tquadOperationsInAllStages = " << value.quadOperationsInAllStages << '\n';
5413         s << '}';
5414         return s;
5415 }
5416
5417 std::ostream& operator<< (std::ostream& s, const VkBindBufferMemoryInfo& value)
5418 {
5419         s << "VkBindBufferMemoryInfo = {\n";
5420         s << "\tsType = " << value.sType << '\n';
5421         s << "\tpNext = " << value.pNext << '\n';
5422         s << "\tbuffer = " << value.buffer << '\n';
5423         s << "\tmemory = " << value.memory << '\n';
5424         s << "\tmemoryOffset = " << value.memoryOffset << '\n';
5425         s << '}';
5426         return s;
5427 }
5428
5429 std::ostream& operator<< (std::ostream& s, const VkBindImageMemoryInfo& value)
5430 {
5431         s << "VkBindImageMemoryInfo = {\n";
5432         s << "\tsType = " << value.sType << '\n';
5433         s << "\tpNext = " << value.pNext << '\n';
5434         s << "\timage = " << value.image << '\n';
5435         s << "\tmemory = " << value.memory << '\n';
5436         s << "\tmemoryOffset = " << value.memoryOffset << '\n';
5437         s << '}';
5438         return s;
5439 }
5440
5441 std::ostream& operator<< (std::ostream& s, const VkPhysicalDevice16BitStorageFeatures& value)
5442 {
5443         s << "VkPhysicalDevice16BitStorageFeatures = {\n";
5444         s << "\tsType = " << value.sType << '\n';
5445         s << "\tpNext = " << value.pNext << '\n';
5446         s << "\tstorageBuffer16BitAccess = " << value.storageBuffer16BitAccess << '\n';
5447         s << "\tuniformAndStorageBuffer16BitAccess = " << value.uniformAndStorageBuffer16BitAccess << '\n';
5448         s << "\tstoragePushConstant16 = " << value.storagePushConstant16 << '\n';
5449         s << "\tstorageInputOutput16 = " << value.storageInputOutput16 << '\n';
5450         s << '}';
5451         return s;
5452 }
5453
5454 std::ostream& operator<< (std::ostream& s, const VkMemoryDedicatedRequirements& value)
5455 {
5456         s << "VkMemoryDedicatedRequirements = {\n";
5457         s << "\tsType = " << value.sType << '\n';
5458         s << "\tpNext = " << value.pNext << '\n';
5459         s << "\tprefersDedicatedAllocation = " << value.prefersDedicatedAllocation << '\n';
5460         s << "\trequiresDedicatedAllocation = " << value.requiresDedicatedAllocation << '\n';
5461         s << '}';
5462         return s;
5463 }
5464
5465 std::ostream& operator<< (std::ostream& s, const VkMemoryDedicatedAllocateInfo& value)
5466 {
5467         s << "VkMemoryDedicatedAllocateInfo = {\n";
5468         s << "\tsType = " << value.sType << '\n';
5469         s << "\tpNext = " << value.pNext << '\n';
5470         s << "\timage = " << value.image << '\n';
5471         s << "\tbuffer = " << value.buffer << '\n';
5472         s << '}';
5473         return s;
5474 }
5475
5476 std::ostream& operator<< (std::ostream& s, const VkMemoryAllocateFlagsInfo& value)
5477 {
5478         s << "VkMemoryAllocateFlagsInfo = {\n";
5479         s << "\tsType = " << value.sType << '\n';
5480         s << "\tpNext = " << value.pNext << '\n';
5481         s << "\tflags = " << getMemoryAllocateFlagsStr(value.flags) << '\n';
5482         s << "\tdeviceMask = " << value.deviceMask << '\n';
5483         s << '}';
5484         return s;
5485 }
5486
5487 std::ostream& operator<< (std::ostream& s, const VkDeviceGroupRenderPassBeginInfo& value)
5488 {
5489         s << "VkDeviceGroupRenderPassBeginInfo = {\n";
5490         s << "\tsType = " << value.sType << '\n';
5491         s << "\tpNext = " << value.pNext << '\n';
5492         s << "\tdeviceMask = " << value.deviceMask << '\n';
5493         s << "\tdeviceRenderAreaCount = " << value.deviceRenderAreaCount << '\n';
5494         s << "\tpDeviceRenderAreas = " << value.pDeviceRenderAreas << '\n';
5495         s << '}';
5496         return s;
5497 }
5498
5499 std::ostream& operator<< (std::ostream& s, const VkDeviceGroupCommandBufferBeginInfo& value)
5500 {
5501         s << "VkDeviceGroupCommandBufferBeginInfo = {\n";
5502         s << "\tsType = " << value.sType << '\n';
5503         s << "\tpNext = " << value.pNext << '\n';
5504         s << "\tdeviceMask = " << value.deviceMask << '\n';
5505         s << '}';
5506         return s;
5507 }
5508
5509 std::ostream& operator<< (std::ostream& s, const VkDeviceGroupSubmitInfo& value)
5510 {
5511         s << "VkDeviceGroupSubmitInfo = {\n";
5512         s << "\tsType = " << value.sType << '\n';
5513         s << "\tpNext = " << value.pNext << '\n';
5514         s << "\twaitSemaphoreCount = " << value.waitSemaphoreCount << '\n';
5515         s << "\tpWaitSemaphoreDeviceIndices = " << value.pWaitSemaphoreDeviceIndices << '\n';
5516         s << "\tcommandBufferCount = " << value.commandBufferCount << '\n';
5517         s << "\tpCommandBufferDeviceMasks = " << value.pCommandBufferDeviceMasks << '\n';
5518         s << "\tsignalSemaphoreCount = " << value.signalSemaphoreCount << '\n';
5519         s << "\tpSignalSemaphoreDeviceIndices = " << value.pSignalSemaphoreDeviceIndices << '\n';
5520         s << '}';
5521         return s;
5522 }
5523
5524 std::ostream& operator<< (std::ostream& s, const VkDeviceGroupBindSparseInfo& value)
5525 {
5526         s << "VkDeviceGroupBindSparseInfo = {\n";
5527         s << "\tsType = " << value.sType << '\n';
5528         s << "\tpNext = " << value.pNext << '\n';
5529         s << "\tresourceDeviceIndex = " << value.resourceDeviceIndex << '\n';
5530         s << "\tmemoryDeviceIndex = " << value.memoryDeviceIndex << '\n';
5531         s << '}';
5532         return s;
5533 }
5534
5535 std::ostream& operator<< (std::ostream& s, const VkBindBufferMemoryDeviceGroupInfo& value)
5536 {
5537         s << "VkBindBufferMemoryDeviceGroupInfo = {\n";
5538         s << "\tsType = " << value.sType << '\n';
5539         s << "\tpNext = " << value.pNext << '\n';
5540         s << "\tdeviceIndexCount = " << value.deviceIndexCount << '\n';
5541         s << "\tpDeviceIndices = " << value.pDeviceIndices << '\n';
5542         s << '}';
5543         return s;
5544 }
5545
5546 std::ostream& operator<< (std::ostream& s, const VkBindImageMemoryDeviceGroupInfo& value)
5547 {
5548         s << "VkBindImageMemoryDeviceGroupInfo = {\n";
5549         s << "\tsType = " << value.sType << '\n';
5550         s << "\tpNext = " << value.pNext << '\n';
5551         s << "\tdeviceIndexCount = " << value.deviceIndexCount << '\n';
5552         s << "\tpDeviceIndices = " << value.pDeviceIndices << '\n';
5553         s << "\tsplitInstanceBindRegionCount = " << value.splitInstanceBindRegionCount << '\n';
5554         s << "\tpSplitInstanceBindRegions = " << value.pSplitInstanceBindRegions << '\n';
5555         s << '}';
5556         return s;
5557 }
5558
5559 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceGroupProperties& value)
5560 {
5561         s << "VkPhysicalDeviceGroupProperties = {\n";
5562         s << "\tsType = " << value.sType << '\n';
5563         s << "\tpNext = " << value.pNext << '\n';
5564         s << "\tphysicalDeviceCount = " << value.physicalDeviceCount << '\n';
5565         s << "\tphysicalDevices = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.physicalDevices), DE_ARRAY_END(value.physicalDevices)) << '\n';
5566         s << "\tsubsetAllocation = " << value.subsetAllocation << '\n';
5567         s << '}';
5568         return s;
5569 }
5570
5571 std::ostream& operator<< (std::ostream& s, const VkDeviceGroupDeviceCreateInfo& value)
5572 {
5573         s << "VkDeviceGroupDeviceCreateInfo = {\n";
5574         s << "\tsType = " << value.sType << '\n';
5575         s << "\tpNext = " << value.pNext << '\n';
5576         s << "\tphysicalDeviceCount = " << value.physicalDeviceCount << '\n';
5577         s << "\tpPhysicalDevices = " << value.pPhysicalDevices << '\n';
5578         s << '}';
5579         return s;
5580 }
5581
5582 std::ostream& operator<< (std::ostream& s, const VkBufferMemoryRequirementsInfo2& value)
5583 {
5584         s << "VkBufferMemoryRequirementsInfo2 = {\n";
5585         s << "\tsType = " << value.sType << '\n';
5586         s << "\tpNext = " << value.pNext << '\n';
5587         s << "\tbuffer = " << value.buffer << '\n';
5588         s << '}';
5589         return s;
5590 }
5591
5592 std::ostream& operator<< (std::ostream& s, const VkImageMemoryRequirementsInfo2& value)
5593 {
5594         s << "VkImageMemoryRequirementsInfo2 = {\n";
5595         s << "\tsType = " << value.sType << '\n';
5596         s << "\tpNext = " << value.pNext << '\n';
5597         s << "\timage = " << value.image << '\n';
5598         s << '}';
5599         return s;
5600 }
5601
5602 std::ostream& operator<< (std::ostream& s, const VkImageSparseMemoryRequirementsInfo2& value)
5603 {
5604         s << "VkImageSparseMemoryRequirementsInfo2 = {\n";
5605         s << "\tsType = " << value.sType << '\n';
5606         s << "\tpNext = " << value.pNext << '\n';
5607         s << "\timage = " << value.image << '\n';
5608         s << '}';
5609         return s;
5610 }
5611
5612 std::ostream& operator<< (std::ostream& s, const VkMemoryRequirements2& value)
5613 {
5614         s << "VkMemoryRequirements2 = {\n";
5615         s << "\tsType = " << value.sType << '\n';
5616         s << "\tpNext = " << value.pNext << '\n';
5617         s << "\tmemoryRequirements = " << value.memoryRequirements << '\n';
5618         s << '}';
5619         return s;
5620 }
5621
5622 std::ostream& operator<< (std::ostream& s, const VkSparseImageMemoryRequirements2& value)
5623 {
5624         s << "VkSparseImageMemoryRequirements2 = {\n";
5625         s << "\tsType = " << value.sType << '\n';
5626         s << "\tpNext = " << value.pNext << '\n';
5627         s << "\tmemoryRequirements = " << value.memoryRequirements << '\n';
5628         s << '}';
5629         return s;
5630 }
5631
5632 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceFeatures2& value)
5633 {
5634         s << "VkPhysicalDeviceFeatures2 = {\n";
5635         s << "\tsType = " << value.sType << '\n';
5636         s << "\tpNext = " << value.pNext << '\n';
5637         s << "\tfeatures = " << value.features << '\n';
5638         s << '}';
5639         return s;
5640 }
5641
5642 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceProperties2& value)
5643 {
5644         s << "VkPhysicalDeviceProperties2 = {\n";
5645         s << "\tsType = " << value.sType << '\n';
5646         s << "\tpNext = " << value.pNext << '\n';
5647         s << "\tproperties = " << value.properties << '\n';
5648         s << '}';
5649         return s;
5650 }
5651
5652 std::ostream& operator<< (std::ostream& s, const VkFormatProperties2& value)
5653 {
5654         s << "VkFormatProperties2 = {\n";
5655         s << "\tsType = " << value.sType << '\n';
5656         s << "\tpNext = " << value.pNext << '\n';
5657         s << "\tformatProperties = " << value.formatProperties << '\n';
5658         s << '}';
5659         return s;
5660 }
5661
5662 std::ostream& operator<< (std::ostream& s, const VkImageFormatProperties2& value)
5663 {
5664         s << "VkImageFormatProperties2 = {\n";
5665         s << "\tsType = " << value.sType << '\n';
5666         s << "\tpNext = " << value.pNext << '\n';
5667         s << "\timageFormatProperties = " << value.imageFormatProperties << '\n';
5668         s << '}';
5669         return s;
5670 }
5671
5672 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceImageFormatInfo2& value)
5673 {
5674         s << "VkPhysicalDeviceImageFormatInfo2 = {\n";
5675         s << "\tsType = " << value.sType << '\n';
5676         s << "\tpNext = " << value.pNext << '\n';
5677         s << "\tformat = " << value.format << '\n';
5678         s << "\ttype = " << value.type << '\n';
5679         s << "\ttiling = " << value.tiling << '\n';
5680         s << "\tusage = " << getImageUsageFlagsStr(value.usage) << '\n';
5681         s << "\tflags = " << getImageCreateFlagsStr(value.flags) << '\n';
5682         s << '}';
5683         return s;
5684 }
5685
5686 std::ostream& operator<< (std::ostream& s, const VkQueueFamilyProperties2& value)
5687 {
5688         s << "VkQueueFamilyProperties2 = {\n";
5689         s << "\tsType = " << value.sType << '\n';
5690         s << "\tpNext = " << value.pNext << '\n';
5691         s << "\tqueueFamilyProperties = " << value.queueFamilyProperties << '\n';
5692         s << '}';
5693         return s;
5694 }
5695
5696 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceMemoryProperties2& value)
5697 {
5698         s << "VkPhysicalDeviceMemoryProperties2 = {\n";
5699         s << "\tsType = " << value.sType << '\n';
5700         s << "\tpNext = " << value.pNext << '\n';
5701         s << "\tmemoryProperties = " << value.memoryProperties << '\n';
5702         s << '}';
5703         return s;
5704 }
5705
5706 std::ostream& operator<< (std::ostream& s, const VkSparseImageFormatProperties2& value)
5707 {
5708         s << "VkSparseImageFormatProperties2 = {\n";
5709         s << "\tsType = " << value.sType << '\n';
5710         s << "\tpNext = " << value.pNext << '\n';
5711         s << "\tproperties = " << value.properties << '\n';
5712         s << '}';
5713         return s;
5714 }
5715
5716 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceSparseImageFormatInfo2& value)
5717 {
5718         s << "VkPhysicalDeviceSparseImageFormatInfo2 = {\n";
5719         s << "\tsType = " << value.sType << '\n';
5720         s << "\tpNext = " << value.pNext << '\n';
5721         s << "\tformat = " << value.format << '\n';
5722         s << "\ttype = " << value.type << '\n';
5723         s << "\tsamples = " << value.samples << '\n';
5724         s << "\tusage = " << getImageUsageFlagsStr(value.usage) << '\n';
5725         s << "\ttiling = " << value.tiling << '\n';
5726         s << '}';
5727         return s;
5728 }
5729
5730 std::ostream& operator<< (std::ostream& s, const VkPhysicalDevicePointClippingProperties& value)
5731 {
5732         s << "VkPhysicalDevicePointClippingProperties = {\n";
5733         s << "\tsType = " << value.sType << '\n';
5734         s << "\tpNext = " << value.pNext << '\n';
5735         s << "\tpointClippingBehavior = " << value.pointClippingBehavior << '\n';
5736         s << '}';
5737         return s;
5738 }
5739
5740 std::ostream& operator<< (std::ostream& s, const VkInputAttachmentAspectReference& value)
5741 {
5742         s << "VkInputAttachmentAspectReference = {\n";
5743         s << "\tsubpass = " << value.subpass << '\n';
5744         s << "\tinputAttachmentIndex = " << value.inputAttachmentIndex << '\n';
5745         s << "\taspectMask = " << getImageAspectFlagsStr(value.aspectMask) << '\n';
5746         s << '}';
5747         return s;
5748 }
5749
5750 std::ostream& operator<< (std::ostream& s, const VkRenderPassInputAttachmentAspectCreateInfo& value)
5751 {
5752         s << "VkRenderPassInputAttachmentAspectCreateInfo = {\n";
5753         s << "\tsType = " << value.sType << '\n';
5754         s << "\tpNext = " << value.pNext << '\n';
5755         s << "\taspectReferenceCount = " << value.aspectReferenceCount << '\n';
5756         s << "\tpAspectReferences = " << value.pAspectReferences << '\n';
5757         s << '}';
5758         return s;
5759 }
5760
5761 std::ostream& operator<< (std::ostream& s, const VkImageViewUsageCreateInfo& value)
5762 {
5763         s << "VkImageViewUsageCreateInfo = {\n";
5764         s << "\tsType = " << value.sType << '\n';
5765         s << "\tpNext = " << value.pNext << '\n';
5766         s << "\tusage = " << getImageUsageFlagsStr(value.usage) << '\n';
5767         s << '}';
5768         return s;
5769 }
5770
5771 std::ostream& operator<< (std::ostream& s, const VkPipelineTessellationDomainOriginStateCreateInfo& value)
5772 {
5773         s << "VkPipelineTessellationDomainOriginStateCreateInfo = {\n";
5774         s << "\tsType = " << value.sType << '\n';
5775         s << "\tpNext = " << value.pNext << '\n';
5776         s << "\tdomainOrigin = " << value.domainOrigin << '\n';
5777         s << '}';
5778         return s;
5779 }
5780
5781 std::ostream& operator<< (std::ostream& s, const VkRenderPassMultiviewCreateInfo& value)
5782 {
5783         s << "VkRenderPassMultiviewCreateInfo = {\n";
5784         s << "\tsType = " << value.sType << '\n';
5785         s << "\tpNext = " << value.pNext << '\n';
5786         s << "\tsubpassCount = " << value.subpassCount << '\n';
5787         s << "\tpViewMasks = " << value.pViewMasks << '\n';
5788         s << "\tdependencyCount = " << value.dependencyCount << '\n';
5789         s << "\tpViewOffsets = " << value.pViewOffsets << '\n';
5790         s << "\tcorrelationMaskCount = " << value.correlationMaskCount << '\n';
5791         s << "\tpCorrelationMasks = " << value.pCorrelationMasks << '\n';
5792         s << '}';
5793         return s;
5794 }
5795
5796 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceMultiviewFeatures& value)
5797 {
5798         s << "VkPhysicalDeviceMultiviewFeatures = {\n";
5799         s << "\tsType = " << value.sType << '\n';
5800         s << "\tpNext = " << value.pNext << '\n';
5801         s << "\tmultiview = " << value.multiview << '\n';
5802         s << "\tmultiviewGeometryShader = " << value.multiviewGeometryShader << '\n';
5803         s << "\tmultiviewTessellationShader = " << value.multiviewTessellationShader << '\n';
5804         s << '}';
5805         return s;
5806 }
5807
5808 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceMultiviewProperties& value)
5809 {
5810         s << "VkPhysicalDeviceMultiviewProperties = {\n";
5811         s << "\tsType = " << value.sType << '\n';
5812         s << "\tpNext = " << value.pNext << '\n';
5813         s << "\tmaxMultiviewViewCount = " << value.maxMultiviewViewCount << '\n';
5814         s << "\tmaxMultiviewInstanceIndex = " << value.maxMultiviewInstanceIndex << '\n';
5815         s << '}';
5816         return s;
5817 }
5818
5819 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceVariablePointersFeatures& value)
5820 {
5821         s << "VkPhysicalDeviceVariablePointersFeatures = {\n";
5822         s << "\tsType = " << value.sType << '\n';
5823         s << "\tpNext = " << value.pNext << '\n';
5824         s << "\tvariablePointersStorageBuffer = " << value.variablePointersStorageBuffer << '\n';
5825         s << "\tvariablePointers = " << value.variablePointers << '\n';
5826         s << '}';
5827         return s;
5828 }
5829
5830 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceProtectedMemoryFeatures& value)
5831 {
5832         s << "VkPhysicalDeviceProtectedMemoryFeatures = {\n";
5833         s << "\tsType = " << value.sType << '\n';
5834         s << "\tpNext = " << value.pNext << '\n';
5835         s << "\tprotectedMemory = " << value.protectedMemory << '\n';
5836         s << '}';
5837         return s;
5838 }
5839
5840 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceProtectedMemoryProperties& value)
5841 {
5842         s << "VkPhysicalDeviceProtectedMemoryProperties = {\n";
5843         s << "\tsType = " << value.sType << '\n';
5844         s << "\tpNext = " << value.pNext << '\n';
5845         s << "\tprotectedNoFault = " << value.protectedNoFault << '\n';
5846         s << '}';
5847         return s;
5848 }
5849
5850 std::ostream& operator<< (std::ostream& s, const VkDeviceQueueInfo2& value)
5851 {
5852         s << "VkDeviceQueueInfo2 = {\n";
5853         s << "\tsType = " << value.sType << '\n';
5854         s << "\tpNext = " << value.pNext << '\n';
5855         s << "\tflags = " << getDeviceQueueCreateFlagsStr(value.flags) << '\n';
5856         s << "\tqueueFamilyIndex = " << value.queueFamilyIndex << '\n';
5857         s << "\tqueueIndex = " << value.queueIndex << '\n';
5858         s << '}';
5859         return s;
5860 }
5861
5862 std::ostream& operator<< (std::ostream& s, const VkProtectedSubmitInfo& value)
5863 {
5864         s << "VkProtectedSubmitInfo = {\n";
5865         s << "\tsType = " << value.sType << '\n';
5866         s << "\tpNext = " << value.pNext << '\n';
5867         s << "\tprotectedSubmit = " << value.protectedSubmit << '\n';
5868         s << '}';
5869         return s;
5870 }
5871
5872 std::ostream& operator<< (std::ostream& s, const VkSamplerYcbcrConversionCreateInfo& value)
5873 {
5874         s << "VkSamplerYcbcrConversionCreateInfo = {\n";
5875         s << "\tsType = " << value.sType << '\n';
5876         s << "\tpNext = " << value.pNext << '\n';
5877         s << "\tformat = " << value.format << '\n';
5878         s << "\tycbcrModel = " << value.ycbcrModel << '\n';
5879         s << "\tycbcrRange = " << value.ycbcrRange << '\n';
5880         s << "\tcomponents = " << value.components << '\n';
5881         s << "\txChromaOffset = " << value.xChromaOffset << '\n';
5882         s << "\tyChromaOffset = " << value.yChromaOffset << '\n';
5883         s << "\tchromaFilter = " << value.chromaFilter << '\n';
5884         s << "\tforceExplicitReconstruction = " << value.forceExplicitReconstruction << '\n';
5885         s << '}';
5886         return s;
5887 }
5888
5889 std::ostream& operator<< (std::ostream& s, const VkSamplerYcbcrConversionInfo& value)
5890 {
5891         s << "VkSamplerYcbcrConversionInfo = {\n";
5892         s << "\tsType = " << value.sType << '\n';
5893         s << "\tpNext = " << value.pNext << '\n';
5894         s << "\tconversion = " << value.conversion << '\n';
5895         s << '}';
5896         return s;
5897 }
5898
5899 std::ostream& operator<< (std::ostream& s, const VkBindImagePlaneMemoryInfo& value)
5900 {
5901         s << "VkBindImagePlaneMemoryInfo = {\n";
5902         s << "\tsType = " << value.sType << '\n';
5903         s << "\tpNext = " << value.pNext << '\n';
5904         s << "\tplaneAspect = " << value.planeAspect << '\n';
5905         s << '}';
5906         return s;
5907 }
5908
5909 std::ostream& operator<< (std::ostream& s, const VkImagePlaneMemoryRequirementsInfo& value)
5910 {
5911         s << "VkImagePlaneMemoryRequirementsInfo = {\n";
5912         s << "\tsType = " << value.sType << '\n';
5913         s << "\tpNext = " << value.pNext << '\n';
5914         s << "\tplaneAspect = " << value.planeAspect << '\n';
5915         s << '}';
5916         return s;
5917 }
5918
5919 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceSamplerYcbcrConversionFeatures& value)
5920 {
5921         s << "VkPhysicalDeviceSamplerYcbcrConversionFeatures = {\n";
5922         s << "\tsType = " << value.sType << '\n';
5923         s << "\tpNext = " << value.pNext << '\n';
5924         s << "\tsamplerYcbcrConversion = " << value.samplerYcbcrConversion << '\n';
5925         s << '}';
5926         return s;
5927 }
5928
5929 std::ostream& operator<< (std::ostream& s, const VkSamplerYcbcrConversionImageFormatProperties& value)
5930 {
5931         s << "VkSamplerYcbcrConversionImageFormatProperties = {\n";
5932         s << "\tsType = " << value.sType << '\n';
5933         s << "\tpNext = " << value.pNext << '\n';
5934         s << "\tcombinedImageSamplerDescriptorCount = " << value.combinedImageSamplerDescriptorCount << '\n';
5935         s << '}';
5936         return s;
5937 }
5938
5939 std::ostream& operator<< (std::ostream& s, const VkDescriptorUpdateTemplateEntry& value)
5940 {
5941         s << "VkDescriptorUpdateTemplateEntry = {\n";
5942         s << "\tdstBinding = " << value.dstBinding << '\n';
5943         s << "\tdstArrayElement = " << value.dstArrayElement << '\n';
5944         s << "\tdescriptorCount = " << value.descriptorCount << '\n';
5945         s << "\tdescriptorType = " << value.descriptorType << '\n';
5946         s << "\toffset = " << value.offset << '\n';
5947         s << "\tstride = " << value.stride << '\n';
5948         s << '}';
5949         return s;
5950 }
5951
5952 std::ostream& operator<< (std::ostream& s, const VkDescriptorUpdateTemplateCreateInfo& value)
5953 {
5954         s << "VkDescriptorUpdateTemplateCreateInfo = {\n";
5955         s << "\tsType = " << value.sType << '\n';
5956         s << "\tpNext = " << value.pNext << '\n';
5957         s << "\tflags = " << getDescriptorUpdateTemplateCreateFlagsStr(value.flags) << '\n';
5958         s << "\tdescriptorUpdateEntryCount = " << value.descriptorUpdateEntryCount << '\n';
5959         s << "\tpDescriptorUpdateEntries = " << value.pDescriptorUpdateEntries << '\n';
5960         s << "\ttemplateType = " << value.templateType << '\n';
5961         s << "\tdescriptorSetLayout = " << value.descriptorSetLayout << '\n';
5962         s << "\tpipelineBindPoint = " << value.pipelineBindPoint << '\n';
5963         s << "\tpipelineLayout = " << value.pipelineLayout << '\n';
5964         s << "\tset = " << value.set << '\n';
5965         s << '}';
5966         return s;
5967 }
5968
5969 std::ostream& operator<< (std::ostream& s, const VkExternalMemoryProperties& value)
5970 {
5971         s << "VkExternalMemoryProperties = {\n";
5972         s << "\texternalMemoryFeatures = " << getExternalMemoryFeatureFlagsStr(value.externalMemoryFeatures) << '\n';
5973         s << "\texportFromImportedHandleTypes = " << getExternalMemoryHandleTypeFlagsStr(value.exportFromImportedHandleTypes) << '\n';
5974         s << "\tcompatibleHandleTypes = " << getExternalMemoryHandleTypeFlagsStr(value.compatibleHandleTypes) << '\n';
5975         s << '}';
5976         return s;
5977 }
5978
5979 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceExternalImageFormatInfo& value)
5980 {
5981         s << "VkPhysicalDeviceExternalImageFormatInfo = {\n";
5982         s << "\tsType = " << value.sType << '\n';
5983         s << "\tpNext = " << value.pNext << '\n';
5984         s << "\thandleType = " << value.handleType << '\n';
5985         s << '}';
5986         return s;
5987 }
5988
5989 std::ostream& operator<< (std::ostream& s, const VkExternalImageFormatProperties& value)
5990 {
5991         s << "VkExternalImageFormatProperties = {\n";
5992         s << "\tsType = " << value.sType << '\n';
5993         s << "\tpNext = " << value.pNext << '\n';
5994         s << "\texternalMemoryProperties = " << value.externalMemoryProperties << '\n';
5995         s << '}';
5996         return s;
5997 }
5998
5999 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceExternalBufferInfo& value)
6000 {
6001         s << "VkPhysicalDeviceExternalBufferInfo = {\n";
6002         s << "\tsType = " << value.sType << '\n';
6003         s << "\tpNext = " << value.pNext << '\n';
6004         s << "\tflags = " << getBufferCreateFlagsStr(value.flags) << '\n';
6005         s << "\tusage = " << getBufferUsageFlagsStr(value.usage) << '\n';
6006         s << "\thandleType = " << value.handleType << '\n';
6007         s << '}';
6008         return s;
6009 }
6010
6011 std::ostream& operator<< (std::ostream& s, const VkExternalBufferProperties& value)
6012 {
6013         s << "VkExternalBufferProperties = {\n";
6014         s << "\tsType = " << value.sType << '\n';
6015         s << "\tpNext = " << value.pNext << '\n';
6016         s << "\texternalMemoryProperties = " << value.externalMemoryProperties << '\n';
6017         s << '}';
6018         return s;
6019 }
6020
6021 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceIDProperties& value)
6022 {
6023         s << "VkPhysicalDeviceIDProperties = {\n";
6024         s << "\tsType = " << value.sType << '\n';
6025         s << "\tpNext = " << value.pNext << '\n';
6026         s << "\tdeviceUUID = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<deUint8>(DE_ARRAY_BEGIN(value.deviceUUID)), tcu::Format::HexIterator<deUint8>(DE_ARRAY_END(value.deviceUUID))) << '\n';
6027         s << "\tdriverUUID = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<deUint8>(DE_ARRAY_BEGIN(value.driverUUID)), tcu::Format::HexIterator<deUint8>(DE_ARRAY_END(value.driverUUID))) << '\n';
6028         s << "\tdeviceLUID = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<deUint8>(DE_ARRAY_BEGIN(value.deviceLUID)), tcu::Format::HexIterator<deUint8>(DE_ARRAY_END(value.deviceLUID))) << '\n';
6029         s << "\tdeviceNodeMask = " << value.deviceNodeMask << '\n';
6030         s << "\tdeviceLUIDValid = " << value.deviceLUIDValid << '\n';
6031         s << '}';
6032         return s;
6033 }
6034
6035 std::ostream& operator<< (std::ostream& s, const VkExternalMemoryImageCreateInfo& value)
6036 {
6037         s << "VkExternalMemoryImageCreateInfo = {\n";
6038         s << "\tsType = " << value.sType << '\n';
6039         s << "\tpNext = " << value.pNext << '\n';
6040         s << "\thandleTypes = " << getExternalMemoryHandleTypeFlagsStr(value.handleTypes) << '\n';
6041         s << '}';
6042         return s;
6043 }
6044
6045 std::ostream& operator<< (std::ostream& s, const VkExternalMemoryBufferCreateInfo& value)
6046 {
6047         s << "VkExternalMemoryBufferCreateInfo = {\n";
6048         s << "\tsType = " << value.sType << '\n';
6049         s << "\tpNext = " << value.pNext << '\n';
6050         s << "\thandleTypes = " << getExternalMemoryHandleTypeFlagsStr(value.handleTypes) << '\n';
6051         s << '}';
6052         return s;
6053 }
6054
6055 std::ostream& operator<< (std::ostream& s, const VkExportMemoryAllocateInfo& value)
6056 {
6057         s << "VkExportMemoryAllocateInfo = {\n";
6058         s << "\tsType = " << value.sType << '\n';
6059         s << "\tpNext = " << value.pNext << '\n';
6060         s << "\thandleTypes = " << getExternalMemoryHandleTypeFlagsStr(value.handleTypes) << '\n';
6061         s << '}';
6062         return s;
6063 }
6064
6065 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceExternalFenceInfo& value)
6066 {
6067         s << "VkPhysicalDeviceExternalFenceInfo = {\n";
6068         s << "\tsType = " << value.sType << '\n';
6069         s << "\tpNext = " << value.pNext << '\n';
6070         s << "\thandleType = " << value.handleType << '\n';
6071         s << '}';
6072         return s;
6073 }
6074
6075 std::ostream& operator<< (std::ostream& s, const VkExternalFenceProperties& value)
6076 {
6077         s << "VkExternalFenceProperties = {\n";
6078         s << "\tsType = " << value.sType << '\n';
6079         s << "\tpNext = " << value.pNext << '\n';
6080         s << "\texportFromImportedHandleTypes = " << getExternalFenceHandleTypeFlagsStr(value.exportFromImportedHandleTypes) << '\n';
6081         s << "\tcompatibleHandleTypes = " << getExternalFenceHandleTypeFlagsStr(value.compatibleHandleTypes) << '\n';
6082         s << "\texternalFenceFeatures = " << getExternalFenceFeatureFlagsStr(value.externalFenceFeatures) << '\n';
6083         s << '}';
6084         return s;
6085 }
6086
6087 std::ostream& operator<< (std::ostream& s, const VkExportFenceCreateInfo& value)
6088 {
6089         s << "VkExportFenceCreateInfo = {\n";
6090         s << "\tsType = " << value.sType << '\n';
6091         s << "\tpNext = " << value.pNext << '\n';
6092         s << "\thandleTypes = " << getExternalFenceHandleTypeFlagsStr(value.handleTypes) << '\n';
6093         s << '}';
6094         return s;
6095 }
6096
6097 std::ostream& operator<< (std::ostream& s, const VkExportSemaphoreCreateInfo& value)
6098 {
6099         s << "VkExportSemaphoreCreateInfo = {\n";
6100         s << "\tsType = " << value.sType << '\n';
6101         s << "\tpNext = " << value.pNext << '\n';
6102         s << "\thandleTypes = " << getExternalSemaphoreHandleTypeFlagsStr(value.handleTypes) << '\n';
6103         s << '}';
6104         return s;
6105 }
6106
6107 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceExternalSemaphoreInfo& value)
6108 {
6109         s << "VkPhysicalDeviceExternalSemaphoreInfo = {\n";
6110         s << "\tsType = " << value.sType << '\n';
6111         s << "\tpNext = " << value.pNext << '\n';
6112         s << "\thandleType = " << value.handleType << '\n';
6113         s << '}';
6114         return s;
6115 }
6116
6117 std::ostream& operator<< (std::ostream& s, const VkExternalSemaphoreProperties& value)
6118 {
6119         s << "VkExternalSemaphoreProperties = {\n";
6120         s << "\tsType = " << value.sType << '\n';
6121         s << "\tpNext = " << value.pNext << '\n';
6122         s << "\texportFromImportedHandleTypes = " << getExternalSemaphoreHandleTypeFlagsStr(value.exportFromImportedHandleTypes) << '\n';
6123         s << "\tcompatibleHandleTypes = " << getExternalSemaphoreHandleTypeFlagsStr(value.compatibleHandleTypes) << '\n';
6124         s << "\texternalSemaphoreFeatures = " << getExternalSemaphoreFeatureFlagsStr(value.externalSemaphoreFeatures) << '\n';
6125         s << '}';
6126         return s;
6127 }
6128
6129 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceMaintenance3Properties& value)
6130 {
6131         s << "VkPhysicalDeviceMaintenance3Properties = {\n";
6132         s << "\tsType = " << value.sType << '\n';
6133         s << "\tpNext = " << value.pNext << '\n';
6134         s << "\tmaxPerSetDescriptors = " << value.maxPerSetDescriptors << '\n';
6135         s << "\tmaxMemoryAllocationSize = " << value.maxMemoryAllocationSize << '\n';
6136         s << '}';
6137         return s;
6138 }
6139
6140 std::ostream& operator<< (std::ostream& s, const VkDescriptorSetLayoutSupport& value)
6141 {
6142         s << "VkDescriptorSetLayoutSupport = {\n";
6143         s << "\tsType = " << value.sType << '\n';
6144         s << "\tpNext = " << value.pNext << '\n';
6145         s << "\tsupported = " << value.supported << '\n';
6146         s << '}';
6147         return s;
6148 }
6149
6150 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceShaderDrawParametersFeatures& value)
6151 {
6152         s << "VkPhysicalDeviceShaderDrawParametersFeatures = {\n";
6153         s << "\tsType = " << value.sType << '\n';
6154         s << "\tpNext = " << value.pNext << '\n';
6155         s << "\tshaderDrawParameters = " << value.shaderDrawParameters << '\n';
6156         s << '}';
6157         return s;
6158 }
6159
6160 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceVulkan11Features& value)
6161 {
6162         s << "VkPhysicalDeviceVulkan11Features = {\n";
6163         s << "\tsType = " << value.sType << '\n';
6164         s << "\tpNext = " << value.pNext << '\n';
6165         s << "\tstorageBuffer16BitAccess = " << value.storageBuffer16BitAccess << '\n';
6166         s << "\tuniformAndStorageBuffer16BitAccess = " << value.uniformAndStorageBuffer16BitAccess << '\n';
6167         s << "\tstoragePushConstant16 = " << value.storagePushConstant16 << '\n';
6168         s << "\tstorageInputOutput16 = " << value.storageInputOutput16 << '\n';
6169         s << "\tmultiview = " << value.multiview << '\n';
6170         s << "\tmultiviewGeometryShader = " << value.multiviewGeometryShader << '\n';
6171         s << "\tmultiviewTessellationShader = " << value.multiviewTessellationShader << '\n';
6172         s << "\tvariablePointersStorageBuffer = " << value.variablePointersStorageBuffer << '\n';
6173         s << "\tvariablePointers = " << value.variablePointers << '\n';
6174         s << "\tprotectedMemory = " << value.protectedMemory << '\n';
6175         s << "\tsamplerYcbcrConversion = " << value.samplerYcbcrConversion << '\n';
6176         s << "\tshaderDrawParameters = " << value.shaderDrawParameters << '\n';
6177         s << '}';
6178         return s;
6179 }
6180
6181 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceVulkan11Properties& value)
6182 {
6183         s << "VkPhysicalDeviceVulkan11Properties = {\n";
6184         s << "\tsType = " << value.sType << '\n';
6185         s << "\tpNext = " << value.pNext << '\n';
6186         s << "\tdeviceUUID = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<deUint8>(DE_ARRAY_BEGIN(value.deviceUUID)), tcu::Format::HexIterator<deUint8>(DE_ARRAY_END(value.deviceUUID))) << '\n';
6187         s << "\tdriverUUID = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<deUint8>(DE_ARRAY_BEGIN(value.driverUUID)), tcu::Format::HexIterator<deUint8>(DE_ARRAY_END(value.driverUUID))) << '\n';
6188         s << "\tdeviceLUID = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<deUint8>(DE_ARRAY_BEGIN(value.deviceLUID)), tcu::Format::HexIterator<deUint8>(DE_ARRAY_END(value.deviceLUID))) << '\n';
6189         s << "\tdeviceNodeMask = " << value.deviceNodeMask << '\n';
6190         s << "\tdeviceLUIDValid = " << value.deviceLUIDValid << '\n';
6191         s << "\tsubgroupSize = " << value.subgroupSize << '\n';
6192         s << "\tsubgroupSupportedStages = " << getShaderStageFlagsStr(value.subgroupSupportedStages) << '\n';
6193         s << "\tsubgroupSupportedOperations = " << getSubgroupFeatureFlagsStr(value.subgroupSupportedOperations) << '\n';
6194         s << "\tsubgroupQuadOperationsInAllStages = " << value.subgroupQuadOperationsInAllStages << '\n';
6195         s << "\tpointClippingBehavior = " << value.pointClippingBehavior << '\n';
6196         s << "\tmaxMultiviewViewCount = " << value.maxMultiviewViewCount << '\n';
6197         s << "\tmaxMultiviewInstanceIndex = " << value.maxMultiviewInstanceIndex << '\n';
6198         s << "\tprotectedNoFault = " << value.protectedNoFault << '\n';
6199         s << "\tmaxPerSetDescriptors = " << value.maxPerSetDescriptors << '\n';
6200         s << "\tmaxMemoryAllocationSize = " << value.maxMemoryAllocationSize << '\n';
6201         s << '}';
6202         return s;
6203 }
6204
6205 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceVulkan12Features& value)
6206 {
6207         s << "VkPhysicalDeviceVulkan12Features = {\n";
6208         s << "\tsType = " << value.sType << '\n';
6209         s << "\tpNext = " << value.pNext << '\n';
6210         s << "\tsamplerMirrorClampToEdge = " << value.samplerMirrorClampToEdge << '\n';
6211         s << "\tdrawIndirectCount = " << value.drawIndirectCount << '\n';
6212         s << "\tstorageBuffer8BitAccess = " << value.storageBuffer8BitAccess << '\n';
6213         s << "\tuniformAndStorageBuffer8BitAccess = " << value.uniformAndStorageBuffer8BitAccess << '\n';
6214         s << "\tstoragePushConstant8 = " << value.storagePushConstant8 << '\n';
6215         s << "\tshaderBufferInt64Atomics = " << value.shaderBufferInt64Atomics << '\n';
6216         s << "\tshaderSharedInt64Atomics = " << value.shaderSharedInt64Atomics << '\n';
6217         s << "\tshaderFloat16 = " << value.shaderFloat16 << '\n';
6218         s << "\tshaderInt8 = " << value.shaderInt8 << '\n';
6219         s << "\tdescriptorIndexing = " << value.descriptorIndexing << '\n';
6220         s << "\tshaderInputAttachmentArrayDynamicIndexing = " << value.shaderInputAttachmentArrayDynamicIndexing << '\n';
6221         s << "\tshaderUniformTexelBufferArrayDynamicIndexing = " << value.shaderUniformTexelBufferArrayDynamicIndexing << '\n';
6222         s << "\tshaderStorageTexelBufferArrayDynamicIndexing = " << value.shaderStorageTexelBufferArrayDynamicIndexing << '\n';
6223         s << "\tshaderUniformBufferArrayNonUniformIndexing = " << value.shaderUniformBufferArrayNonUniformIndexing << '\n';
6224         s << "\tshaderSampledImageArrayNonUniformIndexing = " << value.shaderSampledImageArrayNonUniformIndexing << '\n';
6225         s << "\tshaderStorageBufferArrayNonUniformIndexing = " << value.shaderStorageBufferArrayNonUniformIndexing << '\n';
6226         s << "\tshaderStorageImageArrayNonUniformIndexing = " << value.shaderStorageImageArrayNonUniformIndexing << '\n';
6227         s << "\tshaderInputAttachmentArrayNonUniformIndexing = " << value.shaderInputAttachmentArrayNonUniformIndexing << '\n';
6228         s << "\tshaderUniformTexelBufferArrayNonUniformIndexing = " << value.shaderUniformTexelBufferArrayNonUniformIndexing << '\n';
6229         s << "\tshaderStorageTexelBufferArrayNonUniformIndexing = " << value.shaderStorageTexelBufferArrayNonUniformIndexing << '\n';
6230         s << "\tdescriptorBindingUniformBufferUpdateAfterBind = " << value.descriptorBindingUniformBufferUpdateAfterBind << '\n';
6231         s << "\tdescriptorBindingSampledImageUpdateAfterBind = " << value.descriptorBindingSampledImageUpdateAfterBind << '\n';
6232         s << "\tdescriptorBindingStorageImageUpdateAfterBind = " << value.descriptorBindingStorageImageUpdateAfterBind << '\n';
6233         s << "\tdescriptorBindingStorageBufferUpdateAfterBind = " << value.descriptorBindingStorageBufferUpdateAfterBind << '\n';
6234         s << "\tdescriptorBindingUniformTexelBufferUpdateAfterBind = " << value.descriptorBindingUniformTexelBufferUpdateAfterBind << '\n';
6235         s << "\tdescriptorBindingStorageTexelBufferUpdateAfterBind = " << value.descriptorBindingStorageTexelBufferUpdateAfterBind << '\n';
6236         s << "\tdescriptorBindingUpdateUnusedWhilePending = " << value.descriptorBindingUpdateUnusedWhilePending << '\n';
6237         s << "\tdescriptorBindingPartiallyBound = " << value.descriptorBindingPartiallyBound << '\n';
6238         s << "\tdescriptorBindingVariableDescriptorCount = " << value.descriptorBindingVariableDescriptorCount << '\n';
6239         s << "\truntimeDescriptorArray = " << value.runtimeDescriptorArray << '\n';
6240         s << "\tsamplerFilterMinmax = " << value.samplerFilterMinmax << '\n';
6241         s << "\tscalarBlockLayout = " << value.scalarBlockLayout << '\n';
6242         s << "\timagelessFramebuffer = " << value.imagelessFramebuffer << '\n';
6243         s << "\tuniformBufferStandardLayout = " << value.uniformBufferStandardLayout << '\n';
6244         s << "\tshaderSubgroupExtendedTypes = " << value.shaderSubgroupExtendedTypes << '\n';
6245         s << "\tseparateDepthStencilLayouts = " << value.separateDepthStencilLayouts << '\n';
6246         s << "\thostQueryReset = " << value.hostQueryReset << '\n';
6247         s << "\ttimelineSemaphore = " << value.timelineSemaphore << '\n';
6248         s << "\tbufferDeviceAddress = " << value.bufferDeviceAddress << '\n';
6249         s << "\tbufferDeviceAddressCaptureReplay = " << value.bufferDeviceAddressCaptureReplay << '\n';
6250         s << "\tbufferDeviceAddressMultiDevice = " << value.bufferDeviceAddressMultiDevice << '\n';
6251         s << "\tvulkanMemoryModel = " << value.vulkanMemoryModel << '\n';
6252         s << "\tvulkanMemoryModelDeviceScope = " << value.vulkanMemoryModelDeviceScope << '\n';
6253         s << "\tvulkanMemoryModelAvailabilityVisibilityChains = " << value.vulkanMemoryModelAvailabilityVisibilityChains << '\n';
6254         s << "\tshaderOutputViewportIndex = " << value.shaderOutputViewportIndex << '\n';
6255         s << "\tshaderOutputLayer = " << value.shaderOutputLayer << '\n';
6256         s << "\tsubgroupBroadcastDynamicId = " << value.subgroupBroadcastDynamicId << '\n';
6257         s << '}';
6258         return s;
6259 }
6260
6261 std::ostream& operator<< (std::ostream& s, const VkConformanceVersion& value)
6262 {
6263         s << "VkConformanceVersion = {\n";
6264         s << "\tmajor = " << value.major << '\n';
6265         s << "\tminor = " << value.minor << '\n';
6266         s << "\tsubminor = " << value.subminor << '\n';
6267         s << "\tpatch = " << value.patch << '\n';
6268         s << '}';
6269         return s;
6270 }
6271
6272 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceVulkan12Properties& value)
6273 {
6274         s << "VkPhysicalDeviceVulkan12Properties = {\n";
6275         s << "\tsType = " << value.sType << '\n';
6276         s << "\tpNext = " << value.pNext << '\n';
6277         s << "\tdriverID = " << value.driverID << '\n';
6278         s << "\tdriverName = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<char>(DE_ARRAY_BEGIN(value.driverName)), tcu::Format::HexIterator<char>(DE_ARRAY_END(value.driverName))) << '\n';
6279         s << "\tdriverInfo = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<char>(DE_ARRAY_BEGIN(value.driverInfo)), tcu::Format::HexIterator<char>(DE_ARRAY_END(value.driverInfo))) << '\n';
6280         s << "\tconformanceVersion = " << value.conformanceVersion << '\n';
6281         s << "\tdenormBehaviorIndependence = " << value.denormBehaviorIndependence << '\n';
6282         s << "\troundingModeIndependence = " << value.roundingModeIndependence << '\n';
6283         s << "\tshaderSignedZeroInfNanPreserveFloat16 = " << value.shaderSignedZeroInfNanPreserveFloat16 << '\n';
6284         s << "\tshaderSignedZeroInfNanPreserveFloat32 = " << value.shaderSignedZeroInfNanPreserveFloat32 << '\n';
6285         s << "\tshaderSignedZeroInfNanPreserveFloat64 = " << value.shaderSignedZeroInfNanPreserveFloat64 << '\n';
6286         s << "\tshaderDenormPreserveFloat16 = " << value.shaderDenormPreserveFloat16 << '\n';
6287         s << "\tshaderDenormPreserveFloat32 = " << value.shaderDenormPreserveFloat32 << '\n';
6288         s << "\tshaderDenormPreserveFloat64 = " << value.shaderDenormPreserveFloat64 << '\n';
6289         s << "\tshaderDenormFlushToZeroFloat16 = " << value.shaderDenormFlushToZeroFloat16 << '\n';
6290         s << "\tshaderDenormFlushToZeroFloat32 = " << value.shaderDenormFlushToZeroFloat32 << '\n';
6291         s << "\tshaderDenormFlushToZeroFloat64 = " << value.shaderDenormFlushToZeroFloat64 << '\n';
6292         s << "\tshaderRoundingModeRTEFloat16 = " << value.shaderRoundingModeRTEFloat16 << '\n';
6293         s << "\tshaderRoundingModeRTEFloat32 = " << value.shaderRoundingModeRTEFloat32 << '\n';
6294         s << "\tshaderRoundingModeRTEFloat64 = " << value.shaderRoundingModeRTEFloat64 << '\n';
6295         s << "\tshaderRoundingModeRTZFloat16 = " << value.shaderRoundingModeRTZFloat16 << '\n';
6296         s << "\tshaderRoundingModeRTZFloat32 = " << value.shaderRoundingModeRTZFloat32 << '\n';
6297         s << "\tshaderRoundingModeRTZFloat64 = " << value.shaderRoundingModeRTZFloat64 << '\n';
6298         s << "\tmaxUpdateAfterBindDescriptorsInAllPools = " << value.maxUpdateAfterBindDescriptorsInAllPools << '\n';
6299         s << "\tshaderUniformBufferArrayNonUniformIndexingNative = " << value.shaderUniformBufferArrayNonUniformIndexingNative << '\n';
6300         s << "\tshaderSampledImageArrayNonUniformIndexingNative = " << value.shaderSampledImageArrayNonUniformIndexingNative << '\n';
6301         s << "\tshaderStorageBufferArrayNonUniformIndexingNative = " << value.shaderStorageBufferArrayNonUniformIndexingNative << '\n';
6302         s << "\tshaderStorageImageArrayNonUniformIndexingNative = " << value.shaderStorageImageArrayNonUniformIndexingNative << '\n';
6303         s << "\tshaderInputAttachmentArrayNonUniformIndexingNative = " << value.shaderInputAttachmentArrayNonUniformIndexingNative << '\n';
6304         s << "\trobustBufferAccessUpdateAfterBind = " << value.robustBufferAccessUpdateAfterBind << '\n';
6305         s << "\tquadDivergentImplicitLod = " << value.quadDivergentImplicitLod << '\n';
6306         s << "\tmaxPerStageDescriptorUpdateAfterBindSamplers = " << value.maxPerStageDescriptorUpdateAfterBindSamplers << '\n';
6307         s << "\tmaxPerStageDescriptorUpdateAfterBindUniformBuffers = " << value.maxPerStageDescriptorUpdateAfterBindUniformBuffers << '\n';
6308         s << "\tmaxPerStageDescriptorUpdateAfterBindStorageBuffers = " << value.maxPerStageDescriptorUpdateAfterBindStorageBuffers << '\n';
6309         s << "\tmaxPerStageDescriptorUpdateAfterBindSampledImages = " << value.maxPerStageDescriptorUpdateAfterBindSampledImages << '\n';
6310         s << "\tmaxPerStageDescriptorUpdateAfterBindStorageImages = " << value.maxPerStageDescriptorUpdateAfterBindStorageImages << '\n';
6311         s << "\tmaxPerStageDescriptorUpdateAfterBindInputAttachments = " << value.maxPerStageDescriptorUpdateAfterBindInputAttachments << '\n';
6312         s << "\tmaxPerStageUpdateAfterBindResources = " << value.maxPerStageUpdateAfterBindResources << '\n';
6313         s << "\tmaxDescriptorSetUpdateAfterBindSamplers = " << value.maxDescriptorSetUpdateAfterBindSamplers << '\n';
6314         s << "\tmaxDescriptorSetUpdateAfterBindUniformBuffers = " << value.maxDescriptorSetUpdateAfterBindUniformBuffers << '\n';
6315         s << "\tmaxDescriptorSetUpdateAfterBindUniformBuffersDynamic = " << value.maxDescriptorSetUpdateAfterBindUniformBuffersDynamic << '\n';
6316         s << "\tmaxDescriptorSetUpdateAfterBindStorageBuffers = " << value.maxDescriptorSetUpdateAfterBindStorageBuffers << '\n';
6317         s << "\tmaxDescriptorSetUpdateAfterBindStorageBuffersDynamic = " << value.maxDescriptorSetUpdateAfterBindStorageBuffersDynamic << '\n';
6318         s << "\tmaxDescriptorSetUpdateAfterBindSampledImages = " << value.maxDescriptorSetUpdateAfterBindSampledImages << '\n';
6319         s << "\tmaxDescriptorSetUpdateAfterBindStorageImages = " << value.maxDescriptorSetUpdateAfterBindStorageImages << '\n';
6320         s << "\tmaxDescriptorSetUpdateAfterBindInputAttachments = " << value.maxDescriptorSetUpdateAfterBindInputAttachments << '\n';
6321         s << "\tsupportedDepthResolveModes = " << getResolveModeFlagsStr(value.supportedDepthResolveModes) << '\n';
6322         s << "\tsupportedStencilResolveModes = " << getResolveModeFlagsStr(value.supportedStencilResolveModes) << '\n';
6323         s << "\tindependentResolveNone = " << value.independentResolveNone << '\n';
6324         s << "\tindependentResolve = " << value.independentResolve << '\n';
6325         s << "\tfilterMinmaxSingleComponentFormats = " << value.filterMinmaxSingleComponentFormats << '\n';
6326         s << "\tfilterMinmaxImageComponentMapping = " << value.filterMinmaxImageComponentMapping << '\n';
6327         s << "\tmaxTimelineSemaphoreValueDifference = " << value.maxTimelineSemaphoreValueDifference << '\n';
6328         s << "\tframebufferIntegerColorSampleCounts = " << getSampleCountFlagsStr(value.framebufferIntegerColorSampleCounts) << '\n';
6329         s << '}';
6330         return s;
6331 }
6332
6333 std::ostream& operator<< (std::ostream& s, const VkImageFormatListCreateInfo& value)
6334 {
6335         s << "VkImageFormatListCreateInfo = {\n";
6336         s << "\tsType = " << value.sType << '\n';
6337         s << "\tpNext = " << value.pNext << '\n';
6338         s << "\tviewFormatCount = " << value.viewFormatCount << '\n';
6339         s << "\tpViewFormats = " << value.pViewFormats << '\n';
6340         s << '}';
6341         return s;
6342 }
6343
6344 std::ostream& operator<< (std::ostream& s, const VkAttachmentDescription2& value)
6345 {
6346         s << "VkAttachmentDescription2 = {\n";
6347         s << "\tsType = " << value.sType << '\n';
6348         s << "\tpNext = " << value.pNext << '\n';
6349         s << "\tflags = " << getAttachmentDescriptionFlagsStr(value.flags) << '\n';
6350         s << "\tformat = " << value.format << '\n';
6351         s << "\tsamples = " << value.samples << '\n';
6352         s << "\tloadOp = " << value.loadOp << '\n';
6353         s << "\tstoreOp = " << value.storeOp << '\n';
6354         s << "\tstencilLoadOp = " << value.stencilLoadOp << '\n';
6355         s << "\tstencilStoreOp = " << value.stencilStoreOp << '\n';
6356         s << "\tinitialLayout = " << value.initialLayout << '\n';
6357         s << "\tfinalLayout = " << value.finalLayout << '\n';
6358         s << '}';
6359         return s;
6360 }
6361
6362 std::ostream& operator<< (std::ostream& s, const VkAttachmentReference2& value)
6363 {
6364         s << "VkAttachmentReference2 = {\n";
6365         s << "\tsType = " << value.sType << '\n';
6366         s << "\tpNext = " << value.pNext << '\n';
6367         s << "\tattachment = " << value.attachment << '\n';
6368         s << "\tlayout = " << value.layout << '\n';
6369         s << "\taspectMask = " << getImageAspectFlagsStr(value.aspectMask) << '\n';
6370         s << '}';
6371         return s;
6372 }
6373
6374 std::ostream& operator<< (std::ostream& s, const VkSubpassDescription2& value)
6375 {
6376         s << "VkSubpassDescription2 = {\n";
6377         s << "\tsType = " << value.sType << '\n';
6378         s << "\tpNext = " << value.pNext << '\n';
6379         s << "\tflags = " << getSubpassDescriptionFlagsStr(value.flags) << '\n';
6380         s << "\tpipelineBindPoint = " << value.pipelineBindPoint << '\n';
6381         s << "\tviewMask = " << value.viewMask << '\n';
6382         s << "\tinputAttachmentCount = " << value.inputAttachmentCount << '\n';
6383         s << "\tpInputAttachments = " << value.pInputAttachments << '\n';
6384         s << "\tcolorAttachmentCount = " << value.colorAttachmentCount << '\n';
6385         s << "\tpColorAttachments = " << value.pColorAttachments << '\n';
6386         s << "\tpResolveAttachments = " << value.pResolveAttachments << '\n';
6387         s << "\tpDepthStencilAttachment = " << value.pDepthStencilAttachment << '\n';
6388         s << "\tpreserveAttachmentCount = " << value.preserveAttachmentCount << '\n';
6389         s << "\tpPreserveAttachments = " << value.pPreserveAttachments << '\n';
6390         s << '}';
6391         return s;
6392 }
6393
6394 std::ostream& operator<< (std::ostream& s, const VkSubpassDependency2& value)
6395 {
6396         s << "VkSubpassDependency2 = {\n";
6397         s << "\tsType = " << value.sType << '\n';
6398         s << "\tpNext = " << value.pNext << '\n';
6399         s << "\tsrcSubpass = " << value.srcSubpass << '\n';
6400         s << "\tdstSubpass = " << value.dstSubpass << '\n';
6401         s << "\tsrcStageMask = " << getPipelineStageFlagsStr(value.srcStageMask) << '\n';
6402         s << "\tdstStageMask = " << getPipelineStageFlagsStr(value.dstStageMask) << '\n';
6403         s << "\tsrcAccessMask = " << getAccessFlagsStr(value.srcAccessMask) << '\n';
6404         s << "\tdstAccessMask = " << getAccessFlagsStr(value.dstAccessMask) << '\n';
6405         s << "\tdependencyFlags = " << getDependencyFlagsStr(value.dependencyFlags) << '\n';
6406         s << "\tviewOffset = " << value.viewOffset << '\n';
6407         s << '}';
6408         return s;
6409 }
6410
6411 std::ostream& operator<< (std::ostream& s, const VkRenderPassCreateInfo2& value)
6412 {
6413         s << "VkRenderPassCreateInfo2 = {\n";
6414         s << "\tsType = " << value.sType << '\n';
6415         s << "\tpNext = " << value.pNext << '\n';
6416         s << "\tflags = " << getRenderPassCreateFlagsStr(value.flags) << '\n';
6417         s << "\tattachmentCount = " << value.attachmentCount << '\n';
6418         s << "\tpAttachments = " << value.pAttachments << '\n';
6419         s << "\tsubpassCount = " << value.subpassCount << '\n';
6420         s << "\tpSubpasses = " << value.pSubpasses << '\n';
6421         s << "\tdependencyCount = " << value.dependencyCount << '\n';
6422         s << "\tpDependencies = " << value.pDependencies << '\n';
6423         s << "\tcorrelatedViewMaskCount = " << value.correlatedViewMaskCount << '\n';
6424         s << "\tpCorrelatedViewMasks = " << value.pCorrelatedViewMasks << '\n';
6425         s << '}';
6426         return s;
6427 }
6428
6429 std::ostream& operator<< (std::ostream& s, const VkSubpassBeginInfo& value)
6430 {
6431         s << "VkSubpassBeginInfo = {\n";
6432         s << "\tsType = " << value.sType << '\n';
6433         s << "\tpNext = " << value.pNext << '\n';
6434         s << "\tcontents = " << value.contents << '\n';
6435         s << '}';
6436         return s;
6437 }
6438
6439 std::ostream& operator<< (std::ostream& s, const VkSubpassEndInfo& value)
6440 {
6441         s << "VkSubpassEndInfo = {\n";
6442         s << "\tsType = " << value.sType << '\n';
6443         s << "\tpNext = " << value.pNext << '\n';
6444         s << '}';
6445         return s;
6446 }
6447
6448 std::ostream& operator<< (std::ostream& s, const VkPhysicalDevice8BitStorageFeatures& value)
6449 {
6450         s << "VkPhysicalDevice8BitStorageFeatures = {\n";
6451         s << "\tsType = " << value.sType << '\n';
6452         s << "\tpNext = " << value.pNext << '\n';
6453         s << "\tstorageBuffer8BitAccess = " << value.storageBuffer8BitAccess << '\n';
6454         s << "\tuniformAndStorageBuffer8BitAccess = " << value.uniformAndStorageBuffer8BitAccess << '\n';
6455         s << "\tstoragePushConstant8 = " << value.storagePushConstant8 << '\n';
6456         s << '}';
6457         return s;
6458 }
6459
6460 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceDriverProperties& value)
6461 {
6462         s << "VkPhysicalDeviceDriverProperties = {\n";
6463         s << "\tsType = " << value.sType << '\n';
6464         s << "\tpNext = " << value.pNext << '\n';
6465         s << "\tdriverID = " << value.driverID << '\n';
6466         s << "\tdriverName = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<char>(DE_ARRAY_BEGIN(value.driverName)), tcu::Format::HexIterator<char>(DE_ARRAY_END(value.driverName))) << '\n';
6467         s << "\tdriverInfo = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<char>(DE_ARRAY_BEGIN(value.driverInfo)), tcu::Format::HexIterator<char>(DE_ARRAY_END(value.driverInfo))) << '\n';
6468         s << "\tconformanceVersion = " << value.conformanceVersion << '\n';
6469         s << '}';
6470         return s;
6471 }
6472
6473 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceShaderAtomicInt64Features& value)
6474 {
6475         s << "VkPhysicalDeviceShaderAtomicInt64Features = {\n";
6476         s << "\tsType = " << value.sType << '\n';
6477         s << "\tpNext = " << value.pNext << '\n';
6478         s << "\tshaderBufferInt64Atomics = " << value.shaderBufferInt64Atomics << '\n';
6479         s << "\tshaderSharedInt64Atomics = " << value.shaderSharedInt64Atomics << '\n';
6480         s << '}';
6481         return s;
6482 }
6483
6484 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceShaderFloat16Int8Features& value)
6485 {
6486         s << "VkPhysicalDeviceShaderFloat16Int8Features = {\n";
6487         s << "\tsType = " << value.sType << '\n';
6488         s << "\tpNext = " << value.pNext << '\n';
6489         s << "\tshaderFloat16 = " << value.shaderFloat16 << '\n';
6490         s << "\tshaderInt8 = " << value.shaderInt8 << '\n';
6491         s << '}';
6492         return s;
6493 }
6494
6495 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceFloatControlsProperties& value)
6496 {
6497         s << "VkPhysicalDeviceFloatControlsProperties = {\n";
6498         s << "\tsType = " << value.sType << '\n';
6499         s << "\tpNext = " << value.pNext << '\n';
6500         s << "\tdenormBehaviorIndependence = " << value.denormBehaviorIndependence << '\n';
6501         s << "\troundingModeIndependence = " << value.roundingModeIndependence << '\n';
6502         s << "\tshaderSignedZeroInfNanPreserveFloat16 = " << value.shaderSignedZeroInfNanPreserveFloat16 << '\n';
6503         s << "\tshaderSignedZeroInfNanPreserveFloat32 = " << value.shaderSignedZeroInfNanPreserveFloat32 << '\n';
6504         s << "\tshaderSignedZeroInfNanPreserveFloat64 = " << value.shaderSignedZeroInfNanPreserveFloat64 << '\n';
6505         s << "\tshaderDenormPreserveFloat16 = " << value.shaderDenormPreserveFloat16 << '\n';
6506         s << "\tshaderDenormPreserveFloat32 = " << value.shaderDenormPreserveFloat32 << '\n';
6507         s << "\tshaderDenormPreserveFloat64 = " << value.shaderDenormPreserveFloat64 << '\n';
6508         s << "\tshaderDenormFlushToZeroFloat16 = " << value.shaderDenormFlushToZeroFloat16 << '\n';
6509         s << "\tshaderDenormFlushToZeroFloat32 = " << value.shaderDenormFlushToZeroFloat32 << '\n';
6510         s << "\tshaderDenormFlushToZeroFloat64 = " << value.shaderDenormFlushToZeroFloat64 << '\n';
6511         s << "\tshaderRoundingModeRTEFloat16 = " << value.shaderRoundingModeRTEFloat16 << '\n';
6512         s << "\tshaderRoundingModeRTEFloat32 = " << value.shaderRoundingModeRTEFloat32 << '\n';
6513         s << "\tshaderRoundingModeRTEFloat64 = " << value.shaderRoundingModeRTEFloat64 << '\n';
6514         s << "\tshaderRoundingModeRTZFloat16 = " << value.shaderRoundingModeRTZFloat16 << '\n';
6515         s << "\tshaderRoundingModeRTZFloat32 = " << value.shaderRoundingModeRTZFloat32 << '\n';
6516         s << "\tshaderRoundingModeRTZFloat64 = " << value.shaderRoundingModeRTZFloat64 << '\n';
6517         s << '}';
6518         return s;
6519 }
6520
6521 std::ostream& operator<< (std::ostream& s, const VkDescriptorSetLayoutBindingFlagsCreateInfo& value)
6522 {
6523         s << "VkDescriptorSetLayoutBindingFlagsCreateInfo = {\n";
6524         s << "\tsType = " << value.sType << '\n';
6525         s << "\tpNext = " << value.pNext << '\n';
6526         s << "\tbindingCount = " << value.bindingCount << '\n';
6527         s << "\tpBindingFlags = " << value.pBindingFlags << '\n';
6528         s << '}';
6529         return s;
6530 }
6531
6532 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceDescriptorIndexingFeatures& value)
6533 {
6534         s << "VkPhysicalDeviceDescriptorIndexingFeatures = {\n";
6535         s << "\tsType = " << value.sType << '\n';
6536         s << "\tpNext = " << value.pNext << '\n';
6537         s << "\tshaderInputAttachmentArrayDynamicIndexing = " << value.shaderInputAttachmentArrayDynamicIndexing << '\n';
6538         s << "\tshaderUniformTexelBufferArrayDynamicIndexing = " << value.shaderUniformTexelBufferArrayDynamicIndexing << '\n';
6539         s << "\tshaderStorageTexelBufferArrayDynamicIndexing = " << value.shaderStorageTexelBufferArrayDynamicIndexing << '\n';
6540         s << "\tshaderUniformBufferArrayNonUniformIndexing = " << value.shaderUniformBufferArrayNonUniformIndexing << '\n';
6541         s << "\tshaderSampledImageArrayNonUniformIndexing = " << value.shaderSampledImageArrayNonUniformIndexing << '\n';
6542         s << "\tshaderStorageBufferArrayNonUniformIndexing = " << value.shaderStorageBufferArrayNonUniformIndexing << '\n';
6543         s << "\tshaderStorageImageArrayNonUniformIndexing = " << value.shaderStorageImageArrayNonUniformIndexing << '\n';
6544         s << "\tshaderInputAttachmentArrayNonUniformIndexing = " << value.shaderInputAttachmentArrayNonUniformIndexing << '\n';
6545         s << "\tshaderUniformTexelBufferArrayNonUniformIndexing = " << value.shaderUniformTexelBufferArrayNonUniformIndexing << '\n';
6546         s << "\tshaderStorageTexelBufferArrayNonUniformIndexing = " << value.shaderStorageTexelBufferArrayNonUniformIndexing << '\n';
6547         s << "\tdescriptorBindingUniformBufferUpdateAfterBind = " << value.descriptorBindingUniformBufferUpdateAfterBind << '\n';
6548         s << "\tdescriptorBindingSampledImageUpdateAfterBind = " << value.descriptorBindingSampledImageUpdateAfterBind << '\n';
6549         s << "\tdescriptorBindingStorageImageUpdateAfterBind = " << value.descriptorBindingStorageImageUpdateAfterBind << '\n';
6550         s << "\tdescriptorBindingStorageBufferUpdateAfterBind = " << value.descriptorBindingStorageBufferUpdateAfterBind << '\n';
6551         s << "\tdescriptorBindingUniformTexelBufferUpdateAfterBind = " << value.descriptorBindingUniformTexelBufferUpdateAfterBind << '\n';
6552         s << "\tdescriptorBindingStorageTexelBufferUpdateAfterBind = " << value.descriptorBindingStorageTexelBufferUpdateAfterBind << '\n';
6553         s << "\tdescriptorBindingUpdateUnusedWhilePending = " << value.descriptorBindingUpdateUnusedWhilePending << '\n';
6554         s << "\tdescriptorBindingPartiallyBound = " << value.descriptorBindingPartiallyBound << '\n';
6555         s << "\tdescriptorBindingVariableDescriptorCount = " << value.descriptorBindingVariableDescriptorCount << '\n';
6556         s << "\truntimeDescriptorArray = " << value.runtimeDescriptorArray << '\n';
6557         s << '}';
6558         return s;
6559 }
6560
6561 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceDescriptorIndexingProperties& value)
6562 {
6563         s << "VkPhysicalDeviceDescriptorIndexingProperties = {\n";
6564         s << "\tsType = " << value.sType << '\n';
6565         s << "\tpNext = " << value.pNext << '\n';
6566         s << "\tmaxUpdateAfterBindDescriptorsInAllPools = " << value.maxUpdateAfterBindDescriptorsInAllPools << '\n';
6567         s << "\tshaderUniformBufferArrayNonUniformIndexingNative = " << value.shaderUniformBufferArrayNonUniformIndexingNative << '\n';
6568         s << "\tshaderSampledImageArrayNonUniformIndexingNative = " << value.shaderSampledImageArrayNonUniformIndexingNative << '\n';
6569         s << "\tshaderStorageBufferArrayNonUniformIndexingNative = " << value.shaderStorageBufferArrayNonUniformIndexingNative << '\n';
6570         s << "\tshaderStorageImageArrayNonUniformIndexingNative = " << value.shaderStorageImageArrayNonUniformIndexingNative << '\n';
6571         s << "\tshaderInputAttachmentArrayNonUniformIndexingNative = " << value.shaderInputAttachmentArrayNonUniformIndexingNative << '\n';
6572         s << "\trobustBufferAccessUpdateAfterBind = " << value.robustBufferAccessUpdateAfterBind << '\n';
6573         s << "\tquadDivergentImplicitLod = " << value.quadDivergentImplicitLod << '\n';
6574         s << "\tmaxPerStageDescriptorUpdateAfterBindSamplers = " << value.maxPerStageDescriptorUpdateAfterBindSamplers << '\n';
6575         s << "\tmaxPerStageDescriptorUpdateAfterBindUniformBuffers = " << value.maxPerStageDescriptorUpdateAfterBindUniformBuffers << '\n';
6576         s << "\tmaxPerStageDescriptorUpdateAfterBindStorageBuffers = " << value.maxPerStageDescriptorUpdateAfterBindStorageBuffers << '\n';
6577         s << "\tmaxPerStageDescriptorUpdateAfterBindSampledImages = " << value.maxPerStageDescriptorUpdateAfterBindSampledImages << '\n';
6578         s << "\tmaxPerStageDescriptorUpdateAfterBindStorageImages = " << value.maxPerStageDescriptorUpdateAfterBindStorageImages << '\n';
6579         s << "\tmaxPerStageDescriptorUpdateAfterBindInputAttachments = " << value.maxPerStageDescriptorUpdateAfterBindInputAttachments << '\n';
6580         s << "\tmaxPerStageUpdateAfterBindResources = " << value.maxPerStageUpdateAfterBindResources << '\n';
6581         s << "\tmaxDescriptorSetUpdateAfterBindSamplers = " << value.maxDescriptorSetUpdateAfterBindSamplers << '\n';
6582         s << "\tmaxDescriptorSetUpdateAfterBindUniformBuffers = " << value.maxDescriptorSetUpdateAfterBindUniformBuffers << '\n';
6583         s << "\tmaxDescriptorSetUpdateAfterBindUniformBuffersDynamic = " << value.maxDescriptorSetUpdateAfterBindUniformBuffersDynamic << '\n';
6584         s << "\tmaxDescriptorSetUpdateAfterBindStorageBuffers = " << value.maxDescriptorSetUpdateAfterBindStorageBuffers << '\n';
6585         s << "\tmaxDescriptorSetUpdateAfterBindStorageBuffersDynamic = " << value.maxDescriptorSetUpdateAfterBindStorageBuffersDynamic << '\n';
6586         s << "\tmaxDescriptorSetUpdateAfterBindSampledImages = " << value.maxDescriptorSetUpdateAfterBindSampledImages << '\n';
6587         s << "\tmaxDescriptorSetUpdateAfterBindStorageImages = " << value.maxDescriptorSetUpdateAfterBindStorageImages << '\n';
6588         s << "\tmaxDescriptorSetUpdateAfterBindInputAttachments = " << value.maxDescriptorSetUpdateAfterBindInputAttachments << '\n';
6589         s << '}';
6590         return s;
6591 }
6592
6593 std::ostream& operator<< (std::ostream& s, const VkDescriptorSetVariableDescriptorCountAllocateInfo& value)
6594 {
6595         s << "VkDescriptorSetVariableDescriptorCountAllocateInfo = {\n";
6596         s << "\tsType = " << value.sType << '\n';
6597         s << "\tpNext = " << value.pNext << '\n';
6598         s << "\tdescriptorSetCount = " << value.descriptorSetCount << '\n';
6599         s << "\tpDescriptorCounts = " << value.pDescriptorCounts << '\n';
6600         s << '}';
6601         return s;
6602 }
6603
6604 std::ostream& operator<< (std::ostream& s, const VkDescriptorSetVariableDescriptorCountLayoutSupport& value)
6605 {
6606         s << "VkDescriptorSetVariableDescriptorCountLayoutSupport = {\n";
6607         s << "\tsType = " << value.sType << '\n';
6608         s << "\tpNext = " << value.pNext << '\n';
6609         s << "\tmaxVariableDescriptorCount = " << value.maxVariableDescriptorCount << '\n';
6610         s << '}';
6611         return s;
6612 }
6613
6614 std::ostream& operator<< (std::ostream& s, const VkSubpassDescriptionDepthStencilResolve& value)
6615 {
6616         s << "VkSubpassDescriptionDepthStencilResolve = {\n";
6617         s << "\tsType = " << value.sType << '\n';
6618         s << "\tpNext = " << value.pNext << '\n';
6619         s << "\tdepthResolveMode = " << value.depthResolveMode << '\n';
6620         s << "\tstencilResolveMode = " << value.stencilResolveMode << '\n';
6621         s << "\tpDepthStencilResolveAttachment = " << value.pDepthStencilResolveAttachment << '\n';
6622         s << '}';
6623         return s;
6624 }
6625
6626 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceDepthStencilResolveProperties& value)
6627 {
6628         s << "VkPhysicalDeviceDepthStencilResolveProperties = {\n";
6629         s << "\tsType = " << value.sType << '\n';
6630         s << "\tpNext = " << value.pNext << '\n';
6631         s << "\tsupportedDepthResolveModes = " << getResolveModeFlagsStr(value.supportedDepthResolveModes) << '\n';
6632         s << "\tsupportedStencilResolveModes = " << getResolveModeFlagsStr(value.supportedStencilResolveModes) << '\n';
6633         s << "\tindependentResolveNone = " << value.independentResolveNone << '\n';
6634         s << "\tindependentResolve = " << value.independentResolve << '\n';
6635         s << '}';
6636         return s;
6637 }
6638
6639 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceScalarBlockLayoutFeatures& value)
6640 {
6641         s << "VkPhysicalDeviceScalarBlockLayoutFeatures = {\n";
6642         s << "\tsType = " << value.sType << '\n';
6643         s << "\tpNext = " << value.pNext << '\n';
6644         s << "\tscalarBlockLayout = " << value.scalarBlockLayout << '\n';
6645         s << '}';
6646         return s;
6647 }
6648
6649 std::ostream& operator<< (std::ostream& s, const VkImageStencilUsageCreateInfo& value)
6650 {
6651         s << "VkImageStencilUsageCreateInfo = {\n";
6652         s << "\tsType = " << value.sType << '\n';
6653         s << "\tpNext = " << value.pNext << '\n';
6654         s << "\tstencilUsage = " << getImageUsageFlagsStr(value.stencilUsage) << '\n';
6655         s << '}';
6656         return s;
6657 }
6658
6659 std::ostream& operator<< (std::ostream& s, const VkSamplerReductionModeCreateInfo& value)
6660 {
6661         s << "VkSamplerReductionModeCreateInfo = {\n";
6662         s << "\tsType = " << value.sType << '\n';
6663         s << "\tpNext = " << value.pNext << '\n';
6664         s << "\treductionMode = " << value.reductionMode << '\n';
6665         s << '}';
6666         return s;
6667 }
6668
6669 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceSamplerFilterMinmaxProperties& value)
6670 {
6671         s << "VkPhysicalDeviceSamplerFilterMinmaxProperties = {\n";
6672         s << "\tsType = " << value.sType << '\n';
6673         s << "\tpNext = " << value.pNext << '\n';
6674         s << "\tfilterMinmaxSingleComponentFormats = " << value.filterMinmaxSingleComponentFormats << '\n';
6675         s << "\tfilterMinmaxImageComponentMapping = " << value.filterMinmaxImageComponentMapping << '\n';
6676         s << '}';
6677         return s;
6678 }
6679
6680 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceVulkanMemoryModelFeatures& value)
6681 {
6682         s << "VkPhysicalDeviceVulkanMemoryModelFeatures = {\n";
6683         s << "\tsType = " << value.sType << '\n';
6684         s << "\tpNext = " << value.pNext << '\n';
6685         s << "\tvulkanMemoryModel = " << value.vulkanMemoryModel << '\n';
6686         s << "\tvulkanMemoryModelDeviceScope = " << value.vulkanMemoryModelDeviceScope << '\n';
6687         s << "\tvulkanMemoryModelAvailabilityVisibilityChains = " << value.vulkanMemoryModelAvailabilityVisibilityChains << '\n';
6688         s << '}';
6689         return s;
6690 }
6691
6692 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceImagelessFramebufferFeatures& value)
6693 {
6694         s << "VkPhysicalDeviceImagelessFramebufferFeatures = {\n";
6695         s << "\tsType = " << value.sType << '\n';
6696         s << "\tpNext = " << value.pNext << '\n';
6697         s << "\timagelessFramebuffer = " << value.imagelessFramebuffer << '\n';
6698         s << '}';
6699         return s;
6700 }
6701
6702 std::ostream& operator<< (std::ostream& s, const VkFramebufferAttachmentImageInfo& value)
6703 {
6704         s << "VkFramebufferAttachmentImageInfo = {\n";
6705         s << "\tsType = " << value.sType << '\n';
6706         s << "\tpNext = " << value.pNext << '\n';
6707         s << "\tflags = " << getImageCreateFlagsStr(value.flags) << '\n';
6708         s << "\tusage = " << getImageUsageFlagsStr(value.usage) << '\n';
6709         s << "\twidth = " << value.width << '\n';
6710         s << "\theight = " << value.height << '\n';
6711         s << "\tlayerCount = " << value.layerCount << '\n';
6712         s << "\tviewFormatCount = " << value.viewFormatCount << '\n';
6713         s << "\tpViewFormats = " << value.pViewFormats << '\n';
6714         s << '}';
6715         return s;
6716 }
6717
6718 std::ostream& operator<< (std::ostream& s, const VkFramebufferAttachmentsCreateInfo& value)
6719 {
6720         s << "VkFramebufferAttachmentsCreateInfo = {\n";
6721         s << "\tsType = " << value.sType << '\n';
6722         s << "\tpNext = " << value.pNext << '\n';
6723         s << "\tattachmentImageInfoCount = " << value.attachmentImageInfoCount << '\n';
6724         s << "\tpAttachmentImageInfos = " << value.pAttachmentImageInfos << '\n';
6725         s << '}';
6726         return s;
6727 }
6728
6729 std::ostream& operator<< (std::ostream& s, const VkRenderPassAttachmentBeginInfo& value)
6730 {
6731         s << "VkRenderPassAttachmentBeginInfo = {\n";
6732         s << "\tsType = " << value.sType << '\n';
6733         s << "\tpNext = " << value.pNext << '\n';
6734         s << "\tattachmentCount = " << value.attachmentCount << '\n';
6735         s << "\tpAttachments = " << value.pAttachments << '\n';
6736         s << '}';
6737         return s;
6738 }
6739
6740 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceUniformBufferStandardLayoutFeatures& value)
6741 {
6742         s << "VkPhysicalDeviceUniformBufferStandardLayoutFeatures = {\n";
6743         s << "\tsType = " << value.sType << '\n';
6744         s << "\tpNext = " << value.pNext << '\n';
6745         s << "\tuniformBufferStandardLayout = " << value.uniformBufferStandardLayout << '\n';
6746         s << '}';
6747         return s;
6748 }
6749
6750 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures& value)
6751 {
6752         s << "VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures = {\n";
6753         s << "\tsType = " << value.sType << '\n';
6754         s << "\tpNext = " << value.pNext << '\n';
6755         s << "\tshaderSubgroupExtendedTypes = " << value.shaderSubgroupExtendedTypes << '\n';
6756         s << '}';
6757         return s;
6758 }
6759
6760 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures& value)
6761 {
6762         s << "VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures = {\n";
6763         s << "\tsType = " << value.sType << '\n';
6764         s << "\tpNext = " << value.pNext << '\n';
6765         s << "\tseparateDepthStencilLayouts = " << value.separateDepthStencilLayouts << '\n';
6766         s << '}';
6767         return s;
6768 }
6769
6770 std::ostream& operator<< (std::ostream& s, const VkAttachmentReferenceStencilLayout& value)
6771 {
6772         s << "VkAttachmentReferenceStencilLayout = {\n";
6773         s << "\tsType = " << value.sType << '\n';
6774         s << "\tpNext = " << value.pNext << '\n';
6775         s << "\tstencilLayout = " << value.stencilLayout << '\n';
6776         s << '}';
6777         return s;
6778 }
6779
6780 std::ostream& operator<< (std::ostream& s, const VkAttachmentDescriptionStencilLayout& value)
6781 {
6782         s << "VkAttachmentDescriptionStencilLayout = {\n";
6783         s << "\tsType = " << value.sType << '\n';
6784         s << "\tpNext = " << value.pNext << '\n';
6785         s << "\tstencilInitialLayout = " << value.stencilInitialLayout << '\n';
6786         s << "\tstencilFinalLayout = " << value.stencilFinalLayout << '\n';
6787         s << '}';
6788         return s;
6789 }
6790
6791 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceHostQueryResetFeatures& value)
6792 {
6793         s << "VkPhysicalDeviceHostQueryResetFeatures = {\n";
6794         s << "\tsType = " << value.sType << '\n';
6795         s << "\tpNext = " << value.pNext << '\n';
6796         s << "\thostQueryReset = " << value.hostQueryReset << '\n';
6797         s << '}';
6798         return s;
6799 }
6800
6801 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceTimelineSemaphoreFeatures& value)
6802 {
6803         s << "VkPhysicalDeviceTimelineSemaphoreFeatures = {\n";
6804         s << "\tsType = " << value.sType << '\n';
6805         s << "\tpNext = " << value.pNext << '\n';
6806         s << "\ttimelineSemaphore = " << value.timelineSemaphore << '\n';
6807         s << '}';
6808         return s;
6809 }
6810
6811 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceTimelineSemaphoreProperties& value)
6812 {
6813         s << "VkPhysicalDeviceTimelineSemaphoreProperties = {\n";
6814         s << "\tsType = " << value.sType << '\n';
6815         s << "\tpNext = " << value.pNext << '\n';
6816         s << "\tmaxTimelineSemaphoreValueDifference = " << value.maxTimelineSemaphoreValueDifference << '\n';
6817         s << '}';
6818         return s;
6819 }
6820
6821 std::ostream& operator<< (std::ostream& s, const VkSemaphoreTypeCreateInfo& value)
6822 {
6823         s << "VkSemaphoreTypeCreateInfo = {\n";
6824         s << "\tsType = " << value.sType << '\n';
6825         s << "\tpNext = " << value.pNext << '\n';
6826         s << "\tsemaphoreType = " << value.semaphoreType << '\n';
6827         s << "\tinitialValue = " << value.initialValue << '\n';
6828         s << '}';
6829         return s;
6830 }
6831
6832 std::ostream& operator<< (std::ostream& s, const VkTimelineSemaphoreSubmitInfo& value)
6833 {
6834         s << "VkTimelineSemaphoreSubmitInfo = {\n";
6835         s << "\tsType = " << value.sType << '\n';
6836         s << "\tpNext = " << value.pNext << '\n';
6837         s << "\twaitSemaphoreValueCount = " << value.waitSemaphoreValueCount << '\n';
6838         s << "\tpWaitSemaphoreValues = " << value.pWaitSemaphoreValues << '\n';
6839         s << "\tsignalSemaphoreValueCount = " << value.signalSemaphoreValueCount << '\n';
6840         s << "\tpSignalSemaphoreValues = " << value.pSignalSemaphoreValues << '\n';
6841         s << '}';
6842         return s;
6843 }
6844
6845 std::ostream& operator<< (std::ostream& s, const VkSemaphoreWaitInfo& value)
6846 {
6847         s << "VkSemaphoreWaitInfo = {\n";
6848         s << "\tsType = " << value.sType << '\n';
6849         s << "\tpNext = " << value.pNext << '\n';
6850         s << "\tflags = " << getSemaphoreWaitFlagsStr(value.flags) << '\n';
6851         s << "\tsemaphoreCount = " << value.semaphoreCount << '\n';
6852         s << "\tpSemaphores = " << value.pSemaphores << '\n';
6853         s << "\tpValues = " << value.pValues << '\n';
6854         s << '}';
6855         return s;
6856 }
6857
6858 std::ostream& operator<< (std::ostream& s, const VkSemaphoreSignalInfo& value)
6859 {
6860         s << "VkSemaphoreSignalInfo = {\n";
6861         s << "\tsType = " << value.sType << '\n';
6862         s << "\tpNext = " << value.pNext << '\n';
6863         s << "\tsemaphore = " << value.semaphore << '\n';
6864         s << "\tvalue = " << value.value << '\n';
6865         s << '}';
6866         return s;
6867 }
6868
6869 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceBufferDeviceAddressFeatures& value)
6870 {
6871         s << "VkPhysicalDeviceBufferDeviceAddressFeatures = {\n";
6872         s << "\tsType = " << value.sType << '\n';
6873         s << "\tpNext = " << value.pNext << '\n';
6874         s << "\tbufferDeviceAddress = " << value.bufferDeviceAddress << '\n';
6875         s << "\tbufferDeviceAddressCaptureReplay = " << value.bufferDeviceAddressCaptureReplay << '\n';
6876         s << "\tbufferDeviceAddressMultiDevice = " << value.bufferDeviceAddressMultiDevice << '\n';
6877         s << '}';
6878         return s;
6879 }
6880
6881 std::ostream& operator<< (std::ostream& s, const VkBufferDeviceAddressInfo& value)
6882 {
6883         s << "VkBufferDeviceAddressInfo = {\n";
6884         s << "\tsType = " << value.sType << '\n';
6885         s << "\tpNext = " << value.pNext << '\n';
6886         s << "\tbuffer = " << value.buffer << '\n';
6887         s << '}';
6888         return s;
6889 }
6890
6891 std::ostream& operator<< (std::ostream& s, const VkBufferOpaqueCaptureAddressCreateInfo& value)
6892 {
6893         s << "VkBufferOpaqueCaptureAddressCreateInfo = {\n";
6894         s << "\tsType = " << value.sType << '\n';
6895         s << "\tpNext = " << value.pNext << '\n';
6896         s << "\topaqueCaptureAddress = " << value.opaqueCaptureAddress << '\n';
6897         s << '}';
6898         return s;
6899 }
6900
6901 std::ostream& operator<< (std::ostream& s, const VkMemoryOpaqueCaptureAddressAllocateInfo& value)
6902 {
6903         s << "VkMemoryOpaqueCaptureAddressAllocateInfo = {\n";
6904         s << "\tsType = " << value.sType << '\n';
6905         s << "\tpNext = " << value.pNext << '\n';
6906         s << "\topaqueCaptureAddress = " << value.opaqueCaptureAddress << '\n';
6907         s << '}';
6908         return s;
6909 }
6910
6911 std::ostream& operator<< (std::ostream& s, const VkDeviceMemoryOpaqueCaptureAddressInfo& value)
6912 {
6913         s << "VkDeviceMemoryOpaqueCaptureAddressInfo = {\n";
6914         s << "\tsType = " << value.sType << '\n';
6915         s << "\tpNext = " << value.pNext << '\n';
6916         s << "\tmemory = " << value.memory << '\n';
6917         s << '}';
6918         return s;
6919 }
6920
6921 std::ostream& operator<< (std::ostream& s, const VkSurfaceCapabilitiesKHR& value)
6922 {
6923         s << "VkSurfaceCapabilitiesKHR = {\n";
6924         s << "\tminImageCount = " << value.minImageCount << '\n';
6925         s << "\tmaxImageCount = " << value.maxImageCount << '\n';
6926         s << "\tcurrentExtent = " << value.currentExtent << '\n';
6927         s << "\tminImageExtent = " << value.minImageExtent << '\n';
6928         s << "\tmaxImageExtent = " << value.maxImageExtent << '\n';
6929         s << "\tmaxImageArrayLayers = " << value.maxImageArrayLayers << '\n';
6930         s << "\tsupportedTransforms = " << getSurfaceTransformFlagsKHRStr(value.supportedTransforms) << '\n';
6931         s << "\tcurrentTransform = " << value.currentTransform << '\n';
6932         s << "\tsupportedCompositeAlpha = " << getCompositeAlphaFlagsKHRStr(value.supportedCompositeAlpha) << '\n';
6933         s << "\tsupportedUsageFlags = " << getImageUsageFlagsStr(value.supportedUsageFlags) << '\n';
6934         s << '}';
6935         return s;
6936 }
6937
6938 std::ostream& operator<< (std::ostream& s, const VkSurfaceFormatKHR& value)
6939 {
6940         s << "VkSurfaceFormatKHR = {\n";
6941         s << "\tformat = " << value.format << '\n';
6942         s << "\tcolorSpace = " << value.colorSpace << '\n';
6943         s << '}';
6944         return s;
6945 }
6946
6947 std::ostream& operator<< (std::ostream& s, const VkSwapchainCreateInfoKHR& value)
6948 {
6949         s << "VkSwapchainCreateInfoKHR = {\n";
6950         s << "\tsType = " << value.sType << '\n';
6951         s << "\tpNext = " << value.pNext << '\n';
6952         s << "\tflags = " << getSwapchainCreateFlagsKHRStr(value.flags) << '\n';
6953         s << "\tsurface = " << value.surface << '\n';
6954         s << "\tminImageCount = " << value.minImageCount << '\n';
6955         s << "\timageFormat = " << value.imageFormat << '\n';
6956         s << "\timageColorSpace = " << value.imageColorSpace << '\n';
6957         s << "\timageExtent = " << value.imageExtent << '\n';
6958         s << "\timageArrayLayers = " << value.imageArrayLayers << '\n';
6959         s << "\timageUsage = " << getImageUsageFlagsStr(value.imageUsage) << '\n';
6960         s << "\timageSharingMode = " << value.imageSharingMode << '\n';
6961         s << "\tqueueFamilyIndexCount = " << value.queueFamilyIndexCount << '\n';
6962         s << "\tpQueueFamilyIndices = " << value.pQueueFamilyIndices << '\n';
6963         s << "\tpreTransform = " << value.preTransform << '\n';
6964         s << "\tcompositeAlpha = " << value.compositeAlpha << '\n';
6965         s << "\tpresentMode = " << value.presentMode << '\n';
6966         s << "\tclipped = " << value.clipped << '\n';
6967         s << "\toldSwapchain = " << value.oldSwapchain << '\n';
6968         s << '}';
6969         return s;
6970 }
6971
6972 std::ostream& operator<< (std::ostream& s, const VkPresentInfoKHR& value)
6973 {
6974         s << "VkPresentInfoKHR = {\n";
6975         s << "\tsType = " << value.sType << '\n';
6976         s << "\tpNext = " << value.pNext << '\n';
6977         s << "\twaitSemaphoreCount = " << value.waitSemaphoreCount << '\n';
6978         s << "\tpWaitSemaphores = " << value.pWaitSemaphores << '\n';
6979         s << "\tswapchainCount = " << value.swapchainCount << '\n';
6980         s << "\tpSwapchains = " << value.pSwapchains << '\n';
6981         s << "\tpImageIndices = " << value.pImageIndices << '\n';
6982         s << "\tpResults = " << value.pResults << '\n';
6983         s << '}';
6984         return s;
6985 }
6986
6987 std::ostream& operator<< (std::ostream& s, const VkImageSwapchainCreateInfoKHR& value)
6988 {
6989         s << "VkImageSwapchainCreateInfoKHR = {\n";
6990         s << "\tsType = " << value.sType << '\n';
6991         s << "\tpNext = " << value.pNext << '\n';
6992         s << "\tswapchain = " << value.swapchain << '\n';
6993         s << '}';
6994         return s;
6995 }
6996
6997 std::ostream& operator<< (std::ostream& s, const VkBindImageMemorySwapchainInfoKHR& value)
6998 {
6999         s << "VkBindImageMemorySwapchainInfoKHR = {\n";
7000         s << "\tsType = " << value.sType << '\n';
7001         s << "\tpNext = " << value.pNext << '\n';
7002         s << "\tswapchain = " << value.swapchain << '\n';
7003         s << "\timageIndex = " << value.imageIndex << '\n';
7004         s << '}';
7005         return s;
7006 }
7007
7008 std::ostream& operator<< (std::ostream& s, const VkAcquireNextImageInfoKHR& value)
7009 {
7010         s << "VkAcquireNextImageInfoKHR = {\n";
7011         s << "\tsType = " << value.sType << '\n';
7012         s << "\tpNext = " << value.pNext << '\n';
7013         s << "\tswapchain = " << value.swapchain << '\n';
7014         s << "\ttimeout = " << value.timeout << '\n';
7015         s << "\tsemaphore = " << value.semaphore << '\n';
7016         s << "\tfence = " << value.fence << '\n';
7017         s << "\tdeviceMask = " << value.deviceMask << '\n';
7018         s << '}';
7019         return s;
7020 }
7021
7022 std::ostream& operator<< (std::ostream& s, const VkDeviceGroupPresentCapabilitiesKHR& value)
7023 {
7024         s << "VkDeviceGroupPresentCapabilitiesKHR = {\n";
7025         s << "\tsType = " << value.sType << '\n';
7026         s << "\tpNext = " << value.pNext << '\n';
7027         s << "\tpresentMask = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.presentMask), DE_ARRAY_END(value.presentMask)) << '\n';
7028         s << "\tmodes = " << getDeviceGroupPresentModeFlagsKHRStr(value.modes) << '\n';
7029         s << '}';
7030         return s;
7031 }
7032
7033 std::ostream& operator<< (std::ostream& s, const VkDeviceGroupPresentInfoKHR& value)
7034 {
7035         s << "VkDeviceGroupPresentInfoKHR = {\n";
7036         s << "\tsType = " << value.sType << '\n';
7037         s << "\tpNext = " << value.pNext << '\n';
7038         s << "\tswapchainCount = " << value.swapchainCount << '\n';
7039         s << "\tpDeviceMasks = " << value.pDeviceMasks << '\n';
7040         s << "\tmode = " << value.mode << '\n';
7041         s << '}';
7042         return s;
7043 }
7044
7045 std::ostream& operator<< (std::ostream& s, const VkDeviceGroupSwapchainCreateInfoKHR& value)
7046 {
7047         s << "VkDeviceGroupSwapchainCreateInfoKHR = {\n";
7048         s << "\tsType = " << value.sType << '\n';
7049         s << "\tpNext = " << value.pNext << '\n';
7050         s << "\tmodes = " << getDeviceGroupPresentModeFlagsKHRStr(value.modes) << '\n';
7051         s << '}';
7052         return s;
7053 }
7054
7055 std::ostream& operator<< (std::ostream& s, const VkDisplayModeParametersKHR& value)
7056 {
7057         s << "VkDisplayModeParametersKHR = {\n";
7058         s << "\tvisibleRegion = " << value.visibleRegion << '\n';
7059         s << "\trefreshRate = " << value.refreshRate << '\n';
7060         s << '}';
7061         return s;
7062 }
7063
7064 std::ostream& operator<< (std::ostream& s, const VkDisplayModeCreateInfoKHR& value)
7065 {
7066         s << "VkDisplayModeCreateInfoKHR = {\n";
7067         s << "\tsType = " << value.sType << '\n';
7068         s << "\tpNext = " << value.pNext << '\n';
7069         s << "\tflags = " << getDisplayModeCreateFlagsKHRStr(value.flags) << '\n';
7070         s << "\tparameters = " << value.parameters << '\n';
7071         s << '}';
7072         return s;
7073 }
7074
7075 std::ostream& operator<< (std::ostream& s, const VkDisplayModePropertiesKHR& value)
7076 {
7077         s << "VkDisplayModePropertiesKHR = {\n";
7078         s << "\tdisplayMode = " << value.displayMode << '\n';
7079         s << "\tparameters = " << value.parameters << '\n';
7080         s << '}';
7081         return s;
7082 }
7083
7084 std::ostream& operator<< (std::ostream& s, const VkDisplayPlaneCapabilitiesKHR& value)
7085 {
7086         s << "VkDisplayPlaneCapabilitiesKHR = {\n";
7087         s << "\tsupportedAlpha = " << getDisplayPlaneAlphaFlagsKHRStr(value.supportedAlpha) << '\n';
7088         s << "\tminSrcPosition = " << value.minSrcPosition << '\n';
7089         s << "\tmaxSrcPosition = " << value.maxSrcPosition << '\n';
7090         s << "\tminSrcExtent = " << value.minSrcExtent << '\n';
7091         s << "\tmaxSrcExtent = " << value.maxSrcExtent << '\n';
7092         s << "\tminDstPosition = " << value.minDstPosition << '\n';
7093         s << "\tmaxDstPosition = " << value.maxDstPosition << '\n';
7094         s << "\tminDstExtent = " << value.minDstExtent << '\n';
7095         s << "\tmaxDstExtent = " << value.maxDstExtent << '\n';
7096         s << '}';
7097         return s;
7098 }
7099
7100 std::ostream& operator<< (std::ostream& s, const VkDisplayPlanePropertiesKHR& value)
7101 {
7102         s << "VkDisplayPlanePropertiesKHR = {\n";
7103         s << "\tcurrentDisplay = " << value.currentDisplay << '\n';
7104         s << "\tcurrentStackIndex = " << value.currentStackIndex << '\n';
7105         s << '}';
7106         return s;
7107 }
7108
7109 std::ostream& operator<< (std::ostream& s, const VkDisplayPropertiesKHR& value)
7110 {
7111         s << "VkDisplayPropertiesKHR = {\n";
7112         s << "\tdisplay = " << value.display << '\n';
7113         s << "\tdisplayName = " << getCharPtrStr(value.displayName) << '\n';
7114         s << "\tphysicalDimensions = " << value.physicalDimensions << '\n';
7115         s << "\tphysicalResolution = " << value.physicalResolution << '\n';
7116         s << "\tsupportedTransforms = " << getSurfaceTransformFlagsKHRStr(value.supportedTransforms) << '\n';
7117         s << "\tplaneReorderPossible = " << value.planeReorderPossible << '\n';
7118         s << "\tpersistentContent = " << value.persistentContent << '\n';
7119         s << '}';
7120         return s;
7121 }
7122
7123 std::ostream& operator<< (std::ostream& s, const VkDisplaySurfaceCreateInfoKHR& value)
7124 {
7125         s << "VkDisplaySurfaceCreateInfoKHR = {\n";
7126         s << "\tsType = " << value.sType << '\n';
7127         s << "\tpNext = " << value.pNext << '\n';
7128         s << "\tflags = " << getDisplaySurfaceCreateFlagsKHRStr(value.flags) << '\n';
7129         s << "\tdisplayMode = " << value.displayMode << '\n';
7130         s << "\tplaneIndex = " << value.planeIndex << '\n';
7131         s << "\tplaneStackIndex = " << value.planeStackIndex << '\n';
7132         s << "\ttransform = " << value.transform << '\n';
7133         s << "\tglobalAlpha = " << value.globalAlpha << '\n';
7134         s << "\talphaMode = " << value.alphaMode << '\n';
7135         s << "\timageExtent = " << value.imageExtent << '\n';
7136         s << '}';
7137         return s;
7138 }
7139
7140 std::ostream& operator<< (std::ostream& s, const VkDisplayPresentInfoKHR& value)
7141 {
7142         s << "VkDisplayPresentInfoKHR = {\n";
7143         s << "\tsType = " << value.sType << '\n';
7144         s << "\tpNext = " << value.pNext << '\n';
7145         s << "\tsrcRect = " << value.srcRect << '\n';
7146         s << "\tdstRect = " << value.dstRect << '\n';
7147         s << "\tpersistent = " << value.persistent << '\n';
7148         s << '}';
7149         return s;
7150 }
7151
7152 std::ostream& operator<< (std::ostream& s, const VkImportMemoryFdInfoKHR& value)
7153 {
7154         s << "VkImportMemoryFdInfoKHR = {\n";
7155         s << "\tsType = " << value.sType << '\n';
7156         s << "\tpNext = " << value.pNext << '\n';
7157         s << "\thandleType = " << value.handleType << '\n';
7158         s << "\tfd = " << value.fd << '\n';
7159         s << '}';
7160         return s;
7161 }
7162
7163 std::ostream& operator<< (std::ostream& s, const VkMemoryFdPropertiesKHR& value)
7164 {
7165         s << "VkMemoryFdPropertiesKHR = {\n";
7166         s << "\tsType = " << value.sType << '\n';
7167         s << "\tpNext = " << value.pNext << '\n';
7168         s << "\tmemoryTypeBits = " << value.memoryTypeBits << '\n';
7169         s << '}';
7170         return s;
7171 }
7172
7173 std::ostream& operator<< (std::ostream& s, const VkMemoryGetFdInfoKHR& value)
7174 {
7175         s << "VkMemoryGetFdInfoKHR = {\n";
7176         s << "\tsType = " << value.sType << '\n';
7177         s << "\tpNext = " << value.pNext << '\n';
7178         s << "\tmemory = " << value.memory << '\n';
7179         s << "\thandleType = " << value.handleType << '\n';
7180         s << '}';
7181         return s;
7182 }
7183
7184 std::ostream& operator<< (std::ostream& s, const VkImportSemaphoreFdInfoKHR& value)
7185 {
7186         s << "VkImportSemaphoreFdInfoKHR = {\n";
7187         s << "\tsType = " << value.sType << '\n';
7188         s << "\tpNext = " << value.pNext << '\n';
7189         s << "\tsemaphore = " << value.semaphore << '\n';
7190         s << "\tflags = " << getSemaphoreImportFlagsStr(value.flags) << '\n';
7191         s << "\thandleType = " << value.handleType << '\n';
7192         s << "\tfd = " << value.fd << '\n';
7193         s << '}';
7194         return s;
7195 }
7196
7197 std::ostream& operator<< (std::ostream& s, const VkSemaphoreGetFdInfoKHR& value)
7198 {
7199         s << "VkSemaphoreGetFdInfoKHR = {\n";
7200         s << "\tsType = " << value.sType << '\n';
7201         s << "\tpNext = " << value.pNext << '\n';
7202         s << "\tsemaphore = " << value.semaphore << '\n';
7203         s << "\thandleType = " << value.handleType << '\n';
7204         s << '}';
7205         return s;
7206 }
7207
7208 std::ostream& operator<< (std::ostream& s, const VkPhysicalDevicePushDescriptorPropertiesKHR& value)
7209 {
7210         s << "VkPhysicalDevicePushDescriptorPropertiesKHR = {\n";
7211         s << "\tsType = " << value.sType << '\n';
7212         s << "\tpNext = " << value.pNext << '\n';
7213         s << "\tmaxPushDescriptors = " << value.maxPushDescriptors << '\n';
7214         s << '}';
7215         return s;
7216 }
7217
7218 std::ostream& operator<< (std::ostream& s, const VkRectLayerKHR& value)
7219 {
7220         s << "VkRectLayerKHR = {\n";
7221         s << "\toffset = " << value.offset << '\n';
7222         s << "\textent = " << value.extent << '\n';
7223         s << "\tlayer = " << value.layer << '\n';
7224         s << '}';
7225         return s;
7226 }
7227
7228 std::ostream& operator<< (std::ostream& s, const VkPresentRegionKHR& value)
7229 {
7230         s << "VkPresentRegionKHR = {\n";
7231         s << "\trectangleCount = " << value.rectangleCount << '\n';
7232         s << "\tpRectangles = " << value.pRectangles << '\n';
7233         s << '}';
7234         return s;
7235 }
7236
7237 std::ostream& operator<< (std::ostream& s, const VkPresentRegionsKHR& value)
7238 {
7239         s << "VkPresentRegionsKHR = {\n";
7240         s << "\tsType = " << value.sType << '\n';
7241         s << "\tpNext = " << value.pNext << '\n';
7242         s << "\tswapchainCount = " << value.swapchainCount << '\n';
7243         s << "\tpRegions = " << value.pRegions << '\n';
7244         s << '}';
7245         return s;
7246 }
7247
7248 std::ostream& operator<< (std::ostream& s, const VkSharedPresentSurfaceCapabilitiesKHR& value)
7249 {
7250         s << "VkSharedPresentSurfaceCapabilitiesKHR = {\n";
7251         s << "\tsType = " << value.sType << '\n';
7252         s << "\tpNext = " << value.pNext << '\n';
7253         s << "\tsharedPresentSupportedUsageFlags = " << getImageUsageFlagsStr(value.sharedPresentSupportedUsageFlags) << '\n';
7254         s << '}';
7255         return s;
7256 }
7257
7258 std::ostream& operator<< (std::ostream& s, const VkImportFenceFdInfoKHR& value)
7259 {
7260         s << "VkImportFenceFdInfoKHR = {\n";
7261         s << "\tsType = " << value.sType << '\n';
7262         s << "\tpNext = " << value.pNext << '\n';
7263         s << "\tfence = " << value.fence << '\n';
7264         s << "\tflags = " << getFenceImportFlagsStr(value.flags) << '\n';
7265         s << "\thandleType = " << value.handleType << '\n';
7266         s << "\tfd = " << value.fd << '\n';
7267         s << '}';
7268         return s;
7269 }
7270
7271 std::ostream& operator<< (std::ostream& s, const VkFenceGetFdInfoKHR& value)
7272 {
7273         s << "VkFenceGetFdInfoKHR = {\n";
7274         s << "\tsType = " << value.sType << '\n';
7275         s << "\tpNext = " << value.pNext << '\n';
7276         s << "\tfence = " << value.fence << '\n';
7277         s << "\thandleType = " << value.handleType << '\n';
7278         s << '}';
7279         return s;
7280 }
7281
7282 std::ostream& operator<< (std::ostream& s, const VkPhysicalDevicePerformanceQueryFeaturesKHR& value)
7283 {
7284         s << "VkPhysicalDevicePerformanceQueryFeaturesKHR = {\n";
7285         s << "\tsType = " << value.sType << '\n';
7286         s << "\tpNext = " << value.pNext << '\n';
7287         s << "\tperformanceCounterQueryPools = " << value.performanceCounterQueryPools << '\n';
7288         s << "\tperformanceCounterMultipleQueryPools = " << value.performanceCounterMultipleQueryPools << '\n';
7289         s << '}';
7290         return s;
7291 }
7292
7293 std::ostream& operator<< (std::ostream& s, const VkPhysicalDevicePerformanceQueryPropertiesKHR& value)
7294 {
7295         s << "VkPhysicalDevicePerformanceQueryPropertiesKHR = {\n";
7296         s << "\tsType = " << value.sType << '\n';
7297         s << "\tpNext = " << value.pNext << '\n';
7298         s << "\tallowCommandBufferQueryCopies = " << value.allowCommandBufferQueryCopies << '\n';
7299         s << '}';
7300         return s;
7301 }
7302
7303 std::ostream& operator<< (std::ostream& s, const VkPerformanceCounterKHR& value)
7304 {
7305         s << "VkPerformanceCounterKHR = {\n";
7306         s << "\tsType = " << value.sType << '\n';
7307         s << "\tpNext = " << value.pNext << '\n';
7308         s << "\tunit = " << value.unit << '\n';
7309         s << "\tscope = " << value.scope << '\n';
7310         s << "\tstorage = " << value.storage << '\n';
7311         s << "\tuuid = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<deUint8>(DE_ARRAY_BEGIN(value.uuid)), tcu::Format::HexIterator<deUint8>(DE_ARRAY_END(value.uuid))) << '\n';
7312         s << '}';
7313         return s;
7314 }
7315
7316 std::ostream& operator<< (std::ostream& s, const VkPerformanceCounterDescriptionKHR& value)
7317 {
7318         s << "VkPerformanceCounterDescriptionKHR = {\n";
7319         s << "\tsType = " << value.sType << '\n';
7320         s << "\tpNext = " << value.pNext << '\n';
7321         s << "\tflags = " << getPerformanceCounterDescriptionFlagsKHRStr(value.flags) << '\n';
7322         s << "\tname = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<char>(DE_ARRAY_BEGIN(value.name)), tcu::Format::HexIterator<char>(DE_ARRAY_END(value.name))) << '\n';
7323         s << "\tcategory = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<char>(DE_ARRAY_BEGIN(value.category)), tcu::Format::HexIterator<char>(DE_ARRAY_END(value.category))) << '\n';
7324         s << "\tdescription = " << (const char*)value.description << '\n';
7325         s << '}';
7326         return s;
7327 }
7328
7329 std::ostream& operator<< (std::ostream& s, const VkQueryPoolPerformanceCreateInfoKHR& value)
7330 {
7331         s << "VkQueryPoolPerformanceCreateInfoKHR = {\n";
7332         s << "\tsType = " << value.sType << '\n';
7333         s << "\tpNext = " << value.pNext << '\n';
7334         s << "\tqueueFamilyIndex = " << value.queueFamilyIndex << '\n';
7335         s << "\tcounterIndexCount = " << value.counterIndexCount << '\n';
7336         s << "\tpCounterIndices = " << value.pCounterIndices << '\n';
7337         s << '}';
7338         return s;
7339 }
7340
7341 std::ostream& operator<< (std::ostream& s, const VkPerformanceCounterResultKHR& value)
7342 {
7343         s << "VkPerformanceCounterResultKHR = {\n";
7344         s << "\tint32 = " << value.int32 << '\n';
7345         s << "\tint64 = " << value.int64 << '\n';
7346         s << "\tuint32 = " << value.uint32 << '\n';
7347         s << "\tuint64 = " << value.uint64 << '\n';
7348         s << "\tfloat32 = " << value.float32 << '\n';
7349         s << "\tfloat64 = " << value.float64 << '\n';
7350         s << '}';
7351         return s;
7352 }
7353
7354 std::ostream& operator<< (std::ostream& s, const VkAcquireProfilingLockInfoKHR& value)
7355 {
7356         s << "VkAcquireProfilingLockInfoKHR = {\n";
7357         s << "\tsType = " << value.sType << '\n';
7358         s << "\tpNext = " << value.pNext << '\n';
7359         s << "\tflags = " << getAcquireProfilingLockFlagsKHRStr(value.flags) << '\n';
7360         s << "\ttimeout = " << value.timeout << '\n';
7361         s << '}';
7362         return s;
7363 }
7364
7365 std::ostream& operator<< (std::ostream& s, const VkPerformanceQuerySubmitInfoKHR& value)
7366 {
7367         s << "VkPerformanceQuerySubmitInfoKHR = {\n";
7368         s << "\tsType = " << value.sType << '\n';
7369         s << "\tpNext = " << value.pNext << '\n';
7370         s << "\tcounterPassIndex = " << value.counterPassIndex << '\n';
7371         s << '}';
7372         return s;
7373 }
7374
7375 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceSurfaceInfo2KHR& value)
7376 {
7377         s << "VkPhysicalDeviceSurfaceInfo2KHR = {\n";
7378         s << "\tsType = " << value.sType << '\n';
7379         s << "\tpNext = " << value.pNext << '\n';
7380         s << "\tsurface = " << value.surface << '\n';
7381         s << '}';
7382         return s;
7383 }
7384
7385 std::ostream& operator<< (std::ostream& s, const VkSurfaceCapabilities2KHR& value)
7386 {
7387         s << "VkSurfaceCapabilities2KHR = {\n";
7388         s << "\tsType = " << value.sType << '\n';
7389         s << "\tpNext = " << value.pNext << '\n';
7390         s << "\tsurfaceCapabilities = " << value.surfaceCapabilities << '\n';
7391         s << '}';
7392         return s;
7393 }
7394
7395 std::ostream& operator<< (std::ostream& s, const VkSurfaceFormat2KHR& value)
7396 {
7397         s << "VkSurfaceFormat2KHR = {\n";
7398         s << "\tsType = " << value.sType << '\n';
7399         s << "\tpNext = " << value.pNext << '\n';
7400         s << "\tsurfaceFormat = " << value.surfaceFormat << '\n';
7401         s << '}';
7402         return s;
7403 }
7404
7405 std::ostream& operator<< (std::ostream& s, const VkDisplayProperties2KHR& value)
7406 {
7407         s << "VkDisplayProperties2KHR = {\n";
7408         s << "\tsType = " << value.sType << '\n';
7409         s << "\tpNext = " << value.pNext << '\n';
7410         s << "\tdisplayProperties = " << value.displayProperties << '\n';
7411         s << '}';
7412         return s;
7413 }
7414
7415 std::ostream& operator<< (std::ostream& s, const VkDisplayPlaneProperties2KHR& value)
7416 {
7417         s << "VkDisplayPlaneProperties2KHR = {\n";
7418         s << "\tsType = " << value.sType << '\n';
7419         s << "\tpNext = " << value.pNext << '\n';
7420         s << "\tdisplayPlaneProperties = " << value.displayPlaneProperties << '\n';
7421         s << '}';
7422         return s;
7423 }
7424
7425 std::ostream& operator<< (std::ostream& s, const VkDisplayModeProperties2KHR& value)
7426 {
7427         s << "VkDisplayModeProperties2KHR = {\n";
7428         s << "\tsType = " << value.sType << '\n';
7429         s << "\tpNext = " << value.pNext << '\n';
7430         s << "\tdisplayModeProperties = " << value.displayModeProperties << '\n';
7431         s << '}';
7432         return s;
7433 }
7434
7435 std::ostream& operator<< (std::ostream& s, const VkDisplayPlaneInfo2KHR& value)
7436 {
7437         s << "VkDisplayPlaneInfo2KHR = {\n";
7438         s << "\tsType = " << value.sType << '\n';
7439         s << "\tpNext = " << value.pNext << '\n';
7440         s << "\tmode = " << value.mode << '\n';
7441         s << "\tplaneIndex = " << value.planeIndex << '\n';
7442         s << '}';
7443         return s;
7444 }
7445
7446 std::ostream& operator<< (std::ostream& s, const VkDisplayPlaneCapabilities2KHR& value)
7447 {
7448         s << "VkDisplayPlaneCapabilities2KHR = {\n";
7449         s << "\tsType = " << value.sType << '\n';
7450         s << "\tpNext = " << value.pNext << '\n';
7451         s << "\tcapabilities = " << value.capabilities << '\n';
7452         s << '}';
7453         return s;
7454 }
7455
7456 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceShaderClockFeaturesKHR& value)
7457 {
7458         s << "VkPhysicalDeviceShaderClockFeaturesKHR = {\n";
7459         s << "\tsType = " << value.sType << '\n';
7460         s << "\tpNext = " << value.pNext << '\n';
7461         s << "\tshaderSubgroupClock = " << value.shaderSubgroupClock << '\n';
7462         s << "\tshaderDeviceClock = " << value.shaderDeviceClock << '\n';
7463         s << '}';
7464         return s;
7465 }
7466
7467 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR& value)
7468 {
7469         s << "VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR = {\n";
7470         s << "\tsType = " << value.sType << '\n';
7471         s << "\tpNext = " << value.pNext << '\n';
7472         s << "\tshaderTerminateInvocation = " << value.shaderTerminateInvocation << '\n';
7473         s << '}';
7474         return s;
7475 }
7476
7477 std::ostream& operator<< (std::ostream& s, const VkFragmentShadingRateAttachmentInfoKHR& value)
7478 {
7479         s << "VkFragmentShadingRateAttachmentInfoKHR = {\n";
7480         s << "\tsType = " << value.sType << '\n';
7481         s << "\tpNext = " << value.pNext << '\n';
7482         s << "\tpFragmentShadingRateAttachment = " << value.pFragmentShadingRateAttachment << '\n';
7483         s << "\tshadingRateAttachmentTexelSize = " << value.shadingRateAttachmentTexelSize << '\n';
7484         s << '}';
7485         return s;
7486 }
7487
7488 std::ostream& operator<< (std::ostream& s, const VkPipelineFragmentShadingRateStateCreateInfoKHR& value)
7489 {
7490         s << "VkPipelineFragmentShadingRateStateCreateInfoKHR = {\n";
7491         s << "\tsType = " << value.sType << '\n';
7492         s << "\tpNext = " << value.pNext << '\n';
7493         s << "\tfragmentSize = " << value.fragmentSize << '\n';
7494         s << "\tcombinerOps = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.combinerOps), DE_ARRAY_END(value.combinerOps)) << '\n';
7495         s << '}';
7496         return s;
7497 }
7498
7499 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceFragmentShadingRateFeaturesKHR& value)
7500 {
7501         s << "VkPhysicalDeviceFragmentShadingRateFeaturesKHR = {\n";
7502         s << "\tsType = " << value.sType << '\n';
7503         s << "\tpNext = " << value.pNext << '\n';
7504         s << "\tpipelineFragmentShadingRate = " << value.pipelineFragmentShadingRate << '\n';
7505         s << "\tprimitiveFragmentShadingRate = " << value.primitiveFragmentShadingRate << '\n';
7506         s << "\tattachmentFragmentShadingRate = " << value.attachmentFragmentShadingRate << '\n';
7507         s << '}';
7508         return s;
7509 }
7510
7511 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceFragmentShadingRatePropertiesKHR& value)
7512 {
7513         s << "VkPhysicalDeviceFragmentShadingRatePropertiesKHR = {\n";
7514         s << "\tsType = " << value.sType << '\n';
7515         s << "\tpNext = " << value.pNext << '\n';
7516         s << "\tminFragmentShadingRateAttachmentTexelSize = " << value.minFragmentShadingRateAttachmentTexelSize << '\n';
7517         s << "\tmaxFragmentShadingRateAttachmentTexelSize = " << value.maxFragmentShadingRateAttachmentTexelSize << '\n';
7518         s << "\tmaxFragmentShadingRateAttachmentTexelSizeAspectRatio = " << value.maxFragmentShadingRateAttachmentTexelSizeAspectRatio << '\n';
7519         s << "\tprimitiveFragmentShadingRateWithMultipleViewports = " << value.primitiveFragmentShadingRateWithMultipleViewports << '\n';
7520         s << "\tlayeredShadingRateAttachments = " << value.layeredShadingRateAttachments << '\n';
7521         s << "\tfragmentShadingRateNonTrivialCombinerOps = " << value.fragmentShadingRateNonTrivialCombinerOps << '\n';
7522         s << "\tmaxFragmentSize = " << value.maxFragmentSize << '\n';
7523         s << "\tmaxFragmentSizeAspectRatio = " << value.maxFragmentSizeAspectRatio << '\n';
7524         s << "\tmaxFragmentShadingRateCoverageSamples = " << value.maxFragmentShadingRateCoverageSamples << '\n';
7525         s << "\tmaxFragmentShadingRateRasterizationSamples = " << value.maxFragmentShadingRateRasterizationSamples << '\n';
7526         s << "\tfragmentShadingRateWithShaderDepthStencilWrites = " << value.fragmentShadingRateWithShaderDepthStencilWrites << '\n';
7527         s << "\tfragmentShadingRateWithSampleMask = " << value.fragmentShadingRateWithSampleMask << '\n';
7528         s << "\tfragmentShadingRateWithShaderSampleMask = " << value.fragmentShadingRateWithShaderSampleMask << '\n';
7529         s << "\tfragmentShadingRateWithConservativeRasterization = " << value.fragmentShadingRateWithConservativeRasterization << '\n';
7530         s << "\tfragmentShadingRateWithFragmentShaderInterlock = " << value.fragmentShadingRateWithFragmentShaderInterlock << '\n';
7531         s << "\tfragmentShadingRateWithCustomSampleLocations = " << value.fragmentShadingRateWithCustomSampleLocations << '\n';
7532         s << "\tfragmentShadingRateStrictMultiplyCombiner = " << value.fragmentShadingRateStrictMultiplyCombiner << '\n';
7533         s << '}';
7534         return s;
7535 }
7536
7537 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceFragmentShadingRateKHR& value)
7538 {
7539         s << "VkPhysicalDeviceFragmentShadingRateKHR = {\n";
7540         s << "\tsType = " << value.sType << '\n';
7541         s << "\tpNext = " << value.pNext << '\n';
7542         s << "\tsampleCounts = " << getSampleCountFlagsStr(value.sampleCounts) << '\n';
7543         s << "\tfragmentSize = " << value.fragmentSize << '\n';
7544         s << '}';
7545         return s;
7546 }
7547
7548 std::ostream& operator<< (std::ostream& s, const VkSurfaceProtectedCapabilitiesKHR& value)
7549 {
7550         s << "VkSurfaceProtectedCapabilitiesKHR = {\n";
7551         s << "\tsType = " << value.sType << '\n';
7552         s << "\tpNext = " << value.pNext << '\n';
7553         s << "\tsupportsProtected = " << value.supportsProtected << '\n';
7554         s << '}';
7555         return s;
7556 }
7557
7558 std::ostream& operator<< (std::ostream& s, const VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR& value)
7559 {
7560         s << "VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR = {\n";
7561         s << "\tsType = " << value.sType << '\n';
7562         s << "\tpNext = " << value.pNext << '\n';
7563         s << "\tpipelineExecutableInfo = " << value.pipelineExecutableInfo << '\n';
7564         s << '}';
7565         return s;
7566 }
7567
7568 std::ostream& operator<< (std::ostream& s, const VkPipelineInfoKHR& value)
7569 {
7570         s << "VkPipelineInfoKHR = {\n";
7571         s << "\tsType = " << value.sType << '\n';
7572         s << "\tpNext = " << value.pNext << '\n';
7573         s << "\tpipeline = " << value.pipeline << '\n';
7574         s << '}';
7575         return s;
7576 }
7577
7578 std::ostream& operator<< (std::ostream& s, const VkPipelineExecutablePropertiesKHR& value)
7579 {
7580         s << "VkPipelineExecutablePropertiesKHR = {\n";
7581         s << "\tsType = " << value.sType << '\n';
7582         s << "\tpNext = " << value.pNext << '\n';
7583         s << "\tstages = " << getShaderStageFlagsStr(value.stages) << '\n';
7584         s << "\tname = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<char>(DE_ARRAY_BEGIN(value.name)), tcu::Format::HexIterator<char>(DE_ARRAY_END(value.name))) << '\n';
7585         s << "\tdescription = " << (const char*)value.description << '\n';
7586         s << "\tsubgroupSize = " << value.subgroupSize << '\n';
7587         s << '}';
7588         return s;
7589 }
7590
7591 std::ostream& operator<< (std::ostream& s, const VkPipelineExecutableInfoKHR& value)
7592 {
7593         s << "VkPipelineExecutableInfoKHR = {\n";
7594         s << "\tsType = " << value.sType << '\n';
7595         s << "\tpNext = " << value.pNext << '\n';
7596         s << "\tpipeline = " << value.pipeline << '\n';
7597         s << "\texecutableIndex = " << value.executableIndex << '\n';
7598         s << '}';
7599         return s;
7600 }
7601
7602 std::ostream& operator<< (std::ostream& s, const VkPipelineExecutableStatisticValueKHR& value)
7603 {
7604         s << "VkPipelineExecutableStatisticValueKHR = {\n";
7605         s << "\tb32 = " << value.b32 << '\n';
7606         s << "\ti64 = " << value.i64 << '\n';
7607         s << "\tu64 = " << value.u64 << '\n';
7608         s << "\tf64 = " << value.f64 << '\n';
7609         s << '}';
7610         return s;
7611 }
7612
7613 std::ostream& operator<< (std::ostream& s, const VkPipelineExecutableStatisticKHR& value)
7614 {
7615         s << "VkPipelineExecutableStatisticKHR = {\n";
7616         s << "\tsType = " << value.sType << '\n';
7617         s << "\tpNext = " << value.pNext << '\n';
7618         s << "\tname = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<char>(DE_ARRAY_BEGIN(value.name)), tcu::Format::HexIterator<char>(DE_ARRAY_END(value.name))) << '\n';
7619         s << "\tdescription = " << (const char*)value.description << '\n';
7620         s << "\tformat = " << value.format << '\n';
7621         s << "\tvalue = " << value.value << '\n';
7622         s << '}';
7623         return s;
7624 }
7625
7626 std::ostream& operator<< (std::ostream& s, const VkPipelineExecutableInternalRepresentationKHR& value)
7627 {
7628         s << "VkPipelineExecutableInternalRepresentationKHR = {\n";
7629         s << "\tsType = " << value.sType << '\n';
7630         s << "\tpNext = " << value.pNext << '\n';
7631         s << "\tname = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<char>(DE_ARRAY_BEGIN(value.name)), tcu::Format::HexIterator<char>(DE_ARRAY_END(value.name))) << '\n';
7632         s << "\tdescription = " << (const char*)value.description << '\n';
7633         s << "\tisText = " << value.isText << '\n';
7634         s << "\tdataSize = " << value.dataSize << '\n';
7635         s << "\tpData = " << value.pData << '\n';
7636         s << '}';
7637         return s;
7638 }
7639
7640 std::ostream& operator<< (std::ostream& s, const VkPipelineLibraryCreateInfoKHR& value)
7641 {
7642         s << "VkPipelineLibraryCreateInfoKHR = {\n";
7643         s << "\tsType = " << value.sType << '\n';
7644         s << "\tpNext = " << value.pNext << '\n';
7645         s << "\tlibraryCount = " << value.libraryCount << '\n';
7646         s << "\tpLibraries = " << value.pLibraries << '\n';
7647         s << '}';
7648         return s;
7649 }
7650
7651 std::ostream& operator<< (std::ostream& s, const VkMemoryBarrier2KHR& value)
7652 {
7653         s << "VkMemoryBarrier2KHR = {\n";
7654         s << "\tsType = " << value.sType << '\n';
7655         s << "\tpNext = " << value.pNext << '\n';
7656         s << "\tsrcStageMask = " << value.srcStageMask << '\n';
7657         s << "\tsrcAccessMask = " << value.srcAccessMask << '\n';
7658         s << "\tdstStageMask = " << value.dstStageMask << '\n';
7659         s << "\tdstAccessMask = " << value.dstAccessMask << '\n';
7660         s << '}';
7661         return s;
7662 }
7663
7664 std::ostream& operator<< (std::ostream& s, const VkBufferMemoryBarrier2KHR& value)
7665 {
7666         s << "VkBufferMemoryBarrier2KHR = {\n";
7667         s << "\tsType = " << value.sType << '\n';
7668         s << "\tpNext = " << value.pNext << '\n';
7669         s << "\tsrcStageMask = " << value.srcStageMask << '\n';
7670         s << "\tsrcAccessMask = " << value.srcAccessMask << '\n';
7671         s << "\tdstStageMask = " << value.dstStageMask << '\n';
7672         s << "\tdstAccessMask = " << value.dstAccessMask << '\n';
7673         s << "\tsrcQueueFamilyIndex = " << value.srcQueueFamilyIndex << '\n';
7674         s << "\tdstQueueFamilyIndex = " << value.dstQueueFamilyIndex << '\n';
7675         s << "\tbuffer = " << value.buffer << '\n';
7676         s << "\toffset = " << value.offset << '\n';
7677         s << "\tsize = " << value.size << '\n';
7678         s << '}';
7679         return s;
7680 }
7681
7682 std::ostream& operator<< (std::ostream& s, const VkImageMemoryBarrier2KHR& value)
7683 {
7684         s << "VkImageMemoryBarrier2KHR = {\n";
7685         s << "\tsType = " << value.sType << '\n';
7686         s << "\tpNext = " << value.pNext << '\n';
7687         s << "\tsrcStageMask = " << value.srcStageMask << '\n';
7688         s << "\tsrcAccessMask = " << value.srcAccessMask << '\n';
7689         s << "\tdstStageMask = " << value.dstStageMask << '\n';
7690         s << "\tdstAccessMask = " << value.dstAccessMask << '\n';
7691         s << "\toldLayout = " << value.oldLayout << '\n';
7692         s << "\tnewLayout = " << value.newLayout << '\n';
7693         s << "\tsrcQueueFamilyIndex = " << value.srcQueueFamilyIndex << '\n';
7694         s << "\tdstQueueFamilyIndex = " << value.dstQueueFamilyIndex << '\n';
7695         s << "\timage = " << value.image << '\n';
7696         s << "\tsubresourceRange = " << value.subresourceRange << '\n';
7697         s << '}';
7698         return s;
7699 }
7700
7701 std::ostream& operator<< (std::ostream& s, const VkDependencyInfoKHR& value)
7702 {
7703         s << "VkDependencyInfoKHR = {\n";
7704         s << "\tsType = " << value.sType << '\n';
7705         s << "\tpNext = " << value.pNext << '\n';
7706         s << "\tdependencyFlags = " << getDependencyFlagsStr(value.dependencyFlags) << '\n';
7707         s << "\tmemoryBarrierCount = " << value.memoryBarrierCount << '\n';
7708         s << "\tpMemoryBarriers = " << value.pMemoryBarriers << '\n';
7709         s << "\tbufferMemoryBarrierCount = " << value.bufferMemoryBarrierCount << '\n';
7710         s << "\tpBufferMemoryBarriers = " << value.pBufferMemoryBarriers << '\n';
7711         s << "\timageMemoryBarrierCount = " << value.imageMemoryBarrierCount << '\n';
7712         s << "\tpImageMemoryBarriers = " << value.pImageMemoryBarriers << '\n';
7713         s << '}';
7714         return s;
7715 }
7716
7717 std::ostream& operator<< (std::ostream& s, const VkSemaphoreSubmitInfoKHR& value)
7718 {
7719         s << "VkSemaphoreSubmitInfoKHR = {\n";
7720         s << "\tsType = " << value.sType << '\n';
7721         s << "\tpNext = " << value.pNext << '\n';
7722         s << "\tsemaphore = " << value.semaphore << '\n';
7723         s << "\tvalue = " << value.value << '\n';
7724         s << "\tstageMask = " << value.stageMask << '\n';
7725         s << "\tdeviceIndex = " << value.deviceIndex << '\n';
7726         s << '}';
7727         return s;
7728 }
7729
7730 std::ostream& operator<< (std::ostream& s, const VkCommandBufferSubmitInfoKHR& value)
7731 {
7732         s << "VkCommandBufferSubmitInfoKHR = {\n";
7733         s << "\tsType = " << value.sType << '\n';
7734         s << "\tpNext = " << value.pNext << '\n';
7735         s << "\tcommandBuffer = " << value.commandBuffer << '\n';
7736         s << "\tdeviceMask = " << value.deviceMask << '\n';
7737         s << '}';
7738         return s;
7739 }
7740
7741 std::ostream& operator<< (std::ostream& s, const VkSubmitInfo2KHR& value)
7742 {
7743         s << "VkSubmitInfo2KHR = {\n";
7744         s << "\tsType = " << value.sType << '\n';
7745         s << "\tpNext = " << value.pNext << '\n';
7746         s << "\tflags = " << getSubmitFlagsKHRStr(value.flags) << '\n';
7747         s << "\twaitSemaphoreInfoCount = " << value.waitSemaphoreInfoCount << '\n';
7748         s << "\tpWaitSemaphoreInfos = " << value.pWaitSemaphoreInfos << '\n';
7749         s << "\tcommandBufferInfoCount = " << value.commandBufferInfoCount << '\n';
7750         s << "\tpCommandBufferInfos = " << value.pCommandBufferInfos << '\n';
7751         s << "\tsignalSemaphoreInfoCount = " << value.signalSemaphoreInfoCount << '\n';
7752         s << "\tpSignalSemaphoreInfos = " << value.pSignalSemaphoreInfos << '\n';
7753         s << '}';
7754         return s;
7755 }
7756
7757 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceSynchronization2FeaturesKHR& value)
7758 {
7759         s << "VkPhysicalDeviceSynchronization2FeaturesKHR = {\n";
7760         s << "\tsType = " << value.sType << '\n';
7761         s << "\tpNext = " << value.pNext << '\n';
7762         s << "\tsynchronization2 = " << value.synchronization2 << '\n';
7763         s << '}';
7764         return s;
7765 }
7766
7767 std::ostream& operator<< (std::ostream& s, const VkQueueFamilyCheckpointProperties2NV& value)
7768 {
7769         s << "VkQueueFamilyCheckpointProperties2NV = {\n";
7770         s << "\tsType = " << value.sType << '\n';
7771         s << "\tpNext = " << value.pNext << '\n';
7772         s << "\tcheckpointExecutionStageMask = " << value.checkpointExecutionStageMask << '\n';
7773         s << '}';
7774         return s;
7775 }
7776
7777 std::ostream& operator<< (std::ostream& s, const VkCheckpointData2NV& value)
7778 {
7779         s << "VkCheckpointData2NV = {\n";
7780         s << "\tsType = " << value.sType << '\n';
7781         s << "\tpNext = " << value.pNext << '\n';
7782         s << "\tstage = " << value.stage << '\n';
7783         s << "\tpCheckpointMarker = " << value.pCheckpointMarker << '\n';
7784         s << '}';
7785         return s;
7786 }
7787
7788 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR& value)
7789 {
7790         s << "VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR = {\n";
7791         s << "\tsType = " << value.sType << '\n';
7792         s << "\tpNext = " << value.pNext << '\n';
7793         s << "\tshaderZeroInitializeWorkgroupMemory = " << value.shaderZeroInitializeWorkgroupMemory << '\n';
7794         s << '}';
7795         return s;
7796 }
7797
7798 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR& value)
7799 {
7800         s << "VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR = {\n";
7801         s << "\tsType = " << value.sType << '\n';
7802         s << "\tpNext = " << value.pNext << '\n';
7803         s << "\tworkgroupMemoryExplicitLayout = " << value.workgroupMemoryExplicitLayout << '\n';
7804         s << "\tworkgroupMemoryExplicitLayoutScalarBlockLayout = " << value.workgroupMemoryExplicitLayoutScalarBlockLayout << '\n';
7805         s << "\tworkgroupMemoryExplicitLayout8BitAccess = " << value.workgroupMemoryExplicitLayout8BitAccess << '\n';
7806         s << "\tworkgroupMemoryExplicitLayout16BitAccess = " << value.workgroupMemoryExplicitLayout16BitAccess << '\n';
7807         s << '}';
7808         return s;
7809 }
7810
7811 std::ostream& operator<< (std::ostream& s, const VkBufferCopy2KHR& value)
7812 {
7813         s << "VkBufferCopy2KHR = {\n";
7814         s << "\tsType = " << value.sType << '\n';
7815         s << "\tpNext = " << value.pNext << '\n';
7816         s << "\tsrcOffset = " << value.srcOffset << '\n';
7817         s << "\tdstOffset = " << value.dstOffset << '\n';
7818         s << "\tsize = " << value.size << '\n';
7819         s << '}';
7820         return s;
7821 }
7822
7823 std::ostream& operator<< (std::ostream& s, const VkCopyBufferInfo2KHR& value)
7824 {
7825         s << "VkCopyBufferInfo2KHR = {\n";
7826         s << "\tsType = " << value.sType << '\n';
7827         s << "\tpNext = " << value.pNext << '\n';
7828         s << "\tsrcBuffer = " << value.srcBuffer << '\n';
7829         s << "\tdstBuffer = " << value.dstBuffer << '\n';
7830         s << "\tregionCount = " << value.regionCount << '\n';
7831         s << "\tpRegions = " << value.pRegions << '\n';
7832         s << '}';
7833         return s;
7834 }
7835
7836 std::ostream& operator<< (std::ostream& s, const VkImageCopy2KHR& value)
7837 {
7838         s << "VkImageCopy2KHR = {\n";
7839         s << "\tsType = " << value.sType << '\n';
7840         s << "\tpNext = " << value.pNext << '\n';
7841         s << "\tsrcSubresource = " << value.srcSubresource << '\n';
7842         s << "\tsrcOffset = " << value.srcOffset << '\n';
7843         s << "\tdstSubresource = " << value.dstSubresource << '\n';
7844         s << "\tdstOffset = " << value.dstOffset << '\n';
7845         s << "\textent = " << value.extent << '\n';
7846         s << '}';
7847         return s;
7848 }
7849
7850 std::ostream& operator<< (std::ostream& s, const VkCopyImageInfo2KHR& value)
7851 {
7852         s << "VkCopyImageInfo2KHR = {\n";
7853         s << "\tsType = " << value.sType << '\n';
7854         s << "\tpNext = " << value.pNext << '\n';
7855         s << "\tsrcImage = " << value.srcImage << '\n';
7856         s << "\tsrcImageLayout = " << value.srcImageLayout << '\n';
7857         s << "\tdstImage = " << value.dstImage << '\n';
7858         s << "\tdstImageLayout = " << value.dstImageLayout << '\n';
7859         s << "\tregionCount = " << value.regionCount << '\n';
7860         s << "\tpRegions = " << value.pRegions << '\n';
7861         s << '}';
7862         return s;
7863 }
7864
7865 std::ostream& operator<< (std::ostream& s, const VkBufferImageCopy2KHR& value)
7866 {
7867         s << "VkBufferImageCopy2KHR = {\n";
7868         s << "\tsType = " << value.sType << '\n';
7869         s << "\tpNext = " << value.pNext << '\n';
7870         s << "\tbufferOffset = " << value.bufferOffset << '\n';
7871         s << "\tbufferRowLength = " << value.bufferRowLength << '\n';
7872         s << "\tbufferImageHeight = " << value.bufferImageHeight << '\n';
7873         s << "\timageSubresource = " << value.imageSubresource << '\n';
7874         s << "\timageOffset = " << value.imageOffset << '\n';
7875         s << "\timageExtent = " << value.imageExtent << '\n';
7876         s << '}';
7877         return s;
7878 }
7879
7880 std::ostream& operator<< (std::ostream& s, const VkCopyBufferToImageInfo2KHR& value)
7881 {
7882         s << "VkCopyBufferToImageInfo2KHR = {\n";
7883         s << "\tsType = " << value.sType << '\n';
7884         s << "\tpNext = " << value.pNext << '\n';
7885         s << "\tsrcBuffer = " << value.srcBuffer << '\n';
7886         s << "\tdstImage = " << value.dstImage << '\n';
7887         s << "\tdstImageLayout = " << value.dstImageLayout << '\n';
7888         s << "\tregionCount = " << value.regionCount << '\n';
7889         s << "\tpRegions = " << value.pRegions << '\n';
7890         s << '}';
7891         return s;
7892 }
7893
7894 std::ostream& operator<< (std::ostream& s, const VkCopyImageToBufferInfo2KHR& value)
7895 {
7896         s << "VkCopyImageToBufferInfo2KHR = {\n";
7897         s << "\tsType = " << value.sType << '\n';
7898         s << "\tpNext = " << value.pNext << '\n';
7899         s << "\tsrcImage = " << value.srcImage << '\n';
7900         s << "\tsrcImageLayout = " << value.srcImageLayout << '\n';
7901         s << "\tdstBuffer = " << value.dstBuffer << '\n';
7902         s << "\tregionCount = " << value.regionCount << '\n';
7903         s << "\tpRegions = " << value.pRegions << '\n';
7904         s << '}';
7905         return s;
7906 }
7907
7908 std::ostream& operator<< (std::ostream& s, const VkImageBlit2KHR& value)
7909 {
7910         s << "VkImageBlit2KHR = {\n";
7911         s << "\tsType = " << value.sType << '\n';
7912         s << "\tpNext = " << value.pNext << '\n';
7913         s << "\tsrcSubresource = " << value.srcSubresource << '\n';
7914         s << "\tsrcOffsets = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.srcOffsets), DE_ARRAY_END(value.srcOffsets)) << '\n';
7915         s << "\tdstSubresource = " << value.dstSubresource << '\n';
7916         s << "\tdstOffsets = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.dstOffsets), DE_ARRAY_END(value.dstOffsets)) << '\n';
7917         s << '}';
7918         return s;
7919 }
7920
7921 std::ostream& operator<< (std::ostream& s, const VkBlitImageInfo2KHR& value)
7922 {
7923         s << "VkBlitImageInfo2KHR = {\n";
7924         s << "\tsType = " << value.sType << '\n';
7925         s << "\tpNext = " << value.pNext << '\n';
7926         s << "\tsrcImage = " << value.srcImage << '\n';
7927         s << "\tsrcImageLayout = " << value.srcImageLayout << '\n';
7928         s << "\tdstImage = " << value.dstImage << '\n';
7929         s << "\tdstImageLayout = " << value.dstImageLayout << '\n';
7930         s << "\tregionCount = " << value.regionCount << '\n';
7931         s << "\tpRegions = " << value.pRegions << '\n';
7932         s << "\tfilter = " << value.filter << '\n';
7933         s << '}';
7934         return s;
7935 }
7936
7937 std::ostream& operator<< (std::ostream& s, const VkImageResolve2KHR& value)
7938 {
7939         s << "VkImageResolve2KHR = {\n";
7940         s << "\tsType = " << value.sType << '\n';
7941         s << "\tpNext = " << value.pNext << '\n';
7942         s << "\tsrcSubresource = " << value.srcSubresource << '\n';
7943         s << "\tsrcOffset = " << value.srcOffset << '\n';
7944         s << "\tdstSubresource = " << value.dstSubresource << '\n';
7945         s << "\tdstOffset = " << value.dstOffset << '\n';
7946         s << "\textent = " << value.extent << '\n';
7947         s << '}';
7948         return s;
7949 }
7950
7951 std::ostream& operator<< (std::ostream& s, const VkResolveImageInfo2KHR& value)
7952 {
7953         s << "VkResolveImageInfo2KHR = {\n";
7954         s << "\tsType = " << value.sType << '\n';
7955         s << "\tpNext = " << value.pNext << '\n';
7956         s << "\tsrcImage = " << value.srcImage << '\n';
7957         s << "\tsrcImageLayout = " << value.srcImageLayout << '\n';
7958         s << "\tdstImage = " << value.dstImage << '\n';
7959         s << "\tdstImageLayout = " << value.dstImageLayout << '\n';
7960         s << "\tregionCount = " << value.regionCount << '\n';
7961         s << "\tpRegions = " << value.pRegions << '\n';
7962         s << '}';
7963         return s;
7964 }
7965
7966 std::ostream& operator<< (std::ostream& s, const VkDebugReportCallbackCreateInfoEXT& value)
7967 {
7968         s << "VkDebugReportCallbackCreateInfoEXT = {\n";
7969         s << "\tsType = " << value.sType << '\n';
7970         s << "\tpNext = " << value.pNext << '\n';
7971         s << "\tflags = " << getDebugReportFlagsEXTStr(value.flags) << '\n';
7972         s << "\tpfnCallback = " << value.pfnCallback << '\n';
7973         s << "\tpUserData = " << value.pUserData << '\n';
7974         s << '}';
7975         return s;
7976 }
7977
7978 std::ostream& operator<< (std::ostream& s, const VkPipelineRasterizationStateRasterizationOrderAMD& value)
7979 {
7980         s << "VkPipelineRasterizationStateRasterizationOrderAMD = {\n";
7981         s << "\tsType = " << value.sType << '\n';
7982         s << "\tpNext = " << value.pNext << '\n';
7983         s << "\trasterizationOrder = " << value.rasterizationOrder << '\n';
7984         s << '}';
7985         return s;
7986 }
7987
7988 std::ostream& operator<< (std::ostream& s, const VkDebugMarkerObjectNameInfoEXT& value)
7989 {
7990         s << "VkDebugMarkerObjectNameInfoEXT = {\n";
7991         s << "\tsType = " << value.sType << '\n';
7992         s << "\tpNext = " << value.pNext << '\n';
7993         s << "\tobjectType = " << value.objectType << '\n';
7994         s << "\tobject = " << value.object << '\n';
7995         s << "\tpObjectName = " << getCharPtrStr(value.pObjectName) << '\n';
7996         s << '}';
7997         return s;
7998 }
7999
8000 std::ostream& operator<< (std::ostream& s, const VkDebugMarkerObjectTagInfoEXT& value)
8001 {
8002         s << "VkDebugMarkerObjectTagInfoEXT = {\n";
8003         s << "\tsType = " << value.sType << '\n';
8004         s << "\tpNext = " << value.pNext << '\n';
8005         s << "\tobjectType = " << value.objectType << '\n';
8006         s << "\tobject = " << value.object << '\n';
8007         s << "\ttagName = " << value.tagName << '\n';
8008         s << "\ttagSize = " << value.tagSize << '\n';
8009         s << "\tpTag = " << value.pTag << '\n';
8010         s << '}';
8011         return s;
8012 }
8013
8014 std::ostream& operator<< (std::ostream& s, const VkDebugMarkerMarkerInfoEXT& value)
8015 {
8016         s << "VkDebugMarkerMarkerInfoEXT = {\n";
8017         s << "\tsType = " << value.sType << '\n';
8018         s << "\tpNext = " << value.pNext << '\n';
8019         s << "\tpMarkerName = " << getCharPtrStr(value.pMarkerName) << '\n';
8020         s << "\tcolor = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.color), DE_ARRAY_END(value.color)) << '\n';
8021         s << '}';
8022         return s;
8023 }
8024
8025 std::ostream& operator<< (std::ostream& s, const VkDedicatedAllocationImageCreateInfoNV& value)
8026 {
8027         s << "VkDedicatedAllocationImageCreateInfoNV = {\n";
8028         s << "\tsType = " << value.sType << '\n';
8029         s << "\tpNext = " << value.pNext << '\n';
8030         s << "\tdedicatedAllocation = " << value.dedicatedAllocation << '\n';
8031         s << '}';
8032         return s;
8033 }
8034
8035 std::ostream& operator<< (std::ostream& s, const VkDedicatedAllocationBufferCreateInfoNV& value)
8036 {
8037         s << "VkDedicatedAllocationBufferCreateInfoNV = {\n";
8038         s << "\tsType = " << value.sType << '\n';
8039         s << "\tpNext = " << value.pNext << '\n';
8040         s << "\tdedicatedAllocation = " << value.dedicatedAllocation << '\n';
8041         s << '}';
8042         return s;
8043 }
8044
8045 std::ostream& operator<< (std::ostream& s, const VkDedicatedAllocationMemoryAllocateInfoNV& value)
8046 {
8047         s << "VkDedicatedAllocationMemoryAllocateInfoNV = {\n";
8048         s << "\tsType = " << value.sType << '\n';
8049         s << "\tpNext = " << value.pNext << '\n';
8050         s << "\timage = " << value.image << '\n';
8051         s << "\tbuffer = " << value.buffer << '\n';
8052         s << '}';
8053         return s;
8054 }
8055
8056 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceTransformFeedbackFeaturesEXT& value)
8057 {
8058         s << "VkPhysicalDeviceTransformFeedbackFeaturesEXT = {\n";
8059         s << "\tsType = " << value.sType << '\n';
8060         s << "\tpNext = " << value.pNext << '\n';
8061         s << "\ttransformFeedback = " << value.transformFeedback << '\n';
8062         s << "\tgeometryStreams = " << value.geometryStreams << '\n';
8063         s << '}';
8064         return s;
8065 }
8066
8067 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceTransformFeedbackPropertiesEXT& value)
8068 {
8069         s << "VkPhysicalDeviceTransformFeedbackPropertiesEXT = {\n";
8070         s << "\tsType = " << value.sType << '\n';
8071         s << "\tpNext = " << value.pNext << '\n';
8072         s << "\tmaxTransformFeedbackStreams = " << value.maxTransformFeedbackStreams << '\n';
8073         s << "\tmaxTransformFeedbackBuffers = " << value.maxTransformFeedbackBuffers << '\n';
8074         s << "\tmaxTransformFeedbackBufferSize = " << value.maxTransformFeedbackBufferSize << '\n';
8075         s << "\tmaxTransformFeedbackStreamDataSize = " << value.maxTransformFeedbackStreamDataSize << '\n';
8076         s << "\tmaxTransformFeedbackBufferDataSize = " << value.maxTransformFeedbackBufferDataSize << '\n';
8077         s << "\tmaxTransformFeedbackBufferDataStride = " << value.maxTransformFeedbackBufferDataStride << '\n';
8078         s << "\ttransformFeedbackQueries = " << value.transformFeedbackQueries << '\n';
8079         s << "\ttransformFeedbackStreamsLinesTriangles = " << value.transformFeedbackStreamsLinesTriangles << '\n';
8080         s << "\ttransformFeedbackRasterizationStreamSelect = " << value.transformFeedbackRasterizationStreamSelect << '\n';
8081         s << "\ttransformFeedbackDraw = " << value.transformFeedbackDraw << '\n';
8082         s << '}';
8083         return s;
8084 }
8085
8086 std::ostream& operator<< (std::ostream& s, const VkPipelineRasterizationStateStreamCreateInfoEXT& value)
8087 {
8088         s << "VkPipelineRasterizationStateStreamCreateInfoEXT = {\n";
8089         s << "\tsType = " << value.sType << '\n';
8090         s << "\tpNext = " << value.pNext << '\n';
8091         s << "\tflags = " << getPipelineRasterizationStateStreamCreateFlagsEXTStr(value.flags) << '\n';
8092         s << "\trasterizationStream = " << value.rasterizationStream << '\n';
8093         s << '}';
8094         return s;
8095 }
8096
8097 std::ostream& operator<< (std::ostream& s, const VkImageViewHandleInfoNVX& value)
8098 {
8099         s << "VkImageViewHandleInfoNVX = {\n";
8100         s << "\tsType = " << value.sType << '\n';
8101         s << "\tpNext = " << value.pNext << '\n';
8102         s << "\timageView = " << value.imageView << '\n';
8103         s << "\tdescriptorType = " << value.descriptorType << '\n';
8104         s << "\tsampler = " << value.sampler << '\n';
8105         s << '}';
8106         return s;
8107 }
8108
8109 std::ostream& operator<< (std::ostream& s, const VkImageViewAddressPropertiesNVX& value)
8110 {
8111         s << "VkImageViewAddressPropertiesNVX = {\n";
8112         s << "\tsType = " << value.sType << '\n';
8113         s << "\tpNext = " << value.pNext << '\n';
8114         s << "\tdeviceAddress = " << value.deviceAddress << '\n';
8115         s << "\tsize = " << value.size << '\n';
8116         s << '}';
8117         return s;
8118 }
8119
8120 std::ostream& operator<< (std::ostream& s, const VkTextureLODGatherFormatPropertiesAMD& value)
8121 {
8122         s << "VkTextureLODGatherFormatPropertiesAMD = {\n";
8123         s << "\tsType = " << value.sType << '\n';
8124         s << "\tpNext = " << value.pNext << '\n';
8125         s << "\tsupportsTextureGatherLODBiasAMD = " << value.supportsTextureGatherLODBiasAMD << '\n';
8126         s << '}';
8127         return s;
8128 }
8129
8130 std::ostream& operator<< (std::ostream& s, const VkShaderResourceUsageAMD& value)
8131 {
8132         s << "VkShaderResourceUsageAMD = {\n";
8133         s << "\tnumUsedVgprs = " << value.numUsedVgprs << '\n';
8134         s << "\tnumUsedSgprs = " << value.numUsedSgprs << '\n';
8135         s << "\tldsSizePerLocalWorkGroup = " << value.ldsSizePerLocalWorkGroup << '\n';
8136         s << "\tldsUsageSizeInBytes = " << value.ldsUsageSizeInBytes << '\n';
8137         s << "\tscratchMemUsageInBytes = " << value.scratchMemUsageInBytes << '\n';
8138         s << '}';
8139         return s;
8140 }
8141
8142 std::ostream& operator<< (std::ostream& s, const VkShaderStatisticsInfoAMD& value)
8143 {
8144         s << "VkShaderStatisticsInfoAMD = {\n";
8145         s << "\tshaderStageMask = " << getShaderStageFlagsStr(value.shaderStageMask) << '\n';
8146         s << "\tresourceUsage = " << value.resourceUsage << '\n';
8147         s << "\tnumPhysicalVgprs = " << value.numPhysicalVgprs << '\n';
8148         s << "\tnumPhysicalSgprs = " << value.numPhysicalSgprs << '\n';
8149         s << "\tnumAvailableVgprs = " << value.numAvailableVgprs << '\n';
8150         s << "\tnumAvailableSgprs = " << value.numAvailableSgprs << '\n';
8151         s << "\tcomputeWorkGroupSize = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.computeWorkGroupSize), DE_ARRAY_END(value.computeWorkGroupSize)) << '\n';
8152         s << '}';
8153         return s;
8154 }
8155
8156 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceCornerSampledImageFeaturesNV& value)
8157 {
8158         s << "VkPhysicalDeviceCornerSampledImageFeaturesNV = {\n";
8159         s << "\tsType = " << value.sType << '\n';
8160         s << "\tpNext = " << value.pNext << '\n';
8161         s << "\tcornerSampledImage = " << value.cornerSampledImage << '\n';
8162         s << '}';
8163         return s;
8164 }
8165
8166 std::ostream& operator<< (std::ostream& s, const VkExternalImageFormatPropertiesNV& value)
8167 {
8168         s << "VkExternalImageFormatPropertiesNV = {\n";
8169         s << "\timageFormatProperties = " << value.imageFormatProperties << '\n';
8170         s << "\texternalMemoryFeatures = " << getExternalMemoryFeatureFlagsNVStr(value.externalMemoryFeatures) << '\n';
8171         s << "\texportFromImportedHandleTypes = " << getExternalMemoryHandleTypeFlagsNVStr(value.exportFromImportedHandleTypes) << '\n';
8172         s << "\tcompatibleHandleTypes = " << getExternalMemoryHandleTypeFlagsNVStr(value.compatibleHandleTypes) << '\n';
8173         s << '}';
8174         return s;
8175 }
8176
8177 std::ostream& operator<< (std::ostream& s, const VkExternalMemoryImageCreateInfoNV& value)
8178 {
8179         s << "VkExternalMemoryImageCreateInfoNV = {\n";
8180         s << "\tsType = " << value.sType << '\n';
8181         s << "\tpNext = " << value.pNext << '\n';
8182         s << "\thandleTypes = " << getExternalMemoryHandleTypeFlagsNVStr(value.handleTypes) << '\n';
8183         s << '}';
8184         return s;
8185 }
8186
8187 std::ostream& operator<< (std::ostream& s, const VkExportMemoryAllocateInfoNV& value)
8188 {
8189         s << "VkExportMemoryAllocateInfoNV = {\n";
8190         s << "\tsType = " << value.sType << '\n';
8191         s << "\tpNext = " << value.pNext << '\n';
8192         s << "\thandleTypes = " << getExternalMemoryHandleTypeFlagsNVStr(value.handleTypes) << '\n';
8193         s << '}';
8194         return s;
8195 }
8196
8197 std::ostream& operator<< (std::ostream& s, const VkValidationFlagsEXT& value)
8198 {
8199         s << "VkValidationFlagsEXT = {\n";
8200         s << "\tsType = " << value.sType << '\n';
8201         s << "\tpNext = " << value.pNext << '\n';
8202         s << "\tdisabledValidationCheckCount = " << value.disabledValidationCheckCount << '\n';
8203         s << "\tpDisabledValidationChecks = " << value.pDisabledValidationChecks << '\n';
8204         s << '}';
8205         return s;
8206 }
8207
8208 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT& value)
8209 {
8210         s << "VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT = {\n";
8211         s << "\tsType = " << value.sType << '\n';
8212         s << "\tpNext = " << value.pNext << '\n';
8213         s << "\ttextureCompressionASTC_HDR = " << value.textureCompressionASTC_HDR << '\n';
8214         s << '}';
8215         return s;
8216 }
8217
8218 std::ostream& operator<< (std::ostream& s, const VkImageViewASTCDecodeModeEXT& value)
8219 {
8220         s << "VkImageViewASTCDecodeModeEXT = {\n";
8221         s << "\tsType = " << value.sType << '\n';
8222         s << "\tpNext = " << value.pNext << '\n';
8223         s << "\tdecodeMode = " << value.decodeMode << '\n';
8224         s << '}';
8225         return s;
8226 }
8227
8228 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceASTCDecodeFeaturesEXT& value)
8229 {
8230         s << "VkPhysicalDeviceASTCDecodeFeaturesEXT = {\n";
8231         s << "\tsType = " << value.sType << '\n';
8232         s << "\tpNext = " << value.pNext << '\n';
8233         s << "\tdecodeModeSharedExponent = " << value.decodeModeSharedExponent << '\n';
8234         s << '}';
8235         return s;
8236 }
8237
8238 std::ostream& operator<< (std::ostream& s, const VkConditionalRenderingBeginInfoEXT& value)
8239 {
8240         s << "VkConditionalRenderingBeginInfoEXT = {\n";
8241         s << "\tsType = " << value.sType << '\n';
8242         s << "\tpNext = " << value.pNext << '\n';
8243         s << "\tbuffer = " << value.buffer << '\n';
8244         s << "\toffset = " << value.offset << '\n';
8245         s << "\tflags = " << getConditionalRenderingFlagsEXTStr(value.flags) << '\n';
8246         s << '}';
8247         return s;
8248 }
8249
8250 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceConditionalRenderingFeaturesEXT& value)
8251 {
8252         s << "VkPhysicalDeviceConditionalRenderingFeaturesEXT = {\n";
8253         s << "\tsType = " << value.sType << '\n';
8254         s << "\tpNext = " << value.pNext << '\n';
8255         s << "\tconditionalRendering = " << value.conditionalRendering << '\n';
8256         s << "\tinheritedConditionalRendering = " << value.inheritedConditionalRendering << '\n';
8257         s << '}';
8258         return s;
8259 }
8260
8261 std::ostream& operator<< (std::ostream& s, const VkCommandBufferInheritanceConditionalRenderingInfoEXT& value)
8262 {
8263         s << "VkCommandBufferInheritanceConditionalRenderingInfoEXT = {\n";
8264         s << "\tsType = " << value.sType << '\n';
8265         s << "\tpNext = " << value.pNext << '\n';
8266         s << "\tconditionalRenderingEnable = " << value.conditionalRenderingEnable << '\n';
8267         s << '}';
8268         return s;
8269 }
8270
8271 std::ostream& operator<< (std::ostream& s, const VkViewportWScalingNV& value)
8272 {
8273         s << "VkViewportWScalingNV = {\n";
8274         s << "\txcoeff = " << value.xcoeff << '\n';
8275         s << "\tycoeff = " << value.ycoeff << '\n';
8276         s << '}';
8277         return s;
8278 }
8279
8280 std::ostream& operator<< (std::ostream& s, const VkPipelineViewportWScalingStateCreateInfoNV& value)
8281 {
8282         s << "VkPipelineViewportWScalingStateCreateInfoNV = {\n";
8283         s << "\tsType = " << value.sType << '\n';
8284         s << "\tpNext = " << value.pNext << '\n';
8285         s << "\tviewportWScalingEnable = " << value.viewportWScalingEnable << '\n';
8286         s << "\tviewportCount = " << value.viewportCount << '\n';
8287         s << "\tpViewportWScalings = " << value.pViewportWScalings << '\n';
8288         s << '}';
8289         return s;
8290 }
8291
8292 std::ostream& operator<< (std::ostream& s, const VkSurfaceCapabilities2EXT& value)
8293 {
8294         s << "VkSurfaceCapabilities2EXT = {\n";
8295         s << "\tsType = " << value.sType << '\n';
8296         s << "\tpNext = " << value.pNext << '\n';
8297         s << "\tminImageCount = " << value.minImageCount << '\n';
8298         s << "\tmaxImageCount = " << value.maxImageCount << '\n';
8299         s << "\tcurrentExtent = " << value.currentExtent << '\n';
8300         s << "\tminImageExtent = " << value.minImageExtent << '\n';
8301         s << "\tmaxImageExtent = " << value.maxImageExtent << '\n';
8302         s << "\tmaxImageArrayLayers = " << value.maxImageArrayLayers << '\n';
8303         s << "\tsupportedTransforms = " << getSurfaceTransformFlagsKHRStr(value.supportedTransforms) << '\n';
8304         s << "\tcurrentTransform = " << value.currentTransform << '\n';
8305         s << "\tsupportedCompositeAlpha = " << getCompositeAlphaFlagsKHRStr(value.supportedCompositeAlpha) << '\n';
8306         s << "\tsupportedUsageFlags = " << getImageUsageFlagsStr(value.supportedUsageFlags) << '\n';
8307         s << "\tsupportedSurfaceCounters = " << getSurfaceCounterFlagsEXTStr(value.supportedSurfaceCounters) << '\n';
8308         s << '}';
8309         return s;
8310 }
8311
8312 std::ostream& operator<< (std::ostream& s, const VkDisplayPowerInfoEXT& value)
8313 {
8314         s << "VkDisplayPowerInfoEXT = {\n";
8315         s << "\tsType = " << value.sType << '\n';
8316         s << "\tpNext = " << value.pNext << '\n';
8317         s << "\tpowerState = " << value.powerState << '\n';
8318         s << '}';
8319         return s;
8320 }
8321
8322 std::ostream& operator<< (std::ostream& s, const VkDeviceEventInfoEXT& value)
8323 {
8324         s << "VkDeviceEventInfoEXT = {\n";
8325         s << "\tsType = " << value.sType << '\n';
8326         s << "\tpNext = " << value.pNext << '\n';
8327         s << "\tdeviceEvent = " << value.deviceEvent << '\n';
8328         s << '}';
8329         return s;
8330 }
8331
8332 std::ostream& operator<< (std::ostream& s, const VkDisplayEventInfoEXT& value)
8333 {
8334         s << "VkDisplayEventInfoEXT = {\n";
8335         s << "\tsType = " << value.sType << '\n';
8336         s << "\tpNext = " << value.pNext << '\n';
8337         s << "\tdisplayEvent = " << value.displayEvent << '\n';
8338         s << '}';
8339         return s;
8340 }
8341
8342 std::ostream& operator<< (std::ostream& s, const VkSwapchainCounterCreateInfoEXT& value)
8343 {
8344         s << "VkSwapchainCounterCreateInfoEXT = {\n";
8345         s << "\tsType = " << value.sType << '\n';
8346         s << "\tpNext = " << value.pNext << '\n';
8347         s << "\tsurfaceCounters = " << getSurfaceCounterFlagsEXTStr(value.surfaceCounters) << '\n';
8348         s << '}';
8349         return s;
8350 }
8351
8352 std::ostream& operator<< (std::ostream& s, const VkRefreshCycleDurationGOOGLE& value)
8353 {
8354         s << "VkRefreshCycleDurationGOOGLE = {\n";
8355         s << "\trefreshDuration = " << value.refreshDuration << '\n';
8356         s << '}';
8357         return s;
8358 }
8359
8360 std::ostream& operator<< (std::ostream& s, const VkPastPresentationTimingGOOGLE& value)
8361 {
8362         s << "VkPastPresentationTimingGOOGLE = {\n";
8363         s << "\tpresentID = " << value.presentID << '\n';
8364         s << "\tdesiredPresentTime = " << value.desiredPresentTime << '\n';
8365         s << "\tactualPresentTime = " << value.actualPresentTime << '\n';
8366         s << "\tearliestPresentTime = " << value.earliestPresentTime << '\n';
8367         s << "\tpresentMargin = " << value.presentMargin << '\n';
8368         s << '}';
8369         return s;
8370 }
8371
8372 std::ostream& operator<< (std::ostream& s, const VkPresentTimeGOOGLE& value)
8373 {
8374         s << "VkPresentTimeGOOGLE = {\n";
8375         s << "\tpresentID = " << value.presentID << '\n';
8376         s << "\tdesiredPresentTime = " << value.desiredPresentTime << '\n';
8377         s << '}';
8378         return s;
8379 }
8380
8381 std::ostream& operator<< (std::ostream& s, const VkPresentTimesInfoGOOGLE& value)
8382 {
8383         s << "VkPresentTimesInfoGOOGLE = {\n";
8384         s << "\tsType = " << value.sType << '\n';
8385         s << "\tpNext = " << value.pNext << '\n';
8386         s << "\tswapchainCount = " << value.swapchainCount << '\n';
8387         s << "\tpTimes = " << value.pTimes << '\n';
8388         s << '}';
8389         return s;
8390 }
8391
8392 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX& value)
8393 {
8394         s << "VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX = {\n";
8395         s << "\tsType = " << value.sType << '\n';
8396         s << "\tpNext = " << value.pNext << '\n';
8397         s << "\tperViewPositionAllComponents = " << value.perViewPositionAllComponents << '\n';
8398         s << '}';
8399         return s;
8400 }
8401
8402 std::ostream& operator<< (std::ostream& s, const VkViewportSwizzleNV& value)
8403 {
8404         s << "VkViewportSwizzleNV = {\n";
8405         s << "\tx = " << value.x << '\n';
8406         s << "\ty = " << value.y << '\n';
8407         s << "\tz = " << value.z << '\n';
8408         s << "\tw = " << value.w << '\n';
8409         s << '}';
8410         return s;
8411 }
8412
8413 std::ostream& operator<< (std::ostream& s, const VkPipelineViewportSwizzleStateCreateInfoNV& value)
8414 {
8415         s << "VkPipelineViewportSwizzleStateCreateInfoNV = {\n";
8416         s << "\tsType = " << value.sType << '\n';
8417         s << "\tpNext = " << value.pNext << '\n';
8418         s << "\tflags = " << getPipelineViewportSwizzleStateCreateFlagsNVStr(value.flags) << '\n';
8419         s << "\tviewportCount = " << value.viewportCount << '\n';
8420         s << "\tpViewportSwizzles = " << value.pViewportSwizzles << '\n';
8421         s << '}';
8422         return s;
8423 }
8424
8425 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceDiscardRectanglePropertiesEXT& value)
8426 {
8427         s << "VkPhysicalDeviceDiscardRectanglePropertiesEXT = {\n";
8428         s << "\tsType = " << value.sType << '\n';
8429         s << "\tpNext = " << value.pNext << '\n';
8430         s << "\tmaxDiscardRectangles = " << value.maxDiscardRectangles << '\n';
8431         s << '}';
8432         return s;
8433 }
8434
8435 std::ostream& operator<< (std::ostream& s, const VkPipelineDiscardRectangleStateCreateInfoEXT& value)
8436 {
8437         s << "VkPipelineDiscardRectangleStateCreateInfoEXT = {\n";
8438         s << "\tsType = " << value.sType << '\n';
8439         s << "\tpNext = " << value.pNext << '\n';
8440         s << "\tflags = " << getPipelineDiscardRectangleStateCreateFlagsEXTStr(value.flags) << '\n';
8441         s << "\tdiscardRectangleMode = " << value.discardRectangleMode << '\n';
8442         s << "\tdiscardRectangleCount = " << value.discardRectangleCount << '\n';
8443         s << "\tpDiscardRectangles = " << value.pDiscardRectangles << '\n';
8444         s << '}';
8445         return s;
8446 }
8447
8448 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceConservativeRasterizationPropertiesEXT& value)
8449 {
8450         s << "VkPhysicalDeviceConservativeRasterizationPropertiesEXT = {\n";
8451         s << "\tsType = " << value.sType << '\n';
8452         s << "\tpNext = " << value.pNext << '\n';
8453         s << "\tprimitiveOverestimationSize = " << value.primitiveOverestimationSize << '\n';
8454         s << "\tmaxExtraPrimitiveOverestimationSize = " << value.maxExtraPrimitiveOverestimationSize << '\n';
8455         s << "\textraPrimitiveOverestimationSizeGranularity = " << value.extraPrimitiveOverestimationSizeGranularity << '\n';
8456         s << "\tprimitiveUnderestimation = " << value.primitiveUnderestimation << '\n';
8457         s << "\tconservativePointAndLineRasterization = " << value.conservativePointAndLineRasterization << '\n';
8458         s << "\tdegenerateTrianglesRasterized = " << value.degenerateTrianglesRasterized << '\n';
8459         s << "\tdegenerateLinesRasterized = " << value.degenerateLinesRasterized << '\n';
8460         s << "\tfullyCoveredFragmentShaderInputVariable = " << value.fullyCoveredFragmentShaderInputVariable << '\n';
8461         s << "\tconservativeRasterizationPostDepthCoverage = " << value.conservativeRasterizationPostDepthCoverage << '\n';
8462         s << '}';
8463         return s;
8464 }
8465
8466 std::ostream& operator<< (std::ostream& s, const VkPipelineRasterizationConservativeStateCreateInfoEXT& value)
8467 {
8468         s << "VkPipelineRasterizationConservativeStateCreateInfoEXT = {\n";
8469         s << "\tsType = " << value.sType << '\n';
8470         s << "\tpNext = " << value.pNext << '\n';
8471         s << "\tflags = " << getPipelineRasterizationConservativeStateCreateFlagsEXTStr(value.flags) << '\n';
8472         s << "\tconservativeRasterizationMode = " << value.conservativeRasterizationMode << '\n';
8473         s << "\textraPrimitiveOverestimationSize = " << value.extraPrimitiveOverestimationSize << '\n';
8474         s << '}';
8475         return s;
8476 }
8477
8478 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceDepthClipEnableFeaturesEXT& value)
8479 {
8480         s << "VkPhysicalDeviceDepthClipEnableFeaturesEXT = {\n";
8481         s << "\tsType = " << value.sType << '\n';
8482         s << "\tpNext = " << value.pNext << '\n';
8483         s << "\tdepthClipEnable = " << value.depthClipEnable << '\n';
8484         s << '}';
8485         return s;
8486 }
8487
8488 std::ostream& operator<< (std::ostream& s, const VkPipelineRasterizationDepthClipStateCreateInfoEXT& value)
8489 {
8490         s << "VkPipelineRasterizationDepthClipStateCreateInfoEXT = {\n";
8491         s << "\tsType = " << value.sType << '\n';
8492         s << "\tpNext = " << value.pNext << '\n';
8493         s << "\tflags = " << getPipelineRasterizationDepthClipStateCreateFlagsEXTStr(value.flags) << '\n';
8494         s << "\tdepthClipEnable = " << value.depthClipEnable << '\n';
8495         s << '}';
8496         return s;
8497 }
8498
8499 std::ostream& operator<< (std::ostream& s, const VkXYColorEXT& value)
8500 {
8501         s << "VkXYColorEXT = {\n";
8502         s << "\tx = " << value.x << '\n';
8503         s << "\ty = " << value.y << '\n';
8504         s << '}';
8505         return s;
8506 }
8507
8508 std::ostream& operator<< (std::ostream& s, const VkHdrMetadataEXT& value)
8509 {
8510         s << "VkHdrMetadataEXT = {\n";
8511         s << "\tsType = " << value.sType << '\n';
8512         s << "\tpNext = " << value.pNext << '\n';
8513         s << "\tdisplayPrimaryRed = " << value.displayPrimaryRed << '\n';
8514         s << "\tdisplayPrimaryGreen = " << value.displayPrimaryGreen << '\n';
8515         s << "\tdisplayPrimaryBlue = " << value.displayPrimaryBlue << '\n';
8516         s << "\twhitePoint = " << value.whitePoint << '\n';
8517         s << "\tmaxLuminance = " << value.maxLuminance << '\n';
8518         s << "\tminLuminance = " << value.minLuminance << '\n';
8519         s << "\tmaxContentLightLevel = " << value.maxContentLightLevel << '\n';
8520         s << "\tmaxFrameAverageLightLevel = " << value.maxFrameAverageLightLevel << '\n';
8521         s << '}';
8522         return s;
8523 }
8524
8525 std::ostream& operator<< (std::ostream& s, const VkDebugUtilsLabelEXT& value)
8526 {
8527         s << "VkDebugUtilsLabelEXT = {\n";
8528         s << "\tsType = " << value.sType << '\n';
8529         s << "\tpNext = " << value.pNext << '\n';
8530         s << "\tpLabelName = " << getCharPtrStr(value.pLabelName) << '\n';
8531         s << "\tcolor = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.color), DE_ARRAY_END(value.color)) << '\n';
8532         s << '}';
8533         return s;
8534 }
8535
8536 std::ostream& operator<< (std::ostream& s, const VkDebugUtilsObjectNameInfoEXT& value)
8537 {
8538         s << "VkDebugUtilsObjectNameInfoEXT = {\n";
8539         s << "\tsType = " << value.sType << '\n';
8540         s << "\tpNext = " << value.pNext << '\n';
8541         s << "\tobjectType = " << value.objectType << '\n';
8542         s << "\tobjectHandle = " << value.objectHandle << '\n';
8543         s << "\tpObjectName = " << getCharPtrStr(value.pObjectName) << '\n';
8544         s << '}';
8545         return s;
8546 }
8547
8548 std::ostream& operator<< (std::ostream& s, const VkDebugUtilsMessengerCallbackDataEXT& value)
8549 {
8550         s << "VkDebugUtilsMessengerCallbackDataEXT = {\n";
8551         s << "\tsType = " << value.sType << '\n';
8552         s << "\tpNext = " << value.pNext << '\n';
8553         s << "\tflags = " << getDebugUtilsMessengerCallbackDataFlagsEXTStr(value.flags) << '\n';
8554         s << "\tpMessageIdName = " << getCharPtrStr(value.pMessageIdName) << '\n';
8555         s << "\tmessageIdNumber = " << value.messageIdNumber << '\n';
8556         s << "\tpMessage = " << getCharPtrStr(value.pMessage) << '\n';
8557         s << "\tqueueLabelCount = " << value.queueLabelCount << '\n';
8558         s << "\tpQueueLabels = " << value.pQueueLabels << '\n';
8559         s << "\tcmdBufLabelCount = " << value.cmdBufLabelCount << '\n';
8560         s << "\tpCmdBufLabels = " << value.pCmdBufLabels << '\n';
8561         s << "\tobjectCount = " << value.objectCount << '\n';
8562         s << "\tpObjects = " << value.pObjects << '\n';
8563         s << '}';
8564         return s;
8565 }
8566
8567 std::ostream& operator<< (std::ostream& s, const VkDebugUtilsMessengerCreateInfoEXT& value)
8568 {
8569         s << "VkDebugUtilsMessengerCreateInfoEXT = {\n";
8570         s << "\tsType = " << value.sType << '\n';
8571         s << "\tpNext = " << value.pNext << '\n';
8572         s << "\tflags = " << getDebugUtilsMessengerCreateFlagsEXTStr(value.flags) << '\n';
8573         s << "\tmessageSeverity = " << getDebugUtilsMessageSeverityFlagsEXTStr(value.messageSeverity) << '\n';
8574         s << "\tmessageType = " << getDebugUtilsMessageTypeFlagsEXTStr(value.messageType) << '\n';
8575         s << "\tpfnUserCallback = " << value.pfnUserCallback << '\n';
8576         s << "\tpUserData = " << value.pUserData << '\n';
8577         s << '}';
8578         return s;
8579 }
8580
8581 std::ostream& operator<< (std::ostream& s, const VkDebugUtilsObjectTagInfoEXT& value)
8582 {
8583         s << "VkDebugUtilsObjectTagInfoEXT = {\n";
8584         s << "\tsType = " << value.sType << '\n';
8585         s << "\tpNext = " << value.pNext << '\n';
8586         s << "\tobjectType = " << value.objectType << '\n';
8587         s << "\tobjectHandle = " << value.objectHandle << '\n';
8588         s << "\ttagName = " << value.tagName << '\n';
8589         s << "\ttagSize = " << value.tagSize << '\n';
8590         s << "\tpTag = " << value.pTag << '\n';
8591         s << '}';
8592         return s;
8593 }
8594
8595 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceInlineUniformBlockFeaturesEXT& value)
8596 {
8597         s << "VkPhysicalDeviceInlineUniformBlockFeaturesEXT = {\n";
8598         s << "\tsType = " << value.sType << '\n';
8599         s << "\tpNext = " << value.pNext << '\n';
8600         s << "\tinlineUniformBlock = " << value.inlineUniformBlock << '\n';
8601         s << "\tdescriptorBindingInlineUniformBlockUpdateAfterBind = " << value.descriptorBindingInlineUniformBlockUpdateAfterBind << '\n';
8602         s << '}';
8603         return s;
8604 }
8605
8606 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceInlineUniformBlockPropertiesEXT& value)
8607 {
8608         s << "VkPhysicalDeviceInlineUniformBlockPropertiesEXT = {\n";
8609         s << "\tsType = " << value.sType << '\n';
8610         s << "\tpNext = " << value.pNext << '\n';
8611         s << "\tmaxInlineUniformBlockSize = " << value.maxInlineUniformBlockSize << '\n';
8612         s << "\tmaxPerStageDescriptorInlineUniformBlocks = " << value.maxPerStageDescriptorInlineUniformBlocks << '\n';
8613         s << "\tmaxPerStageDescriptorUpdateAfterBindInlineUniformBlocks = " << value.maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks << '\n';
8614         s << "\tmaxDescriptorSetInlineUniformBlocks = " << value.maxDescriptorSetInlineUniformBlocks << '\n';
8615         s << "\tmaxDescriptorSetUpdateAfterBindInlineUniformBlocks = " << value.maxDescriptorSetUpdateAfterBindInlineUniformBlocks << '\n';
8616         s << '}';
8617         return s;
8618 }
8619
8620 std::ostream& operator<< (std::ostream& s, const VkWriteDescriptorSetInlineUniformBlockEXT& value)
8621 {
8622         s << "VkWriteDescriptorSetInlineUniformBlockEXT = {\n";
8623         s << "\tsType = " << value.sType << '\n';
8624         s << "\tpNext = " << value.pNext << '\n';
8625         s << "\tdataSize = " << value.dataSize << '\n';
8626         s << "\tpData = " << value.pData << '\n';
8627         s << '}';
8628         return s;
8629 }
8630
8631 std::ostream& operator<< (std::ostream& s, const VkDescriptorPoolInlineUniformBlockCreateInfoEXT& value)
8632 {
8633         s << "VkDescriptorPoolInlineUniformBlockCreateInfoEXT = {\n";
8634         s << "\tsType = " << value.sType << '\n';
8635         s << "\tpNext = " << value.pNext << '\n';
8636         s << "\tmaxInlineUniformBlockBindings = " << value.maxInlineUniformBlockBindings << '\n';
8637         s << '}';
8638         return s;
8639 }
8640
8641 std::ostream& operator<< (std::ostream& s, const VkSampleLocationEXT& value)
8642 {
8643         s << "VkSampleLocationEXT = {\n";
8644         s << "\tx = " << value.x << '\n';
8645         s << "\ty = " << value.y << '\n';
8646         s << '}';
8647         return s;
8648 }
8649
8650 std::ostream& operator<< (std::ostream& s, const VkSampleLocationsInfoEXT& value)
8651 {
8652         s << "VkSampleLocationsInfoEXT = {\n";
8653         s << "\tsType = " << value.sType << '\n';
8654         s << "\tpNext = " << value.pNext << '\n';
8655         s << "\tsampleLocationsPerPixel = " << value.sampleLocationsPerPixel << '\n';
8656         s << "\tsampleLocationGridSize = " << value.sampleLocationGridSize << '\n';
8657         s << "\tsampleLocationsCount = " << value.sampleLocationsCount << '\n';
8658         s << "\tpSampleLocations = " << value.pSampleLocations << '\n';
8659         s << '}';
8660         return s;
8661 }
8662
8663 std::ostream& operator<< (std::ostream& s, const VkAttachmentSampleLocationsEXT& value)
8664 {
8665         s << "VkAttachmentSampleLocationsEXT = {\n";
8666         s << "\tattachmentIndex = " << value.attachmentIndex << '\n';
8667         s << "\tsampleLocationsInfo = " << value.sampleLocationsInfo << '\n';
8668         s << '}';
8669         return s;
8670 }
8671
8672 std::ostream& operator<< (std::ostream& s, const VkSubpassSampleLocationsEXT& value)
8673 {
8674         s << "VkSubpassSampleLocationsEXT = {\n";
8675         s << "\tsubpassIndex = " << value.subpassIndex << '\n';
8676         s << "\tsampleLocationsInfo = " << value.sampleLocationsInfo << '\n';
8677         s << '}';
8678         return s;
8679 }
8680
8681 std::ostream& operator<< (std::ostream& s, const VkRenderPassSampleLocationsBeginInfoEXT& value)
8682 {
8683         s << "VkRenderPassSampleLocationsBeginInfoEXT = {\n";
8684         s << "\tsType = " << value.sType << '\n';
8685         s << "\tpNext = " << value.pNext << '\n';
8686         s << "\tattachmentInitialSampleLocationsCount = " << value.attachmentInitialSampleLocationsCount << '\n';
8687         s << "\tpAttachmentInitialSampleLocations = " << value.pAttachmentInitialSampleLocations << '\n';
8688         s << "\tpostSubpassSampleLocationsCount = " << value.postSubpassSampleLocationsCount << '\n';
8689         s << "\tpPostSubpassSampleLocations = " << value.pPostSubpassSampleLocations << '\n';
8690         s << '}';
8691         return s;
8692 }
8693
8694 std::ostream& operator<< (std::ostream& s, const VkPipelineSampleLocationsStateCreateInfoEXT& value)
8695 {
8696         s << "VkPipelineSampleLocationsStateCreateInfoEXT = {\n";
8697         s << "\tsType = " << value.sType << '\n';
8698         s << "\tpNext = " << value.pNext << '\n';
8699         s << "\tsampleLocationsEnable = " << value.sampleLocationsEnable << '\n';
8700         s << "\tsampleLocationsInfo = " << value.sampleLocationsInfo << '\n';
8701         s << '}';
8702         return s;
8703 }
8704
8705 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceSampleLocationsPropertiesEXT& value)
8706 {
8707         s << "VkPhysicalDeviceSampleLocationsPropertiesEXT = {\n";
8708         s << "\tsType = " << value.sType << '\n';
8709         s << "\tpNext = " << value.pNext << '\n';
8710         s << "\tsampleLocationSampleCounts = " << getSampleCountFlagsStr(value.sampleLocationSampleCounts) << '\n';
8711         s << "\tmaxSampleLocationGridSize = " << value.maxSampleLocationGridSize << '\n';
8712         s << "\tsampleLocationCoordinateRange = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.sampleLocationCoordinateRange), DE_ARRAY_END(value.sampleLocationCoordinateRange)) << '\n';
8713         s << "\tsampleLocationSubPixelBits = " << value.sampleLocationSubPixelBits << '\n';
8714         s << "\tvariableSampleLocations = " << value.variableSampleLocations << '\n';
8715         s << '}';
8716         return s;
8717 }
8718
8719 std::ostream& operator<< (std::ostream& s, const VkMultisamplePropertiesEXT& value)
8720 {
8721         s << "VkMultisamplePropertiesEXT = {\n";
8722         s << "\tsType = " << value.sType << '\n';
8723         s << "\tpNext = " << value.pNext << '\n';
8724         s << "\tmaxSampleLocationGridSize = " << value.maxSampleLocationGridSize << '\n';
8725         s << '}';
8726         return s;
8727 }
8728
8729 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT& value)
8730 {
8731         s << "VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT = {\n";
8732         s << "\tsType = " << value.sType << '\n';
8733         s << "\tpNext = " << value.pNext << '\n';
8734         s << "\tadvancedBlendCoherentOperations = " << value.advancedBlendCoherentOperations << '\n';
8735         s << '}';
8736         return s;
8737 }
8738
8739 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT& value)
8740 {
8741         s << "VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT = {\n";
8742         s << "\tsType = " << value.sType << '\n';
8743         s << "\tpNext = " << value.pNext << '\n';
8744         s << "\tadvancedBlendMaxColorAttachments = " << value.advancedBlendMaxColorAttachments << '\n';
8745         s << "\tadvancedBlendIndependentBlend = " << value.advancedBlendIndependentBlend << '\n';
8746         s << "\tadvancedBlendNonPremultipliedSrcColor = " << value.advancedBlendNonPremultipliedSrcColor << '\n';
8747         s << "\tadvancedBlendNonPremultipliedDstColor = " << value.advancedBlendNonPremultipliedDstColor << '\n';
8748         s << "\tadvancedBlendCorrelatedOverlap = " << value.advancedBlendCorrelatedOverlap << '\n';
8749         s << "\tadvancedBlendAllOperations = " << value.advancedBlendAllOperations << '\n';
8750         s << '}';
8751         return s;
8752 }
8753
8754 std::ostream& operator<< (std::ostream& s, const VkPipelineColorBlendAdvancedStateCreateInfoEXT& value)
8755 {
8756         s << "VkPipelineColorBlendAdvancedStateCreateInfoEXT = {\n";
8757         s << "\tsType = " << value.sType << '\n';
8758         s << "\tpNext = " << value.pNext << '\n';
8759         s << "\tsrcPremultiplied = " << value.srcPremultiplied << '\n';
8760         s << "\tdstPremultiplied = " << value.dstPremultiplied << '\n';
8761         s << "\tblendOverlap = " << value.blendOverlap << '\n';
8762         s << '}';
8763         return s;
8764 }
8765
8766 std::ostream& operator<< (std::ostream& s, const VkPipelineCoverageToColorStateCreateInfoNV& value)
8767 {
8768         s << "VkPipelineCoverageToColorStateCreateInfoNV = {\n";
8769         s << "\tsType = " << value.sType << '\n';
8770         s << "\tpNext = " << value.pNext << '\n';
8771         s << "\tflags = " << getPipelineCoverageToColorStateCreateFlagsNVStr(value.flags) << '\n';
8772         s << "\tcoverageToColorEnable = " << value.coverageToColorEnable << '\n';
8773         s << "\tcoverageToColorLocation = " << value.coverageToColorLocation << '\n';
8774         s << '}';
8775         return s;
8776 }
8777
8778 std::ostream& operator<< (std::ostream& s, const VkPipelineCoverageModulationStateCreateInfoNV& value)
8779 {
8780         s << "VkPipelineCoverageModulationStateCreateInfoNV = {\n";
8781         s << "\tsType = " << value.sType << '\n';
8782         s << "\tpNext = " << value.pNext << '\n';
8783         s << "\tflags = " << getPipelineCoverageModulationStateCreateFlagsNVStr(value.flags) << '\n';
8784         s << "\tcoverageModulationMode = " << value.coverageModulationMode << '\n';
8785         s << "\tcoverageModulationTableEnable = " << value.coverageModulationTableEnable << '\n';
8786         s << "\tcoverageModulationTableCount = " << value.coverageModulationTableCount << '\n';
8787         s << "\tpCoverageModulationTable = " << value.pCoverageModulationTable << '\n';
8788         s << '}';
8789         return s;
8790 }
8791
8792 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceShaderSMBuiltinsPropertiesNV& value)
8793 {
8794         s << "VkPhysicalDeviceShaderSMBuiltinsPropertiesNV = {\n";
8795         s << "\tsType = " << value.sType << '\n';
8796         s << "\tpNext = " << value.pNext << '\n';
8797         s << "\tshaderSMCount = " << value.shaderSMCount << '\n';
8798         s << "\tshaderWarpsPerSM = " << value.shaderWarpsPerSM << '\n';
8799         s << '}';
8800         return s;
8801 }
8802
8803 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceShaderSMBuiltinsFeaturesNV& value)
8804 {
8805         s << "VkPhysicalDeviceShaderSMBuiltinsFeaturesNV = {\n";
8806         s << "\tsType = " << value.sType << '\n';
8807         s << "\tpNext = " << value.pNext << '\n';
8808         s << "\tshaderSMBuiltins = " << value.shaderSMBuiltins << '\n';
8809         s << '}';
8810         return s;
8811 }
8812
8813 std::ostream& operator<< (std::ostream& s, const VkDrmFormatModifierPropertiesEXT& value)
8814 {
8815         s << "VkDrmFormatModifierPropertiesEXT = {\n";
8816         s << "\tdrmFormatModifier = " << value.drmFormatModifier << '\n';
8817         s << "\tdrmFormatModifierPlaneCount = " << value.drmFormatModifierPlaneCount << '\n';
8818         s << "\tdrmFormatModifierTilingFeatures = " << getFormatFeatureFlagsStr(value.drmFormatModifierTilingFeatures) << '\n';
8819         s << '}';
8820         return s;
8821 }
8822
8823 std::ostream& operator<< (std::ostream& s, const VkDrmFormatModifierPropertiesListEXT& value)
8824 {
8825         s << "VkDrmFormatModifierPropertiesListEXT = {\n";
8826         s << "\tsType = " << value.sType << '\n';
8827         s << "\tpNext = " << value.pNext << '\n';
8828         s << "\tdrmFormatModifierCount = " << value.drmFormatModifierCount << '\n';
8829         s << "\tpDrmFormatModifierProperties = " << value.pDrmFormatModifierProperties << '\n';
8830         s << '}';
8831         return s;
8832 }
8833
8834 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceImageDrmFormatModifierInfoEXT& value)
8835 {
8836         s << "VkPhysicalDeviceImageDrmFormatModifierInfoEXT = {\n";
8837         s << "\tsType = " << value.sType << '\n';
8838         s << "\tpNext = " << value.pNext << '\n';
8839         s << "\tdrmFormatModifier = " << value.drmFormatModifier << '\n';
8840         s << "\tsharingMode = " << value.sharingMode << '\n';
8841         s << "\tqueueFamilyIndexCount = " << value.queueFamilyIndexCount << '\n';
8842         s << "\tpQueueFamilyIndices = " << value.pQueueFamilyIndices << '\n';
8843         s << '}';
8844         return s;
8845 }
8846
8847 std::ostream& operator<< (std::ostream& s, const VkImageDrmFormatModifierListCreateInfoEXT& value)
8848 {
8849         s << "VkImageDrmFormatModifierListCreateInfoEXT = {\n";
8850         s << "\tsType = " << value.sType << '\n';
8851         s << "\tpNext = " << value.pNext << '\n';
8852         s << "\tdrmFormatModifierCount = " << value.drmFormatModifierCount << '\n';
8853         s << "\tpDrmFormatModifiers = " << value.pDrmFormatModifiers << '\n';
8854         s << '}';
8855         return s;
8856 }
8857
8858 std::ostream& operator<< (std::ostream& s, const VkImageDrmFormatModifierExplicitCreateInfoEXT& value)
8859 {
8860         s << "VkImageDrmFormatModifierExplicitCreateInfoEXT = {\n";
8861         s << "\tsType = " << value.sType << '\n';
8862         s << "\tpNext = " << value.pNext << '\n';
8863         s << "\tdrmFormatModifier = " << value.drmFormatModifier << '\n';
8864         s << "\tdrmFormatModifierPlaneCount = " << value.drmFormatModifierPlaneCount << '\n';
8865         s << "\tpPlaneLayouts = " << value.pPlaneLayouts << '\n';
8866         s << '}';
8867         return s;
8868 }
8869
8870 std::ostream& operator<< (std::ostream& s, const VkImageDrmFormatModifierPropertiesEXT& value)
8871 {
8872         s << "VkImageDrmFormatModifierPropertiesEXT = {\n";
8873         s << "\tsType = " << value.sType << '\n';
8874         s << "\tpNext = " << value.pNext << '\n';
8875         s << "\tdrmFormatModifier = " << value.drmFormatModifier << '\n';
8876         s << '}';
8877         return s;
8878 }
8879
8880 std::ostream& operator<< (std::ostream& s, const VkValidationCacheCreateInfoEXT& value)
8881 {
8882         s << "VkValidationCacheCreateInfoEXT = {\n";
8883         s << "\tsType = " << value.sType << '\n';
8884         s << "\tpNext = " << value.pNext << '\n';
8885         s << "\tflags = " << getValidationCacheCreateFlagsEXTStr(value.flags) << '\n';
8886         s << "\tinitialDataSize = " << value.initialDataSize << '\n';
8887         s << "\tpInitialData = " << value.pInitialData << '\n';
8888         s << '}';
8889         return s;
8890 }
8891
8892 std::ostream& operator<< (std::ostream& s, const VkShaderModuleValidationCacheCreateInfoEXT& value)
8893 {
8894         s << "VkShaderModuleValidationCacheCreateInfoEXT = {\n";
8895         s << "\tsType = " << value.sType << '\n';
8896         s << "\tpNext = " << value.pNext << '\n';
8897         s << "\tvalidationCache = " << value.validationCache << '\n';
8898         s << '}';
8899         return s;
8900 }
8901
8902 std::ostream& operator<< (std::ostream& s, const VkShadingRatePaletteNV& value)
8903 {
8904         s << "VkShadingRatePaletteNV = {\n";
8905         s << "\tshadingRatePaletteEntryCount = " << value.shadingRatePaletteEntryCount << '\n';
8906         s << "\tpShadingRatePaletteEntries = " << value.pShadingRatePaletteEntries << '\n';
8907         s << '}';
8908         return s;
8909 }
8910
8911 std::ostream& operator<< (std::ostream& s, const VkPipelineViewportShadingRateImageStateCreateInfoNV& value)
8912 {
8913         s << "VkPipelineViewportShadingRateImageStateCreateInfoNV = {\n";
8914         s << "\tsType = " << value.sType << '\n';
8915         s << "\tpNext = " << value.pNext << '\n';
8916         s << "\tshadingRateImageEnable = " << value.shadingRateImageEnable << '\n';
8917         s << "\tviewportCount = " << value.viewportCount << '\n';
8918         s << "\tpShadingRatePalettes = " << value.pShadingRatePalettes << '\n';
8919         s << '}';
8920         return s;
8921 }
8922
8923 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceShadingRateImageFeaturesNV& value)
8924 {
8925         s << "VkPhysicalDeviceShadingRateImageFeaturesNV = {\n";
8926         s << "\tsType = " << value.sType << '\n';
8927         s << "\tpNext = " << value.pNext << '\n';
8928         s << "\tshadingRateImage = " << value.shadingRateImage << '\n';
8929         s << "\tshadingRateCoarseSampleOrder = " << value.shadingRateCoarseSampleOrder << '\n';
8930         s << '}';
8931         return s;
8932 }
8933
8934 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceShadingRateImagePropertiesNV& value)
8935 {
8936         s << "VkPhysicalDeviceShadingRateImagePropertiesNV = {\n";
8937         s << "\tsType = " << value.sType << '\n';
8938         s << "\tpNext = " << value.pNext << '\n';
8939         s << "\tshadingRateTexelSize = " << value.shadingRateTexelSize << '\n';
8940         s << "\tshadingRatePaletteSize = " << value.shadingRatePaletteSize << '\n';
8941         s << "\tshadingRateMaxCoarseSamples = " << value.shadingRateMaxCoarseSamples << '\n';
8942         s << '}';
8943         return s;
8944 }
8945
8946 std::ostream& operator<< (std::ostream& s, const VkCoarseSampleLocationNV& value)
8947 {
8948         s << "VkCoarseSampleLocationNV = {\n";
8949         s << "\tpixelX = " << value.pixelX << '\n';
8950         s << "\tpixelY = " << value.pixelY << '\n';
8951         s << "\tsample = " << value.sample << '\n';
8952         s << '}';
8953         return s;
8954 }
8955
8956 std::ostream& operator<< (std::ostream& s, const VkCoarseSampleOrderCustomNV& value)
8957 {
8958         s << "VkCoarseSampleOrderCustomNV = {\n";
8959         s << "\tshadingRate = " << value.shadingRate << '\n';
8960         s << "\tsampleCount = " << value.sampleCount << '\n';
8961         s << "\tsampleLocationCount = " << value.sampleLocationCount << '\n';
8962         s << "\tpSampleLocations = " << value.pSampleLocations << '\n';
8963         s << '}';
8964         return s;
8965 }
8966
8967 std::ostream& operator<< (std::ostream& s, const VkPipelineViewportCoarseSampleOrderStateCreateInfoNV& value)
8968 {
8969         s << "VkPipelineViewportCoarseSampleOrderStateCreateInfoNV = {\n";
8970         s << "\tsType = " << value.sType << '\n';
8971         s << "\tpNext = " << value.pNext << '\n';
8972         s << "\tsampleOrderType = " << value.sampleOrderType << '\n';
8973         s << "\tcustomSampleOrderCount = " << value.customSampleOrderCount << '\n';
8974         s << "\tpCustomSampleOrders = " << value.pCustomSampleOrders << '\n';
8975         s << '}';
8976         return s;
8977 }
8978
8979 std::ostream& operator<< (std::ostream& s, const VkRayTracingShaderGroupCreateInfoNV& value)
8980 {
8981         s << "VkRayTracingShaderGroupCreateInfoNV = {\n";
8982         s << "\tsType = " << value.sType << '\n';
8983         s << "\tpNext = " << value.pNext << '\n';
8984         s << "\ttype = " << value.type << '\n';
8985         s << "\tgeneralShader = " << value.generalShader << '\n';
8986         s << "\tclosestHitShader = " << value.closestHitShader << '\n';
8987         s << "\tanyHitShader = " << value.anyHitShader << '\n';
8988         s << "\tintersectionShader = " << value.intersectionShader << '\n';
8989         s << '}';
8990         return s;
8991 }
8992
8993 std::ostream& operator<< (std::ostream& s, const VkRayTracingPipelineCreateInfoNV& value)
8994 {
8995         s << "VkRayTracingPipelineCreateInfoNV = {\n";
8996         s << "\tsType = " << value.sType << '\n';
8997         s << "\tpNext = " << value.pNext << '\n';
8998         s << "\tflags = " << getPipelineCreateFlagsStr(value.flags) << '\n';
8999         s << "\tstageCount = " << value.stageCount << '\n';
9000         s << "\tpStages = " << value.pStages << '\n';
9001         s << "\tgroupCount = " << value.groupCount << '\n';
9002         s << "\tpGroups = " << value.pGroups << '\n';
9003         s << "\tmaxRecursionDepth = " << value.maxRecursionDepth << '\n';
9004         s << "\tlayout = " << value.layout << '\n';
9005         s << "\tbasePipelineHandle = " << value.basePipelineHandle << '\n';
9006         s << "\tbasePipelineIndex = " << value.basePipelineIndex << '\n';
9007         s << '}';
9008         return s;
9009 }
9010
9011 std::ostream& operator<< (std::ostream& s, const VkGeometryTrianglesNV& value)
9012 {
9013         s << "VkGeometryTrianglesNV = {\n";
9014         s << "\tsType = " << value.sType << '\n';
9015         s << "\tpNext = " << value.pNext << '\n';
9016         s << "\tvertexData = " << value.vertexData << '\n';
9017         s << "\tvertexOffset = " << value.vertexOffset << '\n';
9018         s << "\tvertexCount = " << value.vertexCount << '\n';
9019         s << "\tvertexStride = " << value.vertexStride << '\n';
9020         s << "\tvertexFormat = " << value.vertexFormat << '\n';
9021         s << "\tindexData = " << value.indexData << '\n';
9022         s << "\tindexOffset = " << value.indexOffset << '\n';
9023         s << "\tindexCount = " << value.indexCount << '\n';
9024         s << "\tindexType = " << value.indexType << '\n';
9025         s << "\ttransformData = " << value.transformData << '\n';
9026         s << "\ttransformOffset = " << value.transformOffset << '\n';
9027         s << '}';
9028         return s;
9029 }
9030
9031 std::ostream& operator<< (std::ostream& s, const VkGeometryAABBNV& value)
9032 {
9033         s << "VkGeometryAABBNV = {\n";
9034         s << "\tsType = " << value.sType << '\n';
9035         s << "\tpNext = " << value.pNext << '\n';
9036         s << "\taabbData = " << value.aabbData << '\n';
9037         s << "\tnumAABBs = " << value.numAABBs << '\n';
9038         s << "\tstride = " << value.stride << '\n';
9039         s << "\toffset = " << value.offset << '\n';
9040         s << '}';
9041         return s;
9042 }
9043
9044 std::ostream& operator<< (std::ostream& s, const VkGeometryDataNV& value)
9045 {
9046         s << "VkGeometryDataNV = {\n";
9047         s << "\ttriangles = " << value.triangles << '\n';
9048         s << "\taabbs = " << value.aabbs << '\n';
9049         s << '}';
9050         return s;
9051 }
9052
9053 std::ostream& operator<< (std::ostream& s, const VkGeometryNV& value)
9054 {
9055         s << "VkGeometryNV = {\n";
9056         s << "\tsType = " << value.sType << '\n';
9057         s << "\tpNext = " << value.pNext << '\n';
9058         s << "\tgeometryType = " << value.geometryType << '\n';
9059         s << "\tgeometry = " << value.geometry << '\n';
9060         s << "\tflags = " << getGeometryFlagsKHRStr(value.flags) << '\n';
9061         s << '}';
9062         return s;
9063 }
9064
9065 std::ostream& operator<< (std::ostream& s, const VkAccelerationStructureInfoNV& value)
9066 {
9067         s << "VkAccelerationStructureInfoNV = {\n";
9068         s << "\tsType = " << value.sType << '\n';
9069         s << "\tpNext = " << value.pNext << '\n';
9070         s << "\ttype = " << value.type << '\n';
9071         s << "\tflags = " << getBuildAccelerationStructureFlagsNVStr(value.flags) << '\n';
9072         s << "\tinstanceCount = " << value.instanceCount << '\n';
9073         s << "\tgeometryCount = " << value.geometryCount << '\n';
9074         s << "\tpGeometries = " << value.pGeometries << '\n';
9075         s << '}';
9076         return s;
9077 }
9078
9079 std::ostream& operator<< (std::ostream& s, const VkAccelerationStructureCreateInfoNV& value)
9080 {
9081         s << "VkAccelerationStructureCreateInfoNV = {\n";
9082         s << "\tsType = " << value.sType << '\n';
9083         s << "\tpNext = " << value.pNext << '\n';
9084         s << "\tcompactedSize = " << value.compactedSize << '\n';
9085         s << "\tinfo = " << value.info << '\n';
9086         s << '}';
9087         return s;
9088 }
9089
9090 std::ostream& operator<< (std::ostream& s, const VkBindAccelerationStructureMemoryInfoNV& value)
9091 {
9092         s << "VkBindAccelerationStructureMemoryInfoNV = {\n";
9093         s << "\tsType = " << value.sType << '\n';
9094         s << "\tpNext = " << value.pNext << '\n';
9095         s << "\taccelerationStructure = " << value.accelerationStructure << '\n';
9096         s << "\tmemory = " << value.memory << '\n';
9097         s << "\tmemoryOffset = " << value.memoryOffset << '\n';
9098         s << "\tdeviceIndexCount = " << value.deviceIndexCount << '\n';
9099         s << "\tpDeviceIndices = " << value.pDeviceIndices << '\n';
9100         s << '}';
9101         return s;
9102 }
9103
9104 std::ostream& operator<< (std::ostream& s, const VkWriteDescriptorSetAccelerationStructureNV& value)
9105 {
9106         s << "VkWriteDescriptorSetAccelerationStructureNV = {\n";
9107         s << "\tsType = " << value.sType << '\n';
9108         s << "\tpNext = " << value.pNext << '\n';
9109         s << "\taccelerationStructureCount = " << value.accelerationStructureCount << '\n';
9110         s << "\tpAccelerationStructures = " << value.pAccelerationStructures << '\n';
9111         s << '}';
9112         return s;
9113 }
9114
9115 std::ostream& operator<< (std::ostream& s, const VkAccelerationStructureMemoryRequirementsInfoNV& value)
9116 {
9117         s << "VkAccelerationStructureMemoryRequirementsInfoNV = {\n";
9118         s << "\tsType = " << value.sType << '\n';
9119         s << "\tpNext = " << value.pNext << '\n';
9120         s << "\ttype = " << value.type << '\n';
9121         s << "\taccelerationStructure = " << value.accelerationStructure << '\n';
9122         s << '}';
9123         return s;
9124 }
9125
9126 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceRayTracingPropertiesNV& value)
9127 {
9128         s << "VkPhysicalDeviceRayTracingPropertiesNV = {\n";
9129         s << "\tsType = " << value.sType << '\n';
9130         s << "\tpNext = " << value.pNext << '\n';
9131         s << "\tshaderGroupHandleSize = " << value.shaderGroupHandleSize << '\n';
9132         s << "\tmaxRecursionDepth = " << value.maxRecursionDepth << '\n';
9133         s << "\tmaxShaderGroupStride = " << value.maxShaderGroupStride << '\n';
9134         s << "\tshaderGroupBaseAlignment = " << value.shaderGroupBaseAlignment << '\n';
9135         s << "\tmaxGeometryCount = " << value.maxGeometryCount << '\n';
9136         s << "\tmaxInstanceCount = " << value.maxInstanceCount << '\n';
9137         s << "\tmaxTriangleCount = " << value.maxTriangleCount << '\n';
9138         s << "\tmaxDescriptorSetAccelerationStructures = " << value.maxDescriptorSetAccelerationStructures << '\n';
9139         s << '}';
9140         return s;
9141 }
9142
9143 std::ostream& operator<< (std::ostream& s, const VkTransformMatrixKHR& value)
9144 {
9145         s << "VkTransformMatrixKHR = {\n";
9146         s << "\tmatrix = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.matrix), DE_ARRAY_END(value.matrix)) << '\n';
9147         s << '}';
9148         return s;
9149 }
9150
9151 std::ostream& operator<< (std::ostream& s, const VkAabbPositionsKHR& value)
9152 {
9153         s << "VkAabbPositionsKHR = {\n";
9154         s << "\tminX = " << value.minX << '\n';
9155         s << "\tminY = " << value.minY << '\n';
9156         s << "\tminZ = " << value.minZ << '\n';
9157         s << "\tmaxX = " << value.maxX << '\n';
9158         s << "\tmaxY = " << value.maxY << '\n';
9159         s << "\tmaxZ = " << value.maxZ << '\n';
9160         s << '}';
9161         return s;
9162 }
9163
9164 std::ostream& operator<< (std::ostream& s, const VkAccelerationStructureInstanceKHR& value)
9165 {
9166         s << "VkAccelerationStructureInstanceKHR = {\n";
9167         s << "\ttransform = " << value.transform << '\n';
9168         s << "\tinstanceCustomIndex = " << value.instanceCustomIndex << '\n';
9169         s << "\tmask = " << value.mask << '\n';
9170         s << "\tinstanceShaderBindingTableRecordOffset = " << value.instanceShaderBindingTableRecordOffset << '\n';
9171         s << "\tflags = " << getGeometryInstanceFlagsKHRStr(value.flags) << '\n';
9172         s << "\taccelerationStructureReference = " << value.accelerationStructureReference << '\n';
9173         s << '}';
9174         return s;
9175 }
9176
9177 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV& value)
9178 {
9179         s << "VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV = {\n";
9180         s << "\tsType = " << value.sType << '\n';
9181         s << "\tpNext = " << value.pNext << '\n';
9182         s << "\trepresentativeFragmentTest = " << value.representativeFragmentTest << '\n';
9183         s << '}';
9184         return s;
9185 }
9186
9187 std::ostream& operator<< (std::ostream& s, const VkPipelineRepresentativeFragmentTestStateCreateInfoNV& value)
9188 {
9189         s << "VkPipelineRepresentativeFragmentTestStateCreateInfoNV = {\n";
9190         s << "\tsType = " << value.sType << '\n';
9191         s << "\tpNext = " << value.pNext << '\n';
9192         s << "\trepresentativeFragmentTestEnable = " << value.representativeFragmentTestEnable << '\n';
9193         s << '}';
9194         return s;
9195 }
9196
9197 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceImageViewImageFormatInfoEXT& value)
9198 {
9199         s << "VkPhysicalDeviceImageViewImageFormatInfoEXT = {\n";
9200         s << "\tsType = " << value.sType << '\n';
9201         s << "\tpNext = " << value.pNext << '\n';
9202         s << "\timageViewType = " << value.imageViewType << '\n';
9203         s << '}';
9204         return s;
9205 }
9206
9207 std::ostream& operator<< (std::ostream& s, const VkFilterCubicImageViewImageFormatPropertiesEXT& value)
9208 {
9209         s << "VkFilterCubicImageViewImageFormatPropertiesEXT = {\n";
9210         s << "\tsType = " << value.sType << '\n';
9211         s << "\tpNext = " << value.pNext << '\n';
9212         s << "\tfilterCubic = " << value.filterCubic << '\n';
9213         s << "\tfilterCubicMinmax = " << value.filterCubicMinmax << '\n';
9214         s << '}';
9215         return s;
9216 }
9217
9218 std::ostream& operator<< (std::ostream& s, const VkDeviceQueueGlobalPriorityCreateInfoEXT& value)
9219 {
9220         s << "VkDeviceQueueGlobalPriorityCreateInfoEXT = {\n";
9221         s << "\tsType = " << value.sType << '\n';
9222         s << "\tpNext = " << value.pNext << '\n';
9223         s << "\tglobalPriority = " << value.globalPriority << '\n';
9224         s << '}';
9225         return s;
9226 }
9227
9228 std::ostream& operator<< (std::ostream& s, const VkImportMemoryHostPointerInfoEXT& value)
9229 {
9230         s << "VkImportMemoryHostPointerInfoEXT = {\n";
9231         s << "\tsType = " << value.sType << '\n';
9232         s << "\tpNext = " << value.pNext << '\n';
9233         s << "\thandleType = " << value.handleType << '\n';
9234         s << "\tpHostPointer = " << value.pHostPointer << '\n';
9235         s << '}';
9236         return s;
9237 }
9238
9239 std::ostream& operator<< (std::ostream& s, const VkMemoryHostPointerPropertiesEXT& value)
9240 {
9241         s << "VkMemoryHostPointerPropertiesEXT = {\n";
9242         s << "\tsType = " << value.sType << '\n';
9243         s << "\tpNext = " << value.pNext << '\n';
9244         s << "\tmemoryTypeBits = " << value.memoryTypeBits << '\n';
9245         s << '}';
9246         return s;
9247 }
9248
9249 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceExternalMemoryHostPropertiesEXT& value)
9250 {
9251         s << "VkPhysicalDeviceExternalMemoryHostPropertiesEXT = {\n";
9252         s << "\tsType = " << value.sType << '\n';
9253         s << "\tpNext = " << value.pNext << '\n';
9254         s << "\tminImportedHostPointerAlignment = " << value.minImportedHostPointerAlignment << '\n';
9255         s << '}';
9256         return s;
9257 }
9258
9259 std::ostream& operator<< (std::ostream& s, const VkPipelineCompilerControlCreateInfoAMD& value)
9260 {
9261         s << "VkPipelineCompilerControlCreateInfoAMD = {\n";
9262         s << "\tsType = " << value.sType << '\n';
9263         s << "\tpNext = " << value.pNext << '\n';
9264         s << "\tcompilerControlFlags = " << getPipelineCompilerControlFlagsAMDStr(value.compilerControlFlags) << '\n';
9265         s << '}';
9266         return s;
9267 }
9268
9269 std::ostream& operator<< (std::ostream& s, const VkCalibratedTimestampInfoEXT& value)
9270 {
9271         s << "VkCalibratedTimestampInfoEXT = {\n";
9272         s << "\tsType = " << value.sType << '\n';
9273         s << "\tpNext = " << value.pNext << '\n';
9274         s << "\ttimeDomain = " << value.timeDomain << '\n';
9275         s << '}';
9276         return s;
9277 }
9278
9279 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceShaderCorePropertiesAMD& value)
9280 {
9281         s << "VkPhysicalDeviceShaderCorePropertiesAMD = {\n";
9282         s << "\tsType = " << value.sType << '\n';
9283         s << "\tpNext = " << value.pNext << '\n';
9284         s << "\tshaderEngineCount = " << value.shaderEngineCount << '\n';
9285         s << "\tshaderArraysPerEngineCount = " << value.shaderArraysPerEngineCount << '\n';
9286         s << "\tcomputeUnitsPerShaderArray = " << value.computeUnitsPerShaderArray << '\n';
9287         s << "\tsimdPerComputeUnit = " << value.simdPerComputeUnit << '\n';
9288         s << "\twavefrontsPerSimd = " << value.wavefrontsPerSimd << '\n';
9289         s << "\twavefrontSize = " << value.wavefrontSize << '\n';
9290         s << "\tsgprsPerSimd = " << value.sgprsPerSimd << '\n';
9291         s << "\tminSgprAllocation = " << value.minSgprAllocation << '\n';
9292         s << "\tmaxSgprAllocation = " << value.maxSgprAllocation << '\n';
9293         s << "\tsgprAllocationGranularity = " << value.sgprAllocationGranularity << '\n';
9294         s << "\tvgprsPerSimd = " << value.vgprsPerSimd << '\n';
9295         s << "\tminVgprAllocation = " << value.minVgprAllocation << '\n';
9296         s << "\tmaxVgprAllocation = " << value.maxVgprAllocation << '\n';
9297         s << "\tvgprAllocationGranularity = " << value.vgprAllocationGranularity << '\n';
9298         s << '}';
9299         return s;
9300 }
9301
9302 std::ostream& operator<< (std::ostream& s, const VkDeviceMemoryOverallocationCreateInfoAMD& value)
9303 {
9304         s << "VkDeviceMemoryOverallocationCreateInfoAMD = {\n";
9305         s << "\tsType = " << value.sType << '\n';
9306         s << "\tpNext = " << value.pNext << '\n';
9307         s << "\toverallocationBehavior = " << value.overallocationBehavior << '\n';
9308         s << '}';
9309         return s;
9310 }
9311
9312 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT& value)
9313 {
9314         s << "VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT = {\n";
9315         s << "\tsType = " << value.sType << '\n';
9316         s << "\tpNext = " << value.pNext << '\n';
9317         s << "\tmaxVertexAttribDivisor = " << value.maxVertexAttribDivisor << '\n';
9318         s << '}';
9319         return s;
9320 }
9321
9322 std::ostream& operator<< (std::ostream& s, const VkVertexInputBindingDivisorDescriptionEXT& value)
9323 {
9324         s << "VkVertexInputBindingDivisorDescriptionEXT = {\n";
9325         s << "\tbinding = " << value.binding << '\n';
9326         s << "\tdivisor = " << value.divisor << '\n';
9327         s << '}';
9328         return s;
9329 }
9330
9331 std::ostream& operator<< (std::ostream& s, const VkPipelineVertexInputDivisorStateCreateInfoEXT& value)
9332 {
9333         s << "VkPipelineVertexInputDivisorStateCreateInfoEXT = {\n";
9334         s << "\tsType = " << value.sType << '\n';
9335         s << "\tpNext = " << value.pNext << '\n';
9336         s << "\tvertexBindingDivisorCount = " << value.vertexBindingDivisorCount << '\n';
9337         s << "\tpVertexBindingDivisors = " << value.pVertexBindingDivisors << '\n';
9338         s << '}';
9339         return s;
9340 }
9341
9342 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT& value)
9343 {
9344         s << "VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT = {\n";
9345         s << "\tsType = " << value.sType << '\n';
9346         s << "\tpNext = " << value.pNext << '\n';
9347         s << "\tvertexAttributeInstanceRateDivisor = " << value.vertexAttributeInstanceRateDivisor << '\n';
9348         s << "\tvertexAttributeInstanceRateZeroDivisor = " << value.vertexAttributeInstanceRateZeroDivisor << '\n';
9349         s << '}';
9350         return s;
9351 }
9352
9353 std::ostream& operator<< (std::ostream& s, const VkPipelineCreationFeedbackEXT& value)
9354 {
9355         s << "VkPipelineCreationFeedbackEXT = {\n";
9356         s << "\tflags = " << getPipelineCreationFeedbackFlagsEXTStr(value.flags) << '\n';
9357         s << "\tduration = " << value.duration << '\n';
9358         s << '}';
9359         return s;
9360 }
9361
9362 std::ostream& operator<< (std::ostream& s, const VkPipelineCreationFeedbackCreateInfoEXT& value)
9363 {
9364         s << "VkPipelineCreationFeedbackCreateInfoEXT = {\n";
9365         s << "\tsType = " << value.sType << '\n';
9366         s << "\tpNext = " << value.pNext << '\n';
9367         s << "\tpPipelineCreationFeedback = " << value.pPipelineCreationFeedback << '\n';
9368         s << "\tpipelineStageCreationFeedbackCount = " << value.pipelineStageCreationFeedbackCount << '\n';
9369         s << "\tpPipelineStageCreationFeedbacks = " << value.pPipelineStageCreationFeedbacks << '\n';
9370         s << '}';
9371         return s;
9372 }
9373
9374 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceComputeShaderDerivativesFeaturesNV& value)
9375 {
9376         s << "VkPhysicalDeviceComputeShaderDerivativesFeaturesNV = {\n";
9377         s << "\tsType = " << value.sType << '\n';
9378         s << "\tpNext = " << value.pNext << '\n';
9379         s << "\tcomputeDerivativeGroupQuads = " << value.computeDerivativeGroupQuads << '\n';
9380         s << "\tcomputeDerivativeGroupLinear = " << value.computeDerivativeGroupLinear << '\n';
9381         s << '}';
9382         return s;
9383 }
9384
9385 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceMeshShaderFeaturesNV& value)
9386 {
9387         s << "VkPhysicalDeviceMeshShaderFeaturesNV = {\n";
9388         s << "\tsType = " << value.sType << '\n';
9389         s << "\tpNext = " << value.pNext << '\n';
9390         s << "\ttaskShader = " << value.taskShader << '\n';
9391         s << "\tmeshShader = " << value.meshShader << '\n';
9392         s << '}';
9393         return s;
9394 }
9395
9396 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceMeshShaderPropertiesNV& value)
9397 {
9398         s << "VkPhysicalDeviceMeshShaderPropertiesNV = {\n";
9399         s << "\tsType = " << value.sType << '\n';
9400         s << "\tpNext = " << value.pNext << '\n';
9401         s << "\tmaxDrawMeshTasksCount = " << value.maxDrawMeshTasksCount << '\n';
9402         s << "\tmaxTaskWorkGroupInvocations = " << value.maxTaskWorkGroupInvocations << '\n';
9403         s << "\tmaxTaskWorkGroupSize = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.maxTaskWorkGroupSize), DE_ARRAY_END(value.maxTaskWorkGroupSize)) << '\n';
9404         s << "\tmaxTaskTotalMemorySize = " << value.maxTaskTotalMemorySize << '\n';
9405         s << "\tmaxTaskOutputCount = " << value.maxTaskOutputCount << '\n';
9406         s << "\tmaxMeshWorkGroupInvocations = " << value.maxMeshWorkGroupInvocations << '\n';
9407         s << "\tmaxMeshWorkGroupSize = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.maxMeshWorkGroupSize), DE_ARRAY_END(value.maxMeshWorkGroupSize)) << '\n';
9408         s << "\tmaxMeshTotalMemorySize = " << value.maxMeshTotalMemorySize << '\n';
9409         s << "\tmaxMeshOutputVertices = " << value.maxMeshOutputVertices << '\n';
9410         s << "\tmaxMeshOutputPrimitives = " << value.maxMeshOutputPrimitives << '\n';
9411         s << "\tmaxMeshMultiviewViewCount = " << value.maxMeshMultiviewViewCount << '\n';
9412         s << "\tmeshOutputPerVertexGranularity = " << value.meshOutputPerVertexGranularity << '\n';
9413         s << "\tmeshOutputPerPrimitiveGranularity = " << value.meshOutputPerPrimitiveGranularity << '\n';
9414         s << '}';
9415         return s;
9416 }
9417
9418 std::ostream& operator<< (std::ostream& s, const VkDrawMeshTasksIndirectCommandNV& value)
9419 {
9420         s << "VkDrawMeshTasksIndirectCommandNV = {\n";
9421         s << "\ttaskCount = " << value.taskCount << '\n';
9422         s << "\tfirstTask = " << value.firstTask << '\n';
9423         s << '}';
9424         return s;
9425 }
9426
9427 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV& value)
9428 {
9429         s << "VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV = {\n";
9430         s << "\tsType = " << value.sType << '\n';
9431         s << "\tpNext = " << value.pNext << '\n';
9432         s << "\tfragmentShaderBarycentric = " << value.fragmentShaderBarycentric << '\n';
9433         s << '}';
9434         return s;
9435 }
9436
9437 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceShaderImageFootprintFeaturesNV& value)
9438 {
9439         s << "VkPhysicalDeviceShaderImageFootprintFeaturesNV = {\n";
9440         s << "\tsType = " << value.sType << '\n';
9441         s << "\tpNext = " << value.pNext << '\n';
9442         s << "\timageFootprint = " << value.imageFootprint << '\n';
9443         s << '}';
9444         return s;
9445 }
9446
9447 std::ostream& operator<< (std::ostream& s, const VkPipelineViewportExclusiveScissorStateCreateInfoNV& value)
9448 {
9449         s << "VkPipelineViewportExclusiveScissorStateCreateInfoNV = {\n";
9450         s << "\tsType = " << value.sType << '\n';
9451         s << "\tpNext = " << value.pNext << '\n';
9452         s << "\texclusiveScissorCount = " << value.exclusiveScissorCount << '\n';
9453         s << "\tpExclusiveScissors = " << value.pExclusiveScissors << '\n';
9454         s << '}';
9455         return s;
9456 }
9457
9458 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceExclusiveScissorFeaturesNV& value)
9459 {
9460         s << "VkPhysicalDeviceExclusiveScissorFeaturesNV = {\n";
9461         s << "\tsType = " << value.sType << '\n';
9462         s << "\tpNext = " << value.pNext << '\n';
9463         s << "\texclusiveScissor = " << value.exclusiveScissor << '\n';
9464         s << '}';
9465         return s;
9466 }
9467
9468 std::ostream& operator<< (std::ostream& s, const VkQueueFamilyCheckpointPropertiesNV& value)
9469 {
9470         s << "VkQueueFamilyCheckpointPropertiesNV = {\n";
9471         s << "\tsType = " << value.sType << '\n';
9472         s << "\tpNext = " << value.pNext << '\n';
9473         s << "\tcheckpointExecutionStageMask = " << getPipelineStageFlagsStr(value.checkpointExecutionStageMask) << '\n';
9474         s << '}';
9475         return s;
9476 }
9477
9478 std::ostream& operator<< (std::ostream& s, const VkCheckpointDataNV& value)
9479 {
9480         s << "VkCheckpointDataNV = {\n";
9481         s << "\tsType = " << value.sType << '\n';
9482         s << "\tpNext = " << value.pNext << '\n';
9483         s << "\tstage = " << value.stage << '\n';
9484         s << "\tpCheckpointMarker = " << value.pCheckpointMarker << '\n';
9485         s << '}';
9486         return s;
9487 }
9488
9489 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL& value)
9490 {
9491         s << "VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL = {\n";
9492         s << "\tsType = " << value.sType << '\n';
9493         s << "\tpNext = " << value.pNext << '\n';
9494         s << "\tshaderIntegerFunctions2 = " << value.shaderIntegerFunctions2 << '\n';
9495         s << '}';
9496         return s;
9497 }
9498
9499 std::ostream& operator<< (std::ostream& s, const VkPerformanceValueDataINTEL& value)
9500 {
9501         s << "VkPerformanceValueDataINTEL = {\n";
9502         s << "\tvalue32 = " << value.value32 << '\n';
9503         s << "\tvalue64 = " << value.value64 << '\n';
9504         s << "\tvalueFloat = " << value.valueFloat << '\n';
9505         s << "\tvalueBool = " << value.valueBool << '\n';
9506         s << "\tvalueString = " << getCharPtrStr(value.valueString) << '\n';
9507         s << '}';
9508         return s;
9509 }
9510
9511 std::ostream& operator<< (std::ostream& s, const VkPerformanceValueINTEL& value)
9512 {
9513         s << "VkPerformanceValueINTEL = {\n";
9514         s << "\ttype = " << value.type << '\n';
9515         s << "\tdata = " << value.data << '\n';
9516         s << '}';
9517         return s;
9518 }
9519
9520 std::ostream& operator<< (std::ostream& s, const VkInitializePerformanceApiInfoINTEL& value)
9521 {
9522         s << "VkInitializePerformanceApiInfoINTEL = {\n";
9523         s << "\tsType = " << value.sType << '\n';
9524         s << "\tpNext = " << value.pNext << '\n';
9525         s << "\tpUserData = " << value.pUserData << '\n';
9526         s << '}';
9527         return s;
9528 }
9529
9530 std::ostream& operator<< (std::ostream& s, const VkQueryPoolPerformanceQueryCreateInfoINTEL& value)
9531 {
9532         s << "VkQueryPoolPerformanceQueryCreateInfoINTEL = {\n";
9533         s << "\tsType = " << value.sType << '\n';
9534         s << "\tpNext = " << value.pNext << '\n';
9535         s << "\tperformanceCountersSampling = " << value.performanceCountersSampling << '\n';
9536         s << '}';
9537         return s;
9538 }
9539
9540 std::ostream& operator<< (std::ostream& s, const VkPerformanceMarkerInfoINTEL& value)
9541 {
9542         s << "VkPerformanceMarkerInfoINTEL = {\n";
9543         s << "\tsType = " << value.sType << '\n';
9544         s << "\tpNext = " << value.pNext << '\n';
9545         s << "\tmarker = " << value.marker << '\n';
9546         s << '}';
9547         return s;
9548 }
9549
9550 std::ostream& operator<< (std::ostream& s, const VkPerformanceStreamMarkerInfoINTEL& value)
9551 {
9552         s << "VkPerformanceStreamMarkerInfoINTEL = {\n";
9553         s << "\tsType = " << value.sType << '\n';
9554         s << "\tpNext = " << value.pNext << '\n';
9555         s << "\tmarker = " << value.marker << '\n';
9556         s << '}';
9557         return s;
9558 }
9559
9560 std::ostream& operator<< (std::ostream& s, const VkPerformanceOverrideInfoINTEL& value)
9561 {
9562         s << "VkPerformanceOverrideInfoINTEL = {\n";
9563         s << "\tsType = " << value.sType << '\n';
9564         s << "\tpNext = " << value.pNext << '\n';
9565         s << "\ttype = " << value.type << '\n';
9566         s << "\tenable = " << value.enable << '\n';
9567         s << "\tparameter = " << value.parameter << '\n';
9568         s << '}';
9569         return s;
9570 }
9571
9572 std::ostream& operator<< (std::ostream& s, const VkPerformanceConfigurationAcquireInfoINTEL& value)
9573 {
9574         s << "VkPerformanceConfigurationAcquireInfoINTEL = {\n";
9575         s << "\tsType = " << value.sType << '\n';
9576         s << "\tpNext = " << value.pNext << '\n';
9577         s << "\ttype = " << value.type << '\n';
9578         s << '}';
9579         return s;
9580 }
9581
9582 std::ostream& operator<< (std::ostream& s, const VkPhysicalDevicePCIBusInfoPropertiesEXT& value)
9583 {
9584         s << "VkPhysicalDevicePCIBusInfoPropertiesEXT = {\n";
9585         s << "\tsType = " << value.sType << '\n';
9586         s << "\tpNext = " << value.pNext << '\n';
9587         s << "\tpciDomain = " << value.pciDomain << '\n';
9588         s << "\tpciBus = " << value.pciBus << '\n';
9589         s << "\tpciDevice = " << value.pciDevice << '\n';
9590         s << "\tpciFunction = " << value.pciFunction << '\n';
9591         s << '}';
9592         return s;
9593 }
9594
9595 std::ostream& operator<< (std::ostream& s, const VkDisplayNativeHdrSurfaceCapabilitiesAMD& value)
9596 {
9597         s << "VkDisplayNativeHdrSurfaceCapabilitiesAMD = {\n";
9598         s << "\tsType = " << value.sType << '\n';
9599         s << "\tpNext = " << value.pNext << '\n';
9600         s << "\tlocalDimmingSupport = " << value.localDimmingSupport << '\n';
9601         s << '}';
9602         return s;
9603 }
9604
9605 std::ostream& operator<< (std::ostream& s, const VkSwapchainDisplayNativeHdrCreateInfoAMD& value)
9606 {
9607         s << "VkSwapchainDisplayNativeHdrCreateInfoAMD = {\n";
9608         s << "\tsType = " << value.sType << '\n';
9609         s << "\tpNext = " << value.pNext << '\n';
9610         s << "\tlocalDimmingEnable = " << value.localDimmingEnable << '\n';
9611         s << '}';
9612         return s;
9613 }
9614
9615 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceFragmentDensityMapFeaturesEXT& value)
9616 {
9617         s << "VkPhysicalDeviceFragmentDensityMapFeaturesEXT = {\n";
9618         s << "\tsType = " << value.sType << '\n';
9619         s << "\tpNext = " << value.pNext << '\n';
9620         s << "\tfragmentDensityMap = " << value.fragmentDensityMap << '\n';
9621         s << "\tfragmentDensityMapDynamic = " << value.fragmentDensityMapDynamic << '\n';
9622         s << "\tfragmentDensityMapNonSubsampledImages = " << value.fragmentDensityMapNonSubsampledImages << '\n';
9623         s << '}';
9624         return s;
9625 }
9626
9627 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceFragmentDensityMapPropertiesEXT& value)
9628 {
9629         s << "VkPhysicalDeviceFragmentDensityMapPropertiesEXT = {\n";
9630         s << "\tsType = " << value.sType << '\n';
9631         s << "\tpNext = " << value.pNext << '\n';
9632         s << "\tminFragmentDensityTexelSize = " << value.minFragmentDensityTexelSize << '\n';
9633         s << "\tmaxFragmentDensityTexelSize = " << value.maxFragmentDensityTexelSize << '\n';
9634         s << "\tfragmentDensityInvocations = " << value.fragmentDensityInvocations << '\n';
9635         s << '}';
9636         return s;
9637 }
9638
9639 std::ostream& operator<< (std::ostream& s, const VkRenderPassFragmentDensityMapCreateInfoEXT& value)
9640 {
9641         s << "VkRenderPassFragmentDensityMapCreateInfoEXT = {\n";
9642         s << "\tsType = " << value.sType << '\n';
9643         s << "\tpNext = " << value.pNext << '\n';
9644         s << "\tfragmentDensityMapAttachment = " << value.fragmentDensityMapAttachment << '\n';
9645         s << '}';
9646         return s;
9647 }
9648
9649 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceSubgroupSizeControlFeaturesEXT& value)
9650 {
9651         s << "VkPhysicalDeviceSubgroupSizeControlFeaturesEXT = {\n";
9652         s << "\tsType = " << value.sType << '\n';
9653         s << "\tpNext = " << value.pNext << '\n';
9654         s << "\tsubgroupSizeControl = " << value.subgroupSizeControl << '\n';
9655         s << "\tcomputeFullSubgroups = " << value.computeFullSubgroups << '\n';
9656         s << '}';
9657         return s;
9658 }
9659
9660 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceSubgroupSizeControlPropertiesEXT& value)
9661 {
9662         s << "VkPhysicalDeviceSubgroupSizeControlPropertiesEXT = {\n";
9663         s << "\tsType = " << value.sType << '\n';
9664         s << "\tpNext = " << value.pNext << '\n';
9665         s << "\tminSubgroupSize = " << value.minSubgroupSize << '\n';
9666         s << "\tmaxSubgroupSize = " << value.maxSubgroupSize << '\n';
9667         s << "\tmaxComputeWorkgroupSubgroups = " << value.maxComputeWorkgroupSubgroups << '\n';
9668         s << "\trequiredSubgroupSizeStages = " << getShaderStageFlagsStr(value.requiredSubgroupSizeStages) << '\n';
9669         s << '}';
9670         return s;
9671 }
9672
9673 std::ostream& operator<< (std::ostream& s, const VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT& value)
9674 {
9675         s << "VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT = {\n";
9676         s << "\tsType = " << value.sType << '\n';
9677         s << "\tpNext = " << value.pNext << '\n';
9678         s << "\trequiredSubgroupSize = " << value.requiredSubgroupSize << '\n';
9679         s << '}';
9680         return s;
9681 }
9682
9683 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceShaderCoreProperties2AMD& value)
9684 {
9685         s << "VkPhysicalDeviceShaderCoreProperties2AMD = {\n";
9686         s << "\tsType = " << value.sType << '\n';
9687         s << "\tpNext = " << value.pNext << '\n';
9688         s << "\tshaderCoreFeatures = " << getShaderCorePropertiesFlagsAMDStr(value.shaderCoreFeatures) << '\n';
9689         s << "\tactiveComputeUnitCount = " << value.activeComputeUnitCount << '\n';
9690         s << '}';
9691         return s;
9692 }
9693
9694 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceCoherentMemoryFeaturesAMD& value)
9695 {
9696         s << "VkPhysicalDeviceCoherentMemoryFeaturesAMD = {\n";
9697         s << "\tsType = " << value.sType << '\n';
9698         s << "\tpNext = " << value.pNext << '\n';
9699         s << "\tdeviceCoherentMemory = " << value.deviceCoherentMemory << '\n';
9700         s << '}';
9701         return s;
9702 }
9703
9704 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT& value)
9705 {
9706         s << "VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT = {\n";
9707         s << "\tsType = " << value.sType << '\n';
9708         s << "\tpNext = " << value.pNext << '\n';
9709         s << "\tshaderImageInt64Atomics = " << value.shaderImageInt64Atomics << '\n';
9710         s << "\tsparseImageInt64Atomics = " << value.sparseImageInt64Atomics << '\n';
9711         s << '}';
9712         return s;
9713 }
9714
9715 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceMemoryBudgetPropertiesEXT& value)
9716 {
9717         s << "VkPhysicalDeviceMemoryBudgetPropertiesEXT = {\n";
9718         s << "\tsType = " << value.sType << '\n';
9719         s << "\tpNext = " << value.pNext << '\n';
9720         s << "\theapBudget = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.heapBudget), DE_ARRAY_END(value.heapBudget)) << '\n';
9721         s << "\theapUsage = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.heapUsage), DE_ARRAY_END(value.heapUsage)) << '\n';
9722         s << '}';
9723         return s;
9724 }
9725
9726 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceMemoryPriorityFeaturesEXT& value)
9727 {
9728         s << "VkPhysicalDeviceMemoryPriorityFeaturesEXT = {\n";
9729         s << "\tsType = " << value.sType << '\n';
9730         s << "\tpNext = " << value.pNext << '\n';
9731         s << "\tmemoryPriority = " << value.memoryPriority << '\n';
9732         s << '}';
9733         return s;
9734 }
9735
9736 std::ostream& operator<< (std::ostream& s, const VkMemoryPriorityAllocateInfoEXT& value)
9737 {
9738         s << "VkMemoryPriorityAllocateInfoEXT = {\n";
9739         s << "\tsType = " << value.sType << '\n';
9740         s << "\tpNext = " << value.pNext << '\n';
9741         s << "\tpriority = " << value.priority << '\n';
9742         s << '}';
9743         return s;
9744 }
9745
9746 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV& value)
9747 {
9748         s << "VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV = {\n";
9749         s << "\tsType = " << value.sType << '\n';
9750         s << "\tpNext = " << value.pNext << '\n';
9751         s << "\tdedicatedAllocationImageAliasing = " << value.dedicatedAllocationImageAliasing << '\n';
9752         s << '}';
9753         return s;
9754 }
9755
9756 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceBufferDeviceAddressFeaturesEXT& value)
9757 {
9758         s << "VkPhysicalDeviceBufferDeviceAddressFeaturesEXT = {\n";
9759         s << "\tsType = " << value.sType << '\n';
9760         s << "\tpNext = " << value.pNext << '\n';
9761         s << "\tbufferDeviceAddress = " << value.bufferDeviceAddress << '\n';
9762         s << "\tbufferDeviceAddressCaptureReplay = " << value.bufferDeviceAddressCaptureReplay << '\n';
9763         s << "\tbufferDeviceAddressMultiDevice = " << value.bufferDeviceAddressMultiDevice << '\n';
9764         s << '}';
9765         return s;
9766 }
9767
9768 std::ostream& operator<< (std::ostream& s, const VkBufferDeviceAddressCreateInfoEXT& value)
9769 {
9770         s << "VkBufferDeviceAddressCreateInfoEXT = {\n";
9771         s << "\tsType = " << value.sType << '\n';
9772         s << "\tpNext = " << value.pNext << '\n';
9773         s << "\tdeviceAddress = " << value.deviceAddress << '\n';
9774         s << '}';
9775         return s;
9776 }
9777
9778 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceToolPropertiesEXT& value)
9779 {
9780         s << "VkPhysicalDeviceToolPropertiesEXT = {\n";
9781         s << "\tsType = " << value.sType << '\n';
9782         s << "\tpNext = " << value.pNext << '\n';
9783         s << "\tname = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<char>(DE_ARRAY_BEGIN(value.name)), tcu::Format::HexIterator<char>(DE_ARRAY_END(value.name))) << '\n';
9784         s << "\tversion = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<char>(DE_ARRAY_BEGIN(value.version)), tcu::Format::HexIterator<char>(DE_ARRAY_END(value.version))) << '\n';
9785         s << "\tpurposes = " << getToolPurposeFlagsEXTStr(value.purposes) << '\n';
9786         s << "\tdescription = " << (const char*)value.description << '\n';
9787         s << "\tlayer = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<char>(DE_ARRAY_BEGIN(value.layer)), tcu::Format::HexIterator<char>(DE_ARRAY_END(value.layer))) << '\n';
9788         s << '}';
9789         return s;
9790 }
9791
9792 std::ostream& operator<< (std::ostream& s, const VkValidationFeaturesEXT& value)
9793 {
9794         s << "VkValidationFeaturesEXT = {\n";
9795         s << "\tsType = " << value.sType << '\n';
9796         s << "\tpNext = " << value.pNext << '\n';
9797         s << "\tenabledValidationFeatureCount = " << value.enabledValidationFeatureCount << '\n';
9798         s << "\tpEnabledValidationFeatures = " << value.pEnabledValidationFeatures << '\n';
9799         s << "\tdisabledValidationFeatureCount = " << value.disabledValidationFeatureCount << '\n';
9800         s << "\tpDisabledValidationFeatures = " << value.pDisabledValidationFeatures << '\n';
9801         s << '}';
9802         return s;
9803 }
9804
9805 std::ostream& operator<< (std::ostream& s, const VkCooperativeMatrixPropertiesNV& value)
9806 {
9807         s << "VkCooperativeMatrixPropertiesNV = {\n";
9808         s << "\tsType = " << value.sType << '\n';
9809         s << "\tpNext = " << value.pNext << '\n';
9810         s << "\tMSize = " << value.MSize << '\n';
9811         s << "\tNSize = " << value.NSize << '\n';
9812         s << "\tKSize = " << value.KSize << '\n';
9813         s << "\tAType = " << value.AType << '\n';
9814         s << "\tBType = " << value.BType << '\n';
9815         s << "\tCType = " << value.CType << '\n';
9816         s << "\tDType = " << value.DType << '\n';
9817         s << "\tscope = " << value.scope << '\n';
9818         s << '}';
9819         return s;
9820 }
9821
9822 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceCooperativeMatrixFeaturesNV& value)
9823 {
9824         s << "VkPhysicalDeviceCooperativeMatrixFeaturesNV = {\n";
9825         s << "\tsType = " << value.sType << '\n';
9826         s << "\tpNext = " << value.pNext << '\n';
9827         s << "\tcooperativeMatrix = " << value.cooperativeMatrix << '\n';
9828         s << "\tcooperativeMatrixRobustBufferAccess = " << value.cooperativeMatrixRobustBufferAccess << '\n';
9829         s << '}';
9830         return s;
9831 }
9832
9833 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceCooperativeMatrixPropertiesNV& value)
9834 {
9835         s << "VkPhysicalDeviceCooperativeMatrixPropertiesNV = {\n";
9836         s << "\tsType = " << value.sType << '\n';
9837         s << "\tpNext = " << value.pNext << '\n';
9838         s << "\tcooperativeMatrixSupportedStages = " << getShaderStageFlagsStr(value.cooperativeMatrixSupportedStages) << '\n';
9839         s << '}';
9840         return s;
9841 }
9842
9843 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceCoverageReductionModeFeaturesNV& value)
9844 {
9845         s << "VkPhysicalDeviceCoverageReductionModeFeaturesNV = {\n";
9846         s << "\tsType = " << value.sType << '\n';
9847         s << "\tpNext = " << value.pNext << '\n';
9848         s << "\tcoverageReductionMode = " << value.coverageReductionMode << '\n';
9849         s << '}';
9850         return s;
9851 }
9852
9853 std::ostream& operator<< (std::ostream& s, const VkPipelineCoverageReductionStateCreateInfoNV& value)
9854 {
9855         s << "VkPipelineCoverageReductionStateCreateInfoNV = {\n";
9856         s << "\tsType = " << value.sType << '\n';
9857         s << "\tpNext = " << value.pNext << '\n';
9858         s << "\tflags = " << getPipelineCoverageReductionStateCreateFlagsNVStr(value.flags) << '\n';
9859         s << "\tcoverageReductionMode = " << value.coverageReductionMode << '\n';
9860         s << '}';
9861         return s;
9862 }
9863
9864 std::ostream& operator<< (std::ostream& s, const VkFramebufferMixedSamplesCombinationNV& value)
9865 {
9866         s << "VkFramebufferMixedSamplesCombinationNV = {\n";
9867         s << "\tsType = " << value.sType << '\n';
9868         s << "\tpNext = " << value.pNext << '\n';
9869         s << "\tcoverageReductionMode = " << value.coverageReductionMode << '\n';
9870         s << "\trasterizationSamples = " << value.rasterizationSamples << '\n';
9871         s << "\tdepthStencilSamples = " << getSampleCountFlagsStr(value.depthStencilSamples) << '\n';
9872         s << "\tcolorSamples = " << getSampleCountFlagsStr(value.colorSamples) << '\n';
9873         s << '}';
9874         return s;
9875 }
9876
9877 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT& value)
9878 {
9879         s << "VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT = {\n";
9880         s << "\tsType = " << value.sType << '\n';
9881         s << "\tpNext = " << value.pNext << '\n';
9882         s << "\tfragmentShaderSampleInterlock = " << value.fragmentShaderSampleInterlock << '\n';
9883         s << "\tfragmentShaderPixelInterlock = " << value.fragmentShaderPixelInterlock << '\n';
9884         s << "\tfragmentShaderShadingRateInterlock = " << value.fragmentShaderShadingRateInterlock << '\n';
9885         s << '}';
9886         return s;
9887 }
9888
9889 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceYcbcrImageArraysFeaturesEXT& value)
9890 {
9891         s << "VkPhysicalDeviceYcbcrImageArraysFeaturesEXT = {\n";
9892         s << "\tsType = " << value.sType << '\n';
9893         s << "\tpNext = " << value.pNext << '\n';
9894         s << "\tycbcrImageArrays = " << value.ycbcrImageArrays << '\n';
9895         s << '}';
9896         return s;
9897 }
9898
9899 std::ostream& operator<< (std::ostream& s, const VkHeadlessSurfaceCreateInfoEXT& value)
9900 {
9901         s << "VkHeadlessSurfaceCreateInfoEXT = {\n";
9902         s << "\tsType = " << value.sType << '\n';
9903         s << "\tpNext = " << value.pNext << '\n';
9904         s << "\tflags = " << getHeadlessSurfaceCreateFlagsEXTStr(value.flags) << '\n';
9905         s << '}';
9906         return s;
9907 }
9908
9909 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceLineRasterizationFeaturesEXT& value)
9910 {
9911         s << "VkPhysicalDeviceLineRasterizationFeaturesEXT = {\n";
9912         s << "\tsType = " << value.sType << '\n';
9913         s << "\tpNext = " << value.pNext << '\n';
9914         s << "\trectangularLines = " << value.rectangularLines << '\n';
9915         s << "\tbresenhamLines = " << value.bresenhamLines << '\n';
9916         s << "\tsmoothLines = " << value.smoothLines << '\n';
9917         s << "\tstippledRectangularLines = " << value.stippledRectangularLines << '\n';
9918         s << "\tstippledBresenhamLines = " << value.stippledBresenhamLines << '\n';
9919         s << "\tstippledSmoothLines = " << value.stippledSmoothLines << '\n';
9920         s << '}';
9921         return s;
9922 }
9923
9924 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceLineRasterizationPropertiesEXT& value)
9925 {
9926         s << "VkPhysicalDeviceLineRasterizationPropertiesEXT = {\n";
9927         s << "\tsType = " << value.sType << '\n';
9928         s << "\tpNext = " << value.pNext << '\n';
9929         s << "\tlineSubPixelPrecisionBits = " << value.lineSubPixelPrecisionBits << '\n';
9930         s << '}';
9931         return s;
9932 }
9933
9934 std::ostream& operator<< (std::ostream& s, const VkPipelineRasterizationLineStateCreateInfoEXT& value)
9935 {
9936         s << "VkPipelineRasterizationLineStateCreateInfoEXT = {\n";
9937         s << "\tsType = " << value.sType << '\n';
9938         s << "\tpNext = " << value.pNext << '\n';
9939         s << "\tlineRasterizationMode = " << value.lineRasterizationMode << '\n';
9940         s << "\tstippledLineEnable = " << value.stippledLineEnable << '\n';
9941         s << "\tlineStippleFactor = " << value.lineStippleFactor << '\n';
9942         s << "\tlineStipplePattern = " << value.lineStipplePattern << '\n';
9943         s << '}';
9944         return s;
9945 }
9946
9947 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceShaderAtomicFloatFeaturesEXT& value)
9948 {
9949         s << "VkPhysicalDeviceShaderAtomicFloatFeaturesEXT = {\n";
9950         s << "\tsType = " << value.sType << '\n';
9951         s << "\tpNext = " << value.pNext << '\n';
9952         s << "\tshaderBufferFloat32Atomics = " << value.shaderBufferFloat32Atomics << '\n';
9953         s << "\tshaderBufferFloat32AtomicAdd = " << value.shaderBufferFloat32AtomicAdd << '\n';
9954         s << "\tshaderBufferFloat64Atomics = " << value.shaderBufferFloat64Atomics << '\n';
9955         s << "\tshaderBufferFloat64AtomicAdd = " << value.shaderBufferFloat64AtomicAdd << '\n';
9956         s << "\tshaderSharedFloat32Atomics = " << value.shaderSharedFloat32Atomics << '\n';
9957         s << "\tshaderSharedFloat32AtomicAdd = " << value.shaderSharedFloat32AtomicAdd << '\n';
9958         s << "\tshaderSharedFloat64Atomics = " << value.shaderSharedFloat64Atomics << '\n';
9959         s << "\tshaderSharedFloat64AtomicAdd = " << value.shaderSharedFloat64AtomicAdd << '\n';
9960         s << "\tshaderImageFloat32Atomics = " << value.shaderImageFloat32Atomics << '\n';
9961         s << "\tshaderImageFloat32AtomicAdd = " << value.shaderImageFloat32AtomicAdd << '\n';
9962         s << "\tsparseImageFloat32Atomics = " << value.sparseImageFloat32Atomics << '\n';
9963         s << "\tsparseImageFloat32AtomicAdd = " << value.sparseImageFloat32AtomicAdd << '\n';
9964         s << '}';
9965         return s;
9966 }
9967
9968 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceIndexTypeUint8FeaturesEXT& value)
9969 {
9970         s << "VkPhysicalDeviceIndexTypeUint8FeaturesEXT = {\n";
9971         s << "\tsType = " << value.sType << '\n';
9972         s << "\tpNext = " << value.pNext << '\n';
9973         s << "\tindexTypeUint8 = " << value.indexTypeUint8 << '\n';
9974         s << '}';
9975         return s;
9976 }
9977
9978 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceExtendedDynamicStateFeaturesEXT& value)
9979 {
9980         s << "VkPhysicalDeviceExtendedDynamicStateFeaturesEXT = {\n";
9981         s << "\tsType = " << value.sType << '\n';
9982         s << "\tpNext = " << value.pNext << '\n';
9983         s << "\textendedDynamicState = " << value.extendedDynamicState << '\n';
9984         s << '}';
9985         return s;
9986 }
9987
9988 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT& value)
9989 {
9990         s << "VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT = {\n";
9991         s << "\tsType = " << value.sType << '\n';
9992         s << "\tpNext = " << value.pNext << '\n';
9993         s << "\tshaderDemoteToHelperInvocation = " << value.shaderDemoteToHelperInvocation << '\n';
9994         s << '}';
9995         return s;
9996 }
9997
9998 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV& value)
9999 {
10000         s << "VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV = {\n";
10001         s << "\tsType = " << value.sType << '\n';
10002         s << "\tpNext = " << value.pNext << '\n';
10003         s << "\tmaxGraphicsShaderGroupCount = " << value.maxGraphicsShaderGroupCount << '\n';
10004         s << "\tmaxIndirectSequenceCount = " << value.maxIndirectSequenceCount << '\n';
10005         s << "\tmaxIndirectCommandsTokenCount = " << value.maxIndirectCommandsTokenCount << '\n';
10006         s << "\tmaxIndirectCommandsStreamCount = " << value.maxIndirectCommandsStreamCount << '\n';
10007         s << "\tmaxIndirectCommandsTokenOffset = " << value.maxIndirectCommandsTokenOffset << '\n';
10008         s << "\tmaxIndirectCommandsStreamStride = " << value.maxIndirectCommandsStreamStride << '\n';
10009         s << "\tminSequencesCountBufferOffsetAlignment = " << value.minSequencesCountBufferOffsetAlignment << '\n';
10010         s << "\tminSequencesIndexBufferOffsetAlignment = " << value.minSequencesIndexBufferOffsetAlignment << '\n';
10011         s << "\tminIndirectCommandsBufferOffsetAlignment = " << value.minIndirectCommandsBufferOffsetAlignment << '\n';
10012         s << '}';
10013         return s;
10014 }
10015
10016 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV& value)
10017 {
10018         s << "VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV = {\n";
10019         s << "\tsType = " << value.sType << '\n';
10020         s << "\tpNext = " << value.pNext << '\n';
10021         s << "\tdeviceGeneratedCommands = " << value.deviceGeneratedCommands << '\n';
10022         s << '}';
10023         return s;
10024 }
10025
10026 std::ostream& operator<< (std::ostream& s, const VkGraphicsShaderGroupCreateInfoNV& value)
10027 {
10028         s << "VkGraphicsShaderGroupCreateInfoNV = {\n";
10029         s << "\tsType = " << value.sType << '\n';
10030         s << "\tpNext = " << value.pNext << '\n';
10031         s << "\tstageCount = " << value.stageCount << '\n';
10032         s << "\tpStages = " << value.pStages << '\n';
10033         s << "\tpVertexInputState = " << value.pVertexInputState << '\n';
10034         s << "\tpTessellationState = " << value.pTessellationState << '\n';
10035         s << '}';
10036         return s;
10037 }
10038
10039 std::ostream& operator<< (std::ostream& s, const VkGraphicsPipelineShaderGroupsCreateInfoNV& value)
10040 {
10041         s << "VkGraphicsPipelineShaderGroupsCreateInfoNV = {\n";
10042         s << "\tsType = " << value.sType << '\n';
10043         s << "\tpNext = " << value.pNext << '\n';
10044         s << "\tgroupCount = " << value.groupCount << '\n';
10045         s << "\tpGroups = " << value.pGroups << '\n';
10046         s << "\tpipelineCount = " << value.pipelineCount << '\n';
10047         s << "\tpPipelines = " << value.pPipelines << '\n';
10048         s << '}';
10049         return s;
10050 }
10051
10052 std::ostream& operator<< (std::ostream& s, const VkBindShaderGroupIndirectCommandNV& value)
10053 {
10054         s << "VkBindShaderGroupIndirectCommandNV = {\n";
10055         s << "\tgroupIndex = " << value.groupIndex << '\n';
10056         s << '}';
10057         return s;
10058 }
10059
10060 std::ostream& operator<< (std::ostream& s, const VkBindIndexBufferIndirectCommandNV& value)
10061 {
10062         s << "VkBindIndexBufferIndirectCommandNV = {\n";
10063         s << "\tbufferAddress = " << value.bufferAddress << '\n';
10064         s << "\tsize = " << value.size << '\n';
10065         s << "\tindexType = " << value.indexType << '\n';
10066         s << '}';
10067         return s;
10068 }
10069
10070 std::ostream& operator<< (std::ostream& s, const VkBindVertexBufferIndirectCommandNV& value)
10071 {
10072         s << "VkBindVertexBufferIndirectCommandNV = {\n";
10073         s << "\tbufferAddress = " << value.bufferAddress << '\n';
10074         s << "\tsize = " << value.size << '\n';
10075         s << "\tstride = " << value.stride << '\n';
10076         s << '}';
10077         return s;
10078 }
10079
10080 std::ostream& operator<< (std::ostream& s, const VkSetStateFlagsIndirectCommandNV& value)
10081 {
10082         s << "VkSetStateFlagsIndirectCommandNV = {\n";
10083         s << "\tdata = " << value.data << '\n';
10084         s << '}';
10085         return s;
10086 }
10087
10088 std::ostream& operator<< (std::ostream& s, const VkIndirectCommandsStreamNV& value)
10089 {
10090         s << "VkIndirectCommandsStreamNV = {\n";
10091         s << "\tbuffer = " << value.buffer << '\n';
10092         s << "\toffset = " << value.offset << '\n';
10093         s << '}';
10094         return s;
10095 }
10096
10097 std::ostream& operator<< (std::ostream& s, const VkIndirectCommandsLayoutTokenNV& value)
10098 {
10099         s << "VkIndirectCommandsLayoutTokenNV = {\n";
10100         s << "\tsType = " << value.sType << '\n';
10101         s << "\tpNext = " << value.pNext << '\n';
10102         s << "\ttokenType = " << value.tokenType << '\n';
10103         s << "\tstream = " << value.stream << '\n';
10104         s << "\toffset = " << value.offset << '\n';
10105         s << "\tvertexBindingUnit = " << value.vertexBindingUnit << '\n';
10106         s << "\tvertexDynamicStride = " << value.vertexDynamicStride << '\n';
10107         s << "\tpushconstantPipelineLayout = " << value.pushconstantPipelineLayout << '\n';
10108         s << "\tpushconstantShaderStageFlags = " << getShaderStageFlagsStr(value.pushconstantShaderStageFlags) << '\n';
10109         s << "\tpushconstantOffset = " << value.pushconstantOffset << '\n';
10110         s << "\tpushconstantSize = " << value.pushconstantSize << '\n';
10111         s << "\tindirectStateFlags = " << getIndirectStateFlagsNVStr(value.indirectStateFlags) << '\n';
10112         s << "\tindexTypeCount = " << value.indexTypeCount << '\n';
10113         s << "\tpIndexTypes = " << value.pIndexTypes << '\n';
10114         s << "\tpIndexTypeValues = " << value.pIndexTypeValues << '\n';
10115         s << '}';
10116         return s;
10117 }
10118
10119 std::ostream& operator<< (std::ostream& s, const VkIndirectCommandsLayoutCreateInfoNV& value)
10120 {
10121         s << "VkIndirectCommandsLayoutCreateInfoNV = {\n";
10122         s << "\tsType = " << value.sType << '\n';
10123         s << "\tpNext = " << value.pNext << '\n';
10124         s << "\tflags = " << getIndirectCommandsLayoutUsageFlagsNVStr(value.flags) << '\n';
10125         s << "\tpipelineBindPoint = " << value.pipelineBindPoint << '\n';
10126         s << "\ttokenCount = " << value.tokenCount << '\n';
10127         s << "\tpTokens = " << value.pTokens << '\n';
10128         s << "\tstreamCount = " << value.streamCount << '\n';
10129         s << "\tpStreamStrides = " << value.pStreamStrides << '\n';
10130         s << '}';
10131         return s;
10132 }
10133
10134 std::ostream& operator<< (std::ostream& s, const VkGeneratedCommandsInfoNV& value)
10135 {
10136         s << "VkGeneratedCommandsInfoNV = {\n";
10137         s << "\tsType = " << value.sType << '\n';
10138         s << "\tpNext = " << value.pNext << '\n';
10139         s << "\tpipelineBindPoint = " << value.pipelineBindPoint << '\n';
10140         s << "\tpipeline = " << value.pipeline << '\n';
10141         s << "\tindirectCommandsLayout = " << value.indirectCommandsLayout << '\n';
10142         s << "\tstreamCount = " << value.streamCount << '\n';
10143         s << "\tpStreams = " << value.pStreams << '\n';
10144         s << "\tsequencesCount = " << value.sequencesCount << '\n';
10145         s << "\tpreprocessBuffer = " << value.preprocessBuffer << '\n';
10146         s << "\tpreprocessOffset = " << value.preprocessOffset << '\n';
10147         s << "\tpreprocessSize = " << value.preprocessSize << '\n';
10148         s << "\tsequencesCountBuffer = " << value.sequencesCountBuffer << '\n';
10149         s << "\tsequencesCountOffset = " << value.sequencesCountOffset << '\n';
10150         s << "\tsequencesIndexBuffer = " << value.sequencesIndexBuffer << '\n';
10151         s << "\tsequencesIndexOffset = " << value.sequencesIndexOffset << '\n';
10152         s << '}';
10153         return s;
10154 }
10155
10156 std::ostream& operator<< (std::ostream& s, const VkGeneratedCommandsMemoryRequirementsInfoNV& value)
10157 {
10158         s << "VkGeneratedCommandsMemoryRequirementsInfoNV = {\n";
10159         s << "\tsType = " << value.sType << '\n';
10160         s << "\tpNext = " << value.pNext << '\n';
10161         s << "\tpipelineBindPoint = " << value.pipelineBindPoint << '\n';
10162         s << "\tpipeline = " << value.pipeline << '\n';
10163         s << "\tindirectCommandsLayout = " << value.indirectCommandsLayout << '\n';
10164         s << "\tmaxSequencesCount = " << value.maxSequencesCount << '\n';
10165         s << '}';
10166         return s;
10167 }
10168
10169 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceInheritedViewportScissorFeaturesNV& value)
10170 {
10171         s << "VkPhysicalDeviceInheritedViewportScissorFeaturesNV = {\n";
10172         s << "\tsType = " << value.sType << '\n';
10173         s << "\tpNext = " << value.pNext << '\n';
10174         s << "\tinheritedViewportScissor2D = " << value.inheritedViewportScissor2D << '\n';
10175         s << '}';
10176         return s;
10177 }
10178
10179 std::ostream& operator<< (std::ostream& s, const VkCommandBufferInheritanceViewportScissorInfoNV& value)
10180 {
10181         s << "VkCommandBufferInheritanceViewportScissorInfoNV = {\n";
10182         s << "\tsType = " << value.sType << '\n';
10183         s << "\tpNext = " << value.pNext << '\n';
10184         s << "\tviewportScissor2D = " << value.viewportScissor2D << '\n';
10185         s << "\tviewportDepthCount = " << value.viewportDepthCount << '\n';
10186         s << "\tpViewportDepths = " << value.pViewportDepths << '\n';
10187         s << '}';
10188         return s;
10189 }
10190
10191 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT& value)
10192 {
10193         s << "VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT = {\n";
10194         s << "\tsType = " << value.sType << '\n';
10195         s << "\tpNext = " << value.pNext << '\n';
10196         s << "\ttexelBufferAlignment = " << value.texelBufferAlignment << '\n';
10197         s << '}';
10198         return s;
10199 }
10200
10201 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT& value)
10202 {
10203         s << "VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT = {\n";
10204         s << "\tsType = " << value.sType << '\n';
10205         s << "\tpNext = " << value.pNext << '\n';
10206         s << "\tstorageTexelBufferOffsetAlignmentBytes = " << value.storageTexelBufferOffsetAlignmentBytes << '\n';
10207         s << "\tstorageTexelBufferOffsetSingleTexelAlignment = " << value.storageTexelBufferOffsetSingleTexelAlignment << '\n';
10208         s << "\tuniformTexelBufferOffsetAlignmentBytes = " << value.uniformTexelBufferOffsetAlignmentBytes << '\n';
10209         s << "\tuniformTexelBufferOffsetSingleTexelAlignment = " << value.uniformTexelBufferOffsetSingleTexelAlignment << '\n';
10210         s << '}';
10211         return s;
10212 }
10213
10214 std::ostream& operator<< (std::ostream& s, const VkRenderPassTransformBeginInfoQCOM& value)
10215 {
10216         s << "VkRenderPassTransformBeginInfoQCOM = {\n";
10217         s << "\tsType = " << value.sType << '\n';
10218         s << "\tpNext = " << value.pNext << '\n';
10219         s << "\ttransform = " << value.transform << '\n';
10220         s << '}';
10221         return s;
10222 }
10223
10224 std::ostream& operator<< (std::ostream& s, const VkCommandBufferInheritanceRenderPassTransformInfoQCOM& value)
10225 {
10226         s << "VkCommandBufferInheritanceRenderPassTransformInfoQCOM = {\n";
10227         s << "\tsType = " << value.sType << '\n';
10228         s << "\tpNext = " << value.pNext << '\n';
10229         s << "\ttransform = " << value.transform << '\n';
10230         s << "\trenderArea = " << value.renderArea << '\n';
10231         s << '}';
10232         return s;
10233 }
10234
10235 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceDeviceMemoryReportFeaturesEXT& value)
10236 {
10237         s << "VkPhysicalDeviceDeviceMemoryReportFeaturesEXT = {\n";
10238         s << "\tsType = " << value.sType << '\n';
10239         s << "\tpNext = " << value.pNext << '\n';
10240         s << "\tdeviceMemoryReport = " << value.deviceMemoryReport << '\n';
10241         s << '}';
10242         return s;
10243 }
10244
10245 std::ostream& operator<< (std::ostream& s, const VkDeviceMemoryReportCallbackDataEXT& value)
10246 {
10247         s << "VkDeviceMemoryReportCallbackDataEXT = {\n";
10248         s << "\tsType = " << value.sType << '\n';
10249         s << "\tpNext = " << value.pNext << '\n';
10250         s << "\tflags = " << getDeviceMemoryReportFlagsEXTStr(value.flags) << '\n';
10251         s << "\ttype = " << value.type << '\n';
10252         s << "\tmemoryObjectId = " << value.memoryObjectId << '\n';
10253         s << "\tsize = " << value.size << '\n';
10254         s << "\tobjectType = " << value.objectType << '\n';
10255         s << "\tobjectHandle = " << value.objectHandle << '\n';
10256         s << "\theapIndex = " << value.heapIndex << '\n';
10257         s << '}';
10258         return s;
10259 }
10260
10261 std::ostream& operator<< (std::ostream& s, const VkDeviceDeviceMemoryReportCreateInfoEXT& value)
10262 {
10263         s << "VkDeviceDeviceMemoryReportCreateInfoEXT = {\n";
10264         s << "\tsType = " << value.sType << '\n';
10265         s << "\tpNext = " << value.pNext << '\n';
10266         s << "\tflags = " << getDeviceMemoryReportFlagsEXTStr(value.flags) << '\n';
10267         s << "\tpfnUserCallback = " << value.pfnUserCallback << '\n';
10268         s << "\tpUserData = " << value.pUserData << '\n';
10269         s << '}';
10270         return s;
10271 }
10272
10273 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceRobustness2FeaturesEXT& value)
10274 {
10275         s << "VkPhysicalDeviceRobustness2FeaturesEXT = {\n";
10276         s << "\tsType = " << value.sType << '\n';
10277         s << "\tpNext = " << value.pNext << '\n';
10278         s << "\trobustBufferAccess2 = " << value.robustBufferAccess2 << '\n';
10279         s << "\trobustImageAccess2 = " << value.robustImageAccess2 << '\n';
10280         s << "\tnullDescriptor = " << value.nullDescriptor << '\n';
10281         s << '}';
10282         return s;
10283 }
10284
10285 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceRobustness2PropertiesEXT& value)
10286 {
10287         s << "VkPhysicalDeviceRobustness2PropertiesEXT = {\n";
10288         s << "\tsType = " << value.sType << '\n';
10289         s << "\tpNext = " << value.pNext << '\n';
10290         s << "\trobustStorageBufferAccessSizeAlignment = " << value.robustStorageBufferAccessSizeAlignment << '\n';
10291         s << "\trobustUniformBufferAccessSizeAlignment = " << value.robustUniformBufferAccessSizeAlignment << '\n';
10292         s << '}';
10293         return s;
10294 }
10295
10296 std::ostream& operator<< (std::ostream& s, const VkSamplerCustomBorderColorCreateInfoEXT& value)
10297 {
10298         s << "VkSamplerCustomBorderColorCreateInfoEXT = {\n";
10299         s << "\tsType = " << value.sType << '\n';
10300         s << "\tpNext = " << value.pNext << '\n';
10301         s << "\tcustomBorderColor = " << value.customBorderColor << '\n';
10302         s << "\tformat = " << value.format << '\n';
10303         s << '}';
10304         return s;
10305 }
10306
10307 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceCustomBorderColorPropertiesEXT& value)
10308 {
10309         s << "VkPhysicalDeviceCustomBorderColorPropertiesEXT = {\n";
10310         s << "\tsType = " << value.sType << '\n';
10311         s << "\tpNext = " << value.pNext << '\n';
10312         s << "\tmaxCustomBorderColorSamplers = " << value.maxCustomBorderColorSamplers << '\n';
10313         s << '}';
10314         return s;
10315 }
10316
10317 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceCustomBorderColorFeaturesEXT& value)
10318 {
10319         s << "VkPhysicalDeviceCustomBorderColorFeaturesEXT = {\n";
10320         s << "\tsType = " << value.sType << '\n';
10321         s << "\tpNext = " << value.pNext << '\n';
10322         s << "\tcustomBorderColors = " << value.customBorderColors << '\n';
10323         s << "\tcustomBorderColorWithoutFormat = " << value.customBorderColorWithoutFormat << '\n';
10324         s << '}';
10325         return s;
10326 }
10327
10328 std::ostream& operator<< (std::ostream& s, const VkPhysicalDevicePrivateDataFeaturesEXT& value)
10329 {
10330         s << "VkPhysicalDevicePrivateDataFeaturesEXT = {\n";
10331         s << "\tsType = " << value.sType << '\n';
10332         s << "\tpNext = " << value.pNext << '\n';
10333         s << "\tprivateData = " << value.privateData << '\n';
10334         s << '}';
10335         return s;
10336 }
10337
10338 std::ostream& operator<< (std::ostream& s, const VkDevicePrivateDataCreateInfoEXT& value)
10339 {
10340         s << "VkDevicePrivateDataCreateInfoEXT = {\n";
10341         s << "\tsType = " << value.sType << '\n';
10342         s << "\tpNext = " << value.pNext << '\n';
10343         s << "\tprivateDataSlotRequestCount = " << value.privateDataSlotRequestCount << '\n';
10344         s << '}';
10345         return s;
10346 }
10347
10348 std::ostream& operator<< (std::ostream& s, const VkPrivateDataSlotCreateInfoEXT& value)
10349 {
10350         s << "VkPrivateDataSlotCreateInfoEXT = {\n";
10351         s << "\tsType = " << value.sType << '\n';
10352         s << "\tpNext = " << value.pNext << '\n';
10353         s << "\tflags = " << getPrivateDataSlotCreateFlagsEXTStr(value.flags) << '\n';
10354         s << '}';
10355         return s;
10356 }
10357
10358 std::ostream& operator<< (std::ostream& s, const VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT& value)
10359 {
10360         s << "VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT = {\n";
10361         s << "\tsType = " << value.sType << '\n';
10362         s << "\tpNext = " << value.pNext << '\n';
10363         s << "\tpipelineCreationCacheControl = " << value.pipelineCreationCacheControl << '\n';
10364         s << '}';
10365         return s;
10366 }
10367
10368 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceDiagnosticsConfigFeaturesNV& value)
10369 {
10370         s << "VkPhysicalDeviceDiagnosticsConfigFeaturesNV = {\n";
10371         s << "\tsType = " << value.sType << '\n';
10372         s << "\tpNext = " << value.pNext << '\n';
10373         s << "\tdiagnosticsConfig = " << value.diagnosticsConfig << '\n';
10374         s << '}';
10375         return s;
10376 }
10377
10378 std::ostream& operator<< (std::ostream& s, const VkDeviceDiagnosticsConfigCreateInfoNV& value)
10379 {
10380         s << "VkDeviceDiagnosticsConfigCreateInfoNV = {\n";
10381         s << "\tsType = " << value.sType << '\n';
10382         s << "\tpNext = " << value.pNext << '\n';
10383         s << "\tflags = " << getDeviceDiagnosticsConfigFlagsNVStr(value.flags) << '\n';
10384         s << '}';
10385         return s;
10386 }
10387
10388 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV& value)
10389 {
10390         s << "VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV = {\n";
10391         s << "\tsType = " << value.sType << '\n';
10392         s << "\tpNext = " << value.pNext << '\n';
10393         s << "\tfragmentShadingRateEnums = " << value.fragmentShadingRateEnums << '\n';
10394         s << "\tsupersampleFragmentShadingRates = " << value.supersampleFragmentShadingRates << '\n';
10395         s << "\tnoInvocationFragmentShadingRates = " << value.noInvocationFragmentShadingRates << '\n';
10396         s << '}';
10397         return s;
10398 }
10399
10400 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV& value)
10401 {
10402         s << "VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV = {\n";
10403         s << "\tsType = " << value.sType << '\n';
10404         s << "\tpNext = " << value.pNext << '\n';
10405         s << "\tmaxFragmentShadingRateInvocationCount = " << value.maxFragmentShadingRateInvocationCount << '\n';
10406         s << '}';
10407         return s;
10408 }
10409
10410 std::ostream& operator<< (std::ostream& s, const VkPipelineFragmentShadingRateEnumStateCreateInfoNV& value)
10411 {
10412         s << "VkPipelineFragmentShadingRateEnumStateCreateInfoNV = {\n";
10413         s << "\tsType = " << value.sType << '\n';
10414         s << "\tpNext = " << value.pNext << '\n';
10415         s << "\tshadingRateType = " << value.shadingRateType << '\n';
10416         s << "\tshadingRate = " << value.shadingRate << '\n';
10417         s << "\tcombinerOps = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.combinerOps), DE_ARRAY_END(value.combinerOps)) << '\n';
10418         s << '}';
10419         return s;
10420 }
10421
10422 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT& value)
10423 {
10424         s << "VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT = {\n";
10425         s << "\tsType = " << value.sType << '\n';
10426         s << "\tpNext = " << value.pNext << '\n';
10427         s << "\tycbcr2plane444Formats = " << value.ycbcr2plane444Formats << '\n';
10428         s << '}';
10429         return s;
10430 }
10431
10432 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceFragmentDensityMap2FeaturesEXT& value)
10433 {
10434         s << "VkPhysicalDeviceFragmentDensityMap2FeaturesEXT = {\n";
10435         s << "\tsType = " << value.sType << '\n';
10436         s << "\tpNext = " << value.pNext << '\n';
10437         s << "\tfragmentDensityMapDeferred = " << value.fragmentDensityMapDeferred << '\n';
10438         s << '}';
10439         return s;
10440 }
10441
10442 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceFragmentDensityMap2PropertiesEXT& value)
10443 {
10444         s << "VkPhysicalDeviceFragmentDensityMap2PropertiesEXT = {\n";
10445         s << "\tsType = " << value.sType << '\n';
10446         s << "\tpNext = " << value.pNext << '\n';
10447         s << "\tsubsampledLoads = " << value.subsampledLoads << '\n';
10448         s << "\tsubsampledCoarseReconstructionEarlyAccess = " << value.subsampledCoarseReconstructionEarlyAccess << '\n';
10449         s << "\tmaxSubsampledArrayLayers = " << value.maxSubsampledArrayLayers << '\n';
10450         s << "\tmaxDescriptorSetSubsampledSamplers = " << value.maxDescriptorSetSubsampledSamplers << '\n';
10451         s << '}';
10452         return s;
10453 }
10454
10455 std::ostream& operator<< (std::ostream& s, const VkCopyCommandTransformInfoQCOM& value)
10456 {
10457         s << "VkCopyCommandTransformInfoQCOM = {\n";
10458         s << "\tsType = " << value.sType << '\n';
10459         s << "\tpNext = " << value.pNext << '\n';
10460         s << "\ttransform = " << value.transform << '\n';
10461         s << '}';
10462         return s;
10463 }
10464
10465 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceImageRobustnessFeaturesEXT& value)
10466 {
10467         s << "VkPhysicalDeviceImageRobustnessFeaturesEXT = {\n";
10468         s << "\tsType = " << value.sType << '\n';
10469         s << "\tpNext = " << value.pNext << '\n';
10470         s << "\trobustImageAccess = " << value.robustImageAccess << '\n';
10471         s << '}';
10472         return s;
10473 }
10474
10475 std::ostream& operator<< (std::ostream& s, const VkPhysicalDevice4444FormatsFeaturesEXT& value)
10476 {
10477         s << "VkPhysicalDevice4444FormatsFeaturesEXT = {\n";
10478         s << "\tsType = " << value.sType << '\n';
10479         s << "\tpNext = " << value.pNext << '\n';
10480         s << "\tformatA4R4G4B4 = " << value.formatA4R4G4B4 << '\n';
10481         s << "\tformatA4B4G4R4 = " << value.formatA4B4G4R4 << '\n';
10482         s << '}';
10483         return s;
10484 }
10485
10486 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE& value)
10487 {
10488         s << "VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE = {\n";
10489         s << "\tsType = " << value.sType << '\n';
10490         s << "\tpNext = " << value.pNext << '\n';
10491         s << "\tmutableDescriptorType = " << value.mutableDescriptorType << '\n';
10492         s << '}';
10493         return s;
10494 }
10495
10496 std::ostream& operator<< (std::ostream& s, const VkMutableDescriptorTypeListVALVE& value)
10497 {
10498         s << "VkMutableDescriptorTypeListVALVE = {\n";
10499         s << "\tdescriptorTypeCount = " << value.descriptorTypeCount << '\n';
10500         s << "\tpDescriptorTypes = " << value.pDescriptorTypes << '\n';
10501         s << '}';
10502         return s;
10503 }
10504
10505 std::ostream& operator<< (std::ostream& s, const VkMutableDescriptorTypeCreateInfoVALVE& value)
10506 {
10507         s << "VkMutableDescriptorTypeCreateInfoVALVE = {\n";
10508         s << "\tsType = " << value.sType << '\n';
10509         s << "\tpNext = " << value.pNext << '\n';
10510         s << "\tmutableDescriptorTypeListCount = " << value.mutableDescriptorTypeListCount << '\n';
10511         s << "\tpMutableDescriptorTypeLists = " << value.pMutableDescriptorTypeLists << '\n';
10512         s << '}';
10513         return s;
10514 }
10515
10516 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT& value)
10517 {
10518         s << "VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT = {\n";
10519         s << "\tsType = " << value.sType << '\n';
10520         s << "\tpNext = " << value.pNext << '\n';
10521         s << "\tvertexInputDynamicState = " << value.vertexInputDynamicState << '\n';
10522         s << '}';
10523         return s;
10524 }
10525
10526 std::ostream& operator<< (std::ostream& s, const VkVertexInputBindingDescription2EXT& value)
10527 {
10528         s << "VkVertexInputBindingDescription2EXT = {\n";
10529         s << "\tsType = " << value.sType << '\n';
10530         s << "\tpNext = " << value.pNext << '\n';
10531         s << "\tbinding = " << value.binding << '\n';
10532         s << "\tstride = " << value.stride << '\n';
10533         s << "\tinputRate = " << value.inputRate << '\n';
10534         s << "\tdivisor = " << value.divisor << '\n';
10535         s << '}';
10536         return s;
10537 }
10538
10539 std::ostream& operator<< (std::ostream& s, const VkVertexInputAttributeDescription2EXT& value)
10540 {
10541         s << "VkVertexInputAttributeDescription2EXT = {\n";
10542         s << "\tsType = " << value.sType << '\n';
10543         s << "\tpNext = " << value.pNext << '\n';
10544         s << "\tlocation = " << value.location << '\n';
10545         s << "\tbinding = " << value.binding << '\n';
10546         s << "\tformat = " << value.format << '\n';
10547         s << "\toffset = " << value.offset << '\n';
10548         s << '}';
10549         return s;
10550 }
10551
10552 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceColorWriteEnableFeaturesEXT& value)
10553 {
10554         s << "VkPhysicalDeviceColorWriteEnableFeaturesEXT = {\n";
10555         s << "\tsType = " << value.sType << '\n';
10556         s << "\tpNext = " << value.pNext << '\n';
10557         s << "\tcolorWriteEnable = " << value.colorWriteEnable << '\n';
10558         s << '}';
10559         return s;
10560 }
10561
10562 std::ostream& operator<< (std::ostream& s, const VkPipelineColorWriteCreateInfoEXT& value)
10563 {
10564         s << "VkPipelineColorWriteCreateInfoEXT = {\n";
10565         s << "\tsType = " << value.sType << '\n';
10566         s << "\tpNext = " << value.pNext << '\n';
10567         s << "\tattachmentCount = " << value.attachmentCount << '\n';
10568         s << "\tpColorWriteEnables = " << value.pColorWriteEnables << '\n';
10569         s << '}';
10570         return s;
10571 }
10572
10573 std::ostream& operator<< (std::ostream& s, const VkDeviceOrHostAddressKHR& value)
10574 {
10575         s << "VkDeviceOrHostAddressKHR = {\n";
10576         s << "\tdeviceAddress = " << value.deviceAddress << '\n';
10577         s << "\thostAddress = " << value.hostAddress << '\n';
10578         s << '}';
10579         return s;
10580 }
10581
10582 std::ostream& operator<< (std::ostream& s, const VkDeviceOrHostAddressConstKHR& value)
10583 {
10584         s << "VkDeviceOrHostAddressConstKHR = {\n";
10585         s << "\tdeviceAddress = " << value.deviceAddress << '\n';
10586         s << "\thostAddress = " << value.hostAddress << '\n';
10587         s << '}';
10588         return s;
10589 }
10590
10591 std::ostream& operator<< (std::ostream& s, const VkAccelerationStructureBuildRangeInfoKHR& value)
10592 {
10593         s << "VkAccelerationStructureBuildRangeInfoKHR = {\n";
10594         s << "\tprimitiveCount = " << value.primitiveCount << '\n';
10595         s << "\tprimitiveOffset = " << value.primitiveOffset << '\n';
10596         s << "\tfirstVertex = " << value.firstVertex << '\n';
10597         s << "\ttransformOffset = " << value.transformOffset << '\n';
10598         s << '}';
10599         return s;
10600 }
10601
10602 std::ostream& operator<< (std::ostream& s, const VkAccelerationStructureGeometryTrianglesDataKHR& value)
10603 {
10604         s << "VkAccelerationStructureGeometryTrianglesDataKHR = {\n";
10605         s << "\tsType = " << value.sType << '\n';
10606         s << "\tpNext = " << value.pNext << '\n';
10607         s << "\tvertexFormat = " << value.vertexFormat << '\n';
10608         s << "\tvertexData = " << value.vertexData << '\n';
10609         s << "\tvertexStride = " << value.vertexStride << '\n';
10610         s << "\tmaxVertex = " << value.maxVertex << '\n';
10611         s << "\tindexType = " << value.indexType << '\n';
10612         s << "\tindexData = " << value.indexData << '\n';
10613         s << "\ttransformData = " << value.transformData << '\n';
10614         s << '}';
10615         return s;
10616 }
10617
10618 std::ostream& operator<< (std::ostream& s, const VkAccelerationStructureGeometryAabbsDataKHR& value)
10619 {
10620         s << "VkAccelerationStructureGeometryAabbsDataKHR = {\n";
10621         s << "\tsType = " << value.sType << '\n';
10622         s << "\tpNext = " << value.pNext << '\n';
10623         s << "\tdata = " << value.data << '\n';
10624         s << "\tstride = " << value.stride << '\n';
10625         s << '}';
10626         return s;
10627 }
10628
10629 std::ostream& operator<< (std::ostream& s, const VkAccelerationStructureGeometryInstancesDataKHR& value)
10630 {
10631         s << "VkAccelerationStructureGeometryInstancesDataKHR = {\n";
10632         s << "\tsType = " << value.sType << '\n';
10633         s << "\tpNext = " << value.pNext << '\n';
10634         s << "\tarrayOfPointers = " << value.arrayOfPointers << '\n';
10635         s << "\tdata = " << value.data << '\n';
10636         s << '}';
10637         return s;
10638 }
10639
10640 std::ostream& operator<< (std::ostream& s, const VkAccelerationStructureGeometryDataKHR& value)
10641 {
10642         s << "VkAccelerationStructureGeometryDataKHR = {\n";
10643         s << "\ttriangles = " << value.triangles << '\n';
10644         s << "\taabbs = " << value.aabbs << '\n';
10645         s << "\tinstances = " << value.instances << '\n';
10646         s << '}';
10647         return s;
10648 }
10649
10650 std::ostream& operator<< (std::ostream& s, const VkAccelerationStructureGeometryKHR& value)
10651 {
10652         s << "VkAccelerationStructureGeometryKHR = {\n";
10653         s << "\tsType = " << value.sType << '\n';
10654         s << "\tpNext = " << value.pNext << '\n';
10655         s << "\tgeometryType = " << value.geometryType << '\n';
10656         s << "\tgeometry = " << value.geometry << '\n';
10657         s << "\tflags = " << getGeometryFlagsKHRStr(value.flags) << '\n';
10658         s << '}';
10659         return s;
10660 }
10661
10662 std::ostream& operator<< (std::ostream& s, const VkAccelerationStructureBuildGeometryInfoKHR& value)
10663 {
10664         s << "VkAccelerationStructureBuildGeometryInfoKHR = {\n";
10665         s << "\tsType = " << value.sType << '\n';
10666         s << "\tpNext = " << value.pNext << '\n';
10667         s << "\ttype = " << value.type << '\n';
10668         s << "\tflags = " << getBuildAccelerationStructureFlagsKHRStr(value.flags) << '\n';
10669         s << "\tmode = " << value.mode << '\n';
10670         s << "\tsrcAccelerationStructure = " << value.srcAccelerationStructure << '\n';
10671         s << "\tdstAccelerationStructure = " << value.dstAccelerationStructure << '\n';
10672         s << "\tgeometryCount = " << value.geometryCount << '\n';
10673         s << "\tpGeometries = " << value.pGeometries << '\n';
10674         s << "\tppGeometries = " << value.ppGeometries << '\n';
10675         s << "\tscratchData = " << value.scratchData << '\n';
10676         s << '}';
10677         return s;
10678 }
10679
10680 std::ostream& operator<< (std::ostream& s, const VkAccelerationStructureCreateInfoKHR& value)
10681 {
10682         s << "VkAccelerationStructureCreateInfoKHR = {\n";
10683         s << "\tsType = " << value.sType << '\n';
10684         s << "\tpNext = " << value.pNext << '\n';
10685         s << "\tcreateFlags = " << getAccelerationStructureCreateFlagsKHRStr(value.createFlags) << '\n';
10686         s << "\tbuffer = " << value.buffer << '\n';
10687         s << "\toffset = " << value.offset << '\n';
10688         s << "\tsize = " << value.size << '\n';
10689         s << "\ttype = " << value.type << '\n';
10690         s << "\tdeviceAddress = " << value.deviceAddress << '\n';
10691         s << '}';
10692         return s;
10693 }
10694
10695 std::ostream& operator<< (std::ostream& s, const VkWriteDescriptorSetAccelerationStructureKHR& value)
10696 {
10697         s << "VkWriteDescriptorSetAccelerationStructureKHR = {\n";
10698         s << "\tsType = " << value.sType << '\n';
10699         s << "\tpNext = " << value.pNext << '\n';
10700         s << "\taccelerationStructureCount = " << value.accelerationStructureCount << '\n';
10701         s << "\tpAccelerationStructures = " << value.pAccelerationStructures << '\n';
10702         s << '}';
10703         return s;
10704 }
10705
10706 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceAccelerationStructureFeaturesKHR& value)
10707 {
10708         s << "VkPhysicalDeviceAccelerationStructureFeaturesKHR = {\n";
10709         s << "\tsType = " << value.sType << '\n';
10710         s << "\tpNext = " << value.pNext << '\n';
10711         s << "\taccelerationStructure = " << value.accelerationStructure << '\n';
10712         s << "\taccelerationStructureCaptureReplay = " << value.accelerationStructureCaptureReplay << '\n';
10713         s << "\taccelerationStructureIndirectBuild = " << value.accelerationStructureIndirectBuild << '\n';
10714         s << "\taccelerationStructureHostCommands = " << value.accelerationStructureHostCommands << '\n';
10715         s << "\tdescriptorBindingAccelerationStructureUpdateAfterBind = " << value.descriptorBindingAccelerationStructureUpdateAfterBind << '\n';
10716         s << '}';
10717         return s;
10718 }
10719
10720 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceAccelerationStructurePropertiesKHR& value)
10721 {
10722         s << "VkPhysicalDeviceAccelerationStructurePropertiesKHR = {\n";
10723         s << "\tsType = " << value.sType << '\n';
10724         s << "\tpNext = " << value.pNext << '\n';
10725         s << "\tmaxGeometryCount = " << value.maxGeometryCount << '\n';
10726         s << "\tmaxInstanceCount = " << value.maxInstanceCount << '\n';
10727         s << "\tmaxPrimitiveCount = " << value.maxPrimitiveCount << '\n';
10728         s << "\tmaxPerStageDescriptorAccelerationStructures = " << value.maxPerStageDescriptorAccelerationStructures << '\n';
10729         s << "\tmaxPerStageDescriptorUpdateAfterBindAccelerationStructures = " << value.maxPerStageDescriptorUpdateAfterBindAccelerationStructures << '\n';
10730         s << "\tmaxDescriptorSetAccelerationStructures = " << value.maxDescriptorSetAccelerationStructures << '\n';
10731         s << "\tmaxDescriptorSetUpdateAfterBindAccelerationStructures = " << value.maxDescriptorSetUpdateAfterBindAccelerationStructures << '\n';
10732         s << "\tminAccelerationStructureScratchOffsetAlignment = " << value.minAccelerationStructureScratchOffsetAlignment << '\n';
10733         s << '}';
10734         return s;
10735 }
10736
10737 std::ostream& operator<< (std::ostream& s, const VkAccelerationStructureDeviceAddressInfoKHR& value)
10738 {
10739         s << "VkAccelerationStructureDeviceAddressInfoKHR = {\n";
10740         s << "\tsType = " << value.sType << '\n';
10741         s << "\tpNext = " << value.pNext << '\n';
10742         s << "\taccelerationStructure = " << value.accelerationStructure << '\n';
10743         s << '}';
10744         return s;
10745 }
10746
10747 std::ostream& operator<< (std::ostream& s, const VkAccelerationStructureVersionInfoKHR& value)
10748 {
10749         s << "VkAccelerationStructureVersionInfoKHR = {\n";
10750         s << "\tsType = " << value.sType << '\n';
10751         s << "\tpNext = " << value.pNext << '\n';
10752         s << "\tpVersionData = " << value.pVersionData << '\n';
10753         s << '}';
10754         return s;
10755 }
10756
10757 std::ostream& operator<< (std::ostream& s, const VkCopyAccelerationStructureToMemoryInfoKHR& value)
10758 {
10759         s << "VkCopyAccelerationStructureToMemoryInfoKHR = {\n";
10760         s << "\tsType = " << value.sType << '\n';
10761         s << "\tpNext = " << value.pNext << '\n';
10762         s << "\tsrc = " << value.src << '\n';
10763         s << "\tdst = " << value.dst << '\n';
10764         s << "\tmode = " << value.mode << '\n';
10765         s << '}';
10766         return s;
10767 }
10768
10769 std::ostream& operator<< (std::ostream& s, const VkCopyMemoryToAccelerationStructureInfoKHR& value)
10770 {
10771         s << "VkCopyMemoryToAccelerationStructureInfoKHR = {\n";
10772         s << "\tsType = " << value.sType << '\n';
10773         s << "\tpNext = " << value.pNext << '\n';
10774         s << "\tsrc = " << value.src << '\n';
10775         s << "\tdst = " << value.dst << '\n';
10776         s << "\tmode = " << value.mode << '\n';
10777         s << '}';
10778         return s;
10779 }
10780
10781 std::ostream& operator<< (std::ostream& s, const VkCopyAccelerationStructureInfoKHR& value)
10782 {
10783         s << "VkCopyAccelerationStructureInfoKHR = {\n";
10784         s << "\tsType = " << value.sType << '\n';
10785         s << "\tpNext = " << value.pNext << '\n';
10786         s << "\tsrc = " << value.src << '\n';
10787         s << "\tdst = " << value.dst << '\n';
10788         s << "\tmode = " << value.mode << '\n';
10789         s << '}';
10790         return s;
10791 }
10792
10793 std::ostream& operator<< (std::ostream& s, const VkAccelerationStructureBuildSizesInfoKHR& value)
10794 {
10795         s << "VkAccelerationStructureBuildSizesInfoKHR = {\n";
10796         s << "\tsType = " << value.sType << '\n';
10797         s << "\tpNext = " << value.pNext << '\n';
10798         s << "\taccelerationStructureSize = " << value.accelerationStructureSize << '\n';
10799         s << "\tupdateScratchSize = " << value.updateScratchSize << '\n';
10800         s << "\tbuildScratchSize = " << value.buildScratchSize << '\n';
10801         s << '}';
10802         return s;
10803 }
10804
10805 std::ostream& operator<< (std::ostream& s, const VkRayTracingShaderGroupCreateInfoKHR& value)
10806 {
10807         s << "VkRayTracingShaderGroupCreateInfoKHR = {\n";
10808         s << "\tsType = " << value.sType << '\n';
10809         s << "\tpNext = " << value.pNext << '\n';
10810         s << "\ttype = " << value.type << '\n';
10811         s << "\tgeneralShader = " << value.generalShader << '\n';
10812         s << "\tclosestHitShader = " << value.closestHitShader << '\n';
10813         s << "\tanyHitShader = " << value.anyHitShader << '\n';
10814         s << "\tintersectionShader = " << value.intersectionShader << '\n';
10815         s << "\tpShaderGroupCaptureReplayHandle = " << value.pShaderGroupCaptureReplayHandle << '\n';
10816         s << '}';
10817         return s;
10818 }
10819
10820 std::ostream& operator<< (std::ostream& s, const VkRayTracingPipelineInterfaceCreateInfoKHR& value)
10821 {
10822         s << "VkRayTracingPipelineInterfaceCreateInfoKHR = {\n";
10823         s << "\tsType = " << value.sType << '\n';
10824         s << "\tpNext = " << value.pNext << '\n';
10825         s << "\tmaxPipelineRayPayloadSize = " << value.maxPipelineRayPayloadSize << '\n';
10826         s << "\tmaxPipelineRayHitAttributeSize = " << value.maxPipelineRayHitAttributeSize << '\n';
10827         s << '}';
10828         return s;
10829 }
10830
10831 std::ostream& operator<< (std::ostream& s, const VkRayTracingPipelineCreateInfoKHR& value)
10832 {
10833         s << "VkRayTracingPipelineCreateInfoKHR = {\n";
10834         s << "\tsType = " << value.sType << '\n';
10835         s << "\tpNext = " << value.pNext << '\n';
10836         s << "\tflags = " << getPipelineCreateFlagsStr(value.flags) << '\n';
10837         s << "\tstageCount = " << value.stageCount << '\n';
10838         s << "\tpStages = " << value.pStages << '\n';
10839         s << "\tgroupCount = " << value.groupCount << '\n';
10840         s << "\tpGroups = " << value.pGroups << '\n';
10841         s << "\tmaxPipelineRayRecursionDepth = " << value.maxPipelineRayRecursionDepth << '\n';
10842         s << "\tpLibraryInfo = " << value.pLibraryInfo << '\n';
10843         s << "\tpLibraryInterface = " << value.pLibraryInterface << '\n';
10844         s << "\tpDynamicState = " << value.pDynamicState << '\n';
10845         s << "\tlayout = " << value.layout << '\n';
10846         s << "\tbasePipelineHandle = " << value.basePipelineHandle << '\n';
10847         s << "\tbasePipelineIndex = " << value.basePipelineIndex << '\n';
10848         s << '}';
10849         return s;
10850 }
10851
10852 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceRayTracingPipelineFeaturesKHR& value)
10853 {
10854         s << "VkPhysicalDeviceRayTracingPipelineFeaturesKHR = {\n";
10855         s << "\tsType = " << value.sType << '\n';
10856         s << "\tpNext = " << value.pNext << '\n';
10857         s << "\trayTracingPipeline = " << value.rayTracingPipeline << '\n';
10858         s << "\trayTracingPipelineShaderGroupHandleCaptureReplay = " << value.rayTracingPipelineShaderGroupHandleCaptureReplay << '\n';
10859         s << "\trayTracingPipelineShaderGroupHandleCaptureReplayMixed = " << value.rayTracingPipelineShaderGroupHandleCaptureReplayMixed << '\n';
10860         s << "\trayTracingPipelineTraceRaysIndirect = " << value.rayTracingPipelineTraceRaysIndirect << '\n';
10861         s << "\trayTraversalPrimitiveCulling = " << value.rayTraversalPrimitiveCulling << '\n';
10862         s << '}';
10863         return s;
10864 }
10865
10866 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceRayTracingPipelinePropertiesKHR& value)
10867 {
10868         s << "VkPhysicalDeviceRayTracingPipelinePropertiesKHR = {\n";
10869         s << "\tsType = " << value.sType << '\n';
10870         s << "\tpNext = " << value.pNext << '\n';
10871         s << "\tshaderGroupHandleSize = " << value.shaderGroupHandleSize << '\n';
10872         s << "\tmaxRayRecursionDepth = " << value.maxRayRecursionDepth << '\n';
10873         s << "\tmaxShaderGroupStride = " << value.maxShaderGroupStride << '\n';
10874         s << "\tshaderGroupBaseAlignment = " << value.shaderGroupBaseAlignment << '\n';
10875         s << "\tshaderGroupHandleCaptureReplaySize = " << value.shaderGroupHandleCaptureReplaySize << '\n';
10876         s << "\tmaxRayDispatchInvocationCount = " << value.maxRayDispatchInvocationCount << '\n';
10877         s << "\tshaderGroupHandleAlignment = " << value.shaderGroupHandleAlignment << '\n';
10878         s << "\tmaxRayHitAttributeSize = " << value.maxRayHitAttributeSize << '\n';
10879         s << '}';
10880         return s;
10881 }
10882
10883 std::ostream& operator<< (std::ostream& s, const VkStridedDeviceAddressRegionKHR& value)
10884 {
10885         s << "VkStridedDeviceAddressRegionKHR = {\n";
10886         s << "\tdeviceAddress = " << value.deviceAddress << '\n';
10887         s << "\tstride = " << value.stride << '\n';
10888         s << "\tsize = " << value.size << '\n';
10889         s << '}';
10890         return s;
10891 }
10892
10893 std::ostream& operator<< (std::ostream& s, const VkTraceRaysIndirectCommandKHR& value)
10894 {
10895         s << "VkTraceRaysIndirectCommandKHR = {\n";
10896         s << "\twidth = " << value.width << '\n';
10897         s << "\theight = " << value.height << '\n';
10898         s << "\tdepth = " << value.depth << '\n';
10899         s << '}';
10900         return s;
10901 }
10902
10903 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceRayQueryFeaturesKHR& value)
10904 {
10905         s << "VkPhysicalDeviceRayQueryFeaturesKHR = {\n";
10906         s << "\tsType = " << value.sType << '\n';
10907         s << "\tpNext = " << value.pNext << '\n';
10908         s << "\trayQuery = " << value.rayQuery << '\n';
10909         s << '}';
10910         return s;
10911 }
10912
10913 std::ostream& operator<< (std::ostream& s, const VkAndroidSurfaceCreateInfoKHR& value)
10914 {
10915         s << "VkAndroidSurfaceCreateInfoKHR = {\n";
10916         s << "\tsType = " << value.sType << '\n';
10917         s << "\tpNext = " << value.pNext << '\n';
10918         s << "\tflags = " << getAndroidSurfaceCreateFlagsKHRStr(value.flags) << '\n';
10919         s << "\twindow = " << value.window << '\n';
10920         s << '}';
10921         return s;
10922 }
10923
10924 std::ostream& operator<< (std::ostream& s, const VkAndroidHardwareBufferUsageANDROID& value)
10925 {
10926         s << "VkAndroidHardwareBufferUsageANDROID = {\n";
10927         s << "\tsType = " << value.sType << '\n';
10928         s << "\tpNext = " << value.pNext << '\n';
10929         s << "\tandroidHardwareBufferUsage = " << value.androidHardwareBufferUsage << '\n';
10930         s << '}';
10931         return s;
10932 }
10933
10934 std::ostream& operator<< (std::ostream& s, const VkAndroidHardwareBufferPropertiesANDROID& value)
10935 {
10936         s << "VkAndroidHardwareBufferPropertiesANDROID = {\n";
10937         s << "\tsType = " << value.sType << '\n';
10938         s << "\tpNext = " << value.pNext << '\n';
10939         s << "\tallocationSize = " << value.allocationSize << '\n';
10940         s << "\tmemoryTypeBits = " << value.memoryTypeBits << '\n';
10941         s << '}';
10942         return s;
10943 }
10944
10945 std::ostream& operator<< (std::ostream& s, const VkAndroidHardwareBufferFormatPropertiesANDROID& value)
10946 {
10947         s << "VkAndroidHardwareBufferFormatPropertiesANDROID = {\n";
10948         s << "\tsType = " << value.sType << '\n';
10949         s << "\tpNext = " << value.pNext << '\n';
10950         s << "\tformat = " << value.format << '\n';
10951         s << "\texternalFormat = " << value.externalFormat << '\n';
10952         s << "\tformatFeatures = " << getFormatFeatureFlagsStr(value.formatFeatures) << '\n';
10953         s << "\tsamplerYcbcrConversionComponents = " << value.samplerYcbcrConversionComponents << '\n';
10954         s << "\tsuggestedYcbcrModel = " << value.suggestedYcbcrModel << '\n';
10955         s << "\tsuggestedYcbcrRange = " << value.suggestedYcbcrRange << '\n';
10956         s << "\tsuggestedXChromaOffset = " << value.suggestedXChromaOffset << '\n';
10957         s << "\tsuggestedYChromaOffset = " << value.suggestedYChromaOffset << '\n';
10958         s << '}';
10959         return s;
10960 }
10961
10962 std::ostream& operator<< (std::ostream& s, const VkImportAndroidHardwareBufferInfoANDROID& value)
10963 {
10964         s << "VkImportAndroidHardwareBufferInfoANDROID = {\n";
10965         s << "\tsType = " << value.sType << '\n';
10966         s << "\tpNext = " << value.pNext << '\n';
10967         s << "\tbuffer = " << value.buffer << '\n';
10968         s << '}';
10969         return s;
10970 }
10971
10972 std::ostream& operator<< (std::ostream& s, const VkMemoryGetAndroidHardwareBufferInfoANDROID& value)
10973 {
10974         s << "VkMemoryGetAndroidHardwareBufferInfoANDROID = {\n";
10975         s << "\tsType = " << value.sType << '\n';
10976         s << "\tpNext = " << value.pNext << '\n';
10977         s << "\tmemory = " << value.memory << '\n';
10978         s << '}';
10979         return s;
10980 }
10981
10982 std::ostream& operator<< (std::ostream& s, const VkExternalFormatANDROID& value)
10983 {
10984         s << "VkExternalFormatANDROID = {\n";
10985         s << "\tsType = " << value.sType << '\n';
10986         s << "\tpNext = " << value.pNext << '\n';
10987         s << "\texternalFormat = " << value.externalFormat << '\n';
10988         s << '}';
10989         return s;
10990 }
10991
10992 std::ostream& operator<< (std::ostream& s, const VkPhysicalDevicePortabilitySubsetFeaturesKHR& value)
10993 {
10994         s << "VkPhysicalDevicePortabilitySubsetFeaturesKHR = {\n";
10995         s << "\tsType = " << value.sType << '\n';
10996         s << "\tpNext = " << value.pNext << '\n';
10997         s << "\tconstantAlphaColorBlendFactors = " << value.constantAlphaColorBlendFactors << '\n';
10998         s << "\tevents = " << value.events << '\n';
10999         s << "\timageViewFormatReinterpretation = " << value.imageViewFormatReinterpretation << '\n';
11000         s << "\timageViewFormatSwizzle = " << value.imageViewFormatSwizzle << '\n';
11001         s << "\timageView2DOn3DImage = " << value.imageView2DOn3DImage << '\n';
11002         s << "\tmultisampleArrayImage = " << value.multisampleArrayImage << '\n';
11003         s << "\tmutableComparisonSamplers = " << value.mutableComparisonSamplers << '\n';
11004         s << "\tpointPolygons = " << value.pointPolygons << '\n';
11005         s << "\tsamplerMipLodBias = " << value.samplerMipLodBias << '\n';
11006         s << "\tseparateStencilMaskRef = " << value.separateStencilMaskRef << '\n';
11007         s << "\tshaderSampleRateInterpolationFunctions = " << value.shaderSampleRateInterpolationFunctions << '\n';
11008         s << "\ttessellationIsolines = " << value.tessellationIsolines << '\n';
11009         s << "\ttessellationPointMode = " << value.tessellationPointMode << '\n';
11010         s << "\ttriangleFans = " << value.triangleFans << '\n';
11011         s << "\tvertexAttributeAccessBeyondStride = " << value.vertexAttributeAccessBeyondStride << '\n';
11012         s << '}';
11013         return s;
11014 }
11015
11016 std::ostream& operator<< (std::ostream& s, const VkPhysicalDevicePortabilitySubsetPropertiesKHR& value)
11017 {
11018         s << "VkPhysicalDevicePortabilitySubsetPropertiesKHR = {\n";
11019         s << "\tsType = " << value.sType << '\n';
11020         s << "\tpNext = " << value.pNext << '\n';
11021         s << "\tminVertexInputBindingStrideAlignment = " << value.minVertexInputBindingStrideAlignment << '\n';
11022         s << '}';
11023         return s;
11024 }
11025
11026 std::ostream& operator<< (std::ostream& s, const VkImagePipeSurfaceCreateInfoFUCHSIA& value)
11027 {
11028         s << "VkImagePipeSurfaceCreateInfoFUCHSIA = {\n";
11029         s << "\tsType = " << value.sType << '\n';
11030         s << "\tpNext = " << value.pNext << '\n';
11031         s << "\tflags = " << getImagePipeSurfaceCreateFlagsFUCHSIAStr(value.flags) << '\n';
11032         s << "\timagePipeHandle = " << value.imagePipeHandle << '\n';
11033         s << '}';
11034         return s;
11035 }
11036
11037 std::ostream& operator<< (std::ostream& s, const VkImportMemoryZirconHandleInfoFUCHSIA& value)
11038 {
11039         s << "VkImportMemoryZirconHandleInfoFUCHSIA = {\n";
11040         s << "\tsType = " << value.sType << '\n';
11041         s << "\tpNext = " << value.pNext << '\n';
11042         s << "\thandleType = " << value.handleType << '\n';
11043         s << "\thandle = " << value.handle << '\n';
11044         s << '}';
11045         return s;
11046 }
11047
11048 std::ostream& operator<< (std::ostream& s, const VkMemoryZirconHandlePropertiesFUCHSIA& value)
11049 {
11050         s << "VkMemoryZirconHandlePropertiesFUCHSIA = {\n";
11051         s << "\tsType = " << value.sType << '\n';
11052         s << "\tpNext = " << value.pNext << '\n';
11053         s << "\tmemoryTypeBits = " << value.memoryTypeBits << '\n';
11054         s << '}';
11055         return s;
11056 }
11057
11058 std::ostream& operator<< (std::ostream& s, const VkMemoryGetZirconHandleInfoFUCHSIA& value)
11059 {
11060         s << "VkMemoryGetZirconHandleInfoFUCHSIA = {\n";
11061         s << "\tsType = " << value.sType << '\n';
11062         s << "\tpNext = " << value.pNext << '\n';
11063         s << "\tmemory = " << value.memory << '\n';
11064         s << "\thandleType = " << value.handleType << '\n';
11065         s << '}';
11066         return s;
11067 }
11068
11069 std::ostream& operator<< (std::ostream& s, const VkImportSemaphoreZirconHandleInfoFUCHSIA& value)
11070 {
11071         s << "VkImportSemaphoreZirconHandleInfoFUCHSIA = {\n";
11072         s << "\tsType = " << value.sType << '\n';
11073         s << "\tpNext = " << value.pNext << '\n';
11074         s << "\tsemaphore = " << value.semaphore << '\n';
11075         s << "\tflags = " << getSemaphoreImportFlagsStr(value.flags) << '\n';
11076         s << "\thandleType = " << value.handleType << '\n';
11077         s << "\tzirconHandle = " << value.zirconHandle << '\n';
11078         s << '}';
11079         return s;
11080 }
11081
11082 std::ostream& operator<< (std::ostream& s, const VkSemaphoreGetZirconHandleInfoFUCHSIA& value)
11083 {
11084         s << "VkSemaphoreGetZirconHandleInfoFUCHSIA = {\n";
11085         s << "\tsType = " << value.sType << '\n';
11086         s << "\tpNext = " << value.pNext << '\n';
11087         s << "\tsemaphore = " << value.semaphore << '\n';
11088         s << "\thandleType = " << value.handleType << '\n';
11089         s << '}';
11090         return s;
11091 }
11092
11093 std::ostream& operator<< (std::ostream& s, const VkStreamDescriptorSurfaceCreateInfoGGP& value)
11094 {
11095         s << "VkStreamDescriptorSurfaceCreateInfoGGP = {\n";
11096         s << "\tsType = " << value.sType << '\n';
11097         s << "\tpNext = " << value.pNext << '\n';
11098         s << "\tflags = " << getStreamDescriptorSurfaceCreateFlagsGGPStr(value.flags) << '\n';
11099         s << "\tstreamDescriptor = " << value.streamDescriptor << '\n';
11100         s << '}';
11101         return s;
11102 }
11103
11104 std::ostream& operator<< (std::ostream& s, const VkPresentFrameTokenGGP& value)
11105 {
11106         s << "VkPresentFrameTokenGGP = {\n";
11107         s << "\tsType = " << value.sType << '\n';
11108         s << "\tpNext = " << value.pNext << '\n';
11109         s << "\tframeToken = " << value.frameToken << '\n';
11110         s << '}';
11111         return s;
11112 }
11113
11114 std::ostream& operator<< (std::ostream& s, const VkIOSSurfaceCreateInfoMVK& value)
11115 {
11116         s << "VkIOSSurfaceCreateInfoMVK = {\n";
11117         s << "\tsType = " << value.sType << '\n';
11118         s << "\tpNext = " << value.pNext << '\n';
11119         s << "\tflags = " << getIOSSurfaceCreateFlagsMVKStr(value.flags) << '\n';
11120         s << "\tpView = " << value.pView << '\n';
11121         s << '}';
11122         return s;
11123 }
11124
11125 std::ostream& operator<< (std::ostream& s, const VkMacOSSurfaceCreateInfoMVK& value)
11126 {
11127         s << "VkMacOSSurfaceCreateInfoMVK = {\n";
11128         s << "\tsType = " << value.sType << '\n';
11129         s << "\tpNext = " << value.pNext << '\n';
11130         s << "\tflags = " << getMacOSSurfaceCreateFlagsMVKStr(value.flags) << '\n';
11131         s << "\tpView = " << value.pView << '\n';
11132         s << '}';
11133         return s;
11134 }
11135
11136 std::ostream& operator<< (std::ostream& s, const VkMetalSurfaceCreateInfoEXT& value)
11137 {
11138         s << "VkMetalSurfaceCreateInfoEXT = {\n";
11139         s << "\tsType = " << value.sType << '\n';
11140         s << "\tpNext = " << value.pNext << '\n';
11141         s << "\tflags = " << getMetalSurfaceCreateFlagsEXTStr(value.flags) << '\n';
11142         s << "\tpLayer = " << value.pLayer << '\n';
11143         s << '}';
11144         return s;
11145 }
11146
11147 std::ostream& operator<< (std::ostream& s, const VkViSurfaceCreateInfoNN& value)
11148 {
11149         s << "VkViSurfaceCreateInfoNN = {\n";
11150         s << "\tsType = " << value.sType << '\n';
11151         s << "\tpNext = " << value.pNext << '\n';
11152         s << "\tflags = " << getViSurfaceCreateFlagsNNStr(value.flags) << '\n';
11153         s << "\twindow = " << value.window << '\n';
11154         s << '}';
11155         return s;
11156 }
11157
11158 std::ostream& operator<< (std::ostream& s, const VkWaylandSurfaceCreateInfoKHR& value)
11159 {
11160         s << "VkWaylandSurfaceCreateInfoKHR = {\n";
11161         s << "\tsType = " << value.sType << '\n';
11162         s << "\tpNext = " << value.pNext << '\n';
11163         s << "\tflags = " << getWaylandSurfaceCreateFlagsKHRStr(value.flags) << '\n';
11164         s << "\tdisplay = " << value.display << '\n';
11165         s << "\tsurface = " << value.surface << '\n';
11166         s << '}';
11167         return s;
11168 }
11169
11170 std::ostream& operator<< (std::ostream& s, const VkWin32SurfaceCreateInfoKHR& value)
11171 {
11172         s << "VkWin32SurfaceCreateInfoKHR = {\n";
11173         s << "\tsType = " << value.sType << '\n';
11174         s << "\tpNext = " << value.pNext << '\n';
11175         s << "\tflags = " << getWin32SurfaceCreateFlagsKHRStr(value.flags) << '\n';
11176         s << "\thinstance = " << value.hinstance << '\n';
11177         s << "\thwnd = " << value.hwnd << '\n';
11178         s << '}';
11179         return s;
11180 }
11181
11182 std::ostream& operator<< (std::ostream& s, const VkImportMemoryWin32HandleInfoKHR& value)
11183 {
11184         s << "VkImportMemoryWin32HandleInfoKHR = {\n";
11185         s << "\tsType = " << value.sType << '\n';
11186         s << "\tpNext = " << value.pNext << '\n';
11187         s << "\thandleType = " << value.handleType << '\n';
11188         s << "\thandle = " << value.handle << '\n';
11189         s << "\tname = " << getWStr(value.name) << '\n';
11190         s << '}';
11191         return s;
11192 }
11193
11194 std::ostream& operator<< (std::ostream& s, const VkExportMemoryWin32HandleInfoKHR& value)
11195 {
11196         s << "VkExportMemoryWin32HandleInfoKHR = {\n";
11197         s << "\tsType = " << value.sType << '\n';
11198         s << "\tpNext = " << value.pNext << '\n';
11199         s << "\tpAttributes = " << value.pAttributes << '\n';
11200         s << "\tdwAccess = " << value.dwAccess << '\n';
11201         s << "\tname = " << getWStr(value.name) << '\n';
11202         s << '}';
11203         return s;
11204 }
11205
11206 std::ostream& operator<< (std::ostream& s, const VkMemoryWin32HandlePropertiesKHR& value)
11207 {
11208         s << "VkMemoryWin32HandlePropertiesKHR = {\n";
11209         s << "\tsType = " << value.sType << '\n';
11210         s << "\tpNext = " << value.pNext << '\n';
11211         s << "\tmemoryTypeBits = " << value.memoryTypeBits << '\n';
11212         s << '}';
11213         return s;
11214 }
11215
11216 std::ostream& operator<< (std::ostream& s, const VkMemoryGetWin32HandleInfoKHR& value)
11217 {
11218         s << "VkMemoryGetWin32HandleInfoKHR = {\n";
11219         s << "\tsType = " << value.sType << '\n';
11220         s << "\tpNext = " << value.pNext << '\n';
11221         s << "\tmemory = " << value.memory << '\n';
11222         s << "\thandleType = " << value.handleType << '\n';
11223         s << '}';
11224         return s;
11225 }
11226
11227 std::ostream& operator<< (std::ostream& s, const VkWin32KeyedMutexAcquireReleaseInfoKHR& value)
11228 {
11229         s << "VkWin32KeyedMutexAcquireReleaseInfoKHR = {\n";
11230         s << "\tsType = " << value.sType << '\n';
11231         s << "\tpNext = " << value.pNext << '\n';
11232         s << "\tacquireCount = " << value.acquireCount << '\n';
11233         s << "\tpAcquireSyncs = " << value.pAcquireSyncs << '\n';
11234         s << "\tpAcquireKeys = " << value.pAcquireKeys << '\n';
11235         s << "\tpAcquireTimeouts = " << value.pAcquireTimeouts << '\n';
11236         s << "\treleaseCount = " << value.releaseCount << '\n';
11237         s << "\tpReleaseSyncs = " << value.pReleaseSyncs << '\n';
11238         s << "\tpReleaseKeys = " << value.pReleaseKeys << '\n';
11239         s << '}';
11240         return s;
11241 }
11242
11243 std::ostream& operator<< (std::ostream& s, const VkImportSemaphoreWin32HandleInfoKHR& value)
11244 {
11245         s << "VkImportSemaphoreWin32HandleInfoKHR = {\n";
11246         s << "\tsType = " << value.sType << '\n';
11247         s << "\tpNext = " << value.pNext << '\n';
11248         s << "\tsemaphore = " << value.semaphore << '\n';
11249         s << "\tflags = " << getSemaphoreImportFlagsStr(value.flags) << '\n';
11250         s << "\thandleType = " << value.handleType << '\n';
11251         s << "\thandle = " << value.handle << '\n';
11252         s << "\tname = " << getWStr(value.name) << '\n';
11253         s << '}';
11254         return s;
11255 }
11256
11257 std::ostream& operator<< (std::ostream& s, const VkExportSemaphoreWin32HandleInfoKHR& value)
11258 {
11259         s << "VkExportSemaphoreWin32HandleInfoKHR = {\n";
11260         s << "\tsType = " << value.sType << '\n';
11261         s << "\tpNext = " << value.pNext << '\n';
11262         s << "\tpAttributes = " << value.pAttributes << '\n';
11263         s << "\tdwAccess = " << value.dwAccess << '\n';
11264         s << "\tname = " << getWStr(value.name) << '\n';
11265         s << '}';
11266         return s;
11267 }
11268
11269 std::ostream& operator<< (std::ostream& s, const VkD3D12FenceSubmitInfoKHR& value)
11270 {
11271         s << "VkD3D12FenceSubmitInfoKHR = {\n";
11272         s << "\tsType = " << value.sType << '\n';
11273         s << "\tpNext = " << value.pNext << '\n';
11274         s << "\twaitSemaphoreValuesCount = " << value.waitSemaphoreValuesCount << '\n';
11275         s << "\tpWaitSemaphoreValues = " << value.pWaitSemaphoreValues << '\n';
11276         s << "\tsignalSemaphoreValuesCount = " << value.signalSemaphoreValuesCount << '\n';
11277         s << "\tpSignalSemaphoreValues = " << value.pSignalSemaphoreValues << '\n';
11278         s << '}';
11279         return s;
11280 }
11281
11282 std::ostream& operator<< (std::ostream& s, const VkSemaphoreGetWin32HandleInfoKHR& value)
11283 {
11284         s << "VkSemaphoreGetWin32HandleInfoKHR = {\n";
11285         s << "\tsType = " << value.sType << '\n';
11286         s << "\tpNext = " << value.pNext << '\n';
11287         s << "\tsemaphore = " << value.semaphore << '\n';
11288         s << "\thandleType = " << value.handleType << '\n';
11289         s << '}';
11290         return s;
11291 }
11292
11293 std::ostream& operator<< (std::ostream& s, const VkImportFenceWin32HandleInfoKHR& value)
11294 {
11295         s << "VkImportFenceWin32HandleInfoKHR = {\n";
11296         s << "\tsType = " << value.sType << '\n';
11297         s << "\tpNext = " << value.pNext << '\n';
11298         s << "\tfence = " << value.fence << '\n';
11299         s << "\tflags = " << getFenceImportFlagsStr(value.flags) << '\n';
11300         s << "\thandleType = " << value.handleType << '\n';
11301         s << "\thandle = " << value.handle << '\n';
11302         s << "\tname = " << getWStr(value.name) << '\n';
11303         s << '}';
11304         return s;
11305 }
11306
11307 std::ostream& operator<< (std::ostream& s, const VkExportFenceWin32HandleInfoKHR& value)
11308 {
11309         s << "VkExportFenceWin32HandleInfoKHR = {\n";
11310         s << "\tsType = " << value.sType << '\n';
11311         s << "\tpNext = " << value.pNext << '\n';
11312         s << "\tpAttributes = " << value.pAttributes << '\n';
11313         s << "\tdwAccess = " << value.dwAccess << '\n';
11314         s << "\tname = " << getWStr(value.name) << '\n';
11315         s << '}';
11316         return s;
11317 }
11318
11319 std::ostream& operator<< (std::ostream& s, const VkFenceGetWin32HandleInfoKHR& value)
11320 {
11321         s << "VkFenceGetWin32HandleInfoKHR = {\n";
11322         s << "\tsType = " << value.sType << '\n';
11323         s << "\tpNext = " << value.pNext << '\n';
11324         s << "\tfence = " << value.fence << '\n';
11325         s << "\thandleType = " << value.handleType << '\n';
11326         s << '}';
11327         return s;
11328 }
11329
11330 std::ostream& operator<< (std::ostream& s, const VkImportMemoryWin32HandleInfoNV& value)
11331 {
11332         s << "VkImportMemoryWin32HandleInfoNV = {\n";
11333         s << "\tsType = " << value.sType << '\n';
11334         s << "\tpNext = " << value.pNext << '\n';
11335         s << "\thandleType = " << getExternalMemoryHandleTypeFlagsNVStr(value.handleType) << '\n';
11336         s << "\thandle = " << value.handle << '\n';
11337         s << '}';
11338         return s;
11339 }
11340
11341 std::ostream& operator<< (std::ostream& s, const VkExportMemoryWin32HandleInfoNV& value)
11342 {
11343         s << "VkExportMemoryWin32HandleInfoNV = {\n";
11344         s << "\tsType = " << value.sType << '\n';
11345         s << "\tpNext = " << value.pNext << '\n';
11346         s << "\tpAttributes = " << value.pAttributes << '\n';
11347         s << "\tdwAccess = " << value.dwAccess << '\n';
11348         s << '}';
11349         return s;
11350 }
11351
11352 std::ostream& operator<< (std::ostream& s, const VkWin32KeyedMutexAcquireReleaseInfoNV& value)
11353 {
11354         s << "VkWin32KeyedMutexAcquireReleaseInfoNV = {\n";
11355         s << "\tsType = " << value.sType << '\n';
11356         s << "\tpNext = " << value.pNext << '\n';
11357         s << "\tacquireCount = " << value.acquireCount << '\n';
11358         s << "\tpAcquireSyncs = " << value.pAcquireSyncs << '\n';
11359         s << "\tpAcquireKeys = " << value.pAcquireKeys << '\n';
11360         s << "\tpAcquireTimeoutMilliseconds = " << value.pAcquireTimeoutMilliseconds << '\n';
11361         s << "\treleaseCount = " << value.releaseCount << '\n';
11362         s << "\tpReleaseSyncs = " << value.pReleaseSyncs << '\n';
11363         s << "\tpReleaseKeys = " << value.pReleaseKeys << '\n';
11364         s << '}';
11365         return s;
11366 }
11367
11368 std::ostream& operator<< (std::ostream& s, const VkSurfaceFullScreenExclusiveInfoEXT& value)
11369 {
11370         s << "VkSurfaceFullScreenExclusiveInfoEXT = {\n";
11371         s << "\tsType = " << value.sType << '\n';
11372         s << "\tpNext = " << value.pNext << '\n';
11373         s << "\tfullScreenExclusive = " << value.fullScreenExclusive << '\n';
11374         s << '}';
11375         return s;
11376 }
11377
11378 std::ostream& operator<< (std::ostream& s, const VkSurfaceCapabilitiesFullScreenExclusiveEXT& value)
11379 {
11380         s << "VkSurfaceCapabilitiesFullScreenExclusiveEXT = {\n";
11381         s << "\tsType = " << value.sType << '\n';
11382         s << "\tpNext = " << value.pNext << '\n';
11383         s << "\tfullScreenExclusiveSupported = " << value.fullScreenExclusiveSupported << '\n';
11384         s << '}';
11385         return s;
11386 }
11387
11388 std::ostream& operator<< (std::ostream& s, const VkSurfaceFullScreenExclusiveWin32InfoEXT& value)
11389 {
11390         s << "VkSurfaceFullScreenExclusiveWin32InfoEXT = {\n";
11391         s << "\tsType = " << value.sType << '\n';
11392         s << "\tpNext = " << value.pNext << '\n';
11393         s << "\thmonitor = " << value.hmonitor << '\n';
11394         s << '}';
11395         return s;
11396 }
11397
11398 std::ostream& operator<< (std::ostream& s, const VkXcbSurfaceCreateInfoKHR& value)
11399 {
11400         s << "VkXcbSurfaceCreateInfoKHR = {\n";
11401         s << "\tsType = " << value.sType << '\n';
11402         s << "\tpNext = " << value.pNext << '\n';
11403         s << "\tflags = " << getXcbSurfaceCreateFlagsKHRStr(value.flags) << '\n';
11404         s << "\tconnection = " << value.connection << '\n';
11405         s << "\twindow = " << value.window << '\n';
11406         s << '}';
11407         return s;
11408 }
11409
11410 std::ostream& operator<< (std::ostream& s, const VkXlibSurfaceCreateInfoKHR& value)
11411 {
11412         s << "VkXlibSurfaceCreateInfoKHR = {\n";
11413         s << "\tsType = " << value.sType << '\n';
11414         s << "\tpNext = " << value.pNext << '\n';
11415         s << "\tflags = " << getXlibSurfaceCreateFlagsKHRStr(value.flags) << '\n';
11416         s << "\tdpy = " << value.dpy << '\n';
11417         s << "\twindow = " << value.window << '\n';
11418         s << '}';
11419         return s;
11420 }