am 9c37338a: (-s ours) am 55d9f833: Remove two EGL tests with flaky results am: 11514...
[platform/upstream/VK-GL-CTS.git] / external / vulkancts / framework / vulkan / vkStrUtilImpl.inl
1 /* WARNING: This is auto-generated file. Do not modify, since changes will
2  * be lost! Modify the generating script instead.
3  */
4 template<> const char*  getTypeName<VkInstance>                         (void) { return "VkInstance";                           }
5 template<> const char*  getTypeName<VkPhysicalDevice>           (void) { return "VkPhysicalDevice";                     }
6 template<> const char*  getTypeName<VkDevice>                           (void) { return "VkDevice";                                     }
7 template<> const char*  getTypeName<VkQueue>                            (void) { return "VkQueue";                                      }
8 template<> const char*  getTypeName<VkSemaphore>                        (void) { return "VkSemaphore";                          }
9 template<> const char*  getTypeName<VkCommandBuffer>            (void) { return "VkCommandBuffer";                      }
10 template<> const char*  getTypeName<VkFence>                            (void) { return "VkFence";                                      }
11 template<> const char*  getTypeName<VkDeviceMemory>                     (void) { return "VkDeviceMemory";                       }
12 template<> const char*  getTypeName<VkBuffer>                           (void) { return "VkBuffer";                                     }
13 template<> const char*  getTypeName<VkImage>                            (void) { return "VkImage";                                      }
14 template<> const char*  getTypeName<VkEvent>                            (void) { return "VkEvent";                                      }
15 template<> const char*  getTypeName<VkQueryPool>                        (void) { return "VkQueryPool";                          }
16 template<> const char*  getTypeName<VkBufferView>                       (void) { return "VkBufferView";                         }
17 template<> const char*  getTypeName<VkImageView>                        (void) { return "VkImageView";                          }
18 template<> const char*  getTypeName<VkShaderModule>                     (void) { return "VkShaderModule";                       }
19 template<> const char*  getTypeName<VkPipelineCache>            (void) { return "VkPipelineCache";                      }
20 template<> const char*  getTypeName<VkPipelineLayout>           (void) { return "VkPipelineLayout";                     }
21 template<> const char*  getTypeName<VkRenderPass>                       (void) { return "VkRenderPass";                         }
22 template<> const char*  getTypeName<VkPipeline>                         (void) { return "VkPipeline";                           }
23 template<> const char*  getTypeName<VkDescriptorSetLayout>      (void) { return "VkDescriptorSetLayout";        }
24 template<> const char*  getTypeName<VkSampler>                          (void) { return "VkSampler";                            }
25 template<> const char*  getTypeName<VkDescriptorPool>           (void) { return "VkDescriptorPool";                     }
26 template<> const char*  getTypeName<VkDescriptorSet>            (void) { return "VkDescriptorSet";                      }
27 template<> const char*  getTypeName<VkFramebuffer>                      (void) { return "VkFramebuffer";                        }
28 template<> const char*  getTypeName<VkCommandPool>                      (void) { return "VkCommandPool";                        }
29 template<> const char*  getTypeName<VkSurfaceKHR>                       (void) { return "VkSurfaceKHR";                         }
30 template<> const char*  getTypeName<VkSwapchainKHR>                     (void) { return "VkSwapchainKHR";                       }
31 template<> const char*  getTypeName<VkDisplayKHR>                       (void) { return "VkDisplayKHR";                         }
32 template<> const char*  getTypeName<VkDisplayModeKHR>           (void) { return "VkDisplayModeKHR";                     }
33
34 const char* getResultName (VkResult value)
35 {
36         switch (value)
37         {
38                 case VK_SUCCESS:                                                return "VK_SUCCESS";
39                 case VK_NOT_READY:                                              return "VK_NOT_READY";
40                 case VK_TIMEOUT:                                                return "VK_TIMEOUT";
41                 case VK_EVENT_SET:                                              return "VK_EVENT_SET";
42                 case VK_EVENT_RESET:                                    return "VK_EVENT_RESET";
43                 case VK_INCOMPLETE:                                             return "VK_INCOMPLETE";
44                 case VK_ERROR_OUT_OF_HOST_MEMORY:               return "VK_ERROR_OUT_OF_HOST_MEMORY";
45                 case VK_ERROR_OUT_OF_DEVICE_MEMORY:             return "VK_ERROR_OUT_OF_DEVICE_MEMORY";
46                 case VK_ERROR_INITIALIZATION_FAILED:    return "VK_ERROR_INITIALIZATION_FAILED";
47                 case VK_ERROR_DEVICE_LOST:                              return "VK_ERROR_DEVICE_LOST";
48                 case VK_ERROR_MEMORY_MAP_FAILED:                return "VK_ERROR_MEMORY_MAP_FAILED";
49                 case VK_ERROR_LAYER_NOT_PRESENT:                return "VK_ERROR_LAYER_NOT_PRESENT";
50                 case VK_ERROR_EXTENSION_NOT_PRESENT:    return "VK_ERROR_EXTENSION_NOT_PRESENT";
51                 case VK_ERROR_FEATURE_NOT_PRESENT:              return "VK_ERROR_FEATURE_NOT_PRESENT";
52                 case VK_ERROR_INCOMPATIBLE_DRIVER:              return "VK_ERROR_INCOMPATIBLE_DRIVER";
53                 case VK_ERROR_TOO_MANY_OBJECTS:                 return "VK_ERROR_TOO_MANY_OBJECTS";
54                 case VK_ERROR_FORMAT_NOT_SUPPORTED:             return "VK_ERROR_FORMAT_NOT_SUPPORTED";
55                 case VK_ERROR_SURFACE_LOST_KHR:                 return "VK_ERROR_SURFACE_LOST_KHR";
56                 case VK_SUBOPTIMAL_KHR:                                 return "VK_SUBOPTIMAL_KHR";
57                 case VK_ERROR_OUT_OF_DATE_KHR:                  return "VK_ERROR_OUT_OF_DATE_KHR";
58                 case VK_ERROR_INCOMPATIBLE_DISPLAY_KHR: return "VK_ERROR_INCOMPATIBLE_DISPLAY_KHR";
59                 case VK_ERROR_NATIVE_WINDOW_IN_USE_KHR: return "VK_ERROR_NATIVE_WINDOW_IN_USE_KHR";
60                 default:                                                                return DE_NULL;
61         }
62 }
63
64 const char* getStructureTypeName (VkStructureType value)
65 {
66         switch (value)
67         {
68                 case VK_STRUCTURE_TYPE_APPLICATION_INFO:                                                        return "VK_STRUCTURE_TYPE_APPLICATION_INFO";
69                 case VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO:                                            return "VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO";
70                 case VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO:                                        return "VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO";
71                 case VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO:                                                      return "VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO";
72                 case VK_STRUCTURE_TYPE_SUBMIT_INFO:                                                                     return "VK_STRUCTURE_TYPE_SUBMIT_INFO";
73                 case VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO:                                            return "VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO";
74                 case VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE:                                                     return "VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE";
75                 case VK_STRUCTURE_TYPE_BIND_SPARSE_INFO:                                                        return "VK_STRUCTURE_TYPE_BIND_SPARSE_INFO";
76                 case VK_STRUCTURE_TYPE_FENCE_CREATE_INFO:                                                       return "VK_STRUCTURE_TYPE_FENCE_CREATE_INFO";
77                 case VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO:                                           return "VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO";
78                 case VK_STRUCTURE_TYPE_EVENT_CREATE_INFO:                                                       return "VK_STRUCTURE_TYPE_EVENT_CREATE_INFO";
79                 case VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO:                                          return "VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO";
80                 case VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO:                                                      return "VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO";
81                 case VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO:                                         return "VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO";
82                 case VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO:                                                       return "VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO";
83                 case VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO:                                          return "VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO";
84                 case VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO:                                       return "VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO";
85                 case VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO:                                      return "VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO";
86                 case VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO:                       return "VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO";
87                 case VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO:         return "VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO";
88                 case VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO:       return "VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO";
89                 case VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO:         return "VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO";
90                 case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO:                     return "VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO";
91                 case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO:        return "VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO";
92                 case VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO:          return "VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO";
93                 case VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO:        return "VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO";
94                 case VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO:          return "VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO";
95                 case VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO:                      return "VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO";
96                 case VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO:                           return "VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO";
97                 case VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO:                            return "VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO";
98                 case VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO:                                     return "VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO";
99                 case VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO:                                                     return "VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO";
100                 case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO:                       return "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO";
101                 case VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO:                                     return "VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO";
102                 case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO:                            return "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO";
103                 case VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET:                                            return "VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET";
104                 case VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET:                                                     return "VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET";
105                 case VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO:                                         return "VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO";
106                 case VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO:                                         return "VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO";
107                 case VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO:                                        return "VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO";
108                 case VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO:                            return "VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO";
109                 case VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO:                                       return "VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO";
110                 case VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO:                                          return "VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO";
111                 case VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER:                                           return "VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER";
112                 case VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER:                                            return "VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER";
113                 case VK_STRUCTURE_TYPE_MEMORY_BARRIER:                                                          return "VK_STRUCTURE_TYPE_MEMORY_BARRIER";
114                 case VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO:                                     return "VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO";
115                 case VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO:                                       return "VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO";
116                 case VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR:                                       return "VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR";
117                 case VK_STRUCTURE_TYPE_PRESENT_INFO_KHR:                                                        return "VK_STRUCTURE_TYPE_PRESENT_INFO_KHR";
118                 case VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR:                            return "VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR";
119                 case VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR:                         return "VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR";
120                 case VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR:                                        return "VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR";
121                 default:                                                                                                                        return DE_NULL;
122         }
123 }
124
125 const char* getSystemAllocationScopeName (VkSystemAllocationScope value)
126 {
127         switch (value)
128         {
129                 case VK_SYSTEM_ALLOCATION_SCOPE_COMMAND:        return "VK_SYSTEM_ALLOCATION_SCOPE_COMMAND";
130                 case VK_SYSTEM_ALLOCATION_SCOPE_OBJECT:         return "VK_SYSTEM_ALLOCATION_SCOPE_OBJECT";
131                 case VK_SYSTEM_ALLOCATION_SCOPE_CACHE:          return "VK_SYSTEM_ALLOCATION_SCOPE_CACHE";
132                 case VK_SYSTEM_ALLOCATION_SCOPE_DEVICE:         return "VK_SYSTEM_ALLOCATION_SCOPE_DEVICE";
133                 case VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE:       return "VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE";
134                 default:                                                                        return DE_NULL;
135         }
136 }
137
138 const char* getInternalAllocationTypeName (VkInternalAllocationType value)
139 {
140         switch (value)
141         {
142                 case VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE:    return "VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE";
143                 default:                                                                                return DE_NULL;
144         }
145 }
146
147 const char* getFormatName (VkFormat value)
148 {
149         switch (value)
150         {
151                 case VK_FORMAT_UNDEFINED:                                       return "VK_FORMAT_UNDEFINED";
152                 case VK_FORMAT_R4G4_UNORM_PACK8:                        return "VK_FORMAT_R4G4_UNORM_PACK8";
153                 case VK_FORMAT_R4G4B4A4_UNORM_PACK16:           return "VK_FORMAT_R4G4B4A4_UNORM_PACK16";
154                 case VK_FORMAT_B4G4R4A4_UNORM_PACK16:           return "VK_FORMAT_B4G4R4A4_UNORM_PACK16";
155                 case VK_FORMAT_R5G6B5_UNORM_PACK16:                     return "VK_FORMAT_R5G6B5_UNORM_PACK16";
156                 case VK_FORMAT_B5G6R5_UNORM_PACK16:                     return "VK_FORMAT_B5G6R5_UNORM_PACK16";
157                 case VK_FORMAT_R5G5B5A1_UNORM_PACK16:           return "VK_FORMAT_R5G5B5A1_UNORM_PACK16";
158                 case VK_FORMAT_B5G5R5A1_UNORM_PACK16:           return "VK_FORMAT_B5G5R5A1_UNORM_PACK16";
159                 case VK_FORMAT_A1R5G5B5_UNORM_PACK16:           return "VK_FORMAT_A1R5G5B5_UNORM_PACK16";
160                 case VK_FORMAT_R8_UNORM:                                        return "VK_FORMAT_R8_UNORM";
161                 case VK_FORMAT_R8_SNORM:                                        return "VK_FORMAT_R8_SNORM";
162                 case VK_FORMAT_R8_USCALED:                                      return "VK_FORMAT_R8_USCALED";
163                 case VK_FORMAT_R8_SSCALED:                                      return "VK_FORMAT_R8_SSCALED";
164                 case VK_FORMAT_R8_UINT:                                         return "VK_FORMAT_R8_UINT";
165                 case VK_FORMAT_R8_SINT:                                         return "VK_FORMAT_R8_SINT";
166                 case VK_FORMAT_R8_SRGB:                                         return "VK_FORMAT_R8_SRGB";
167                 case VK_FORMAT_R8G8_UNORM:                                      return "VK_FORMAT_R8G8_UNORM";
168                 case VK_FORMAT_R8G8_SNORM:                                      return "VK_FORMAT_R8G8_SNORM";
169                 case VK_FORMAT_R8G8_USCALED:                            return "VK_FORMAT_R8G8_USCALED";
170                 case VK_FORMAT_R8G8_SSCALED:                            return "VK_FORMAT_R8G8_SSCALED";
171                 case VK_FORMAT_R8G8_UINT:                                       return "VK_FORMAT_R8G8_UINT";
172                 case VK_FORMAT_R8G8_SINT:                                       return "VK_FORMAT_R8G8_SINT";
173                 case VK_FORMAT_R8G8_SRGB:                                       return "VK_FORMAT_R8G8_SRGB";
174                 case VK_FORMAT_R8G8B8_UNORM:                            return "VK_FORMAT_R8G8B8_UNORM";
175                 case VK_FORMAT_R8G8B8_SNORM:                            return "VK_FORMAT_R8G8B8_SNORM";
176                 case VK_FORMAT_R8G8B8_USCALED:                          return "VK_FORMAT_R8G8B8_USCALED";
177                 case VK_FORMAT_R8G8B8_SSCALED:                          return "VK_FORMAT_R8G8B8_SSCALED";
178                 case VK_FORMAT_R8G8B8_UINT:                                     return "VK_FORMAT_R8G8B8_UINT";
179                 case VK_FORMAT_R8G8B8_SINT:                                     return "VK_FORMAT_R8G8B8_SINT";
180                 case VK_FORMAT_R8G8B8_SRGB:                                     return "VK_FORMAT_R8G8B8_SRGB";
181                 case VK_FORMAT_B8G8R8_UNORM:                            return "VK_FORMAT_B8G8R8_UNORM";
182                 case VK_FORMAT_B8G8R8_SNORM:                            return "VK_FORMAT_B8G8R8_SNORM";
183                 case VK_FORMAT_B8G8R8_USCALED:                          return "VK_FORMAT_B8G8R8_USCALED";
184                 case VK_FORMAT_B8G8R8_SSCALED:                          return "VK_FORMAT_B8G8R8_SSCALED";
185                 case VK_FORMAT_B8G8R8_UINT:                                     return "VK_FORMAT_B8G8R8_UINT";
186                 case VK_FORMAT_B8G8R8_SINT:                                     return "VK_FORMAT_B8G8R8_SINT";
187                 case VK_FORMAT_B8G8R8_SRGB:                                     return "VK_FORMAT_B8G8R8_SRGB";
188                 case VK_FORMAT_R8G8B8A8_UNORM:                          return "VK_FORMAT_R8G8B8A8_UNORM";
189                 case VK_FORMAT_R8G8B8A8_SNORM:                          return "VK_FORMAT_R8G8B8A8_SNORM";
190                 case VK_FORMAT_R8G8B8A8_USCALED:                        return "VK_FORMAT_R8G8B8A8_USCALED";
191                 case VK_FORMAT_R8G8B8A8_SSCALED:                        return "VK_FORMAT_R8G8B8A8_SSCALED";
192                 case VK_FORMAT_R8G8B8A8_UINT:                           return "VK_FORMAT_R8G8B8A8_UINT";
193                 case VK_FORMAT_R8G8B8A8_SINT:                           return "VK_FORMAT_R8G8B8A8_SINT";
194                 case VK_FORMAT_R8G8B8A8_SRGB:                           return "VK_FORMAT_R8G8B8A8_SRGB";
195                 case VK_FORMAT_B8G8R8A8_UNORM:                          return "VK_FORMAT_B8G8R8A8_UNORM";
196                 case VK_FORMAT_B8G8R8A8_SNORM:                          return "VK_FORMAT_B8G8R8A8_SNORM";
197                 case VK_FORMAT_B8G8R8A8_USCALED:                        return "VK_FORMAT_B8G8R8A8_USCALED";
198                 case VK_FORMAT_B8G8R8A8_SSCALED:                        return "VK_FORMAT_B8G8R8A8_SSCALED";
199                 case VK_FORMAT_B8G8R8A8_UINT:                           return "VK_FORMAT_B8G8R8A8_UINT";
200                 case VK_FORMAT_B8G8R8A8_SINT:                           return "VK_FORMAT_B8G8R8A8_SINT";
201                 case VK_FORMAT_B8G8R8A8_SRGB:                           return "VK_FORMAT_B8G8R8A8_SRGB";
202                 case VK_FORMAT_A8B8G8R8_UNORM_PACK32:           return "VK_FORMAT_A8B8G8R8_UNORM_PACK32";
203                 case VK_FORMAT_A8B8G8R8_SNORM_PACK32:           return "VK_FORMAT_A8B8G8R8_SNORM_PACK32";
204                 case VK_FORMAT_A8B8G8R8_USCALED_PACK32:         return "VK_FORMAT_A8B8G8R8_USCALED_PACK32";
205                 case VK_FORMAT_A8B8G8R8_SSCALED_PACK32:         return "VK_FORMAT_A8B8G8R8_SSCALED_PACK32";
206                 case VK_FORMAT_A8B8G8R8_UINT_PACK32:            return "VK_FORMAT_A8B8G8R8_UINT_PACK32";
207                 case VK_FORMAT_A8B8G8R8_SINT_PACK32:            return "VK_FORMAT_A8B8G8R8_SINT_PACK32";
208                 case VK_FORMAT_A8B8G8R8_SRGB_PACK32:            return "VK_FORMAT_A8B8G8R8_SRGB_PACK32";
209                 case VK_FORMAT_A2R10G10B10_UNORM_PACK32:        return "VK_FORMAT_A2R10G10B10_UNORM_PACK32";
210                 case VK_FORMAT_A2R10G10B10_SNORM_PACK32:        return "VK_FORMAT_A2R10G10B10_SNORM_PACK32";
211                 case VK_FORMAT_A2R10G10B10_USCALED_PACK32:      return "VK_FORMAT_A2R10G10B10_USCALED_PACK32";
212                 case VK_FORMAT_A2R10G10B10_SSCALED_PACK32:      return "VK_FORMAT_A2R10G10B10_SSCALED_PACK32";
213                 case VK_FORMAT_A2R10G10B10_UINT_PACK32:         return "VK_FORMAT_A2R10G10B10_UINT_PACK32";
214                 case VK_FORMAT_A2R10G10B10_SINT_PACK32:         return "VK_FORMAT_A2R10G10B10_SINT_PACK32";
215                 case VK_FORMAT_A2B10G10R10_UNORM_PACK32:        return "VK_FORMAT_A2B10G10R10_UNORM_PACK32";
216                 case VK_FORMAT_A2B10G10R10_SNORM_PACK32:        return "VK_FORMAT_A2B10G10R10_SNORM_PACK32";
217                 case VK_FORMAT_A2B10G10R10_USCALED_PACK32:      return "VK_FORMAT_A2B10G10R10_USCALED_PACK32";
218                 case VK_FORMAT_A2B10G10R10_SSCALED_PACK32:      return "VK_FORMAT_A2B10G10R10_SSCALED_PACK32";
219                 case VK_FORMAT_A2B10G10R10_UINT_PACK32:         return "VK_FORMAT_A2B10G10R10_UINT_PACK32";
220                 case VK_FORMAT_A2B10G10R10_SINT_PACK32:         return "VK_FORMAT_A2B10G10R10_SINT_PACK32";
221                 case VK_FORMAT_R16_UNORM:                                       return "VK_FORMAT_R16_UNORM";
222                 case VK_FORMAT_R16_SNORM:                                       return "VK_FORMAT_R16_SNORM";
223                 case VK_FORMAT_R16_USCALED:                                     return "VK_FORMAT_R16_USCALED";
224                 case VK_FORMAT_R16_SSCALED:                                     return "VK_FORMAT_R16_SSCALED";
225                 case VK_FORMAT_R16_UINT:                                        return "VK_FORMAT_R16_UINT";
226                 case VK_FORMAT_R16_SINT:                                        return "VK_FORMAT_R16_SINT";
227                 case VK_FORMAT_R16_SFLOAT:                                      return "VK_FORMAT_R16_SFLOAT";
228                 case VK_FORMAT_R16G16_UNORM:                            return "VK_FORMAT_R16G16_UNORM";
229                 case VK_FORMAT_R16G16_SNORM:                            return "VK_FORMAT_R16G16_SNORM";
230                 case VK_FORMAT_R16G16_USCALED:                          return "VK_FORMAT_R16G16_USCALED";
231                 case VK_FORMAT_R16G16_SSCALED:                          return "VK_FORMAT_R16G16_SSCALED";
232                 case VK_FORMAT_R16G16_UINT:                                     return "VK_FORMAT_R16G16_UINT";
233                 case VK_FORMAT_R16G16_SINT:                                     return "VK_FORMAT_R16G16_SINT";
234                 case VK_FORMAT_R16G16_SFLOAT:                           return "VK_FORMAT_R16G16_SFLOAT";
235                 case VK_FORMAT_R16G16B16_UNORM:                         return "VK_FORMAT_R16G16B16_UNORM";
236                 case VK_FORMAT_R16G16B16_SNORM:                         return "VK_FORMAT_R16G16B16_SNORM";
237                 case VK_FORMAT_R16G16B16_USCALED:                       return "VK_FORMAT_R16G16B16_USCALED";
238                 case VK_FORMAT_R16G16B16_SSCALED:                       return "VK_FORMAT_R16G16B16_SSCALED";
239                 case VK_FORMAT_R16G16B16_UINT:                          return "VK_FORMAT_R16G16B16_UINT";
240                 case VK_FORMAT_R16G16B16_SINT:                          return "VK_FORMAT_R16G16B16_SINT";
241                 case VK_FORMAT_R16G16B16_SFLOAT:                        return "VK_FORMAT_R16G16B16_SFLOAT";
242                 case VK_FORMAT_R16G16B16A16_UNORM:                      return "VK_FORMAT_R16G16B16A16_UNORM";
243                 case VK_FORMAT_R16G16B16A16_SNORM:                      return "VK_FORMAT_R16G16B16A16_SNORM";
244                 case VK_FORMAT_R16G16B16A16_USCALED:            return "VK_FORMAT_R16G16B16A16_USCALED";
245                 case VK_FORMAT_R16G16B16A16_SSCALED:            return "VK_FORMAT_R16G16B16A16_SSCALED";
246                 case VK_FORMAT_R16G16B16A16_UINT:                       return "VK_FORMAT_R16G16B16A16_UINT";
247                 case VK_FORMAT_R16G16B16A16_SINT:                       return "VK_FORMAT_R16G16B16A16_SINT";
248                 case VK_FORMAT_R16G16B16A16_SFLOAT:                     return "VK_FORMAT_R16G16B16A16_SFLOAT";
249                 case VK_FORMAT_R32_UINT:                                        return "VK_FORMAT_R32_UINT";
250                 case VK_FORMAT_R32_SINT:                                        return "VK_FORMAT_R32_SINT";
251                 case VK_FORMAT_R32_SFLOAT:                                      return "VK_FORMAT_R32_SFLOAT";
252                 case VK_FORMAT_R32G32_UINT:                                     return "VK_FORMAT_R32G32_UINT";
253                 case VK_FORMAT_R32G32_SINT:                                     return "VK_FORMAT_R32G32_SINT";
254                 case VK_FORMAT_R32G32_SFLOAT:                           return "VK_FORMAT_R32G32_SFLOAT";
255                 case VK_FORMAT_R32G32B32_UINT:                          return "VK_FORMAT_R32G32B32_UINT";
256                 case VK_FORMAT_R32G32B32_SINT:                          return "VK_FORMAT_R32G32B32_SINT";
257                 case VK_FORMAT_R32G32B32_SFLOAT:                        return "VK_FORMAT_R32G32B32_SFLOAT";
258                 case VK_FORMAT_R32G32B32A32_UINT:                       return "VK_FORMAT_R32G32B32A32_UINT";
259                 case VK_FORMAT_R32G32B32A32_SINT:                       return "VK_FORMAT_R32G32B32A32_SINT";
260                 case VK_FORMAT_R32G32B32A32_SFLOAT:                     return "VK_FORMAT_R32G32B32A32_SFLOAT";
261                 case VK_FORMAT_R64_UINT:                                        return "VK_FORMAT_R64_UINT";
262                 case VK_FORMAT_R64_SINT:                                        return "VK_FORMAT_R64_SINT";
263                 case VK_FORMAT_R64_SFLOAT:                                      return "VK_FORMAT_R64_SFLOAT";
264                 case VK_FORMAT_R64G64_UINT:                                     return "VK_FORMAT_R64G64_UINT";
265                 case VK_FORMAT_R64G64_SINT:                                     return "VK_FORMAT_R64G64_SINT";
266                 case VK_FORMAT_R64G64_SFLOAT:                           return "VK_FORMAT_R64G64_SFLOAT";
267                 case VK_FORMAT_R64G64B64_UINT:                          return "VK_FORMAT_R64G64B64_UINT";
268                 case VK_FORMAT_R64G64B64_SINT:                          return "VK_FORMAT_R64G64B64_SINT";
269                 case VK_FORMAT_R64G64B64_SFLOAT:                        return "VK_FORMAT_R64G64B64_SFLOAT";
270                 case VK_FORMAT_R64G64B64A64_UINT:                       return "VK_FORMAT_R64G64B64A64_UINT";
271                 case VK_FORMAT_R64G64B64A64_SINT:                       return "VK_FORMAT_R64G64B64A64_SINT";
272                 case VK_FORMAT_R64G64B64A64_SFLOAT:                     return "VK_FORMAT_R64G64B64A64_SFLOAT";
273                 case VK_FORMAT_B10G11R11_UFLOAT_PACK32:         return "VK_FORMAT_B10G11R11_UFLOAT_PACK32";
274                 case VK_FORMAT_E5B9G9R9_UFLOAT_PACK32:          return "VK_FORMAT_E5B9G9R9_UFLOAT_PACK32";
275                 case VK_FORMAT_D16_UNORM:                                       return "VK_FORMAT_D16_UNORM";
276                 case VK_FORMAT_X8_D24_UNORM_PACK32:                     return "VK_FORMAT_X8_D24_UNORM_PACK32";
277                 case VK_FORMAT_D32_SFLOAT:                                      return "VK_FORMAT_D32_SFLOAT";
278                 case VK_FORMAT_S8_UINT:                                         return "VK_FORMAT_S8_UINT";
279                 case VK_FORMAT_D16_UNORM_S8_UINT:                       return "VK_FORMAT_D16_UNORM_S8_UINT";
280                 case VK_FORMAT_D24_UNORM_S8_UINT:                       return "VK_FORMAT_D24_UNORM_S8_UINT";
281                 case VK_FORMAT_D32_SFLOAT_S8_UINT:                      return "VK_FORMAT_D32_SFLOAT_S8_UINT";
282                 case VK_FORMAT_BC1_RGB_UNORM_BLOCK:                     return "VK_FORMAT_BC1_RGB_UNORM_BLOCK";
283                 case VK_FORMAT_BC1_RGB_SRGB_BLOCK:                      return "VK_FORMAT_BC1_RGB_SRGB_BLOCK";
284                 case VK_FORMAT_BC1_RGBA_UNORM_BLOCK:            return "VK_FORMAT_BC1_RGBA_UNORM_BLOCK";
285                 case VK_FORMAT_BC1_RGBA_SRGB_BLOCK:                     return "VK_FORMAT_BC1_RGBA_SRGB_BLOCK";
286                 case VK_FORMAT_BC2_UNORM_BLOCK:                         return "VK_FORMAT_BC2_UNORM_BLOCK";
287                 case VK_FORMAT_BC2_SRGB_BLOCK:                          return "VK_FORMAT_BC2_SRGB_BLOCK";
288                 case VK_FORMAT_BC3_UNORM_BLOCK:                         return "VK_FORMAT_BC3_UNORM_BLOCK";
289                 case VK_FORMAT_BC3_SRGB_BLOCK:                          return "VK_FORMAT_BC3_SRGB_BLOCK";
290                 case VK_FORMAT_BC4_UNORM_BLOCK:                         return "VK_FORMAT_BC4_UNORM_BLOCK";
291                 case VK_FORMAT_BC4_SNORM_BLOCK:                         return "VK_FORMAT_BC4_SNORM_BLOCK";
292                 case VK_FORMAT_BC5_UNORM_BLOCK:                         return "VK_FORMAT_BC5_UNORM_BLOCK";
293                 case VK_FORMAT_BC5_SNORM_BLOCK:                         return "VK_FORMAT_BC5_SNORM_BLOCK";
294                 case VK_FORMAT_BC6H_UFLOAT_BLOCK:                       return "VK_FORMAT_BC6H_UFLOAT_BLOCK";
295                 case VK_FORMAT_BC6H_SFLOAT_BLOCK:                       return "VK_FORMAT_BC6H_SFLOAT_BLOCK";
296                 case VK_FORMAT_BC7_UNORM_BLOCK:                         return "VK_FORMAT_BC7_UNORM_BLOCK";
297                 case VK_FORMAT_BC7_SRGB_BLOCK:                          return "VK_FORMAT_BC7_SRGB_BLOCK";
298                 case VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK:         return "VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK";
299                 case VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK:          return "VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK";
300                 case VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK:       return "VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK";
301                 case VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK:        return "VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK";
302                 case VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK:       return "VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK";
303                 case VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK:        return "VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK";
304                 case VK_FORMAT_EAC_R11_UNORM_BLOCK:                     return "VK_FORMAT_EAC_R11_UNORM_BLOCK";
305                 case VK_FORMAT_EAC_R11_SNORM_BLOCK:                     return "VK_FORMAT_EAC_R11_SNORM_BLOCK";
306                 case VK_FORMAT_EAC_R11G11_UNORM_BLOCK:          return "VK_FORMAT_EAC_R11G11_UNORM_BLOCK";
307                 case VK_FORMAT_EAC_R11G11_SNORM_BLOCK:          return "VK_FORMAT_EAC_R11G11_SNORM_BLOCK";
308                 case VK_FORMAT_ASTC_4x4_UNORM_BLOCK:            return "VK_FORMAT_ASTC_4x4_UNORM_BLOCK";
309                 case VK_FORMAT_ASTC_4x4_SRGB_BLOCK:                     return "VK_FORMAT_ASTC_4x4_SRGB_BLOCK";
310                 case VK_FORMAT_ASTC_5x4_UNORM_BLOCK:            return "VK_FORMAT_ASTC_5x4_UNORM_BLOCK";
311                 case VK_FORMAT_ASTC_5x4_SRGB_BLOCK:                     return "VK_FORMAT_ASTC_5x4_SRGB_BLOCK";
312                 case VK_FORMAT_ASTC_5x5_UNORM_BLOCK:            return "VK_FORMAT_ASTC_5x5_UNORM_BLOCK";
313                 case VK_FORMAT_ASTC_5x5_SRGB_BLOCK:                     return "VK_FORMAT_ASTC_5x5_SRGB_BLOCK";
314                 case VK_FORMAT_ASTC_6x5_UNORM_BLOCK:            return "VK_FORMAT_ASTC_6x5_UNORM_BLOCK";
315                 case VK_FORMAT_ASTC_6x5_SRGB_BLOCK:                     return "VK_FORMAT_ASTC_6x5_SRGB_BLOCK";
316                 case VK_FORMAT_ASTC_6x6_UNORM_BLOCK:            return "VK_FORMAT_ASTC_6x6_UNORM_BLOCK";
317                 case VK_FORMAT_ASTC_6x6_SRGB_BLOCK:                     return "VK_FORMAT_ASTC_6x6_SRGB_BLOCK";
318                 case VK_FORMAT_ASTC_8x5_UNORM_BLOCK:            return "VK_FORMAT_ASTC_8x5_UNORM_BLOCK";
319                 case VK_FORMAT_ASTC_8x5_SRGB_BLOCK:                     return "VK_FORMAT_ASTC_8x5_SRGB_BLOCK";
320                 case VK_FORMAT_ASTC_8x6_UNORM_BLOCK:            return "VK_FORMAT_ASTC_8x6_UNORM_BLOCK";
321                 case VK_FORMAT_ASTC_8x6_SRGB_BLOCK:                     return "VK_FORMAT_ASTC_8x6_SRGB_BLOCK";
322                 case VK_FORMAT_ASTC_8x8_UNORM_BLOCK:            return "VK_FORMAT_ASTC_8x8_UNORM_BLOCK";
323                 case VK_FORMAT_ASTC_8x8_SRGB_BLOCK:                     return "VK_FORMAT_ASTC_8x8_SRGB_BLOCK";
324                 case VK_FORMAT_ASTC_10x5_UNORM_BLOCK:           return "VK_FORMAT_ASTC_10x5_UNORM_BLOCK";
325                 case VK_FORMAT_ASTC_10x5_SRGB_BLOCK:            return "VK_FORMAT_ASTC_10x5_SRGB_BLOCK";
326                 case VK_FORMAT_ASTC_10x6_UNORM_BLOCK:           return "VK_FORMAT_ASTC_10x6_UNORM_BLOCK";
327                 case VK_FORMAT_ASTC_10x6_SRGB_BLOCK:            return "VK_FORMAT_ASTC_10x6_SRGB_BLOCK";
328                 case VK_FORMAT_ASTC_10x8_UNORM_BLOCK:           return "VK_FORMAT_ASTC_10x8_UNORM_BLOCK";
329                 case VK_FORMAT_ASTC_10x8_SRGB_BLOCK:            return "VK_FORMAT_ASTC_10x8_SRGB_BLOCK";
330                 case VK_FORMAT_ASTC_10x10_UNORM_BLOCK:          return "VK_FORMAT_ASTC_10x10_UNORM_BLOCK";
331                 case VK_FORMAT_ASTC_10x10_SRGB_BLOCK:           return "VK_FORMAT_ASTC_10x10_SRGB_BLOCK";
332                 case VK_FORMAT_ASTC_12x10_UNORM_BLOCK:          return "VK_FORMAT_ASTC_12x10_UNORM_BLOCK";
333                 case VK_FORMAT_ASTC_12x10_SRGB_BLOCK:           return "VK_FORMAT_ASTC_12x10_SRGB_BLOCK";
334                 case VK_FORMAT_ASTC_12x12_UNORM_BLOCK:          return "VK_FORMAT_ASTC_12x12_UNORM_BLOCK";
335                 case VK_FORMAT_ASTC_12x12_SRGB_BLOCK:           return "VK_FORMAT_ASTC_12x12_SRGB_BLOCK";
336                 default:                                                                        return DE_NULL;
337         }
338 }
339
340 const char* getImageTypeName (VkImageType value)
341 {
342         switch (value)
343         {
344                 case VK_IMAGE_TYPE_1D:  return "VK_IMAGE_TYPE_1D";
345                 case VK_IMAGE_TYPE_2D:  return "VK_IMAGE_TYPE_2D";
346                 case VK_IMAGE_TYPE_3D:  return "VK_IMAGE_TYPE_3D";
347                 default:                                return DE_NULL;
348         }
349 }
350
351 const char* getImageTilingName (VkImageTiling value)
352 {
353         switch (value)
354         {
355                 case VK_IMAGE_TILING_OPTIMAL:   return "VK_IMAGE_TILING_OPTIMAL";
356                 case VK_IMAGE_TILING_LINEAR:    return "VK_IMAGE_TILING_LINEAR";
357                 default:                                                return DE_NULL;
358         }
359 }
360
361 const char* getPhysicalDeviceTypeName (VkPhysicalDeviceType value)
362 {
363         switch (value)
364         {
365                 case VK_PHYSICAL_DEVICE_TYPE_OTHER:                             return "VK_PHYSICAL_DEVICE_TYPE_OTHER";
366                 case VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU:    return "VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU";
367                 case VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU:              return "VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU";
368                 case VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU:               return "VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU";
369                 case VK_PHYSICAL_DEVICE_TYPE_CPU:                               return "VK_PHYSICAL_DEVICE_TYPE_CPU";
370                 default:                                                                                return DE_NULL;
371         }
372 }
373
374 const char* getQueryTypeName (VkQueryType value)
375 {
376         switch (value)
377         {
378                 case VK_QUERY_TYPE_OCCLUSION:                   return "VK_QUERY_TYPE_OCCLUSION";
379                 case VK_QUERY_TYPE_PIPELINE_STATISTICS: return "VK_QUERY_TYPE_PIPELINE_STATISTICS";
380                 case VK_QUERY_TYPE_TIMESTAMP:                   return "VK_QUERY_TYPE_TIMESTAMP";
381                 default:                                                                return DE_NULL;
382         }
383 }
384
385 const char* getSharingModeName (VkSharingMode value)
386 {
387         switch (value)
388         {
389                 case VK_SHARING_MODE_EXCLUSIVE:         return "VK_SHARING_MODE_EXCLUSIVE";
390                 case VK_SHARING_MODE_CONCURRENT:        return "VK_SHARING_MODE_CONCURRENT";
391                 default:                                                        return DE_NULL;
392         }
393 }
394
395 const char* getImageLayoutName (VkImageLayout value)
396 {
397         switch (value)
398         {
399                 case VK_IMAGE_LAYOUT_UNDEFINED:                                                 return "VK_IMAGE_LAYOUT_UNDEFINED";
400                 case VK_IMAGE_LAYOUT_GENERAL:                                                   return "VK_IMAGE_LAYOUT_GENERAL";
401                 case VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL:                  return "VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL";
402                 case VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL:  return "VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL";
403                 case VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL:   return "VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL";
404                 case VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL:                  return "VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL";
405                 case VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL:                              return "VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL";
406                 case VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL:                              return "VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL";
407                 case VK_IMAGE_LAYOUT_PREINITIALIZED:                                    return "VK_IMAGE_LAYOUT_PREINITIALIZED";
408                 case VK_IMAGE_LAYOUT_PRESENT_SRC_KHR:                                   return "VK_IMAGE_LAYOUT_PRESENT_SRC_KHR";
409                 default:                                                                                                return DE_NULL;
410         }
411 }
412
413 const char* getImageViewTypeName (VkImageViewType value)
414 {
415         switch (value)
416         {
417                 case VK_IMAGE_VIEW_TYPE_1D:                     return "VK_IMAGE_VIEW_TYPE_1D";
418                 case VK_IMAGE_VIEW_TYPE_2D:                     return "VK_IMAGE_VIEW_TYPE_2D";
419                 case VK_IMAGE_VIEW_TYPE_3D:                     return "VK_IMAGE_VIEW_TYPE_3D";
420                 case VK_IMAGE_VIEW_TYPE_CUBE:           return "VK_IMAGE_VIEW_TYPE_CUBE";
421                 case VK_IMAGE_VIEW_TYPE_1D_ARRAY:       return "VK_IMAGE_VIEW_TYPE_1D_ARRAY";
422                 case VK_IMAGE_VIEW_TYPE_2D_ARRAY:       return "VK_IMAGE_VIEW_TYPE_2D_ARRAY";
423                 case VK_IMAGE_VIEW_TYPE_CUBE_ARRAY:     return "VK_IMAGE_VIEW_TYPE_CUBE_ARRAY";
424                 default:                                                        return DE_NULL;
425         }
426 }
427
428 const char* getComponentSwizzleName (VkComponentSwizzle value)
429 {
430         switch (value)
431         {
432                 case VK_COMPONENT_SWIZZLE_IDENTITY:     return "VK_COMPONENT_SWIZZLE_IDENTITY";
433                 case VK_COMPONENT_SWIZZLE_ZERO:         return "VK_COMPONENT_SWIZZLE_ZERO";
434                 case VK_COMPONENT_SWIZZLE_ONE:          return "VK_COMPONENT_SWIZZLE_ONE";
435                 case VK_COMPONENT_SWIZZLE_R:            return "VK_COMPONENT_SWIZZLE_R";
436                 case VK_COMPONENT_SWIZZLE_G:            return "VK_COMPONENT_SWIZZLE_G";
437                 case VK_COMPONENT_SWIZZLE_B:            return "VK_COMPONENT_SWIZZLE_B";
438                 case VK_COMPONENT_SWIZZLE_A:            return "VK_COMPONENT_SWIZZLE_A";
439                 default:                                                        return DE_NULL;
440         }
441 }
442
443 const char* getVertexInputRateName (VkVertexInputRate value)
444 {
445         switch (value)
446         {
447                 case VK_VERTEX_INPUT_RATE_VERTEX:       return "VK_VERTEX_INPUT_RATE_VERTEX";
448                 case VK_VERTEX_INPUT_RATE_INSTANCE:     return "VK_VERTEX_INPUT_RATE_INSTANCE";
449                 default:                                                        return DE_NULL;
450         }
451 }
452
453 const char* getPrimitiveTopologyName (VkPrimitiveTopology value)
454 {
455         switch (value)
456         {
457                 case VK_PRIMITIVE_TOPOLOGY_POINT_LIST:                                          return "VK_PRIMITIVE_TOPOLOGY_POINT_LIST";
458                 case VK_PRIMITIVE_TOPOLOGY_LINE_LIST:                                           return "VK_PRIMITIVE_TOPOLOGY_LINE_LIST";
459                 case VK_PRIMITIVE_TOPOLOGY_LINE_STRIP:                                          return "VK_PRIMITIVE_TOPOLOGY_LINE_STRIP";
460                 case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST:                                       return "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST";
461                 case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP:                                      return "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP";
462                 case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN:                                        return "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN";
463                 case VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY:            return "VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY";
464                 case VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY:           return "VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY";
465                 case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY:        return "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY";
466                 case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY:       return "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY";
467                 case VK_PRIMITIVE_TOPOLOGY_PATCH_LIST:                                          return "VK_PRIMITIVE_TOPOLOGY_PATCH_LIST";
468                 default:                                                                                                        return DE_NULL;
469         }
470 }
471
472 const char* getPolygonModeName (VkPolygonMode value)
473 {
474         switch (value)
475         {
476                 case VK_POLYGON_MODE_FILL:      return "VK_POLYGON_MODE_FILL";
477                 case VK_POLYGON_MODE_LINE:      return "VK_POLYGON_MODE_LINE";
478                 case VK_POLYGON_MODE_POINT:     return "VK_POLYGON_MODE_POINT";
479                 default:                                        return DE_NULL;
480         }
481 }
482
483 const char* getFrontFaceName (VkFrontFace value)
484 {
485         switch (value)
486         {
487                 case VK_FRONT_FACE_COUNTER_CLOCKWISE:   return "VK_FRONT_FACE_COUNTER_CLOCKWISE";
488                 case VK_FRONT_FACE_CLOCKWISE:                   return "VK_FRONT_FACE_CLOCKWISE";
489                 default:                                                                return DE_NULL;
490         }
491 }
492
493 const char* getCompareOpName (VkCompareOp value)
494 {
495         switch (value)
496         {
497                 case VK_COMPARE_OP_NEVER:                               return "VK_COMPARE_OP_NEVER";
498                 case VK_COMPARE_OP_LESS:                                return "VK_COMPARE_OP_LESS";
499                 case VK_COMPARE_OP_EQUAL:                               return "VK_COMPARE_OP_EQUAL";
500                 case VK_COMPARE_OP_LESS_OR_EQUAL:               return "VK_COMPARE_OP_LESS_OR_EQUAL";
501                 case VK_COMPARE_OP_GREATER:                             return "VK_COMPARE_OP_GREATER";
502                 case VK_COMPARE_OP_NOT_EQUAL:                   return "VK_COMPARE_OP_NOT_EQUAL";
503                 case VK_COMPARE_OP_GREATER_OR_EQUAL:    return "VK_COMPARE_OP_GREATER_OR_EQUAL";
504                 case VK_COMPARE_OP_ALWAYS:                              return "VK_COMPARE_OP_ALWAYS";
505                 default:                                                                return DE_NULL;
506         }
507 }
508
509 const char* getStencilOpName (VkStencilOp value)
510 {
511         switch (value)
512         {
513                 case VK_STENCIL_OP_KEEP:                                return "VK_STENCIL_OP_KEEP";
514                 case VK_STENCIL_OP_ZERO:                                return "VK_STENCIL_OP_ZERO";
515                 case VK_STENCIL_OP_REPLACE:                             return "VK_STENCIL_OP_REPLACE";
516                 case VK_STENCIL_OP_INCREMENT_AND_CLAMP: return "VK_STENCIL_OP_INCREMENT_AND_CLAMP";
517                 case VK_STENCIL_OP_DECREMENT_AND_CLAMP: return "VK_STENCIL_OP_DECREMENT_AND_CLAMP";
518                 case VK_STENCIL_OP_INVERT:                              return "VK_STENCIL_OP_INVERT";
519                 case VK_STENCIL_OP_INCREMENT_AND_WRAP:  return "VK_STENCIL_OP_INCREMENT_AND_WRAP";
520                 case VK_STENCIL_OP_DECREMENT_AND_WRAP:  return "VK_STENCIL_OP_DECREMENT_AND_WRAP";
521                 default:                                                                return DE_NULL;
522         }
523 }
524
525 const char* getLogicOpName (VkLogicOp value)
526 {
527         switch (value)
528         {
529                 case VK_LOGIC_OP_CLEAR:                 return "VK_LOGIC_OP_CLEAR";
530                 case VK_LOGIC_OP_AND:                   return "VK_LOGIC_OP_AND";
531                 case VK_LOGIC_OP_AND_REVERSE:   return "VK_LOGIC_OP_AND_REVERSE";
532                 case VK_LOGIC_OP_COPY:                  return "VK_LOGIC_OP_COPY";
533                 case VK_LOGIC_OP_AND_INVERTED:  return "VK_LOGIC_OP_AND_INVERTED";
534                 case VK_LOGIC_OP_NO_OP:                 return "VK_LOGIC_OP_NO_OP";
535                 case VK_LOGIC_OP_XOR:                   return "VK_LOGIC_OP_XOR";
536                 case VK_LOGIC_OP_OR:                    return "VK_LOGIC_OP_OR";
537                 case VK_LOGIC_OP_NOR:                   return "VK_LOGIC_OP_NOR";
538                 case VK_LOGIC_OP_EQUIVALENT:    return "VK_LOGIC_OP_EQUIVALENT";
539                 case VK_LOGIC_OP_INVERT:                return "VK_LOGIC_OP_INVERT";
540                 case VK_LOGIC_OP_OR_REVERSE:    return "VK_LOGIC_OP_OR_REVERSE";
541                 case VK_LOGIC_OP_COPY_INVERTED: return "VK_LOGIC_OP_COPY_INVERTED";
542                 case VK_LOGIC_OP_OR_INVERTED:   return "VK_LOGIC_OP_OR_INVERTED";
543                 case VK_LOGIC_OP_NAND:                  return "VK_LOGIC_OP_NAND";
544                 case VK_LOGIC_OP_SET:                   return "VK_LOGIC_OP_SET";
545                 default:                                                return DE_NULL;
546         }
547 }
548
549 const char* getBlendFactorName (VkBlendFactor value)
550 {
551         switch (value)
552         {
553                 case VK_BLEND_FACTOR_ZERO:                                              return "VK_BLEND_FACTOR_ZERO";
554                 case VK_BLEND_FACTOR_ONE:                                               return "VK_BLEND_FACTOR_ONE";
555                 case VK_BLEND_FACTOR_SRC_COLOR:                                 return "VK_BLEND_FACTOR_SRC_COLOR";
556                 case VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR:               return "VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR";
557                 case VK_BLEND_FACTOR_DST_COLOR:                                 return "VK_BLEND_FACTOR_DST_COLOR";
558                 case VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR:               return "VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR";
559                 case VK_BLEND_FACTOR_SRC_ALPHA:                                 return "VK_BLEND_FACTOR_SRC_ALPHA";
560                 case VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA:               return "VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA";
561                 case VK_BLEND_FACTOR_DST_ALPHA:                                 return "VK_BLEND_FACTOR_DST_ALPHA";
562                 case VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA:               return "VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA";
563                 case VK_BLEND_FACTOR_CONSTANT_COLOR:                    return "VK_BLEND_FACTOR_CONSTANT_COLOR";
564                 case VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR:  return "VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR";
565                 case VK_BLEND_FACTOR_CONSTANT_ALPHA:                    return "VK_BLEND_FACTOR_CONSTANT_ALPHA";
566                 case VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA:  return "VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA";
567                 case VK_BLEND_FACTOR_SRC_ALPHA_SATURATE:                return "VK_BLEND_FACTOR_SRC_ALPHA_SATURATE";
568                 case VK_BLEND_FACTOR_SRC1_COLOR:                                return "VK_BLEND_FACTOR_SRC1_COLOR";
569                 case VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR:              return "VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR";
570                 case VK_BLEND_FACTOR_SRC1_ALPHA:                                return "VK_BLEND_FACTOR_SRC1_ALPHA";
571                 case VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA:              return "VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA";
572                 default:                                                                                return DE_NULL;
573         }
574 }
575
576 const char* getBlendOpName (VkBlendOp value)
577 {
578         switch (value)
579         {
580                 case VK_BLEND_OP_ADD:                           return "VK_BLEND_OP_ADD";
581                 case VK_BLEND_OP_SUBTRACT:                      return "VK_BLEND_OP_SUBTRACT";
582                 case VK_BLEND_OP_REVERSE_SUBTRACT:      return "VK_BLEND_OP_REVERSE_SUBTRACT";
583                 case VK_BLEND_OP_MIN:                           return "VK_BLEND_OP_MIN";
584                 case VK_BLEND_OP_MAX:                           return "VK_BLEND_OP_MAX";
585                 default:                                                        return DE_NULL;
586         }
587 }
588
589 const char* getDynamicStateName (VkDynamicState value)
590 {
591         switch (value)
592         {
593                 case VK_DYNAMIC_STATE_VIEWPORT:                         return "VK_DYNAMIC_STATE_VIEWPORT";
594                 case VK_DYNAMIC_STATE_SCISSOR:                          return "VK_DYNAMIC_STATE_SCISSOR";
595                 case VK_DYNAMIC_STATE_LINE_WIDTH:                       return "VK_DYNAMIC_STATE_LINE_WIDTH";
596                 case VK_DYNAMIC_STATE_DEPTH_BIAS:                       return "VK_DYNAMIC_STATE_DEPTH_BIAS";
597                 case VK_DYNAMIC_STATE_BLEND_CONSTANTS:          return "VK_DYNAMIC_STATE_BLEND_CONSTANTS";
598                 case VK_DYNAMIC_STATE_DEPTH_BOUNDS:                     return "VK_DYNAMIC_STATE_DEPTH_BOUNDS";
599                 case VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK:     return "VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK";
600                 case VK_DYNAMIC_STATE_STENCIL_WRITE_MASK:       return "VK_DYNAMIC_STATE_STENCIL_WRITE_MASK";
601                 case VK_DYNAMIC_STATE_STENCIL_REFERENCE:        return "VK_DYNAMIC_STATE_STENCIL_REFERENCE";
602                 default:                                                                        return DE_NULL;
603         }
604 }
605
606 const char* getFilterName (VkFilter value)
607 {
608         switch (value)
609         {
610                 case VK_FILTER_NEAREST: return "VK_FILTER_NEAREST";
611                 case VK_FILTER_LINEAR:  return "VK_FILTER_LINEAR";
612                 default:                                return DE_NULL;
613         }
614 }
615
616 const char* getSamplerMipmapModeName (VkSamplerMipmapMode value)
617 {
618         switch (value)
619         {
620                 case VK_SAMPLER_MIPMAP_MODE_BASE:               return "VK_SAMPLER_MIPMAP_MODE_BASE";
621                 case VK_SAMPLER_MIPMAP_MODE_NEAREST:    return "VK_SAMPLER_MIPMAP_MODE_NEAREST";
622                 case VK_SAMPLER_MIPMAP_MODE_LINEAR:             return "VK_SAMPLER_MIPMAP_MODE_LINEAR";
623                 default:                                                                return DE_NULL;
624         }
625 }
626
627 const char* getSamplerAddressModeName (VkSamplerAddressMode value)
628 {
629         switch (value)
630         {
631                 case VK_SAMPLER_ADDRESS_MODE_REPEAT:                            return "VK_SAMPLER_ADDRESS_MODE_REPEAT";
632                 case VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT:           return "VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT";
633                 case VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE:                     return "VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE";
634                 case VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER:           return "VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER";
635                 case VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE:      return "VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE";
636                 default:                                                                                        return DE_NULL;
637         }
638 }
639
640 const char* getBorderColorName (VkBorderColor value)
641 {
642         switch (value)
643         {
644                 case VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK:   return "VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK";
645                 case VK_BORDER_COLOR_INT_TRANSPARENT_BLACK:             return "VK_BORDER_COLOR_INT_TRANSPARENT_BLACK";
646                 case VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK:                return "VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK";
647                 case VK_BORDER_COLOR_INT_OPAQUE_BLACK:                  return "VK_BORDER_COLOR_INT_OPAQUE_BLACK";
648                 case VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE:                return "VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE";
649                 case VK_BORDER_COLOR_INT_OPAQUE_WHITE:                  return "VK_BORDER_COLOR_INT_OPAQUE_WHITE";
650                 default:                                                                                return DE_NULL;
651         }
652 }
653
654 const char* getDescriptorTypeName (VkDescriptorType value)
655 {
656         switch (value)
657         {
658                 case VK_DESCRIPTOR_TYPE_SAMPLER:                                return "VK_DESCRIPTOR_TYPE_SAMPLER";
659                 case VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER: return "VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER";
660                 case VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE:                  return "VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE";
661                 case VK_DESCRIPTOR_TYPE_STORAGE_IMAGE:                  return "VK_DESCRIPTOR_TYPE_STORAGE_IMAGE";
662                 case VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER:   return "VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER";
663                 case VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER:   return "VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER";
664                 case VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER:                 return "VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER";
665                 case VK_DESCRIPTOR_TYPE_STORAGE_BUFFER:                 return "VK_DESCRIPTOR_TYPE_STORAGE_BUFFER";
666                 case VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC: return "VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC";
667                 case VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC: return "VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC";
668                 case VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT:               return "VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT";
669                 default:                                                                                return DE_NULL;
670         }
671 }
672
673 const char* getAttachmentLoadOpName (VkAttachmentLoadOp value)
674 {
675         switch (value)
676         {
677                 case VK_ATTACHMENT_LOAD_OP_LOAD:                return "VK_ATTACHMENT_LOAD_OP_LOAD";
678                 case VK_ATTACHMENT_LOAD_OP_CLEAR:               return "VK_ATTACHMENT_LOAD_OP_CLEAR";
679                 case VK_ATTACHMENT_LOAD_OP_DONT_CARE:   return "VK_ATTACHMENT_LOAD_OP_DONT_CARE";
680                 default:                                                                return DE_NULL;
681         }
682 }
683
684 const char* getAttachmentStoreOpName (VkAttachmentStoreOp value)
685 {
686         switch (value)
687         {
688                 case VK_ATTACHMENT_STORE_OP_STORE:              return "VK_ATTACHMENT_STORE_OP_STORE";
689                 case VK_ATTACHMENT_STORE_OP_DONT_CARE:  return "VK_ATTACHMENT_STORE_OP_DONT_CARE";
690                 default:                                                                return DE_NULL;
691         }
692 }
693
694 const char* getPipelineBindPointName (VkPipelineBindPoint value)
695 {
696         switch (value)
697         {
698                 case VK_PIPELINE_BIND_POINT_GRAPHICS:   return "VK_PIPELINE_BIND_POINT_GRAPHICS";
699                 case VK_PIPELINE_BIND_POINT_COMPUTE:    return "VK_PIPELINE_BIND_POINT_COMPUTE";
700                 default:                                                                return DE_NULL;
701         }
702 }
703
704 const char* getCommandBufferLevelName (VkCommandBufferLevel value)
705 {
706         switch (value)
707         {
708                 case VK_COMMAND_BUFFER_LEVEL_PRIMARY:   return "VK_COMMAND_BUFFER_LEVEL_PRIMARY";
709                 case VK_COMMAND_BUFFER_LEVEL_SECONDARY: return "VK_COMMAND_BUFFER_LEVEL_SECONDARY";
710                 default:                                                                return DE_NULL;
711         }
712 }
713
714 const char* getIndexTypeName (VkIndexType value)
715 {
716         switch (value)
717         {
718                 case VK_INDEX_TYPE_UINT16:      return "VK_INDEX_TYPE_UINT16";
719                 case VK_INDEX_TYPE_UINT32:      return "VK_INDEX_TYPE_UINT32";
720                 default:                                        return DE_NULL;
721         }
722 }
723
724 const char* getSubpassContentsName (VkSubpassContents value)
725 {
726         switch (value)
727         {
728                 case VK_SUBPASS_CONTENTS_INLINE:                                        return "VK_SUBPASS_CONTENTS_INLINE";
729                 case VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS:     return "VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS";
730                 default:                                                                                        return DE_NULL;
731         }
732 }
733
734 const char* getColorSpaceKHRName (VkColorSpaceKHR value)
735 {
736         switch (value)
737         {
738                 case VK_COLORSPACE_SRGB_NONLINEAR_KHR:  return "VK_COLORSPACE_SRGB_NONLINEAR_KHR";
739                 default:                                                                return DE_NULL;
740         }
741 }
742
743 const char* getPresentModeKHRName (VkPresentModeKHR value)
744 {
745         switch (value)
746         {
747                 case VK_PRESENT_MODE_IMMEDIATE_KHR:             return "VK_PRESENT_MODE_IMMEDIATE_KHR";
748                 case VK_PRESENT_MODE_MAILBOX_KHR:               return "VK_PRESENT_MODE_MAILBOX_KHR";
749                 case VK_PRESENT_MODE_FIFO_KHR:                  return "VK_PRESENT_MODE_FIFO_KHR";
750                 case VK_PRESENT_MODE_FIFO_RELAXED_KHR:  return "VK_PRESENT_MODE_FIFO_RELAXED_KHR";
751                 default:                                                                return DE_NULL;
752         }
753 }
754
755 tcu::Format::Bitfield<32> getFormatFeatureFlagsStr (VkFormatFeatureFlags value)
756 {
757         static const tcu::Format::BitDesc s_desc[] =
758         {
759                 tcu::Format::BitDesc(VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT,                               "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT"),
760                 tcu::Format::BitDesc(VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT,                               "VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT"),
761                 tcu::Format::BitDesc(VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT,                "VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT"),
762                 tcu::Format::BitDesc(VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT,                "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT"),
763                 tcu::Format::BitDesc(VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT,                "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT"),
764                 tcu::Format::BitDesc(VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT, "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT"),
765                 tcu::Format::BitDesc(VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT,                               "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT"),
766                 tcu::Format::BitDesc(VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT,                    "VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT"),
767                 tcu::Format::BitDesc(VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT,              "VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT"),
768                 tcu::Format::BitDesc(VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT,    "VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT"),
769                 tcu::Format::BitDesc(VK_FORMAT_FEATURE_BLIT_SRC_BIT,                                    "VK_FORMAT_FEATURE_BLIT_SRC_BIT"),
770                 tcu::Format::BitDesc(VK_FORMAT_FEATURE_BLIT_DST_BIT,                                    "VK_FORMAT_FEATURE_BLIT_DST_BIT"),
771         };
772         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
773 }
774
775 tcu::Format::Bitfield<32> getImageUsageFlagsStr (VkImageUsageFlags value)
776 {
777         static const tcu::Format::BitDesc s_desc[] =
778         {
779                 tcu::Format::BitDesc(VK_IMAGE_USAGE_TRANSFER_SRC_BIT,                           "VK_IMAGE_USAGE_TRANSFER_SRC_BIT"),
780                 tcu::Format::BitDesc(VK_IMAGE_USAGE_TRANSFER_DST_BIT,                           "VK_IMAGE_USAGE_TRANSFER_DST_BIT"),
781                 tcu::Format::BitDesc(VK_IMAGE_USAGE_SAMPLED_BIT,                                        "VK_IMAGE_USAGE_SAMPLED_BIT"),
782                 tcu::Format::BitDesc(VK_IMAGE_USAGE_STORAGE_BIT,                                        "VK_IMAGE_USAGE_STORAGE_BIT"),
783                 tcu::Format::BitDesc(VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT,                       "VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT"),
784                 tcu::Format::BitDesc(VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT,       "VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT"),
785                 tcu::Format::BitDesc(VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT,           "VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT"),
786                 tcu::Format::BitDesc(VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT,                       "VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT"),
787         };
788         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
789 }
790
791 tcu::Format::Bitfield<32> getImageCreateFlagsStr (VkImageCreateFlags value)
792 {
793         static const tcu::Format::BitDesc s_desc[] =
794         {
795                 tcu::Format::BitDesc(VK_IMAGE_CREATE_SPARSE_BINDING_BIT,        "VK_IMAGE_CREATE_SPARSE_BINDING_BIT"),
796                 tcu::Format::BitDesc(VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT,      "VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT"),
797                 tcu::Format::BitDesc(VK_IMAGE_CREATE_SPARSE_ALIASED_BIT,        "VK_IMAGE_CREATE_SPARSE_ALIASED_BIT"),
798                 tcu::Format::BitDesc(VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT,        "VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT"),
799                 tcu::Format::BitDesc(VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT,       "VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT"),
800         };
801         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
802 }
803
804 tcu::Format::Bitfield<32> getSampleCountFlagsStr (VkSampleCountFlags value)
805 {
806         static const tcu::Format::BitDesc s_desc[] =
807         {
808                 tcu::Format::BitDesc(VK_SAMPLE_COUNT_1_BIT,             "VK_SAMPLE_COUNT_1_BIT"),
809                 tcu::Format::BitDesc(VK_SAMPLE_COUNT_2_BIT,             "VK_SAMPLE_COUNT_2_BIT"),
810                 tcu::Format::BitDesc(VK_SAMPLE_COUNT_4_BIT,             "VK_SAMPLE_COUNT_4_BIT"),
811                 tcu::Format::BitDesc(VK_SAMPLE_COUNT_8_BIT,             "VK_SAMPLE_COUNT_8_BIT"),
812                 tcu::Format::BitDesc(VK_SAMPLE_COUNT_16_BIT,    "VK_SAMPLE_COUNT_16_BIT"),
813                 tcu::Format::BitDesc(VK_SAMPLE_COUNT_32_BIT,    "VK_SAMPLE_COUNT_32_BIT"),
814                 tcu::Format::BitDesc(VK_SAMPLE_COUNT_64_BIT,    "VK_SAMPLE_COUNT_64_BIT"),
815         };
816         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
817 }
818
819 tcu::Format::Bitfield<32> getQueueFlagsStr (VkQueueFlags value)
820 {
821         static const tcu::Format::BitDesc s_desc[] =
822         {
823                 tcu::Format::BitDesc(VK_QUEUE_GRAPHICS_BIT,                     "VK_QUEUE_GRAPHICS_BIT"),
824                 tcu::Format::BitDesc(VK_QUEUE_COMPUTE_BIT,                      "VK_QUEUE_COMPUTE_BIT"),
825                 tcu::Format::BitDesc(VK_QUEUE_TRANSFER_BIT,                     "VK_QUEUE_TRANSFER_BIT"),
826                 tcu::Format::BitDesc(VK_QUEUE_SPARSE_BINDING_BIT,       "VK_QUEUE_SPARSE_BINDING_BIT"),
827         };
828         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
829 }
830
831 tcu::Format::Bitfield<32> getMemoryPropertyFlagsStr (VkMemoryPropertyFlags value)
832 {
833         static const tcu::Format::BitDesc s_desc[] =
834         {
835                 tcu::Format::BitDesc(VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT,               "VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT"),
836                 tcu::Format::BitDesc(VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT,               "VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT"),
837                 tcu::Format::BitDesc(VK_MEMORY_PROPERTY_HOST_COHERENT_BIT,              "VK_MEMORY_PROPERTY_HOST_COHERENT_BIT"),
838                 tcu::Format::BitDesc(VK_MEMORY_PROPERTY_HOST_CACHED_BIT,                "VK_MEMORY_PROPERTY_HOST_CACHED_BIT"),
839                 tcu::Format::BitDesc(VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT,   "VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT"),
840         };
841         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
842 }
843
844 tcu::Format::Bitfield<32> getMemoryHeapFlagsStr (VkMemoryHeapFlags value)
845 {
846         static const tcu::Format::BitDesc s_desc[] =
847         {
848                 tcu::Format::BitDesc(VK_MEMORY_HEAP_DEVICE_LOCAL_BIT,   "VK_MEMORY_HEAP_DEVICE_LOCAL_BIT"),
849         };
850         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
851 }
852
853 tcu::Format::Bitfield<32> getImageAspectFlagsStr (VkImageAspectFlags value)
854 {
855         static const tcu::Format::BitDesc s_desc[] =
856         {
857                 tcu::Format::BitDesc(VK_IMAGE_ASPECT_COLOR_BIT,         "VK_IMAGE_ASPECT_COLOR_BIT"),
858                 tcu::Format::BitDesc(VK_IMAGE_ASPECT_DEPTH_BIT,         "VK_IMAGE_ASPECT_DEPTH_BIT"),
859                 tcu::Format::BitDesc(VK_IMAGE_ASPECT_STENCIL_BIT,       "VK_IMAGE_ASPECT_STENCIL_BIT"),
860                 tcu::Format::BitDesc(VK_IMAGE_ASPECT_METADATA_BIT,      "VK_IMAGE_ASPECT_METADATA_BIT"),
861         };
862         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
863 }
864
865 tcu::Format::Bitfield<32> getSparseImageFormatFlagsStr (VkSparseImageFormatFlags value)
866 {
867         static const tcu::Format::BitDesc s_desc[] =
868         {
869                 tcu::Format::BitDesc(VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT,                 "VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT"),
870                 tcu::Format::BitDesc(VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT,               "VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT"),
871                 tcu::Format::BitDesc(VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT, "VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT"),
872         };
873         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
874 }
875
876 tcu::Format::Bitfield<32> getSparseMemoryBindFlagsStr (VkSparseMemoryBindFlags value)
877 {
878         static const tcu::Format::BitDesc s_desc[] =
879         {
880                 tcu::Format::BitDesc(VK_SPARSE_MEMORY_BIND_METADATA_BIT,        "VK_SPARSE_MEMORY_BIND_METADATA_BIT"),
881         };
882         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
883 }
884
885 tcu::Format::Bitfield<32> getFenceCreateFlagsStr (VkFenceCreateFlags value)
886 {
887         static const tcu::Format::BitDesc s_desc[] =
888         {
889                 tcu::Format::BitDesc(VK_FENCE_CREATE_SIGNALED_BIT,      "VK_FENCE_CREATE_SIGNALED_BIT"),
890         };
891         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
892 }
893
894 tcu::Format::Bitfield<32> getQueryPipelineStatisticFlagsStr (VkQueryPipelineStatisticFlags value)
895 {
896         static const tcu::Format::BitDesc s_desc[] =
897         {
898                 tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT,                                           "VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT"),
899                 tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT,                                         "VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT"),
900                 tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT,                                         "VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT"),
901                 tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT,                                       "VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT"),
902                 tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT,                                        "VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT"),
903                 tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT,                                                      "VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT"),
904                 tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT,                                                       "VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT"),
905                 tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT,                                       "VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT"),
906                 tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT,                       "VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT"),
907                 tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT,        "VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT"),
908                 tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT,                                        "VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT"),
909         };
910         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
911 }
912
913 tcu::Format::Bitfield<32> getQueryResultFlagsStr (VkQueryResultFlags value)
914 {
915         static const tcu::Format::BitDesc s_desc[] =
916         {
917                 tcu::Format::BitDesc(VK_QUERY_RESULT_DEFAULT,                           "VK_QUERY_RESULT_DEFAULT"),
918                 tcu::Format::BitDesc(VK_QUERY_RESULT_64_BIT,                            "VK_QUERY_RESULT_64_BIT"),
919                 tcu::Format::BitDesc(VK_QUERY_RESULT_WAIT_BIT,                          "VK_QUERY_RESULT_WAIT_BIT"),
920                 tcu::Format::BitDesc(VK_QUERY_RESULT_WITH_AVAILABILITY_BIT,     "VK_QUERY_RESULT_WITH_AVAILABILITY_BIT"),
921                 tcu::Format::BitDesc(VK_QUERY_RESULT_PARTIAL_BIT,                       "VK_QUERY_RESULT_PARTIAL_BIT"),
922         };
923         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
924 }
925
926 tcu::Format::Bitfield<32> getBufferCreateFlagsStr (VkBufferCreateFlags value)
927 {
928         static const tcu::Format::BitDesc s_desc[] =
929         {
930                 tcu::Format::BitDesc(VK_BUFFER_CREATE_SPARSE_BINDING_BIT,       "VK_BUFFER_CREATE_SPARSE_BINDING_BIT"),
931                 tcu::Format::BitDesc(VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT,     "VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT"),
932                 tcu::Format::BitDesc(VK_BUFFER_CREATE_SPARSE_ALIASED_BIT,       "VK_BUFFER_CREATE_SPARSE_ALIASED_BIT"),
933         };
934         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
935 }
936
937 tcu::Format::Bitfield<32> getBufferUsageFlagsStr (VkBufferUsageFlags value)
938 {
939         static const tcu::Format::BitDesc s_desc[] =
940         {
941                 tcu::Format::BitDesc(VK_BUFFER_USAGE_TRANSFER_SRC_BIT,                  "VK_BUFFER_USAGE_TRANSFER_SRC_BIT"),
942                 tcu::Format::BitDesc(VK_BUFFER_USAGE_TRANSFER_DST_BIT,                  "VK_BUFFER_USAGE_TRANSFER_DST_BIT"),
943                 tcu::Format::BitDesc(VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT,  "VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT"),
944                 tcu::Format::BitDesc(VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT,  "VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT"),
945                 tcu::Format::BitDesc(VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT,                "VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT"),
946                 tcu::Format::BitDesc(VK_BUFFER_USAGE_STORAGE_BUFFER_BIT,                "VK_BUFFER_USAGE_STORAGE_BUFFER_BIT"),
947                 tcu::Format::BitDesc(VK_BUFFER_USAGE_INDEX_BUFFER_BIT,                  "VK_BUFFER_USAGE_INDEX_BUFFER_BIT"),
948                 tcu::Format::BitDesc(VK_BUFFER_USAGE_VERTEX_BUFFER_BIT,                 "VK_BUFFER_USAGE_VERTEX_BUFFER_BIT"),
949                 tcu::Format::BitDesc(VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT,               "VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT"),
950         };
951         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
952 }
953
954 tcu::Format::Bitfield<32> getPipelineCreateFlagsStr (VkPipelineCreateFlags value)
955 {
956         static const tcu::Format::BitDesc s_desc[] =
957         {
958                 tcu::Format::BitDesc(VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT,       "VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT"),
959                 tcu::Format::BitDesc(VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT,          "VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT"),
960                 tcu::Format::BitDesc(VK_PIPELINE_CREATE_DERIVATIVE_BIT,                         "VK_PIPELINE_CREATE_DERIVATIVE_BIT"),
961         };
962         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
963 }
964
965 tcu::Format::Bitfield<32> getShaderStageFlagsStr (VkShaderStageFlags value)
966 {
967         static const tcu::Format::BitDesc s_desc[] =
968         {
969                 tcu::Format::BitDesc(VK_SHADER_STAGE_VERTEX_BIT,                                        "VK_SHADER_STAGE_VERTEX_BIT"),
970                 tcu::Format::BitDesc(VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT,          "VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT"),
971                 tcu::Format::BitDesc(VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT,       "VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT"),
972                 tcu::Format::BitDesc(VK_SHADER_STAGE_GEOMETRY_BIT,                                      "VK_SHADER_STAGE_GEOMETRY_BIT"),
973                 tcu::Format::BitDesc(VK_SHADER_STAGE_FRAGMENT_BIT,                                      "VK_SHADER_STAGE_FRAGMENT_BIT"),
974                 tcu::Format::BitDesc(VK_SHADER_STAGE_COMPUTE_BIT,                                       "VK_SHADER_STAGE_COMPUTE_BIT"),
975                 tcu::Format::BitDesc(VK_SHADER_STAGE_ALL_GRAPHICS,                                      "VK_SHADER_STAGE_ALL_GRAPHICS"),
976                 tcu::Format::BitDesc(VK_SHADER_STAGE_ALL,                                                       "VK_SHADER_STAGE_ALL"),
977         };
978         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
979 }
980
981 tcu::Format::Bitfield<32> getCullModeFlagsStr (VkCullModeFlags value)
982 {
983         static const tcu::Format::BitDesc s_desc[] =
984         {
985                 tcu::Format::BitDesc(VK_CULL_MODE_NONE,                         "VK_CULL_MODE_NONE"),
986                 tcu::Format::BitDesc(VK_CULL_MODE_FRONT_BIT,            "VK_CULL_MODE_FRONT_BIT"),
987                 tcu::Format::BitDesc(VK_CULL_MODE_BACK_BIT,                     "VK_CULL_MODE_BACK_BIT"),
988                 tcu::Format::BitDesc(VK_CULL_MODE_FRONT_AND_BACK,       "VK_CULL_MODE_FRONT_AND_BACK"),
989         };
990         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
991 }
992
993 tcu::Format::Bitfield<32> getColorComponentFlagsStr (VkColorComponentFlags value)
994 {
995         static const tcu::Format::BitDesc s_desc[] =
996         {
997                 tcu::Format::BitDesc(VK_COLOR_COMPONENT_R_BIT,  "VK_COLOR_COMPONENT_R_BIT"),
998                 tcu::Format::BitDesc(VK_COLOR_COMPONENT_G_BIT,  "VK_COLOR_COMPONENT_G_BIT"),
999                 tcu::Format::BitDesc(VK_COLOR_COMPONENT_B_BIT,  "VK_COLOR_COMPONENT_B_BIT"),
1000                 tcu::Format::BitDesc(VK_COLOR_COMPONENT_A_BIT,  "VK_COLOR_COMPONENT_A_BIT"),
1001         };
1002         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1003 }
1004
1005 tcu::Format::Bitfield<32> getDescriptorPoolCreateFlagsStr (VkDescriptorPoolCreateFlags value)
1006 {
1007         static const tcu::Format::BitDesc s_desc[] =
1008         {
1009                 tcu::Format::BitDesc(VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT, "VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT"),
1010         };
1011         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1012 }
1013
1014 tcu::Format::Bitfield<32> getAttachmentDescriptionFlagsStr (VkAttachmentDescriptionFlags value)
1015 {
1016         static const tcu::Format::BitDesc s_desc[] =
1017         {
1018                 tcu::Format::BitDesc(VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT,   "VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT"),
1019         };
1020         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1021 }
1022
1023 tcu::Format::Bitfield<32> getPipelineStageFlagsStr (VkPipelineStageFlags value)
1024 {
1025         static const tcu::Format::BitDesc s_desc[] =
1026         {
1027                 tcu::Format::BitDesc(VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,                                         "VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT"),
1028                 tcu::Format::BitDesc(VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT,                                       "VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT"),
1029                 tcu::Format::BitDesc(VK_PIPELINE_STAGE_VERTEX_INPUT_BIT,                                        "VK_PIPELINE_STAGE_VERTEX_INPUT_BIT"),
1030                 tcu::Format::BitDesc(VK_PIPELINE_STAGE_VERTEX_SHADER_BIT,                                       "VK_PIPELINE_STAGE_VERTEX_SHADER_BIT"),
1031                 tcu::Format::BitDesc(VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT,         "VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT"),
1032                 tcu::Format::BitDesc(VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT,      "VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT"),
1033                 tcu::Format::BitDesc(VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT,                                     "VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT"),
1034                 tcu::Format::BitDesc(VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT,                                     "VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT"),
1035                 tcu::Format::BitDesc(VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT,                        "VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT"),
1036                 tcu::Format::BitDesc(VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT,                         "VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT"),
1037                 tcu::Format::BitDesc(VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT,                     "VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT"),
1038                 tcu::Format::BitDesc(VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT,                                      "VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT"),
1039                 tcu::Format::BitDesc(VK_PIPELINE_STAGE_TRANSFER_BIT,                                            "VK_PIPELINE_STAGE_TRANSFER_BIT"),
1040                 tcu::Format::BitDesc(VK_PIPELINE_STAGE_HOST_BIT,                                                        "VK_PIPELINE_STAGE_HOST_BIT"),
1041                 tcu::Format::BitDesc(VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT,                                        "VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT"),
1042                 tcu::Format::BitDesc(VK_PIPELINE_STAGE_ALL_COMMANDS_BIT,                                        "VK_PIPELINE_STAGE_ALL_COMMANDS_BIT"),
1043         };
1044         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1045 }
1046
1047 tcu::Format::Bitfield<32> getAccessFlagsStr (VkAccessFlags value)
1048 {
1049         static const tcu::Format::BitDesc s_desc[] =
1050         {
1051                 tcu::Format::BitDesc(VK_ACCESS_INDIRECT_COMMAND_READ_BIT,                       "VK_ACCESS_INDIRECT_COMMAND_READ_BIT"),
1052                 tcu::Format::BitDesc(VK_ACCESS_INDEX_READ_BIT,                                          "VK_ACCESS_INDEX_READ_BIT"),
1053                 tcu::Format::BitDesc(VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT,                       "VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT"),
1054                 tcu::Format::BitDesc(VK_ACCESS_UNIFORM_READ_BIT,                                        "VK_ACCESS_UNIFORM_READ_BIT"),
1055                 tcu::Format::BitDesc(VK_ACCESS_INPUT_ATTACHMENT_READ_BIT,                       "VK_ACCESS_INPUT_ATTACHMENT_READ_BIT"),
1056                 tcu::Format::BitDesc(VK_ACCESS_SHADER_READ_BIT,                                         "VK_ACCESS_SHADER_READ_BIT"),
1057                 tcu::Format::BitDesc(VK_ACCESS_SHADER_WRITE_BIT,                                        "VK_ACCESS_SHADER_WRITE_BIT"),
1058                 tcu::Format::BitDesc(VK_ACCESS_COLOR_ATTACHMENT_READ_BIT,                       "VK_ACCESS_COLOR_ATTACHMENT_READ_BIT"),
1059                 tcu::Format::BitDesc(VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT,                      "VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT"),
1060                 tcu::Format::BitDesc(VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT,       "VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT"),
1061                 tcu::Format::BitDesc(VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT,      "VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT"),
1062                 tcu::Format::BitDesc(VK_ACCESS_TRANSFER_READ_BIT,                                       "VK_ACCESS_TRANSFER_READ_BIT"),
1063                 tcu::Format::BitDesc(VK_ACCESS_TRANSFER_WRITE_BIT,                                      "VK_ACCESS_TRANSFER_WRITE_BIT"),
1064                 tcu::Format::BitDesc(VK_ACCESS_HOST_READ_BIT,                                           "VK_ACCESS_HOST_READ_BIT"),
1065                 tcu::Format::BitDesc(VK_ACCESS_HOST_WRITE_BIT,                                          "VK_ACCESS_HOST_WRITE_BIT"),
1066                 tcu::Format::BitDesc(VK_ACCESS_MEMORY_READ_BIT,                                         "VK_ACCESS_MEMORY_READ_BIT"),
1067                 tcu::Format::BitDesc(VK_ACCESS_MEMORY_WRITE_BIT,                                        "VK_ACCESS_MEMORY_WRITE_BIT"),
1068         };
1069         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1070 }
1071
1072 tcu::Format::Bitfield<32> getDependencyFlagsStr (VkDependencyFlags value)
1073 {
1074         static const tcu::Format::BitDesc s_desc[] =
1075         {
1076                 tcu::Format::BitDesc(VK_DEPENDENCY_BY_REGION_BIT,       "VK_DEPENDENCY_BY_REGION_BIT"),
1077         };
1078         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1079 }
1080
1081 tcu::Format::Bitfield<32> getCommandPoolCreateFlagsStr (VkCommandPoolCreateFlags value)
1082 {
1083         static const tcu::Format::BitDesc s_desc[] =
1084         {
1085                 tcu::Format::BitDesc(VK_COMMAND_POOL_CREATE_TRANSIENT_BIT,                              "VK_COMMAND_POOL_CREATE_TRANSIENT_BIT"),
1086                 tcu::Format::BitDesc(VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT,   "VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT"),
1087         };
1088         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1089 }
1090
1091 tcu::Format::Bitfield<32> getCommandPoolResetFlagsStr (VkCommandPoolResetFlags value)
1092 {
1093         static const tcu::Format::BitDesc s_desc[] =
1094         {
1095                 tcu::Format::BitDesc(VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT,       "VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT"),
1096         };
1097         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1098 }
1099
1100 tcu::Format::Bitfield<32> getCommandBufferUsageFlagsStr (VkCommandBufferUsageFlags value)
1101 {
1102         static const tcu::Format::BitDesc s_desc[] =
1103         {
1104                 tcu::Format::BitDesc(VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT,               "VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT"),
1105                 tcu::Format::BitDesc(VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT,  "VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT"),
1106                 tcu::Format::BitDesc(VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT,              "VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT"),
1107         };
1108         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1109 }
1110
1111 tcu::Format::Bitfield<32> getQueryControlFlagsStr (VkQueryControlFlags value)
1112 {
1113         static const tcu::Format::BitDesc s_desc[] =
1114         {
1115                 tcu::Format::BitDesc(VK_QUERY_CONTROL_PRECISE_BIT,      "VK_QUERY_CONTROL_PRECISE_BIT"),
1116         };
1117         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1118 }
1119
1120 tcu::Format::Bitfield<32> getCommandBufferResetFlagsStr (VkCommandBufferResetFlags value)
1121 {
1122         static const tcu::Format::BitDesc s_desc[] =
1123         {
1124                 tcu::Format::BitDesc(VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT,     "VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT"),
1125         };
1126         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1127 }
1128
1129 tcu::Format::Bitfield<32> getStencilFaceFlagsStr (VkStencilFaceFlags value)
1130 {
1131         static const tcu::Format::BitDesc s_desc[] =
1132         {
1133                 tcu::Format::BitDesc(VK_STENCIL_FACE_NONE,              "VK_STENCIL_FACE_NONE"),
1134                 tcu::Format::BitDesc(VK_STENCIL_FACE_FRONT_BIT, "VK_STENCIL_FACE_FRONT_BIT"),
1135                 tcu::Format::BitDesc(VK_STENCIL_FACE_BACK_BIT,  "VK_STENCIL_FACE_BACK_BIT"),
1136                 tcu::Format::BitDesc(VK_STENCIL_FRONT_AND_BACK, "VK_STENCIL_FRONT_AND_BACK"),
1137         };
1138         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1139 }
1140
1141 tcu::Format::Bitfield<32> getSurfaceTransformFlagsKHRStr (VkSurfaceTransformFlagsKHR value)
1142 {
1143         static const tcu::Format::BitDesc s_desc[] =
1144         {
1145                 tcu::Format::BitDesc(VK_SURFACE_TRANSFORM_NONE_BIT_KHR,                                                 "VK_SURFACE_TRANSFORM_NONE_BIT_KHR"),
1146                 tcu::Format::BitDesc(VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR,                                    "VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR"),
1147                 tcu::Format::BitDesc(VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR,                                   "VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR"),
1148                 tcu::Format::BitDesc(VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR,                                   "VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR"),
1149                 tcu::Format::BitDesc(VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR,                    "VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR"),
1150                 tcu::Format::BitDesc(VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR,  "VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR"),
1151                 tcu::Format::BitDesc(VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR, "VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR"),
1152                 tcu::Format::BitDesc(VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR, "VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR"),
1153                 tcu::Format::BitDesc(VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR,                                              "VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR"),
1154         };
1155         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1156 }
1157
1158 tcu::Format::Bitfield<32> getCompositeAlphaFlagsKHRStr (VkCompositeAlphaFlagsKHR value)
1159 {
1160         static const tcu::Format::BitDesc s_desc[] =
1161         {
1162                 tcu::Format::BitDesc(VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR,                         "VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR"),
1163                 tcu::Format::BitDesc(VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR,         "VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR"),
1164                 tcu::Format::BitDesc(VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR,        "VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR"),
1165                 tcu::Format::BitDesc(VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR,                        "VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR"),
1166         };
1167         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1168 }
1169
1170 tcu::Format::Bitfield<32> getDisplayPlaneAlphaFlagsKHRStr (VkDisplayPlaneAlphaFlagsKHR value)
1171 {
1172         static const tcu::Format::BitDesc s_desc[] =
1173         {
1174                 tcu::Format::BitDesc(VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR,                                             "VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR"),
1175                 tcu::Format::BitDesc(VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR,                                             "VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR"),
1176                 tcu::Format::BitDesc(VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR,                                  "VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR"),
1177                 tcu::Format::BitDesc(VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR,    "VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR"),
1178         };
1179         return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
1180 }
1181
1182 tcu::Format::Bitfield<32> getInstanceCreateFlagsStr (VkInstanceCreateFlags value)
1183 {
1184         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
1185 }
1186
1187 tcu::Format::Bitfield<32> getDeviceCreateFlagsStr (VkDeviceCreateFlags value)
1188 {
1189         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
1190 }
1191
1192 tcu::Format::Bitfield<32> getDeviceQueueCreateFlagsStr (VkDeviceQueueCreateFlags value)
1193 {
1194         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
1195 }
1196
1197 tcu::Format::Bitfield<32> getMemoryMapFlagsStr (VkMemoryMapFlags value)
1198 {
1199         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
1200 }
1201
1202 tcu::Format::Bitfield<32> getSemaphoreCreateFlagsStr (VkSemaphoreCreateFlags value)
1203 {
1204         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
1205 }
1206
1207 tcu::Format::Bitfield<32> getEventCreateFlagsStr (VkEventCreateFlags value)
1208 {
1209         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
1210 }
1211
1212 tcu::Format::Bitfield<32> getQueryPoolCreateFlagsStr (VkQueryPoolCreateFlags value)
1213 {
1214         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
1215 }
1216
1217 tcu::Format::Bitfield<32> getBufferViewCreateFlagsStr (VkBufferViewCreateFlags value)
1218 {
1219         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
1220 }
1221
1222 tcu::Format::Bitfield<32> getImageViewCreateFlagsStr (VkImageViewCreateFlags value)
1223 {
1224         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
1225 }
1226
1227 tcu::Format::Bitfield<32> getShaderModuleCreateFlagsStr (VkShaderModuleCreateFlags value)
1228 {
1229         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
1230 }
1231
1232 tcu::Format::Bitfield<32> getPipelineCacheCreateFlagsStr (VkPipelineCacheCreateFlags value)
1233 {
1234         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
1235 }
1236
1237 tcu::Format::Bitfield<32> getPipelineShaderStageCreateFlagsStr (VkPipelineShaderStageCreateFlags value)
1238 {
1239         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
1240 }
1241
1242 tcu::Format::Bitfield<32> getPipelineVertexInputStateCreateFlagsStr (VkPipelineVertexInputStateCreateFlags value)
1243 {
1244         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
1245 }
1246
1247 tcu::Format::Bitfield<32> getPipelineInputAssemblyStateCreateFlagsStr (VkPipelineInputAssemblyStateCreateFlags value)
1248 {
1249         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
1250 }
1251
1252 tcu::Format::Bitfield<32> getPipelineTesselationStateCreateFlagsStr (VkPipelineTesselationStateCreateFlags value)
1253 {
1254         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
1255 }
1256
1257 tcu::Format::Bitfield<32> getPipelineViewportStateCreateFlagsStr (VkPipelineViewportStateCreateFlags value)
1258 {
1259         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
1260 }
1261
1262 tcu::Format::Bitfield<32> getPipelineRasterizationStateCreateFlagsStr (VkPipelineRasterizationStateCreateFlags value)
1263 {
1264         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
1265 }
1266
1267 tcu::Format::Bitfield<32> getPipelineMultisampleStateCreateFlagsStr (VkPipelineMultisampleStateCreateFlags value)
1268 {
1269         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
1270 }
1271
1272 tcu::Format::Bitfield<32> getPipelineDepthStencilStateCreateFlagsStr (VkPipelineDepthStencilStateCreateFlags value)
1273 {
1274         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
1275 }
1276
1277 tcu::Format::Bitfield<32> getPipelineColorBlendStateCreateFlagsStr (VkPipelineColorBlendStateCreateFlags value)
1278 {
1279         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
1280 }
1281
1282 tcu::Format::Bitfield<32> getPipelineDynamicStateCreateFlagsStr (VkPipelineDynamicStateCreateFlags value)
1283 {
1284         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
1285 }
1286
1287 tcu::Format::Bitfield<32> getPipelineLayoutCreateFlagsStr (VkPipelineLayoutCreateFlags value)
1288 {
1289         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
1290 }
1291
1292 tcu::Format::Bitfield<32> getSamplerCreateFlagsStr (VkSamplerCreateFlags value)
1293 {
1294         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
1295 }
1296
1297 tcu::Format::Bitfield<32> getDescriptorSetLayoutCreateFlagsStr (VkDescriptorSetLayoutCreateFlags value)
1298 {
1299         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
1300 }
1301
1302 tcu::Format::Bitfield<32> getDescriptorPoolResetFlagsStr (VkDescriptorPoolResetFlags value)
1303 {
1304         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
1305 }
1306
1307 tcu::Format::Bitfield<32> getFramebufferCreateFlagsStr (VkFramebufferCreateFlags value)
1308 {
1309         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
1310 }
1311
1312 tcu::Format::Bitfield<32> getRenderPassCreateFlagsStr (VkRenderPassCreateFlags value)
1313 {
1314         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
1315 }
1316
1317 tcu::Format::Bitfield<32> getSubpassDescriptionFlagsStr (VkSubpassDescriptionFlags value)
1318 {
1319         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
1320 }
1321
1322 tcu::Format::Bitfield<32> getSwapchainCreateFlagsKHRStr (VkSwapchainCreateFlagsKHR value)
1323 {
1324         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
1325 }
1326
1327 tcu::Format::Bitfield<32> getDisplayModeCreateFlagsKHRStr (VkDisplayModeCreateFlagsKHR value)
1328 {
1329         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
1330 }
1331
1332 tcu::Format::Bitfield<32> getDisplaySurfaceCreateFlagsKHRStr (VkDisplaySurfaceCreateFlagsKHR value)
1333 {
1334         return tcu::Format::Bitfield<32>(value, DE_NULL, DE_NULL);
1335 }
1336
1337 std::ostream& operator<< (std::ostream& s, const VkApplicationInfo& value)
1338 {
1339         s << "VkApplicationInfo = {\n";
1340         s << "\tsType = " << value.sType << '\n';
1341         s << "\tpNext = " << value.pNext << '\n';
1342         s << "\tpApplicationName = " << getCharPtrStr(value.pApplicationName) << '\n';
1343         s << "\tapplicationVersion = " << value.applicationVersion << '\n';
1344         s << "\tpEngineName = " << getCharPtrStr(value.pEngineName) << '\n';
1345         s << "\tengineVersion = " << value.engineVersion << '\n';
1346         s << "\tapiVersion = " << value.apiVersion << '\n';
1347         s << '}';
1348         return s;
1349 }
1350
1351 std::ostream& operator<< (std::ostream& s, const VkInstanceCreateInfo& value)
1352 {
1353         s << "VkInstanceCreateInfo = {\n";
1354         s << "\tsType = " << value.sType << '\n';
1355         s << "\tpNext = " << value.pNext << '\n';
1356         s << "\tflags = " << getInstanceCreateFlagsStr(value.flags) << '\n';
1357         s << "\tpApplicationInfo = " << value.pApplicationInfo << '\n';
1358         s << "\tenabledLayerNameCount = " << value.enabledLayerNameCount << '\n';
1359         s << "\tppEnabledLayerNames = " << value.ppEnabledLayerNames << '\n';
1360         s << "\tenabledExtensionNameCount = " << value.enabledExtensionNameCount << '\n';
1361         s << "\tppEnabledExtensionNames = " << value.ppEnabledExtensionNames << '\n';
1362         s << '}';
1363         return s;
1364 }
1365
1366 std::ostream& operator<< (std::ostream& s, const VkAllocationCallbacks& value)
1367 {
1368         s << "VkAllocationCallbacks = {\n";
1369         s << "\tpUserData = " << value.pUserData << '\n';
1370         s << "\tpfnAllocation = " << value.pfnAllocation << '\n';
1371         s << "\tpfnReallocation = " << value.pfnReallocation << '\n';
1372         s << "\tpfnFree = " << value.pfnFree << '\n';
1373         s << "\tpfnInternalAllocation = " << value.pfnInternalAllocation << '\n';
1374         s << "\tpfnInternalFree = " << value.pfnInternalFree << '\n';
1375         s << '}';
1376         return s;
1377 }
1378
1379 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceFeatures& value)
1380 {
1381         s << "VkPhysicalDeviceFeatures = {\n";
1382         s << "\trobustBufferAccess = " << value.robustBufferAccess << '\n';
1383         s << "\tfullDrawIndexUint32 = " << value.fullDrawIndexUint32 << '\n';
1384         s << "\timageCubeArray = " << value.imageCubeArray << '\n';
1385         s << "\tindependentBlend = " << value.independentBlend << '\n';
1386         s << "\tgeometryShader = " << value.geometryShader << '\n';
1387         s << "\ttessellationShader = " << value.tessellationShader << '\n';
1388         s << "\tsampleRateShading = " << value.sampleRateShading << '\n';
1389         s << "\tdualSrcBlend = " << value.dualSrcBlend << '\n';
1390         s << "\tlogicOp = " << value.logicOp << '\n';
1391         s << "\tmultiDrawIndirect = " << value.multiDrawIndirect << '\n';
1392         s << "\tdepthClamp = " << value.depthClamp << '\n';
1393         s << "\tdepthBiasClamp = " << value.depthBiasClamp << '\n';
1394         s << "\tfillModeNonSolid = " << value.fillModeNonSolid << '\n';
1395         s << "\tdepthBounds = " << value.depthBounds << '\n';
1396         s << "\twideLines = " << value.wideLines << '\n';
1397         s << "\tlargePoints = " << value.largePoints << '\n';
1398         s << "\talphaToOne = " << value.alphaToOne << '\n';
1399         s << "\tmultiViewport = " << value.multiViewport << '\n';
1400         s << "\tsamplerAnisotropy = " << value.samplerAnisotropy << '\n';
1401         s << "\ttextureCompressionETC2 = " << value.textureCompressionETC2 << '\n';
1402         s << "\ttextureCompressionASTC_LDR = " << value.textureCompressionASTC_LDR << '\n';
1403         s << "\ttextureCompressionBC = " << value.textureCompressionBC << '\n';
1404         s << "\tocclusionQueryPrecise = " << value.occlusionQueryPrecise << '\n';
1405         s << "\tpipelineStatisticsQuery = " << value.pipelineStatisticsQuery << '\n';
1406         s << "\tvertexPipelineStoresAndAtomics = " << value.vertexPipelineStoresAndAtomics << '\n';
1407         s << "\tfragmentStoresAndAtomics = " << value.fragmentStoresAndAtomics << '\n';
1408         s << "\tshaderTessellationAndGeometryPointSize = " << value.shaderTessellationAndGeometryPointSize << '\n';
1409         s << "\tshaderImageGatherExtended = " << value.shaderImageGatherExtended << '\n';
1410         s << "\tshaderStorageImageExtendedFormats = " << value.shaderStorageImageExtendedFormats << '\n';
1411         s << "\tshaderStorageImageMultisample = " << value.shaderStorageImageMultisample << '\n';
1412         s << "\tshaderStorageImageReadWithoutFormat = " << value.shaderStorageImageReadWithoutFormat << '\n';
1413         s << "\tshaderStorageImageWriteWithoutFormat = " << value.shaderStorageImageWriteWithoutFormat << '\n';
1414         s << "\tshaderUniformBufferArrayDynamicIndexing = " << value.shaderUniformBufferArrayDynamicIndexing << '\n';
1415         s << "\tshaderSampledImageArrayDynamicIndexing = " << value.shaderSampledImageArrayDynamicIndexing << '\n';
1416         s << "\tshaderStorageBufferArrayDynamicIndexing = " << value.shaderStorageBufferArrayDynamicIndexing << '\n';
1417         s << "\tshaderStorageImageArrayDynamicIndexing = " << value.shaderStorageImageArrayDynamicIndexing << '\n';
1418         s << "\tshaderClipDistance = " << value.shaderClipDistance << '\n';
1419         s << "\tshaderCullDistance = " << value.shaderCullDistance << '\n';
1420         s << "\tshaderFloat64 = " << value.shaderFloat64 << '\n';
1421         s << "\tshaderInt64 = " << value.shaderInt64 << '\n';
1422         s << "\tshaderInt16 = " << value.shaderInt16 << '\n';
1423         s << "\tshaderResourceResidency = " << value.shaderResourceResidency << '\n';
1424         s << "\tshaderResourceMinLod = " << value.shaderResourceMinLod << '\n';
1425         s << "\tsparseBinding = " << value.sparseBinding << '\n';
1426         s << "\tsparseResidencyBuffer = " << value.sparseResidencyBuffer << '\n';
1427         s << "\tsparseResidencyImage2D = " << value.sparseResidencyImage2D << '\n';
1428         s << "\tsparseResidencyImage3D = " << value.sparseResidencyImage3D << '\n';
1429         s << "\tsparseResidency2Samples = " << value.sparseResidency2Samples << '\n';
1430         s << "\tsparseResidency4Samples = " << value.sparseResidency4Samples << '\n';
1431         s << "\tsparseResidency8Samples = " << value.sparseResidency8Samples << '\n';
1432         s << "\tsparseResidency16Samples = " << value.sparseResidency16Samples << '\n';
1433         s << "\tsparseResidencyAliased = " << value.sparseResidencyAliased << '\n';
1434         s << "\tvariableMultisampleRate = " << value.variableMultisampleRate << '\n';
1435         s << '}';
1436         return s;
1437 }
1438
1439 std::ostream& operator<< (std::ostream& s, const VkFormatProperties& value)
1440 {
1441         s << "VkFormatProperties = {\n";
1442         s << "\tlinearTilingFeatures = " << getFormatFeatureFlagsStr(value.linearTilingFeatures) << '\n';
1443         s << "\toptimalTilingFeatures = " << getFormatFeatureFlagsStr(value.optimalTilingFeatures) << '\n';
1444         s << "\tbufferFeatures = " << getFormatFeatureFlagsStr(value.bufferFeatures) << '\n';
1445         s << '}';
1446         return s;
1447 }
1448
1449 std::ostream& operator<< (std::ostream& s, const VkExtent3D& value)
1450 {
1451         s << "VkExtent3D = {\n";
1452         s << "\twidth = " << value.width << '\n';
1453         s << "\theight = " << value.height << '\n';
1454         s << "\tdepth = " << value.depth << '\n';
1455         s << '}';
1456         return s;
1457 }
1458
1459 std::ostream& operator<< (std::ostream& s, const VkImageFormatProperties& value)
1460 {
1461         s << "VkImageFormatProperties = {\n";
1462         s << "\tmaxExtent = " << value.maxExtent << '\n';
1463         s << "\tmaxMipLevels = " << value.maxMipLevels << '\n';
1464         s << "\tmaxArrayLayers = " << value.maxArrayLayers << '\n';
1465         s << "\tsampleCounts = " << getSampleCountFlagsStr(value.sampleCounts) << '\n';
1466         s << "\tmaxResourceSize = " << value.maxResourceSize << '\n';
1467         s << '}';
1468         return s;
1469 }
1470
1471 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceLimits& value)
1472 {
1473         s << "VkPhysicalDeviceLimits = {\n";
1474         s << "\tmaxImageDimension1D = " << value.maxImageDimension1D << '\n';
1475         s << "\tmaxImageDimension2D = " << value.maxImageDimension2D << '\n';
1476         s << "\tmaxImageDimension3D = " << value.maxImageDimension3D << '\n';
1477         s << "\tmaxImageDimensionCube = " << value.maxImageDimensionCube << '\n';
1478         s << "\tmaxImageArrayLayers = " << value.maxImageArrayLayers << '\n';
1479         s << "\tmaxTexelBufferElements = " << value.maxTexelBufferElements << '\n';
1480         s << "\tmaxUniformBufferRange = " << value.maxUniformBufferRange << '\n';
1481         s << "\tmaxStorageBufferRange = " << value.maxStorageBufferRange << '\n';
1482         s << "\tmaxPushConstantsSize = " << value.maxPushConstantsSize << '\n';
1483         s << "\tmaxMemoryAllocationCount = " << value.maxMemoryAllocationCount << '\n';
1484         s << "\tmaxSamplerAllocationCount = " << value.maxSamplerAllocationCount << '\n';
1485         s << "\tbufferImageGranularity = " << value.bufferImageGranularity << '\n';
1486         s << "\tsparseAddressSpaceSize = " << value.sparseAddressSpaceSize << '\n';
1487         s << "\tmaxBoundDescriptorSets = " << value.maxBoundDescriptorSets << '\n';
1488         s << "\tmaxPerStageDescriptorSamplers = " << value.maxPerStageDescriptorSamplers << '\n';
1489         s << "\tmaxPerStageDescriptorUniformBuffers = " << value.maxPerStageDescriptorUniformBuffers << '\n';
1490         s << "\tmaxPerStageDescriptorStorageBuffers = " << value.maxPerStageDescriptorStorageBuffers << '\n';
1491         s << "\tmaxPerStageDescriptorSampledImages = " << value.maxPerStageDescriptorSampledImages << '\n';
1492         s << "\tmaxPerStageDescriptorStorageImages = " << value.maxPerStageDescriptorStorageImages << '\n';
1493         s << "\tmaxPerStageDescriptorInputAttachments = " << value.maxPerStageDescriptorInputAttachments << '\n';
1494         s << "\tmaxPerStageResources = " << value.maxPerStageResources << '\n';
1495         s << "\tmaxDescriptorSetSamplers = " << value.maxDescriptorSetSamplers << '\n';
1496         s << "\tmaxDescriptorSetUniformBuffers = " << value.maxDescriptorSetUniformBuffers << '\n';
1497         s << "\tmaxDescriptorSetUniformBuffersDynamic = " << value.maxDescriptorSetUniformBuffersDynamic << '\n';
1498         s << "\tmaxDescriptorSetStorageBuffers = " << value.maxDescriptorSetStorageBuffers << '\n';
1499         s << "\tmaxDescriptorSetStorageBuffersDynamic = " << value.maxDescriptorSetStorageBuffersDynamic << '\n';
1500         s << "\tmaxDescriptorSetSampledImages = " << value.maxDescriptorSetSampledImages << '\n';
1501         s << "\tmaxDescriptorSetStorageImages = " << value.maxDescriptorSetStorageImages << '\n';
1502         s << "\tmaxDescriptorSetInputAttachments = " << value.maxDescriptorSetInputAttachments << '\n';
1503         s << "\tmaxVertexInputAttributes = " << value.maxVertexInputAttributes << '\n';
1504         s << "\tmaxVertexInputBindings = " << value.maxVertexInputBindings << '\n';
1505         s << "\tmaxVertexInputAttributeOffset = " << value.maxVertexInputAttributeOffset << '\n';
1506         s << "\tmaxVertexInputBindingStride = " << value.maxVertexInputBindingStride << '\n';
1507         s << "\tmaxVertexOutputComponents = " << value.maxVertexOutputComponents << '\n';
1508         s << "\tmaxTessellationGenerationLevel = " << value.maxTessellationGenerationLevel << '\n';
1509         s << "\tmaxTessellationPatchSize = " << value.maxTessellationPatchSize << '\n';
1510         s << "\tmaxTessellationControlPerVertexInputComponents = " << value.maxTessellationControlPerVertexInputComponents << '\n';
1511         s << "\tmaxTessellationControlPerVertexOutputComponents = " << value.maxTessellationControlPerVertexOutputComponents << '\n';
1512         s << "\tmaxTessellationControlPerPatchOutputComponents = " << value.maxTessellationControlPerPatchOutputComponents << '\n';
1513         s << "\tmaxTessellationControlTotalOutputComponents = " << value.maxTessellationControlTotalOutputComponents << '\n';
1514         s << "\tmaxTessellationEvaluationInputComponents = " << value.maxTessellationEvaluationInputComponents << '\n';
1515         s << "\tmaxTessellationEvaluationOutputComponents = " << value.maxTessellationEvaluationOutputComponents << '\n';
1516         s << "\tmaxGeometryShaderInvocations = " << value.maxGeometryShaderInvocations << '\n';
1517         s << "\tmaxGeometryInputComponents = " << value.maxGeometryInputComponents << '\n';
1518         s << "\tmaxGeometryOutputComponents = " << value.maxGeometryOutputComponents << '\n';
1519         s << "\tmaxGeometryOutputVertices = " << value.maxGeometryOutputVertices << '\n';
1520         s << "\tmaxGeometryTotalOutputComponents = " << value.maxGeometryTotalOutputComponents << '\n';
1521         s << "\tmaxFragmentInputComponents = " << value.maxFragmentInputComponents << '\n';
1522         s << "\tmaxFragmentOutputAttachments = " << value.maxFragmentOutputAttachments << '\n';
1523         s << "\tmaxFragmentDualSrcAttachments = " << value.maxFragmentDualSrcAttachments << '\n';
1524         s << "\tmaxFragmentCombinedOutputResources = " << value.maxFragmentCombinedOutputResources << '\n';
1525         s << "\tmaxComputeSharedMemorySize = " << value.maxComputeSharedMemorySize << '\n';
1526         s << "\tmaxComputeWorkGroupCount = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.maxComputeWorkGroupCount), DE_ARRAY_END(value.maxComputeWorkGroupCount)) << '\n';
1527         s << "\tmaxComputeWorkGroupInvocations = " << value.maxComputeWorkGroupInvocations << '\n';
1528         s << "\tmaxComputeWorkGroupSize = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.maxComputeWorkGroupSize), DE_ARRAY_END(value.maxComputeWorkGroupSize)) << '\n';
1529         s << "\tsubPixelPrecisionBits = " << value.subPixelPrecisionBits << '\n';
1530         s << "\tsubTexelPrecisionBits = " << value.subTexelPrecisionBits << '\n';
1531         s << "\tmipmapPrecisionBits = " << value.mipmapPrecisionBits << '\n';
1532         s << "\tmaxDrawIndexedIndexValue = " << value.maxDrawIndexedIndexValue << '\n';
1533         s << "\tmaxDrawIndirectCount = " << value.maxDrawIndirectCount << '\n';
1534         s << "\tmaxSamplerLodBias = " << value.maxSamplerLodBias << '\n';
1535         s << "\tmaxSamplerAnisotropy = " << value.maxSamplerAnisotropy << '\n';
1536         s << "\tmaxViewports = " << value.maxViewports << '\n';
1537         s << "\tmaxViewportDimensions = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.maxViewportDimensions), DE_ARRAY_END(value.maxViewportDimensions)) << '\n';
1538         s << "\tviewportBoundsRange = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.viewportBoundsRange), DE_ARRAY_END(value.viewportBoundsRange)) << '\n';
1539         s << "\tviewportSubPixelBits = " << value.viewportSubPixelBits << '\n';
1540         s << "\tminMemoryMapAlignment = " << value.minMemoryMapAlignment << '\n';
1541         s << "\tminTexelBufferOffsetAlignment = " << value.minTexelBufferOffsetAlignment << '\n';
1542         s << "\tminUniformBufferOffsetAlignment = " << value.minUniformBufferOffsetAlignment << '\n';
1543         s << "\tminStorageBufferOffsetAlignment = " << value.minStorageBufferOffsetAlignment << '\n';
1544         s << "\tminTexelOffset = " << value.minTexelOffset << '\n';
1545         s << "\tmaxTexelOffset = " << value.maxTexelOffset << '\n';
1546         s << "\tminTexelGatherOffset = " << value.minTexelGatherOffset << '\n';
1547         s << "\tmaxTexelGatherOffset = " << value.maxTexelGatherOffset << '\n';
1548         s << "\tminInterpolationOffset = " << value.minInterpolationOffset << '\n';
1549         s << "\tmaxInterpolationOffset = " << value.maxInterpolationOffset << '\n';
1550         s << "\tsubPixelInterpolationOffsetBits = " << value.subPixelInterpolationOffsetBits << '\n';
1551         s << "\tmaxFramebufferWidth = " << value.maxFramebufferWidth << '\n';
1552         s << "\tmaxFramebufferHeight = " << value.maxFramebufferHeight << '\n';
1553         s << "\tmaxFramebufferLayers = " << value.maxFramebufferLayers << '\n';
1554         s << "\tframebufferColorSampleCounts = " << getSampleCountFlagsStr(value.framebufferColorSampleCounts) << '\n';
1555         s << "\tframebufferDepthSampleCounts = " << getSampleCountFlagsStr(value.framebufferDepthSampleCounts) << '\n';
1556         s << "\tframebufferStencilSampleCounts = " << getSampleCountFlagsStr(value.framebufferStencilSampleCounts) << '\n';
1557         s << "\tframebufferNoAttachmentsSampleCounts = " << getSampleCountFlagsStr(value.framebufferNoAttachmentsSampleCounts) << '\n';
1558         s << "\tmaxColorAttachments = " << value.maxColorAttachments << '\n';
1559         s << "\tsampledImageColorSampleCounts = " << getSampleCountFlagsStr(value.sampledImageColorSampleCounts) << '\n';
1560         s << "\tsampledImageIntegerSampleCounts = " << getSampleCountFlagsStr(value.sampledImageIntegerSampleCounts) << '\n';
1561         s << "\tsampledImageDepthSampleCounts = " << getSampleCountFlagsStr(value.sampledImageDepthSampleCounts) << '\n';
1562         s << "\tsampledImageStencilSampleCounts = " << getSampleCountFlagsStr(value.sampledImageStencilSampleCounts) << '\n';
1563         s << "\tstorageImageSampleCounts = " << getSampleCountFlagsStr(value.storageImageSampleCounts) << '\n';
1564         s << "\tmaxSampleMaskWords = " << value.maxSampleMaskWords << '\n';
1565         s << "\ttimestampPeriod = " << value.timestampPeriod << '\n';
1566         s << "\tmaxClipDistances = " << value.maxClipDistances << '\n';
1567         s << "\tmaxCullDistances = " << value.maxCullDistances << '\n';
1568         s << "\tmaxCombinedClipAndCullDistances = " << value.maxCombinedClipAndCullDistances << '\n';
1569         s << "\tdiscreteQueuePriorities = " << value.discreteQueuePriorities << '\n';
1570         s << "\tpointSizeRange = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.pointSizeRange), DE_ARRAY_END(value.pointSizeRange)) << '\n';
1571         s << "\tlineWidthRange = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.lineWidthRange), DE_ARRAY_END(value.lineWidthRange)) << '\n';
1572         s << "\tpointSizeGranularity = " << value.pointSizeGranularity << '\n';
1573         s << "\tlineWidthGranularity = " << value.lineWidthGranularity << '\n';
1574         s << "\tstrictLines = " << value.strictLines << '\n';
1575         s << "\tstandardSampleLocations = " << value.standardSampleLocations << '\n';
1576         s << "\toptimalBufferCopyOffsetAlignment = " << value.optimalBufferCopyOffsetAlignment << '\n';
1577         s << "\toptimalBufferCopyRowPitchAlignment = " << value.optimalBufferCopyRowPitchAlignment << '\n';
1578         s << "\tnonCoherentAtomSize = " << value.nonCoherentAtomSize << '\n';
1579         s << '}';
1580         return s;
1581 }
1582
1583 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceSparseProperties& value)
1584 {
1585         s << "VkPhysicalDeviceSparseProperties = {\n";
1586         s << "\tresidencyStandard2DBlockShape = " << value.residencyStandard2DBlockShape << '\n';
1587         s << "\tresidencyStandard2DMultisampleBlockShape = " << value.residencyStandard2DMultisampleBlockShape << '\n';
1588         s << "\tresidencyStandard3DBlockShape = " << value.residencyStandard3DBlockShape << '\n';
1589         s << "\tresidencyAlignedMipSize = " << value.residencyAlignedMipSize << '\n';
1590         s << "\tresidencyNonResidentStrict = " << value.residencyNonResidentStrict << '\n';
1591         s << '}';
1592         return s;
1593 }
1594
1595 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceProperties& value)
1596 {
1597         s << "VkPhysicalDeviceProperties = {\n";
1598         s << "\tapiVersion = " << value.apiVersion << '\n';
1599         s << "\tdriverVersion = " << value.driverVersion << '\n';
1600         s << "\tvendorID = " << value.vendorID << '\n';
1601         s << "\tdeviceID = " << value.deviceID << '\n';
1602         s << "\tdeviceType = " << value.deviceType << '\n';
1603         s << "\tdeviceName = " << (const char*)value.deviceName << '\n';
1604         s << "\tpipelineCacheUUID = " << '\n' << tcu::formatArray(tcu::Format::HexIterator<deUint8>(DE_ARRAY_BEGIN(value.pipelineCacheUUID)), tcu::Format::HexIterator<deUint8>(DE_ARRAY_END(value.pipelineCacheUUID))) << '\n';
1605         s << "\tlimits = " << value.limits << '\n';
1606         s << "\tsparseProperties = " << value.sparseProperties << '\n';
1607         s << '}';
1608         return s;
1609 }
1610
1611 std::ostream& operator<< (std::ostream& s, const VkQueueFamilyProperties& value)
1612 {
1613         s << "VkQueueFamilyProperties = {\n";
1614         s << "\tqueueFlags = " << getQueueFlagsStr(value.queueFlags) << '\n';
1615         s << "\tqueueCount = " << value.queueCount << '\n';
1616         s << "\ttimestampValidBits = " << value.timestampValidBits << '\n';
1617         s << "\tminImageTransferGranularity = " << value.minImageTransferGranularity << '\n';
1618         s << '}';
1619         return s;
1620 }
1621
1622 std::ostream& operator<< (std::ostream& s, const VkMemoryType& value)
1623 {
1624         s << "VkMemoryType = {\n";
1625         s << "\tpropertyFlags = " << getMemoryPropertyFlagsStr(value.propertyFlags) << '\n';
1626         s << "\theapIndex = " << value.heapIndex << '\n';
1627         s << '}';
1628         return s;
1629 }
1630
1631 std::ostream& operator<< (std::ostream& s, const VkMemoryHeap& value)
1632 {
1633         s << "VkMemoryHeap = {\n";
1634         s << "\tsize = " << value.size << '\n';
1635         s << "\tflags = " << getMemoryHeapFlagsStr(value.flags) << '\n';
1636         s << '}';
1637         return s;
1638 }
1639
1640 std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceMemoryProperties& value)
1641 {
1642         s << "VkPhysicalDeviceMemoryProperties = {\n";
1643         s << "\tmemoryTypeCount = " << value.memoryTypeCount << '\n';
1644         s << "\tmemoryTypes = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.memoryTypes), DE_ARRAY_END(value.memoryTypes)) << '\n';
1645         s << "\tmemoryHeapCount = " << value.memoryHeapCount << '\n';
1646         s << "\tmemoryHeaps = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.memoryHeaps), DE_ARRAY_END(value.memoryHeaps)) << '\n';
1647         s << '}';
1648         return s;
1649 }
1650
1651 std::ostream& operator<< (std::ostream& s, const VkDeviceQueueCreateInfo& value)
1652 {
1653         s << "VkDeviceQueueCreateInfo = {\n";
1654         s << "\tsType = " << value.sType << '\n';
1655         s << "\tpNext = " << value.pNext << '\n';
1656         s << "\tflags = " << getDeviceQueueCreateFlagsStr(value.flags) << '\n';
1657         s << "\tqueueFamilyIndex = " << value.queueFamilyIndex << '\n';
1658         s << "\tqueueCount = " << value.queueCount << '\n';
1659         s << "\tpQueuePriorities = " << value.pQueuePriorities << '\n';
1660         s << '}';
1661         return s;
1662 }
1663
1664 std::ostream& operator<< (std::ostream& s, const VkDeviceCreateInfo& value)
1665 {
1666         s << "VkDeviceCreateInfo = {\n";
1667         s << "\tsType = " << value.sType << '\n';
1668         s << "\tpNext = " << value.pNext << '\n';
1669         s << "\tflags = " << getDeviceCreateFlagsStr(value.flags) << '\n';
1670         s << "\tqueueCreateInfoCount = " << value.queueCreateInfoCount << '\n';
1671         s << "\tpQueueCreateInfos = " << value.pQueueCreateInfos << '\n';
1672         s << "\tenabledLayerNameCount = " << value.enabledLayerNameCount << '\n';
1673         s << "\tppEnabledLayerNames = " << value.ppEnabledLayerNames << '\n';
1674         s << "\tenabledExtensionNameCount = " << value.enabledExtensionNameCount << '\n';
1675         s << "\tppEnabledExtensionNames = " << value.ppEnabledExtensionNames << '\n';
1676         s << "\tpEnabledFeatures = " << value.pEnabledFeatures << '\n';
1677         s << '}';
1678         return s;
1679 }
1680
1681 std::ostream& operator<< (std::ostream& s, const VkExtensionProperties& value)
1682 {
1683         s << "VkExtensionProperties = {\n";
1684         s << "\textensionName = " << (const char*)value.extensionName << '\n';
1685         s << "\tspecVersion = " << value.specVersion << '\n';
1686         s << '}';
1687         return s;
1688 }
1689
1690 std::ostream& operator<< (std::ostream& s, const VkLayerProperties& value)
1691 {
1692         s << "VkLayerProperties = {\n";
1693         s << "\tlayerName = " << (const char*)value.layerName << '\n';
1694         s << "\tspecVersion = " << value.specVersion << '\n';
1695         s << "\timplementationVersion = " << value.implementationVersion << '\n';
1696         s << "\tdescription = " << (const char*)value.description << '\n';
1697         s << '}';
1698         return s;
1699 }
1700
1701 std::ostream& operator<< (std::ostream& s, const VkSubmitInfo& value)
1702 {
1703         s << "VkSubmitInfo = {\n";
1704         s << "\tsType = " << value.sType << '\n';
1705         s << "\tpNext = " << value.pNext << '\n';
1706         s << "\twaitSemaphoreCount = " << value.waitSemaphoreCount << '\n';
1707         s << "\tpWaitSemaphores = " << value.pWaitSemaphores << '\n';
1708         s << "\tcommandBufferCount = " << value.commandBufferCount << '\n';
1709         s << "\tpCommandBuffers = " << value.pCommandBuffers << '\n';
1710         s << "\tsignalSemaphoreCount = " << value.signalSemaphoreCount << '\n';
1711         s << "\tpSignalSemaphores = " << value.pSignalSemaphores << '\n';
1712         s << '}';
1713         return s;
1714 }
1715
1716 std::ostream& operator<< (std::ostream& s, const VkMemoryAllocateInfo& value)
1717 {
1718         s << "VkMemoryAllocateInfo = {\n";
1719         s << "\tsType = " << value.sType << '\n';
1720         s << "\tpNext = " << value.pNext << '\n';
1721         s << "\tallocationSize = " << value.allocationSize << '\n';
1722         s << "\tmemoryTypeIndex = " << value.memoryTypeIndex << '\n';
1723         s << '}';
1724         return s;
1725 }
1726
1727 std::ostream& operator<< (std::ostream& s, const VkMappedMemoryRange& value)
1728 {
1729         s << "VkMappedMemoryRange = {\n";
1730         s << "\tsType = " << value.sType << '\n';
1731         s << "\tpNext = " << value.pNext << '\n';
1732         s << "\tmemory = " << value.memory << '\n';
1733         s << "\toffset = " << value.offset << '\n';
1734         s << "\tsize = " << value.size << '\n';
1735         s << '}';
1736         return s;
1737 }
1738
1739 std::ostream& operator<< (std::ostream& s, const VkMemoryRequirements& value)
1740 {
1741         s << "VkMemoryRequirements = {\n";
1742         s << "\tsize = " << value.size << '\n';
1743         s << "\talignment = " << value.alignment << '\n';
1744         s << "\tmemoryTypeBits = " << value.memoryTypeBits << '\n';
1745         s << '}';
1746         return s;
1747 }
1748
1749 std::ostream& operator<< (std::ostream& s, const VkSparseImageFormatProperties& value)
1750 {
1751         s << "VkSparseImageFormatProperties = {\n";
1752         s << "\taspectMask = " << getImageAspectFlagsStr(value.aspectMask) << '\n';
1753         s << "\timageGranularity = " << value.imageGranularity << '\n';
1754         s << "\tflags = " << getSparseImageFormatFlagsStr(value.flags) << '\n';
1755         s << '}';
1756         return s;
1757 }
1758
1759 std::ostream& operator<< (std::ostream& s, const VkSparseImageMemoryRequirements& value)
1760 {
1761         s << "VkSparseImageMemoryRequirements = {\n";
1762         s << "\tformatProperties = " << value.formatProperties << '\n';
1763         s << "\timageMipTailStartLod = " << value.imageMipTailStartLod << '\n';
1764         s << "\timageMipTailSize = " << value.imageMipTailSize << '\n';
1765         s << "\timageMipTailOffset = " << value.imageMipTailOffset << '\n';
1766         s << "\timageMipTailStride = " << value.imageMipTailStride << '\n';
1767         s << '}';
1768         return s;
1769 }
1770
1771 std::ostream& operator<< (std::ostream& s, const VkSparseMemoryBind& value)
1772 {
1773         s << "VkSparseMemoryBind = {\n";
1774         s << "\tresourceOffset = " << value.resourceOffset << '\n';
1775         s << "\tsize = " << value.size << '\n';
1776         s << "\tmemory = " << value.memory << '\n';
1777         s << "\tmemoryOffset = " << value.memoryOffset << '\n';
1778         s << "\tflags = " << getSparseMemoryBindFlagsStr(value.flags) << '\n';
1779         s << '}';
1780         return s;
1781 }
1782
1783 std::ostream& operator<< (std::ostream& s, const VkSparseBufferMemoryBindInfo& value)
1784 {
1785         s << "VkSparseBufferMemoryBindInfo = {\n";
1786         s << "\tbuffer = " << value.buffer << '\n';
1787         s << "\tbindCount = " << value.bindCount << '\n';
1788         s << "\tpBinds = " << value.pBinds << '\n';
1789         s << '}';
1790         return s;
1791 }
1792
1793 std::ostream& operator<< (std::ostream& s, const VkSparseImageOpaqueMemoryBindInfo& value)
1794 {
1795         s << "VkSparseImageOpaqueMemoryBindInfo = {\n";
1796         s << "\timage = " << value.image << '\n';
1797         s << "\tbindCount = " << value.bindCount << '\n';
1798         s << "\tpBinds = " << value.pBinds << '\n';
1799         s << '}';
1800         return s;
1801 }
1802
1803 std::ostream& operator<< (std::ostream& s, const VkImageSubresource& value)
1804 {
1805         s << "VkImageSubresource = {\n";
1806         s << "\taspectMask = " << getImageAspectFlagsStr(value.aspectMask) << '\n';
1807         s << "\tmipLevel = " << value.mipLevel << '\n';
1808         s << "\tarrayLayer = " << value.arrayLayer << '\n';
1809         s << '}';
1810         return s;
1811 }
1812
1813 std::ostream& operator<< (std::ostream& s, const VkOffset3D& value)
1814 {
1815         s << "VkOffset3D = {\n";
1816         s << "\tx = " << value.x << '\n';
1817         s << "\ty = " << value.y << '\n';
1818         s << "\tz = " << value.z << '\n';
1819         s << '}';
1820         return s;
1821 }
1822
1823 std::ostream& operator<< (std::ostream& s, const VkSparseImageMemoryBind& value)
1824 {
1825         s << "VkSparseImageMemoryBind = {\n";
1826         s << "\tsubresource = " << value.subresource << '\n';
1827         s << "\toffset = " << value.offset << '\n';
1828         s << "\textent = " << value.extent << '\n';
1829         s << "\tmemory = " << value.memory << '\n';
1830         s << "\tmemoryOffset = " << value.memoryOffset << '\n';
1831         s << "\tflags = " << getSparseMemoryBindFlagsStr(value.flags) << '\n';
1832         s << '}';
1833         return s;
1834 }
1835
1836 std::ostream& operator<< (std::ostream& s, const VkSparseImageMemoryBindInfo& value)
1837 {
1838         s << "VkSparseImageMemoryBindInfo = {\n";
1839         s << "\timage = " << value.image << '\n';
1840         s << "\tbindCount = " << value.bindCount << '\n';
1841         s << "\tpBinds = " << value.pBinds << '\n';
1842         s << '}';
1843         return s;
1844 }
1845
1846 std::ostream& operator<< (std::ostream& s, const VkBindSparseInfo& value)
1847 {
1848         s << "VkBindSparseInfo = {\n";
1849         s << "\tsType = " << value.sType << '\n';
1850         s << "\tpNext = " << value.pNext << '\n';
1851         s << "\twaitSemaphoreCount = " << value.waitSemaphoreCount << '\n';
1852         s << "\tpWaitSemaphores = " << value.pWaitSemaphores << '\n';
1853         s << "\tbufferBindCount = " << value.bufferBindCount << '\n';
1854         s << "\tpBufferBinds = " << value.pBufferBinds << '\n';
1855         s << "\timageOpaqueBindCount = " << value.imageOpaqueBindCount << '\n';
1856         s << "\tpImageOpaqueBinds = " << value.pImageOpaqueBinds << '\n';
1857         s << "\timageBindCount = " << value.imageBindCount << '\n';
1858         s << "\tpImageBinds = " << value.pImageBinds << '\n';
1859         s << "\tsignalSemaphoreCount = " << value.signalSemaphoreCount << '\n';
1860         s << "\tpSignalSemaphores = " << value.pSignalSemaphores << '\n';
1861         s << '}';
1862         return s;
1863 }
1864
1865 std::ostream& operator<< (std::ostream& s, const VkFenceCreateInfo& value)
1866 {
1867         s << "VkFenceCreateInfo = {\n";
1868         s << "\tsType = " << value.sType << '\n';
1869         s << "\tpNext = " << value.pNext << '\n';
1870         s << "\tflags = " << getFenceCreateFlagsStr(value.flags) << '\n';
1871         s << '}';
1872         return s;
1873 }
1874
1875 std::ostream& operator<< (std::ostream& s, const VkSemaphoreCreateInfo& value)
1876 {
1877         s << "VkSemaphoreCreateInfo = {\n";
1878         s << "\tsType = " << value.sType << '\n';
1879         s << "\tpNext = " << value.pNext << '\n';
1880         s << "\tflags = " << getSemaphoreCreateFlagsStr(value.flags) << '\n';
1881         s << '}';
1882         return s;
1883 }
1884
1885 std::ostream& operator<< (std::ostream& s, const VkEventCreateInfo& value)
1886 {
1887         s << "VkEventCreateInfo = {\n";
1888         s << "\tsType = " << value.sType << '\n';
1889         s << "\tpNext = " << value.pNext << '\n';
1890         s << "\tflags = " << getEventCreateFlagsStr(value.flags) << '\n';
1891         s << '}';
1892         return s;
1893 }
1894
1895 std::ostream& operator<< (std::ostream& s, const VkQueryPoolCreateInfo& value)
1896 {
1897         s << "VkQueryPoolCreateInfo = {\n";
1898         s << "\tsType = " << value.sType << '\n';
1899         s << "\tpNext = " << value.pNext << '\n';
1900         s << "\tflags = " << getQueryPoolCreateFlagsStr(value.flags) << '\n';
1901         s << "\tqueryType = " << value.queryType << '\n';
1902         s << "\tentryCount = " << value.entryCount << '\n';
1903         s << "\tpipelineStatistics = " << getQueryPipelineStatisticFlagsStr(value.pipelineStatistics) << '\n';
1904         s << '}';
1905         return s;
1906 }
1907
1908 std::ostream& operator<< (std::ostream& s, const VkBufferCreateInfo& value)
1909 {
1910         s << "VkBufferCreateInfo = {\n";
1911         s << "\tsType = " << value.sType << '\n';
1912         s << "\tpNext = " << value.pNext << '\n';
1913         s << "\tflags = " << getBufferCreateFlagsStr(value.flags) << '\n';
1914         s << "\tsize = " << value.size << '\n';
1915         s << "\tusage = " << getBufferUsageFlagsStr(value.usage) << '\n';
1916         s << "\tsharingMode = " << value.sharingMode << '\n';
1917         s << "\tqueueFamilyIndexCount = " << value.queueFamilyIndexCount << '\n';
1918         s << "\tpQueueFamilyIndices = " << value.pQueueFamilyIndices << '\n';
1919         s << '}';
1920         return s;
1921 }
1922
1923 std::ostream& operator<< (std::ostream& s, const VkBufferViewCreateInfo& value)
1924 {
1925         s << "VkBufferViewCreateInfo = {\n";
1926         s << "\tsType = " << value.sType << '\n';
1927         s << "\tpNext = " << value.pNext << '\n';
1928         s << "\tflags = " << getBufferViewCreateFlagsStr(value.flags) << '\n';
1929         s << "\tbuffer = " << value.buffer << '\n';
1930         s << "\tformat = " << value.format << '\n';
1931         s << "\toffset = " << value.offset << '\n';
1932         s << "\trange = " << value.range << '\n';
1933         s << '}';
1934         return s;
1935 }
1936
1937 std::ostream& operator<< (std::ostream& s, const VkImageCreateInfo& value)
1938 {
1939         s << "VkImageCreateInfo = {\n";
1940         s << "\tsType = " << value.sType << '\n';
1941         s << "\tpNext = " << value.pNext << '\n';
1942         s << "\tflags = " << getImageCreateFlagsStr(value.flags) << '\n';
1943         s << "\timageType = " << value.imageType << '\n';
1944         s << "\tformat = " << value.format << '\n';
1945         s << "\textent = " << value.extent << '\n';
1946         s << "\tmipLevels = " << value.mipLevels << '\n';
1947         s << "\tarrayLayers = " << value.arrayLayers << '\n';
1948         s << "\tsamples = " << value.samples << '\n';
1949         s << "\ttiling = " << value.tiling << '\n';
1950         s << "\tusage = " << getImageUsageFlagsStr(value.usage) << '\n';
1951         s << "\tsharingMode = " << value.sharingMode << '\n';
1952         s << "\tqueueFamilyIndexCount = " << value.queueFamilyIndexCount << '\n';
1953         s << "\tpQueueFamilyIndices = " << value.pQueueFamilyIndices << '\n';
1954         s << "\tinitialLayout = " << value.initialLayout << '\n';
1955         s << '}';
1956         return s;
1957 }
1958
1959 std::ostream& operator<< (std::ostream& s, const VkSubresourceLayout& value)
1960 {
1961         s << "VkSubresourceLayout = {\n";
1962         s << "\toffset = " << value.offset << '\n';
1963         s << "\tsize = " << value.size << '\n';
1964         s << "\trowPitch = " << value.rowPitch << '\n';
1965         s << "\tdepthPitch = " << value.depthPitch << '\n';
1966         s << '}';
1967         return s;
1968 }
1969
1970 std::ostream& operator<< (std::ostream& s, const VkComponentMapping& value)
1971 {
1972         s << "VkComponentMapping = {\n";
1973         s << "\tr = " << value.r << '\n';
1974         s << "\tg = " << value.g << '\n';
1975         s << "\tb = " << value.b << '\n';
1976         s << "\ta = " << value.a << '\n';
1977         s << '}';
1978         return s;
1979 }
1980
1981 std::ostream& operator<< (std::ostream& s, const VkImageSubresourceRange& value)
1982 {
1983         s << "VkImageSubresourceRange = {\n";
1984         s << "\taspectMask = " << getImageAspectFlagsStr(value.aspectMask) << '\n';
1985         s << "\tbaseMipLevel = " << value.baseMipLevel << '\n';
1986         s << "\tlevelCount = " << value.levelCount << '\n';
1987         s << "\tbaseArrayLayer = " << value.baseArrayLayer << '\n';
1988         s << "\tlayerCount = " << value.layerCount << '\n';
1989         s << '}';
1990         return s;
1991 }
1992
1993 std::ostream& operator<< (std::ostream& s, const VkImageViewCreateInfo& value)
1994 {
1995         s << "VkImageViewCreateInfo = {\n";
1996         s << "\tsType = " << value.sType << '\n';
1997         s << "\tpNext = " << value.pNext << '\n';
1998         s << "\tflags = " << getImageViewCreateFlagsStr(value.flags) << '\n';
1999         s << "\timage = " << value.image << '\n';
2000         s << "\tviewType = " << value.viewType << '\n';
2001         s << "\tformat = " << value.format << '\n';
2002         s << "\tcomponents = " << value.components << '\n';
2003         s << "\tsubresourceRange = " << value.subresourceRange << '\n';
2004         s << '}';
2005         return s;
2006 }
2007
2008 std::ostream& operator<< (std::ostream& s, const VkShaderModuleCreateInfo& value)
2009 {
2010         s << "VkShaderModuleCreateInfo = {\n";
2011         s << "\tsType = " << value.sType << '\n';
2012         s << "\tpNext = " << value.pNext << '\n';
2013         s << "\tflags = " << getShaderModuleCreateFlagsStr(value.flags) << '\n';
2014         s << "\tcodeSize = " << value.codeSize << '\n';
2015         s << "\tpCode = " << value.pCode << '\n';
2016         s << '}';
2017         return s;
2018 }
2019
2020 std::ostream& operator<< (std::ostream& s, const VkPipelineCacheCreateInfo& value)
2021 {
2022         s << "VkPipelineCacheCreateInfo = {\n";
2023         s << "\tsType = " << value.sType << '\n';
2024         s << "\tpNext = " << value.pNext << '\n';
2025         s << "\tflags = " << getPipelineCacheCreateFlagsStr(value.flags) << '\n';
2026         s << "\tinitialDataSize = " << value.initialDataSize << '\n';
2027         s << "\tpInitialData = " << value.pInitialData << '\n';
2028         s << '}';
2029         return s;
2030 }
2031
2032 std::ostream& operator<< (std::ostream& s, const VkSpecializationMapEntry& value)
2033 {
2034         s << "VkSpecializationMapEntry = {\n";
2035         s << "\tconstantID = " << value.constantID << '\n';
2036         s << "\toffset = " << value.offset << '\n';
2037         s << "\tsize = " << value.size << '\n';
2038         s << '}';
2039         return s;
2040 }
2041
2042 std::ostream& operator<< (std::ostream& s, const VkSpecializationInfo& value)
2043 {
2044         s << "VkSpecializationInfo = {\n";
2045         s << "\tmapEntryCount = " << value.mapEntryCount << '\n';
2046         s << "\tpMapEntries = " << value.pMapEntries << '\n';
2047         s << "\tdataSize = " << value.dataSize << '\n';
2048         s << "\tpData = " << value.pData << '\n';
2049         s << '}';
2050         return s;
2051 }
2052
2053 std::ostream& operator<< (std::ostream& s, const VkPipelineShaderStageCreateInfo& value)
2054 {
2055         s << "VkPipelineShaderStageCreateInfo = {\n";
2056         s << "\tsType = " << value.sType << '\n';
2057         s << "\tpNext = " << value.pNext << '\n';
2058         s << "\tflags = " << getPipelineShaderStageCreateFlagsStr(value.flags) << '\n';
2059         s << "\tstage = " << value.stage << '\n';
2060         s << "\tmodule = " << value.module << '\n';
2061         s << "\tpName = " << getCharPtrStr(value.pName) << '\n';
2062         s << "\tpSpecializationInfo = " << value.pSpecializationInfo << '\n';
2063         s << '}';
2064         return s;
2065 }
2066
2067 std::ostream& operator<< (std::ostream& s, const VkVertexInputBindingDescription& value)
2068 {
2069         s << "VkVertexInputBindingDescription = {\n";
2070         s << "\tbinding = " << value.binding << '\n';
2071         s << "\tstride = " << value.stride << '\n';
2072         s << "\tinputRate = " << value.inputRate << '\n';
2073         s << '}';
2074         return s;
2075 }
2076
2077 std::ostream& operator<< (std::ostream& s, const VkVertexInputAttributeDescription& value)
2078 {
2079         s << "VkVertexInputAttributeDescription = {\n";
2080         s << "\tlocation = " << value.location << '\n';
2081         s << "\tbinding = " << value.binding << '\n';
2082         s << "\tformat = " << value.format << '\n';
2083         s << "\toffset = " << value.offset << '\n';
2084         s << '}';
2085         return s;
2086 }
2087
2088 std::ostream& operator<< (std::ostream& s, const VkPipelineVertexInputStateCreateInfo& value)
2089 {
2090         s << "VkPipelineVertexInputStateCreateInfo = {\n";
2091         s << "\tsType = " << value.sType << '\n';
2092         s << "\tpNext = " << value.pNext << '\n';
2093         s << "\tflags = " << getPipelineVertexInputStateCreateFlagsStr(value.flags) << '\n';
2094         s << "\tvertexBindingDescriptionCount = " << value.vertexBindingDescriptionCount << '\n';
2095         s << "\tpVertexBindingDescriptions = " << value.pVertexBindingDescriptions << '\n';
2096         s << "\tvertexAttributeDescriptionCount = " << value.vertexAttributeDescriptionCount << '\n';
2097         s << "\tpVertexAttributeDescriptions = " << value.pVertexAttributeDescriptions << '\n';
2098         s << '}';
2099         return s;
2100 }
2101
2102 std::ostream& operator<< (std::ostream& s, const VkPipelineInputAssemblyStateCreateInfo& value)
2103 {
2104         s << "VkPipelineInputAssemblyStateCreateInfo = {\n";
2105         s << "\tsType = " << value.sType << '\n';
2106         s << "\tpNext = " << value.pNext << '\n';
2107         s << "\tflags = " << getPipelineInputAssemblyStateCreateFlagsStr(value.flags) << '\n';
2108         s << "\ttopology = " << value.topology << '\n';
2109         s << "\tprimitiveRestartEnable = " << value.primitiveRestartEnable << '\n';
2110         s << '}';
2111         return s;
2112 }
2113
2114 std::ostream& operator<< (std::ostream& s, const VkPipelineTessellationStateCreateInfo& value)
2115 {
2116         s << "VkPipelineTessellationStateCreateInfo = {\n";
2117         s << "\tsType = " << value.sType << '\n';
2118         s << "\tpNext = " << value.pNext << '\n';
2119         s << "\tflags = " << getPipelineTesselationStateCreateFlagsStr(value.flags) << '\n';
2120         s << "\tpatchControlPoints = " << value.patchControlPoints << '\n';
2121         s << '}';
2122         return s;
2123 }
2124
2125 std::ostream& operator<< (std::ostream& s, const VkViewport& value)
2126 {
2127         s << "VkViewport = {\n";
2128         s << "\tx = " << value.x << '\n';
2129         s << "\ty = " << value.y << '\n';
2130         s << "\twidth = " << value.width << '\n';
2131         s << "\theight = " << value.height << '\n';
2132         s << "\tminDepth = " << value.minDepth << '\n';
2133         s << "\tmaxDepth = " << value.maxDepth << '\n';
2134         s << '}';
2135         return s;
2136 }
2137
2138 std::ostream& operator<< (std::ostream& s, const VkOffset2D& value)
2139 {
2140         s << "VkOffset2D = {\n";
2141         s << "\tx = " << value.x << '\n';
2142         s << "\ty = " << value.y << '\n';
2143         s << '}';
2144         return s;
2145 }
2146
2147 std::ostream& operator<< (std::ostream& s, const VkExtent2D& value)
2148 {
2149         s << "VkExtent2D = {\n";
2150         s << "\twidth = " << value.width << '\n';
2151         s << "\theight = " << value.height << '\n';
2152         s << '}';
2153         return s;
2154 }
2155
2156 std::ostream& operator<< (std::ostream& s, const VkRect2D& value)
2157 {
2158         s << "VkRect2D = {\n";
2159         s << "\toffset = " << value.offset << '\n';
2160         s << "\textent = " << value.extent << '\n';
2161         s << '}';
2162         return s;
2163 }
2164
2165 std::ostream& operator<< (std::ostream& s, const VkPipelineViewportStateCreateInfo& value)
2166 {
2167         s << "VkPipelineViewportStateCreateInfo = {\n";
2168         s << "\tsType = " << value.sType << '\n';
2169         s << "\tpNext = " << value.pNext << '\n';
2170         s << "\tflags = " << getPipelineViewportStateCreateFlagsStr(value.flags) << '\n';
2171         s << "\tviewportCount = " << value.viewportCount << '\n';
2172         s << "\tpViewports = " << value.pViewports << '\n';
2173         s << "\tscissorCount = " << value.scissorCount << '\n';
2174         s << "\tpScissors = " << value.pScissors << '\n';
2175         s << '}';
2176         return s;
2177 }
2178
2179 std::ostream& operator<< (std::ostream& s, const VkPipelineRasterizationStateCreateInfo& value)
2180 {
2181         s << "VkPipelineRasterizationStateCreateInfo = {\n";
2182         s << "\tsType = " << value.sType << '\n';
2183         s << "\tpNext = " << value.pNext << '\n';
2184         s << "\tflags = " << getPipelineRasterizationStateCreateFlagsStr(value.flags) << '\n';
2185         s << "\tdepthClampEnable = " << value.depthClampEnable << '\n';
2186         s << "\trasterizerDiscardEnable = " << value.rasterizerDiscardEnable << '\n';
2187         s << "\tpolygonMode = " << value.polygonMode << '\n';
2188         s << "\tcullMode = " << getCullModeFlagsStr(value.cullMode) << '\n';
2189         s << "\tfrontFace = " << value.frontFace << '\n';
2190         s << "\tdepthBiasEnable = " << value.depthBiasEnable << '\n';
2191         s << "\tdepthBiasConstantFactor = " << value.depthBiasConstantFactor << '\n';
2192         s << "\tdepthBiasClamp = " << value.depthBiasClamp << '\n';
2193         s << "\tdepthBiasSlopeFactor = " << value.depthBiasSlopeFactor << '\n';
2194         s << "\tlineWidth = " << value.lineWidth << '\n';
2195         s << '}';
2196         return s;
2197 }
2198
2199 std::ostream& operator<< (std::ostream& s, const VkPipelineMultisampleStateCreateInfo& value)
2200 {
2201         s << "VkPipelineMultisampleStateCreateInfo = {\n";
2202         s << "\tsType = " << value.sType << '\n';
2203         s << "\tpNext = " << value.pNext << '\n';
2204         s << "\tflags = " << getPipelineMultisampleStateCreateFlagsStr(value.flags) << '\n';
2205         s << "\trasterizationSamples = " << value.rasterizationSamples << '\n';
2206         s << "\tsampleShadingEnable = " << value.sampleShadingEnable << '\n';
2207         s << "\tminSampleShading = " << value.minSampleShading << '\n';
2208         s << "\tpSampleMask = " << value.pSampleMask << '\n';
2209         s << "\talphaToCoverageEnable = " << value.alphaToCoverageEnable << '\n';
2210         s << "\talphaToOneEnable = " << value.alphaToOneEnable << '\n';
2211         s << '}';
2212         return s;
2213 }
2214
2215 std::ostream& operator<< (std::ostream& s, const VkStencilOpState& value)
2216 {
2217         s << "VkStencilOpState = {\n";
2218         s << "\tfailOp = " << value.failOp << '\n';
2219         s << "\tpassOp = " << value.passOp << '\n';
2220         s << "\tdepthFailOp = " << value.depthFailOp << '\n';
2221         s << "\tcompareOp = " << value.compareOp << '\n';
2222         s << "\tcompareMask = " << value.compareMask << '\n';
2223         s << "\twriteMask = " << value.writeMask << '\n';
2224         s << "\treference = " << value.reference << '\n';
2225         s << '}';
2226         return s;
2227 }
2228
2229 std::ostream& operator<< (std::ostream& s, const VkPipelineDepthStencilStateCreateInfo& value)
2230 {
2231         s << "VkPipelineDepthStencilStateCreateInfo = {\n";
2232         s << "\tsType = " << value.sType << '\n';
2233         s << "\tpNext = " << value.pNext << '\n';
2234         s << "\tflags = " << getPipelineDepthStencilStateCreateFlagsStr(value.flags) << '\n';
2235         s << "\tdepthTestEnable = " << value.depthTestEnable << '\n';
2236         s << "\tdepthWriteEnable = " << value.depthWriteEnable << '\n';
2237         s << "\tdepthCompareOp = " << value.depthCompareOp << '\n';
2238         s << "\tdepthBoundsTestEnable = " << value.depthBoundsTestEnable << '\n';
2239         s << "\tstencilTestEnable = " << value.stencilTestEnable << '\n';
2240         s << "\tfront = " << value.front << '\n';
2241         s << "\tback = " << value.back << '\n';
2242         s << "\tminDepthBounds = " << value.minDepthBounds << '\n';
2243         s << "\tmaxDepthBounds = " << value.maxDepthBounds << '\n';
2244         s << '}';
2245         return s;
2246 }
2247
2248 std::ostream& operator<< (std::ostream& s, const VkPipelineColorBlendAttachmentState& value)
2249 {
2250         s << "VkPipelineColorBlendAttachmentState = {\n";
2251         s << "\tblendEnable = " << value.blendEnable << '\n';
2252         s << "\tsrcColorBlendFactor = " << value.srcColorBlendFactor << '\n';
2253         s << "\tdstColorBlendFactor = " << value.dstColorBlendFactor << '\n';
2254         s << "\tcolorBlendOp = " << value.colorBlendOp << '\n';
2255         s << "\tsrcAlphaBlendFactor = " << value.srcAlphaBlendFactor << '\n';
2256         s << "\tdstAlphaBlendFactor = " << value.dstAlphaBlendFactor << '\n';
2257         s << "\talphaBlendOp = " << value.alphaBlendOp << '\n';
2258         s << "\tcolorWriteMask = " << getColorComponentFlagsStr(value.colorWriteMask) << '\n';
2259         s << '}';
2260         return s;
2261 }
2262
2263 std::ostream& operator<< (std::ostream& s, const VkPipelineColorBlendStateCreateInfo& value)
2264 {
2265         s << "VkPipelineColorBlendStateCreateInfo = {\n";
2266         s << "\tsType = " << value.sType << '\n';
2267         s << "\tpNext = " << value.pNext << '\n';
2268         s << "\tflags = " << getPipelineColorBlendStateCreateFlagsStr(value.flags) << '\n';
2269         s << "\tlogicOpEnable = " << value.logicOpEnable << '\n';
2270         s << "\tlogicOp = " << value.logicOp << '\n';
2271         s << "\tattachmentCount = " << value.attachmentCount << '\n';
2272         s << "\tpAttachments = " << value.pAttachments << '\n';
2273         s << "\tblendConstants = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.blendConstants), DE_ARRAY_END(value.blendConstants)) << '\n';
2274         s << '}';
2275         return s;
2276 }
2277
2278 std::ostream& operator<< (std::ostream& s, const VkPipelineDynamicStateCreateInfo& value)
2279 {
2280         s << "VkPipelineDynamicStateCreateInfo = {\n";
2281         s << "\tsType = " << value.sType << '\n';
2282         s << "\tpNext = " << value.pNext << '\n';
2283         s << "\tflags = " << getPipelineDynamicStateCreateFlagsStr(value.flags) << '\n';
2284         s << "\tdynamicStateCount = " << value.dynamicStateCount << '\n';
2285         s << "\tpDynamicStates = " << value.pDynamicStates << '\n';
2286         s << '}';
2287         return s;
2288 }
2289
2290 std::ostream& operator<< (std::ostream& s, const VkGraphicsPipelineCreateInfo& value)
2291 {
2292         s << "VkGraphicsPipelineCreateInfo = {\n";
2293         s << "\tsType = " << value.sType << '\n';
2294         s << "\tpNext = " << value.pNext << '\n';
2295         s << "\tflags = " << getPipelineCreateFlagsStr(value.flags) << '\n';
2296         s << "\tstageCount = " << value.stageCount << '\n';
2297         s << "\tpStages = " << value.pStages << '\n';
2298         s << "\tpVertexInputState = " << value.pVertexInputState << '\n';
2299         s << "\tpInputAssemblyState = " << value.pInputAssemblyState << '\n';
2300         s << "\tpTessellationState = " << value.pTessellationState << '\n';
2301         s << "\tpViewportState = " << value.pViewportState << '\n';
2302         s << "\tpRasterizationState = " << value.pRasterizationState << '\n';
2303         s << "\tpMultisampleState = " << value.pMultisampleState << '\n';
2304         s << "\tpDepthStencilState = " << value.pDepthStencilState << '\n';
2305         s << "\tpColorBlendState = " << value.pColorBlendState << '\n';
2306         s << "\tpDynamicState = " << value.pDynamicState << '\n';
2307         s << "\tlayout = " << value.layout << '\n';
2308         s << "\trenderPass = " << value.renderPass << '\n';
2309         s << "\tsubpass = " << value.subpass << '\n';
2310         s << "\tbasePipelineHandle = " << value.basePipelineHandle << '\n';
2311         s << "\tbasePipelineIndex = " << value.basePipelineIndex << '\n';
2312         s << '}';
2313         return s;
2314 }
2315
2316 std::ostream& operator<< (std::ostream& s, const VkComputePipelineCreateInfo& value)
2317 {
2318         s << "VkComputePipelineCreateInfo = {\n";
2319         s << "\tsType = " << value.sType << '\n';
2320         s << "\tpNext = " << value.pNext << '\n';
2321         s << "\tflags = " << getPipelineCreateFlagsStr(value.flags) << '\n';
2322         s << "\tstage = " << value.stage << '\n';
2323         s << "\tlayout = " << value.layout << '\n';
2324         s << "\tbasePipelineHandle = " << value.basePipelineHandle << '\n';
2325         s << "\tbasePipelineIndex = " << value.basePipelineIndex << '\n';
2326         s << '}';
2327         return s;
2328 }
2329
2330 std::ostream& operator<< (std::ostream& s, const VkPushConstantRange& value)
2331 {
2332         s << "VkPushConstantRange = {\n";
2333         s << "\tstageFlags = " << getShaderStageFlagsStr(value.stageFlags) << '\n';
2334         s << "\toffset = " << value.offset << '\n';
2335         s << "\tsize = " << value.size << '\n';
2336         s << '}';
2337         return s;
2338 }
2339
2340 std::ostream& operator<< (std::ostream& s, const VkPipelineLayoutCreateInfo& value)
2341 {
2342         s << "VkPipelineLayoutCreateInfo = {\n";
2343         s << "\tsType = " << value.sType << '\n';
2344         s << "\tpNext = " << value.pNext << '\n';
2345         s << "\tflags = " << getPipelineLayoutCreateFlagsStr(value.flags) << '\n';
2346         s << "\tsetLayoutCount = " << value.setLayoutCount << '\n';
2347         s << "\tpSetLayouts = " << value.pSetLayouts << '\n';
2348         s << "\tpushConstantRangeCount = " << value.pushConstantRangeCount << '\n';
2349         s << "\tpPushConstantRanges = " << value.pPushConstantRanges << '\n';
2350         s << '}';
2351         return s;
2352 }
2353
2354 std::ostream& operator<< (std::ostream& s, const VkSamplerCreateInfo& value)
2355 {
2356         s << "VkSamplerCreateInfo = {\n";
2357         s << "\tsType = " << value.sType << '\n';
2358         s << "\tpNext = " << value.pNext << '\n';
2359         s << "\tflags = " << getSamplerCreateFlagsStr(value.flags) << '\n';
2360         s << "\tmagFilter = " << value.magFilter << '\n';
2361         s << "\tminFilter = " << value.minFilter << '\n';
2362         s << "\tmipmapMode = " << value.mipmapMode << '\n';
2363         s << "\taddressModeU = " << value.addressModeU << '\n';
2364         s << "\taddressModeV = " << value.addressModeV << '\n';
2365         s << "\taddressModeW = " << value.addressModeW << '\n';
2366         s << "\tmipLodBias = " << value.mipLodBias << '\n';
2367         s << "\tmaxAnisotropy = " << value.maxAnisotropy << '\n';
2368         s << "\tcompareEnable = " << value.compareEnable << '\n';
2369         s << "\tcompareOp = " << value.compareOp << '\n';
2370         s << "\tminLod = " << value.minLod << '\n';
2371         s << "\tmaxLod = " << value.maxLod << '\n';
2372         s << "\tborderColor = " << value.borderColor << '\n';
2373         s << "\tunnormalizedCoordinates = " << value.unnormalizedCoordinates << '\n';
2374         s << '}';
2375         return s;
2376 }
2377
2378 std::ostream& operator<< (std::ostream& s, const VkDescriptorSetLayoutBinding& value)
2379 {
2380         s << "VkDescriptorSetLayoutBinding = {\n";
2381         s << "\tbinding = " << value.binding << '\n';
2382         s << "\tdescriptorType = " << value.descriptorType << '\n';
2383         s << "\tdescriptorCount = " << value.descriptorCount << '\n';
2384         s << "\tstageFlags = " << getShaderStageFlagsStr(value.stageFlags) << '\n';
2385         s << "\tpImmutableSamplers = " << value.pImmutableSamplers << '\n';
2386         s << '}';
2387         return s;
2388 }
2389
2390 std::ostream& operator<< (std::ostream& s, const VkDescriptorSetLayoutCreateInfo& value)
2391 {
2392         s << "VkDescriptorSetLayoutCreateInfo = {\n";
2393         s << "\tsType = " << value.sType << '\n';
2394         s << "\tpNext = " << value.pNext << '\n';
2395         s << "\tflags = " << getDescriptorSetLayoutCreateFlagsStr(value.flags) << '\n';
2396         s << "\tbindingCount = " << value.bindingCount << '\n';
2397         s << "\tpBinding = " << value.pBinding << '\n';
2398         s << '}';
2399         return s;
2400 }
2401
2402 std::ostream& operator<< (std::ostream& s, const VkDescriptorPoolSize& value)
2403 {
2404         s << "VkDescriptorPoolSize = {\n";
2405         s << "\ttype = " << value.type << '\n';
2406         s << "\tdescriptorCount = " << value.descriptorCount << '\n';
2407         s << '}';
2408         return s;
2409 }
2410
2411 std::ostream& operator<< (std::ostream& s, const VkDescriptorPoolCreateInfo& value)
2412 {
2413         s << "VkDescriptorPoolCreateInfo = {\n";
2414         s << "\tsType = " << value.sType << '\n';
2415         s << "\tpNext = " << value.pNext << '\n';
2416         s << "\tflags = " << getDescriptorPoolCreateFlagsStr(value.flags) << '\n';
2417         s << "\tmaxSets = " << value.maxSets << '\n';
2418         s << "\tpoolSizeCount = " << value.poolSizeCount << '\n';
2419         s << "\tpPoolSizes = " << value.pPoolSizes << '\n';
2420         s << '}';
2421         return s;
2422 }
2423
2424 std::ostream& operator<< (std::ostream& s, const VkDescriptorSetAllocateInfo& value)
2425 {
2426         s << "VkDescriptorSetAllocateInfo = {\n";
2427         s << "\tsType = " << value.sType << '\n';
2428         s << "\tpNext = " << value.pNext << '\n';
2429         s << "\tdescriptorPool = " << value.descriptorPool << '\n';
2430         s << "\tsetLayoutCount = " << value.setLayoutCount << '\n';
2431         s << "\tpSetLayouts = " << value.pSetLayouts << '\n';
2432         s << '}';
2433         return s;
2434 }
2435
2436 std::ostream& operator<< (std::ostream& s, const VkDescriptorImageInfo& value)
2437 {
2438         s << "VkDescriptorImageInfo = {\n";
2439         s << "\tsampler = " << value.sampler << '\n';
2440         s << "\timageView = " << value.imageView << '\n';
2441         s << "\timageLayout = " << value.imageLayout << '\n';
2442         s << '}';
2443         return s;
2444 }
2445
2446 std::ostream& operator<< (std::ostream& s, const VkDescriptorBufferInfo& value)
2447 {
2448         s << "VkDescriptorBufferInfo = {\n";
2449         s << "\tbuffer = " << value.buffer << '\n';
2450         s << "\toffset = " << value.offset << '\n';
2451         s << "\trange = " << value.range << '\n';
2452         s << '}';
2453         return s;
2454 }
2455
2456 std::ostream& operator<< (std::ostream& s, const VkWriteDescriptorSet& value)
2457 {
2458         s << "VkWriteDescriptorSet = {\n";
2459         s << "\tsType = " << value.sType << '\n';
2460         s << "\tpNext = " << value.pNext << '\n';
2461         s << "\tdstSet = " << value.dstSet << '\n';
2462         s << "\tdstBinding = " << value.dstBinding << '\n';
2463         s << "\tdstArrayElement = " << value.dstArrayElement << '\n';
2464         s << "\tdescriptorCount = " << value.descriptorCount << '\n';
2465         s << "\tdescriptorType = " << value.descriptorType << '\n';
2466         s << "\tpImageInfo = " << value.pImageInfo << '\n';
2467         s << "\tpBufferInfo = " << value.pBufferInfo << '\n';
2468         s << "\tpTexelBufferView = " << value.pTexelBufferView << '\n';
2469         s << '}';
2470         return s;
2471 }
2472
2473 std::ostream& operator<< (std::ostream& s, const VkCopyDescriptorSet& value)
2474 {
2475         s << "VkCopyDescriptorSet = {\n";
2476         s << "\tsType = " << value.sType << '\n';
2477         s << "\tpNext = " << value.pNext << '\n';
2478         s << "\tsrcSet = " << value.srcSet << '\n';
2479         s << "\tsrcBinding = " << value.srcBinding << '\n';
2480         s << "\tsrcArrayElement = " << value.srcArrayElement << '\n';
2481         s << "\tdstSet = " << value.dstSet << '\n';
2482         s << "\tdstBinding = " << value.dstBinding << '\n';
2483         s << "\tdstArrayElement = " << value.dstArrayElement << '\n';
2484         s << "\tdescriptorCount = " << value.descriptorCount << '\n';
2485         s << '}';
2486         return s;
2487 }
2488
2489 std::ostream& operator<< (std::ostream& s, const VkFramebufferCreateInfo& value)
2490 {
2491         s << "VkFramebufferCreateInfo = {\n";
2492         s << "\tsType = " << value.sType << '\n';
2493         s << "\tpNext = " << value.pNext << '\n';
2494         s << "\tflags = " << getFramebufferCreateFlagsStr(value.flags) << '\n';
2495         s << "\trenderPass = " << value.renderPass << '\n';
2496         s << "\tattachmentCount = " << value.attachmentCount << '\n';
2497         s << "\tpAttachments = " << value.pAttachments << '\n';
2498         s << "\twidth = " << value.width << '\n';
2499         s << "\theight = " << value.height << '\n';
2500         s << "\tlayers = " << value.layers << '\n';
2501         s << '}';
2502         return s;
2503 }
2504
2505 std::ostream& operator<< (std::ostream& s, const VkAttachmentDescription& value)
2506 {
2507         s << "VkAttachmentDescription = {\n";
2508         s << "\tflags = " << getAttachmentDescriptionFlagsStr(value.flags) << '\n';
2509         s << "\tformat = " << value.format << '\n';
2510         s << "\tsamples = " << value.samples << '\n';
2511         s << "\tloadOp = " << value.loadOp << '\n';
2512         s << "\tstoreOp = " << value.storeOp << '\n';
2513         s << "\tstencilLoadOp = " << value.stencilLoadOp << '\n';
2514         s << "\tstencilStoreOp = " << value.stencilStoreOp << '\n';
2515         s << "\tinitialLayout = " << value.initialLayout << '\n';
2516         s << "\tfinalLayout = " << value.finalLayout << '\n';
2517         s << '}';
2518         return s;
2519 }
2520
2521 std::ostream& operator<< (std::ostream& s, const VkAttachmentReference& value)
2522 {
2523         s << "VkAttachmentReference = {\n";
2524         s << "\tattachment = " << value.attachment << '\n';
2525         s << "\tlayout = " << value.layout << '\n';
2526         s << '}';
2527         return s;
2528 }
2529
2530 std::ostream& operator<< (std::ostream& s, const VkSubpassDescription& value)
2531 {
2532         s << "VkSubpassDescription = {\n";
2533         s << "\tflags = " << getSubpassDescriptionFlagsStr(value.flags) << '\n';
2534         s << "\tpipelineBindPoint = " << value.pipelineBindPoint << '\n';
2535         s << "\tinputAttachmentCount = " << value.inputAttachmentCount << '\n';
2536         s << "\tpInputAttachments = " << value.pInputAttachments << '\n';
2537         s << "\tcolorAttachmentCount = " << value.colorAttachmentCount << '\n';
2538         s << "\tpColorAttachments = " << value.pColorAttachments << '\n';
2539         s << "\tpResolveAttachments = " << value.pResolveAttachments << '\n';
2540         s << "\tpDepthStencilAttachment = " << value.pDepthStencilAttachment << '\n';
2541         s << "\tpreserveAttachmentCount = " << value.preserveAttachmentCount << '\n';
2542         s << "\tpPreserveAttachments = " << value.pPreserveAttachments << '\n';
2543         s << '}';
2544         return s;
2545 }
2546
2547 std::ostream& operator<< (std::ostream& s, const VkSubpassDependency& value)
2548 {
2549         s << "VkSubpassDependency = {\n";
2550         s << "\tsrcSubpass = " << value.srcSubpass << '\n';
2551         s << "\tdstSubpass = " << value.dstSubpass << '\n';
2552         s << "\tsrcStageMask = " << getPipelineStageFlagsStr(value.srcStageMask) << '\n';
2553         s << "\tdstStageMask = " << getPipelineStageFlagsStr(value.dstStageMask) << '\n';
2554         s << "\tsrcAccessMask = " << getAccessFlagsStr(value.srcAccessMask) << '\n';
2555         s << "\tdstAccessMask = " << getAccessFlagsStr(value.dstAccessMask) << '\n';
2556         s << "\tdependencyFlags = " << getDependencyFlagsStr(value.dependencyFlags) << '\n';
2557         s << '}';
2558         return s;
2559 }
2560
2561 std::ostream& operator<< (std::ostream& s, const VkRenderPassCreateInfo& value)
2562 {
2563         s << "VkRenderPassCreateInfo = {\n";
2564         s << "\tsType = " << value.sType << '\n';
2565         s << "\tpNext = " << value.pNext << '\n';
2566         s << "\tflags = " << getRenderPassCreateFlagsStr(value.flags) << '\n';
2567         s << "\tattachmentCount = " << value.attachmentCount << '\n';
2568         s << "\tpAttachments = " << value.pAttachments << '\n';
2569         s << "\tsubpassCount = " << value.subpassCount << '\n';
2570         s << "\tpSubpasses = " << value.pSubpasses << '\n';
2571         s << "\tdependencyCount = " << value.dependencyCount << '\n';
2572         s << "\tpDependencies = " << value.pDependencies << '\n';
2573         s << '}';
2574         return s;
2575 }
2576
2577 std::ostream& operator<< (std::ostream& s, const VkCommandPoolCreateInfo& value)
2578 {
2579         s << "VkCommandPoolCreateInfo = {\n";
2580         s << "\tsType = " << value.sType << '\n';
2581         s << "\tpNext = " << value.pNext << '\n';
2582         s << "\tflags = " << getCommandPoolCreateFlagsStr(value.flags) << '\n';
2583         s << "\tqueueFamilyIndex = " << value.queueFamilyIndex << '\n';
2584         s << '}';
2585         return s;
2586 }
2587
2588 std::ostream& operator<< (std::ostream& s, const VkCommandBufferAllocateInfo& value)
2589 {
2590         s << "VkCommandBufferAllocateInfo = {\n";
2591         s << "\tsType = " << value.sType << '\n';
2592         s << "\tpNext = " << value.pNext << '\n';
2593         s << "\tcommandPool = " << value.commandPool << '\n';
2594         s << "\tlevel = " << value.level << '\n';
2595         s << "\tbufferCount = " << value.bufferCount << '\n';
2596         s << '}';
2597         return s;
2598 }
2599
2600 std::ostream& operator<< (std::ostream& s, const VkCommandBufferBeginInfo& value)
2601 {
2602         s << "VkCommandBufferBeginInfo = {\n";
2603         s << "\tsType = " << value.sType << '\n';
2604         s << "\tpNext = " << value.pNext << '\n';
2605         s << "\tflags = " << getCommandBufferUsageFlagsStr(value.flags) << '\n';
2606         s << "\trenderPass = " << value.renderPass << '\n';
2607         s << "\tsubpass = " << value.subpass << '\n';
2608         s << "\tframebuffer = " << value.framebuffer << '\n';
2609         s << "\tocclusionQueryEnable = " << value.occlusionQueryEnable << '\n';
2610         s << "\tqueryFlags = " << getQueryControlFlagsStr(value.queryFlags) << '\n';
2611         s << "\tpipelineStatistics = " << getQueryPipelineStatisticFlagsStr(value.pipelineStatistics) << '\n';
2612         s << '}';
2613         return s;
2614 }
2615
2616 std::ostream& operator<< (std::ostream& s, const VkBufferCopy& value)
2617 {
2618         s << "VkBufferCopy = {\n";
2619         s << "\tsrcOffset = " << value.srcOffset << '\n';
2620         s << "\tdstOffset = " << value.dstOffset << '\n';
2621         s << "\tsize = " << value.size << '\n';
2622         s << '}';
2623         return s;
2624 }
2625
2626 std::ostream& operator<< (std::ostream& s, const VkImageSubresourceLayers& value)
2627 {
2628         s << "VkImageSubresourceLayers = {\n";
2629         s << "\taspectMask = " << getImageAspectFlagsStr(value.aspectMask) << '\n';
2630         s << "\tmipLevel = " << value.mipLevel << '\n';
2631         s << "\tbaseArrayLayer = " << value.baseArrayLayer << '\n';
2632         s << "\tlayerCount = " << value.layerCount << '\n';
2633         s << '}';
2634         return s;
2635 }
2636
2637 std::ostream& operator<< (std::ostream& s, const VkImageCopy& value)
2638 {
2639         s << "VkImageCopy = {\n";
2640         s << "\tsrcSubresource = " << value.srcSubresource << '\n';
2641         s << "\tsrcOffset = " << value.srcOffset << '\n';
2642         s << "\tdstSubresource = " << value.dstSubresource << '\n';
2643         s << "\tdstOffset = " << value.dstOffset << '\n';
2644         s << "\textent = " << value.extent << '\n';
2645         s << '}';
2646         return s;
2647 }
2648
2649 std::ostream& operator<< (std::ostream& s, const VkImageBlit& value)
2650 {
2651         s << "VkImageBlit = {\n";
2652         s << "\tsrcSubresource = " << value.srcSubresource << '\n';
2653         s << "\tsrcOffset = " << value.srcOffset << '\n';
2654         s << "\tsrcExtent = " << value.srcExtent << '\n';
2655         s << "\tdstSubresource = " << value.dstSubresource << '\n';
2656         s << "\tdstOffset = " << value.dstOffset << '\n';
2657         s << "\tdstExtent = " << value.dstExtent << '\n';
2658         s << '}';
2659         return s;
2660 }
2661
2662 std::ostream& operator<< (std::ostream& s, const VkBufferImageCopy& value)
2663 {
2664         s << "VkBufferImageCopy = {\n";
2665         s << "\tbufferOffset = " << value.bufferOffset << '\n';
2666         s << "\tbufferRowLength = " << value.bufferRowLength << '\n';
2667         s << "\tbufferImageHeight = " << value.bufferImageHeight << '\n';
2668         s << "\timageSubresource = " << value.imageSubresource << '\n';
2669         s << "\timageOffset = " << value.imageOffset << '\n';
2670         s << "\timageExtent = " << value.imageExtent << '\n';
2671         s << '}';
2672         return s;
2673 }
2674
2675 std::ostream& operator<< (std::ostream& s, const VkClearColorValue& value)
2676 {
2677         s << "VkClearColorValue = {\n";
2678         s << "\tfloat32 = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.float32), DE_ARRAY_END(value.float32)) << '\n';
2679         s << "\tint32 = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.int32), DE_ARRAY_END(value.int32)) << '\n';
2680         s << "\tuint32 = " << '\n' << tcu::formatArray(DE_ARRAY_BEGIN(value.uint32), DE_ARRAY_END(value.uint32)) << '\n';
2681         s << '}';
2682         return s;
2683 }
2684
2685 std::ostream& operator<< (std::ostream& s, const VkClearDepthStencilValue& value)
2686 {
2687         s << "VkClearDepthStencilValue = {\n";
2688         s << "\tdepth = " << value.depth << '\n';
2689         s << "\tstencil = " << value.stencil << '\n';
2690         s << '}';
2691         return s;
2692 }
2693
2694 std::ostream& operator<< (std::ostream& s, const VkClearValue& value)
2695 {
2696         s << "VkClearValue = {\n";
2697         s << "\tcolor = " << value.color << '\n';
2698         s << "\tdepthStencil = " << value.depthStencil << '\n';
2699         s << '}';
2700         return s;
2701 }
2702
2703 std::ostream& operator<< (std::ostream& s, const VkClearAttachment& value)
2704 {
2705         s << "VkClearAttachment = {\n";
2706         s << "\taspectMask = " << getImageAspectFlagsStr(value.aspectMask) << '\n';
2707         s << "\tcolorAttachment = " << value.colorAttachment << '\n';
2708         s << "\tclearValue = " << value.clearValue << '\n';
2709         s << '}';
2710         return s;
2711 }
2712
2713 std::ostream& operator<< (std::ostream& s, const VkClearRect& value)
2714 {
2715         s << "VkClearRect = {\n";
2716         s << "\trect = " << value.rect << '\n';
2717         s << "\tbaseArrayLayer = " << value.baseArrayLayer << '\n';
2718         s << "\tlayerCount = " << value.layerCount << '\n';
2719         s << '}';
2720         return s;
2721 }
2722
2723 std::ostream& operator<< (std::ostream& s, const VkImageResolve& value)
2724 {
2725         s << "VkImageResolve = {\n";
2726         s << "\tsrcSubresource = " << value.srcSubresource << '\n';
2727         s << "\tsrcOffset = " << value.srcOffset << '\n';
2728         s << "\tdstSubresource = " << value.dstSubresource << '\n';
2729         s << "\tdstOffset = " << value.dstOffset << '\n';
2730         s << "\textent = " << value.extent << '\n';
2731         s << '}';
2732         return s;
2733 }
2734
2735 std::ostream& operator<< (std::ostream& s, const VkRenderPassBeginInfo& value)
2736 {
2737         s << "VkRenderPassBeginInfo = {\n";
2738         s << "\tsType = " << value.sType << '\n';
2739         s << "\tpNext = " << value.pNext << '\n';
2740         s << "\trenderPass = " << value.renderPass << '\n';
2741         s << "\tframebuffer = " << value.framebuffer << '\n';
2742         s << "\trenderArea = " << value.renderArea << '\n';
2743         s << "\tclearValueCount = " << value.clearValueCount << '\n';
2744         s << "\tpClearValues = " << value.pClearValues << '\n';
2745         s << '}';
2746         return s;
2747 }
2748
2749 std::ostream& operator<< (std::ostream& s, const VkBufferMemoryBarrier& value)
2750 {
2751         s << "VkBufferMemoryBarrier = {\n";
2752         s << "\tsType = " << value.sType << '\n';
2753         s << "\tpNext = " << value.pNext << '\n';
2754         s << "\tsrcAccessMask = " << getAccessFlagsStr(value.srcAccessMask) << '\n';
2755         s << "\tdstAccessMask = " << getAccessFlagsStr(value.dstAccessMask) << '\n';
2756         s << "\tsrcQueueFamilyIndex = " << value.srcQueueFamilyIndex << '\n';
2757         s << "\tdstQueueFamilyIndex = " << value.dstQueueFamilyIndex << '\n';
2758         s << "\tbuffer = " << value.buffer << '\n';
2759         s << "\toffset = " << value.offset << '\n';
2760         s << "\tsize = " << value.size << '\n';
2761         s << '}';
2762         return s;
2763 }
2764
2765 std::ostream& operator<< (std::ostream& s, const VkDispatchIndirectCommand& value)
2766 {
2767         s << "VkDispatchIndirectCommand = {\n";
2768         s << "\tx = " << value.x << '\n';
2769         s << "\ty = " << value.y << '\n';
2770         s << "\tz = " << value.z << '\n';
2771         s << '}';
2772         return s;
2773 }
2774
2775 std::ostream& operator<< (std::ostream& s, const VkDrawIndexedIndirectCommand& value)
2776 {
2777         s << "VkDrawIndexedIndirectCommand = {\n";
2778         s << "\tindexCount = " << value.indexCount << '\n';
2779         s << "\tinstanceCount = " << value.instanceCount << '\n';
2780         s << "\tfirstIndex = " << value.firstIndex << '\n';
2781         s << "\tvertexOffset = " << value.vertexOffset << '\n';
2782         s << "\tfirstInstance = " << value.firstInstance << '\n';
2783         s << '}';
2784         return s;
2785 }
2786
2787 std::ostream& operator<< (std::ostream& s, const VkDrawIndirectCommand& value)
2788 {
2789         s << "VkDrawIndirectCommand = {\n";
2790         s << "\tvertexCount = " << value.vertexCount << '\n';
2791         s << "\tinstanceCount = " << value.instanceCount << '\n';
2792         s << "\tfirstVertex = " << value.firstVertex << '\n';
2793         s << "\tfirstInstance = " << value.firstInstance << '\n';
2794         s << '}';
2795         return s;
2796 }
2797
2798 std::ostream& operator<< (std::ostream& s, const VkImageMemoryBarrier& value)
2799 {
2800         s << "VkImageMemoryBarrier = {\n";
2801         s << "\tsType = " << value.sType << '\n';
2802         s << "\tpNext = " << value.pNext << '\n';
2803         s << "\tsrcAccessMask = " << getAccessFlagsStr(value.srcAccessMask) << '\n';
2804         s << "\tdstAccessMask = " << getAccessFlagsStr(value.dstAccessMask) << '\n';
2805         s << "\toldLayout = " << value.oldLayout << '\n';
2806         s << "\tnewLayout = " << value.newLayout << '\n';
2807         s << "\tsrcQueueFamilyIndex = " << value.srcQueueFamilyIndex << '\n';
2808         s << "\tdstQueueFamilyIndex = " << value.dstQueueFamilyIndex << '\n';
2809         s << "\timage = " << value.image << '\n';
2810         s << "\tsubresourceRange = " << value.subresourceRange << '\n';
2811         s << '}';
2812         return s;
2813 }
2814
2815 std::ostream& operator<< (std::ostream& s, const VkMemoryBarrier& value)
2816 {
2817         s << "VkMemoryBarrier = {\n";
2818         s << "\tsType = " << value.sType << '\n';
2819         s << "\tpNext = " << value.pNext << '\n';
2820         s << "\tsrcAccessMask = " << getAccessFlagsStr(value.srcAccessMask) << '\n';
2821         s << "\tdstAccessMask = " << getAccessFlagsStr(value.dstAccessMask) << '\n';
2822         s << '}';
2823         return s;
2824 }
2825
2826 std::ostream& operator<< (std::ostream& s, const VkSurfaceCapabilitiesKHR& value)
2827 {
2828         s << "VkSurfaceCapabilitiesKHR = {\n";
2829         s << "\tminImageCount = " << value.minImageCount << '\n';
2830         s << "\tmaxImageCount = " << value.maxImageCount << '\n';
2831         s << "\tcurrentExtent = " << value.currentExtent << '\n';
2832         s << "\tminImageExtent = " << value.minImageExtent << '\n';
2833         s << "\tmaxImageExtent = " << value.maxImageExtent << '\n';
2834         s << "\tmaxImageArrayLayers = " << value.maxImageArrayLayers << '\n';
2835         s << "\tsupportedTransforms = " << getSurfaceTransformFlagsKHRStr(value.supportedTransforms) << '\n';
2836         s << "\tcurrentTransform = " << value.currentTransform << '\n';
2837         s << "\tsupportedCompositeAlpha = " << getCompositeAlphaFlagsKHRStr(value.supportedCompositeAlpha) << '\n';
2838         s << "\tsupportedUsageFlags = " << getImageUsageFlagsStr(value.supportedUsageFlags) << '\n';
2839         s << '}';
2840         return s;
2841 }
2842
2843 std::ostream& operator<< (std::ostream& s, const VkSurfaceFormatKHR& value)
2844 {
2845         s << "VkSurfaceFormatKHR = {\n";
2846         s << "\tformat = " << value.format << '\n';
2847         s << "\tcolorSpace = " << value.colorSpace << '\n';
2848         s << '}';
2849         return s;
2850 }
2851
2852 std::ostream& operator<< (std::ostream& s, const VkSwapchainCreateInfoKHR& value)
2853 {
2854         s << "VkSwapchainCreateInfoKHR = {\n";
2855         s << "\tsType = " << value.sType << '\n';
2856         s << "\tpNext = " << value.pNext << '\n';
2857         s << "\tflags = " << getSwapchainCreateFlagsKHRStr(value.flags) << '\n';
2858         s << "\tsurface = " << value.surface << '\n';
2859         s << "\tminImageCount = " << value.minImageCount << '\n';
2860         s << "\timageFormat = " << value.imageFormat << '\n';
2861         s << "\timageColorSpace = " << value.imageColorSpace << '\n';
2862         s << "\timageExtent = " << value.imageExtent << '\n';
2863         s << "\timageArrayLayers = " << value.imageArrayLayers << '\n';
2864         s << "\timageUsage = " << getImageUsageFlagsStr(value.imageUsage) << '\n';
2865         s << "\timageSharingMode = " << value.imageSharingMode << '\n';
2866         s << "\tqueueFamilyIndexCount = " << value.queueFamilyIndexCount << '\n';
2867         s << "\tpQueueFamilyIndices = " << value.pQueueFamilyIndices << '\n';
2868         s << "\tpreTransform = " << value.preTransform << '\n';
2869         s << "\tcompositeAlpha = " << value.compositeAlpha << '\n';
2870         s << "\tpresentMode = " << value.presentMode << '\n';
2871         s << "\tclipped = " << value.clipped << '\n';
2872         s << "\toldSwapchain = " << value.oldSwapchain << '\n';
2873         s << '}';
2874         return s;
2875 }
2876
2877 std::ostream& operator<< (std::ostream& s, const VkPresentInfoKHR& value)
2878 {
2879         s << "VkPresentInfoKHR = {\n";
2880         s << "\tsType = " << value.sType << '\n';
2881         s << "\tpNext = " << value.pNext << '\n';
2882         s << "\twaitSemaphoreCount = " << value.waitSemaphoreCount << '\n';
2883         s << "\tpWaitSemaphores = " << value.pWaitSemaphores << '\n';
2884         s << "\tswapchainCount = " << value.swapchainCount << '\n';
2885         s << "\tpSwapchains = " << value.pSwapchains << '\n';
2886         s << "\tpImageIndices = " << value.pImageIndices << '\n';
2887         s << "\tpResults = " << value.pResults << '\n';
2888         s << '}';
2889         return s;
2890 }
2891
2892 std::ostream& operator<< (std::ostream& s, const VkDisplayPropertiesKHR& value)
2893 {
2894         s << "VkDisplayPropertiesKHR = {\n";
2895         s << "\tdisplay = " << value.display << '\n';
2896         s << "\tdisplayName = " << getCharPtrStr(value.displayName) << '\n';
2897         s << "\tphysicalDimensions = " << value.physicalDimensions << '\n';
2898         s << "\tphysicalResolution = " << value.physicalResolution << '\n';
2899         s << "\tsupportedTransforms = " << getSurfaceTransformFlagsKHRStr(value.supportedTransforms) << '\n';
2900         s << "\tplaneReorderPossible = " << value.planeReorderPossible << '\n';
2901         s << "\tpersistentContent = " << value.persistentContent << '\n';
2902         s << '}';
2903         return s;
2904 }
2905
2906 std::ostream& operator<< (std::ostream& s, const VkDisplayModeParametersKHR& value)
2907 {
2908         s << "VkDisplayModeParametersKHR = {\n";
2909         s << "\tvisibleRegion = " << value.visibleRegion << '\n';
2910         s << "\trefreshRate = " << value.refreshRate << '\n';
2911         s << '}';
2912         return s;
2913 }
2914
2915 std::ostream& operator<< (std::ostream& s, const VkDisplayModePropertiesKHR& value)
2916 {
2917         s << "VkDisplayModePropertiesKHR = {\n";
2918         s << "\tdisplayMode = " << value.displayMode << '\n';
2919         s << "\tparameters = " << value.parameters << '\n';
2920         s << '}';
2921         return s;
2922 }
2923
2924 std::ostream& operator<< (std::ostream& s, const VkDisplayModeCreateInfoKHR& value)
2925 {
2926         s << "VkDisplayModeCreateInfoKHR = {\n";
2927         s << "\tsType = " << value.sType << '\n';
2928         s << "\tpNext = " << value.pNext << '\n';
2929         s << "\tflags = " << getDisplayModeCreateFlagsKHRStr(value.flags) << '\n';
2930         s << "\tparameters = " << value.parameters << '\n';
2931         s << '}';
2932         return s;
2933 }
2934
2935 std::ostream& operator<< (std::ostream& s, const VkDisplayPlaneCapabilitiesKHR& value)
2936 {
2937         s << "VkDisplayPlaneCapabilitiesKHR = {\n";
2938         s << "\tsupportedAlpha = " << getDisplayPlaneAlphaFlagsKHRStr(value.supportedAlpha) << '\n';
2939         s << "\tminSrcPosition = " << value.minSrcPosition << '\n';
2940         s << "\tmaxSrcPosition = " << value.maxSrcPosition << '\n';
2941         s << "\tminSrcExtent = " << value.minSrcExtent << '\n';
2942         s << "\tmaxSrcExtent = " << value.maxSrcExtent << '\n';
2943         s << "\tminDstPosition = " << value.minDstPosition << '\n';
2944         s << "\tmaxDstPosition = " << value.maxDstPosition << '\n';
2945         s << "\tminDstExtent = " << value.minDstExtent << '\n';
2946         s << "\tmaxDstExtent = " << value.maxDstExtent << '\n';
2947         s << '}';
2948         return s;
2949 }
2950
2951 std::ostream& operator<< (std::ostream& s, const VkDisplayPlanePropertiesKHR& value)
2952 {
2953         s << "VkDisplayPlanePropertiesKHR = {\n";
2954         s << "\tcurrentDisplay = " << value.currentDisplay << '\n';
2955         s << "\tcurrentStackIndex = " << value.currentStackIndex << '\n';
2956         s << '}';
2957         return s;
2958 }
2959
2960 std::ostream& operator<< (std::ostream& s, const VkDisplaySurfaceCreateInfoKHR& value)
2961 {
2962         s << "VkDisplaySurfaceCreateInfoKHR = {\n";
2963         s << "\tsType = " << value.sType << '\n';
2964         s << "\tpNext = " << value.pNext << '\n';
2965         s << "\tflags = " << getDisplaySurfaceCreateFlagsKHRStr(value.flags) << '\n';
2966         s << "\tdisplayMode = " << value.displayMode << '\n';
2967         s << "\tplaneIndex = " << value.planeIndex << '\n';
2968         s << "\tplaneStackIndex = " << value.planeStackIndex << '\n';
2969         s << "\ttransform = " << value.transform << '\n';
2970         s << "\tglobalAlpha = " << value.globalAlpha << '\n';
2971         s << "\talphaMode = " << value.alphaMode << '\n';
2972         s << "\timageExtent = " << value.imageExtent << '\n';
2973         s << '}';
2974         return s;
2975 }
2976
2977 std::ostream& operator<< (std::ostream& s, const VkDisplayPresentInfoKHR& value)
2978 {
2979         s << "VkDisplayPresentInfoKHR = {\n";
2980         s << "\tsType = " << value.sType << '\n';
2981         s << "\tpNext = " << value.pNext << '\n';
2982         s << "\tsrcRect = " << value.srcRect << '\n';
2983         s << "\tdstRect = " << value.dstRect << '\n';
2984         s << "\tpersistent = " << value.persistent << '\n';
2985         s << '}';
2986         return s;
2987 }