Update framework and test code to API revision 138
authorPyry Haulos <phaulos@google.com>
Wed, 8 Jul 2015 22:45:09 +0000 (15:45 -0700)
committerPyry Haulos <phaulos@google.com>
Thu, 9 Jul 2015 21:55:52 +0000 (14:55 -0700)
Change-Id: Ia19074241dea78b391ec6993811e2d9e52467291

46 files changed:
external/vulkancts/framework/vulkan/vkBasicTypes.inl
external/vulkancts/framework/vulkan/vkConcreteDeviceInterface.inl
external/vulkancts/framework/vulkan/vkConcreteInstanceInterface.inl [new file with mode: 0644]
external/vulkancts/framework/vulkan/vkConcretePlatformInterface.inl
external/vulkancts/framework/vulkan/vkDefs.cpp
external/vulkancts/framework/vulkan/vkDefs.hpp
external/vulkancts/framework/vulkan/vkDeviceDriverImpl.inl
external/vulkancts/framework/vulkan/vkDeviceFunctionPointers.inl
external/vulkancts/framework/vulkan/vkDeviceUtil.cpp
external/vulkancts/framework/vulkan/vkDeviceUtil.hpp
external/vulkancts/framework/vulkan/vkFunctionPointerTypes.inl
external/vulkancts/framework/vulkan/vkGetObjectTypeImpl.inl [deleted file]
external/vulkancts/framework/vulkan/vkHandleType.inl [new file with mode: 0644]
external/vulkancts/framework/vulkan/vkInitDeviceFunctionPointers.inl
external/vulkancts/framework/vulkan/vkInitInstanceFunctionPointers.inl [new file with mode: 0644]
external/vulkancts/framework/vulkan/vkInitPlatformFunctionPointers.inl
external/vulkancts/framework/vulkan/vkInstanceDriverImpl.inl [new file with mode: 0644]
external/vulkancts/framework/vulkan/vkInstanceFunctionPointers.inl [new file with mode: 0644]
external/vulkancts/framework/vulkan/vkMemUtil.cpp
external/vulkancts/framework/vulkan/vkMemUtil.hpp
external/vulkancts/framework/vulkan/vkPlatform.cpp
external/vulkancts/framework/vulkan/vkPlatform.hpp
external/vulkancts/framework/vulkan/vkPlatformDriverImpl.inl
external/vulkancts/framework/vulkan/vkPlatformFunctionPointers.inl
external/vulkancts/framework/vulkan/vkPrograms.cpp
external/vulkancts/framework/vulkan/vkPrograms.hpp
external/vulkancts/framework/vulkan/vkQueryUtil.cpp
external/vulkancts/framework/vulkan/vkQueryUtil.hpp
external/vulkancts/framework/vulkan/vkRef.cpp
external/vulkancts/framework/vulkan/vkRef.hpp
external/vulkancts/framework/vulkan/vkRefUtil.inl
external/vulkancts/framework/vulkan/vkRefUtilImpl.inl
external/vulkancts/framework/vulkan/vkStrUtil.hpp
external/vulkancts/framework/vulkan/vkStrUtil.inl
external/vulkancts/framework/vulkan/vkStrUtilImpl.inl
external/vulkancts/framework/vulkan/vkStructTypes.inl
external/vulkancts/framework/vulkan/vkVirtualDeviceInterface.inl
external/vulkancts/framework/vulkan/vkVirtualInstanceInterface.inl [new file with mode: 0644]
external/vulkancts/framework/vulkan/vkVirtualPlatformInterface.inl
external/vulkancts/gen_framework.py
external/vulkancts/modules/vulkan/api/vktApiTests.cpp
external/vulkancts/modules/vulkan/vktInfo.cpp
external/vulkancts/modules/vulkan/vktTestCase.cpp
external/vulkancts/modules/vulkan/vktTestCase.hpp
framework/platform/android/tcuAndroidPlatform.cpp
framework/platform/win32/tcuWin32Platform.cpp

index ea9f773..4436b21 100644 (file)
 /* WARNING: This is auto-generated file. Do not modify, since changes will
  * be lost! Modify the generating script instead.
  */
-#define VK_API_VERSION                         VK_MAKE_VERSION(0, 90, 0)
+#define VK_API_VERSION                         VK_MAKE_VERSION(0, 138, 0)
 #define VK_MAX_PHYSICAL_DEVICE_NAME    256
 #define VK_MAX_EXTENSION_NAME          256
+#define VK_UUID_LENGTH                         16
+#define VK_MAX_MEMORY_TYPES                    32
+#define VK_MAX_MEMORY_HEAPS                    16
+#define VK_MAX_DESCRIPTION                     256
+
+VK_DEFINE_HANDLE                       (VkInstance,                                    HANDLE_TYPE_INSTANCE);
+VK_DEFINE_HANDLE                       (VkPhysicalDevice,                              HANDLE_TYPE_PHYSICAL_DEVICE);
+VK_DEFINE_HANDLE                       (VkDevice,                                              HANDLE_TYPE_DEVICE);
+VK_DEFINE_HANDLE                       (VkQueue,                                               HANDLE_TYPE_QUEUE);
+VK_DEFINE_HANDLE                       (VkCmdBuffer,                                   HANDLE_TYPE_CMD_BUFFER);
+VK_DEFINE_NONDISP_HANDLE       (VkFence,                                               HANDLE_TYPE_FENCE);
+VK_DEFINE_NONDISP_HANDLE       (VkDeviceMemory,                                HANDLE_TYPE_DEVICE_MEMORY);
+VK_DEFINE_NONDISP_HANDLE       (VkBuffer,                                              HANDLE_TYPE_BUFFER);
+VK_DEFINE_NONDISP_HANDLE       (VkImage,                                               HANDLE_TYPE_IMAGE);
+VK_DEFINE_NONDISP_HANDLE       (VkSemaphore,                                   HANDLE_TYPE_SEMAPHORE);
+VK_DEFINE_NONDISP_HANDLE       (VkEvent,                                               HANDLE_TYPE_EVENT);
+VK_DEFINE_NONDISP_HANDLE       (VkQueryPool,                                   HANDLE_TYPE_QUERY_POOL);
+VK_DEFINE_NONDISP_HANDLE       (VkBufferView,                                  HANDLE_TYPE_BUFFER_VIEW);
+VK_DEFINE_NONDISP_HANDLE       (VkImageView,                                   HANDLE_TYPE_IMAGE_VIEW);
+VK_DEFINE_NONDISP_HANDLE       (VkAttachmentView,                              HANDLE_TYPE_ATTACHMENT_VIEW);
+VK_DEFINE_NONDISP_HANDLE       (VkShaderModule,                                HANDLE_TYPE_SHADER_MODULE);
+VK_DEFINE_NONDISP_HANDLE       (VkShader,                                              HANDLE_TYPE_SHADER);
+VK_DEFINE_NONDISP_HANDLE       (VkPipelineCache,                               HANDLE_TYPE_PIPELINE_CACHE);
+VK_DEFINE_NONDISP_HANDLE       (VkPipelineLayout,                              HANDLE_TYPE_PIPELINE_LAYOUT);
+VK_DEFINE_NONDISP_HANDLE       (VkRenderPass,                                  HANDLE_TYPE_RENDER_PASS);
+VK_DEFINE_NONDISP_HANDLE       (VkPipeline,                                    HANDLE_TYPE_PIPELINE);
+VK_DEFINE_NONDISP_HANDLE       (VkDescriptorSetLayout,                 HANDLE_TYPE_DESCRIPTOR_SET_LAYOUT);
+VK_DEFINE_NONDISP_HANDLE       (VkSampler,                                             HANDLE_TYPE_SAMPLER);
+VK_DEFINE_NONDISP_HANDLE       (VkDescriptorPool,                              HANDLE_TYPE_DESCRIPTOR_POOL);
+VK_DEFINE_NONDISP_HANDLE       (VkDescriptorSet,                               HANDLE_TYPE_DESCRIPTOR_SET);
+VK_DEFINE_NONDISP_HANDLE       (VkDynamicViewportState,                HANDLE_TYPE_DYNAMIC_VIEWPORT_STATE);
+VK_DEFINE_NONDISP_HANDLE       (VkDynamicRasterState,                  HANDLE_TYPE_DYNAMIC_RASTER_STATE);
+VK_DEFINE_NONDISP_HANDLE       (VkDynamicColorBlendState,              HANDLE_TYPE_DYNAMIC_COLOR_BLEND_STATE);
+VK_DEFINE_NONDISP_HANDLE       (VkDynamicDepthStencilState,    HANDLE_TYPE_DYNAMIC_DEPTH_STENCIL_STATE);
+VK_DEFINE_NONDISP_HANDLE       (VkFramebuffer,                                 HANDLE_TYPE_FRAMEBUFFER);
+VK_DEFINE_NONDISP_HANDLE       (VkCmdPool,                                             HANDLE_TYPE_CMD_POOL);
 
-VK_DEFINE_BASE_HANDLE                          (VkObject);
-VK_DEFINE_DISP_SUBCLASS_HANDLE         (VkInstance,                    VkObject);
-VK_DEFINE_DISP_SUBCLASS_HANDLE         (VkPhysicalDevice,              VkObject);
-VK_DEFINE_DISP_SUBCLASS_HANDLE         (VkDevice,                              VkObject);
-VK_DEFINE_DISP_SUBCLASS_HANDLE         (VkQueue,                               VkObject);
-VK_DEFINE_DISP_SUBCLASS_HANDLE         (VkCmdBuffer,                   VkObject);
-VK_DEFINE_NONDISP_SUBCLASS_HANDLE      (VkNonDispatchable,             VkObject);
-VK_DEFINE_NONDISP_SUBCLASS_HANDLE      (VkDeviceMemory,                VkNonDispatchable);
-VK_DEFINE_NONDISP_SUBCLASS_HANDLE      (VkBuffer,                              VkNonDispatchable);
-VK_DEFINE_NONDISP_SUBCLASS_HANDLE      (VkBufferView,                  VkNonDispatchable);
-VK_DEFINE_NONDISP_SUBCLASS_HANDLE      (VkImage,                               VkNonDispatchable);
-VK_DEFINE_NONDISP_SUBCLASS_HANDLE      (VkImageView,                   VkNonDispatchable);
-VK_DEFINE_NONDISP_SUBCLASS_HANDLE      (VkColorAttachmentView, VkNonDispatchable);
-VK_DEFINE_NONDISP_SUBCLASS_HANDLE      (VkDepthStencilView,    VkNonDispatchable);
-VK_DEFINE_NONDISP_SUBCLASS_HANDLE      (VkShader,                              VkNonDispatchable);
-VK_DEFINE_NONDISP_SUBCLASS_HANDLE      (VkPipeline,                    VkNonDispatchable);
-VK_DEFINE_NONDISP_SUBCLASS_HANDLE      (VkPipelineLayout,              VkNonDispatchable);
-VK_DEFINE_NONDISP_SUBCLASS_HANDLE      (VkSampler,                             VkNonDispatchable);
-VK_DEFINE_NONDISP_SUBCLASS_HANDLE      (VkDescriptorSet,               VkNonDispatchable);
-VK_DEFINE_NONDISP_SUBCLASS_HANDLE      (VkDescriptorSetLayout, VkNonDispatchable);
-VK_DEFINE_NONDISP_SUBCLASS_HANDLE      (VkDescriptorPool,              VkNonDispatchable);
-VK_DEFINE_NONDISP_SUBCLASS_HANDLE      (VkDynamicStateObject,  VkNonDispatchable);
-VK_DEFINE_NONDISP_SUBCLASS_HANDLE      (VkDynamicVpState,              VkDynamicStateObject);
-VK_DEFINE_NONDISP_SUBCLASS_HANDLE      (VkDynamicRsState,              VkDynamicStateObject);
-VK_DEFINE_NONDISP_SUBCLASS_HANDLE      (VkDynamicCbState,              VkDynamicStateObject);
-VK_DEFINE_NONDISP_SUBCLASS_HANDLE      (VkDynamicDsState,              VkDynamicStateObject);
-VK_DEFINE_NONDISP_SUBCLASS_HANDLE      (VkFence,                               VkNonDispatchable);
-VK_DEFINE_NONDISP_SUBCLASS_HANDLE      (VkSemaphore,                   VkNonDispatchable);
-VK_DEFINE_NONDISP_SUBCLASS_HANDLE      (VkEvent,                               VkNonDispatchable);
-VK_DEFINE_NONDISP_SUBCLASS_HANDLE      (VkQueryPool,                   VkNonDispatchable);
-VK_DEFINE_NONDISP_SUBCLASS_HANDLE      (VkFramebuffer,                 VkNonDispatchable);
-VK_DEFINE_NONDISP_SUBCLASS_HANDLE      (VkRenderPass,                  VkNonDispatchable);
-
-enum VkMemoryPriority
-{
-       VK_MEMORY_PRIORITY_UNUSED               = 0x00000000,
-       VK_MEMORY_PRIORITY_VERY_LOW             = 0x00000001,
-       VK_MEMORY_PRIORITY_LOW                  = 0x00000002,
-       VK_MEMORY_PRIORITY_NORMAL               = 0x00000003,
-       VK_MEMORY_PRIORITY_HIGH                 = 0x00000004,
-       VK_MEMORY_PRIORITY_VERY_HIGH    = 0x00000005,
-};
-
-enum VkImageLayout
-{
-       VK_IMAGE_LAYOUT_UNDEFINED                                                       = 0x00000000,
-       VK_IMAGE_LAYOUT_GENERAL                                                         = 0x00000001,
-       VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL                        = 0x00000002,
-       VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL        = 0x00000003,
-       VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL         = 0x00000004,
-       VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL                        = 0x00000005,
-       VK_IMAGE_LAYOUT_CLEAR_OPTIMAL                                           = 0x00000006,
-       VK_IMAGE_LAYOUT_TRANSFER_SOURCE_OPTIMAL                         = 0x00000007,
-       VK_IMAGE_LAYOUT_TRANSFER_DESTINATION_OPTIMAL            = 0x00000008,
-};
-
-enum VkPipeEvent
+enum VkResult
 {
-       VK_PIPE_EVENT_TOP_OF_PIPE                                                       = 0x00000001,
-       VK_PIPE_EVENT_VERTEX_PROCESSING_COMPLETE                        = 0x00000002,
-       VK_PIPE_EVENT_LOCAL_FRAGMENT_PROCESSING_COMPLETE        = 0x00000003,
-       VK_PIPE_EVENT_FRAGMENT_PROCESSING_COMPLETE                      = 0x00000004,
-       VK_PIPE_EVENT_GRAPHICS_PIPELINE_COMPLETE                        = 0x00000005,
-       VK_PIPE_EVENT_COMPUTE_PIPELINE_COMPLETE                         = 0x00000006,
-       VK_PIPE_EVENT_TRANSFER_COMPLETE                                         = 0x00000007,
-       VK_PIPE_EVENT_COMMANDS_COMPLETE                                         = 0x00000008,
+       VK_SUCCESS                                                              = 0,
+       VK_UNSUPPORTED                                                  = 1,
+       VK_NOT_READY                                                    = 2,
+       VK_TIMEOUT                                                              = 3,
+       VK_EVENT_SET                                                    = 4,
+       VK_EVENT_RESET                                                  = 5,
+       VK_INCOMPLETE                                                   = 6,
+       VK_ERROR_UNKNOWN                                                = -1,
+       VK_ERROR_UNAVAILABLE                                    = -2,
+       VK_ERROR_INITIALIZATION_FAILED                  = -3,
+       VK_ERROR_OUT_OF_HOST_MEMORY                             = -4,
+       VK_ERROR_OUT_OF_DEVICE_MEMORY                   = -5,
+       VK_ERROR_DEVICE_ALREADY_CREATED                 = -6,
+       VK_ERROR_DEVICE_LOST                                    = -7,
+       VK_ERROR_INVALID_POINTER                                = -8,
+       VK_ERROR_INVALID_VALUE                                  = -9,
+       VK_ERROR_INVALID_HANDLE                                 = -10,
+       VK_ERROR_INVALID_ORDINAL                                = -11,
+       VK_ERROR_INVALID_MEMORY_SIZE                    = -12,
+       VK_ERROR_INVALID_EXTENSION                              = -13,
+       VK_ERROR_INVALID_FLAGS                                  = -14,
+       VK_ERROR_INVALID_ALIGNMENT                              = -15,
+       VK_ERROR_INVALID_FORMAT                                 = -16,
+       VK_ERROR_INVALID_IMAGE                                  = -17,
+       VK_ERROR_INVALID_DESCRIPTOR_SET_DATA    = -18,
+       VK_ERROR_INVALID_QUEUE_TYPE                             = -19,
+       VK_ERROR_UNSUPPORTED_SHADER_IL_VERSION  = -20,
+       VK_ERROR_BAD_SHADER_CODE                                = -21,
+       VK_ERROR_BAD_PIPELINE_DATA                              = -22,
+       VK_ERROR_NOT_MAPPABLE                                   = -23,
+       VK_ERROR_MEMORY_MAP_FAILED                              = -24,
+       VK_ERROR_MEMORY_UNMAP_FAILED                    = -25,
+       VK_ERROR_INCOMPATIBLE_DEVICE                    = -26,
+       VK_ERROR_INCOMPATIBLE_DRIVER                    = -27,
+       VK_ERROR_INCOMPLETE_COMMAND_BUFFER              = -28,
+       VK_ERROR_BUILDING_COMMAND_BUFFER                = -29,
+       VK_ERROR_MEMORY_NOT_BOUND                               = -30,
+       VK_ERROR_INCOMPATIBLE_QUEUE                             = -31,
+       VK_ERROR_INVALID_LAYER                                  = -32,
 };
 
-enum VkWaitEvent
+enum VkStructureType
 {
-       VK_WAIT_EVENT_TOP_OF_PIPE                       = 0x00000001,
-       VK_WAIT_EVENT_BEFORE_RASTERIZATION      = 0x00000002,
+       VK_STRUCTURE_TYPE_APPLICATION_INFO                                                      = 0,
+       VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO                                            = 1,
+       VK_STRUCTURE_TYPE_MEMORY_ALLOC_INFO                                                     = 2,
+       VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO                                        = 3,
+       VK_STRUCTURE_TYPE_ATTACHMENT_VIEW_CREATE_INFO                           = 4,
+       VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO                                     = 5,
+       VK_STRUCTURE_TYPE_SHADER_CREATE_INFO                                            = 6,
+       VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO                          = 7,
+       VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO                                           = 8,
+       VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO                     = 9,
+       VK_STRUCTURE_TYPE_DYNAMIC_VIEWPORT_STATE_CREATE_INFO            = 10,
+       VK_STRUCTURE_TYPE_DYNAMIC_RASTER_STATE_CREATE_INFO                      = 11,
+       VK_STRUCTURE_TYPE_DYNAMIC_COLOR_BLEND_STATE_CREATE_INFO         = 12,
+       VK_STRUCTURE_TYPE_DYNAMIC_DEPTH_STENCIL_STATE_CREATE_INFO       = 13,
+       VK_STRUCTURE_TYPE_CMD_BUFFER_CREATE_INFO                                        = 14,
+       VK_STRUCTURE_TYPE_EVENT_CREATE_INFO                                                     = 15,
+       VK_STRUCTURE_TYPE_FENCE_CREATE_INFO                                                     = 16,
+       VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO                                         = 17,
+       VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO                                        = 18,
+       VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO                     = 19,
+       VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO                         = 20,
+       VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO       = 21,
+       VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO     = 22,
+       VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO       = 23,
+       VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO           = 24,
+       VK_STRUCTURE_TYPE_PIPELINE_RASTER_STATE_CREATE_INFO                     = 25,
+       VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO        = 26,
+       VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO        = 27,
+       VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO      = 28,
+       VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO                                                     = 29,
+       VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO                                            = 30,
+       VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO                                       = 31,
+       VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO                                       = 32,
+       VK_STRUCTURE_TYPE_CMD_BUFFER_BEGIN_INFO                                         = 33,
+       VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO                                       = 34,
+       VK_STRUCTURE_TYPE_LAYER_CREATE_INFO                                                     = 35,
+       VK_STRUCTURE_TYPE_MEMORY_BARRIER                                                        = 36,
+       VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER                                         = 37,
+       VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER                                          = 38,
+       VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO                           = 39,
+       VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET                                          = 40,
+       VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET                                           = 41,
+       VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO                                          = 42,
+       VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO                           = 43,
+       VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE                                           = 44,
+       VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO                            = 45,
+       VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION                                        = 46,
+       VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION                                           = 47,
+       VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY                                            = 48,
+       VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO                                        = 49,
+       VK_STRUCTURE_TYPE_CMD_POOL_CREATE_INFO                                          = 50,
 };
 
-enum VkAttachmentLoadOp
+enum VkSystemAllocType
 {
-       VK_ATTACHMENT_LOAD_OP_LOAD              = 0x00000000,
-       VK_ATTACHMENT_LOAD_OP_CLEAR             = 0x00000001,
-       VK_ATTACHMENT_LOAD_OP_DONT_CARE = 0x00000002,
+       VK_SYSTEM_ALLOC_TYPE_API_OBJECT                 = 0,
+       VK_SYSTEM_ALLOC_TYPE_INTERNAL                   = 1,
+       VK_SYSTEM_ALLOC_TYPE_INTERNAL_TEMP              = 2,
+       VK_SYSTEM_ALLOC_TYPE_INTERNAL_SHADER    = 3,
+       VK_SYSTEM_ALLOC_TYPE_DEBUG                              = 4,
 };
 
-enum VkAttachmentStoreOp
+enum VkFormat
 {
-       VK_ATTACHMENT_STORE_OP_STORE            = 0x00000000,
-       VK_ATTACHMENT_STORE_OP_RESOLVE_MSAA     = 0x00000001,
-       VK_ATTACHMENT_STORE_OP_DONT_CARE        = 0x00000002,
+       VK_FORMAT_UNDEFINED                             = 0,
+       VK_FORMAT_R4G4_UNORM                    = 1,
+       VK_FORMAT_R4G4_USCALED                  = 2,
+       VK_FORMAT_R4G4B4A4_UNORM                = 3,
+       VK_FORMAT_R4G4B4A4_USCALED              = 4,
+       VK_FORMAT_R5G6B5_UNORM                  = 5,
+       VK_FORMAT_R5G6B5_USCALED                = 6,
+       VK_FORMAT_R5G5B5A1_UNORM                = 7,
+       VK_FORMAT_R5G5B5A1_USCALED              = 8,
+       VK_FORMAT_R8_UNORM                              = 9,
+       VK_FORMAT_R8_SNORM                              = 10,
+       VK_FORMAT_R8_USCALED                    = 11,
+       VK_FORMAT_R8_SSCALED                    = 12,
+       VK_FORMAT_R8_UINT                               = 13,
+       VK_FORMAT_R8_SINT                               = 14,
+       VK_FORMAT_R8_SRGB                               = 15,
+       VK_FORMAT_R8G8_UNORM                    = 16,
+       VK_FORMAT_R8G8_SNORM                    = 17,
+       VK_FORMAT_R8G8_USCALED                  = 18,
+       VK_FORMAT_R8G8_SSCALED                  = 19,
+       VK_FORMAT_R8G8_UINT                             = 20,
+       VK_FORMAT_R8G8_SINT                             = 21,
+       VK_FORMAT_R8G8_SRGB                             = 22,
+       VK_FORMAT_R8G8B8_UNORM                  = 23,
+       VK_FORMAT_R8G8B8_SNORM                  = 24,
+       VK_FORMAT_R8G8B8_USCALED                = 25,
+       VK_FORMAT_R8G8B8_SSCALED                = 26,
+       VK_FORMAT_R8G8B8_UINT                   = 27,
+       VK_FORMAT_R8G8B8_SINT                   = 28,
+       VK_FORMAT_R8G8B8_SRGB                   = 29,
+       VK_FORMAT_R8G8B8A8_UNORM                = 30,
+       VK_FORMAT_R8G8B8A8_SNORM                = 31,
+       VK_FORMAT_R8G8B8A8_USCALED              = 32,
+       VK_FORMAT_R8G8B8A8_SSCALED              = 33,
+       VK_FORMAT_R8G8B8A8_UINT                 = 34,
+       VK_FORMAT_R8G8B8A8_SINT                 = 35,
+       VK_FORMAT_R8G8B8A8_SRGB                 = 36,
+       VK_FORMAT_R10G10B10A2_UNORM             = 37,
+       VK_FORMAT_R10G10B10A2_SNORM             = 38,
+       VK_FORMAT_R10G10B10A2_USCALED   = 39,
+       VK_FORMAT_R10G10B10A2_SSCALED   = 40,
+       VK_FORMAT_R10G10B10A2_UINT              = 41,
+       VK_FORMAT_R10G10B10A2_SINT              = 42,
+       VK_FORMAT_R16_UNORM                             = 43,
+       VK_FORMAT_R16_SNORM                             = 44,
+       VK_FORMAT_R16_USCALED                   = 45,
+       VK_FORMAT_R16_SSCALED                   = 46,
+       VK_FORMAT_R16_UINT                              = 47,
+       VK_FORMAT_R16_SINT                              = 48,
+       VK_FORMAT_R16_SFLOAT                    = 49,
+       VK_FORMAT_R16G16_UNORM                  = 50,
+       VK_FORMAT_R16G16_SNORM                  = 51,
+       VK_FORMAT_R16G16_USCALED                = 52,
+       VK_FORMAT_R16G16_SSCALED                = 53,
+       VK_FORMAT_R16G16_UINT                   = 54,
+       VK_FORMAT_R16G16_SINT                   = 55,
+       VK_FORMAT_R16G16_SFLOAT                 = 56,
+       VK_FORMAT_R16G16B16_UNORM               = 57,
+       VK_FORMAT_R16G16B16_SNORM               = 58,
+       VK_FORMAT_R16G16B16_USCALED             = 59,
+       VK_FORMAT_R16G16B16_SSCALED             = 60,
+       VK_FORMAT_R16G16B16_UINT                = 61,
+       VK_FORMAT_R16G16B16_SINT                = 62,
+       VK_FORMAT_R16G16B16_SFLOAT              = 63,
+       VK_FORMAT_R16G16B16A16_UNORM    = 64,
+       VK_FORMAT_R16G16B16A16_SNORM    = 65,
+       VK_FORMAT_R16G16B16A16_USCALED  = 66,
+       VK_FORMAT_R16G16B16A16_SSCALED  = 67,
+       VK_FORMAT_R16G16B16A16_UINT             = 68,
+       VK_FORMAT_R16G16B16A16_SINT             = 69,
+       VK_FORMAT_R16G16B16A16_SFLOAT   = 70,
+       VK_FORMAT_R32_UINT                              = 71,
+       VK_FORMAT_R32_SINT                              = 72,
+       VK_FORMAT_R32_SFLOAT                    = 73,
+       VK_FORMAT_R32G32_UINT                   = 74,
+       VK_FORMAT_R32G32_SINT                   = 75,
+       VK_FORMAT_R32G32_SFLOAT                 = 76,
+       VK_FORMAT_R32G32B32_UINT                = 77,
+       VK_FORMAT_R32G32B32_SINT                = 78,
+       VK_FORMAT_R32G32B32_SFLOAT              = 79,
+       VK_FORMAT_R32G32B32A32_UINT             = 80,
+       VK_FORMAT_R32G32B32A32_SINT             = 81,
+       VK_FORMAT_R32G32B32A32_SFLOAT   = 82,
+       VK_FORMAT_R64_SFLOAT                    = 83,
+       VK_FORMAT_R64G64_SFLOAT                 = 84,
+       VK_FORMAT_R64G64B64_SFLOAT              = 85,
+       VK_FORMAT_R64G64B64A64_SFLOAT   = 86,
+       VK_FORMAT_R11G11B10_UFLOAT              = 87,
+       VK_FORMAT_R9G9B9E5_UFLOAT               = 88,
+       VK_FORMAT_D16_UNORM                             = 89,
+       VK_FORMAT_D24_UNORM                             = 90,
+       VK_FORMAT_D32_SFLOAT                    = 91,
+       VK_FORMAT_S8_UINT                               = 92,
+       VK_FORMAT_D16_UNORM_S8_UINT             = 93,
+       VK_FORMAT_D24_UNORM_S8_UINT             = 94,
+       VK_FORMAT_D32_SFLOAT_S8_UINT    = 95,
+       VK_FORMAT_BC1_RGB_UNORM                 = 96,
+       VK_FORMAT_BC1_RGB_SRGB                  = 97,
+       VK_FORMAT_BC1_RGBA_UNORM                = 98,
+       VK_FORMAT_BC1_RGBA_SRGB                 = 99,
+       VK_FORMAT_BC2_UNORM                             = 100,
+       VK_FORMAT_BC2_SRGB                              = 101,
+       VK_FORMAT_BC3_UNORM                             = 102,
+       VK_FORMAT_BC3_SRGB                              = 103,
+       VK_FORMAT_BC4_UNORM                             = 104,
+       VK_FORMAT_BC4_SNORM                             = 105,
+       VK_FORMAT_BC5_UNORM                             = 106,
+       VK_FORMAT_BC5_SNORM                             = 107,
+       VK_FORMAT_BC6H_UFLOAT                   = 108,
+       VK_FORMAT_BC6H_SFLOAT                   = 109,
+       VK_FORMAT_BC7_UNORM                             = 110,
+       VK_FORMAT_BC7_SRGB                              = 111,
+       VK_FORMAT_ETC2_R8G8B8_UNORM             = 112,
+       VK_FORMAT_ETC2_R8G8B8_SRGB              = 113,
+       VK_FORMAT_ETC2_R8G8B8A1_UNORM   = 114,
+       VK_FORMAT_ETC2_R8G8B8A1_SRGB    = 115,
+       VK_FORMAT_ETC2_R8G8B8A8_UNORM   = 116,
+       VK_FORMAT_ETC2_R8G8B8A8_SRGB    = 117,
+       VK_FORMAT_EAC_R11_UNORM                 = 118,
+       VK_FORMAT_EAC_R11_SNORM                 = 119,
+       VK_FORMAT_EAC_R11G11_UNORM              = 120,
+       VK_FORMAT_EAC_R11G11_SNORM              = 121,
+       VK_FORMAT_ASTC_4x4_UNORM                = 122,
+       VK_FORMAT_ASTC_4x4_SRGB                 = 123,
+       VK_FORMAT_ASTC_5x4_UNORM                = 124,
+       VK_FORMAT_ASTC_5x4_SRGB                 = 125,
+       VK_FORMAT_ASTC_5x5_UNORM                = 126,
+       VK_FORMAT_ASTC_5x5_SRGB                 = 127,
+       VK_FORMAT_ASTC_6x5_UNORM                = 128,
+       VK_FORMAT_ASTC_6x5_SRGB                 = 129,
+       VK_FORMAT_ASTC_6x6_UNORM                = 130,
+       VK_FORMAT_ASTC_6x6_SRGB                 = 131,
+       VK_FORMAT_ASTC_8x5_UNORM                = 132,
+       VK_FORMAT_ASTC_8x5_SRGB                 = 133,
+       VK_FORMAT_ASTC_8x6_UNORM                = 134,
+       VK_FORMAT_ASTC_8x6_SRGB                 = 135,
+       VK_FORMAT_ASTC_8x8_UNORM                = 136,
+       VK_FORMAT_ASTC_8x8_SRGB                 = 137,
+       VK_FORMAT_ASTC_10x5_UNORM               = 138,
+       VK_FORMAT_ASTC_10x5_SRGB                = 139,
+       VK_FORMAT_ASTC_10x6_UNORM               = 140,
+       VK_FORMAT_ASTC_10x6_SRGB                = 141,
+       VK_FORMAT_ASTC_10x8_UNORM               = 142,
+       VK_FORMAT_ASTC_10x8_SRGB                = 143,
+       VK_FORMAT_ASTC_10x10_UNORM              = 144,
+       VK_FORMAT_ASTC_10x10_SRGB               = 145,
+       VK_FORMAT_ASTC_12x10_UNORM              = 146,
+       VK_FORMAT_ASTC_12x10_SRGB               = 147,
+       VK_FORMAT_ASTC_12x12_UNORM              = 148,
+       VK_FORMAT_ASTC_12x12_SRGB               = 149,
+       VK_FORMAT_B4G4R4A4_UNORM                = 150,
+       VK_FORMAT_B5G5R5A1_UNORM                = 151,
+       VK_FORMAT_B5G6R5_UNORM                  = 152,
+       VK_FORMAT_B5G6R5_USCALED                = 153,
+       VK_FORMAT_B8G8R8_UNORM                  = 154,
+       VK_FORMAT_B8G8R8_SNORM                  = 155,
+       VK_FORMAT_B8G8R8_USCALED                = 156,
+       VK_FORMAT_B8G8R8_SSCALED                = 157,
+       VK_FORMAT_B8G8R8_UINT                   = 158,
+       VK_FORMAT_B8G8R8_SINT                   = 159,
+       VK_FORMAT_B8G8R8_SRGB                   = 160,
+       VK_FORMAT_B8G8R8A8_UNORM                = 161,
+       VK_FORMAT_B8G8R8A8_SNORM                = 162,
+       VK_FORMAT_B8G8R8A8_USCALED              = 163,
+       VK_FORMAT_B8G8R8A8_SSCALED              = 164,
+       VK_FORMAT_B8G8R8A8_UINT                 = 165,
+       VK_FORMAT_B8G8R8A8_SINT                 = 166,
+       VK_FORMAT_B8G8R8A8_SRGB                 = 167,
+       VK_FORMAT_B10G10R10A2_UNORM             = 168,
+       VK_FORMAT_B10G10R10A2_SNORM             = 169,
+       VK_FORMAT_B10G10R10A2_USCALED   = 170,
+       VK_FORMAT_B10G10R10A2_SSCALED   = 171,
+       VK_FORMAT_B10G10R10A2_UINT              = 172,
+       VK_FORMAT_B10G10R10A2_SINT              = 173,
 };
 
 enum VkImageType
 {
-       VK_IMAGE_TYPE_1D        = 0x00000000,
-       VK_IMAGE_TYPE_2D        = 0x00000001,
-       VK_IMAGE_TYPE_3D        = 0x00000002,
+       VK_IMAGE_TYPE_1D        = 0,
+       VK_IMAGE_TYPE_2D        = 1,
+       VK_IMAGE_TYPE_3D        = 2,
 };
 
 enum VkImageTiling
 {
-       VK_IMAGE_TILING_LINEAR  = 0x00000000,
-       VK_IMAGE_TILING_OPTIMAL = 0x00000001,
+       VK_IMAGE_TILING_LINEAR  = 0,
+       VK_IMAGE_TILING_OPTIMAL = 1,
 };
 
-enum VkImageViewType
+enum VkPhysicalDeviceType
 {
-       VK_IMAGE_VIEW_TYPE_1D   = 0x00000000,
-       VK_IMAGE_VIEW_TYPE_2D   = 0x00000001,
-       VK_IMAGE_VIEW_TYPE_3D   = 0x00000002,
-       VK_IMAGE_VIEW_TYPE_CUBE = 0x00000003,
+       VK_PHYSICAL_DEVICE_TYPE_OTHER                   = 0,
+       VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU  = 1,
+       VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU    = 2,
+       VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU             = 3,
+       VK_PHYSICAL_DEVICE_TYPE_CPU                             = 4,
 };
 
 enum VkImageAspect
 {
-       VK_IMAGE_ASPECT_COLOR   = 0x00000000,
-       VK_IMAGE_ASPECT_DEPTH   = 0x00000001,
-       VK_IMAGE_ASPECT_STENCIL = 0x00000002,
-};
-
-enum VkBufferViewType
-{
-       VK_BUFFER_VIEW_TYPE_RAW                 = 0x00000000,
-       VK_BUFFER_VIEW_TYPE_FORMATTED   = 0x00000001,
-};
-
-enum VkChannelSwizzle
-{
-       VK_CHANNEL_SWIZZLE_ZERO = 0x00000000,
-       VK_CHANNEL_SWIZZLE_ONE  = 0x00000001,
-       VK_CHANNEL_SWIZZLE_R    = 0x00000002,
-       VK_CHANNEL_SWIZZLE_G    = 0x00000003,
-       VK_CHANNEL_SWIZZLE_B    = 0x00000004,
-       VK_CHANNEL_SWIZZLE_A    = 0x00000005,
+       VK_IMAGE_ASPECT_COLOR           = 0,
+       VK_IMAGE_ASPECT_DEPTH           = 1,
+       VK_IMAGE_ASPECT_STENCIL         = 2,
+       VK_IMAGE_ASPECT_METADATA        = 3,
 };
 
-enum VkDescriptorType
+enum VkQueryType
 {
-       VK_DESCRIPTOR_TYPE_SAMPLER                                      = 0x00000000,
-       VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER       = 0x00000001,
-       VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE                        = 0x00000002,
-       VK_DESCRIPTOR_TYPE_STORAGE_IMAGE                        = 0x00000003,
-       VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER         = 0x00000004,
-       VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER         = 0x00000005,
-       VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER                       = 0x00000006,
-       VK_DESCRIPTOR_TYPE_STORAGE_BUFFER                       = 0x00000007,
-       VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC       = 0x00000008,
-       VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC       = 0x00000009,
+       VK_QUERY_TYPE_OCCLUSION                         = 0,
+       VK_QUERY_TYPE_PIPELINE_STATISTICS       = 1,
 };
 
-enum VkDescriptorPoolUsage
+enum VkSharingMode
 {
-       VK_DESCRIPTOR_POOL_USAGE_ONE_SHOT       = 0x00000000,
-       VK_DESCRIPTOR_POOL_USAGE_DYNAMIC        = 0x00000001,
+       VK_SHARING_MODE_EXCLUSIVE       = 0,
+       VK_SHARING_MODE_CONCURRENT      = 1,
 };
 
-enum VkDescriptorUpdateMode
+enum VkBufferViewType
 {
-       VK_DESCRIPTOR_UPDATE_MODE_COPY          = 0x00000000,
-       VK_DESCRIPTOR_UPDATE_MODE_FASTEST       = 0x00000001,
+       VK_BUFFER_VIEW_TYPE_RAW                 = 0,
+       VK_BUFFER_VIEW_TYPE_FORMATTED   = 1,
 };
 
-enum VkDescriptorSetUsage
+enum VkImageViewType
 {
-       VK_DESCRIPTOR_SET_USAGE_ONE_SHOT        = 0x00000000,
-       VK_DESCRIPTOR_SET_USAGE_STATIC          = 0x00000001,
+       VK_IMAGE_VIEW_TYPE_1D                   = 0,
+       VK_IMAGE_VIEW_TYPE_2D                   = 1,
+       VK_IMAGE_VIEW_TYPE_3D                   = 2,
+       VK_IMAGE_VIEW_TYPE_CUBE                 = 3,
+       VK_IMAGE_VIEW_TYPE_1D_ARRAY             = 4,
+       VK_IMAGE_VIEW_TYPE_2D_ARRAY             = 5,
+       VK_IMAGE_VIEW_TYPE_CUBE_ARRAY   = 6,
 };
 
-enum VkQueryType
+enum VkChannelSwizzle
 {
-       VK_QUERY_TYPE_OCCLUSION                         = 0x00000000,
-       VK_QUERY_TYPE_PIPELINE_STATISTICS       = 0x00000001,
+       VK_CHANNEL_SWIZZLE_ZERO = 0,
+       VK_CHANNEL_SWIZZLE_ONE  = 1,
+       VK_CHANNEL_SWIZZLE_R    = 2,
+       VK_CHANNEL_SWIZZLE_G    = 3,
+       VK_CHANNEL_SWIZZLE_B    = 4,
+       VK_CHANNEL_SWIZZLE_A    = 5,
 };
 
-enum VkTimestampType
+enum VkShaderStage
 {
-       VK_TIMESTAMP_TYPE_TOP           = 0x00000000,
-       VK_TIMESTAMP_TYPE_BOTTOM        = 0x00000001,
+       VK_SHADER_STAGE_VERTEX                  = 0,
+       VK_SHADER_STAGE_TESS_CONTROL    = 1,
+       VK_SHADER_STAGE_TESS_EVALUATION = 2,
+       VK_SHADER_STAGE_GEOMETRY                = 3,
+       VK_SHADER_STAGE_FRAGMENT                = 4,
+       VK_SHADER_STAGE_COMPUTE                 = 5,
 };
 
-enum VkBorderColor
+enum VkVertexInputStepRate
 {
-       VK_BORDER_COLOR_OPAQUE_WHITE            = 0x00000000,
-       VK_BORDER_COLOR_TRANSPARENT_BLACK       = 0x00000001,
-       VK_BORDER_COLOR_OPAQUE_BLACK            = 0x00000002,
+       VK_VERTEX_INPUT_STEP_RATE_VERTEX        = 0,
+       VK_VERTEX_INPUT_STEP_RATE_INSTANCE      = 1,
 };
 
-enum VkPipelineBindPoint
+enum VkPrimitiveTopology
 {
-       VK_PIPELINE_BIND_POINT_COMPUTE  = 0x00000000,
-       VK_PIPELINE_BIND_POINT_GRAPHICS = 0x00000001,
+       VK_PRIMITIVE_TOPOLOGY_POINT_LIST                        = 0,
+       VK_PRIMITIVE_TOPOLOGY_LINE_LIST                         = 1,
+       VK_PRIMITIVE_TOPOLOGY_LINE_STRIP                        = 2,
+       VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST                     = 3,
+       VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP            = 4,
+       VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN                      = 5,
+       VK_PRIMITIVE_TOPOLOGY_LINE_LIST_ADJ                     = 6,
+       VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_ADJ            = 7,
+       VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_ADJ         = 8,
+       VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_ADJ        = 9,
+       VK_PRIMITIVE_TOPOLOGY_PATCH                                     = 10,
 };
 
-enum VkStateBindPoint
+enum VkFillMode
 {
-       VK_STATE_BIND_POINT_VIEWPORT            = 0x00000000,
-       VK_STATE_BIND_POINT_RASTER                      = 0x00000001,
-       VK_STATE_BIND_POINT_COLOR_BLEND         = 0x00000002,
-       VK_STATE_BIND_POINT_DEPTH_STENCIL       = 0x00000003,
+       VK_FILL_MODE_POINTS             = 0,
+       VK_FILL_MODE_WIREFRAME  = 1,
+       VK_FILL_MODE_SOLID              = 2,
 };
 
-enum VkPrimitiveTopology
+enum VkCullMode
 {
-       VK_PRIMITIVE_TOPOLOGY_POINT_LIST                        = 0x00000000,
-       VK_PRIMITIVE_TOPOLOGY_LINE_LIST                         = 0x00000001,
-       VK_PRIMITIVE_TOPOLOGY_LINE_STRIP                        = 0x00000002,
-       VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST                     = 0x00000003,
-       VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP            = 0x00000004,
-       VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN                      = 0x00000005,
-       VK_PRIMITIVE_TOPOLOGY_LINE_LIST_ADJ                     = 0x00000006,
-       VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_ADJ            = 0x00000007,
-       VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_ADJ         = 0x00000008,
-       VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_ADJ        = 0x00000009,
-       VK_PRIMITIVE_TOPOLOGY_PATCH                                     = 0x0000000a,
+       VK_CULL_MODE_NONE                       = 0,
+       VK_CULL_MODE_FRONT                      = 1,
+       VK_CULL_MODE_BACK                       = 2,
+       VK_CULL_MODE_FRONT_AND_BACK     = 3,
 };
 
-enum VkIndexType
+enum VkFrontFace
 {
-       VK_INDEX_TYPE_UINT8             = 0x00000000,
-       VK_INDEX_TYPE_UINT16    = 0x00000001,
-       VK_INDEX_TYPE_UINT32    = 0x00000002,
+       VK_FRONT_FACE_CCW       = 0,
+       VK_FRONT_FACE_CW        = 1,
 };
 
-enum VkTexFilter
+enum VkCompareOp
 {
-       VK_TEX_FILTER_NEAREST   = 0x00000000,
-       VK_TEX_FILTER_LINEAR    = 0x00000001,
+       VK_COMPARE_OP_NEVER                     = 0,
+       VK_COMPARE_OP_LESS                      = 1,
+       VK_COMPARE_OP_EQUAL                     = 2,
+       VK_COMPARE_OP_LESS_EQUAL        = 3,
+       VK_COMPARE_OP_GREATER           = 4,
+       VK_COMPARE_OP_NOT_EQUAL         = 5,
+       VK_COMPARE_OP_GREATER_EQUAL     = 6,
+       VK_COMPARE_OP_ALWAYS            = 7,
 };
 
-enum VkTexMipmapMode
+enum VkStencilOp
 {
-       VK_TEX_MIPMAP_MODE_BASE         = 0x00000000,
-       VK_TEX_MIPMAP_MODE_NEAREST      = 0x00000001,
-       VK_TEX_MIPMAP_MODE_LINEAR       = 0x00000002,
+       VK_STENCIL_OP_KEEP              = 0,
+       VK_STENCIL_OP_ZERO              = 1,
+       VK_STENCIL_OP_REPLACE   = 2,
+       VK_STENCIL_OP_INC_CLAMP = 3,
+       VK_STENCIL_OP_DEC_CLAMP = 4,
+       VK_STENCIL_OP_INVERT    = 5,
+       VK_STENCIL_OP_INC_WRAP  = 6,
+       VK_STENCIL_OP_DEC_WRAP  = 7,
 };
 
-enum VkTexAddress
+enum VkLogicOp
 {
-       VK_TEX_ADDRESS_WRAP                     = 0x00000000,
-       VK_TEX_ADDRESS_MIRROR           = 0x00000001,
-       VK_TEX_ADDRESS_CLAMP            = 0x00000002,
-       VK_TEX_ADDRESS_MIRROR_ONCE      = 0x00000003,
-       VK_TEX_ADDRESS_CLAMP_BORDER     = 0x00000004,
+       VK_LOGIC_OP_CLEAR                       = 0,
+       VK_LOGIC_OP_AND                         = 1,
+       VK_LOGIC_OP_AND_REVERSE         = 2,
+       VK_LOGIC_OP_COPY                        = 3,
+       VK_LOGIC_OP_AND_INVERTED        = 4,
+       VK_LOGIC_OP_NOOP                        = 5,
+       VK_LOGIC_OP_XOR                         = 6,
+       VK_LOGIC_OP_OR                          = 7,
+       VK_LOGIC_OP_NOR                         = 8,
+       VK_LOGIC_OP_EQUIV                       = 9,
+       VK_LOGIC_OP_INVERT                      = 10,
+       VK_LOGIC_OP_OR_REVERSE          = 11,
+       VK_LOGIC_OP_COPY_INVERTED       = 12,
+       VK_LOGIC_OP_OR_INVERTED         = 13,
+       VK_LOGIC_OP_NAND                        = 14,
+       VK_LOGIC_OP_SET                         = 15,
 };
 
-enum VkCompareOp
+enum VkBlend
 {
-       VK_COMPARE_OP_NEVER                     = 0x00000000,
-       VK_COMPARE_OP_LESS                      = 0x00000001,
-       VK_COMPARE_OP_EQUAL                     = 0x00000002,
-       VK_COMPARE_OP_LESS_EQUAL        = 0x00000003,
-       VK_COMPARE_OP_GREATER           = 0x00000004,
-       VK_COMPARE_OP_NOT_EQUAL         = 0x00000005,
-       VK_COMPARE_OP_GREATER_EQUAL     = 0x00000006,
-       VK_COMPARE_OP_ALWAYS            = 0x00000007,
+       VK_BLEND_ZERO                                           = 0,
+       VK_BLEND_ONE                                            = 1,
+       VK_BLEND_SRC_COLOR                                      = 2,
+       VK_BLEND_ONE_MINUS_SRC_COLOR            = 3,
+       VK_BLEND_DEST_COLOR                                     = 4,
+       VK_BLEND_ONE_MINUS_DEST_COLOR           = 5,
+       VK_BLEND_SRC_ALPHA                                      = 6,
+       VK_BLEND_ONE_MINUS_SRC_ALPHA            = 7,
+       VK_BLEND_DEST_ALPHA                                     = 8,
+       VK_BLEND_ONE_MINUS_DEST_ALPHA           = 9,
+       VK_BLEND_CONSTANT_COLOR                         = 10,
+       VK_BLEND_ONE_MINUS_CONSTANT_COLOR       = 11,
+       VK_BLEND_CONSTANT_ALPHA                         = 12,
+       VK_BLEND_ONE_MINUS_CONSTANT_ALPHA       = 13,
+       VK_BLEND_SRC_ALPHA_SATURATE                     = 14,
+       VK_BLEND_SRC1_COLOR                                     = 15,
+       VK_BLEND_ONE_MINUS_SRC1_COLOR           = 16,
+       VK_BLEND_SRC1_ALPHA                                     = 17,
+       VK_BLEND_ONE_MINUS_SRC1_ALPHA           = 18,
 };
 
-enum VkFillMode
+enum VkBlendOp
 {
-       VK_FILL_MODE_POINTS             = 0x00000000,
-       VK_FILL_MODE_WIREFRAME  = 0x00000001,
-       VK_FILL_MODE_SOLID              = 0x00000002,
+       VK_BLEND_OP_ADD                                 = 0,
+       VK_BLEND_OP_SUBTRACT                    = 1,
+       VK_BLEND_OP_REVERSE_SUBTRACT    = 2,
+       VK_BLEND_OP_MIN                                 = 3,
+       VK_BLEND_OP_MAX                                 = 4,
 };
 
-enum VkCullMode
+enum VkTexFilter
 {
-       VK_CULL_MODE_NONE                       = 0x00000000,
-       VK_CULL_MODE_FRONT                      = 0x00000001,
-       VK_CULL_MODE_BACK                       = 0x00000002,
-       VK_CULL_MODE_FRONT_AND_BACK     = 0x00000003,
+       VK_TEX_FILTER_NEAREST   = 0,
+       VK_TEX_FILTER_LINEAR    = 1,
 };
 
-enum VkFrontFace
+enum VkTexMipmapMode
 {
-       VK_FRONT_FACE_CCW       = 0x00000000,
-       VK_FRONT_FACE_CW        = 0x00000001,
+       VK_TEX_MIPMAP_MODE_BASE         = 0,
+       VK_TEX_MIPMAP_MODE_NEAREST      = 1,
+       VK_TEX_MIPMAP_MODE_LINEAR       = 2,
 };
 
-enum VkProvokingVertex
+enum VkTexAddress
 {
-       VK_PROVOKING_VERTEX_FIRST       = 0x00000000,
-       VK_PROVOKING_VERTEX_LAST        = 0x00000001,
+       VK_TEX_ADDRESS_WRAP                     = 0,
+       VK_TEX_ADDRESS_MIRROR           = 1,
+       VK_TEX_ADDRESS_CLAMP            = 2,
+       VK_TEX_ADDRESS_MIRROR_ONCE      = 3,
+       VK_TEX_ADDRESS_CLAMP_BORDER     = 4,
 };
 
-enum VkCoordinateOrigin
+enum VkBorderColor
 {
-       VK_COORDINATE_ORIGIN_UPPER_LEFT = 0x00000000,
-       VK_COORDINATE_ORIGIN_LOWER_LEFT = 0x00000001,
+       VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK = 0,
+       VK_BORDER_COLOR_INT_TRANSPARENT_BLACK   = 1,
+       VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK              = 2,
+       VK_BORDER_COLOR_INT_OPAQUE_BLACK                = 3,
+       VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE              = 4,
+       VK_BORDER_COLOR_INT_OPAQUE_WHITE                = 5,
 };
 
-enum VkDepthMode
+enum VkDescriptorType
 {
-       VK_DEPTH_MODE_ZERO_TO_ONE                       = 0x00000000,
-       VK_DEPTH_MODE_NEGATIVE_ONE_TO_ONE       = 0x00000001,
+       VK_DESCRIPTOR_TYPE_SAMPLER                                      = 0,
+       VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER       = 1,
+       VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE                        = 2,
+       VK_DESCRIPTOR_TYPE_STORAGE_IMAGE                        = 3,
+       VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER         = 4,
+       VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER         = 5,
+       VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER                       = 6,
+       VK_DESCRIPTOR_TYPE_STORAGE_BUFFER                       = 7,
+       VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC       = 8,
+       VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC       = 9,
+       VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT                     = 10,
 };
 
-enum VkBlend
+enum VkDescriptorPoolUsage
 {
-       VK_BLEND_ZERO                                           = 0x00000000,
-       VK_BLEND_ONE                                            = 0x00000001,
-       VK_BLEND_SRC_COLOR                                      = 0x00000002,
-       VK_BLEND_ONE_MINUS_SRC_COLOR            = 0x00000003,
-       VK_BLEND_DEST_COLOR                                     = 0x00000004,
-       VK_BLEND_ONE_MINUS_DEST_COLOR           = 0x00000005,
-       VK_BLEND_SRC_ALPHA                                      = 0x00000006,
-       VK_BLEND_ONE_MINUS_SRC_ALPHA            = 0x00000007,
-       VK_BLEND_DEST_ALPHA                                     = 0x00000008,
-       VK_BLEND_ONE_MINUS_DEST_ALPHA           = 0x00000009,
-       VK_BLEND_CONSTANT_COLOR                         = 0x0000000a,
-       VK_BLEND_ONE_MINUS_CONSTANT_COLOR       = 0x0000000b,
-       VK_BLEND_CONSTANT_ALPHA                         = 0x0000000c,
-       VK_BLEND_ONE_MINUS_CONSTANT_ALPHA       = 0x0000000d,
-       VK_BLEND_SRC_ALPHA_SATURATE                     = 0x0000000e,
-       VK_BLEND_SRC1_COLOR                                     = 0x0000000f,
-       VK_BLEND_ONE_MINUS_SRC1_COLOR           = 0x00000010,
-       VK_BLEND_SRC1_ALPHA                                     = 0x00000011,
-       VK_BLEND_ONE_MINUS_SRC1_ALPHA           = 0x00000012,
+       VK_DESCRIPTOR_POOL_USAGE_ONE_SHOT       = 0,
+       VK_DESCRIPTOR_POOL_USAGE_DYNAMIC        = 1,
 };
 
-enum VkBlendOp
+enum VkDescriptorSetUsage
 {
-       VK_BLEND_OP_ADD                                 = 0x00000000,
-       VK_BLEND_OP_SUBTRACT                    = 0x00000001,
-       VK_BLEND_OP_REVERSE_SUBTRACT    = 0x00000002,
-       VK_BLEND_OP_MIN                                 = 0x00000003,
-       VK_BLEND_OP_MAX                                 = 0x00000004,
+       VK_DESCRIPTOR_SET_USAGE_ONE_SHOT        = 0,
+       VK_DESCRIPTOR_SET_USAGE_STATIC          = 1,
 };
 
-enum VkStencilOp
+enum VkImageLayout
 {
-       VK_STENCIL_OP_KEEP              = 0x00000000,
-       VK_STENCIL_OP_ZERO              = 0x00000001,
-       VK_STENCIL_OP_REPLACE   = 0x00000002,
-       VK_STENCIL_OP_INC_CLAMP = 0x00000003,
-       VK_STENCIL_OP_DEC_CLAMP = 0x00000004,
-       VK_STENCIL_OP_INVERT    = 0x00000005,
-       VK_STENCIL_OP_INC_WRAP  = 0x00000006,
-       VK_STENCIL_OP_DEC_WRAP  = 0x00000007,
+       VK_IMAGE_LAYOUT_UNDEFINED                                                       = 0,
+       VK_IMAGE_LAYOUT_GENERAL                                                         = 1,
+       VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL                        = 2,
+       VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL        = 3,
+       VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL         = 4,
+       VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL                        = 5,
+       VK_IMAGE_LAYOUT_TRANSFER_SOURCE_OPTIMAL                         = 6,
+       VK_IMAGE_LAYOUT_TRANSFER_DESTINATION_OPTIMAL            = 7,
 };
 
-enum VkLogicOp
+enum VkAttachmentLoadOp
 {
-       VK_LOGIC_OP_COPY                        = 0x00000000,
-       VK_LOGIC_OP_CLEAR                       = 0x00000001,
-       VK_LOGIC_OP_AND                         = 0x00000002,
-       VK_LOGIC_OP_AND_REVERSE         = 0x00000003,
-       VK_LOGIC_OP_AND_INVERTED        = 0x00000004,
-       VK_LOGIC_OP_NOOP                        = 0x00000005,
-       VK_LOGIC_OP_XOR                         = 0x00000006,
-       VK_LOGIC_OP_OR                          = 0x00000007,
-       VK_LOGIC_OP_NOR                         = 0x00000008,
-       VK_LOGIC_OP_EQUIV                       = 0x00000009,
-       VK_LOGIC_OP_INVERT                      = 0x0000000a,
-       VK_LOGIC_OP_OR_REVERSE          = 0x0000000b,
-       VK_LOGIC_OP_COPY_INVERTED       = 0x0000000c,
-       VK_LOGIC_OP_OR_INVERTED         = 0x0000000d,
-       VK_LOGIC_OP_NAND                        = 0x0000000e,
-       VK_LOGIC_OP_SET                         = 0x0000000f,
+       VK_ATTACHMENT_LOAD_OP_LOAD              = 0,
+       VK_ATTACHMENT_LOAD_OP_CLEAR             = 1,
+       VK_ATTACHMENT_LOAD_OP_DONT_CARE = 2,
 };
 
-enum VkSystemAllocType
+enum VkAttachmentStoreOp
 {
-       VK_SYSTEM_ALLOC_TYPE_API_OBJECT                 = 0x00000000,
-       VK_SYSTEM_ALLOC_TYPE_INTERNAL                   = 0x00000001,
-       VK_SYSTEM_ALLOC_TYPE_INTERNAL_TEMP              = 0x00000002,
-       VK_SYSTEM_ALLOC_TYPE_INTERNAL_SHADER    = 0x00000003,
-       VK_SYSTEM_ALLOC_TYPE_DEBUG                              = 0x00000004,
+       VK_ATTACHMENT_STORE_OP_STORE            = 0,
+       VK_ATTACHMENT_STORE_OP_DONT_CARE        = 1,
 };
 
-enum VkPhysicalDeviceType
+enum VkPipelineBindPoint
 {
-       VK_PHYSICAL_DEVICE_TYPE_OTHER                   = 0x00000000,
-       VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU  = 0x00000001,
-       VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU    = 0x00000002,
-       VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU             = 0x00000003,
-       VK_PHYSICAL_DEVICE_TYPE_CPU                             = 0x00000004,
+       VK_PIPELINE_BIND_POINT_COMPUTE  = 0,
+       VK_PIPELINE_BIND_POINT_GRAPHICS = 1,
 };
 
-enum VkPhysicalDeviceInfoType
+enum VkCmdBufferLevel
 {
-       VK_PHYSICAL_DEVICE_INFO_TYPE_PROPERTIES                 = 0x00000000,
-       VK_PHYSICAL_DEVICE_INFO_TYPE_PERFORMANCE                = 0x00000001,
-       VK_PHYSICAL_DEVICE_INFO_TYPE_QUEUE_PROPERTIES   = 0x00000002,
-       VK_PHYSICAL_DEVICE_INFO_TYPE_MEMORY_PROPERTIES  = 0x00000003,
+       VK_CMD_BUFFER_LEVEL_PRIMARY             = 0,
+       VK_CMD_BUFFER_LEVEL_SECONDARY   = 1,
 };
 
-enum VkExtensionInfoType
+enum VkIndexType
 {
-       VK_EXTENSION_INFO_TYPE_COUNT            = 0x00000000,
-       VK_EXTENSION_INFO_TYPE_PROPERTIES       = 0x00000001,
+       VK_INDEX_TYPE_UINT16    = 0,
+       VK_INDEX_TYPE_UINT32    = 1,
 };
 
-enum VkFormatInfoType
+enum VkTimestampType
 {
-       VK_FORMAT_INFO_TYPE_PROPERTIES  = 0x00000000,
+       VK_TIMESTAMP_TYPE_TOP           = 0,
+       VK_TIMESTAMP_TYPE_BOTTOM        = 1,
 };
 
-enum VkSubresourceInfoType
+enum VkRenderPassContents
 {
-       VK_SUBRESOURCE_INFO_TYPE_LAYOUT = 0x00000000,
+       VK_RENDER_PASS_CONTENTS_INLINE                                  = 0,
+       VK_RENDER_PASS_CONTENTS_SECONDARY_CMD_BUFFERS   = 1,
 };
 
-enum VkObjectInfoType
+enum VkFormatFeatureFlagBits
 {
-       VK_OBJECT_INFO_TYPE_MEMORY_ALLOCATION_COUNT     = 0x00000000,
-       VK_OBJECT_INFO_TYPE_MEMORY_REQUIREMENTS         = 0x00000001,
+       VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT                                     = 0x00000001,
+       VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT                                     = 0x00000002,
+       VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT                      = 0x00000004,
+       VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT                      = 0x00000008,
+       VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT                      = 0x00000010,
+       VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT       = 0x00000020,
+       VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT                                     = 0x00000040,
+       VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT                          = 0x00000080,
+       VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT            = 0x00000100,
+       VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT          = 0x00000200,
+       VK_FORMAT_FEATURE_CONVERSION_BIT                                        = 0x00000400,
 };
+typedef deUint32 VkFormatFeatureFlags;
 
-enum VkVertexInputStepRate
+enum VkImageUsageFlagBits
 {
-       VK_VERTEX_INPUT_STEP_RATE_VERTEX        = 0x0,
-       VK_VERTEX_INPUT_STEP_RATE_INSTANCE      = 0x1,
-       VK_VERTEX_INPUT_STEP_RATE_DRAW          = 0x2,
+       VK_IMAGE_USAGE_GENERAL                                  = 0,
+       VK_IMAGE_USAGE_TRANSFER_SOURCE_BIT              = 0x00000001,
+       VK_IMAGE_USAGE_TRANSFER_DESTINATION_BIT = 0x00000002,
+       VK_IMAGE_USAGE_SAMPLED_BIT                              = 0x00000004,
+       VK_IMAGE_USAGE_STORAGE_BIT                              = 0x00000008,
+       VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT             = 0x00000010,
+       VK_IMAGE_USAGE_DEPTH_STENCIL_BIT                = 0x00000020,
+       VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT = 0x00000040,
+       VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT             = 0x00000080,
 };
+typedef deUint32 VkImageUsageFlags;
 
-enum VkFormat
+enum VkQueueFlagBits
 {
-       VK_FORMAT_UNDEFINED                             = 0x00000000,
-       VK_FORMAT_R4G4_UNORM                    = 0x00000001,
-       VK_FORMAT_R4G4_USCALED                  = 0x00000002,
-       VK_FORMAT_R4G4B4A4_UNORM                = 0x00000003,
-       VK_FORMAT_R4G4B4A4_USCALED              = 0x00000004,
-       VK_FORMAT_R5G6B5_UNORM                  = 0x00000005,
-       VK_FORMAT_R5G6B5_USCALED                = 0x00000006,
-       VK_FORMAT_R5G5B5A1_UNORM                = 0x00000007,
-       VK_FORMAT_R5G5B5A1_USCALED              = 0x00000008,
-       VK_FORMAT_R8_UNORM                              = 0x00000009,
-       VK_FORMAT_R8_SNORM                              = 0x0000000A,
-       VK_FORMAT_R8_USCALED                    = 0x0000000B,
-       VK_FORMAT_R8_SSCALED                    = 0x0000000C,
-       VK_FORMAT_R8_UINT                               = 0x0000000D,
-       VK_FORMAT_R8_SINT                               = 0x0000000E,
-       VK_FORMAT_R8_SRGB                               = 0x0000000F,
-       VK_FORMAT_R8G8_UNORM                    = 0x00000010,
-       VK_FORMAT_R8G8_SNORM                    = 0x00000011,
-       VK_FORMAT_R8G8_USCALED                  = 0x00000012,
-       VK_FORMAT_R8G8_SSCALED                  = 0x00000013,
-       VK_FORMAT_R8G8_UINT                             = 0x00000014,
-       VK_FORMAT_R8G8_SINT                             = 0x00000015,
-       VK_FORMAT_R8G8_SRGB                             = 0x00000016,
-       VK_FORMAT_R8G8B8_UNORM                  = 0x00000017,
-       VK_FORMAT_R8G8B8_SNORM                  = 0x00000018,
-       VK_FORMAT_R8G8B8_USCALED                = 0x00000019,
-       VK_FORMAT_R8G8B8_SSCALED                = 0x0000001A,
-       VK_FORMAT_R8G8B8_UINT                   = 0x0000001B,
-       VK_FORMAT_R8G8B8_SINT                   = 0x0000001C,
-       VK_FORMAT_R8G8B8_SRGB                   = 0x0000001D,
-       VK_FORMAT_R8G8B8A8_UNORM                = 0x0000001E,
-       VK_FORMAT_R8G8B8A8_SNORM                = 0x0000001F,
-       VK_FORMAT_R8G8B8A8_USCALED              = 0x00000020,
-       VK_FORMAT_R8G8B8A8_SSCALED              = 0x00000021,
-       VK_FORMAT_R8G8B8A8_UINT                 = 0x00000022,
-       VK_FORMAT_R8G8B8A8_SINT                 = 0x00000023,
-       VK_FORMAT_R8G8B8A8_SRGB                 = 0x00000024,
-       VK_FORMAT_R10G10B10A2_UNORM             = 0x00000025,
-       VK_FORMAT_R10G10B10A2_SNORM             = 0x00000026,
-       VK_FORMAT_R10G10B10A2_USCALED   = 0x00000027,
-       VK_FORMAT_R10G10B10A2_SSCALED   = 0x00000028,
-       VK_FORMAT_R10G10B10A2_UINT              = 0x00000029,
-       VK_FORMAT_R10G10B10A2_SINT              = 0x0000002A,
-       VK_FORMAT_R16_UNORM                             = 0x0000002B,
-       VK_FORMAT_R16_SNORM                             = 0x0000002C,
-       VK_FORMAT_R16_USCALED                   = 0x0000002D,
-       VK_FORMAT_R16_SSCALED                   = 0x0000002E,
-       VK_FORMAT_R16_UINT                              = 0x0000002F,
-       VK_FORMAT_R16_SINT                              = 0x00000030,
-       VK_FORMAT_R16_SFLOAT                    = 0x00000031,
-       VK_FORMAT_R16G16_UNORM                  = 0x00000032,
-       VK_FORMAT_R16G16_SNORM                  = 0x00000033,
-       VK_FORMAT_R16G16_USCALED                = 0x00000034,
-       VK_FORMAT_R16G16_SSCALED                = 0x00000035,
-       VK_FORMAT_R16G16_UINT                   = 0x00000036,
-       VK_FORMAT_R16G16_SINT                   = 0x00000037,
-       VK_FORMAT_R16G16_SFLOAT                 = 0x00000038,
-       VK_FORMAT_R16G16B16_UNORM               = 0x00000039,
-       VK_FORMAT_R16G16B16_SNORM               = 0x0000003A,
-       VK_FORMAT_R16G16B16_USCALED             = 0x0000003B,
-       VK_FORMAT_R16G16B16_SSCALED             = 0x0000003C,
-       VK_FORMAT_R16G16B16_UINT                = 0x0000003D,
-       VK_FORMAT_R16G16B16_SINT                = 0x0000003E,
-       VK_FORMAT_R16G16B16_SFLOAT              = 0x0000003F,
-       VK_FORMAT_R16G16B16A16_UNORM    = 0x00000040,
-       VK_FORMAT_R16G16B16A16_SNORM    = 0x00000041,
-       VK_FORMAT_R16G16B16A16_USCALED  = 0x00000042,
-       VK_FORMAT_R16G16B16A16_SSCALED  = 0x00000043,
-       VK_FORMAT_R16G16B16A16_UINT             = 0x00000044,
-       VK_FORMAT_R16G16B16A16_SINT             = 0x00000045,
-       VK_FORMAT_R16G16B16A16_SFLOAT   = 0x00000046,
-       VK_FORMAT_R32_UINT                              = 0x00000047,
-       VK_FORMAT_R32_SINT                              = 0x00000048,
-       VK_FORMAT_R32_SFLOAT                    = 0x00000049,
-       VK_FORMAT_R32G32_UINT                   = 0x0000004A,
-       VK_FORMAT_R32G32_SINT                   = 0x0000004B,
-       VK_FORMAT_R32G32_SFLOAT                 = 0x0000004C,
-       VK_FORMAT_R32G32B32_UINT                = 0x0000004D,
-       VK_FORMAT_R32G32B32_SINT                = 0x0000004E,
-       VK_FORMAT_R32G32B32_SFLOAT              = 0x0000004F,
-       VK_FORMAT_R32G32B32A32_UINT             = 0x00000050,
-       VK_FORMAT_R32G32B32A32_SINT             = 0x00000051,
-       VK_FORMAT_R32G32B32A32_SFLOAT   = 0x00000052,
-       VK_FORMAT_R64_SFLOAT                    = 0x00000053,
-       VK_FORMAT_R64G64_SFLOAT                 = 0x00000054,
-       VK_FORMAT_R64G64B64_SFLOAT              = 0x00000055,
-       VK_FORMAT_R64G64B64A64_SFLOAT   = 0x00000056,
-       VK_FORMAT_R11G11B10_UFLOAT              = 0x00000057,
-       VK_FORMAT_R9G9B9E5_UFLOAT               = 0x00000058,
-       VK_FORMAT_D16_UNORM                             = 0x00000059,
-       VK_FORMAT_D24_UNORM                             = 0x0000005A,
-       VK_FORMAT_D32_SFLOAT                    = 0x0000005B,
-       VK_FORMAT_S8_UINT                               = 0x0000005C,
-       VK_FORMAT_D16_UNORM_S8_UINT             = 0x0000005D,
-       VK_FORMAT_D24_UNORM_S8_UINT             = 0x0000005E,
-       VK_FORMAT_D32_SFLOAT_S8_UINT    = 0x0000005F,
-       VK_FORMAT_BC1_RGB_UNORM                 = 0x00000060,
-       VK_FORMAT_BC1_RGB_SRGB                  = 0x00000061,
-       VK_FORMAT_BC1_RGBA_UNORM                = 0x00000062,
-       VK_FORMAT_BC1_RGBA_SRGB                 = 0x00000063,
-       VK_FORMAT_BC2_UNORM                             = 0x00000064,
-       VK_FORMAT_BC2_SRGB                              = 0x00000065,
-       VK_FORMAT_BC3_UNORM                             = 0x00000066,
-       VK_FORMAT_BC3_SRGB                              = 0x00000067,
-       VK_FORMAT_BC4_UNORM                             = 0x00000068,
-       VK_FORMAT_BC4_SNORM                             = 0x00000069,
-       VK_FORMAT_BC5_UNORM                             = 0x0000006A,
-       VK_FORMAT_BC5_SNORM                             = 0x0000006B,
-       VK_FORMAT_BC6H_UFLOAT                   = 0x0000006C,
-       VK_FORMAT_BC6H_SFLOAT                   = 0x0000006D,
-       VK_FORMAT_BC7_UNORM                             = 0x0000006E,
-       VK_FORMAT_BC7_SRGB                              = 0x0000006F,
-       VK_FORMAT_ETC2_R8G8B8_UNORM             = 0x00000070,
-       VK_FORMAT_ETC2_R8G8B8_SRGB              = 0x00000071,
-       VK_FORMAT_ETC2_R8G8B8A1_UNORM   = 0x00000072,
-       VK_FORMAT_ETC2_R8G8B8A1_SRGB    = 0x00000073,
-       VK_FORMAT_ETC2_R8G8B8A8_UNORM   = 0x00000074,
-       VK_FORMAT_ETC2_R8G8B8A8_SRGB    = 0x00000075,
-       VK_FORMAT_EAC_R11_UNORM                 = 0x00000076,
-       VK_FORMAT_EAC_R11_SNORM                 = 0x00000077,
-       VK_FORMAT_EAC_R11G11_UNORM              = 0x00000078,
-       VK_FORMAT_EAC_R11G11_SNORM              = 0x00000079,
-       VK_FORMAT_ASTC_4x4_UNORM                = 0x0000007A,
-       VK_FORMAT_ASTC_4x4_SRGB                 = 0x0000007B,
-       VK_FORMAT_ASTC_5x4_UNORM                = 0x0000007C,
-       VK_FORMAT_ASTC_5x4_SRGB                 = 0x0000007D,
-       VK_FORMAT_ASTC_5x5_UNORM                = 0x0000007E,
-       VK_FORMAT_ASTC_5x5_SRGB                 = 0x0000007F,
-       VK_FORMAT_ASTC_6x5_UNORM                = 0x00000080,
-       VK_FORMAT_ASTC_6x5_SRGB                 = 0x00000081,
-       VK_FORMAT_ASTC_6x6_UNORM                = 0x00000082,
-       VK_FORMAT_ASTC_6x6_SRGB                 = 0x00000083,
-       VK_FORMAT_ASTC_8x5_UNORM                = 0x00000084,
-       VK_FORMAT_ASTC_8x5_SRGB                 = 0x00000085,
-       VK_FORMAT_ASTC_8x6_UNORM                = 0x00000086,
-       VK_FORMAT_ASTC_8x6_SRGB                 = 0x00000087,
-       VK_FORMAT_ASTC_8x8_UNORM                = 0x00000088,
-       VK_FORMAT_ASTC_8x8_SRGB                 = 0x00000089,
-       VK_FORMAT_ASTC_10x5_UNORM               = 0x0000008A,
-       VK_FORMAT_ASTC_10x5_SRGB                = 0x0000008B,
-       VK_FORMAT_ASTC_10x6_UNORM               = 0x0000008C,
-       VK_FORMAT_ASTC_10x6_SRGB                = 0x0000008D,
-       VK_FORMAT_ASTC_10x8_UNORM               = 0x0000008E,
-       VK_FORMAT_ASTC_10x8_SRGB                = 0x0000008F,
-       VK_FORMAT_ASTC_10x10_UNORM              = 0x00000090,
-       VK_FORMAT_ASTC_10x10_SRGB               = 0x00000091,
-       VK_FORMAT_ASTC_12x10_UNORM              = 0x00000092,
-       VK_FORMAT_ASTC_12x10_SRGB               = 0x00000093,
-       VK_FORMAT_ASTC_12x12_UNORM              = 0x00000094,
-       VK_FORMAT_ASTC_12x12_SRGB               = 0x00000095,
-       VK_FORMAT_B4G4R4A4_UNORM                = 0x00000096,
-       VK_FORMAT_B5G5R5A1_UNORM                = 0x00000097,
-       VK_FORMAT_B5G6R5_UNORM                  = 0x00000098,
-       VK_FORMAT_B5G6R5_USCALED                = 0x00000099,
-       VK_FORMAT_B8G8R8_UNORM                  = 0x0000009A,
-       VK_FORMAT_B8G8R8_SNORM                  = 0x0000009B,
-       VK_FORMAT_B8G8R8_USCALED                = 0x0000009C,
-       VK_FORMAT_B8G8R8_SSCALED                = 0x0000009D,
-       VK_FORMAT_B8G8R8_UINT                   = 0x0000009E,
-       VK_FORMAT_B8G8R8_SINT                   = 0x0000009F,
-       VK_FORMAT_B8G8R8_SRGB                   = 0x000000A0,
-       VK_FORMAT_B8G8R8A8_UNORM                = 0x000000A1,
-       VK_FORMAT_B8G8R8A8_SNORM                = 0x000000A2,
-       VK_FORMAT_B8G8R8A8_USCALED              = 0x000000A3,
-       VK_FORMAT_B8G8R8A8_SSCALED              = 0x000000A4,
-       VK_FORMAT_B8G8R8A8_UINT                 = 0x000000A5,
-       VK_FORMAT_B8G8R8A8_SINT                 = 0x000000A6,
-       VK_FORMAT_B8G8R8A8_SRGB                 = 0x000000A7,
-       VK_FORMAT_B10G10R10A2_UNORM             = 0x000000A8,
-       VK_FORMAT_B10G10R10A2_SNORM             = 0x000000A9,
-       VK_FORMAT_B10G10R10A2_USCALED   = 0x000000AA,
-       VK_FORMAT_B10G10R10A2_SSCALED   = 0x000000AB,
-       VK_FORMAT_B10G10R10A2_UINT              = 0x000000AC,
-       VK_FORMAT_B10G10R10A2_SINT              = 0x000000AD,
+       VK_QUEUE_GRAPHICS_BIT           = 0x00000001,
+       VK_QUEUE_COMPUTE_BIT            = 0x00000002,
+       VK_QUEUE_DMA_BIT                        = 0x00000004,
+       VK_QUEUE_SPARSE_MEMMGR_BIT      = 0x00000008,
+       VK_QUEUE_EXTENDED_BIT           = 0x40000000,
 };
+typedef deUint32 VkQueueFlags;
 
-enum VkShaderStage
+enum VkMemoryPropertyFlagBits
 {
-       VK_SHADER_STAGE_VERTEX                  = 0,
-       VK_SHADER_STAGE_TESS_CONTROL    = 1,
-       VK_SHADER_STAGE_TESS_EVALUATION = 2,
-       VK_SHADER_STAGE_GEOMETRY                = 3,
-       VK_SHADER_STAGE_FRAGMENT                = 4,
-       VK_SHADER_STAGE_COMPUTE                 = 5,
+       VK_MEMORY_PROPERTY_DEVICE_ONLY                          = 0,
+       VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT                     = 0x00000001,
+       VK_MEMORY_PROPERTY_HOST_NON_COHERENT_BIT        = 0x00000002,
+       VK_MEMORY_PROPERTY_HOST_UNCACHED_BIT            = 0x00000004,
+       VK_MEMORY_PROPERTY_HOST_WRITE_COMBINED_BIT      = 0x00000008,
+       VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT         = 0x00000010,
 };
+typedef deUint32 VkMemoryPropertyFlags;
 
-enum VkStructureType
+enum VkMemoryHeapFlagBits
 {
-       VK_STRUCTURE_TYPE_APPLICATION_INFO                                      = 0,
-       VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO                            = 1,
-       VK_STRUCTURE_TYPE_MEMORY_ALLOC_INFO                                     = 2,
-       VK_STRUCTURE_TYPE_MEMORY_OPEN_INFO                                      = 3,
-       VK_STRUCTURE_TYPE_PEER_MEMORY_OPEN_INFO                         = 4,
-       VK_STRUCTURE_TYPE_BUFFER_VIEW_ATTACH_INFO                       = 5,
-       VK_STRUCTURE_TYPE_IMAGE_VIEW_ATTACH_INFO                        = 6,
-       VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO                        = 7,
-       VK_STRUCTURE_TYPE_COLOR_ATTACHMENT_VIEW_CREATE_INFO     = 8,
-       VK_STRUCTURE_TYPE_DEPTH_STENCIL_VIEW_CREATE_INFO        = 9,
-       VK_STRUCTURE_TYPE_SHADER_CREATE_INFO                            = 10,
-       VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO          = 11,
-       VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO                           = 12,
-       VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO     = 13,
-       VK_STRUCTURE_TYPE_DYNAMIC_VP_STATE_CREATE_INFO          = 14,
-       VK_STRUCTURE_TYPE_DYNAMIC_RS_STATE_CREATE_INFO          = 15,
-       VK_STRUCTURE_TYPE_DYNAMIC_CB_STATE_CREATE_INFO          = 16,
-       VK_STRUCTURE_TYPE_DYNAMIC_DS_STATE_CREATE_INFO          = 17,
-       VK_STRUCTURE_TYPE_CMD_BUFFER_CREATE_INFO                        = 18,
-       VK_STRUCTURE_TYPE_EVENT_CREATE_INFO                                     = 19,
-       VK_STRUCTURE_TYPE_FENCE_CREATE_INFO                                     = 20,
-       VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO                         = 21,
-       VK_STRUCTURE_TYPE_SEMAPHORE_OPEN_INFO                           = 22,
-       VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO                        = 23,
-       VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO     = 24,
-       VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO         = 25,
-       VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_CREATE_INFO     = 26,
-       VK_STRUCTURE_TYPE_PIPELINE_IA_STATE_CREATE_INFO         = 27,
-       VK_STRUCTURE_TYPE_PIPELINE_TESS_STATE_CREATE_INFO       = 28,
-       VK_STRUCTURE_TYPE_PIPELINE_VP_STATE_CREATE_INFO         = 29,
-       VK_STRUCTURE_TYPE_PIPELINE_RS_STATE_CREATE_INFO         = 30,
-       VK_STRUCTURE_TYPE_PIPELINE_MS_STATE_CREATE_INFO         = 31,
-       VK_STRUCTURE_TYPE_PIPELINE_CB_STATE_CREATE_INFO         = 32,
-       VK_STRUCTURE_TYPE_PIPELINE_DS_STATE_CREATE_INFO         = 33,
-       VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO                                     = 34,
-       VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO                            = 35,
-       VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO                       = 36,
-       VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO                       = 37,
-       VK_STRUCTURE_TYPE_CMD_BUFFER_BEGIN_INFO                         = 38,
-       VK_STRUCTURE_TYPE_CMD_BUFFER_GRAPHICS_BEGIN_INFO        = 39,
-       VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO                       = 40,
-       VK_STRUCTURE_TYPE_LAYER_CREATE_INFO                                     = 41,
-       VK_STRUCTURE_TYPE_MEMORY_BARRIER                                        = 42,
-       VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER                         = 43,
-       VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER                          = 44,
-       VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO           = 45,
-       VK_STRUCTURE_TYPE_UPDATE_SAMPLERS                                       = 46,
-       VK_STRUCTURE_TYPE_UPDATE_SAMPLER_TEXTURES                       = 47,
-       VK_STRUCTURE_TYPE_UPDATE_IMAGES                                         = 48,
-       VK_STRUCTURE_TYPE_UPDATE_BUFFERS                                        = 49,
-       VK_STRUCTURE_TYPE_UPDATE_AS_COPY                                        = 50,
-       VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO                          = 51,
-       VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO           = 52,
-};
-
-enum VkObjectType
-{
-       VK_OBJECT_TYPE_INSTANCE                                 = 0,
-       VK_OBJECT_TYPE_PHYSICAL_DEVICE                  = 1,
-       VK_OBJECT_TYPE_DEVICE                                   = 2,
-       VK_OBJECT_TYPE_QUEUE                                    = 3,
-       VK_OBJECT_TYPE_COMMAND_BUFFER                   = 4,
-       VK_OBJECT_TYPE_DEVICE_MEMORY                    = 5,
-       VK_OBJECT_TYPE_BUFFER                                   = 6,
-       VK_OBJECT_TYPE_BUFFER_VIEW                              = 7,
-       VK_OBJECT_TYPE_IMAGE                                    = 8,
-       VK_OBJECT_TYPE_IMAGE_VIEW                               = 9,
-       VK_OBJECT_TYPE_COLOR_ATTACHMENT_VIEW    = 10,
-       VK_OBJECT_TYPE_DEPTH_STENCIL_VIEW               = 11,
-       VK_OBJECT_TYPE_SHADER                                   = 12,
-       VK_OBJECT_TYPE_PIPELINE                                 = 13,
-       VK_OBJECT_TYPE_PIPELINE_LAYOUT                  = 14,
-       VK_OBJECT_TYPE_SAMPLER                                  = 15,
-       VK_OBJECT_TYPE_DESCRIPTOR_SET                   = 16,
-       VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT    = 17,
-       VK_OBJECT_TYPE_DESCRIPTOR_POOL                  = 18,
-       VK_OBJECT_TYPE_DYNAMIC_VP_STATE                 = 19,
-       VK_OBJECT_TYPE_DYNAMIC_RS_STATE                 = 20,
-       VK_OBJECT_TYPE_DYNAMIC_CB_STATE                 = 21,
-       VK_OBJECT_TYPE_DYNAMIC_DS_STATE                 = 22,
-       VK_OBJECT_TYPE_FENCE                                    = 23,
-       VK_OBJECT_TYPE_SEMAPHORE                                = 24,
-       VK_OBJECT_TYPE_EVENT                                    = 25,
-       VK_OBJECT_TYPE_QUERY_POOL                               = 26,
-       VK_OBJECT_TYPE_FRAMEBUFFER                              = 27,
-       VK_OBJECT_TYPE_RENDER_PASS                              = 28,
+       VK_MEMORY_HEAP_HOST_LOCAL       = 0x00000001,
 };
+typedef deUint32 VkMemoryHeapFlags;
 
-enum VkResult
+enum VkDeviceCreateFlagBits
 {
-       VK_SUCCESS                                                              = 0x0000000,
-       VK_UNSUPPORTED                                                  = 0x0000001,
-       VK_NOT_READY                                                    = 0x0000002,
-       VK_TIMEOUT                                                              = 0x0000003,
-       VK_EVENT_SET                                                    = 0x0000004,
-       VK_EVENT_RESET                                                  = 0x0000005,
-       VK_ERROR_UNKNOWN                                                = -(0x00000001),
-       VK_ERROR_UNAVAILABLE                                    = -(0x00000002),
-       VK_ERROR_INITIALIZATION_FAILED                  = -(0x00000003),
-       VK_ERROR_OUT_OF_HOST_MEMORY                             = -(0x00000004),
-       VK_ERROR_OUT_OF_DEVICE_MEMORY                   = -(0x00000005),
-       VK_ERROR_DEVICE_ALREADY_CREATED                 = -(0x00000006),
-       VK_ERROR_DEVICE_LOST                                    = -(0x00000007),
-       VK_ERROR_INVALID_POINTER                                = -(0x00000008),
-       VK_ERROR_INVALID_VALUE                                  = -(0x00000009),
-       VK_ERROR_INVALID_HANDLE                                 = -(0x0000000A),
-       VK_ERROR_INVALID_ORDINAL                                = -(0x0000000B),
-       VK_ERROR_INVALID_MEMORY_SIZE                    = -(0x0000000C),
-       VK_ERROR_INVALID_EXTENSION                              = -(0x0000000D),
-       VK_ERROR_INVALID_FLAGS                                  = -(0x0000000E),
-       VK_ERROR_INVALID_ALIGNMENT                              = -(0x0000000F),
-       VK_ERROR_INVALID_FORMAT                                 = -(0x00000010),
-       VK_ERROR_INVALID_IMAGE                                  = -(0x00000011),
-       VK_ERROR_INVALID_DESCRIPTOR_SET_DATA    = -(0x00000012),
-       VK_ERROR_INVALID_QUEUE_TYPE                             = -(0x00000013),
-       VK_ERROR_INVALID_OBJECT_TYPE                    = -(0x00000014),
-       VK_ERROR_UNSUPPORTED_SHADER_IL_VERSION  = -(0x00000015),
-       VK_ERROR_BAD_SHADER_CODE                                = -(0x00000016),
-       VK_ERROR_BAD_PIPELINE_DATA                              = -(0x00000017),
-       VK_ERROR_TOO_MANY_MEMORY_REFERENCES             = -(0x00000018),
-       VK_ERROR_NOT_MAPPABLE                                   = -(0x00000019),
-       VK_ERROR_MEMORY_MAP_FAILED                              = -(0x0000001A),
-       VK_ERROR_MEMORY_UNMAP_FAILED                    = -(0x0000001B),
-       VK_ERROR_INCOMPATIBLE_DEVICE                    = -(0x0000001C),
-       VK_ERROR_INCOMPATIBLE_DRIVER                    = -(0x0000001D),
-       VK_ERROR_INCOMPLETE_COMMAND_BUFFER              = -(0x0000001E),
-       VK_ERROR_BUILDING_COMMAND_BUFFER                = -(0x0000001F),
-       VK_ERROR_MEMORY_NOT_BOUND                               = -(0x00000020),
-       VK_ERROR_INCOMPATIBLE_QUEUE                             = -(0x00000021),
-       VK_ERROR_NOT_SHAREABLE                                  = -(0x00000022),
+       VK_DEVICE_CREATE_VALIDATION_BIT = 0x00000001,
 };
+typedef deUint32 VkDeviceCreateFlags;
 
-enum VkDeviceCreateFlagBits
+enum VkSparseImageFormatFlagBits
 {
-       VK_DEVICE_CREATE_VALIDATION_BIT                         = VK_BIT(0),
-       VK_DEVICE_CREATE_MULTI_DEVICE_IQ_MATCH_BIT      = VK_BIT(1),
+       VK_SPARSE_IMAGE_FMT_SINGLE_MIPTAIL_BIT          = 0x00000001,
+       VK_SPARSE_IMAGE_FMT_ALIGNED_MIP_SIZE_BIT        = 0x00000002,
+       VK_SPARSE_IMAGE_FMT_NONSTD_BLOCK_SIZE_BIT       = 0x00000004,
 };
-typedef deUint32 VkDeviceCreateFlags;
+typedef deUint32 VkSparseImageFormatFlags;
 
-enum VkQueueFlagBits
+enum VkSparseMemoryBindFlagBits
 {
-       VK_QUEUE_GRAPHICS_BIT   = VK_BIT(0),
-       VK_QUEUE_COMPUTE_BIT    = VK_BIT(1),
-       VK_QUEUE_DMA_BIT                = VK_BIT(2),
-       VK_QUEUE_MEMMGR_BIT             = VK_BIT(3),
-       VK_QUEUE_EXTENDED_BIT   = VK_BIT(30),
+       VK_SPARSE_MEMORY_BIND_REPLICATE_64KIB_BLOCK_BIT = 0x00000001,
 };
-typedef deUint32 VkQueueFlags;
+typedef deUint32 VkSparseMemoryBindFlags;
 
-enum VkMemoryPropertyFlagBits
+enum VkFenceCreateFlagBits
 {
-       VK_MEMORY_PROPERTY_DEVICE_ONLY                          = 0,
-       VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT                     = VK_BIT(0),
-       VK_MEMORY_PROPERTY_HOST_DEVICE_COHERENT_BIT     = VK_BIT(1),
-       VK_MEMORY_PROPERTY_HOST_UNCACHED_BIT            = VK_BIT(2),
-       VK_MEMORY_PROPERTY_HOST_WRITE_COMBINED_BIT      = VK_BIT(3),
-       VK_MEMORY_PROPERTY_PREFER_HOST_LOCAL            = VK_BIT(4),
-       VK_MEMORY_PROPERTY_SHAREABLE_BIT                        = VK_BIT(5),
+       VK_FENCE_CREATE_SIGNALED_BIT    = 0x00000001,
 };
-typedef deUint32 VkMemoryPropertyFlags;
+typedef deUint32 VkFenceCreateFlags;
 
-enum VkMemoryOutputFlagBits
+enum VkQueryPipelineStatisticFlagBits
 {
-       VK_MEMORY_OUTPUT_CPU_WRITE_BIT                                  = VK_BIT(0),
-       VK_MEMORY_OUTPUT_SHADER_WRITE_BIT                               = VK_BIT(1),
-       VK_MEMORY_OUTPUT_COLOR_ATTACHMENT_BIT                   = VK_BIT(2),
-       VK_MEMORY_OUTPUT_DEPTH_STENCIL_ATTACHMENT_BIT   = VK_BIT(3),
-       VK_MEMORY_OUTPUT_TRANSFER_BIT                                   = VK_BIT(4),
+       VK_QUERY_PIPELINE_STATISTIC_IA_VERTICES_BIT             = 0x00000001,
+       VK_QUERY_PIPELINE_STATISTIC_IA_PRIMITIVES_BIT   = 0x00000002,
+       VK_QUERY_PIPELINE_STATISTIC_VS_INVOCATIONS_BIT  = 0x00000004,
+       VK_QUERY_PIPELINE_STATISTIC_GS_INVOCATIONS_BIT  = 0x00000008,
+       VK_QUERY_PIPELINE_STATISTIC_GS_PRIMITIVES_BIT   = 0x00000010,
+       VK_QUERY_PIPELINE_STATISTIC_C_INVOCATIONS_BIT   = 0x00000020,
+       VK_QUERY_PIPELINE_STATISTIC_C_PRIMITIVES_BIT    = 0x00000040,
+       VK_QUERY_PIPELINE_STATISTIC_FS_INVOCATIONS_BIT  = 0x00000080,
+       VK_QUERY_PIPELINE_STATISTIC_TCS_PATCHES_BIT             = 0x00000100,
+       VK_QUERY_PIPELINE_STATISTIC_TES_INVOCATIONS_BIT = 0x00000200,
+       VK_QUERY_PIPELINE_STATISTIC_CS_INVOCATIONS_BIT  = 0x00000400,
 };
-typedef deUint32 VkMemoryOutputFlags;
+typedef deUint32 VkQueryPipelineStatisticFlags;
 
-enum VkMemoryInputFlagBits
+enum VkQueryResultFlagBits
 {
-       VK_MEMORY_INPUT_CPU_READ_BIT                                    = VK_BIT(0),
-       VK_MEMORY_INPUT_INDIRECT_COMMAND_BIT                    = VK_BIT(1),
-       VK_MEMORY_INPUT_INDEX_FETCH_BIT                                 = VK_BIT(2),
-       VK_MEMORY_INPUT_VERTEX_ATTRIBUTE_FETCH_BIT              = VK_BIT(3),
-       VK_MEMORY_INPUT_UNIFORM_READ_BIT                                = VK_BIT(4),
-       VK_MEMORY_INPUT_SHADER_READ_BIT                                 = VK_BIT(5),
-       VK_MEMORY_INPUT_COLOR_ATTACHMENT_BIT                    = VK_BIT(6),
-       VK_MEMORY_INPUT_DEPTH_STENCIL_ATTACHMENT_BIT    = VK_BIT(7),
-       VK_MEMORY_INPUT_TRANSFER_BIT                                    = VK_BIT(8),
+       VK_QUERY_RESULT_DEFAULT                                 = 0,
+       VK_QUERY_RESULT_64_BIT                                  = 0x00000001,
+       VK_QUERY_RESULT_WAIT_BIT                                = 0x00000002,
+       VK_QUERY_RESULT_WITH_AVAILABILITY_BIT   = 0x00000004,
+       VK_QUERY_RESULT_PARTIAL_BIT                             = 0x00000008,
 };
-typedef deUint32 VkMemoryInputFlags;
+typedef deUint32 VkQueryResultFlags;
 
 enum VkBufferUsageFlagBits
 {
        VK_BUFFER_USAGE_GENERAL                                         = 0,
-       VK_BUFFER_USAGE_TRANSFER_SOURCE_BIT                     = VK_BIT(0),
-       VK_BUFFER_USAGE_TRANSFER_DESTINATION_BIT        = VK_BIT(1),
-       VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT        = VK_BIT(2),
-       VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT        = VK_BIT(3),
-       VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT                      = VK_BIT(4),
-       VK_BUFFER_USAGE_STORAGE_BUFFER_BIT                      = VK_BIT(5),
-       VK_BUFFER_USAGE_INDEX_BUFFER_BIT                        = VK_BIT(6),
-       VK_BUFFER_USAGE_VERTEX_BUFFER_BIT                       = VK_BIT(7),
-       VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT                     = VK_BIT(8),
+       VK_BUFFER_USAGE_TRANSFER_SOURCE_BIT                     = 0x00000001,
+       VK_BUFFER_USAGE_TRANSFER_DESTINATION_BIT        = 0x00000002,
+       VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT        = 0x00000004,
+       VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT        = 0x00000008,
+       VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT                      = 0x00000010,
+       VK_BUFFER_USAGE_STORAGE_BUFFER_BIT                      = 0x00000020,
+       VK_BUFFER_USAGE_INDEX_BUFFER_BIT                        = 0x00000040,
+       VK_BUFFER_USAGE_VERTEX_BUFFER_BIT                       = 0x00000080,
+       VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT                     = 0x00000100,
 };
 typedef deUint32 VkBufferUsageFlags;
 
 enum VkBufferCreateFlagBits
 {
-       VK_BUFFER_CREATE_SHAREABLE_BIT  = VK_BIT(0),
-       VK_BUFFER_CREATE_SPARSE_BIT             = VK_BIT(1),
+       VK_BUFFER_CREATE_SPARSE_BIT                             = 0x00000001,
+       VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT   = 0x00000002,
+       VK_BUFFER_CREATE_SPARSE_ALIASED_BIT             = 0x00000004,
 };
 typedef deUint32 VkBufferCreateFlags;
 
-enum VkShaderStageFlagBits
-{
-       VK_SHADER_STAGE_VERTEX_BIT                      = VK_BIT(0),
-       VK_SHADER_STAGE_TESS_CONTROL_BIT        = VK_BIT(1),
-       VK_SHADER_STAGE_TESS_EVALUATION_BIT     = VK_BIT(2),
-       VK_SHADER_STAGE_GEOMETRY_BIT            = VK_BIT(3),
-       VK_SHADER_STAGE_FRAGMENT_BIT            = VK_BIT(4),
-       VK_SHADER_STAGE_COMPUTE_BIT                     = VK_BIT(5),
-       VK_SHADER_STAGE_ALL                                     = 0x7FFFFFFF,
-};
-typedef deUint32 VkShaderStageFlags;
-
-enum VkImageUsageFlagBits
+enum VkImageCreateFlagBits
 {
-       VK_IMAGE_USAGE_GENERAL                                  = 0,
-       VK_IMAGE_USAGE_TRANSFER_SOURCE_BIT              = VK_BIT(0),
-       VK_IMAGE_USAGE_TRANSFER_DESTINATION_BIT = VK_BIT(1),
-       VK_IMAGE_USAGE_SAMPLED_BIT                              = VK_BIT(2),
-       VK_IMAGE_USAGE_STORAGE_BIT                              = VK_BIT(3),
-       VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT             = VK_BIT(4),
-       VK_IMAGE_USAGE_DEPTH_STENCIL_BIT                = VK_BIT(5),
-       VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT = VK_BIT(6),
+       VK_IMAGE_CREATE_SPARSE_BIT                              = 0x00000001,
+       VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT    = 0x00000002,
+       VK_IMAGE_CREATE_SPARSE_ALIASED_BIT              = 0x00000004,
+       VK_IMAGE_CREATE_INVARIANT_DATA_BIT              = 0x00000008,
+       VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT              = 0x00000010,
+       VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT             = 0x00000020,
 };
-typedef deUint32 VkImageUsageFlags;
+typedef deUint32 VkImageCreateFlags;
 
-enum VkImageCreateFlagBits
+enum VkAttachmentViewCreateFlagBits
 {
-       VK_IMAGE_CREATE_INVARIANT_DATA_BIT      = VK_BIT(0),
-       VK_IMAGE_CREATE_CLONEABLE_BIT           = VK_BIT(1),
-       VK_IMAGE_CREATE_SHAREABLE_BIT           = VK_BIT(2),
-       VK_IMAGE_CREATE_SPARSE_BIT                      = VK_BIT(3),
-       VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT      = VK_BIT(4),
-       VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT     = VK_BIT(5),
+       VK_ATTACHMENT_VIEW_CREATE_READ_ONLY_DEPTH_BIT   = 0x00000001,
+       VK_ATTACHMENT_VIEW_CREATE_READ_ONLY_STENCIL_BIT = 0x00000002,
 };
-typedef deUint32 VkImageCreateFlags;
+typedef deUint32 VkAttachmentViewCreateFlags;
 
-enum VkDepthStencilViewCreateFlagBits
+enum VkChannelFlagBits
 {
-       VK_DEPTH_STENCIL_VIEW_CREATE_READ_ONLY_DEPTH_BIT        = VK_BIT(0),
-       VK_DEPTH_STENCIL_VIEW_CREATE_READ_ONLY_STENCIL_BIT      = VK_BIT(1),
+       VK_CHANNEL_R_BIT        = 0x00000001,
+       VK_CHANNEL_G_BIT        = 0x00000002,
+       VK_CHANNEL_B_BIT        = 0x00000004,
+       VK_CHANNEL_A_BIT        = 0x00000008,
 };
-typedef deUint32 VkDepthStencilViewCreateFlags;
+typedef deUint32 VkChannelFlags;
 
 enum VkPipelineCreateFlagBits
 {
-       VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT     = VK_BIT(0),
-       VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT        = VK_BIT(1),
+       VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT     = 0x00000001,
+       VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT        = 0x00000002,
+       VK_PIPELINE_CREATE_DERIVATIVE_BIT                       = 0x00000004,
 };
 typedef deUint32 VkPipelineCreateFlags;
 
-enum VkChannelFlagBits
+enum VkShaderStageFlagBits
 {
-       VK_CHANNEL_R_BIT        = VK_BIT(0),
-       VK_CHANNEL_G_BIT        = VK_BIT(1),
-       VK_CHANNEL_B_BIT        = VK_BIT(2),
-       VK_CHANNEL_A_BIT        = VK_BIT(3),
+       VK_SHADER_STAGE_VERTEX_BIT                      = 0x00000001,
+       VK_SHADER_STAGE_TESS_CONTROL_BIT        = 0x00000002,
+       VK_SHADER_STAGE_TESS_EVALUATION_BIT     = 0x00000004,
+       VK_SHADER_STAGE_GEOMETRY_BIT            = 0x00000008,
+       VK_SHADER_STAGE_FRAGMENT_BIT            = 0x00000010,
+       VK_SHADER_STAGE_COMPUTE_BIT                     = 0x00000020,
+       VK_SHADER_STAGE_ALL                                     = 0x7FFFFFFF,
 };
-typedef deUint32 VkChannelFlags;
+typedef deUint32 VkShaderStageFlags;
 
-enum VkFenceCreateFlagBits
+enum VkSubpassDescriptionFlagBits
 {
-       VK_FENCE_CREATE_SIGNALED_BIT    = VK_BIT(0),
+       VK_SUBPASS_DESCRIPTION_NO_OVERDRAW_BIT  = 0x00000001,
 };
-typedef deUint32 VkFenceCreateFlags;
+typedef deUint32 VkSubpassDescriptionFlags;
 
-enum VkSemaphoreCreateFlagBits
+enum VkPipelineStageFlagBits
 {
-       VK_SEMAPHORE_CREATE_SHAREABLE_BIT       = VK_BIT(0),
+       VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT                               = 0x00000001,
+       VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT                             = 0x00000002,
+       VK_PIPELINE_STAGE_VERTEX_INPUT_BIT                              = 0x00000004,
+       VK_PIPELINE_STAGE_VERTEX_SHADER_BIT                             = 0x00000008,
+       VK_PIPELINE_STAGE_TESS_CONTROL_SHADER_BIT               = 0x00000010,
+       VK_PIPELINE_STAGE_TESS_EVALUATION_SHADER_BIT    = 0x00000020,
+       VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT                   = 0x00000040,
+       VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT                   = 0x00000080,
+       VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT              = 0x00000100,
+       VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT               = 0x00000200,
+       VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT   = 0x00000400,
+       VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT                    = 0x00000800,
+       VK_PIPELINE_STAGE_TRANSFER_BIT                                  = 0x00001000,
+       VK_PIPELINE_STAGE_TRANSITION_BIT                                = 0x00002000,
+       VK_PIPELINE_STAGE_HOST_BIT                                              = 0x00004000,
+       VK_PIPELINE_STAGE_ALL_GRAPHICS                                  = 0x000007FF,
+       VK_PIPELINE_STAGE_ALL_GPU_COMMANDS                              = 0x00003FFF,
 };
-typedef deUint32 VkSemaphoreCreateFlags;
+typedef deUint32 VkPipelineStageFlags;
 
-enum VkFormatFeatureFlagBits
+enum VkMemoryOutputFlagBits
 {
-       VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT                                     = VK_BIT(0),
-       VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT                                     = VK_BIT(1),
-       VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT                      = VK_BIT(2),
-       VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT                      = VK_BIT(3),
-       VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT                      = VK_BIT(4),
-       VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT       = VK_BIT(5),
-       VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT                                     = VK_BIT(6),
-       VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT                          = VK_BIT(7),
-       VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT            = VK_BIT(8),
-       VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT          = VK_BIT(9),
-       VK_FORMAT_FEATURE_CONVERSION_BIT                                        = VK_BIT(10),
+       VK_MEMORY_OUTPUT_HOST_WRITE_BIT                                 = 0x00000001,
+       VK_MEMORY_OUTPUT_SHADER_WRITE_BIT                               = 0x00000002,
+       VK_MEMORY_OUTPUT_COLOR_ATTACHMENT_BIT                   = 0x00000004,
+       VK_MEMORY_OUTPUT_DEPTH_STENCIL_ATTACHMENT_BIT   = 0x00000008,
+       VK_MEMORY_OUTPUT_TRANSFER_BIT                                   = 0x00000010,
 };
-typedef deUint32 VkFormatFeatureFlags;
+typedef deUint32 VkMemoryOutputFlags;
 
-enum VkQueryControlFlagBits
+enum VkMemoryInputFlagBits
 {
-       VK_QUERY_CONTROL_CONSERVATIVE_BIT       = VK_BIT(0),
+       VK_MEMORY_INPUT_HOST_READ_BIT                                   = 0x00000001,
+       VK_MEMORY_INPUT_INDIRECT_COMMAND_BIT                    = 0x00000002,
+       VK_MEMORY_INPUT_INDEX_FETCH_BIT                                 = 0x00000004,
+       VK_MEMORY_INPUT_VERTEX_ATTRIBUTE_FETCH_BIT              = 0x00000008,
+       VK_MEMORY_INPUT_UNIFORM_READ_BIT                                = 0x00000010,
+       VK_MEMORY_INPUT_SHADER_READ_BIT                                 = 0x00000020,
+       VK_MEMORY_INPUT_COLOR_ATTACHMENT_BIT                    = 0x00000040,
+       VK_MEMORY_INPUT_DEPTH_STENCIL_ATTACHMENT_BIT    = 0x00000080,
+       VK_MEMORY_INPUT_INPUT_ATTACHMENT_BIT                    = 0x00000100,
+       VK_MEMORY_INPUT_TRANSFER_BIT                                    = 0x00000200,
 };
-typedef deUint32 VkQueryControlFlags;
+typedef deUint32 VkMemoryInputFlags;
 
-enum VkQueryResultFlagBits
+enum VkCmdPoolCreateFlagBits
 {
-       VK_QUERY_RESULT_32_BIT                                  = 0,
-       VK_QUERY_RESULT_64_BIT                                  = VK_BIT(0),
-       VK_QUERY_RESULT_NO_WAIT_BIT                             = 0,
-       VK_QUERY_RESULT_WAIT_BIT                                = VK_BIT(1),
-       VK_QUERY_RESULT_WITH_AVAILABILITY_BIT   = VK_BIT(2),
-       VK_QUERY_RESULT_PARTIAL_BIT                             = VK_BIT(3),
+       VK_CMD_POOL_CREATE_TRANSIENT_BIT                        = 0x00000001,
+       VK_CMD_POOL_CREATE_RESET_COMMAND_BUFFER_BIT     = 0x00000002,
 };
-typedef deUint32 VkQueryResultFlags;
+typedef deUint32 VkCmdPoolCreateFlags;
 
-enum VkPhysicalDeviceCompatibilityFlagBits
+enum VkCmdPoolResetFlagBits
 {
-       VK_PHYSICAL_DEVICE_COMPATIBILITY_FEATURES_BIT                           = VK_BIT(0),
-       VK_PHYSICAL_DEVICE_COMPATIBILITY_IQ_MATCH_BIT                           = VK_BIT(1),
-       VK_PHYSICAL_DEVICE_COMPATIBILITY_PEER_TRANSFER_BIT                      = VK_BIT(2),
-       VK_PHYSICAL_DEVICE_COMPATIBILITY_SHARED_MEMORY_BIT                      = VK_BIT(3),
-       VK_PHYSICAL_DEVICE_COMPATIBILITY_SHARED_SYNC_BIT                        = VK_BIT(4),
-       VK_PHYSICAL_DEVICE_COMPATIBILITY_SHARED_DEVICE0_DISPLAY_BIT     = VK_BIT(5),
-       VK_PHYSICAL_DEVICE_COMPATIBILITY_SHARED_DEVICE1_DISPLAY_BIT     = VK_BIT(6),
+       VK_CMD_POOL_RESET_RELEASE_RESOURCES     = 0x00000001,
 };
-typedef deUint32 VkPhysicalDeviceCompatibilityFlags;
+typedef deUint32 VkCmdPoolResetFlags;
 
 enum VkCmdBufferOptimizeFlagBits
 {
-       VK_CMD_BUFFER_OPTIMIZE_SMALL_BATCH_BIT                          = VK_BIT(0),
-       VK_CMD_BUFFER_OPTIMIZE_PIPELINE_SWITCH_BIT                      = VK_BIT(1),
-       VK_CMD_BUFFER_OPTIMIZE_ONE_TIME_SUBMIT_BIT                      = VK_BIT(2),
-       VK_CMD_BUFFER_OPTIMIZE_DESCRIPTOR_SET_SWITCH_BIT        = VK_BIT(3),
+       VK_CMD_BUFFER_OPTIMIZE_SMALL_BATCH_BIT                          = 0x00000001,
+       VK_CMD_BUFFER_OPTIMIZE_PIPELINE_SWITCH_BIT                      = 0x00000002,
+       VK_CMD_BUFFER_OPTIMIZE_ONE_TIME_SUBMIT_BIT                      = 0x00000004,
+       VK_CMD_BUFFER_OPTIMIZE_DESCRIPTOR_SET_SWITCH_BIT        = 0x00000008,
+       VK_CMD_BUFFER_OPTIMIZE_NO_SIMULTANEOUS_USE_BIT          = 0x00000010,
 };
 typedef deUint32 VkCmdBufferOptimizeFlags;
 
-enum VkQueryPipelineStatisticFlagBits
+enum VkCmdBufferResetFlagBits
 {
-       VK_QUERY_PIPELINE_STATISTIC_IA_VERTICES_BIT             = VK_BIT(0),
-       VK_QUERY_PIPELINE_STATISTIC_IA_PRIMITIVES_BIT   = VK_BIT(1),
-       VK_QUERY_PIPELINE_STATISTIC_VS_INVOCATIONS_BIT  = VK_BIT(2),
-       VK_QUERY_PIPELINE_STATISTIC_GS_INVOCATIONS_BIT  = VK_BIT(3),
-       VK_QUERY_PIPELINE_STATISTIC_GS_PRIMITIVES_BIT   = VK_BIT(4),
-       VK_QUERY_PIPELINE_STATISTIC_C_INVOCATIONS_BIT   = VK_BIT(5),
-       VK_QUERY_PIPELINE_STATISTIC_C_PRIMITIVES_BIT    = VK_BIT(6),
-       VK_QUERY_PIPELINE_STATISTIC_FS_INVOCATIONS_BIT  = VK_BIT(7),
-       VK_QUERY_PIPELINE_STATISTIC_TCS_PATCHES_BIT             = VK_BIT(8),
-       VK_QUERY_PIPELINE_STATISTIC_TES_INVOCATIONS_BIT = VK_BIT(9),
-       VK_QUERY_PIPELINE_STATISTIC_CS_INVOCATIONS_BIT  = VK_BIT(10),
+       VK_CMD_BUFFER_RESET_RELEASE_RESOURCES   = 0x00000001,
 };
-typedef deUint32 VkQueryPipelineStatisticFlags;
+typedef deUint32 VkCmdBufferResetFlags;
+
+enum VkImageAspectFlagBits
+{
+       VK_IMAGE_ASPECT_COLOR_BIT               = 0x00000001,
+       VK_IMAGE_ASPECT_DEPTH_BIT               = 0x00000002,
+       VK_IMAGE_ASPECT_STENCIL_BIT             = 0x00000004,
+       VK_IMAGE_ASPECT_METADATA_BIT    = 0x00000008,
+};
+typedef deUint32 VkImageAspectFlags;
+
+enum VkQueryControlFlagBits
+{
+       VK_QUERY_CONTROL_CONSERVATIVE_BIT       = 0x00000001,
+};
+typedef deUint32 VkQueryControlFlags;
 
-VK_DEFINE_HANDLE_TYPE_TRAITS(VkObject);
-VK_DEFINE_HANDLE_TYPE_TRAITS(VkInstance);
-VK_DEFINE_HANDLE_TYPE_TRAITS(VkPhysicalDevice);
-VK_DEFINE_HANDLE_TYPE_TRAITS(VkDevice);
-VK_DEFINE_HANDLE_TYPE_TRAITS(VkQueue);
-VK_DEFINE_HANDLE_TYPE_TRAITS(VkCmdBuffer);
-VK_DEFINE_HANDLE_TYPE_TRAITS(VkNonDispatchable);
-VK_DEFINE_HANDLE_TYPE_TRAITS(VkDeviceMemory);
-VK_DEFINE_HANDLE_TYPE_TRAITS(VkBuffer);
-VK_DEFINE_HANDLE_TYPE_TRAITS(VkBufferView);
-VK_DEFINE_HANDLE_TYPE_TRAITS(VkImage);
-VK_DEFINE_HANDLE_TYPE_TRAITS(VkImageView);
-VK_DEFINE_HANDLE_TYPE_TRAITS(VkColorAttachmentView);
-VK_DEFINE_HANDLE_TYPE_TRAITS(VkDepthStencilView);
-VK_DEFINE_HANDLE_TYPE_TRAITS(VkShader);
-VK_DEFINE_HANDLE_TYPE_TRAITS(VkPipeline);
-VK_DEFINE_HANDLE_TYPE_TRAITS(VkPipelineLayout);
-VK_DEFINE_HANDLE_TYPE_TRAITS(VkSampler);
-VK_DEFINE_HANDLE_TYPE_TRAITS(VkDescriptorSet);
-VK_DEFINE_HANDLE_TYPE_TRAITS(VkDescriptorSetLayout);
-VK_DEFINE_HANDLE_TYPE_TRAITS(VkDescriptorPool);
-VK_DEFINE_HANDLE_TYPE_TRAITS(VkDynamicStateObject);
-VK_DEFINE_HANDLE_TYPE_TRAITS(VkDynamicVpState);
-VK_DEFINE_HANDLE_TYPE_TRAITS(VkDynamicRsState);
-VK_DEFINE_HANDLE_TYPE_TRAITS(VkDynamicCbState);
-VK_DEFINE_HANDLE_TYPE_TRAITS(VkDynamicDsState);
-VK_DEFINE_HANDLE_TYPE_TRAITS(VkFence);
-VK_DEFINE_HANDLE_TYPE_TRAITS(VkSemaphore);
-VK_DEFINE_HANDLE_TYPE_TRAITS(VkEvent);
-VK_DEFINE_HANDLE_TYPE_TRAITS(VkQueryPool);
-VK_DEFINE_HANDLE_TYPE_TRAITS(VkFramebuffer);
-VK_DEFINE_HANDLE_TYPE_TRAITS(VkRenderPass);
index e4d7849..e061200 100644 (file)
 /* WARNING: This is auto-generated file. Do not modify, since changes will
  * be lost! Modify the generating script instead.
  */
-virtual VkResult       getPhysicalDeviceInfo                           (VkPhysicalDevice physicalDevice, VkPhysicalDeviceInfoType infoType, deUintptr* pDataSize, void* pData) const;
-virtual VkResult       createDevice                                            (VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo* pCreateInfo, VkDevice* pDevice) const;
-virtual VkResult       destroyDevice                                           (VkDevice device) const;
-virtual VkResult       getGlobalExtensionInfo                          (VkExtensionInfoType infoType, deUint32 extensionIndex, deUintptr* pDataSize, void* pData) const;
-virtual VkResult       getPhysicalDeviceExtensionInfo          (VkPhysicalDevice physicalDevice, VkExtensionInfoType infoType, deUint32 extensionIndex, deUintptr* pDataSize, void* pData) const;
-virtual VkResult       enumerateLayers                                         (VkPhysicalDevice physicalDevice, deUintptr maxStringSize, deUintptr* pLayerCount, char* const* pOutLayers, void* pReserved) const;
-virtual VkResult       getDeviceQueue                                          (VkDevice device, deUint32 queueNodeIndex, deUint32 queueIndex, VkQueue* pQueue) const;
-virtual VkResult       queueSubmit                                                     (VkQueue queue, deUint32 cmdBufferCount, const VkCmdBuffer* pCmdBuffers, VkFence fence) const;
-virtual VkResult       queueAddMemReferences                           (VkQueue queue, deUint32 count, const VkDeviceMemory* pMems) const;
-virtual VkResult       queueRemoveMemReferences                        (VkQueue queue, deUint32 count, const VkDeviceMemory* pMems) const;
-virtual VkResult       queueWaitIdle                                           (VkQueue queue) const;
-virtual VkResult       deviceWaitIdle                                          (VkDevice device) const;
-virtual VkResult       allocMemory                                                     (VkDevice device, const VkMemoryAllocInfo* pAllocInfo, VkDeviceMemory* pMem) const;
-virtual VkResult       freeMemory                                                      (VkDevice device, VkDeviceMemory mem) const;
-virtual VkResult       setMemoryPriority                                       (VkDevice device, VkDeviceMemory mem, VkMemoryPriority priority) const;
-virtual VkResult       mapMemory                                                       (VkDevice device, VkDeviceMemory mem, VkDeviceSize offset, VkDeviceSize size, VkMemoryMapFlags flags, void** ppData) const;
-virtual VkResult       unmapMemory                                                     (VkDevice device, VkDeviceMemory mem) const;
-virtual VkResult       flushMappedMemory                                       (VkDevice device, VkDeviceMemory mem, VkDeviceSize offset, VkDeviceSize size) const;
-virtual VkResult       pinSystemMemory                                         (VkDevice device, const void* pSysMem, deUintptr memSize, VkDeviceMemory* pMem) const;
-virtual VkResult       getMultiDeviceCompatibility                     (VkPhysicalDevice physicalDevice0, VkPhysicalDevice physicalDevice1, VkPhysicalDeviceCompatibilityInfo* pInfo) const;
-virtual VkResult       openSharedMemory                                        (VkDevice device, const VkMemoryOpenInfo* pOpenInfo, VkDeviceMemory* pMem) const;
-virtual VkResult       openSharedSemaphore                                     (VkDevice device, const VkSemaphoreOpenInfo* pOpenInfo, VkSemaphore* pSemaphore) const;
-virtual VkResult       openPeerMemory                                          (VkDevice device, const VkPeerMemoryOpenInfo* pOpenInfo, VkDeviceMemory* pMem) const;
-virtual VkResult       openPeerImage                                           (VkDevice device, const VkPeerImageOpenInfo* pOpenInfo, VkImage* pImage, VkDeviceMemory* pMem) const;
-virtual VkResult       destroyObject                                           (VkDevice device, VkObjectType objType, VkObject object) const;
-virtual VkResult       getObjectInfo                                           (VkDevice device, VkObjectType objType, VkObject object, VkObjectInfoType infoType, deUintptr* pDataSize, void* pData) const;
-virtual VkResult       queueBindObjectMemory                           (VkQueue queue, VkObjectType objType, VkObject object, deUint32 allocationIdx, VkDeviceMemory mem, VkDeviceSize memOffset) const;
-virtual VkResult       queueBindObjectMemoryRange                      (VkQueue queue, VkObjectType objType, VkObject object, deUint32 allocationIdx, VkDeviceSize rangeOffset, VkDeviceSize rangeSize, VkDeviceMemory mem, VkDeviceSize memOffset) const;
-virtual VkResult       queueBindImageMemoryRange                       (VkQueue queue, VkImage image, deUint32 allocationIdx, const VkImageMemoryBindInfo* pBindInfo, VkDeviceMemory mem, VkDeviceSize memOffset) const;
-virtual VkResult       createFence                                                     (VkDevice device, const VkFenceCreateInfo* pCreateInfo, VkFence* pFence) const;
-virtual VkResult       resetFences                                                     (VkDevice device, deUint32 fenceCount, VkFence* pFences) const;
-virtual VkResult       getFenceStatus                                          (VkDevice device, VkFence fence) const;
-virtual VkResult       waitForFences                                           (VkDevice device, deUint32 fenceCount, const VkFence* pFences, deUint32 waitAll, deUint64 timeout) const;
-virtual VkResult       createSemaphore                                         (VkDevice device, const VkSemaphoreCreateInfo* pCreateInfo, VkSemaphore* pSemaphore) const;
-virtual VkResult       queueSignalSemaphore                            (VkQueue queue, VkSemaphore semaphore) const;
-virtual VkResult       queueWaitSemaphore                                      (VkQueue queue, VkSemaphore semaphore) const;
-virtual VkResult       createEvent                                                     (VkDevice device, const VkEventCreateInfo* pCreateInfo, VkEvent* pEvent) const;
-virtual VkResult       getEventStatus                                          (VkDevice device, VkEvent event) const;
-virtual VkResult       setEvent                                                        (VkDevice device, VkEvent event) const;
-virtual VkResult       resetEvent                                                      (VkDevice device, VkEvent event) const;
-virtual VkResult       createQueryPool                                         (VkDevice device, const VkQueryPoolCreateInfo* pCreateInfo, VkQueryPool* pQueryPool) const;
-virtual VkResult       getQueryPoolResults                                     (VkDevice device, VkQueryPool queryPool, deUint32 startQuery, deUint32 queryCount, deUintptr* pDataSize, void* pData, VkQueryResultFlags flags) const;
-virtual VkResult       getFormatInfo                                           (VkDevice device, VkFormat format, VkFormatInfoType infoType, deUintptr* pDataSize, void* pData) const;
-virtual VkResult       createBuffer                                            (VkDevice device, const VkBufferCreateInfo* pCreateInfo, VkBuffer* pBuffer) const;
-virtual VkResult       createBufferView                                        (VkDevice device, const VkBufferViewCreateInfo* pCreateInfo, VkBufferView* pView) const;
-virtual VkResult       createImage                                                     (VkDevice device, const VkImageCreateInfo* pCreateInfo, VkImage* pImage) const;
-virtual VkResult       getImageSubresourceInfo                         (VkDevice device, VkImage image, const VkImageSubresource* pSubresource, VkSubresourceInfoType infoType, deUintptr* pDataSize, void* pData) const;
-virtual VkResult       createImageView                                         (VkDevice device, const VkImageViewCreateInfo* pCreateInfo, VkImageView* pView) const;
-virtual VkResult       createColorAttachmentView                       (VkDevice device, const VkColorAttachmentViewCreateInfo* pCreateInfo, VkColorAttachmentView* pView) const;
-virtual VkResult       createDepthStencilView                          (VkDevice device, const VkDepthStencilViewCreateInfo* pCreateInfo, VkDepthStencilView* pView) const;
-virtual VkResult       createShader                                            (VkDevice device, const VkShaderCreateInfo* pCreateInfo, VkShader* pShader) const;
-virtual VkResult       createGraphicsPipeline                          (VkDevice device, const VkGraphicsPipelineCreateInfo* pCreateInfo, VkPipeline* pPipeline) const;
-virtual VkResult       createGraphicsPipelineDerivative        (VkDevice device, const VkGraphicsPipelineCreateInfo* pCreateInfo, VkPipeline basePipeline, VkPipeline* pPipeline) const;
-virtual VkResult       createComputePipeline                           (VkDevice device, const VkComputePipelineCreateInfo* pCreateInfo, VkPipeline* pPipeline) const;
-virtual VkResult       storePipeline                                           (VkDevice device, VkPipeline pipeline, deUintptr* pDataSize, void* pData) const;
-virtual VkResult       loadPipeline                                            (VkDevice device, deUintptr dataSize, const void* pData, VkPipeline* pPipeline) const;
-virtual VkResult       loadPipelineDerivative                          (VkDevice device, deUintptr dataSize, const void* pData, VkPipeline basePipeline, VkPipeline* pPipeline) const;
-virtual VkResult       createPipelineLayout                            (VkDevice device, const VkPipelineLayoutCreateInfo* pCreateInfo, VkPipelineLayout* pPipelineLayout) const;
-virtual VkResult       createSampler                                           (VkDevice device, const VkSamplerCreateInfo* pCreateInfo, VkSampler* pSampler) const;
-virtual VkResult       createDescriptorSetLayout                       (VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, VkDescriptorSetLayout* pSetLayout) const;
-virtual VkResult       beginDescriptorPoolUpdate                       (VkDevice device, VkDescriptorUpdateMode updateMode) const;
-virtual VkResult       endDescriptorPoolUpdate                         (VkDevice device, VkCmdBuffer cmd) const;
-virtual VkResult       createDescriptorPool                            (VkDevice device, VkDescriptorPoolUsage poolUsage, deUint32 maxSets, const VkDescriptorPoolCreateInfo* pCreateInfo, VkDescriptorPool* pDescriptorPool) const;
-virtual VkResult       resetDescriptorPool                                     (VkDevice device, VkDescriptorPool descriptorPool) const;
-virtual VkResult       allocDescriptorSets                                     (VkDevice device, VkDescriptorPool descriptorPool, VkDescriptorSetUsage setUsage, deUint32 count, const VkDescriptorSetLayout* pSetLayouts, VkDescriptorSet* pDescriptorSets, deUint32* pCount) const;
-virtual void           clearDescriptorSets                                     (VkDevice device, VkDescriptorPool descriptorPool, deUint32 count, const VkDescriptorSet* pDescriptorSets) const;
-virtual void           updateDescriptors                                       (VkDevice device, VkDescriptorSet descriptorSet, deUint32 updateCount, const void** ppUpdateArray) const;
-virtual VkResult       createDynamicViewportState                      (VkDevice device, const VkDynamicVpStateCreateInfo* pCreateInfo, VkDynamicVpState* pState) const;
-virtual VkResult       createDynamicRasterState                        (VkDevice device, const VkDynamicRsStateCreateInfo* pCreateInfo, VkDynamicRsState* pState) const;
-virtual VkResult       createDynamicColorBlendState            (VkDevice device, const VkDynamicCbStateCreateInfo* pCreateInfo, VkDynamicCbState* pState) const;
-virtual VkResult       createDynamicDepthStencilState          (VkDevice device, const VkDynamicDsStateCreateInfo* pCreateInfo, VkDynamicDsState* pState) const;
-virtual VkResult       createCommandBuffer                                     (VkDevice device, const VkCmdBufferCreateInfo* pCreateInfo, VkCmdBuffer* pCmdBuffer) const;
-virtual VkResult       beginCommandBuffer                                      (VkCmdBuffer cmdBuffer, const VkCmdBufferBeginInfo* pBeginInfo) const;
-virtual VkResult       endCommandBuffer                                        (VkCmdBuffer cmdBuffer) const;
-virtual VkResult       resetCommandBuffer                                      (VkCmdBuffer cmdBuffer) const;
-virtual void           cmdBindPipeline                                         (VkCmdBuffer cmdBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline) const;
-virtual void           cmdBindDynamicStateObject                       (VkCmdBuffer cmdBuffer, VkStateBindPoint stateBindPoint, VkDynamicStateObject dynamicState) const;
-virtual void           cmdBindDescriptorSets                           (VkCmdBuffer cmdBuffer, VkPipelineBindPoint pipelineBindPoint, deUint32 firstSet, deUint32 setCount, const VkDescriptorSet* pDescriptorSets, deUint32 dynamicOffsetCount, const deUint32* pDynamicOffsets) const;
-virtual void           cmdBindIndexBuffer                                      (VkCmdBuffer cmdBuffer, VkBuffer buffer, VkDeviceSize offset, VkIndexType indexType) const;
-virtual void           cmdBindVertexBuffers                            (VkCmdBuffer cmdBuffer, deUint32 startBinding, deUint32 bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets) const;
-virtual void           cmdDraw                                                         (VkCmdBuffer cmdBuffer, deUint32 firstVertex, deUint32 vertexCount, deUint32 firstInstance, deUint32 instanceCount) const;
-virtual void           cmdDrawIndexed                                          (VkCmdBuffer cmdBuffer, deUint32 firstIndex, deUint32 indexCount, deInt32 vertexOffset, deUint32 firstInstance, deUint32 instanceCount) const;
-virtual void           cmdDrawIndirect                                         (VkCmdBuffer cmdBuffer, VkBuffer buffer, VkDeviceSize offset, deUint32 count, deUint32 stride) const;
-virtual void           cmdDrawIndexedIndirect                          (VkCmdBuffer cmdBuffer, VkBuffer buffer, VkDeviceSize offset, deUint32 count, deUint32 stride) const;
-virtual void           cmdDispatch                                                     (VkCmdBuffer cmdBuffer, deUint32 x, deUint32 y, deUint32 z) const;
-virtual void           cmdDispatchIndirect                                     (VkCmdBuffer cmdBuffer, VkBuffer buffer, VkDeviceSize offset) const;
-virtual void           cmdCopyBuffer                                           (VkCmdBuffer cmdBuffer, VkBuffer srcBuffer, VkBuffer destBuffer, deUint32 regionCount, const VkBufferCopy* pRegions) const;
-virtual void           cmdCopyImage                                            (VkCmdBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage destImage, VkImageLayout destImageLayout, deUint32 regionCount, const VkImageCopy* pRegions) const;
-virtual void           cmdBlitImage                                            (VkCmdBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage destImage, VkImageLayout destImageLayout, deUint32 regionCount, const VkImageBlit* pRegions) const;
-virtual void           cmdCopyBufferToImage                            (VkCmdBuffer cmdBuffer, VkBuffer srcBuffer, VkImage destImage, VkImageLayout destImageLayout, deUint32 regionCount, const VkBufferImageCopy* pRegions) const;
-virtual void           cmdCopyImageToBuffer                            (VkCmdBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkBuffer destBuffer, deUint32 regionCount, const VkBufferImageCopy* pRegions) const;
-virtual void           cmdCloneImageData                                       (VkCmdBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage destImage, VkImageLayout destImageLayout) const;
-virtual void           cmdUpdateBuffer                                         (VkCmdBuffer cmdBuffer, VkBuffer destBuffer, VkDeviceSize destOffset, VkDeviceSize dataSize, const deUint32* pData) const;
-virtual void           cmdFillBuffer                                           (VkCmdBuffer cmdBuffer, VkBuffer destBuffer, VkDeviceSize destOffset, VkDeviceSize fillSize, deUint32 data) const;
-virtual void           cmdClearColorImage                                      (VkCmdBuffer cmdBuffer, VkImage image, VkImageLayout imageLayout, VkClearColor color, deUint32 rangeCount, const VkImageSubresourceRange* pRanges) const;
-virtual void           cmdClearDepthStencil                            (VkCmdBuffer cmdBuffer, VkImage image, VkImageLayout imageLayout, float depth, deUint32 stencil, deUint32 rangeCount, const VkImageSubresourceRange* pRanges) const;
-virtual void           cmdResolveImage                                         (VkCmdBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage destImage, VkImageLayout destImageLayout, deUint32 regionCount, const VkImageResolve* pRegions) const;
-virtual void           cmdSetEvent                                                     (VkCmdBuffer cmdBuffer, VkEvent event, VkPipeEvent pipeEvent) const;
-virtual void           cmdResetEvent                                           (VkCmdBuffer cmdBuffer, VkEvent event, VkPipeEvent pipeEvent) const;
-virtual void           cmdWaitEvents                                           (VkCmdBuffer cmdBuffer, VkWaitEvent waitEvent, deUint32 eventCount, const VkEvent* pEvents, deUint32 memBarrierCount, const void** ppMemBarriers) const;
-virtual void           cmdPipelineBarrier                                      (VkCmdBuffer cmdBuffer, VkWaitEvent waitEvent, deUint32 pipeEventCount, const VkPipeEvent* pPipeEvents, deUint32 memBarrierCount, const void** ppMemBarriers) const;
-virtual void           cmdBeginQuery                                           (VkCmdBuffer cmdBuffer, VkQueryPool queryPool, deUint32 slot, VkQueryControlFlags flags) const;
-virtual void           cmdEndQuery                                                     (VkCmdBuffer cmdBuffer, VkQueryPool queryPool, deUint32 slot) const;
-virtual void           cmdResetQueryPool                                       (VkCmdBuffer cmdBuffer, VkQueryPool queryPool, deUint32 startQuery, deUint32 queryCount) const;
-virtual void           cmdWriteTimestamp                                       (VkCmdBuffer cmdBuffer, VkTimestampType timestampType, VkBuffer destBuffer, VkDeviceSize destOffset) const;
-virtual void           cmdCopyQueryPoolResults                         (VkCmdBuffer cmdBuffer, VkQueryPool queryPool, deUint32 startQuery, deUint32 queryCount, VkBuffer destBuffer, VkDeviceSize destOffset, VkDeviceSize destStride, VkQueryResultFlags flags) const;
-virtual void           cmdInitAtomicCounters                           (VkCmdBuffer cmdBuffer, VkPipelineBindPoint pipelineBindPoint, deUint32 startCounter, deUint32 counterCount, const deUint32* pData) const;
-virtual void           cmdLoadAtomicCounters                           (VkCmdBuffer cmdBuffer, VkPipelineBindPoint pipelineBindPoint, deUint32 startCounter, deUint32 counterCount, VkBuffer srcBuffer, VkDeviceSize srcOffset) const;
-virtual void           cmdSaveAtomicCounters                           (VkCmdBuffer cmdBuffer, VkPipelineBindPoint pipelineBindPoint, deUint32 startCounter, deUint32 counterCount, VkBuffer destBuffer, VkDeviceSize destOffset) const;
-virtual VkResult       createFramebuffer                                       (VkDevice device, const VkFramebufferCreateInfo* pCreateInfo, VkFramebuffer* pFramebuffer) const;
-virtual VkResult       createRenderPass                                        (VkDevice device, const VkRenderPassCreateInfo* pCreateInfo, VkRenderPass* pRenderPass) const;
-virtual void           cmdBeginRenderPass                                      (VkCmdBuffer cmdBuffer, const VkRenderPassBegin* pRenderPassBegin) const;
-virtual void           cmdEndRenderPass                                        (VkCmdBuffer cmdBuffer, VkRenderPass renderPass) const;
+virtual VkResult       destroyDevice                                                                   (VkDevice device) const;
+virtual VkResult       getGlobalExtensionProperties                                    (const char* pLayerName, deUint32* pCount, VkExtensionProperties* pProperties) const;
+virtual VkResult       getPhysicalDeviceExtensionProperties                    (VkPhysicalDevice physicalDevice, const char* pLayerName, deUint32* pCount, VkExtensionProperties* pProperties) const;
+virtual VkResult       getGlobalLayerProperties                                                (deUint32* pCount, VkLayerProperties* pProperties) const;
+virtual VkResult       getPhysicalDeviceLayerProperties                                (VkPhysicalDevice physicalDevice, deUint32* pCount, VkLayerProperties* pProperties) const;
+virtual VkResult       getDeviceQueue                                                                  (VkDevice device, deUint32 queueFamilyIndex, deUint32 queueIndex, VkQueue* pQueue) const;
+virtual VkResult       queueSubmit                                                                             (VkQueue queue, deUint32 cmdBufferCount, const VkCmdBuffer* pCmdBuffers, VkFence fence) const;
+virtual VkResult       queueWaitIdle                                                                   (VkQueue queue) const;
+virtual VkResult       deviceWaitIdle                                                                  (VkDevice device) const;
+virtual VkResult       allocMemory                                                                             (VkDevice device, const VkMemoryAllocInfo* pAllocInfo, VkDeviceMemory* pMem) const;
+virtual VkResult       freeMemory                                                                              (VkDevice device, VkDeviceMemory mem) const;
+virtual VkResult       mapMemory                                                                               (VkDevice device, VkDeviceMemory mem, VkDeviceSize offset, VkDeviceSize size, VkMemoryMapFlags flags, void** ppData) const;
+virtual VkResult       unmapMemory                                                                             (VkDevice device, VkDeviceMemory mem) const;
+virtual VkResult       flushMappedMemoryRanges                                                 (VkDevice device, deUint32 memRangeCount, const VkMappedMemoryRange* pMemRanges) const;
+virtual VkResult       invalidateMappedMemoryRanges                                    (VkDevice device, deUint32 memRangeCount, const VkMappedMemoryRange* pMemRanges) const;
+virtual VkResult       getDeviceMemoryCommitment                                               (VkDevice device, VkDeviceMemory memory, VkDeviceSize* pCommittedMemoryInBytes) const;
+virtual VkResult       bindBufferMemory                                                                (VkDevice device, VkBuffer buffer, VkDeviceMemory mem, VkDeviceSize memOffset) const;
+virtual VkResult       bindImageMemory                                                                 (VkDevice device, VkImage image, VkDeviceMemory mem, VkDeviceSize memOffset) const;
+virtual VkResult       getBufferMemoryRequirements                                             (VkDevice device, VkBuffer buffer, VkMemoryRequirements* pMemoryRequirements) const;
+virtual VkResult       getImageMemoryRequirements                                              (VkDevice device, VkImage image, VkMemoryRequirements* pMemoryRequirements) const;
+virtual VkResult       getImageSparseMemoryRequirements                                (VkDevice device, VkImage image, deUint32* pNumRequirements, VkSparseImageMemoryRequirements* pSparseMemoryRequirements) const;
+virtual VkResult       getPhysicalDeviceSparseImageFormatProperties    (VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, deUint32 samples, VkImageUsageFlags usage, VkImageTiling tiling, deUint32* pNumProperties, VkSparseImageFormatProperties* pProperties) const;
+virtual VkResult       queueBindSparseBufferMemory                                             (VkQueue queue, VkBuffer buffer, deUint32 numBindings, const VkSparseMemoryBindInfo* pBindInfo) const;
+virtual VkResult       queueBindSparseImageOpaqueMemory                                (VkQueue queue, VkImage image, deUint32 numBindings, const VkSparseMemoryBindInfo* pBindInfo) const;
+virtual VkResult       queueBindSparseImageMemory                                              (VkQueue queue, VkImage image, deUint32 numBindings, const VkSparseImageMemoryBindInfo* pBindInfo) const;
+virtual VkResult       createFence                                                                             (VkDevice device, const VkFenceCreateInfo* pCreateInfo, VkFence* pFence) const;
+virtual VkResult       destroyFence                                                                    (VkDevice device, VkFence fence) const;
+virtual VkResult       resetFences                                                                             (VkDevice device, deUint32 fenceCount, const VkFence* pFences) const;
+virtual VkResult       getFenceStatus                                                                  (VkDevice device, VkFence fence) const;
+virtual VkResult       waitForFences                                                                   (VkDevice device, deUint32 fenceCount, const VkFence* pFences, VkBool32 waitAll, deUint64 timeout) const;
+virtual VkResult       createSemaphore                                                                 (VkDevice device, const VkSemaphoreCreateInfo* pCreateInfo, VkSemaphore* pSemaphore) const;
+virtual VkResult       destroySemaphore                                                                (VkDevice device, VkSemaphore semaphore) const;
+virtual VkResult       queueSignalSemaphore                                                    (VkQueue queue, VkSemaphore semaphore) const;
+virtual VkResult       queueWaitSemaphore                                                              (VkQueue queue, VkSemaphore semaphore) const;
+virtual VkResult       createEvent                                                                             (VkDevice device, const VkEventCreateInfo* pCreateInfo, VkEvent* pEvent) const;
+virtual VkResult       destroyEvent                                                                    (VkDevice device, VkEvent event) const;
+virtual VkResult       getEventStatus                                                                  (VkDevice device, VkEvent event) const;
+virtual VkResult       setEvent                                                                                (VkDevice device, VkEvent event) const;
+virtual VkResult       resetEvent                                                                              (VkDevice device, VkEvent event) const;
+virtual VkResult       createQueryPool                                                                 (VkDevice device, const VkQueryPoolCreateInfo* pCreateInfo, VkQueryPool* pQueryPool) const;
+virtual VkResult       destroyQueryPool                                                                (VkDevice device, VkQueryPool queryPool) const;
+virtual VkResult       getQueryPoolResults                                                             (VkDevice device, VkQueryPool queryPool, deUint32 startQuery, deUint32 queryCount, deUintptr* pDataSize, void* pData, VkQueryResultFlags flags) const;
+virtual VkResult       createBuffer                                                                    (VkDevice device, const VkBufferCreateInfo* pCreateInfo, VkBuffer* pBuffer) const;
+virtual VkResult       destroyBuffer                                                                   (VkDevice device, VkBuffer buffer) const;
+virtual VkResult       createBufferView                                                                (VkDevice device, const VkBufferViewCreateInfo* pCreateInfo, VkBufferView* pView) const;
+virtual VkResult       destroyBufferView                                                               (VkDevice device, VkBufferView bufferView) const;
+virtual VkResult       createImage                                                                             (VkDevice device, const VkImageCreateInfo* pCreateInfo, VkImage* pImage) const;
+virtual VkResult       destroyImage                                                                    (VkDevice device, VkImage image) const;
+virtual VkResult       getImageSubresourceLayout                                               (VkDevice device, VkImage image, const VkImageSubresource* pSubresource, VkSubresourceLayout* pLayout) const;
+virtual VkResult       createImageView                                                                 (VkDevice device, const VkImageViewCreateInfo* pCreateInfo, VkImageView* pView) const;
+virtual VkResult       destroyImageView                                                                (VkDevice device, VkImageView imageView) const;
+virtual VkResult       createAttachmentView                                                    (VkDevice device, const VkAttachmentViewCreateInfo* pCreateInfo, VkAttachmentView* pView) const;
+virtual VkResult       destroyAttachmentView                                                   (VkDevice device, VkAttachmentView attachmentView) const;
+virtual VkResult       createShaderModule                                                              (VkDevice device, const VkShaderModuleCreateInfo* pCreateInfo, VkShaderModule* pShaderModule) const;
+virtual VkResult       destroyShaderModule                                                             (VkDevice device, VkShaderModule shaderModule) const;
+virtual VkResult       createShader                                                                    (VkDevice device, const VkShaderCreateInfo* pCreateInfo, VkShader* pShader) const;
+virtual VkResult       destroyShader                                                                   (VkDevice device, VkShader shader) const;
+virtual VkResult       createPipelineCache                                                             (VkDevice device, const VkPipelineCacheCreateInfo* pCreateInfo, VkPipelineCache* pPipelineCache) const;
+virtual VkResult       destroyPipelineCache                                                    (VkDevice device, VkPipelineCache pipelineCache) const;
+virtual deUintptr      getPipelineCacheSize                                                    (VkDevice device, VkPipelineCache pipelineCache) const;
+virtual VkResult       getPipelineCacheData                                                    (VkDevice device, VkPipelineCache pipelineCache, void* pData) const;
+virtual VkResult       mergePipelineCaches                                                             (VkDevice device, VkPipelineCache destCache, deUint32 srcCacheCount, const VkPipelineCache* pSrcCaches) const;
+virtual VkResult       createGraphicsPipelines                                                 (VkDevice device, VkPipelineCache pipelineCache, deUint32 count, const VkGraphicsPipelineCreateInfo* pCreateInfos, VkPipeline* pPipelines) const;
+virtual VkResult       createComputePipelines                                                  (VkDevice device, VkPipelineCache pipelineCache, deUint32 count, const VkComputePipelineCreateInfo* pCreateInfos, VkPipeline* pPipelines) const;
+virtual VkResult       destroyPipeline                                                                 (VkDevice device, VkPipeline pipeline) const;
+virtual VkResult       createPipelineLayout                                                    (VkDevice device, const VkPipelineLayoutCreateInfo* pCreateInfo, VkPipelineLayout* pPipelineLayout) const;
+virtual VkResult       destroyPipelineLayout                                                   (VkDevice device, VkPipelineLayout pipelineLayout) const;
+virtual VkResult       createSampler                                                                   (VkDevice device, const VkSamplerCreateInfo* pCreateInfo, VkSampler* pSampler) const;
+virtual VkResult       destroySampler                                                                  (VkDevice device, VkSampler sampler) const;
+virtual VkResult       createDescriptorSetLayout                                               (VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, VkDescriptorSetLayout* pSetLayout) const;
+virtual VkResult       destroyDescriptorSetLayout                                              (VkDevice device, VkDescriptorSetLayout descriptorSetLayout) const;
+virtual VkResult       createDescriptorPool                                                    (VkDevice device, VkDescriptorPoolUsage poolUsage, deUint32 maxSets, const VkDescriptorPoolCreateInfo* pCreateInfo, VkDescriptorPool* pDescriptorPool) const;
+virtual VkResult       destroyDescriptorPool                                                   (VkDevice device, VkDescriptorPool descriptorPool) const;
+virtual VkResult       resetDescriptorPool                                                             (VkDevice device, VkDescriptorPool descriptorPool) const;
+virtual VkResult       allocDescriptorSets                                                             (VkDevice device, VkDescriptorPool descriptorPool, VkDescriptorSetUsage setUsage, deUint32 count, const VkDescriptorSetLayout* pSetLayouts, VkDescriptorSet* pDescriptorSets, deUint32* pCount) const;
+virtual VkResult       updateDescriptorSets                                                    (VkDevice device, deUint32 writeCount, const VkWriteDescriptorSet* pDescriptorWrites, deUint32 copyCount, const VkCopyDescriptorSet* pDescriptorCopies) const;
+virtual VkResult       createDynamicViewportState                                              (VkDevice device, const VkDynamicViewportStateCreateInfo* pCreateInfo, VkDynamicViewportState* pState) const;
+virtual VkResult       destroyDynamicViewportState                                             (VkDevice device, VkDynamicViewportState dynamicViewportState) const;
+virtual VkResult       createDynamicRasterState                                                (VkDevice device, const VkDynamicRasterStateCreateInfo* pCreateInfo, VkDynamicRasterState* pState) const;
+virtual VkResult       destroyDynamicRasterState                                               (VkDevice device, VkDynamicRasterState dynamicRasterState) const;
+virtual VkResult       createDynamicColorBlendState                                    (VkDevice device, const VkDynamicColorBlendStateCreateInfo* pCreateInfo, VkDynamicColorBlendState* pState) const;
+virtual VkResult       destroyDynamicColorBlendState                                   (VkDevice device, VkDynamicColorBlendState dynamicColorBlendState) const;
+virtual VkResult       createDynamicDepthStencilState                                  (VkDevice device, const VkDynamicDepthStencilStateCreateInfo* pCreateInfo, VkDynamicDepthStencilState* pState) const;
+virtual VkResult       destroyDynamicDepthStencilState                                 (VkDevice device, VkDynamicDepthStencilState dynamicDepthStencilState) const;
+virtual VkResult       createFramebuffer                                                               (VkDevice device, const VkFramebufferCreateInfo* pCreateInfo, VkFramebuffer* pFramebuffer) const;
+virtual VkResult       destroyFramebuffer                                                              (VkDevice device, VkFramebuffer framebuffer) const;
+virtual VkResult       createRenderPass                                                                (VkDevice device, const VkRenderPassCreateInfo* pCreateInfo, VkRenderPass* pRenderPass) const;
+virtual VkResult       destroyRenderPass                                                               (VkDevice device, VkRenderPass renderPass) const;
+virtual VkResult       getRenderAreaGranularity                                                (VkDevice device, VkRenderPass renderPass, VkExtent2D* pGranularity) const;
+virtual VkResult       createCommandPool                                                               (VkDevice device, const VkCmdPoolCreateInfo* pCreateInfo, VkCmdPool* pCmdPool) const;
+virtual VkResult       destroyCommandPool                                                              (VkDevice device, VkCmdPool cmdPool) const;
+virtual VkResult       resetCommandPool                                                                (VkDevice device, VkCmdPool cmdPool, VkCmdPoolResetFlags flags) const;
+virtual VkResult       createCommandBuffer                                                             (VkDevice device, const VkCmdBufferCreateInfo* pCreateInfo, VkCmdBuffer* pCmdBuffer) const;
+virtual VkResult       destroyCommandBuffer                                                    (VkDevice device, VkCmdBuffer commandBuffer) const;
+virtual VkResult       beginCommandBuffer                                                              (VkCmdBuffer cmdBuffer, const VkCmdBufferBeginInfo* pBeginInfo) const;
+virtual VkResult       endCommandBuffer                                                                (VkCmdBuffer cmdBuffer) const;
+virtual VkResult       resetCommandBuffer                                                              (VkCmdBuffer cmdBuffer, VkCmdBufferResetFlags flags) const;
+virtual void           cmdBindPipeline                                                                 (VkCmdBuffer cmdBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline) const;
+virtual void           cmdBindDynamicViewportState                                             (VkCmdBuffer cmdBuffer, VkDynamicViewportState dynamicViewportState) const;
+virtual void           cmdBindDynamicRasterState                                               (VkCmdBuffer cmdBuffer, VkDynamicRasterState dynamicRasterState) const;
+virtual void           cmdBindDynamicColorBlendState                                   (VkCmdBuffer cmdBuffer, VkDynamicColorBlendState dynamicColorBlendState) const;
+virtual void           cmdBindDynamicDepthStencilState                                 (VkCmdBuffer cmdBuffer, VkDynamicDepthStencilState dynamicDepthStencilState) const;
+virtual void           cmdBindDescriptorSets                                                   (VkCmdBuffer cmdBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, deUint32 firstSet, deUint32 setCount, const VkDescriptorSet* pDescriptorSets, deUint32 dynamicOffsetCount, const deUint32* pDynamicOffsets) const;
+virtual void           cmdBindIndexBuffer                                                              (VkCmdBuffer cmdBuffer, VkBuffer buffer, VkDeviceSize offset, VkIndexType indexType) const;
+virtual void           cmdBindVertexBuffers                                                    (VkCmdBuffer cmdBuffer, deUint32 startBinding, deUint32 bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets) const;
+virtual void           cmdDraw                                                                                 (VkCmdBuffer cmdBuffer, deUint32 firstVertex, deUint32 vertexCount, deUint32 firstInstance, deUint32 instanceCount) const;
+virtual void           cmdDrawIndexed                                                                  (VkCmdBuffer cmdBuffer, deUint32 firstIndex, deUint32 indexCount, deInt32 vertexOffset, deUint32 firstInstance, deUint32 instanceCount) const;
+virtual void           cmdDrawIndirect                                                                 (VkCmdBuffer cmdBuffer, VkBuffer buffer, VkDeviceSize offset, deUint32 count, deUint32 stride) const;
+virtual void           cmdDrawIndexedIndirect                                                  (VkCmdBuffer cmdBuffer, VkBuffer buffer, VkDeviceSize offset, deUint32 count, deUint32 stride) const;
+virtual void           cmdDispatch                                                                             (VkCmdBuffer cmdBuffer, deUint32 x, deUint32 y, deUint32 z) const;
+virtual void           cmdDispatchIndirect                                                             (VkCmdBuffer cmdBuffer, VkBuffer buffer, VkDeviceSize offset) const;
+virtual void           cmdCopyBuffer                                                                   (VkCmdBuffer cmdBuffer, VkBuffer srcBuffer, VkBuffer destBuffer, deUint32 regionCount, const VkBufferCopy* pRegions) const;
+virtual void           cmdCopyImage                                                                    (VkCmdBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage destImage, VkImageLayout destImageLayout, deUint32 regionCount, const VkImageCopy* pRegions) const;
+virtual void           cmdBlitImage                                                                    (VkCmdBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage destImage, VkImageLayout destImageLayout, deUint32 regionCount, const VkImageBlit* pRegions, VkTexFilter filter) const;
+virtual void           cmdCopyBufferToImage                                                    (VkCmdBuffer cmdBuffer, VkBuffer srcBuffer, VkImage destImage, VkImageLayout destImageLayout, deUint32 regionCount, const VkBufferImageCopy* pRegions) const;
+virtual void           cmdCopyImageToBuffer                                                    (VkCmdBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkBuffer destBuffer, deUint32 regionCount, const VkBufferImageCopy* pRegions) const;
+virtual void           cmdUpdateBuffer                                                                 (VkCmdBuffer cmdBuffer, VkBuffer destBuffer, VkDeviceSize destOffset, VkDeviceSize dataSize, const deUint32* pData) const;
+virtual void           cmdFillBuffer                                                                   (VkCmdBuffer cmdBuffer, VkBuffer destBuffer, VkDeviceSize destOffset, VkDeviceSize fillSize, deUint32 data) const;
+virtual void           cmdClearColorImage                                                              (VkCmdBuffer cmdBuffer, VkImage image, VkImageLayout imageLayout, const VkClearColorValue* pColor, deUint32 rangeCount, const VkImageSubresourceRange* pRanges) const;
+virtual void           cmdClearDepthStencilImage                                               (VkCmdBuffer cmdBuffer, VkImage image, VkImageLayout imageLayout, float depth, deUint32 stencil, deUint32 rangeCount, const VkImageSubresourceRange* pRanges) const;
+virtual void           cmdClearColorAttachment                                                 (VkCmdBuffer cmdBuffer, deUint32 colorAttachment, VkImageLayout imageLayout, const VkClearColorValue* pColor, deUint32 rectCount, const VkRect3D* pRects) const;
+virtual void           cmdClearDepthStencilAttachment                                  (VkCmdBuffer cmdBuffer, VkImageAspectFlags imageAspectMask, VkImageLayout imageLayout, float depth, deUint32 stencil, deUint32 rectCount, const VkRect3D* pRects) const;
+virtual void           cmdResolveImage                                                                 (VkCmdBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage destImage, VkImageLayout destImageLayout, deUint32 regionCount, const VkImageResolve* pRegions) const;
+virtual void           cmdSetEvent                                                                             (VkCmdBuffer cmdBuffer, VkEvent event, VkPipelineStageFlags stageMask) const;
+virtual void           cmdResetEvent                                                                   (VkCmdBuffer cmdBuffer, VkEvent event, VkPipelineStageFlags stageMask) const;
+virtual void           cmdWaitEvents                                                                   (VkCmdBuffer cmdBuffer, deUint32 eventCount, const VkEvent* pEvents, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags destStageMask, deUint32 memBarrierCount, const void* const* ppMemBarriers) const;
+virtual void           cmdPipelineBarrier                                                              (VkCmdBuffer cmdBuffer, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags destStageMask, VkBool32 byRegion, deUint32 memBarrierCount, const void* const* ppMemBarriers) const;
+virtual void           cmdBeginQuery                                                                   (VkCmdBuffer cmdBuffer, VkQueryPool queryPool, deUint32 slot, VkQueryControlFlags flags) const;
+virtual void           cmdEndQuery                                                                             (VkCmdBuffer cmdBuffer, VkQueryPool queryPool, deUint32 slot) const;
+virtual void           cmdResetQueryPool                                                               (VkCmdBuffer cmdBuffer, VkQueryPool queryPool, deUint32 startQuery, deUint32 queryCount) const;
+virtual void           cmdWriteTimestamp                                                               (VkCmdBuffer cmdBuffer, VkTimestampType timestampType, VkBuffer destBuffer, VkDeviceSize destOffset) const;
+virtual void           cmdCopyQueryPoolResults                                                 (VkCmdBuffer cmdBuffer, VkQueryPool queryPool, deUint32 startQuery, deUint32 queryCount, VkBuffer destBuffer, VkDeviceSize destOffset, VkDeviceSize destStride, VkQueryResultFlags flags) const;
+virtual void           cmdPushConstants                                                                (VkCmdBuffer cmdBuffer, VkPipelineLayout layout, VkShaderStageFlags stageFlags, deUint32 start, deUint32 length, const void* values) const;
+virtual void           cmdBeginRenderPass                                                              (VkCmdBuffer cmdBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, VkRenderPassContents contents) const;
+virtual void           cmdNextSubpass                                                                  (VkCmdBuffer cmdBuffer, VkRenderPassContents contents) const;
+virtual void           cmdEndRenderPass                                                                (VkCmdBuffer cmdBuffer) const;
+virtual void           cmdExecuteCommands                                                              (VkCmdBuffer cmdBuffer, deUint32 cmdBuffersCount, const VkCmdBuffer* pCmdBuffers) const;
diff --git a/external/vulkancts/framework/vulkan/vkConcreteInstanceInterface.inl b/external/vulkancts/framework/vulkan/vkConcreteInstanceInterface.inl
new file mode 100644 (file)
index 0000000..a87e61c
--- /dev/null
@@ -0,0 +1,15 @@
+/* WARNING: This is auto-generated file. Do not modify, since changes will
+ * be lost! Modify the generating script instead.
+ */
+virtual VkResult                       destroyInstance                                                 (VkInstance instance) const;
+virtual VkResult                       enumeratePhysicalDevices                                (VkInstance instance, deUint32* pPhysicalDeviceCount, VkPhysicalDevice* pPhysicalDevices) const;
+virtual VkResult                       getPhysicalDeviceFeatures                               (VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures* pFeatures) const;
+virtual VkResult                       getPhysicalDeviceFormatProperties               (VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties* pFormatProperties) const;
+virtual VkResult                       getPhysicalDeviceImageFormatProperties  (VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageFormatProperties* pImageFormatProperties) const;
+virtual VkResult                       getPhysicalDeviceLimits                                 (VkPhysicalDevice physicalDevice, VkPhysicalDeviceLimits* pLimits) const;
+virtual VkResult                       getPhysicalDeviceProperties                             (VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties* pProperties) const;
+virtual VkResult                       getPhysicalDeviceQueueCount                             (VkPhysicalDevice physicalDevice, deUint32* pCount) const;
+virtual VkResult                       getPhysicalDeviceQueueProperties                (VkPhysicalDevice physicalDevice, deUint32 count, VkPhysicalDeviceQueueProperties* pQueueProperties) const;
+virtual VkResult                       getPhysicalDeviceMemoryProperties               (VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties* pMemoryProperties) const;
+virtual PFN_vkVoidFunction     getDeviceProcAddr                                               (VkDevice device, const char* pName) const;
+virtual VkResult                       createDevice                                                    (VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo* pCreateInfo, VkDevice* pDevice) const;
index b552c05..04506b7 100644 (file)
@@ -1,7 +1,5 @@
 /* WARNING: This is auto-generated file. Do not modify, since changes will
  * be lost! Modify the generating script instead.
  */
-virtual VkResult       createInstance                          (const VkInstanceCreateInfo* pCreateInfo, VkInstance* pInstance) const;
-virtual VkResult       destroyInstance                         (VkInstance instance) const;
-virtual VkResult       enumeratePhysicalDevices        (VkInstance instance, deUint32* pPhysicalDeviceCount, VkPhysicalDevice* pPhysicalDevices) const;
-virtual FunctionPtr    getProcAddr                                     (VkPhysicalDevice physicalDevice, const char* pName) const;
+virtual VkResult                       createInstance          (const VkInstanceCreateInfo* pCreateInfo, VkInstance* pInstance) const;
+virtual PFN_vkVoidFunction     getInstanceProcAddr     (VkInstance instance, const char* pName) const;
index 2ab6bb0..88a0af5 100644 (file)
@@ -39,6 +39,7 @@
 
 DE_STATIC_ASSERT(sizeof(vk::VkImageType)       == sizeof(deUint32));
 DE_STATIC_ASSERT(sizeof(vk::VkResult)          == sizeof(deUint32));
+DE_STATIC_ASSERT(sizeof(vk::VkDevice)          == sizeof(deUint64));
 
 namespace vk
 {
@@ -118,6 +119,14 @@ deUint32 pack (const ApiVersion& version)
        return (version.major << 22) | (version.minor << 12) | version.patch;
 }
 
-#include "vkGetObjectTypeImpl.inl"
+VkClearValue clearValueColorF32 (float r, float g, float b, float a)
+{
+       VkClearValue v;
+       v.color.f32[0] = r;
+       v.color.f32[1] = g;
+       v.color.f32[2] = b;
+       v.color.f32[3] = a;
+       return v;
+}
 
 } // vk
index 3138c12..e53db48 100644 (file)
 #      define VK_APIENTRY
 #endif
 
-#define VK_DEFINE_HANDLE_TYPE_TRAITS(HANDLE)                   \
-       struct HANDLE##T { private: HANDLE##T (void); };        \
-       template<>                                                                                      \
-       struct Traits<HANDLE##T>                                                        \
-       {                                                                                                       \
-               typedef HANDLE          Type;                                           \
-       }
-
-#if (DE_PTR_SIZE == 8)
-#      define VK_DEFINE_PTR_HANDLE(HANDLE)                                             \
-               struct HANDLE##_s { private: HANDLE##_s (void); };      \
-               typedef HANDLE##_s*     HANDLE
-
-#      define VK_DEFINE_PTR_SUBCLASS_HANDLE(HANDLE, PARENT)                                            \
-               struct HANDLE##_s : public PARENT##_s { private: HANDLE##_s (void); };  \
-               typedef HANDLE##_s* HANDLE
-
-#      define VK_DEFINE_BASE_HANDLE(HANDLE)                                            VK_DEFINE_PTR_HANDLE(HANDLE)
-#      define VK_DEFINE_DISP_SUBCLASS_HANDLE(HANDLE, PARENT)           VK_DEFINE_PTR_SUBCLASS_HANDLE(HANDLE, PARENT)
-#      define VK_DEFINE_NONDISP_SUBCLASS_HANDLE(HANDLE, PARENT)        VK_DEFINE_PTR_SUBCLASS_HANDLE(HANDLE, PARENT)
-#else
-#      define VK_DEFINE_BASE_HANDLE(HANDLE)                                            typedef deUint64 HANDLE
-#      define VK_DEFINE_DISP_SUBCLASS_HANDLE(HANDLE, PARENT)           typedef deUintptr HANDLE
-#      define VK_DEFINE_NONDISP_SUBCLASS_HANDLE(HANDLE, PARENT)        typedef deUint64 HANDLE
-#endif
+#define VK_DEFINE_HANDLE(NAME, TYPE)                   typedef Handle<TYPE> NAME
+#define VK_DEFINE_NONDISP_HANDLE(NAME, TYPE)   VK_DEFINE_HANDLE(NAME, TYPE)
 
 #define VK_MAKE_VERSION(MAJOR, MINOR, PATCH)   ((MAJOR << 22) | (MINOR << 12) | PATCH)
 #define VK_BIT(NUM)                                                            (1<<NUM)
@@ -92,55 +69,91 @@ namespace vk
 
 typedef deUint64       VkDeviceSize;
 typedef deUint32       VkSampleMask;
+typedef deUint32       VkBool32;
 
 typedef deUint32       VkShaderCreateFlags;            // Reserved
 typedef deUint32       VkEventCreateFlags;                     // Reserved
 typedef deUint32       VkCmdBufferCreateFlags;         // Reserved
+typedef deUint32       VkSemaphoreCreateFlags;         // Reserved
+typedef deUint32       VkShaderModuleCreateFlags;      // Reserved
 typedef deUint32       VkMemoryMapFlags;                       // \todo [2015-05-08 pyry] Reserved? Not documented
 
-template<typename T> struct Traits;
+// enum HandleType { HANDLE_TYPE_INSTANCE, ... };
+#include "vkHandleType.inl"
 
-#include "vkBasicTypes.inl"
+template<HandleType Type>
+class Handle
+{
+public:
+                               Handle          (void) {} // \note Left uninitialized on purpose
+                               Handle          (deUint64 internal) : m_internal(internal) {}
 
-typedef VK_APICALL void                (VK_APIENTRY* FunctionPtr)                      (void);
+       Handle&         operator=       (deUint64 internal)                                     { m_internal = internal; return *this;                  }
 
-typedef VK_APICALL void*       (VK_APIENTRY* PFN_vkAllocFunction)      (void* pUserData, deUintptr size, deUintptr alignment, VkSystemAllocType allocType);
-typedef VK_APICALL void                (VK_APIENTRY* PFN_vkFreeFunction)       (void* pUserData, void* pMem);
+       bool            operator==      (const Handle<Type>& other) const       { return this->m_internal == other.m_internal;  }
+       bool            operator!=      (const Handle<Type>& other) const       { return this->m_internal != other.m_internal;  }
 
-union VkClearColorValue
-{
-       float           floatColor[4];
-       deUint32        rawColor[4];
+       bool            operator!       (void) const                                            { return !m_internal;                                                   }
 
-       VkClearColorValue (float r, float g, float b, float a)
-       {
-               floatColor[0] = r;
-               floatColor[1] = g;
-               floatColor[2] = b;
-               floatColor[3] = a;
-       }
+       deUint64        getInternal     (void) const                                            { return m_internal;                                                    }
 
-       VkClearColorValue (deUint32 r, deUint32 g, deUint32 b, deUint32 a)
-       {
-               rawColor[0] = r;
-               rawColor[1] = g;
-               rawColor[2] = b;
-               rawColor[3] = a;
-       }
+       enum { HANDLE_TYPE = Type };
+
+private:
+       deUint64        m_internal;
 };
 
+#include "vkBasicTypes.inl"
+
+typedef VK_APICALL void                (VK_APIENTRY* PFN_vkVoidFunction)       (void);
+
+typedef VK_APICALL void*       (VK_APIENTRY* PFN_vkAllocFunction)      (void* pUserData, deUintptr size, deUintptr alignment, VkSystemAllocType allocType);
+typedef VK_APICALL void                (VK_APIENTRY* PFN_vkFreeFunction)       (void* pUserData, void* pMem);
+
 #include "vkStructTypes.inl"
 
+extern "C"
+{
+#include "vkFunctionPointerTypes.inl"
+}
+
 class PlatformInterface
 {
 public:
 #include "vkVirtualPlatformInterface.inl"
+
+protected:
+                                               PlatformInterface       (void) {}
+
+private:
+                                               PlatformInterface       (const PlatformInterface&);
+       PlatformInterface&      operator=                       (const PlatformInterface&);
+};
+
+class InstanceInterface
+{
+public:
+#include "vkVirtualInstanceInterface.inl"
+
+protected:
+                                               InstanceInterface       (void) {}
+
+private:
+                                               InstanceInterface       (const InstanceInterface&);
+       InstanceInterface&      operator=                       (const InstanceInterface&);
 };
 
 class DeviceInterface
 {
 public:
 #include "vkVirtualDeviceInterface.inl"
+
+protected:
+                                               DeviceInterface         (void) {}
+
+private:
+                                               DeviceInterface         (const DeviceInterface&);
+       DeviceInterface&        operator=                       (const DeviceInterface&);
 };
 
 struct ApiVersion
@@ -185,14 +198,12 @@ private:
        const VkResult  m_error;
 };
 
-ApiVersion             unpackVersion   (deUint32 version);
-deUint32               pack                    (const ApiVersion& version);
+void                   checkResult                     (VkResult result, const char* message, const char* file, int line);
 
-void                   checkResult             (VkResult result, const char* message, const char* file, int line);
+ApiVersion             unpackVersion           (deUint32 version);
+deUint32               pack                            (const ApiVersion& version);
 
-//! Map Vk{Object}T to VK_OBJECT_TYPE_{OBJECT}. Defined for leaf objects only.
-template<typename T>
-VkObjectType   getObjectType   (void);
+VkClearValue   clearValueColorF32      (float r, float g, float b, float a);
 
 } // vk
 
index 316f7d3..eb71ea8 100644 (file)
@@ -2,54 +2,39 @@
  * be lost! Modify the generating script instead.
  */
 
-VkResult DeviceDriver::getPhysicalDeviceInfo (VkPhysicalDevice physicalDevice, VkPhysicalDeviceInfoType infoType, deUintptr* pDataSize, void* pData) const
-{
-       return m_vk.getPhysicalDeviceInfo(physicalDevice, infoType, pDataSize, pData);
-}
-
-VkResult DeviceDriver::createDevice (VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo* pCreateInfo, VkDevice* pDevice) const
-{
-       return m_vk.createDevice(physicalDevice, pCreateInfo, pDevice);
-}
-
 VkResult DeviceDriver::destroyDevice (VkDevice device) const
 {
        return m_vk.destroyDevice(device);
 }
 
-VkResult DeviceDriver::getGlobalExtensionInfo (VkExtensionInfoType infoType, deUint32 extensionIndex, deUintptr* pDataSize, void* pData) const
+VkResult DeviceDriver::getGlobalExtensionProperties (const char* pLayerName, deUint32* pCount, VkExtensionProperties* pProperties) const
 {
-       return m_vk.getGlobalExtensionInfo(infoType, extensionIndex, pDataSize, pData);
+       return m_vk.getGlobalExtensionProperties(pLayerName, pCount, pProperties);
 }
 
-VkResult DeviceDriver::getPhysicalDeviceExtensionInfo (VkPhysicalDevice physicalDevice, VkExtensionInfoType infoType, deUint32 extensionIndex, deUintptr* pDataSize, void* pData) const
+VkResult DeviceDriver::getPhysicalDeviceExtensionProperties (VkPhysicalDevice physicalDevice, const char* pLayerName, deUint32* pCount, VkExtensionProperties* pProperties) const
 {
-       return m_vk.getPhysicalDeviceExtensionInfo(physicalDevice, infoType, extensionIndex, pDataSize, pData);
+       return m_vk.getPhysicalDeviceExtensionProperties(physicalDevice, pLayerName, pCount, pProperties);
 }
 
-VkResult DeviceDriver::enumerateLayers (VkPhysicalDevice physicalDevice, deUintptr maxStringSize, deUintptr* pLayerCount, char* const* pOutLayers, void* pReserved) const
+VkResult DeviceDriver::getGlobalLayerProperties (deUint32* pCount, VkLayerProperties* pProperties) const
 {
-       return m_vk.enumerateLayers(physicalDevice, maxStringSize, pLayerCount, pOutLayers, pReserved);
+       return m_vk.getGlobalLayerProperties(pCount, pProperties);
 }
 
-VkResult DeviceDriver::getDeviceQueue (VkDevice device, deUint32 queueNodeIndex, deUint32 queueIndex, VkQueue* pQueue) const
+VkResult DeviceDriver::getPhysicalDeviceLayerProperties (VkPhysicalDevice physicalDevice, deUint32* pCount, VkLayerProperties* pProperties) const
 {
-       return m_vk.getDeviceQueue(device, queueNodeIndex, queueIndex, pQueue);
+       return m_vk.getPhysicalDeviceLayerProperties(physicalDevice, pCount, pProperties);
 }
 
-VkResult DeviceDriver::queueSubmit (VkQueue queue, deUint32 cmdBufferCount, const VkCmdBuffer* pCmdBuffers, VkFence fence) const
+VkResult DeviceDriver::getDeviceQueue (VkDevice device, deUint32 queueFamilyIndex, deUint32 queueIndex, VkQueue* pQueue) const
 {
-       return m_vk.queueSubmit(queue, cmdBufferCount, pCmdBuffers, fence);
+       return m_vk.getDeviceQueue(device, queueFamilyIndex, queueIndex, pQueue);
 }
 
-VkResult DeviceDriver::queueAddMemReferences (VkQueue queue, deUint32 count, const VkDeviceMemory* pMems) const
-{
-       return m_vk.queueAddMemReferences(queue, count, pMems);
-}
-
-VkResult DeviceDriver::queueRemoveMemReferences (VkQueue queue, deUint32 count, const VkDeviceMemory* pMems) const
+VkResult DeviceDriver::queueSubmit (VkQueue queue, deUint32 cmdBufferCount, const VkCmdBuffer* pCmdBuffers, VkFence fence) const
 {
-       return m_vk.queueRemoveMemReferences(queue, count, pMems);
+       return m_vk.queueSubmit(queue, cmdBufferCount, pCmdBuffers, fence);
 }
 
 VkResult DeviceDriver::queueWaitIdle (VkQueue queue) const
@@ -72,11 +57,6 @@ VkResult DeviceDriver::freeMemory (VkDevice device, VkDeviceMemory mem) const
        return m_vk.freeMemory(device, mem);
 }
 
-VkResult DeviceDriver::setMemoryPriority (VkDevice device, VkDeviceMemory mem, VkMemoryPriority priority) const
-{
-       return m_vk.setMemoryPriority(device, mem, priority);
-}
-
 VkResult DeviceDriver::mapMemory (VkDevice device, VkDeviceMemory mem, VkDeviceSize offset, VkDeviceSize size, VkMemoryMapFlags flags, void** ppData) const
 {
        return m_vk.mapMemory(device, mem, offset, size, flags, ppData);
@@ -87,64 +67,64 @@ VkResult DeviceDriver::unmapMemory (VkDevice device, VkDeviceMemory mem) const
        return m_vk.unmapMemory(device, mem);
 }
 
-VkResult DeviceDriver::flushMappedMemory (VkDevice device, VkDeviceMemory mem, VkDeviceSize offset, VkDeviceSize size) const
+VkResult DeviceDriver::flushMappedMemoryRanges (VkDevice device, deUint32 memRangeCount, const VkMappedMemoryRange* pMemRanges) const
 {
-       return m_vk.flushMappedMemory(device, mem, offset, size);
+       return m_vk.flushMappedMemoryRanges(device, memRangeCount, pMemRanges);
 }
 
-VkResult DeviceDriver::pinSystemMemory (VkDevice device, const void* pSysMem, deUintptr memSize, VkDeviceMemory* pMem) const
+VkResult DeviceDriver::invalidateMappedMemoryRanges (VkDevice device, deUint32 memRangeCount, const VkMappedMemoryRange* pMemRanges) const
 {
-       return m_vk.pinSystemMemory(device, pSysMem, memSize, pMem);
+       return m_vk.invalidateMappedMemoryRanges(device, memRangeCount, pMemRanges);
 }
 
-VkResult DeviceDriver::getMultiDeviceCompatibility (VkPhysicalDevice physicalDevice0, VkPhysicalDevice physicalDevice1, VkPhysicalDeviceCompatibilityInfo* pInfo) const
+VkResult DeviceDriver::getDeviceMemoryCommitment (VkDevice device, VkDeviceMemory memory, VkDeviceSize* pCommittedMemoryInBytes) const
 {
-       return m_vk.getMultiDeviceCompatibility(physicalDevice0, physicalDevice1, pInfo);
+       return m_vk.getDeviceMemoryCommitment(device, memory, pCommittedMemoryInBytes);
 }
 
-VkResult DeviceDriver::openSharedMemory (VkDevice device, const VkMemoryOpenInfo* pOpenInfo, VkDeviceMemory* pMem) const
+VkResult DeviceDriver::bindBufferMemory (VkDevice device, VkBuffer buffer, VkDeviceMemory mem, VkDeviceSize memOffset) const
 {
-       return m_vk.openSharedMemory(device, pOpenInfo, pMem);
+       return m_vk.bindBufferMemory(device, buffer, mem, memOffset);
 }
 
-VkResult DeviceDriver::openSharedSemaphore (VkDevice device, const VkSemaphoreOpenInfo* pOpenInfo, VkSemaphore* pSemaphore) const
+VkResult DeviceDriver::bindImageMemory (VkDevice device, VkImage image, VkDeviceMemory mem, VkDeviceSize memOffset) const
 {
-       return m_vk.openSharedSemaphore(device, pOpenInfo, pSemaphore);
+       return m_vk.bindImageMemory(device, image, mem, memOffset);
 }
 
-VkResult DeviceDriver::openPeerMemory (VkDevice device, const VkPeerMemoryOpenInfo* pOpenInfo, VkDeviceMemory* pMem) const
+VkResult DeviceDriver::getBufferMemoryRequirements (VkDevice device, VkBuffer buffer, VkMemoryRequirements* pMemoryRequirements) const
 {
-       return m_vk.openPeerMemory(device, pOpenInfo, pMem);
+       return m_vk.getBufferMemoryRequirements(device, buffer, pMemoryRequirements);
 }
 
-VkResult DeviceDriver::openPeerImage (VkDevice device, const VkPeerImageOpenInfo* pOpenInfo, VkImage* pImage, VkDeviceMemory* pMem) const
+VkResult DeviceDriver::getImageMemoryRequirements (VkDevice device, VkImage image, VkMemoryRequirements* pMemoryRequirements) const
 {
-       return m_vk.openPeerImage(device, pOpenInfo, pImage, pMem);
+       return m_vk.getImageMemoryRequirements(device, image, pMemoryRequirements);
 }
 
-VkResult DeviceDriver::destroyObject (VkDevice device, VkObjectType objType, VkObject object) const
+VkResult DeviceDriver::getImageSparseMemoryRequirements (VkDevice device, VkImage image, deUint32* pNumRequirements, VkSparseImageMemoryRequirements* pSparseMemoryRequirements) const
 {
-       return m_vk.destroyObject(device, objType, object);
+       return m_vk.getImageSparseMemoryRequirements(device, image, pNumRequirements, pSparseMemoryRequirements);
 }
 
-VkResult DeviceDriver::getObjectInfo (VkDevice device, VkObjectType objType, VkObject object, VkObjectInfoType infoType, deUintptr* pDataSize, void* pData) const
+VkResult DeviceDriver::getPhysicalDeviceSparseImageFormatProperties (VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, deUint32 samples, VkImageUsageFlags usage, VkImageTiling tiling, deUint32* pNumProperties, VkSparseImageFormatProperties* pProperties) const
 {
-       return m_vk.getObjectInfo(device, objType, object, infoType, pDataSize, pData);
+       return m_vk.getPhysicalDeviceSparseImageFormatProperties(physicalDevice, format, type, samples, usage, tiling, pNumProperties, pProperties);
 }
 
-VkResult DeviceDriver::queueBindObjectMemory (VkQueue queue, VkObjectType objType, VkObject object, deUint32 allocationIdx, VkDeviceMemory mem, VkDeviceSize memOffset) const
+VkResult DeviceDriver::queueBindSparseBufferMemory (VkQueue queue, VkBuffer buffer, deUint32 numBindings, const VkSparseMemoryBindInfo* pBindInfo) const
 {
-       return m_vk.queueBindObjectMemory(queue, objType, object, allocationIdx, mem, memOffset);
+       return m_vk.queueBindSparseBufferMemory(queue, buffer, numBindings, pBindInfo);
 }
 
-VkResult DeviceDriver::queueBindObjectMemoryRange (VkQueue queue, VkObjectType objType, VkObject object, deUint32 allocationIdx, VkDeviceSize rangeOffset, VkDeviceSize rangeSize, VkDeviceMemory mem, VkDeviceSize memOffset) const
+VkResult DeviceDriver::queueBindSparseImageOpaqueMemory (VkQueue queue, VkImage image, deUint32 numBindings, const VkSparseMemoryBindInfo* pBindInfo) const
 {
-       return m_vk.queueBindObjectMemoryRange(queue, objType, object, allocationIdx, rangeOffset, rangeSize, mem, memOffset);
+       return m_vk.queueBindSparseImageOpaqueMemory(queue, image, numBindings, pBindInfo);
 }
 
-VkResult DeviceDriver::queueBindImageMemoryRange (VkQueue queue, VkImage image, deUint32 allocationIdx, const VkImageMemoryBindInfo* pBindInfo, VkDeviceMemory mem, VkDeviceSize memOffset) const
+VkResult DeviceDriver::queueBindSparseImageMemory (VkQueue queue, VkImage image, deUint32 numBindings, const VkSparseImageMemoryBindInfo* pBindInfo) const
 {
-       return m_vk.queueBindImageMemoryRange(queue, image, allocationIdx, pBindInfo, mem, memOffset);
+       return m_vk.queueBindSparseImageMemory(queue, image, numBindings, pBindInfo);
 }
 
 VkResult DeviceDriver::createFence (VkDevice device, const VkFenceCreateInfo* pCreateInfo, VkFence* pFence) const
@@ -152,7 +132,12 @@ VkResult DeviceDriver::createFence (VkDevice device, const VkFenceCreateInfo* pC
        return m_vk.createFence(device, pCreateInfo, pFence);
 }
 
-VkResult DeviceDriver::resetFences (VkDevice device, deUint32 fenceCount, VkFence* pFences) const
+VkResult DeviceDriver::destroyFence (VkDevice device, VkFence fence) const
+{
+       return m_vk.destroyFence(device, fence);
+}
+
+VkResult DeviceDriver::resetFences (VkDevice device, deUint32 fenceCount, const VkFence* pFences) const
 {
        return m_vk.resetFences(device, fenceCount, pFences);
 }
@@ -162,7 +147,7 @@ VkResult DeviceDriver::getFenceStatus (VkDevice device, VkFence fence) const
        return m_vk.getFenceStatus(device, fence);
 }
 
-VkResult DeviceDriver::waitForFences (VkDevice device, deUint32 fenceCount, const VkFence* pFences, deUint32 waitAll, deUint64 timeout) const
+VkResult DeviceDriver::waitForFences (VkDevice device, deUint32 fenceCount, const VkFence* pFences, VkBool32 waitAll, deUint64 timeout) const
 {
        return m_vk.waitForFences(device, fenceCount, pFences, waitAll, timeout);
 }
@@ -172,6 +157,11 @@ VkResult DeviceDriver::createSemaphore (VkDevice device, const VkSemaphoreCreate
        return m_vk.createSemaphore(device, pCreateInfo, pSemaphore);
 }
 
+VkResult DeviceDriver::destroySemaphore (VkDevice device, VkSemaphore semaphore) const
+{
+       return m_vk.destroySemaphore(device, semaphore);
+}
+
 VkResult DeviceDriver::queueSignalSemaphore (VkQueue queue, VkSemaphore semaphore) const
 {
        return m_vk.queueSignalSemaphore(queue, semaphore);
@@ -187,6 +177,11 @@ VkResult DeviceDriver::createEvent (VkDevice device, const VkEventCreateInfo* pC
        return m_vk.createEvent(device, pCreateInfo, pEvent);
 }
 
+VkResult DeviceDriver::destroyEvent (VkDevice device, VkEvent event) const
+{
+       return m_vk.destroyEvent(device, event);
+}
+
 VkResult DeviceDriver::getEventStatus (VkDevice device, VkEvent event) const
 {
        return m_vk.getEventStatus(device, event);
@@ -207,14 +202,14 @@ VkResult DeviceDriver::createQueryPool (VkDevice device, const VkQueryPoolCreate
        return m_vk.createQueryPool(device, pCreateInfo, pQueryPool);
 }
 
-VkResult DeviceDriver::getQueryPoolResults (VkDevice device, VkQueryPool queryPool, deUint32 startQuery, deUint32 queryCount, deUintptr* pDataSize, void* pData, VkQueryResultFlags flags) const
+VkResult DeviceDriver::destroyQueryPool (VkDevice device, VkQueryPool queryPool) const
 {
-       return m_vk.getQueryPoolResults(device, queryPool, startQuery, queryCount, pDataSize, pData, flags);
+       return m_vk.destroyQueryPool(device, queryPool);
 }
 
-VkResult DeviceDriver::getFormatInfo (VkDevice device, VkFormat format, VkFormatInfoType infoType, deUintptr* pDataSize, void* pData) const
+VkResult DeviceDriver::getQueryPoolResults (VkDevice device, VkQueryPool queryPool, deUint32 startQuery, deUint32 queryCount, deUintptr* pDataSize, void* pData, VkQueryResultFlags flags) const
 {
-       return m_vk.getFormatInfo(device, format, infoType, pDataSize, pData);
+       return m_vk.getQueryPoolResults(device, queryPool, startQuery, queryCount, pDataSize, pData, flags);
 }
 
 VkResult DeviceDriver::createBuffer (VkDevice device, const VkBufferCreateInfo* pCreateInfo, VkBuffer* pBuffer) const
@@ -222,19 +217,34 @@ VkResult DeviceDriver::createBuffer (VkDevice device, const VkBufferCreateInfo*
        return m_vk.createBuffer(device, pCreateInfo, pBuffer);
 }
 
+VkResult DeviceDriver::destroyBuffer (VkDevice device, VkBuffer buffer) const
+{
+       return m_vk.destroyBuffer(device, buffer);
+}
+
 VkResult DeviceDriver::createBufferView (VkDevice device, const VkBufferViewCreateInfo* pCreateInfo, VkBufferView* pView) const
 {
        return m_vk.createBufferView(device, pCreateInfo, pView);
 }
 
+VkResult DeviceDriver::destroyBufferView (VkDevice device, VkBufferView bufferView) const
+{
+       return m_vk.destroyBufferView(device, bufferView);
+}
+
 VkResult DeviceDriver::createImage (VkDevice device, const VkImageCreateInfo* pCreateInfo, VkImage* pImage) const
 {
        return m_vk.createImage(device, pCreateInfo, pImage);
 }
 
-VkResult DeviceDriver::getImageSubresourceInfo (VkDevice device, VkImage image, const VkImageSubresource* pSubresource, VkSubresourceInfoType infoType, deUintptr* pDataSize, void* pData) const
+VkResult DeviceDriver::destroyImage (VkDevice device, VkImage image) const
 {
-       return m_vk.getImageSubresourceInfo(device, image, pSubresource, infoType, pDataSize, pData);
+       return m_vk.destroyImage(device, image);
+}
+
+VkResult DeviceDriver::getImageSubresourceLayout (VkDevice device, VkImage image, const VkImageSubresource* pSubresource, VkSubresourceLayout* pLayout) const
+{
+       return m_vk.getImageSubresourceLayout(device, image, pSubresource, pLayout);
 }
 
 VkResult DeviceDriver::createImageView (VkDevice device, const VkImageViewCreateInfo* pCreateInfo, VkImageView* pView) const
@@ -242,14 +252,29 @@ VkResult DeviceDriver::createImageView (VkDevice device, const VkImageViewCreate
        return m_vk.createImageView(device, pCreateInfo, pView);
 }
 
-VkResult DeviceDriver::createColorAttachmentView (VkDevice device, const VkColorAttachmentViewCreateInfo* pCreateInfo, VkColorAttachmentView* pView) const
+VkResult DeviceDriver::destroyImageView (VkDevice device, VkImageView imageView) const
 {
-       return m_vk.createColorAttachmentView(device, pCreateInfo, pView);
+       return m_vk.destroyImageView(device, imageView);
 }
 
-VkResult DeviceDriver::createDepthStencilView (VkDevice device, const VkDepthStencilViewCreateInfo* pCreateInfo, VkDepthStencilView* pView) const
+VkResult DeviceDriver::createAttachmentView (VkDevice device, const VkAttachmentViewCreateInfo* pCreateInfo, VkAttachmentView* pView) const
 {
-       return m_vk.createDepthStencilView(device, pCreateInfo, pView);
+       return m_vk.createAttachmentView(device, pCreateInfo, pView);
+}
+
+VkResult DeviceDriver::destroyAttachmentView (VkDevice device, VkAttachmentView attachmentView) const
+{
+       return m_vk.destroyAttachmentView(device, attachmentView);
+}
+
+VkResult DeviceDriver::createShaderModule (VkDevice device, const VkShaderModuleCreateInfo* pCreateInfo, VkShaderModule* pShaderModule) const
+{
+       return m_vk.createShaderModule(device, pCreateInfo, pShaderModule);
+}
+
+VkResult DeviceDriver::destroyShaderModule (VkDevice device, VkShaderModule shaderModule) const
+{
+       return m_vk.destroyShaderModule(device, shaderModule);
 }
 
 VkResult DeviceDriver::createShader (VkDevice device, const VkShaderCreateInfo* pCreateInfo, VkShader* pShader) const
@@ -257,34 +282,49 @@ VkResult DeviceDriver::createShader (VkDevice device, const VkShaderCreateInfo*
        return m_vk.createShader(device, pCreateInfo, pShader);
 }
 
-VkResult DeviceDriver::createGraphicsPipeline (VkDevice device, const VkGraphicsPipelineCreateInfo* pCreateInfo, VkPipeline* pPipeline) const
+VkResult DeviceDriver::destroyShader (VkDevice device, VkShader shader) const
+{
+       return m_vk.destroyShader(device, shader);
+}
+
+VkResult DeviceDriver::createPipelineCache (VkDevice device, const VkPipelineCacheCreateInfo* pCreateInfo, VkPipelineCache* pPipelineCache) const
+{
+       return m_vk.createPipelineCache(device, pCreateInfo, pPipelineCache);
+}
+
+VkResult DeviceDriver::destroyPipelineCache (VkDevice device, VkPipelineCache pipelineCache) const
+{
+       return m_vk.destroyPipelineCache(device, pipelineCache);
+}
+
+deUintptr DeviceDriver::getPipelineCacheSize (VkDevice device, VkPipelineCache pipelineCache) const
 {
-       return m_vk.createGraphicsPipeline(device, pCreateInfo, pPipeline);
+       return m_vk.getPipelineCacheSize(device, pipelineCache);
 }
 
-VkResult DeviceDriver::createGraphicsPipelineDerivative (VkDevice device, const VkGraphicsPipelineCreateInfo* pCreateInfo, VkPipeline basePipeline, VkPipeline* pPipeline) const
+VkResult DeviceDriver::getPipelineCacheData (VkDevice device, VkPipelineCache pipelineCache, void* pData) const
 {
-       return m_vk.createGraphicsPipelineDerivative(device, pCreateInfo, basePipeline, pPipeline);
+       return m_vk.getPipelineCacheData(device, pipelineCache, pData);
 }
 
-VkResult DeviceDriver::createComputePipeline (VkDevice device, const VkComputePipelineCreateInfo* pCreateInfo, VkPipeline* pPipeline) const
+VkResult DeviceDriver::mergePipelineCaches (VkDevice device, VkPipelineCache destCache, deUint32 srcCacheCount, const VkPipelineCache* pSrcCaches) const
 {
-       return m_vk.createComputePipeline(device, pCreateInfo, pPipeline);
+       return m_vk.mergePipelineCaches(device, destCache, srcCacheCount, pSrcCaches);
 }
 
-VkResult DeviceDriver::storePipeline (VkDevice device, VkPipeline pipeline, deUintptr* pDataSize, void* pData) const
+VkResult DeviceDriver::createGraphicsPipelines (VkDevice device, VkPipelineCache pipelineCache, deUint32 count, const VkGraphicsPipelineCreateInfo* pCreateInfos, VkPipeline* pPipelines) const
 {
-       return m_vk.storePipeline(device, pipeline, pDataSize, pData);
+       return m_vk.createGraphicsPipelines(device, pipelineCache, count, pCreateInfos, pPipelines);
 }
 
-VkResult DeviceDriver::loadPipeline (VkDevice device, deUintptr dataSize, const void* pData, VkPipeline* pPipeline) const
+VkResult DeviceDriver::createComputePipelines (VkDevice device, VkPipelineCache pipelineCache, deUint32 count, const VkComputePipelineCreateInfo* pCreateInfos, VkPipeline* pPipelines) const
 {
-       return m_vk.loadPipeline(device, dataSize, pData, pPipeline);
+       return m_vk.createComputePipelines(device, pipelineCache, count, pCreateInfos, pPipelines);
 }
 
-VkResult DeviceDriver::loadPipelineDerivative (VkDevice device, deUintptr dataSize, const void* pData, VkPipeline basePipeline, VkPipeline* pPipeline) const
+VkResult DeviceDriver::destroyPipeline (VkDevice device, VkPipeline pipeline) const
 {
-       return m_vk.loadPipelineDerivative(device, dataSize, pData, basePipeline, pPipeline);
+       return m_vk.destroyPipeline(device, pipeline);
 }
 
 VkResult DeviceDriver::createPipelineLayout (VkDevice device, const VkPipelineLayoutCreateInfo* pCreateInfo, VkPipelineLayout* pPipelineLayout) const
@@ -292,24 +332,29 @@ VkResult DeviceDriver::createPipelineLayout (VkDevice device, const VkPipelineLa
        return m_vk.createPipelineLayout(device, pCreateInfo, pPipelineLayout);
 }
 
+VkResult DeviceDriver::destroyPipelineLayout (VkDevice device, VkPipelineLayout pipelineLayout) const
+{
+       return m_vk.destroyPipelineLayout(device, pipelineLayout);
+}
+
 VkResult DeviceDriver::createSampler (VkDevice device, const VkSamplerCreateInfo* pCreateInfo, VkSampler* pSampler) const
 {
        return m_vk.createSampler(device, pCreateInfo, pSampler);
 }
 
-VkResult DeviceDriver::createDescriptorSetLayout (VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, VkDescriptorSetLayout* pSetLayout) const
+VkResult DeviceDriver::destroySampler (VkDevice device, VkSampler sampler) const
 {
-       return m_vk.createDescriptorSetLayout(device, pCreateInfo, pSetLayout);
+       return m_vk.destroySampler(device, sampler);
 }
 
-VkResult DeviceDriver::beginDescriptorPoolUpdate (VkDevice device, VkDescriptorUpdateMode updateMode) const
+VkResult DeviceDriver::createDescriptorSetLayout (VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, VkDescriptorSetLayout* pSetLayout) const
 {
-       return m_vk.beginDescriptorPoolUpdate(device, updateMode);
+       return m_vk.createDescriptorSetLayout(device, pCreateInfo, pSetLayout);
 }
 
-VkResult DeviceDriver::endDescriptorPoolUpdate (VkDevice device, VkCmdBuffer cmd) const
+VkResult DeviceDriver::destroyDescriptorSetLayout (VkDevice device, VkDescriptorSetLayout descriptorSetLayout) const
 {
-       return m_vk.endDescriptorPoolUpdate(device, cmd);
+       return m_vk.destroyDescriptorSetLayout(device, descriptorSetLayout);
 }
 
 VkResult DeviceDriver::createDescriptorPool (VkDevice device, VkDescriptorPoolUsage poolUsage, deUint32 maxSets, const VkDescriptorPoolCreateInfo* pCreateInfo, VkDescriptorPool* pDescriptorPool) const
@@ -317,6 +362,11 @@ VkResult DeviceDriver::createDescriptorPool (VkDevice device, VkDescriptorPoolUs
        return m_vk.createDescriptorPool(device, poolUsage, maxSets, pCreateInfo, pDescriptorPool);
 }
 
+VkResult DeviceDriver::destroyDescriptorPool (VkDevice device, VkDescriptorPool descriptorPool) const
+{
+       return m_vk.destroyDescriptorPool(device, descriptorPool);
+}
+
 VkResult DeviceDriver::resetDescriptorPool (VkDevice device, VkDescriptorPool descriptorPool) const
 {
        return m_vk.resetDescriptorPool(device, descriptorPool);
@@ -327,41 +377,101 @@ VkResult DeviceDriver::allocDescriptorSets (VkDevice device, VkDescriptorPool de
        return m_vk.allocDescriptorSets(device, descriptorPool, setUsage, count, pSetLayouts, pDescriptorSets, pCount);
 }
 
-void DeviceDriver::clearDescriptorSets (VkDevice device, VkDescriptorPool descriptorPool, deUint32 count, const VkDescriptorSet* pDescriptorSets) const
+VkResult DeviceDriver::updateDescriptorSets (VkDevice device, deUint32 writeCount, const VkWriteDescriptorSet* pDescriptorWrites, deUint32 copyCount, const VkCopyDescriptorSet* pDescriptorCopies) const
 {
-       m_vk.clearDescriptorSets(device, descriptorPool, count, pDescriptorSets);
+       return m_vk.updateDescriptorSets(device, writeCount, pDescriptorWrites, copyCount, pDescriptorCopies);
 }
 
-void DeviceDriver::updateDescriptors (VkDevice device, VkDescriptorSet descriptorSet, deUint32 updateCount, const void** ppUpdateArray) const
+VkResult DeviceDriver::createDynamicViewportState (VkDevice device, const VkDynamicViewportStateCreateInfo* pCreateInfo, VkDynamicViewportState* pState) const
 {
-       m_vk.updateDescriptors(device, descriptorSet, updateCount, ppUpdateArray);
+       return m_vk.createDynamicViewportState(device, pCreateInfo, pState);
 }
 
-VkResult DeviceDriver::createDynamicViewportState (VkDevice device, const VkDynamicVpStateCreateInfo* pCreateInfo, VkDynamicVpState* pState) const
+VkResult DeviceDriver::destroyDynamicViewportState (VkDevice device, VkDynamicViewportState dynamicViewportState) const
 {
-       return m_vk.createDynamicViewportState(device, pCreateInfo, pState);
+       return m_vk.destroyDynamicViewportState(device, dynamicViewportState);
 }
 
-VkResult DeviceDriver::createDynamicRasterState (VkDevice device, const VkDynamicRsStateCreateInfo* pCreateInfo, VkDynamicRsState* pState) const
+VkResult DeviceDriver::createDynamicRasterState (VkDevice device, const VkDynamicRasterStateCreateInfo* pCreateInfo, VkDynamicRasterState* pState) const
 {
        return m_vk.createDynamicRasterState(device, pCreateInfo, pState);
 }
 
-VkResult DeviceDriver::createDynamicColorBlendState (VkDevice device, const VkDynamicCbStateCreateInfo* pCreateInfo, VkDynamicCbState* pState) const
+VkResult DeviceDriver::destroyDynamicRasterState (VkDevice device, VkDynamicRasterState dynamicRasterState) const
+{
+       return m_vk.destroyDynamicRasterState(device, dynamicRasterState);
+}
+
+VkResult DeviceDriver::createDynamicColorBlendState (VkDevice device, const VkDynamicColorBlendStateCreateInfo* pCreateInfo, VkDynamicColorBlendState* pState) const
 {
        return m_vk.createDynamicColorBlendState(device, pCreateInfo, pState);
 }
 
-VkResult DeviceDriver::createDynamicDepthStencilState (VkDevice device, const VkDynamicDsStateCreateInfo* pCreateInfo, VkDynamicDsState* pState) const
+VkResult DeviceDriver::destroyDynamicColorBlendState (VkDevice device, VkDynamicColorBlendState dynamicColorBlendState) const
+{
+       return m_vk.destroyDynamicColorBlendState(device, dynamicColorBlendState);
+}
+
+VkResult DeviceDriver::createDynamicDepthStencilState (VkDevice device, const VkDynamicDepthStencilStateCreateInfo* pCreateInfo, VkDynamicDepthStencilState* pState) const
 {
        return m_vk.createDynamicDepthStencilState(device, pCreateInfo, pState);
 }
 
+VkResult DeviceDriver::destroyDynamicDepthStencilState (VkDevice device, VkDynamicDepthStencilState dynamicDepthStencilState) const
+{
+       return m_vk.destroyDynamicDepthStencilState(device, dynamicDepthStencilState);
+}
+
+VkResult DeviceDriver::createFramebuffer (VkDevice device, const VkFramebufferCreateInfo* pCreateInfo, VkFramebuffer* pFramebuffer) const
+{
+       return m_vk.createFramebuffer(device, pCreateInfo, pFramebuffer);
+}
+
+VkResult DeviceDriver::destroyFramebuffer (VkDevice device, VkFramebuffer framebuffer) const
+{
+       return m_vk.destroyFramebuffer(device, framebuffer);
+}
+
+VkResult DeviceDriver::createRenderPass (VkDevice device, const VkRenderPassCreateInfo* pCreateInfo, VkRenderPass* pRenderPass) const
+{
+       return m_vk.createRenderPass(device, pCreateInfo, pRenderPass);
+}
+
+VkResult DeviceDriver::destroyRenderPass (VkDevice device, VkRenderPass renderPass) const
+{
+       return m_vk.destroyRenderPass(device, renderPass);
+}
+
+VkResult DeviceDriver::getRenderAreaGranularity (VkDevice device, VkRenderPass renderPass, VkExtent2D* pGranularity) const
+{
+       return m_vk.getRenderAreaGranularity(device, renderPass, pGranularity);
+}
+
+VkResult DeviceDriver::createCommandPool (VkDevice device, const VkCmdPoolCreateInfo* pCreateInfo, VkCmdPool* pCmdPool) const
+{
+       return m_vk.createCommandPool(device, pCreateInfo, pCmdPool);
+}
+
+VkResult DeviceDriver::destroyCommandPool (VkDevice device, VkCmdPool cmdPool) const
+{
+       return m_vk.destroyCommandPool(device, cmdPool);
+}
+
+VkResult DeviceDriver::resetCommandPool (VkDevice device, VkCmdPool cmdPool, VkCmdPoolResetFlags flags) const
+{
+       return m_vk.resetCommandPool(device, cmdPool, flags);
+}
+
 VkResult DeviceDriver::createCommandBuffer (VkDevice device, const VkCmdBufferCreateInfo* pCreateInfo, VkCmdBuffer* pCmdBuffer) const
 {
        return m_vk.createCommandBuffer(device, pCreateInfo, pCmdBuffer);
 }
 
+VkResult DeviceDriver::destroyCommandBuffer (VkDevice device, VkCmdBuffer commandBuffer) const
+{
+       return m_vk.destroyCommandBuffer(device, commandBuffer);
+}
+
 VkResult DeviceDriver::beginCommandBuffer (VkCmdBuffer cmdBuffer, const VkCmdBufferBeginInfo* pBeginInfo) const
 {
        return m_vk.beginCommandBuffer(cmdBuffer, pBeginInfo);
@@ -372,9 +482,9 @@ VkResult DeviceDriver::endCommandBuffer (VkCmdBuffer cmdBuffer) const
        return m_vk.endCommandBuffer(cmdBuffer);
 }
 
-VkResult DeviceDriver::resetCommandBuffer (VkCmdBuffer cmdBuffer) const
+VkResult DeviceDriver::resetCommandBuffer (VkCmdBuffer cmdBuffer, VkCmdBufferResetFlags flags) const
 {
-       return m_vk.resetCommandBuffer(cmdBuffer);
+       return m_vk.resetCommandBuffer(cmdBuffer, flags);
 }
 
 void DeviceDriver::cmdBindPipeline (VkCmdBuffer cmdBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline) const
@@ -382,14 +492,29 @@ void DeviceDriver::cmdBindPipeline (VkCmdBuffer cmdBuffer, VkPipelineBindPoint p
        m_vk.cmdBindPipeline(cmdBuffer, pipelineBindPoint, pipeline);
 }
 
-void DeviceDriver::cmdBindDynamicStateObject (VkCmdBuffer cmdBuffer, VkStateBindPoint stateBindPoint, VkDynamicStateObject dynamicState) const
+void DeviceDriver::cmdBindDynamicViewportState (VkCmdBuffer cmdBuffer, VkDynamicViewportState dynamicViewportState) const
+{
+       m_vk.cmdBindDynamicViewportState(cmdBuffer, dynamicViewportState);
+}
+
+void DeviceDriver::cmdBindDynamicRasterState (VkCmdBuffer cmdBuffer, VkDynamicRasterState dynamicRasterState) const
 {
-       m_vk.cmdBindDynamicStateObject(cmdBuffer, stateBindPoint, dynamicState);
+       m_vk.cmdBindDynamicRasterState(cmdBuffer, dynamicRasterState);
 }
 
-void DeviceDriver::cmdBindDescriptorSets (VkCmdBuffer cmdBuffer, VkPipelineBindPoint pipelineBindPoint, deUint32 firstSet, deUint32 setCount, const VkDescriptorSet* pDescriptorSets, deUint32 dynamicOffsetCount, const deUint32* pDynamicOffsets) const
+void DeviceDriver::cmdBindDynamicColorBlendState (VkCmdBuffer cmdBuffer, VkDynamicColorBlendState dynamicColorBlendState) const
 {
-       m_vk.cmdBindDescriptorSets(cmdBuffer, pipelineBindPoint, firstSet, setCount, pDescriptorSets, dynamicOffsetCount, pDynamicOffsets);
+       m_vk.cmdBindDynamicColorBlendState(cmdBuffer, dynamicColorBlendState);
+}
+
+void DeviceDriver::cmdBindDynamicDepthStencilState (VkCmdBuffer cmdBuffer, VkDynamicDepthStencilState dynamicDepthStencilState) const
+{
+       m_vk.cmdBindDynamicDepthStencilState(cmdBuffer, dynamicDepthStencilState);
+}
+
+void DeviceDriver::cmdBindDescriptorSets (VkCmdBuffer cmdBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, deUint32 firstSet, deUint32 setCount, const VkDescriptorSet* pDescriptorSets, deUint32 dynamicOffsetCount, const deUint32* pDynamicOffsets) const
+{
+       m_vk.cmdBindDescriptorSets(cmdBuffer, pipelineBindPoint, layout, firstSet, setCount, pDescriptorSets, dynamicOffsetCount, pDynamicOffsets);
 }
 
 void DeviceDriver::cmdBindIndexBuffer (VkCmdBuffer cmdBuffer, VkBuffer buffer, VkDeviceSize offset, VkIndexType indexType) const
@@ -442,9 +567,9 @@ void DeviceDriver::cmdCopyImage (VkCmdBuffer cmdBuffer, VkImage srcImage, VkImag
        m_vk.cmdCopyImage(cmdBuffer, srcImage, srcImageLayout, destImage, destImageLayout, regionCount, pRegions);
 }
 
-void DeviceDriver::cmdBlitImage (VkCmdBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage destImage, VkImageLayout destImageLayout, deUint32 regionCount, const VkImageBlit* pRegions) const
+void DeviceDriver::cmdBlitImage (VkCmdBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage destImage, VkImageLayout destImageLayout, deUint32 regionCount, const VkImageBlit* pRegions, VkTexFilter filter) const
 {
-       m_vk.cmdBlitImage(cmdBuffer, srcImage, srcImageLayout, destImage, destImageLayout, regionCount, pRegions);
+       m_vk.cmdBlitImage(cmdBuffer, srcImage, srcImageLayout, destImage, destImageLayout, regionCount, pRegions, filter);
 }
 
 void DeviceDriver::cmdCopyBufferToImage (VkCmdBuffer cmdBuffer, VkBuffer srcBuffer, VkImage destImage, VkImageLayout destImageLayout, deUint32 regionCount, const VkBufferImageCopy* pRegions) const
@@ -457,11 +582,6 @@ void DeviceDriver::cmdCopyImageToBuffer (VkCmdBuffer cmdBuffer, VkImage srcImage
        m_vk.cmdCopyImageToBuffer(cmdBuffer, srcImage, srcImageLayout, destBuffer, regionCount, pRegions);
 }
 
-void DeviceDriver::cmdCloneImageData (VkCmdBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage destImage, VkImageLayout destImageLayout) const
-{
-       m_vk.cmdCloneImageData(cmdBuffer, srcImage, srcImageLayout, destImage, destImageLayout);
-}
-
 void DeviceDriver::cmdUpdateBuffer (VkCmdBuffer cmdBuffer, VkBuffer destBuffer, VkDeviceSize destOffset, VkDeviceSize dataSize, const deUint32* pData) const
 {
        m_vk.cmdUpdateBuffer(cmdBuffer, destBuffer, destOffset, dataSize, pData);
@@ -472,14 +592,24 @@ void DeviceDriver::cmdFillBuffer (VkCmdBuffer cmdBuffer, VkBuffer destBuffer, Vk
        m_vk.cmdFillBuffer(cmdBuffer, destBuffer, destOffset, fillSize, data);
 }
 
-void DeviceDriver::cmdClearColorImage (VkCmdBuffer cmdBuffer, VkImage image, VkImageLayout imageLayout, VkClearColor color, deUint32 rangeCount, const VkImageSubresourceRange* pRanges) const
+void DeviceDriver::cmdClearColorImage (VkCmdBuffer cmdBuffer, VkImage image, VkImageLayout imageLayout, const VkClearColorValue* pColor, deUint32 rangeCount, const VkImageSubresourceRange* pRanges) const
 {
-       m_vk.cmdClearColorImage(cmdBuffer, image, imageLayout, color, rangeCount, pRanges);
+       m_vk.cmdClearColorImage(cmdBuffer, image, imageLayout, pColor, rangeCount, pRanges);
 }
 
-void DeviceDriver::cmdClearDepthStencil (VkCmdBuffer cmdBuffer, VkImage image, VkImageLayout imageLayout, float depth, deUint32 stencil, deUint32 rangeCount, const VkImageSubresourceRange* pRanges) const
+void DeviceDriver::cmdClearDepthStencilImage (VkCmdBuffer cmdBuffer, VkImage image, VkImageLayout imageLayout, float depth, deUint32 stencil, deUint32 rangeCount, const VkImageSubresourceRange* pRanges) const
 {
-       m_vk.cmdClearDepthStencil(cmdBuffer, image, imageLayout, depth, stencil, rangeCount, pRanges);
+       m_vk.cmdClearDepthStencilImage(cmdBuffer, image, imageLayout, depth, stencil, rangeCount, pRanges);
+}
+
+void DeviceDriver::cmdClearColorAttachment (VkCmdBuffer cmdBuffer, deUint32 colorAttachment, VkImageLayout imageLayout, const VkClearColorValue* pColor, deUint32 rectCount, const VkRect3D* pRects) const
+{
+       m_vk.cmdClearColorAttachment(cmdBuffer, colorAttachment, imageLayout, pColor, rectCount, pRects);
+}
+
+void DeviceDriver::cmdClearDepthStencilAttachment (VkCmdBuffer cmdBuffer, VkImageAspectFlags imageAspectMask, VkImageLayout imageLayout, float depth, deUint32 stencil, deUint32 rectCount, const VkRect3D* pRects) const
+{
+       m_vk.cmdClearDepthStencilAttachment(cmdBuffer, imageAspectMask, imageLayout, depth, stencil, rectCount, pRects);
 }
 
 void DeviceDriver::cmdResolveImage (VkCmdBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage destImage, VkImageLayout destImageLayout, deUint32 regionCount, const VkImageResolve* pRegions) const
@@ -487,24 +617,24 @@ void DeviceDriver::cmdResolveImage (VkCmdBuffer cmdBuffer, VkImage srcImage, VkI
        m_vk.cmdResolveImage(cmdBuffer, srcImage, srcImageLayout, destImage, destImageLayout, regionCount, pRegions);
 }
 
-void DeviceDriver::cmdSetEvent (VkCmdBuffer cmdBuffer, VkEvent event, VkPipeEvent pipeEvent) const
+void DeviceDriver::cmdSetEvent (VkCmdBuffer cmdBuffer, VkEvent event, VkPipelineStageFlags stageMask) const
 {
-       m_vk.cmdSetEvent(cmdBuffer, event, pipeEvent);
+       m_vk.cmdSetEvent(cmdBuffer, event, stageMask);
 }
 
-void DeviceDriver::cmdResetEvent (VkCmdBuffer cmdBuffer, VkEvent event, VkPipeEvent pipeEvent) const
+void DeviceDriver::cmdResetEvent (VkCmdBuffer cmdBuffer, VkEvent event, VkPipelineStageFlags stageMask) const
 {
-       m_vk.cmdResetEvent(cmdBuffer, event, pipeEvent);
+       m_vk.cmdResetEvent(cmdBuffer, event, stageMask);
 }
 
-void DeviceDriver::cmdWaitEvents (VkCmdBuffer cmdBuffer, VkWaitEvent waitEvent, deUint32 eventCount, const VkEvent* pEvents, deUint32 memBarrierCount, const void** ppMemBarriers) const
+void DeviceDriver::cmdWaitEvents (VkCmdBuffer cmdBuffer, deUint32 eventCount, const VkEvent* pEvents, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags destStageMask, deUint32 memBarrierCount, const void* const* ppMemBarriers) const
 {
-       m_vk.cmdWaitEvents(cmdBuffer, waitEvent, eventCount, pEvents, memBarrierCount, ppMemBarriers);
+       m_vk.cmdWaitEvents(cmdBuffer, eventCount, pEvents, srcStageMask, destStageMask, memBarrierCount, ppMemBarriers);
 }
 
-void DeviceDriver::cmdPipelineBarrier (VkCmdBuffer cmdBuffer, VkWaitEvent waitEvent, deUint32 pipeEventCount, const VkPipeEvent* pPipeEvents, deUint32 memBarrierCount, const void** ppMemBarriers) const
+void DeviceDriver::cmdPipelineBarrier (VkCmdBuffer cmdBuffer, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags destStageMask, VkBool32 byRegion, deUint32 memBarrierCount, const void* const* ppMemBarriers) const
 {
-       m_vk.cmdPipelineBarrier(cmdBuffer, waitEvent, pipeEventCount, pPipeEvents, memBarrierCount, ppMemBarriers);
+       m_vk.cmdPipelineBarrier(cmdBuffer, srcStageMask, destStageMask, byRegion, memBarrierCount, ppMemBarriers);
 }
 
 void DeviceDriver::cmdBeginQuery (VkCmdBuffer cmdBuffer, VkQueryPool queryPool, deUint32 slot, VkQueryControlFlags flags) const
@@ -532,37 +662,27 @@ void DeviceDriver::cmdCopyQueryPoolResults (VkCmdBuffer cmdBuffer, VkQueryPool q
        m_vk.cmdCopyQueryPoolResults(cmdBuffer, queryPool, startQuery, queryCount, destBuffer, destOffset, destStride, flags);
 }
 
-void DeviceDriver::cmdInitAtomicCounters (VkCmdBuffer cmdBuffer, VkPipelineBindPoint pipelineBindPoint, deUint32 startCounter, deUint32 counterCount, const deUint32* pData) const
+void DeviceDriver::cmdPushConstants (VkCmdBuffer cmdBuffer, VkPipelineLayout layout, VkShaderStageFlags stageFlags, deUint32 start, deUint32 length, const void* values) const
 {
-       m_vk.cmdInitAtomicCounters(cmdBuffer, pipelineBindPoint, startCounter, counterCount, pData);
+       m_vk.cmdPushConstants(cmdBuffer, layout, stageFlags, start, length, values);
 }
 
-void DeviceDriver::cmdLoadAtomicCounters (VkCmdBuffer cmdBuffer, VkPipelineBindPoint pipelineBindPoint, deUint32 startCounter, deUint32 counterCount, VkBuffer srcBuffer, VkDeviceSize srcOffset) const
+void DeviceDriver::cmdBeginRenderPass (VkCmdBuffer cmdBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, VkRenderPassContents contents) const
 {
-       m_vk.cmdLoadAtomicCounters(cmdBuffer, pipelineBindPoint, startCounter, counterCount, srcBuffer, srcOffset);
+       m_vk.cmdBeginRenderPass(cmdBuffer, pRenderPassBegin, contents);
 }
 
-void DeviceDriver::cmdSaveAtomicCounters (VkCmdBuffer cmdBuffer, VkPipelineBindPoint pipelineBindPoint, deUint32 startCounter, deUint32 counterCount, VkBuffer destBuffer, VkDeviceSize destOffset) const
+void DeviceDriver::cmdNextSubpass (VkCmdBuffer cmdBuffer, VkRenderPassContents contents) const
 {
-       m_vk.cmdSaveAtomicCounters(cmdBuffer, pipelineBindPoint, startCounter, counterCount, destBuffer, destOffset);
-}
-
-VkResult DeviceDriver::createFramebuffer (VkDevice device, const VkFramebufferCreateInfo* pCreateInfo, VkFramebuffer* pFramebuffer) const
-{
-       return m_vk.createFramebuffer(device, pCreateInfo, pFramebuffer);
-}
-
-VkResult DeviceDriver::createRenderPass (VkDevice device, const VkRenderPassCreateInfo* pCreateInfo, VkRenderPass* pRenderPass) const
-{
-       return m_vk.createRenderPass(device, pCreateInfo, pRenderPass);
+       m_vk.cmdNextSubpass(cmdBuffer, contents);
 }
 
-void DeviceDriver::cmdBeginRenderPass (VkCmdBuffer cmdBuffer, const VkRenderPassBegin* pRenderPassBegin) const
+void DeviceDriver::cmdEndRenderPass (VkCmdBuffer cmdBuffer) const
 {
-       m_vk.cmdBeginRenderPass(cmdBuffer, pRenderPassBegin);
+       m_vk.cmdEndRenderPass(cmdBuffer);
 }
 
-void DeviceDriver::cmdEndRenderPass (VkCmdBuffer cmdBuffer, VkRenderPass renderPass) const
+void DeviceDriver::cmdExecuteCommands (VkCmdBuffer cmdBuffer, deUint32 cmdBuffersCount, const VkCmdBuffer* pCmdBuffers) const
 {
-       m_vk.cmdEndRenderPass(cmdBuffer, renderPass);
+       m_vk.cmdExecuteCommands(cmdBuffer, cmdBuffersCount, pCmdBuffers);
 }
index fa6c9e9..a32250c 100644 (file)
 /* WARNING: This is auto-generated file. Do not modify, since changes will
  * be lost! Modify the generating script instead.
  */
-GetPhysicalDeviceInfoFunc                              getPhysicalDeviceInfo;
-CreateDeviceFunc                                               createDevice;
-DestroyDeviceFunc                                              destroyDevice;
-GetGlobalExtensionInfoFunc                             getGlobalExtensionInfo;
-GetPhysicalDeviceExtensionInfoFunc             getPhysicalDeviceExtensionInfo;
-EnumerateLayersFunc                                            enumerateLayers;
-GetDeviceQueueFunc                                             getDeviceQueue;
-QueueSubmitFunc                                                        queueSubmit;
-QueueAddMemReferencesFunc                              queueAddMemReferences;
-QueueRemoveMemReferencesFunc                   queueRemoveMemReferences;
-QueueWaitIdleFunc                                              queueWaitIdle;
-DeviceWaitIdleFunc                                             deviceWaitIdle;
-AllocMemoryFunc                                                        allocMemory;
-FreeMemoryFunc                                                 freeMemory;
-SetMemoryPriorityFunc                                  setMemoryPriority;
-MapMemoryFunc                                                  mapMemory;
-UnmapMemoryFunc                                                        unmapMemory;
-FlushMappedMemoryFunc                                  flushMappedMemory;
-PinSystemMemoryFunc                                            pinSystemMemory;
-GetMultiDeviceCompatibilityFunc                        getMultiDeviceCompatibility;
-OpenSharedMemoryFunc                                   openSharedMemory;
-OpenSharedSemaphoreFunc                                        openSharedSemaphore;
-OpenPeerMemoryFunc                                             openPeerMemory;
-OpenPeerImageFunc                                              openPeerImage;
-DestroyObjectFunc                                              destroyObject;
-GetObjectInfoFunc                                              getObjectInfo;
-QueueBindObjectMemoryFunc                              queueBindObjectMemory;
-QueueBindObjectMemoryRangeFunc                 queueBindObjectMemoryRange;
-QueueBindImageMemoryRangeFunc                  queueBindImageMemoryRange;
-CreateFenceFunc                                                        createFence;
-ResetFencesFunc                                                        resetFences;
-GetFenceStatusFunc                                             getFenceStatus;
-WaitForFencesFunc                                              waitForFences;
-CreateSemaphoreFunc                                            createSemaphore;
-QueueSignalSemaphoreFunc                               queueSignalSemaphore;
-QueueWaitSemaphoreFunc                                 queueWaitSemaphore;
-CreateEventFunc                                                        createEvent;
-GetEventStatusFunc                                             getEventStatus;
-SetEventFunc                                                   setEvent;
-ResetEventFunc                                                 resetEvent;
-CreateQueryPoolFunc                                            createQueryPool;
-GetQueryPoolResultsFunc                                        getQueryPoolResults;
-GetFormatInfoFunc                                              getFormatInfo;
-CreateBufferFunc                                               createBuffer;
-CreateBufferViewFunc                                   createBufferView;
-CreateImageFunc                                                        createImage;
-GetImageSubresourceInfoFunc                            getImageSubresourceInfo;
-CreateImageViewFunc                                            createImageView;
-CreateColorAttachmentViewFunc                  createColorAttachmentView;
-CreateDepthStencilViewFunc                             createDepthStencilView;
-CreateShaderFunc                                               createShader;
-CreateGraphicsPipelineFunc                             createGraphicsPipeline;
-CreateGraphicsPipelineDerivativeFunc   createGraphicsPipelineDerivative;
-CreateComputePipelineFunc                              createComputePipeline;
-StorePipelineFunc                                              storePipeline;
-LoadPipelineFunc                                               loadPipeline;
-LoadPipelineDerivativeFunc                             loadPipelineDerivative;
-CreatePipelineLayoutFunc                               createPipelineLayout;
-CreateSamplerFunc                                              createSampler;
-CreateDescriptorSetLayoutFunc                  createDescriptorSetLayout;
-BeginDescriptorPoolUpdateFunc                  beginDescriptorPoolUpdate;
-EndDescriptorPoolUpdateFunc                            endDescriptorPoolUpdate;
-CreateDescriptorPoolFunc                               createDescriptorPool;
-ResetDescriptorPoolFunc                                        resetDescriptorPool;
-AllocDescriptorSetsFunc                                        allocDescriptorSets;
-ClearDescriptorSetsFunc                                        clearDescriptorSets;
-UpdateDescriptorsFunc                                  updateDescriptors;
-CreateDynamicViewportStateFunc                 createDynamicViewportState;
-CreateDynamicRasterStateFunc                   createDynamicRasterState;
-CreateDynamicColorBlendStateFunc               createDynamicColorBlendState;
-CreateDynamicDepthStencilStateFunc             createDynamicDepthStencilState;
-CreateCommandBufferFunc                                        createCommandBuffer;
-BeginCommandBufferFunc                                 beginCommandBuffer;
-EndCommandBufferFunc                                   endCommandBuffer;
-ResetCommandBufferFunc                                 resetCommandBuffer;
-CmdBindPipelineFunc                                            cmdBindPipeline;
-CmdBindDynamicStateObjectFunc                  cmdBindDynamicStateObject;
-CmdBindDescriptorSetsFunc                              cmdBindDescriptorSets;
-CmdBindIndexBufferFunc                                 cmdBindIndexBuffer;
-CmdBindVertexBuffersFunc                               cmdBindVertexBuffers;
-CmdDrawFunc                                                            cmdDraw;
-CmdDrawIndexedFunc                                             cmdDrawIndexed;
-CmdDrawIndirectFunc                                            cmdDrawIndirect;
-CmdDrawIndexedIndirectFunc                             cmdDrawIndexedIndirect;
-CmdDispatchFunc                                                        cmdDispatch;
-CmdDispatchIndirectFunc                                        cmdDispatchIndirect;
-CmdCopyBufferFunc                                              cmdCopyBuffer;
-CmdCopyImageFunc                                               cmdCopyImage;
-CmdBlitImageFunc                                               cmdBlitImage;
-CmdCopyBufferToImageFunc                               cmdCopyBufferToImage;
-CmdCopyImageToBufferFunc                               cmdCopyImageToBuffer;
-CmdCloneImageDataFunc                                  cmdCloneImageData;
-CmdUpdateBufferFunc                                            cmdUpdateBuffer;
-CmdFillBufferFunc                                              cmdFillBuffer;
-CmdClearColorImageFunc                                 cmdClearColorImage;
-CmdClearDepthStencilFunc                               cmdClearDepthStencil;
-CmdResolveImageFunc                                            cmdResolveImage;
-CmdSetEventFunc                                                        cmdSetEvent;
-CmdResetEventFunc                                              cmdResetEvent;
-CmdWaitEventsFunc                                              cmdWaitEvents;
-CmdPipelineBarrierFunc                                 cmdPipelineBarrier;
-CmdBeginQueryFunc                                              cmdBeginQuery;
-CmdEndQueryFunc                                                        cmdEndQuery;
-CmdResetQueryPoolFunc                                  cmdResetQueryPool;
-CmdWriteTimestampFunc                                  cmdWriteTimestamp;
-CmdCopyQueryPoolResultsFunc                            cmdCopyQueryPoolResults;
-CmdInitAtomicCountersFunc                              cmdInitAtomicCounters;
-CmdLoadAtomicCountersFunc                              cmdLoadAtomicCounters;
-CmdSaveAtomicCountersFunc                              cmdSaveAtomicCounters;
-CreateFramebufferFunc                                  createFramebuffer;
-CreateRenderPassFunc                                   createRenderPass;
-CmdBeginRenderPassFunc                                 cmdBeginRenderPass;
-CmdEndRenderPassFunc                                   cmdEndRenderPass;
+DestroyDeviceFunc                                                                      destroyDevice;
+GetGlobalExtensionPropertiesFunc                                       getGlobalExtensionProperties;
+GetPhysicalDeviceExtensionPropertiesFunc                       getPhysicalDeviceExtensionProperties;
+GetGlobalLayerPropertiesFunc                                           getGlobalLayerProperties;
+GetPhysicalDeviceLayerPropertiesFunc                           getPhysicalDeviceLayerProperties;
+GetDeviceQueueFunc                                                                     getDeviceQueue;
+QueueSubmitFunc                                                                                queueSubmit;
+QueueWaitIdleFunc                                                                      queueWaitIdle;
+DeviceWaitIdleFunc                                                                     deviceWaitIdle;
+AllocMemoryFunc                                                                                allocMemory;
+FreeMemoryFunc                                                                         freeMemory;
+MapMemoryFunc                                                                          mapMemory;
+UnmapMemoryFunc                                                                                unmapMemory;
+FlushMappedMemoryRangesFunc                                                    flushMappedMemoryRanges;
+InvalidateMappedMemoryRangesFunc                                       invalidateMappedMemoryRanges;
+GetDeviceMemoryCommitmentFunc                                          getDeviceMemoryCommitment;
+BindBufferMemoryFunc                                                           bindBufferMemory;
+BindImageMemoryFunc                                                                    bindImageMemory;
+GetBufferMemoryRequirementsFunc                                                getBufferMemoryRequirements;
+GetImageMemoryRequirementsFunc                                         getImageMemoryRequirements;
+GetImageSparseMemoryRequirementsFunc                           getImageSparseMemoryRequirements;
+GetPhysicalDeviceSparseImageFormatPropertiesFunc       getPhysicalDeviceSparseImageFormatProperties;
+QueueBindSparseBufferMemoryFunc                                                queueBindSparseBufferMemory;
+QueueBindSparseImageOpaqueMemoryFunc                           queueBindSparseImageOpaqueMemory;
+QueueBindSparseImageMemoryFunc                                         queueBindSparseImageMemory;
+CreateFenceFunc                                                                                createFence;
+DestroyFenceFunc                                                                       destroyFence;
+ResetFencesFunc                                                                                resetFences;
+GetFenceStatusFunc                                                                     getFenceStatus;
+WaitForFencesFunc                                                                      waitForFences;
+CreateSemaphoreFunc                                                                    createSemaphore;
+DestroySemaphoreFunc                                                           destroySemaphore;
+QueueSignalSemaphoreFunc                                                       queueSignalSemaphore;
+QueueWaitSemaphoreFunc                                                         queueWaitSemaphore;
+CreateEventFunc                                                                                createEvent;
+DestroyEventFunc                                                                       destroyEvent;
+GetEventStatusFunc                                                                     getEventStatus;
+SetEventFunc                                                                           setEvent;
+ResetEventFunc                                                                         resetEvent;
+CreateQueryPoolFunc                                                                    createQueryPool;
+DestroyQueryPoolFunc                                                           destroyQueryPool;
+GetQueryPoolResultsFunc                                                                getQueryPoolResults;
+CreateBufferFunc                                                                       createBuffer;
+DestroyBufferFunc                                                                      destroyBuffer;
+CreateBufferViewFunc                                                           createBufferView;
+DestroyBufferViewFunc                                                          destroyBufferView;
+CreateImageFunc                                                                                createImage;
+DestroyImageFunc                                                                       destroyImage;
+GetImageSubresourceLayoutFunc                                          getImageSubresourceLayout;
+CreateImageViewFunc                                                                    createImageView;
+DestroyImageViewFunc                                                           destroyImageView;
+CreateAttachmentViewFunc                                                       createAttachmentView;
+DestroyAttachmentViewFunc                                                      destroyAttachmentView;
+CreateShaderModuleFunc                                                         createShaderModule;
+DestroyShaderModuleFunc                                                                destroyShaderModule;
+CreateShaderFunc                                                                       createShader;
+DestroyShaderFunc                                                                      destroyShader;
+CreatePipelineCacheFunc                                                                createPipelineCache;
+DestroyPipelineCacheFunc                                                       destroyPipelineCache;
+GetPipelineCacheSizeFunc                                                       getPipelineCacheSize;
+GetPipelineCacheDataFunc                                                       getPipelineCacheData;
+MergePipelineCachesFunc                                                                mergePipelineCaches;
+CreateGraphicsPipelinesFunc                                                    createGraphicsPipelines;
+CreateComputePipelinesFunc                                                     createComputePipelines;
+DestroyPipelineFunc                                                                    destroyPipeline;
+CreatePipelineLayoutFunc                                                       createPipelineLayout;
+DestroyPipelineLayoutFunc                                                      destroyPipelineLayout;
+CreateSamplerFunc                                                                      createSampler;
+DestroySamplerFunc                                                                     destroySampler;
+CreateDescriptorSetLayoutFunc                                          createDescriptorSetLayout;
+DestroyDescriptorSetLayoutFunc                                         destroyDescriptorSetLayout;
+CreateDescriptorPoolFunc                                                       createDescriptorPool;
+DestroyDescriptorPoolFunc                                                      destroyDescriptorPool;
+ResetDescriptorPoolFunc                                                                resetDescriptorPool;
+AllocDescriptorSetsFunc                                                                allocDescriptorSets;
+UpdateDescriptorSetsFunc                                                       updateDescriptorSets;
+CreateDynamicViewportStateFunc                                         createDynamicViewportState;
+DestroyDynamicViewportStateFunc                                                destroyDynamicViewportState;
+CreateDynamicRasterStateFunc                                           createDynamicRasterState;
+DestroyDynamicRasterStateFunc                                          destroyDynamicRasterState;
+CreateDynamicColorBlendStateFunc                                       createDynamicColorBlendState;
+DestroyDynamicColorBlendStateFunc                                      destroyDynamicColorBlendState;
+CreateDynamicDepthStencilStateFunc                                     createDynamicDepthStencilState;
+DestroyDynamicDepthStencilStateFunc                                    destroyDynamicDepthStencilState;
+CreateFramebufferFunc                                                          createFramebuffer;
+DestroyFramebufferFunc                                                         destroyFramebuffer;
+CreateRenderPassFunc                                                           createRenderPass;
+DestroyRenderPassFunc                                                          destroyRenderPass;
+GetRenderAreaGranularityFunc                                           getRenderAreaGranularity;
+CreateCommandPoolFunc                                                          createCommandPool;
+DestroyCommandPoolFunc                                                         destroyCommandPool;
+ResetCommandPoolFunc                                                           resetCommandPool;
+CreateCommandBufferFunc                                                                createCommandBuffer;
+DestroyCommandBufferFunc                                                       destroyCommandBuffer;
+BeginCommandBufferFunc                                                         beginCommandBuffer;
+EndCommandBufferFunc                                                           endCommandBuffer;
+ResetCommandBufferFunc                                                         resetCommandBuffer;
+CmdBindPipelineFunc                                                                    cmdBindPipeline;
+CmdBindDynamicViewportStateFunc                                                cmdBindDynamicViewportState;
+CmdBindDynamicRasterStateFunc                                          cmdBindDynamicRasterState;
+CmdBindDynamicColorBlendStateFunc                                      cmdBindDynamicColorBlendState;
+CmdBindDynamicDepthStencilStateFunc                                    cmdBindDynamicDepthStencilState;
+CmdBindDescriptorSetsFunc                                                      cmdBindDescriptorSets;
+CmdBindIndexBufferFunc                                                         cmdBindIndexBuffer;
+CmdBindVertexBuffersFunc                                                       cmdBindVertexBuffers;
+CmdDrawFunc                                                                                    cmdDraw;
+CmdDrawIndexedFunc                                                                     cmdDrawIndexed;
+CmdDrawIndirectFunc                                                                    cmdDrawIndirect;
+CmdDrawIndexedIndirectFunc                                                     cmdDrawIndexedIndirect;
+CmdDispatchFunc                                                                                cmdDispatch;
+CmdDispatchIndirectFunc                                                                cmdDispatchIndirect;
+CmdCopyBufferFunc                                                                      cmdCopyBuffer;
+CmdCopyImageFunc                                                                       cmdCopyImage;
+CmdBlitImageFunc                                                                       cmdBlitImage;
+CmdCopyBufferToImageFunc                                                       cmdCopyBufferToImage;
+CmdCopyImageToBufferFunc                                                       cmdCopyImageToBuffer;
+CmdUpdateBufferFunc                                                                    cmdUpdateBuffer;
+CmdFillBufferFunc                                                                      cmdFillBuffer;
+CmdClearColorImageFunc                                                         cmdClearColorImage;
+CmdClearDepthStencilImageFunc                                          cmdClearDepthStencilImage;
+CmdClearColorAttachmentFunc                                                    cmdClearColorAttachment;
+CmdClearDepthStencilAttachmentFunc                                     cmdClearDepthStencilAttachment;
+CmdResolveImageFunc                                                                    cmdResolveImage;
+CmdSetEventFunc                                                                                cmdSetEvent;
+CmdResetEventFunc                                                                      cmdResetEvent;
+CmdWaitEventsFunc                                                                      cmdWaitEvents;
+CmdPipelineBarrierFunc                                                         cmdPipelineBarrier;
+CmdBeginQueryFunc                                                                      cmdBeginQuery;
+CmdEndQueryFunc                                                                                cmdEndQuery;
+CmdResetQueryPoolFunc                                                          cmdResetQueryPool;
+CmdWriteTimestampFunc                                                          cmdWriteTimestamp;
+CmdCopyQueryPoolResultsFunc                                                    cmdCopyQueryPoolResults;
+CmdPushConstantsFunc                                                           cmdPushConstants;
+CmdBeginRenderPassFunc                                                         cmdBeginRenderPass;
+CmdNextSubpassFunc                                                                     cmdNextSubpass;
+CmdEndRenderPassFunc                                                           cmdEndRenderPass;
+CmdExecuteCommandsFunc                                                         cmdExecuteCommands;
index a085b04..87d4bd1 100644 (file)
@@ -33,6 +33,7 @@
  *//*--------------------------------------------------------------------*/
 
 #include "vkDeviceUtil.hpp"
+#include "vkQueryUtil.hpp"
 
 #include "tcuCommandLine.hpp"
 
@@ -45,7 +46,7 @@ namespace vk
 
 using std::vector;
 
-Move<VkInstanceT> createDefaultInstance (const PlatformInterface& vkPlatform)
+Move<VkInstance> createDefaultInstance (const PlatformInterface& vkPlatform)
 {
        const struct VkApplicationInfo          appInfo                 =
        {
@@ -59,10 +60,12 @@ Move<VkInstanceT> createDefaultInstance (const PlatformInterface& vkPlatform)
        };
        const struct VkInstanceCreateInfo       instanceInfo    =
        {
-               VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO, // VkStructureType                              sType;
+               VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO, //      VkStructureType                         sType;
                DE_NULL,                                                                //      const void*                                     pNext;
                &appInfo,                                                               //      const VkApplicationInfo*        pAppInfo;
                DE_NULL,                                                                //      const VkAllocCallbacks*         pAllocCb;
+               0u,                                                                             //      deUint32                                        layerCount;
+               DE_NULL,                                                                //      const char*const*                       ppEnabledLayerNames;
                0u,                                                                             //      deUint32                                        extensionCount;
                DE_NULL                                                                 //      const char*const*                       ppEnabledExtensionNames;
        };
@@ -70,28 +73,17 @@ Move<VkInstanceT> createDefaultInstance (const PlatformInterface& vkPlatform)
        return createInstance(vkPlatform, &instanceInfo);
 }
 
-VkPhysicalDevice chooseDevice (const PlatformInterface& vkPlatform, VkInstance instance, const tcu::CommandLine& cmdLine)
+VkPhysicalDevice chooseDevice (const InstanceInterface& vkInstance, VkInstance instance, const tcu::CommandLine& cmdLine)
 {
-       vector<VkPhysicalDevice>        devices;
-       deUint32                                        numDevices      = 0;
+       const vector<VkPhysicalDevice>  devices = enumeratePhysicalDevices(vkInstance, instance);
 
-       VK_CHECK(vkPlatform.enumeratePhysicalDevices(instance, &numDevices, DE_NULL));
-
-       if (numDevices > 0)
-       {
-               devices.resize(numDevices);
-               VK_CHECK(vkPlatform.enumeratePhysicalDevices(instance, &numDevices, &devices[0]));
-
-               if (numDevices != devices.size())
-                       TCU_FAIL("Number of devices changed between queries");
+       if (devices.empty())
+               TCU_THROW(NotSupportedError, "No Vulkan devices available");
 
-               if (!de::inBounds(cmdLine.getVKDeviceId(), 1, (int)devices.size()+1))
-                       TCU_THROW(InternalError, "Invalid --deqp-vk-device-id");
+       if (!de::inBounds(cmdLine.getVKDeviceId(), 1, (int)devices.size()+1))
+               TCU_THROW(InternalError, "Invalid --deqp-vk-device-id");
 
-               return devices[(size_t)(cmdLine.getVKDeviceId()-1)];
-       }
-       else
-               TCU_THROW(NotSupportedError, "No Vulkan devices available");
+       return devices[(size_t)(cmdLine.getVKDeviceId()-1)];
 }
 
 } // vk
index 06a9549..f57d819 100644 (file)
@@ -45,8 +45,8 @@ class CommandLine;
 namespace vk
 {
 
-Move<VkInstanceT>      createDefaultInstance   (const PlatformInterface& vkPlatform);
-VkPhysicalDevice       chooseDevice                    (const PlatformInterface& vkPlatform, VkInstance instance, const tcu::CommandLine& cmdLine);
+Move<VkInstance      createDefaultInstance   (const PlatformInterface& vkPlatform);
+VkPhysicalDevice       chooseDevice                    (const InstanceInterface& vkInstance, VkInstance instance, const tcu::CommandLine& cmdLine);
 
 } // vk
 
index 37e597e..2e4fc7b 100644 (file)
 /* WARNING: This is auto-generated file. Do not modify, since changes will
  * be lost! Modify the generating script instead.
  */
-typedef VK_APICALL VkResult            (VK_APIENTRY* CreateInstanceFunc)                                       (const VkInstanceCreateInfo* pCreateInfo, VkInstance* pInstance);
-typedef VK_APICALL VkResult            (VK_APIENTRY* DestroyInstanceFunc)                                      (VkInstance instance);
-typedef VK_APICALL VkResult            (VK_APIENTRY* EnumeratePhysicalDevicesFunc)                     (VkInstance instance, deUint32* pPhysicalDeviceCount, VkPhysicalDevice* pPhysicalDevices);
-typedef VK_APICALL VkResult            (VK_APIENTRY* GetPhysicalDeviceInfoFunc)                        (VkPhysicalDevice physicalDevice, VkPhysicalDeviceInfoType infoType, deUintptr* pDataSize, void* pData);
-typedef VK_APICALL FunctionPtr (VK_APIENTRY* GetProcAddrFunc)                                          (VkPhysicalDevice physicalDevice, const char* pName);
-typedef VK_APICALL VkResult            (VK_APIENTRY* CreateDeviceFunc)                                         (VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo* pCreateInfo, VkDevice* pDevice);
-typedef VK_APICALL VkResult            (VK_APIENTRY* DestroyDeviceFunc)                                        (VkDevice device);
-typedef VK_APICALL VkResult            (VK_APIENTRY* GetGlobalExtensionInfoFunc)                       (VkExtensionInfoType infoType, deUint32 extensionIndex, deUintptr* pDataSize, void* pData);
-typedef VK_APICALL VkResult            (VK_APIENTRY* GetPhysicalDeviceExtensionInfoFunc)       (VkPhysicalDevice physicalDevice, VkExtensionInfoType infoType, deUint32 extensionIndex, deUintptr* pDataSize, void* pData);
-typedef VK_APICALL VkResult            (VK_APIENTRY* EnumerateLayersFunc)                                      (VkPhysicalDevice physicalDevice, deUintptr maxStringSize, deUintptr* pLayerCount, char* const* pOutLayers, void* pReserved);
-typedef VK_APICALL VkResult            (VK_APIENTRY* GetDeviceQueueFunc)                                       (VkDevice device, deUint32 queueNodeIndex, deUint32 queueIndex, VkQueue* pQueue);
-typedef VK_APICALL VkResult            (VK_APIENTRY* QueueSubmitFunc)                                          (VkQueue queue, deUint32 cmdBufferCount, const VkCmdBuffer* pCmdBuffers, VkFence fence);
-typedef VK_APICALL VkResult            (VK_APIENTRY* QueueAddMemReferencesFunc)                        (VkQueue queue, deUint32 count, const VkDeviceMemory* pMems);
-typedef VK_APICALL VkResult            (VK_APIENTRY* QueueRemoveMemReferencesFunc)                     (VkQueue queue, deUint32 count, const VkDeviceMemory* pMems);
-typedef VK_APICALL VkResult            (VK_APIENTRY* QueueWaitIdleFunc)                                        (VkQueue queue);
-typedef VK_APICALL VkResult            (VK_APIENTRY* DeviceWaitIdleFunc)                                       (VkDevice device);
-typedef VK_APICALL VkResult            (VK_APIENTRY* AllocMemoryFunc)                                          (VkDevice device, const VkMemoryAllocInfo* pAllocInfo, VkDeviceMemory* pMem);
-typedef VK_APICALL VkResult            (VK_APIENTRY* FreeMemoryFunc)                                           (VkDevice device, VkDeviceMemory mem);
-typedef VK_APICALL VkResult            (VK_APIENTRY* SetMemoryPriorityFunc)                            (VkDevice device, VkDeviceMemory mem, VkMemoryPriority priority);
-typedef VK_APICALL VkResult            (VK_APIENTRY* MapMemoryFunc)                                            (VkDevice device, VkDeviceMemory mem, VkDeviceSize offset, VkDeviceSize size, VkMemoryMapFlags flags, void** ppData);
-typedef VK_APICALL VkResult            (VK_APIENTRY* UnmapMemoryFunc)                                          (VkDevice device, VkDeviceMemory mem);
-typedef VK_APICALL VkResult            (VK_APIENTRY* FlushMappedMemoryFunc)                            (VkDevice device, VkDeviceMemory mem, VkDeviceSize offset, VkDeviceSize size);
-typedef VK_APICALL VkResult            (VK_APIENTRY* PinSystemMemoryFunc)                                      (VkDevice device, const void* pSysMem, deUintptr memSize, VkDeviceMemory* pMem);
-typedef VK_APICALL VkResult            (VK_APIENTRY* GetMultiDeviceCompatibilityFunc)          (VkPhysicalDevice physicalDevice0, VkPhysicalDevice physicalDevice1, VkPhysicalDeviceCompatibilityInfo* pInfo);
-typedef VK_APICALL VkResult            (VK_APIENTRY* OpenSharedMemoryFunc)                                     (VkDevice device, const VkMemoryOpenInfo* pOpenInfo, VkDeviceMemory* pMem);
-typedef VK_APICALL VkResult            (VK_APIENTRY* OpenSharedSemaphoreFunc)                          (VkDevice device, const VkSemaphoreOpenInfo* pOpenInfo, VkSemaphore* pSemaphore);
-typedef VK_APICALL VkResult            (VK_APIENTRY* OpenPeerMemoryFunc)                                       (VkDevice device, const VkPeerMemoryOpenInfo* pOpenInfo, VkDeviceMemory* pMem);
-typedef VK_APICALL VkResult            (VK_APIENTRY* OpenPeerImageFunc)                                        (VkDevice device, const VkPeerImageOpenInfo* pOpenInfo, VkImage* pImage, VkDeviceMemory* pMem);
-typedef VK_APICALL VkResult            (VK_APIENTRY* DestroyObjectFunc)                                        (VkDevice device, VkObjectType objType, VkObject object);
-typedef VK_APICALL VkResult            (VK_APIENTRY* GetObjectInfoFunc)                                        (VkDevice device, VkObjectType objType, VkObject object, VkObjectInfoType infoType, deUintptr* pDataSize, void* pData);
-typedef VK_APICALL VkResult            (VK_APIENTRY* QueueBindObjectMemoryFunc)                        (VkQueue queue, VkObjectType objType, VkObject object, deUint32 allocationIdx, VkDeviceMemory mem, VkDeviceSize memOffset);
-typedef VK_APICALL VkResult            (VK_APIENTRY* QueueBindObjectMemoryRangeFunc)           (VkQueue queue, VkObjectType objType, VkObject object, deUint32 allocationIdx, VkDeviceSize rangeOffset, VkDeviceSize rangeSize, VkDeviceMemory mem, VkDeviceSize memOffset);
-typedef VK_APICALL VkResult            (VK_APIENTRY* QueueBindImageMemoryRangeFunc)            (VkQueue queue, VkImage image, deUint32 allocationIdx, const VkImageMemoryBindInfo* pBindInfo, VkDeviceMemory mem, VkDeviceSize memOffset);
-typedef VK_APICALL VkResult            (VK_APIENTRY* CreateFenceFunc)                                          (VkDevice device, const VkFenceCreateInfo* pCreateInfo, VkFence* pFence);
-typedef VK_APICALL VkResult            (VK_APIENTRY* ResetFencesFunc)                                          (VkDevice device, deUint32 fenceCount, VkFence* pFences);
-typedef VK_APICALL VkResult            (VK_APIENTRY* GetFenceStatusFunc)                                       (VkDevice device, VkFence fence);
-typedef VK_APICALL VkResult            (VK_APIENTRY* WaitForFencesFunc)                                        (VkDevice device, deUint32 fenceCount, const VkFence* pFences, deUint32 waitAll, deUint64 timeout);
-typedef VK_APICALL VkResult            (VK_APIENTRY* CreateSemaphoreFunc)                                      (VkDevice device, const VkSemaphoreCreateInfo* pCreateInfo, VkSemaphore* pSemaphore);
-typedef VK_APICALL VkResult            (VK_APIENTRY* QueueSignalSemaphoreFunc)                         (VkQueue queue, VkSemaphore semaphore);
-typedef VK_APICALL VkResult            (VK_APIENTRY* QueueWaitSemaphoreFunc)                           (VkQueue queue, VkSemaphore semaphore);
-typedef VK_APICALL VkResult            (VK_APIENTRY* CreateEventFunc)                                          (VkDevice device, const VkEventCreateInfo* pCreateInfo, VkEvent* pEvent);
-typedef VK_APICALL VkResult            (VK_APIENTRY* GetEventStatusFunc)                                       (VkDevice device, VkEvent event);
-typedef VK_APICALL VkResult            (VK_APIENTRY* SetEventFunc)                                                     (VkDevice device, VkEvent event);
-typedef VK_APICALL VkResult            (VK_APIENTRY* ResetEventFunc)                                           (VkDevice device, VkEvent event);
-typedef VK_APICALL VkResult            (VK_APIENTRY* CreateQueryPoolFunc)                                      (VkDevice device, const VkQueryPoolCreateInfo* pCreateInfo, VkQueryPool* pQueryPool);
-typedef VK_APICALL VkResult            (VK_APIENTRY* GetQueryPoolResultsFunc)                          (VkDevice device, VkQueryPool queryPool, deUint32 startQuery, deUint32 queryCount, deUintptr* pDataSize, void* pData, VkQueryResultFlags flags);
-typedef VK_APICALL VkResult            (VK_APIENTRY* GetFormatInfoFunc)                                        (VkDevice device, VkFormat format, VkFormatInfoType infoType, deUintptr* pDataSize, void* pData);
-typedef VK_APICALL VkResult            (VK_APIENTRY* CreateBufferFunc)                                         (VkDevice device, const VkBufferCreateInfo* pCreateInfo, VkBuffer* pBuffer);
-typedef VK_APICALL VkResult            (VK_APIENTRY* CreateBufferViewFunc)                                     (VkDevice device, const VkBufferViewCreateInfo* pCreateInfo, VkBufferView* pView);
-typedef VK_APICALL VkResult            (VK_APIENTRY* CreateImageFunc)                                          (VkDevice device, const VkImageCreateInfo* pCreateInfo, VkImage* pImage);
-typedef VK_APICALL VkResult            (VK_APIENTRY* GetImageSubresourceInfoFunc)                      (VkDevice device, VkImage image, const VkImageSubresource* pSubresource, VkSubresourceInfoType infoType, deUintptr* pDataSize, void* pData);
-typedef VK_APICALL VkResult            (VK_APIENTRY* CreateImageViewFunc)                                      (VkDevice device, const VkImageViewCreateInfo* pCreateInfo, VkImageView* pView);
-typedef VK_APICALL VkResult            (VK_APIENTRY* CreateColorAttachmentViewFunc)            (VkDevice device, const VkColorAttachmentViewCreateInfo* pCreateInfo, VkColorAttachmentView* pView);
-typedef VK_APICALL VkResult            (VK_APIENTRY* CreateDepthStencilViewFunc)                       (VkDevice device, const VkDepthStencilViewCreateInfo* pCreateInfo, VkDepthStencilView* pView);
-typedef VK_APICALL VkResult            (VK_APIENTRY* CreateShaderFunc)                                         (VkDevice device, const VkShaderCreateInfo* pCreateInfo, VkShader* pShader);
-typedef VK_APICALL VkResult            (VK_APIENTRY* CreateGraphicsPipelineFunc)                       (VkDevice device, const VkGraphicsPipelineCreateInfo* pCreateInfo, VkPipeline* pPipeline);
-typedef VK_APICALL VkResult            (VK_APIENTRY* CreateGraphicsPipelineDerivativeFunc)     (VkDevice device, const VkGraphicsPipelineCreateInfo* pCreateInfo, VkPipeline basePipeline, VkPipeline* pPipeline);
-typedef VK_APICALL VkResult            (VK_APIENTRY* CreateComputePipelineFunc)                        (VkDevice device, const VkComputePipelineCreateInfo* pCreateInfo, VkPipeline* pPipeline);
-typedef VK_APICALL VkResult            (VK_APIENTRY* StorePipelineFunc)                                        (VkDevice device, VkPipeline pipeline, deUintptr* pDataSize, void* pData);
-typedef VK_APICALL VkResult            (VK_APIENTRY* LoadPipelineFunc)                                         (VkDevice device, deUintptr dataSize, const void* pData, VkPipeline* pPipeline);
-typedef VK_APICALL VkResult            (VK_APIENTRY* LoadPipelineDerivativeFunc)                       (VkDevice device, deUintptr dataSize, const void* pData, VkPipeline basePipeline, VkPipeline* pPipeline);
-typedef VK_APICALL VkResult            (VK_APIENTRY* CreatePipelineLayoutFunc)                         (VkDevice device, const VkPipelineLayoutCreateInfo* pCreateInfo, VkPipelineLayout* pPipelineLayout);
-typedef VK_APICALL VkResult            (VK_APIENTRY* CreateSamplerFunc)                                        (VkDevice device, const VkSamplerCreateInfo* pCreateInfo, VkSampler* pSampler);
-typedef VK_APICALL VkResult            (VK_APIENTRY* CreateDescriptorSetLayoutFunc)            (VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, VkDescriptorSetLayout* pSetLayout);
-typedef VK_APICALL VkResult            (VK_APIENTRY* BeginDescriptorPoolUpdateFunc)            (VkDevice device, VkDescriptorUpdateMode updateMode);
-typedef VK_APICALL VkResult            (VK_APIENTRY* EndDescriptorPoolUpdateFunc)                      (VkDevice device, VkCmdBuffer cmd);
-typedef VK_APICALL VkResult            (VK_APIENTRY* CreateDescriptorPoolFunc)                         (VkDevice device, VkDescriptorPoolUsage poolUsage, deUint32 maxSets, const VkDescriptorPoolCreateInfo* pCreateInfo, VkDescriptorPool* pDescriptorPool);
-typedef VK_APICALL VkResult            (VK_APIENTRY* ResetDescriptorPoolFunc)                          (VkDevice device, VkDescriptorPool descriptorPool);
-typedef VK_APICALL VkResult            (VK_APIENTRY* AllocDescriptorSetsFunc)                          (VkDevice device, VkDescriptorPool descriptorPool, VkDescriptorSetUsage setUsage, deUint32 count, const VkDescriptorSetLayout* pSetLayouts, VkDescriptorSet* pDescriptorSets, deUint32* pCount);
-typedef VK_APICALL void                        (VK_APIENTRY* ClearDescriptorSetsFunc)                          (VkDevice device, VkDescriptorPool descriptorPool, deUint32 count, const VkDescriptorSet* pDescriptorSets);
-typedef VK_APICALL void                        (VK_APIENTRY* UpdateDescriptorsFunc)                            (VkDevice device, VkDescriptorSet descriptorSet, deUint32 updateCount, const void** ppUpdateArray);
-typedef VK_APICALL VkResult            (VK_APIENTRY* CreateDynamicViewportStateFunc)           (VkDevice device, const VkDynamicVpStateCreateInfo* pCreateInfo, VkDynamicVpState* pState);
-typedef VK_APICALL VkResult            (VK_APIENTRY* CreateDynamicRasterStateFunc)                     (VkDevice device, const VkDynamicRsStateCreateInfo* pCreateInfo, VkDynamicRsState* pState);
-typedef VK_APICALL VkResult            (VK_APIENTRY* CreateDynamicColorBlendStateFunc)         (VkDevice device, const VkDynamicCbStateCreateInfo* pCreateInfo, VkDynamicCbState* pState);
-typedef VK_APICALL VkResult            (VK_APIENTRY* CreateDynamicDepthStencilStateFunc)       (VkDevice device, const VkDynamicDsStateCreateInfo* pCreateInfo, VkDynamicDsState* pState);
-typedef VK_APICALL VkResult            (VK_APIENTRY* CreateCommandBufferFunc)                          (VkDevice device, const VkCmdBufferCreateInfo* pCreateInfo, VkCmdBuffer* pCmdBuffer);
-typedef VK_APICALL VkResult            (VK_APIENTRY* BeginCommandBufferFunc)                           (VkCmdBuffer cmdBuffer, const VkCmdBufferBeginInfo* pBeginInfo);
-typedef VK_APICALL VkResult            (VK_APIENTRY* EndCommandBufferFunc)                                     (VkCmdBuffer cmdBuffer);
-typedef VK_APICALL VkResult            (VK_APIENTRY* ResetCommandBufferFunc)                           (VkCmdBuffer cmdBuffer);
-typedef VK_APICALL void                        (VK_APIENTRY* CmdBindPipelineFunc)                                      (VkCmdBuffer cmdBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline);
-typedef VK_APICALL void                        (VK_APIENTRY* CmdBindDynamicStateObjectFunc)            (VkCmdBuffer cmdBuffer, VkStateBindPoint stateBindPoint, VkDynamicStateObject dynamicState);
-typedef VK_APICALL void                        (VK_APIENTRY* CmdBindDescriptorSetsFunc)                        (VkCmdBuffer cmdBuffer, VkPipelineBindPoint pipelineBindPoint, deUint32 firstSet, deUint32 setCount, const VkDescriptorSet* pDescriptorSets, deUint32 dynamicOffsetCount, const deUint32* pDynamicOffsets);
-typedef VK_APICALL void                        (VK_APIENTRY* CmdBindIndexBufferFunc)                           (VkCmdBuffer cmdBuffer, VkBuffer buffer, VkDeviceSize offset, VkIndexType indexType);
-typedef VK_APICALL void                        (VK_APIENTRY* CmdBindVertexBuffersFunc)                         (VkCmdBuffer cmdBuffer, deUint32 startBinding, deUint32 bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets);
-typedef VK_APICALL void                        (VK_APIENTRY* CmdDrawFunc)                                                      (VkCmdBuffer cmdBuffer, deUint32 firstVertex, deUint32 vertexCount, deUint32 firstInstance, deUint32 instanceCount);
-typedef VK_APICALL void                        (VK_APIENTRY* CmdDrawIndexedFunc)                                       (VkCmdBuffer cmdBuffer, deUint32 firstIndex, deUint32 indexCount, deInt32 vertexOffset, deUint32 firstInstance, deUint32 instanceCount);
-typedef VK_APICALL void                        (VK_APIENTRY* CmdDrawIndirectFunc)                                      (VkCmdBuffer cmdBuffer, VkBuffer buffer, VkDeviceSize offset, deUint32 count, deUint32 stride);
-typedef VK_APICALL void                        (VK_APIENTRY* CmdDrawIndexedIndirectFunc)                       (VkCmdBuffer cmdBuffer, VkBuffer buffer, VkDeviceSize offset, deUint32 count, deUint32 stride);
-typedef VK_APICALL void                        (VK_APIENTRY* CmdDispatchFunc)                                          (VkCmdBuffer cmdBuffer, deUint32 x, deUint32 y, deUint32 z);
-typedef VK_APICALL void                        (VK_APIENTRY* CmdDispatchIndirectFunc)                          (VkCmdBuffer cmdBuffer, VkBuffer buffer, VkDeviceSize offset);
-typedef VK_APICALL void                        (VK_APIENTRY* CmdCopyBufferFunc)                                        (VkCmdBuffer cmdBuffer, VkBuffer srcBuffer, VkBuffer destBuffer, deUint32 regionCount, const VkBufferCopy* pRegions);
-typedef VK_APICALL void                        (VK_APIENTRY* CmdCopyImageFunc)                                         (VkCmdBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage destImage, VkImageLayout destImageLayout, deUint32 regionCount, const VkImageCopy* pRegions);
-typedef VK_APICALL void                        (VK_APIENTRY* CmdBlitImageFunc)                                         (VkCmdBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage destImage, VkImageLayout destImageLayout, deUint32 regionCount, const VkImageBlit* pRegions);
-typedef VK_APICALL void                        (VK_APIENTRY* CmdCopyBufferToImageFunc)                         (VkCmdBuffer cmdBuffer, VkBuffer srcBuffer, VkImage destImage, VkImageLayout destImageLayout, deUint32 regionCount, const VkBufferImageCopy* pRegions);
-typedef VK_APICALL void                        (VK_APIENTRY* CmdCopyImageToBufferFunc)                         (VkCmdBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkBuffer destBuffer, deUint32 regionCount, const VkBufferImageCopy* pRegions);
-typedef VK_APICALL void                        (VK_APIENTRY* CmdCloneImageDataFunc)                            (VkCmdBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage destImage, VkImageLayout destImageLayout);
-typedef VK_APICALL void                        (VK_APIENTRY* CmdUpdateBufferFunc)                                      (VkCmdBuffer cmdBuffer, VkBuffer destBuffer, VkDeviceSize destOffset, VkDeviceSize dataSize, const deUint32* pData);
-typedef VK_APICALL void                        (VK_APIENTRY* CmdFillBufferFunc)                                        (VkCmdBuffer cmdBuffer, VkBuffer destBuffer, VkDeviceSize destOffset, VkDeviceSize fillSize, deUint32 data);
-typedef VK_APICALL void                        (VK_APIENTRY* CmdClearColorImageFunc)                           (VkCmdBuffer cmdBuffer, VkImage image, VkImageLayout imageLayout, VkClearColor color, deUint32 rangeCount, const VkImageSubresourceRange* pRanges);
-typedef VK_APICALL void                        (VK_APIENTRY* CmdClearDepthStencilFunc)                         (VkCmdBuffer cmdBuffer, VkImage image, VkImageLayout imageLayout, float depth, deUint32 stencil, deUint32 rangeCount, const VkImageSubresourceRange* pRanges);
-typedef VK_APICALL void                        (VK_APIENTRY* CmdResolveImageFunc)                                      (VkCmdBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage destImage, VkImageLayout destImageLayout, deUint32 regionCount, const VkImageResolve* pRegions);
-typedef VK_APICALL void                        (VK_APIENTRY* CmdSetEventFunc)                                          (VkCmdBuffer cmdBuffer, VkEvent event, VkPipeEvent pipeEvent);
-typedef VK_APICALL void                        (VK_APIENTRY* CmdResetEventFunc)                                        (VkCmdBuffer cmdBuffer, VkEvent event, VkPipeEvent pipeEvent);
-typedef VK_APICALL void                        (VK_APIENTRY* CmdWaitEventsFunc)                                        (VkCmdBuffer cmdBuffer, VkWaitEvent waitEvent, deUint32 eventCount, const VkEvent* pEvents, deUint32 memBarrierCount, const void** ppMemBarriers);
-typedef VK_APICALL void                        (VK_APIENTRY* CmdPipelineBarrierFunc)                           (VkCmdBuffer cmdBuffer, VkWaitEvent waitEvent, deUint32 pipeEventCount, const VkPipeEvent* pPipeEvents, deUint32 memBarrierCount, const void** ppMemBarriers);
-typedef VK_APICALL void                        (VK_APIENTRY* CmdBeginQueryFunc)                                        (VkCmdBuffer cmdBuffer, VkQueryPool queryPool, deUint32 slot, VkQueryControlFlags flags);
-typedef VK_APICALL void                        (VK_APIENTRY* CmdEndQueryFunc)                                          (VkCmdBuffer cmdBuffer, VkQueryPool queryPool, deUint32 slot);
-typedef VK_APICALL void                        (VK_APIENTRY* CmdResetQueryPoolFunc)                            (VkCmdBuffer cmdBuffer, VkQueryPool queryPool, deUint32 startQuery, deUint32 queryCount);
-typedef VK_APICALL void                        (VK_APIENTRY* CmdWriteTimestampFunc)                            (VkCmdBuffer cmdBuffer, VkTimestampType timestampType, VkBuffer destBuffer, VkDeviceSize destOffset);
-typedef VK_APICALL void                        (VK_APIENTRY* CmdCopyQueryPoolResultsFunc)                      (VkCmdBuffer cmdBuffer, VkQueryPool queryPool, deUint32 startQuery, deUint32 queryCount, VkBuffer destBuffer, VkDeviceSize destOffset, VkDeviceSize destStride, VkQueryResultFlags flags);
-typedef VK_APICALL void                        (VK_APIENTRY* CmdInitAtomicCountersFunc)                        (VkCmdBuffer cmdBuffer, VkPipelineBindPoint pipelineBindPoint, deUint32 startCounter, deUint32 counterCount, const deUint32* pData);
-typedef VK_APICALL void                        (VK_APIENTRY* CmdLoadAtomicCountersFunc)                        (VkCmdBuffer cmdBuffer, VkPipelineBindPoint pipelineBindPoint, deUint32 startCounter, deUint32 counterCount, VkBuffer srcBuffer, VkDeviceSize srcOffset);
-typedef VK_APICALL void                        (VK_APIENTRY* CmdSaveAtomicCountersFunc)                        (VkCmdBuffer cmdBuffer, VkPipelineBindPoint pipelineBindPoint, deUint32 startCounter, deUint32 counterCount, VkBuffer destBuffer, VkDeviceSize destOffset);
-typedef VK_APICALL VkResult            (VK_APIENTRY* CreateFramebufferFunc)                            (VkDevice device, const VkFramebufferCreateInfo* pCreateInfo, VkFramebuffer* pFramebuffer);
-typedef VK_APICALL VkResult            (VK_APIENTRY* CreateRenderPassFunc)                                     (VkDevice device, const VkRenderPassCreateInfo* pCreateInfo, VkRenderPass* pRenderPass);
-typedef VK_APICALL void                        (VK_APIENTRY* CmdBeginRenderPassFunc)                           (VkCmdBuffer cmdBuffer, const VkRenderPassBegin* pRenderPassBegin);
-typedef VK_APICALL void                        (VK_APIENTRY* CmdEndRenderPassFunc)                                     (VkCmdBuffer cmdBuffer, VkRenderPass renderPass);
+typedef VK_APICALL VkResult                            (VK_APIENTRY* CreateInstanceFunc)                                                               (const VkInstanceCreateInfo* pCreateInfo, VkInstance* pInstance);
+typedef VK_APICALL VkResult                            (VK_APIENTRY* DestroyInstanceFunc)                                                              (VkInstance instance);
+typedef VK_APICALL VkResult                            (VK_APIENTRY* EnumeratePhysicalDevicesFunc)                                             (VkInstance instance, deUint32* pPhysicalDeviceCount, VkPhysicalDevice* pPhysicalDevices);
+typedef VK_APICALL VkResult                            (VK_APIENTRY* GetPhysicalDeviceFeaturesFunc)                                    (VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures* pFeatures);
+typedef VK_APICALL VkResult                            (VK_APIENTRY* GetPhysicalDeviceFormatPropertiesFunc)                    (VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties* pFormatProperties);
+typedef VK_APICALL VkResult                            (VK_APIENTRY* GetPhysicalDeviceImageFormatPropertiesFunc)               (VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageFormatProperties* pImageFormatProperties);
+typedef VK_APICALL VkResult                            (VK_APIENTRY* GetPhysicalDeviceLimitsFunc)                                              (VkPhysicalDevice physicalDevice, VkPhysicalDeviceLimits* pLimits);
+typedef VK_APICALL VkResult                            (VK_APIENTRY* GetPhysicalDevicePropertiesFunc)                                  (VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties* pProperties);
+typedef VK_APICALL VkResult                            (VK_APIENTRY* GetPhysicalDeviceQueueCountFunc)                                  (VkPhysicalDevice physicalDevice, deUint32* pCount);
+typedef VK_APICALL VkResult                            (VK_APIENTRY* GetPhysicalDeviceQueuePropertiesFunc)                             (VkPhysicalDevice physicalDevice, deUint32 count, VkPhysicalDeviceQueueProperties* pQueueProperties);
+typedef VK_APICALL VkResult                            (VK_APIENTRY* GetPhysicalDeviceMemoryPropertiesFunc)                    (VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties* pMemoryProperties);
+typedef VK_APICALL PFN_vkVoidFunction  (VK_APIENTRY* GetInstanceProcAddrFunc)                                                  (VkInstance instance, const char* pName);
+typedef VK_APICALL PFN_vkVoidFunction  (VK_APIENTRY* GetDeviceProcAddrFunc)                                                    (VkDevice device, const char* pName);
+typedef VK_APICALL VkResult                            (VK_APIENTRY* CreateDeviceFunc)                                                                 (VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo* pCreateInfo, VkDevice* pDevice);
+typedef VK_APICALL VkResult                            (VK_APIENTRY* DestroyDeviceFunc)                                                                (VkDevice device);
+typedef VK_APICALL VkResult                            (VK_APIENTRY* GetGlobalExtensionPropertiesFunc)                                 (const char* pLayerName, deUint32* pCount, VkExtensionProperties* pProperties);
+typedef VK_APICALL VkResult                            (VK_APIENTRY* GetPhysicalDeviceExtensionPropertiesFunc)                 (VkPhysicalDevice physicalDevice, const char* pLayerName, deUint32* pCount, VkExtensionProperties* pProperties);
+typedef VK_APICALL VkResult                            (VK_APIENTRY* GetGlobalLayerPropertiesFunc)                                             (deUint32* pCount, VkLayerProperties* pProperties);
+typedef VK_APICALL VkResult                            (VK_APIENTRY* GetPhysicalDeviceLayerPropertiesFunc)                             (VkPhysicalDevice physicalDevice, deUint32* pCount, VkLayerProperties* pProperties);
+typedef VK_APICALL VkResult                            (VK_APIENTRY* GetDeviceQueueFunc)                                                               (VkDevice device, deUint32 queueFamilyIndex, deUint32 queueIndex, VkQueue* pQueue);
+typedef VK_APICALL VkResult                            (VK_APIENTRY* QueueSubmitFunc)                                                                  (VkQueue queue, deUint32 cmdBufferCount, const VkCmdBuffer* pCmdBuffers, VkFence fence);
+typedef VK_APICALL VkResult                            (VK_APIENTRY* QueueWaitIdleFunc)                                                                (VkQueue queue);
+typedef VK_APICALL VkResult                            (VK_APIENTRY* DeviceWaitIdleFunc)                                                               (VkDevice device);
+typedef VK_APICALL VkResult                            (VK_APIENTRY* AllocMemoryFunc)                                                                  (VkDevice device, const VkMemoryAllocInfo* pAllocInfo, VkDeviceMemory* pMem);
+typedef VK_APICALL VkResult                            (VK_APIENTRY* FreeMemoryFunc)                                                                   (VkDevice device, VkDeviceMemory mem);
+typedef VK_APICALL VkResult                            (VK_APIENTRY* MapMemoryFunc)                                                                    (VkDevice device, VkDeviceMemory mem, VkDeviceSize offset, VkDeviceSize size, VkMemoryMapFlags flags, void** ppData);
+typedef VK_APICALL VkResult                            (VK_APIENTRY* UnmapMemoryFunc)                                                                  (VkDevice device, VkDeviceMemory mem);
+typedef VK_APICALL VkResult                            (VK_APIENTRY* FlushMappedMemoryRangesFunc)                                              (VkDevice device, deUint32 memRangeCount, const VkMappedMemoryRange* pMemRanges);
+typedef VK_APICALL VkResult                            (VK_APIENTRY* InvalidateMappedMemoryRangesFunc)                                 (VkDevice device, deUint32 memRangeCount, const VkMappedMemoryRange* pMemRanges);
+typedef VK_APICALL VkResult                            (VK_APIENTRY* GetDeviceMemoryCommitmentFunc)                                    (VkDevice device, VkDeviceMemory memory, VkDeviceSize* pCommittedMemoryInBytes);
+typedef VK_APICALL VkResult                            (VK_APIENTRY* BindBufferMemoryFunc)                                                             (VkDevice device, VkBuffer buffer, VkDeviceMemory mem, VkDeviceSize memOffset);
+typedef VK_APICALL VkResult                            (VK_APIENTRY* BindImageMemoryFunc)                                                              (VkDevice device, VkImage image, VkDeviceMemory mem, VkDeviceSize memOffset);
+typedef VK_APICALL VkResult                            (VK_APIENTRY* GetBufferMemoryRequirementsFunc)                                  (VkDevice device, VkBuffer buffer, VkMemoryRequirements* pMemoryRequirements);
+typedef VK_APICALL VkResult                            (VK_APIENTRY* GetImageMemoryRequirementsFunc)                                   (VkDevice device, VkImage image, VkMemoryRequirements* pMemoryRequirements);
+typedef VK_APICALL VkResult                            (VK_APIENTRY* GetImageSparseMemoryRequirementsFunc)                             (VkDevice device, VkImage image, deUint32* pNumRequirements, VkSparseImageMemoryRequirements* pSparseMemoryRequirements);
+typedef VK_APICALL VkResult                            (VK_APIENTRY* GetPhysicalDeviceSparseImageFormatPropertiesFunc) (VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, deUint32 samples, VkImageUsageFlags usage, VkImageTiling tiling, deUint32* pNumProperties, VkSparseImageFormatProperties* pProperties);
+typedef VK_APICALL VkResult                            (VK_APIENTRY* QueueBindSparseBufferMemoryFunc)                                  (VkQueue queue, VkBuffer buffer, deUint32 numBindings, const VkSparseMemoryBindInfo* pBindInfo);
+typedef VK_APICALL VkResult                            (VK_APIENTRY* QueueBindSparseImageOpaqueMemoryFunc)                             (VkQueue queue, VkImage image, deUint32 numBindings, const VkSparseMemoryBindInfo* pBindInfo);
+typedef VK_APICALL VkResult                            (VK_APIENTRY* QueueBindSparseImageMemoryFunc)                                   (VkQueue queue, VkImage image, deUint32 numBindings, const VkSparseImageMemoryBindInfo* pBindInfo);
+typedef VK_APICALL VkResult                            (VK_APIENTRY* CreateFenceFunc)                                                                  (VkDevice device, const VkFenceCreateInfo* pCreateInfo, VkFence* pFence);
+typedef VK_APICALL VkResult                            (VK_APIENTRY* DestroyFenceFunc)                                                                 (VkDevice device, VkFence fence);
+typedef VK_APICALL VkResult                            (VK_APIENTRY* ResetFencesFunc)                                                                  (VkDevice device, deUint32 fenceCount, const VkFence* pFences);
+typedef VK_APICALL VkResult                            (VK_APIENTRY* GetFenceStatusFunc)                                                               (VkDevice device, VkFence fence);
+typedef VK_APICALL VkResult                            (VK_APIENTRY* WaitForFencesFunc)                                                                (VkDevice device, deUint32 fenceCount, const VkFence* pFences, VkBool32 waitAll, deUint64 timeout);
+typedef VK_APICALL VkResult                            (VK_APIENTRY* CreateSemaphoreFunc)                                                              (VkDevice device, const VkSemaphoreCreateInfo* pCreateInfo, VkSemaphore* pSemaphore);
+typedef VK_APICALL VkResult                            (VK_APIENTRY* DestroySemaphoreFunc)                                                             (VkDevice device, VkSemaphore semaphore);
+typedef VK_APICALL VkResult                            (VK_APIENTRY* QueueSignalSemaphoreFunc)                                                 (VkQueue queue, VkSemaphore semaphore);
+typedef VK_APICALL VkResult                            (VK_APIENTRY* QueueWaitSemaphoreFunc)                                                   (VkQueue queue, VkSemaphore semaphore);
+typedef VK_APICALL VkResult                            (VK_APIENTRY* CreateEventFunc)                                                                  (VkDevice device, const VkEventCreateInfo* pCreateInfo, VkEvent* pEvent);
+typedef VK_APICALL VkResult                            (VK_APIENTRY* DestroyEventFunc)                                                                 (VkDevice device, VkEvent event);
+typedef VK_APICALL VkResult                            (VK_APIENTRY* GetEventStatusFunc)                                                               (VkDevice device, VkEvent event);
+typedef VK_APICALL VkResult                            (VK_APIENTRY* SetEventFunc)                                                                             (VkDevice device, VkEvent event);
+typedef VK_APICALL VkResult                            (VK_APIENTRY* ResetEventFunc)                                                                   (VkDevice device, VkEvent event);
+typedef VK_APICALL VkResult                            (VK_APIENTRY* CreateQueryPoolFunc)                                                              (VkDevice device, const VkQueryPoolCreateInfo* pCreateInfo, VkQueryPool* pQueryPool);
+typedef VK_APICALL VkResult                            (VK_APIENTRY* DestroyQueryPoolFunc)                                                             (VkDevice device, VkQueryPool queryPool);
+typedef VK_APICALL VkResult                            (VK_APIENTRY* GetQueryPoolResultsFunc)                                                  (VkDevice device, VkQueryPool queryPool, deUint32 startQuery, deUint32 queryCount, deUintptr* pDataSize, void* pData, VkQueryResultFlags flags);
+typedef VK_APICALL VkResult                            (VK_APIENTRY* CreateBufferFunc)                                                                 (VkDevice device, const VkBufferCreateInfo* pCreateInfo, VkBuffer* pBuffer);
+typedef VK_APICALL VkResult                            (VK_APIENTRY* DestroyBufferFunc)                                                                (VkDevice device, VkBuffer buffer);
+typedef VK_APICALL VkResult                            (VK_APIENTRY* CreateBufferViewFunc)                                                             (VkDevice device, const VkBufferViewCreateInfo* pCreateInfo, VkBufferView* pView);
+typedef VK_APICALL VkResult                            (VK_APIENTRY* DestroyBufferViewFunc)                                                    (VkDevice device, VkBufferView bufferView);
+typedef VK_APICALL VkResult                            (VK_APIENTRY* CreateImageFunc)                                                                  (VkDevice device, const VkImageCreateInfo* pCreateInfo, VkImage* pImage);
+typedef VK_APICALL VkResult                            (VK_APIENTRY* DestroyImageFunc)                                                                 (VkDevice device, VkImage image);
+typedef VK_APICALL VkResult                            (VK_APIENTRY* GetImageSubresourceLayoutFunc)                                    (VkDevice device, VkImage image, const VkImageSubresource* pSubresource, VkSubresourceLayout* pLayout);
+typedef VK_APICALL VkResult                            (VK_APIENTRY* CreateImageViewFunc)                                                              (VkDevice device, const VkImageViewCreateInfo* pCreateInfo, VkImageView* pView);
+typedef VK_APICALL VkResult                            (VK_APIENTRY* DestroyImageViewFunc)                                                             (VkDevice device, VkImageView imageView);
+typedef VK_APICALL VkResult                            (VK_APIENTRY* CreateAttachmentViewFunc)                                                 (VkDevice device, const VkAttachmentViewCreateInfo* pCreateInfo, VkAttachmentView* pView);
+typedef VK_APICALL VkResult                            (VK_APIENTRY* DestroyAttachmentViewFunc)                                                (VkDevice device, VkAttachmentView attachmentView);
+typedef VK_APICALL VkResult                            (VK_APIENTRY* CreateShaderModuleFunc)                                                   (VkDevice device, const VkShaderModuleCreateInfo* pCreateInfo, VkShaderModule* pShaderModule);
+typedef VK_APICALL VkResult                            (VK_APIENTRY* DestroyShaderModuleFunc)                                                  (VkDevice device, VkShaderModule shaderModule);
+typedef VK_APICALL VkResult                            (VK_APIENTRY* CreateShaderFunc)                                                                 (VkDevice device, const VkShaderCreateInfo* pCreateInfo, VkShader* pShader);
+typedef VK_APICALL VkResult                            (VK_APIENTRY* DestroyShaderFunc)                                                                (VkDevice device, VkShader shader);
+typedef VK_APICALL VkResult                            (VK_APIENTRY* CreatePipelineCacheFunc)                                                  (VkDevice device, const VkPipelineCacheCreateInfo* pCreateInfo, VkPipelineCache* pPipelineCache);
+typedef VK_APICALL VkResult                            (VK_APIENTRY* DestroyPipelineCacheFunc)                                                 (VkDevice device, VkPipelineCache pipelineCache);
+typedef VK_APICALL deUintptr                   (VK_APIENTRY* GetPipelineCacheSizeFunc)                                                 (VkDevice device, VkPipelineCache pipelineCache);
+typedef VK_APICALL VkResult                            (VK_APIENTRY* GetPipelineCacheDataFunc)                                                 (VkDevice device, VkPipelineCache pipelineCache, void* pData);
+typedef VK_APICALL VkResult                            (VK_APIENTRY* MergePipelineCachesFunc)                                                  (VkDevice device, VkPipelineCache destCache, deUint32 srcCacheCount, const VkPipelineCache* pSrcCaches);
+typedef VK_APICALL VkResult                            (VK_APIENTRY* CreateGraphicsPipelinesFunc)                                              (VkDevice device, VkPipelineCache pipelineCache, deUint32 count, const VkGraphicsPipelineCreateInfo* pCreateInfos, VkPipeline* pPipelines);
+typedef VK_APICALL VkResult                            (VK_APIENTRY* CreateComputePipelinesFunc)                                               (VkDevice device, VkPipelineCache pipelineCache, deUint32 count, const VkComputePipelineCreateInfo* pCreateInfos, VkPipeline* pPipelines);
+typedef VK_APICALL VkResult                            (VK_APIENTRY* DestroyPipelineFunc)                                                              (VkDevice device, VkPipeline pipeline);
+typedef VK_APICALL VkResult                            (VK_APIENTRY* CreatePipelineLayoutFunc)                                                 (VkDevice device, const VkPipelineLayoutCreateInfo* pCreateInfo, VkPipelineLayout* pPipelineLayout);
+typedef VK_APICALL VkResult                            (VK_APIENTRY* DestroyPipelineLayoutFunc)                                                (VkDevice device, VkPipelineLayout pipelineLayout);
+typedef VK_APICALL VkResult                            (VK_APIENTRY* CreateSamplerFunc)                                                                (VkDevice device, const VkSamplerCreateInfo* pCreateInfo, VkSampler* pSampler);
+typedef VK_APICALL VkResult                            (VK_APIENTRY* DestroySamplerFunc)                                                               (VkDevice device, VkSampler sampler);
+typedef VK_APICALL VkResult                            (VK_APIENTRY* CreateDescriptorSetLayoutFunc)                                    (VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, VkDescriptorSetLayout* pSetLayout);
+typedef VK_APICALL VkResult                            (VK_APIENTRY* DestroyDescriptorSetLayoutFunc)                                   (VkDevice device, VkDescriptorSetLayout descriptorSetLayout);
+typedef VK_APICALL VkResult                            (VK_APIENTRY* CreateDescriptorPoolFunc)                                                 (VkDevice device, VkDescriptorPoolUsage poolUsage, deUint32 maxSets, const VkDescriptorPoolCreateInfo* pCreateInfo, VkDescriptorPool* pDescriptorPool);
+typedef VK_APICALL VkResult                            (VK_APIENTRY* DestroyDescriptorPoolFunc)                                                (VkDevice device, VkDescriptorPool descriptorPool);
+typedef VK_APICALL VkResult                            (VK_APIENTRY* ResetDescriptorPoolFunc)                                                  (VkDevice device, VkDescriptorPool descriptorPool);
+typedef VK_APICALL VkResult                            (VK_APIENTRY* AllocDescriptorSetsFunc)                                                  (VkDevice device, VkDescriptorPool descriptorPool, VkDescriptorSetUsage setUsage, deUint32 count, const VkDescriptorSetLayout* pSetLayouts, VkDescriptorSet* pDescriptorSets, deUint32* pCount);
+typedef VK_APICALL VkResult                            (VK_APIENTRY* UpdateDescriptorSetsFunc)                                                 (VkDevice device, deUint32 writeCount, const VkWriteDescriptorSet* pDescriptorWrites, deUint32 copyCount, const VkCopyDescriptorSet* pDescriptorCopies);
+typedef VK_APICALL VkResult                            (VK_APIENTRY* CreateDynamicViewportStateFunc)                                   (VkDevice device, const VkDynamicViewportStateCreateInfo* pCreateInfo, VkDynamicViewportState* pState);
+typedef VK_APICALL VkResult                            (VK_APIENTRY* DestroyDynamicViewportStateFunc)                                  (VkDevice device, VkDynamicViewportState dynamicViewportState);
+typedef VK_APICALL VkResult                            (VK_APIENTRY* CreateDynamicRasterStateFunc)                                             (VkDevice device, const VkDynamicRasterStateCreateInfo* pCreateInfo, VkDynamicRasterState* pState);
+typedef VK_APICALL VkResult                            (VK_APIENTRY* DestroyDynamicRasterStateFunc)                                    (VkDevice device, VkDynamicRasterState dynamicRasterState);
+typedef VK_APICALL VkResult                            (VK_APIENTRY* CreateDynamicColorBlendStateFunc)                                 (VkDevice device, const VkDynamicColorBlendStateCreateInfo* pCreateInfo, VkDynamicColorBlendState* pState);
+typedef VK_APICALL VkResult                            (VK_APIENTRY* DestroyDynamicColorBlendStateFunc)                                (VkDevice device, VkDynamicColorBlendState dynamicColorBlendState);
+typedef VK_APICALL VkResult                            (VK_APIENTRY* CreateDynamicDepthStencilStateFunc)                               (VkDevice device, const VkDynamicDepthStencilStateCreateInfo* pCreateInfo, VkDynamicDepthStencilState* pState);
+typedef VK_APICALL VkResult                            (VK_APIENTRY* DestroyDynamicDepthStencilStateFunc)                              (VkDevice device, VkDynamicDepthStencilState dynamicDepthStencilState);
+typedef VK_APICALL VkResult                            (VK_APIENTRY* CreateFramebufferFunc)                                                    (VkDevice device, const VkFramebufferCreateInfo* pCreateInfo, VkFramebuffer* pFramebuffer);
+typedef VK_APICALL VkResult                            (VK_APIENTRY* DestroyFramebufferFunc)                                                   (VkDevice device, VkFramebuffer framebuffer);
+typedef VK_APICALL VkResult                            (VK_APIENTRY* CreateRenderPassFunc)                                                             (VkDevice device, const VkRenderPassCreateInfo* pCreateInfo, VkRenderPass* pRenderPass);
+typedef VK_APICALL VkResult                            (VK_APIENTRY* DestroyRenderPassFunc)                                                    (VkDevice device, VkRenderPass renderPass);
+typedef VK_APICALL VkResult                            (VK_APIENTRY* GetRenderAreaGranularityFunc)                                             (VkDevice device, VkRenderPass renderPass, VkExtent2D* pGranularity);
+typedef VK_APICALL VkResult                            (VK_APIENTRY* CreateCommandPoolFunc)                                                    (VkDevice device, const VkCmdPoolCreateInfo* pCreateInfo, VkCmdPool* pCmdPool);
+typedef VK_APICALL VkResult                            (VK_APIENTRY* DestroyCommandPoolFunc)                                                   (VkDevice device, VkCmdPool cmdPool);
+typedef VK_APICALL VkResult                            (VK_APIENTRY* ResetCommandPoolFunc)                                                             (VkDevice device, VkCmdPool cmdPool, VkCmdPoolResetFlags flags);
+typedef VK_APICALL VkResult                            (VK_APIENTRY* CreateCommandBufferFunc)                                                  (VkDevice device, const VkCmdBufferCreateInfo* pCreateInfo, VkCmdBuffer* pCmdBuffer);
+typedef VK_APICALL VkResult                            (VK_APIENTRY* DestroyCommandBufferFunc)                                                 (VkDevice device, VkCmdBuffer commandBuffer);
+typedef VK_APICALL VkResult                            (VK_APIENTRY* BeginCommandBufferFunc)                                                   (VkCmdBuffer cmdBuffer, const VkCmdBufferBeginInfo* pBeginInfo);
+typedef VK_APICALL VkResult                            (VK_APIENTRY* EndCommandBufferFunc)                                                             (VkCmdBuffer cmdBuffer);
+typedef VK_APICALL VkResult                            (VK_APIENTRY* ResetCommandBufferFunc)                                                   (VkCmdBuffer cmdBuffer, VkCmdBufferResetFlags flags);
+typedef VK_APICALL void                                        (VK_APIENTRY* CmdBindPipelineFunc)                                                              (VkCmdBuffer cmdBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline);
+typedef VK_APICALL void                                        (VK_APIENTRY* CmdBindDynamicViewportStateFunc)                                  (VkCmdBuffer cmdBuffer, VkDynamicViewportState dynamicViewportState);
+typedef VK_APICALL void                                        (VK_APIENTRY* CmdBindDynamicRasterStateFunc)                                    (VkCmdBuffer cmdBuffer, VkDynamicRasterState dynamicRasterState);
+typedef VK_APICALL void                                        (VK_APIENTRY* CmdBindDynamicColorBlendStateFunc)                                (VkCmdBuffer cmdBuffer, VkDynamicColorBlendState dynamicColorBlendState);
+typedef VK_APICALL void                                        (VK_APIENTRY* CmdBindDynamicDepthStencilStateFunc)                              (VkCmdBuffer cmdBuffer, VkDynamicDepthStencilState dynamicDepthStencilState);
+typedef VK_APICALL void                                        (VK_APIENTRY* CmdBindDescriptorSetsFunc)                                                (VkCmdBuffer cmdBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, deUint32 firstSet, deUint32 setCount, const VkDescriptorSet* pDescriptorSets, deUint32 dynamicOffsetCount, const deUint32* pDynamicOffsets);
+typedef VK_APICALL void                                        (VK_APIENTRY* CmdBindIndexBufferFunc)                                                   (VkCmdBuffer cmdBuffer, VkBuffer buffer, VkDeviceSize offset, VkIndexType indexType);
+typedef VK_APICALL void                                        (VK_APIENTRY* CmdBindVertexBuffersFunc)                                                 (VkCmdBuffer cmdBuffer, deUint32 startBinding, deUint32 bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets);
+typedef VK_APICALL void                                        (VK_APIENTRY* CmdDrawFunc)                                                                              (VkCmdBuffer cmdBuffer, deUint32 firstVertex, deUint32 vertexCount, deUint32 firstInstance, deUint32 instanceCount);
+typedef VK_APICALL void                                        (VK_APIENTRY* CmdDrawIndexedFunc)                                                               (VkCmdBuffer cmdBuffer, deUint32 firstIndex, deUint32 indexCount, deInt32 vertexOffset, deUint32 firstInstance, deUint32 instanceCount);
+typedef VK_APICALL void                                        (VK_APIENTRY* CmdDrawIndirectFunc)                                                              (VkCmdBuffer cmdBuffer, VkBuffer buffer, VkDeviceSize offset, deUint32 count, deUint32 stride);
+typedef VK_APICALL void                                        (VK_APIENTRY* CmdDrawIndexedIndirectFunc)                                               (VkCmdBuffer cmdBuffer, VkBuffer buffer, VkDeviceSize offset, deUint32 count, deUint32 stride);
+typedef VK_APICALL void                                        (VK_APIENTRY* CmdDispatchFunc)                                                                  (VkCmdBuffer cmdBuffer, deUint32 x, deUint32 y, deUint32 z);
+typedef VK_APICALL void                                        (VK_APIENTRY* CmdDispatchIndirectFunc)                                                  (VkCmdBuffer cmdBuffer, VkBuffer buffer, VkDeviceSize offset);
+typedef VK_APICALL void                                        (VK_APIENTRY* CmdCopyBufferFunc)                                                                (VkCmdBuffer cmdBuffer, VkBuffer srcBuffer, VkBuffer destBuffer, deUint32 regionCount, const VkBufferCopy* pRegions);
+typedef VK_APICALL void                                        (VK_APIENTRY* CmdCopyImageFunc)                                                                 (VkCmdBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage destImage, VkImageLayout destImageLayout, deUint32 regionCount, const VkImageCopy* pRegions);
+typedef VK_APICALL void                                        (VK_APIENTRY* CmdBlitImageFunc)                                                                 (VkCmdBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage destImage, VkImageLayout destImageLayout, deUint32 regionCount, const VkImageBlit* pRegions, VkTexFilter filter);
+typedef VK_APICALL void                                        (VK_APIENTRY* CmdCopyBufferToImageFunc)                                                 (VkCmdBuffer cmdBuffer, VkBuffer srcBuffer, VkImage destImage, VkImageLayout destImageLayout, deUint32 regionCount, const VkBufferImageCopy* pRegions);
+typedef VK_APICALL void                                        (VK_APIENTRY* CmdCopyImageToBufferFunc)                                                 (VkCmdBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkBuffer destBuffer, deUint32 regionCount, const VkBufferImageCopy* pRegions);
+typedef VK_APICALL void                                        (VK_APIENTRY* CmdUpdateBufferFunc)                                                              (VkCmdBuffer cmdBuffer, VkBuffer destBuffer, VkDeviceSize destOffset, VkDeviceSize dataSize, const deUint32* pData);
+typedef VK_APICALL void                                        (VK_APIENTRY* CmdFillBufferFunc)                                                                (VkCmdBuffer cmdBuffer, VkBuffer destBuffer, VkDeviceSize destOffset, VkDeviceSize fillSize, deUint32 data);
+typedef VK_APICALL void                                        (VK_APIENTRY* CmdClearColorImageFunc)                                                   (VkCmdBuffer cmdBuffer, VkImage image, VkImageLayout imageLayout, const VkClearColorValue* pColor, deUint32 rangeCount, const VkImageSubresourceRange* pRanges);
+typedef VK_APICALL void                                        (VK_APIENTRY* CmdClearDepthStencilImageFunc)                                    (VkCmdBuffer cmdBuffer, VkImage image, VkImageLayout imageLayout, float depth, deUint32 stencil, deUint32 rangeCount, const VkImageSubresourceRange* pRanges);
+typedef VK_APICALL void                                        (VK_APIENTRY* CmdClearColorAttachmentFunc)                                              (VkCmdBuffer cmdBuffer, deUint32 colorAttachment, VkImageLayout imageLayout, const VkClearColorValue* pColor, deUint32 rectCount, const VkRect3D* pRects);
+typedef VK_APICALL void                                        (VK_APIENTRY* CmdClearDepthStencilAttachmentFunc)                               (VkCmdBuffer cmdBuffer, VkImageAspectFlags imageAspectMask, VkImageLayout imageLayout, float depth, deUint32 stencil, deUint32 rectCount, const VkRect3D* pRects);
+typedef VK_APICALL void                                        (VK_APIENTRY* CmdResolveImageFunc)                                                              (VkCmdBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage destImage, VkImageLayout destImageLayout, deUint32 regionCount, const VkImageResolve* pRegions);
+typedef VK_APICALL void                                        (VK_APIENTRY* CmdSetEventFunc)                                                                  (VkCmdBuffer cmdBuffer, VkEvent event, VkPipelineStageFlags stageMask);
+typedef VK_APICALL void                                        (VK_APIENTRY* CmdResetEventFunc)                                                                (VkCmdBuffer cmdBuffer, VkEvent event, VkPipelineStageFlags stageMask);
+typedef VK_APICALL void                                        (VK_APIENTRY* CmdWaitEventsFunc)                                                                (VkCmdBuffer cmdBuffer, deUint32 eventCount, const VkEvent* pEvents, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags destStageMask, deUint32 memBarrierCount, const void* const* ppMemBarriers);
+typedef VK_APICALL void                                        (VK_APIENTRY* CmdPipelineBarrierFunc)                                                   (VkCmdBuffer cmdBuffer, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags destStageMask, VkBool32 byRegion, deUint32 memBarrierCount, const void* const* ppMemBarriers);
+typedef VK_APICALL void                                        (VK_APIENTRY* CmdBeginQueryFunc)                                                                (VkCmdBuffer cmdBuffer, VkQueryPool queryPool, deUint32 slot, VkQueryControlFlags flags);
+typedef VK_APICALL void                                        (VK_APIENTRY* CmdEndQueryFunc)                                                                  (VkCmdBuffer cmdBuffer, VkQueryPool queryPool, deUint32 slot);
+typedef VK_APICALL void                                        (VK_APIENTRY* CmdResetQueryPoolFunc)                                                    (VkCmdBuffer cmdBuffer, VkQueryPool queryPool, deUint32 startQuery, deUint32 queryCount);
+typedef VK_APICALL void                                        (VK_APIENTRY* CmdWriteTimestampFunc)                                                    (VkCmdBuffer cmdBuffer, VkTimestampType timestampType, VkBuffer destBuffer, VkDeviceSize destOffset);
+typedef VK_APICALL void                                        (VK_APIENTRY* CmdCopyQueryPoolResultsFunc)                                              (VkCmdBuffer cmdBuffer, VkQueryPool queryPool, deUint32 startQuery, deUint32 queryCount, VkBuffer destBuffer, VkDeviceSize destOffset, VkDeviceSize destStride, VkQueryResultFlags flags);
+typedef VK_APICALL void                                        (VK_APIENTRY* CmdPushConstantsFunc)                                                             (VkCmdBuffer cmdBuffer, VkPipelineLayout layout, VkShaderStageFlags stageFlags, deUint32 start, deUint32 length, const void* values);
+typedef VK_APICALL void                                        (VK_APIENTRY* CmdBeginRenderPassFunc)                                                   (VkCmdBuffer cmdBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, VkRenderPassContents contents);
+typedef VK_APICALL void                                        (VK_APIENTRY* CmdNextSubpassFunc)                                                               (VkCmdBuffer cmdBuffer, VkRenderPassContents contents);
+typedef VK_APICALL void                                        (VK_APIENTRY* CmdEndRenderPassFunc)                                                             (VkCmdBuffer cmdBuffer);
+typedef VK_APICALL void                                        (VK_APIENTRY* CmdExecuteCommandsFunc)                                                   (VkCmdBuffer cmdBuffer, deUint32 cmdBuffersCount, const VkCmdBuffer* pCmdBuffers);
diff --git a/external/vulkancts/framework/vulkan/vkGetObjectTypeImpl.inl b/external/vulkancts/framework/vulkan/vkGetObjectTypeImpl.inl
deleted file mode 100644 (file)
index e781c87..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-/* WARNING: This is auto-generated file. Do not modify, since changes will
- * be lost! Modify the generating script instead.
- */
-template<> VkObjectType        getObjectType<VkInstanceT>                              (void) { return VK_OBJECT_TYPE_INSTANCE;                                }
-template<> VkObjectType        getObjectType<VkPhysicalDeviceT>                (void) { return VK_OBJECT_TYPE_PHYSICAL_DEVICE;                 }
-template<> VkObjectType        getObjectType<VkDeviceT>                                (void) { return VK_OBJECT_TYPE_DEVICE;                                  }
-template<> VkObjectType        getObjectType<VkQueueT>                                 (void) { return VK_OBJECT_TYPE_QUEUE;                                   }
-template<> VkObjectType        getObjectType<VkCmdBufferT>                             (void) { return VK_OBJECT_TYPE_COMMAND_BUFFER;                  }
-template<> VkObjectType        getObjectType<VkDeviceMemoryT>                  (void) { return VK_OBJECT_TYPE_DEVICE_MEMORY;                   }
-template<> VkObjectType        getObjectType<VkBufferT>                                (void) { return VK_OBJECT_TYPE_BUFFER;                                  }
-template<> VkObjectType        getObjectType<VkBufferViewT>                    (void) { return VK_OBJECT_TYPE_BUFFER_VIEW;                             }
-template<> VkObjectType        getObjectType<VkImageT>                                 (void) { return VK_OBJECT_TYPE_IMAGE;                                   }
-template<> VkObjectType        getObjectType<VkImageViewT>                             (void) { return VK_OBJECT_TYPE_IMAGE_VIEW;                              }
-template<> VkObjectType        getObjectType<VkColorAttachmentViewT>   (void) { return VK_OBJECT_TYPE_COLOR_ATTACHMENT_VIEW;   }
-template<> VkObjectType        getObjectType<VkDepthStencilViewT>              (void) { return VK_OBJECT_TYPE_DEPTH_STENCIL_VIEW;              }
-template<> VkObjectType        getObjectType<VkShaderT>                                (void) { return VK_OBJECT_TYPE_SHADER;                                  }
-template<> VkObjectType        getObjectType<VkPipelineT>                              (void) { return VK_OBJECT_TYPE_PIPELINE;                                }
-template<> VkObjectType        getObjectType<VkPipelineLayoutT>                (void) { return VK_OBJECT_TYPE_PIPELINE_LAYOUT;                 }
-template<> VkObjectType        getObjectType<VkSamplerT>                               (void) { return VK_OBJECT_TYPE_SAMPLER;                                 }
-template<> VkObjectType        getObjectType<VkDescriptorSetT>                 (void) { return VK_OBJECT_TYPE_DESCRIPTOR_SET;                  }
-template<> VkObjectType        getObjectType<VkDescriptorSetLayoutT>   (void) { return VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT;   }
-template<> VkObjectType        getObjectType<VkDescriptorPoolT>                (void) { return VK_OBJECT_TYPE_DESCRIPTOR_POOL;                 }
-template<> VkObjectType        getObjectType<VkDynamicVpStateT>                (void) { return VK_OBJECT_TYPE_DYNAMIC_VP_STATE;                }
-template<> VkObjectType        getObjectType<VkDynamicRsStateT>                (void) { return VK_OBJECT_TYPE_DYNAMIC_RS_STATE;                }
-template<> VkObjectType        getObjectType<VkDynamicCbStateT>                (void) { return VK_OBJECT_TYPE_DYNAMIC_CB_STATE;                }
-template<> VkObjectType        getObjectType<VkDynamicDsStateT>                (void) { return VK_OBJECT_TYPE_DYNAMIC_DS_STATE;                }
-template<> VkObjectType        getObjectType<VkFenceT>                                 (void) { return VK_OBJECT_TYPE_FENCE;                                   }
-template<> VkObjectType        getObjectType<VkSemaphoreT>                             (void) { return VK_OBJECT_TYPE_SEMAPHORE;                               }
-template<> VkObjectType        getObjectType<VkEventT>                                 (void) { return VK_OBJECT_TYPE_EVENT;                                   }
-template<> VkObjectType        getObjectType<VkQueryPoolT>                             (void) { return VK_OBJECT_TYPE_QUERY_POOL;                              }
-template<> VkObjectType        getObjectType<VkFramebufferT>                   (void) { return VK_OBJECT_TYPE_FRAMEBUFFER;                             }
-template<> VkObjectType        getObjectType<VkRenderPassT>                    (void) { return VK_OBJECT_TYPE_RENDER_PASS;                             }
diff --git a/external/vulkancts/framework/vulkan/vkHandleType.inl b/external/vulkancts/framework/vulkan/vkHandleType.inl
new file mode 100644 (file)
index 0000000..5782358
--- /dev/null
@@ -0,0 +1,39 @@
+/* WARNING: This is auto-generated file. Do not modify, since changes will
+ * be lost! Modify the generating script instead.
+ */
+enum HandleType
+{
+       HANDLE_TYPE_INSTANCE = 0,
+       HANDLE_TYPE_PHYSICAL_DEVICE,
+       HANDLE_TYPE_DEVICE,
+       HANDLE_TYPE_QUEUE,
+       HANDLE_TYPE_CMD_BUFFER,
+       HANDLE_TYPE_FENCE,
+       HANDLE_TYPE_DEVICE_MEMORY,
+       HANDLE_TYPE_BUFFER,
+       HANDLE_TYPE_IMAGE,
+       HANDLE_TYPE_SEMAPHORE,
+       HANDLE_TYPE_EVENT,
+       HANDLE_TYPE_QUERY_POOL,
+       HANDLE_TYPE_BUFFER_VIEW,
+       HANDLE_TYPE_IMAGE_VIEW,
+       HANDLE_TYPE_ATTACHMENT_VIEW,
+       HANDLE_TYPE_SHADER_MODULE,
+       HANDLE_TYPE_SHADER,
+       HANDLE_TYPE_PIPELINE_CACHE,
+       HANDLE_TYPE_PIPELINE_LAYOUT,
+       HANDLE_TYPE_RENDER_PASS,
+       HANDLE_TYPE_PIPELINE,
+       HANDLE_TYPE_DESCRIPTOR_SET_LAYOUT,
+       HANDLE_TYPE_SAMPLER,
+       HANDLE_TYPE_DESCRIPTOR_POOL,
+       HANDLE_TYPE_DESCRIPTOR_SET,
+       HANDLE_TYPE_DYNAMIC_VIEWPORT_STATE,
+       HANDLE_TYPE_DYNAMIC_RASTER_STATE,
+       HANDLE_TYPE_DYNAMIC_COLOR_BLEND_STATE,
+       HANDLE_TYPE_DYNAMIC_DEPTH_STENCIL_STATE,
+       HANDLE_TYPE_FRAMEBUFFER,
+       HANDLE_TYPE_CMD_POOL,
+       HANDLE_TYPE_LAST
+};
+
index 8f09d3b..bfed88b 100644 (file)
 /* WARNING: This is auto-generated file. Do not modify, since changes will
  * be lost! Modify the generating script instead.
  */
-m_vk.getPhysicalDeviceInfo                             = (GetPhysicalDeviceInfoFunc)                           GET_PROC_ADDR("vkGetPhysicalDeviceInfo");
-m_vk.createDevice                                              = (CreateDeviceFunc)                                            GET_PROC_ADDR("vkCreateDevice");
-m_vk.destroyDevice                                             = (DestroyDeviceFunc)                                           GET_PROC_ADDR("vkDestroyDevice");
-m_vk.getGlobalExtensionInfo                            = (GetGlobalExtensionInfoFunc)                          GET_PROC_ADDR("vkGetGlobalExtensionInfo");
-m_vk.getPhysicalDeviceExtensionInfo            = (GetPhysicalDeviceExtensionInfoFunc)          GET_PROC_ADDR("vkGetPhysicalDeviceExtensionInfo");
-m_vk.enumerateLayers                                   = (EnumerateLayersFunc)                                         GET_PROC_ADDR("vkEnumerateLayers");
-m_vk.getDeviceQueue                                            = (GetDeviceQueueFunc)                                          GET_PROC_ADDR("vkGetDeviceQueue");
-m_vk.queueSubmit                                               = (QueueSubmitFunc)                                                     GET_PROC_ADDR("vkQueueSubmit");
-m_vk.queueAddMemReferences                             = (QueueAddMemReferencesFunc)                           GET_PROC_ADDR("vkQueueAddMemReferences");
-m_vk.queueRemoveMemReferences                  = (QueueRemoveMemReferencesFunc)                        GET_PROC_ADDR("vkQueueRemoveMemReferences");
-m_vk.queueWaitIdle                                             = (QueueWaitIdleFunc)                                           GET_PROC_ADDR("vkQueueWaitIdle");
-m_vk.deviceWaitIdle                                            = (DeviceWaitIdleFunc)                                          GET_PROC_ADDR("vkDeviceWaitIdle");
-m_vk.allocMemory                                               = (AllocMemoryFunc)                                                     GET_PROC_ADDR("vkAllocMemory");
-m_vk.freeMemory                                                        = (FreeMemoryFunc)                                                      GET_PROC_ADDR("vkFreeMemory");
-m_vk.setMemoryPriority                                 = (SetMemoryPriorityFunc)                                       GET_PROC_ADDR("vkSetMemoryPriority");
-m_vk.mapMemory                                                 = (MapMemoryFunc)                                                       GET_PROC_ADDR("vkMapMemory");
-m_vk.unmapMemory                                               = (UnmapMemoryFunc)                                                     GET_PROC_ADDR("vkUnmapMemory");
-m_vk.flushMappedMemory                                 = (FlushMappedMemoryFunc)                                       GET_PROC_ADDR("vkFlushMappedMemory");
-m_vk.pinSystemMemory                                   = (PinSystemMemoryFunc)                                         GET_PROC_ADDR("vkPinSystemMemory");
-m_vk.getMultiDeviceCompatibility               = (GetMultiDeviceCompatibilityFunc)                     GET_PROC_ADDR("vkGetMultiDeviceCompatibility");
-m_vk.openSharedMemory                                  = (OpenSharedMemoryFunc)                                        GET_PROC_ADDR("vkOpenSharedMemory");
-m_vk.openSharedSemaphore                               = (OpenSharedSemaphoreFunc)                                     GET_PROC_ADDR("vkOpenSharedSemaphore");
-m_vk.openPeerMemory                                            = (OpenPeerMemoryFunc)                                          GET_PROC_ADDR("vkOpenPeerMemory");
-m_vk.openPeerImage                                             = (OpenPeerImageFunc)                                           GET_PROC_ADDR("vkOpenPeerImage");
-m_vk.destroyObject                                             = (DestroyObjectFunc)                                           GET_PROC_ADDR("vkDestroyObject");
-m_vk.getObjectInfo                                             = (GetObjectInfoFunc)                                           GET_PROC_ADDR("vkGetObjectInfo");
-m_vk.queueBindObjectMemory                             = (QueueBindObjectMemoryFunc)                           GET_PROC_ADDR("vkQueueBindObjectMemory");
-m_vk.queueBindObjectMemoryRange                        = (QueueBindObjectMemoryRangeFunc)                      GET_PROC_ADDR("vkQueueBindObjectMemoryRange");
-m_vk.queueBindImageMemoryRange                 = (QueueBindImageMemoryRangeFunc)                       GET_PROC_ADDR("vkQueueBindImageMemoryRange");
-m_vk.createFence                                               = (CreateFenceFunc)                                                     GET_PROC_ADDR("vkCreateFence");
-m_vk.resetFences                                               = (ResetFencesFunc)                                                     GET_PROC_ADDR("vkResetFences");
-m_vk.getFenceStatus                                            = (GetFenceStatusFunc)                                          GET_PROC_ADDR("vkGetFenceStatus");
-m_vk.waitForFences                                             = (WaitForFencesFunc)                                           GET_PROC_ADDR("vkWaitForFences");
-m_vk.createSemaphore                                   = (CreateSemaphoreFunc)                                         GET_PROC_ADDR("vkCreateSemaphore");
-m_vk.queueSignalSemaphore                              = (QueueSignalSemaphoreFunc)                            GET_PROC_ADDR("vkQueueSignalSemaphore");
-m_vk.queueWaitSemaphore                                        = (QueueWaitSemaphoreFunc)                                      GET_PROC_ADDR("vkQueueWaitSemaphore");
-m_vk.createEvent                                               = (CreateEventFunc)                                                     GET_PROC_ADDR("vkCreateEvent");
-m_vk.getEventStatus                                            = (GetEventStatusFunc)                                          GET_PROC_ADDR("vkGetEventStatus");
-m_vk.setEvent                                                  = (SetEventFunc)                                                        GET_PROC_ADDR("vkSetEvent");
-m_vk.resetEvent                                                        = (ResetEventFunc)                                                      GET_PROC_ADDR("vkResetEvent");
-m_vk.createQueryPool                                   = (CreateQueryPoolFunc)                                         GET_PROC_ADDR("vkCreateQueryPool");
-m_vk.getQueryPoolResults                               = (GetQueryPoolResultsFunc)                                     GET_PROC_ADDR("vkGetQueryPoolResults");
-m_vk.getFormatInfo                                             = (GetFormatInfoFunc)                                           GET_PROC_ADDR("vkGetFormatInfo");
-m_vk.createBuffer                                              = (CreateBufferFunc)                                            GET_PROC_ADDR("vkCreateBuffer");
-m_vk.createBufferView                                  = (CreateBufferViewFunc)                                        GET_PROC_ADDR("vkCreateBufferView");
-m_vk.createImage                                               = (CreateImageFunc)                                                     GET_PROC_ADDR("vkCreateImage");
-m_vk.getImageSubresourceInfo                   = (GetImageSubresourceInfoFunc)                         GET_PROC_ADDR("vkGetImageSubresourceInfo");
-m_vk.createImageView                                   = (CreateImageViewFunc)                                         GET_PROC_ADDR("vkCreateImageView");
-m_vk.createColorAttachmentView                 = (CreateColorAttachmentViewFunc)                       GET_PROC_ADDR("vkCreateColorAttachmentView");
-m_vk.createDepthStencilView                            = (CreateDepthStencilViewFunc)                          GET_PROC_ADDR("vkCreateDepthStencilView");
-m_vk.createShader                                              = (CreateShaderFunc)                                            GET_PROC_ADDR("vkCreateShader");
-m_vk.createGraphicsPipeline                            = (CreateGraphicsPipelineFunc)                          GET_PROC_ADDR("vkCreateGraphicsPipeline");
-m_vk.createGraphicsPipelineDerivative  = (CreateGraphicsPipelineDerivativeFunc)        GET_PROC_ADDR("vkCreateGraphicsPipelineDerivative");
-m_vk.createComputePipeline                             = (CreateComputePipelineFunc)                           GET_PROC_ADDR("vkCreateComputePipeline");
-m_vk.storePipeline                                             = (StorePipelineFunc)                                           GET_PROC_ADDR("vkStorePipeline");
-m_vk.loadPipeline                                              = (LoadPipelineFunc)                                            GET_PROC_ADDR("vkLoadPipeline");
-m_vk.loadPipelineDerivative                            = (LoadPipelineDerivativeFunc)                          GET_PROC_ADDR("vkLoadPipelineDerivative");
-m_vk.createPipelineLayout                              = (CreatePipelineLayoutFunc)                            GET_PROC_ADDR("vkCreatePipelineLayout");
-m_vk.createSampler                                             = (CreateSamplerFunc)                                           GET_PROC_ADDR("vkCreateSampler");
-m_vk.createDescriptorSetLayout                 = (CreateDescriptorSetLayoutFunc)                       GET_PROC_ADDR("vkCreateDescriptorSetLayout");
-m_vk.beginDescriptorPoolUpdate                 = (BeginDescriptorPoolUpdateFunc)                       GET_PROC_ADDR("vkBeginDescriptorPoolUpdate");
-m_vk.endDescriptorPoolUpdate                   = (EndDescriptorPoolUpdateFunc)                         GET_PROC_ADDR("vkEndDescriptorPoolUpdate");
-m_vk.createDescriptorPool                              = (CreateDescriptorPoolFunc)                            GET_PROC_ADDR("vkCreateDescriptorPool");
-m_vk.resetDescriptorPool                               = (ResetDescriptorPoolFunc)                                     GET_PROC_ADDR("vkResetDescriptorPool");
-m_vk.allocDescriptorSets                               = (AllocDescriptorSetsFunc)                                     GET_PROC_ADDR("vkAllocDescriptorSets");
-m_vk.clearDescriptorSets                               = (ClearDescriptorSetsFunc)                                     GET_PROC_ADDR("vkClearDescriptorSets");
-m_vk.updateDescriptors                                 = (UpdateDescriptorsFunc)                                       GET_PROC_ADDR("vkUpdateDescriptors");
-m_vk.createDynamicViewportState                        = (CreateDynamicViewportStateFunc)                      GET_PROC_ADDR("vkCreateDynamicViewportState");
-m_vk.createDynamicRasterState                  = (CreateDynamicRasterStateFunc)                        GET_PROC_ADDR("vkCreateDynamicRasterState");
-m_vk.createDynamicColorBlendState              = (CreateDynamicColorBlendStateFunc)            GET_PROC_ADDR("vkCreateDynamicColorBlendState");
-m_vk.createDynamicDepthStencilState            = (CreateDynamicDepthStencilStateFunc)          GET_PROC_ADDR("vkCreateDynamicDepthStencilState");
-m_vk.createCommandBuffer                               = (CreateCommandBufferFunc)                                     GET_PROC_ADDR("vkCreateCommandBuffer");
-m_vk.beginCommandBuffer                                        = (BeginCommandBufferFunc)                                      GET_PROC_ADDR("vkBeginCommandBuffer");
-m_vk.endCommandBuffer                                  = (EndCommandBufferFunc)                                        GET_PROC_ADDR("vkEndCommandBuffer");
-m_vk.resetCommandBuffer                                        = (ResetCommandBufferFunc)                                      GET_PROC_ADDR("vkResetCommandBuffer");
-m_vk.cmdBindPipeline                                   = (CmdBindPipelineFunc)                                         GET_PROC_ADDR("vkCmdBindPipeline");
-m_vk.cmdBindDynamicStateObject                 = (CmdBindDynamicStateObjectFunc)                       GET_PROC_ADDR("vkCmdBindDynamicStateObject");
-m_vk.cmdBindDescriptorSets                             = (CmdBindDescriptorSetsFunc)                           GET_PROC_ADDR("vkCmdBindDescriptorSets");
-m_vk.cmdBindIndexBuffer                                        = (CmdBindIndexBufferFunc)                                      GET_PROC_ADDR("vkCmdBindIndexBuffer");
-m_vk.cmdBindVertexBuffers                              = (CmdBindVertexBuffersFunc)                            GET_PROC_ADDR("vkCmdBindVertexBuffers");
-m_vk.cmdDraw                                                   = (CmdDrawFunc)                                                         GET_PROC_ADDR("vkCmdDraw");
-m_vk.cmdDrawIndexed                                            = (CmdDrawIndexedFunc)                                          GET_PROC_ADDR("vkCmdDrawIndexed");
-m_vk.cmdDrawIndirect                                   = (CmdDrawIndirectFunc)                                         GET_PROC_ADDR("vkCmdDrawIndirect");
-m_vk.cmdDrawIndexedIndirect                            = (CmdDrawIndexedIndirectFunc)                          GET_PROC_ADDR("vkCmdDrawIndexedIndirect");
-m_vk.cmdDispatch                                               = (CmdDispatchFunc)                                                     GET_PROC_ADDR("vkCmdDispatch");
-m_vk.cmdDispatchIndirect                               = (CmdDispatchIndirectFunc)                                     GET_PROC_ADDR("vkCmdDispatchIndirect");
-m_vk.cmdCopyBuffer                                             = (CmdCopyBufferFunc)                                           GET_PROC_ADDR("vkCmdCopyBuffer");
-m_vk.cmdCopyImage                                              = (CmdCopyImageFunc)                                            GET_PROC_ADDR("vkCmdCopyImage");
-m_vk.cmdBlitImage                                              = (CmdBlitImageFunc)                                            GET_PROC_ADDR("vkCmdBlitImage");
-m_vk.cmdCopyBufferToImage                              = (CmdCopyBufferToImageFunc)                            GET_PROC_ADDR("vkCmdCopyBufferToImage");
-m_vk.cmdCopyImageToBuffer                              = (CmdCopyImageToBufferFunc)                            GET_PROC_ADDR("vkCmdCopyImageToBuffer");
-m_vk.cmdCloneImageData                                 = (CmdCloneImageDataFunc)                                       GET_PROC_ADDR("vkCmdCloneImageData");
-m_vk.cmdUpdateBuffer                                   = (CmdUpdateBufferFunc)                                         GET_PROC_ADDR("vkCmdUpdateBuffer");
-m_vk.cmdFillBuffer                                             = (CmdFillBufferFunc)                                           GET_PROC_ADDR("vkCmdFillBuffer");
-m_vk.cmdClearColorImage                                        = (CmdClearColorImageFunc)                                      GET_PROC_ADDR("vkCmdClearColorImage");
-m_vk.cmdClearDepthStencil                              = (CmdClearDepthStencilFunc)                            GET_PROC_ADDR("vkCmdClearDepthStencil");
-m_vk.cmdResolveImage                                   = (CmdResolveImageFunc)                                         GET_PROC_ADDR("vkCmdResolveImage");
-m_vk.cmdSetEvent                                               = (CmdSetEventFunc)                                                     GET_PROC_ADDR("vkCmdSetEvent");
-m_vk.cmdResetEvent                                             = (CmdResetEventFunc)                                           GET_PROC_ADDR("vkCmdResetEvent");
-m_vk.cmdWaitEvents                                             = (CmdWaitEventsFunc)                                           GET_PROC_ADDR("vkCmdWaitEvents");
-m_vk.cmdPipelineBarrier                                        = (CmdPipelineBarrierFunc)                                      GET_PROC_ADDR("vkCmdPipelineBarrier");
-m_vk.cmdBeginQuery                                             = (CmdBeginQueryFunc)                                           GET_PROC_ADDR("vkCmdBeginQuery");
-m_vk.cmdEndQuery                                               = (CmdEndQueryFunc)                                                     GET_PROC_ADDR("vkCmdEndQuery");
-m_vk.cmdResetQueryPool                                 = (CmdResetQueryPoolFunc)                                       GET_PROC_ADDR("vkCmdResetQueryPool");
-m_vk.cmdWriteTimestamp                                 = (CmdWriteTimestampFunc)                                       GET_PROC_ADDR("vkCmdWriteTimestamp");
-m_vk.cmdCopyQueryPoolResults                   = (CmdCopyQueryPoolResultsFunc)                         GET_PROC_ADDR("vkCmdCopyQueryPoolResults");
-m_vk.cmdInitAtomicCounters                             = (CmdInitAtomicCountersFunc)                           GET_PROC_ADDR("vkCmdInitAtomicCounters");
-m_vk.cmdLoadAtomicCounters                             = (CmdLoadAtomicCountersFunc)                           GET_PROC_ADDR("vkCmdLoadAtomicCounters");
-m_vk.cmdSaveAtomicCounters                             = (CmdSaveAtomicCountersFunc)                           GET_PROC_ADDR("vkCmdSaveAtomicCounters");
-m_vk.createFramebuffer                                 = (CreateFramebufferFunc)                                       GET_PROC_ADDR("vkCreateFramebuffer");
-m_vk.createRenderPass                                  = (CreateRenderPassFunc)                                        GET_PROC_ADDR("vkCreateRenderPass");
-m_vk.cmdBeginRenderPass                                        = (CmdBeginRenderPassFunc)                                      GET_PROC_ADDR("vkCmdBeginRenderPass");
-m_vk.cmdEndRenderPass                                  = (CmdEndRenderPassFunc)                                        GET_PROC_ADDR("vkCmdEndRenderPass");
+m_vk.destroyDevice                                                                     = (DestroyDeviceFunc)                                                                   GET_PROC_ADDR("vkDestroyDevice");
+m_vk.getGlobalExtensionProperties                                      = (GetGlobalExtensionPropertiesFunc)                                    GET_PROC_ADDR("vkGetGlobalExtensionProperties");
+m_vk.getPhysicalDeviceExtensionProperties                      = (GetPhysicalDeviceExtensionPropertiesFunc)                    GET_PROC_ADDR("vkGetPhysicalDeviceExtensionProperties");
+m_vk.getGlobalLayerProperties                                          = (GetGlobalLayerPropertiesFunc)                                                GET_PROC_ADDR("vkGetGlobalLayerProperties");
+m_vk.getPhysicalDeviceLayerProperties                          = (GetPhysicalDeviceLayerPropertiesFunc)                                GET_PROC_ADDR("vkGetPhysicalDeviceLayerProperties");
+m_vk.getDeviceQueue                                                                    = (GetDeviceQueueFunc)                                                                  GET_PROC_ADDR("vkGetDeviceQueue");
+m_vk.queueSubmit                                                                       = (QueueSubmitFunc)                                                                             GET_PROC_ADDR("vkQueueSubmit");
+m_vk.queueWaitIdle                                                                     = (QueueWaitIdleFunc)                                                                   GET_PROC_ADDR("vkQueueWaitIdle");
+m_vk.deviceWaitIdle                                                                    = (DeviceWaitIdleFunc)                                                                  GET_PROC_ADDR("vkDeviceWaitIdle");
+m_vk.allocMemory                                                                       = (AllocMemoryFunc)                                                                             GET_PROC_ADDR("vkAllocMemory");
+m_vk.freeMemory                                                                                = (FreeMemoryFunc)                                                                              GET_PROC_ADDR("vkFreeMemory");
+m_vk.mapMemory                                                                         = (MapMemoryFunc)                                                                               GET_PROC_ADDR("vkMapMemory");
+m_vk.unmapMemory                                                                       = (UnmapMemoryFunc)                                                                             GET_PROC_ADDR("vkUnmapMemory");
+m_vk.flushMappedMemoryRanges                                           = (FlushMappedMemoryRangesFunc)                                                 GET_PROC_ADDR("vkFlushMappedMemoryRanges");
+m_vk.invalidateMappedMemoryRanges                                      = (InvalidateMappedMemoryRangesFunc)                                    GET_PROC_ADDR("vkInvalidateMappedMemoryRanges");
+m_vk.getDeviceMemoryCommitment                                         = (GetDeviceMemoryCommitmentFunc)                                               GET_PROC_ADDR("vkGetDeviceMemoryCommitment");
+m_vk.bindBufferMemory                                                          = (BindBufferMemoryFunc)                                                                GET_PROC_ADDR("vkBindBufferMemory");
+m_vk.bindImageMemory                                                           = (BindImageMemoryFunc)                                                                 GET_PROC_ADDR("vkBindImageMemory");
+m_vk.getBufferMemoryRequirements                                       = (GetBufferMemoryRequirementsFunc)                                             GET_PROC_ADDR("vkGetBufferMemoryRequirements");
+m_vk.getImageMemoryRequirements                                                = (GetImageMemoryRequirementsFunc)                                              GET_PROC_ADDR("vkGetImageMemoryRequirements");
+m_vk.getImageSparseMemoryRequirements                          = (GetImageSparseMemoryRequirementsFunc)                                GET_PROC_ADDR("vkGetImageSparseMemoryRequirements");
+m_vk.getPhysicalDeviceSparseImageFormatProperties      = (GetPhysicalDeviceSparseImageFormatPropertiesFunc)    GET_PROC_ADDR("vkGetPhysicalDeviceSparseImageFormatProperties");
+m_vk.queueBindSparseBufferMemory                                       = (QueueBindSparseBufferMemoryFunc)                                             GET_PROC_ADDR("vkQueueBindSparseBufferMemory");
+m_vk.queueBindSparseImageOpaqueMemory                          = (QueueBindSparseImageOpaqueMemoryFunc)                                GET_PROC_ADDR("vkQueueBindSparseImageOpaqueMemory");
+m_vk.queueBindSparseImageMemory                                                = (QueueBindSparseImageMemoryFunc)                                              GET_PROC_ADDR("vkQueueBindSparseImageMemory");
+m_vk.createFence                                                                       = (CreateFenceFunc)                                                                             GET_PROC_ADDR("vkCreateFence");
+m_vk.destroyFence                                                                      = (DestroyFenceFunc)                                                                    GET_PROC_ADDR("vkDestroyFence");
+m_vk.resetFences                                                                       = (ResetFencesFunc)                                                                             GET_PROC_ADDR("vkResetFences");
+m_vk.getFenceStatus                                                                    = (GetFenceStatusFunc)                                                                  GET_PROC_ADDR("vkGetFenceStatus");
+m_vk.waitForFences                                                                     = (WaitForFencesFunc)                                                                   GET_PROC_ADDR("vkWaitForFences");
+m_vk.createSemaphore                                                           = (CreateSemaphoreFunc)                                                                 GET_PROC_ADDR("vkCreateSemaphore");
+m_vk.destroySemaphore                                                          = (DestroySemaphoreFunc)                                                                GET_PROC_ADDR("vkDestroySemaphore");
+m_vk.queueSignalSemaphore                                                      = (QueueSignalSemaphoreFunc)                                                    GET_PROC_ADDR("vkQueueSignalSemaphore");
+m_vk.queueWaitSemaphore                                                                = (QueueWaitSemaphoreFunc)                                                              GET_PROC_ADDR("vkQueueWaitSemaphore");
+m_vk.createEvent                                                                       = (CreateEventFunc)                                                                             GET_PROC_ADDR("vkCreateEvent");
+m_vk.destroyEvent                                                                      = (DestroyEventFunc)                                                                    GET_PROC_ADDR("vkDestroyEvent");
+m_vk.getEventStatus                                                                    = (GetEventStatusFunc)                                                                  GET_PROC_ADDR("vkGetEventStatus");
+m_vk.setEvent                                                                          = (SetEventFunc)                                                                                GET_PROC_ADDR("vkSetEvent");
+m_vk.resetEvent                                                                                = (ResetEventFunc)                                                                              GET_PROC_ADDR("vkResetEvent");
+m_vk.createQueryPool                                                           = (CreateQueryPoolFunc)                                                                 GET_PROC_ADDR("vkCreateQueryPool");
+m_vk.destroyQueryPool                                                          = (DestroyQueryPoolFunc)                                                                GET_PROC_ADDR("vkDestroyQueryPool");
+m_vk.getQueryPoolResults                                                       = (GetQueryPoolResultsFunc)                                                             GET_PROC_ADDR("vkGetQueryPoolResults");
+m_vk.createBuffer                                                                      = (CreateBufferFunc)                                                                    GET_PROC_ADDR("vkCreateBuffer");
+m_vk.destroyBuffer                                                                     = (DestroyBufferFunc)                                                                   GET_PROC_ADDR("vkDestroyBuffer");
+m_vk.createBufferView                                                          = (CreateBufferViewFunc)                                                                GET_PROC_ADDR("vkCreateBufferView");
+m_vk.destroyBufferView                                                         = (DestroyBufferViewFunc)                                                               GET_PROC_ADDR("vkDestroyBufferView");
+m_vk.createImage                                                                       = (CreateImageFunc)                                                                             GET_PROC_ADDR("vkCreateImage");
+m_vk.destroyImage                                                                      = (DestroyImageFunc)                                                                    GET_PROC_ADDR("vkDestroyImage");
+m_vk.getImageSubresourceLayout                                         = (GetImageSubresourceLayoutFunc)                                               GET_PROC_ADDR("vkGetImageSubresourceLayout");
+m_vk.createImageView                                                           = (CreateImageViewFunc)                                                                 GET_PROC_ADDR("vkCreateImageView");
+m_vk.destroyImageView                                                          = (DestroyImageViewFunc)                                                                GET_PROC_ADDR("vkDestroyImageView");
+m_vk.createAttachmentView                                                      = (CreateAttachmentViewFunc)                                                    GET_PROC_ADDR("vkCreateAttachmentView");
+m_vk.destroyAttachmentView                                                     = (DestroyAttachmentViewFunc)                                                   GET_PROC_ADDR("vkDestroyAttachmentView");
+m_vk.createShaderModule                                                                = (CreateShaderModuleFunc)                                                              GET_PROC_ADDR("vkCreateShaderModule");
+m_vk.destroyShaderModule                                                       = (DestroyShaderModuleFunc)                                                             GET_PROC_ADDR("vkDestroyShaderModule");
+m_vk.createShader                                                                      = (CreateShaderFunc)                                                                    GET_PROC_ADDR("vkCreateShader");
+m_vk.destroyShader                                                                     = (DestroyShaderFunc)                                                                   GET_PROC_ADDR("vkDestroyShader");
+m_vk.createPipelineCache                                                       = (CreatePipelineCacheFunc)                                                             GET_PROC_ADDR("vkCreatePipelineCache");
+m_vk.destroyPipelineCache                                                      = (DestroyPipelineCacheFunc)                                                    GET_PROC_ADDR("vkDestroyPipelineCache");
+m_vk.getPipelineCacheSize                                                      = (GetPipelineCacheSizeFunc)                                                    GET_PROC_ADDR("vkGetPipelineCacheSize");
+m_vk.getPipelineCacheData                                                      = (GetPipelineCacheDataFunc)                                                    GET_PROC_ADDR("vkGetPipelineCacheData");
+m_vk.mergePipelineCaches                                                       = (MergePipelineCachesFunc)                                                             GET_PROC_ADDR("vkMergePipelineCaches");
+m_vk.createGraphicsPipelines                                           = (CreateGraphicsPipelinesFunc)                                                 GET_PROC_ADDR("vkCreateGraphicsPipelines");
+m_vk.createComputePipelines                                                    = (CreateComputePipelinesFunc)                                                  GET_PROC_ADDR("vkCreateComputePipelines");
+m_vk.destroyPipeline                                                           = (DestroyPipelineFunc)                                                                 GET_PROC_ADDR("vkDestroyPipeline");
+m_vk.createPipelineLayout                                                      = (CreatePipelineLayoutFunc)                                                    GET_PROC_ADDR("vkCreatePipelineLayout");
+m_vk.destroyPipelineLayout                                                     = (DestroyPipelineLayoutFunc)                                                   GET_PROC_ADDR("vkDestroyPipelineLayout");
+m_vk.createSampler                                                                     = (CreateSamplerFunc)                                                                   GET_PROC_ADDR("vkCreateSampler");
+m_vk.destroySampler                                                                    = (DestroySamplerFunc)                                                                  GET_PROC_ADDR("vkDestroySampler");
+m_vk.createDescriptorSetLayout                                         = (CreateDescriptorSetLayoutFunc)                                               GET_PROC_ADDR("vkCreateDescriptorSetLayout");
+m_vk.destroyDescriptorSetLayout                                                = (DestroyDescriptorSetLayoutFunc)                                              GET_PROC_ADDR("vkDestroyDescriptorSetLayout");
+m_vk.createDescriptorPool                                                      = (CreateDescriptorPoolFunc)                                                    GET_PROC_ADDR("vkCreateDescriptorPool");
+m_vk.destroyDescriptorPool                                                     = (DestroyDescriptorPoolFunc)                                                   GET_PROC_ADDR("vkDestroyDescriptorPool");
+m_vk.resetDescriptorPool                                                       = (ResetDescriptorPoolFunc)                                                             GET_PROC_ADDR("vkResetDescriptorPool");
+m_vk.allocDescriptorSets                                                       = (AllocDescriptorSetsFunc)                                                             GET_PROC_ADDR("vkAllocDescriptorSets");
+m_vk.updateDescriptorSets                                                      = (UpdateDescriptorSetsFunc)                                                    GET_PROC_ADDR("vkUpdateDescriptorSets");
+m_vk.createDynamicViewportState                                                = (CreateDynamicViewportStateFunc)                                              GET_PROC_ADDR("vkCreateDynamicViewportState");
+m_vk.destroyDynamicViewportState                                       = (DestroyDynamicViewportStateFunc)                                             GET_PROC_ADDR("vkDestroyDynamicViewportState");
+m_vk.createDynamicRasterState                                          = (CreateDynamicRasterStateFunc)                                                GET_PROC_ADDR("vkCreateDynamicRasterState");
+m_vk.destroyDynamicRasterState                                         = (DestroyDynamicRasterStateFunc)                                               GET_PROC_ADDR("vkDestroyDynamicRasterState");
+m_vk.createDynamicColorBlendState                                      = (CreateDynamicColorBlendStateFunc)                                    GET_PROC_ADDR("vkCreateDynamicColorBlendState");
+m_vk.destroyDynamicColorBlendState                                     = (DestroyDynamicColorBlendStateFunc)                                   GET_PROC_ADDR("vkDestroyDynamicColorBlendState");
+m_vk.createDynamicDepthStencilState                                    = (CreateDynamicDepthStencilStateFunc)                                  GET_PROC_ADDR("vkCreateDynamicDepthStencilState");
+m_vk.destroyDynamicDepthStencilState                           = (DestroyDynamicDepthStencilStateFunc)                                 GET_PROC_ADDR("vkDestroyDynamicDepthStencilState");
+m_vk.createFramebuffer                                                         = (CreateFramebufferFunc)                                                               GET_PROC_ADDR("vkCreateFramebuffer");
+m_vk.destroyFramebuffer                                                                = (DestroyFramebufferFunc)                                                              GET_PROC_ADDR("vkDestroyFramebuffer");
+m_vk.createRenderPass                                                          = (CreateRenderPassFunc)                                                                GET_PROC_ADDR("vkCreateRenderPass");
+m_vk.destroyRenderPass                                                         = (DestroyRenderPassFunc)                                                               GET_PROC_ADDR("vkDestroyRenderPass");
+m_vk.getRenderAreaGranularity                                          = (GetRenderAreaGranularityFunc)                                                GET_PROC_ADDR("vkGetRenderAreaGranularity");
+m_vk.createCommandPool                                                         = (CreateCommandPoolFunc)                                                               GET_PROC_ADDR("vkCreateCommandPool");
+m_vk.destroyCommandPool                                                                = (DestroyCommandPoolFunc)                                                              GET_PROC_ADDR("vkDestroyCommandPool");
+m_vk.resetCommandPool                                                          = (ResetCommandPoolFunc)                                                                GET_PROC_ADDR("vkResetCommandPool");
+m_vk.createCommandBuffer                                                       = (CreateCommandBufferFunc)                                                             GET_PROC_ADDR("vkCreateCommandBuffer");
+m_vk.destroyCommandBuffer                                                      = (DestroyCommandBufferFunc)                                                    GET_PROC_ADDR("vkDestroyCommandBuffer");
+m_vk.beginCommandBuffer                                                                = (BeginCommandBufferFunc)                                                              GET_PROC_ADDR("vkBeginCommandBuffer");
+m_vk.endCommandBuffer                                                          = (EndCommandBufferFunc)                                                                GET_PROC_ADDR("vkEndCommandBuffer");
+m_vk.resetCommandBuffer                                                                = (ResetCommandBufferFunc)                                                              GET_PROC_ADDR("vkResetCommandBuffer");
+m_vk.cmdBindPipeline                                                           = (CmdBindPipelineFunc)                                                                 GET_PROC_ADDR("vkCmdBindPipeline");
+m_vk.cmdBindDynamicViewportState                                       = (CmdBindDynamicViewportStateFunc)                                             GET_PROC_ADDR("vkCmdBindDynamicViewportState");
+m_vk.cmdBindDynamicRasterState                                         = (CmdBindDynamicRasterStateFunc)                                               GET_PROC_ADDR("vkCmdBindDynamicRasterState");
+m_vk.cmdBindDynamicColorBlendState                                     = (CmdBindDynamicColorBlendStateFunc)                                   GET_PROC_ADDR("vkCmdBindDynamicColorBlendState");
+m_vk.cmdBindDynamicDepthStencilState                           = (CmdBindDynamicDepthStencilStateFunc)                                 GET_PROC_ADDR("vkCmdBindDynamicDepthStencilState");
+m_vk.cmdBindDescriptorSets                                                     = (CmdBindDescriptorSetsFunc)                                                   GET_PROC_ADDR("vkCmdBindDescriptorSets");
+m_vk.cmdBindIndexBuffer                                                                = (CmdBindIndexBufferFunc)                                                              GET_PROC_ADDR("vkCmdBindIndexBuffer");
+m_vk.cmdBindVertexBuffers                                                      = (CmdBindVertexBuffersFunc)                                                    GET_PROC_ADDR("vkCmdBindVertexBuffers");
+m_vk.cmdDraw                                                                           = (CmdDrawFunc)                                                                                 GET_PROC_ADDR("vkCmdDraw");
+m_vk.cmdDrawIndexed                                                                    = (CmdDrawIndexedFunc)                                                                  GET_PROC_ADDR("vkCmdDrawIndexed");
+m_vk.cmdDrawIndirect                                                           = (CmdDrawIndirectFunc)                                                                 GET_PROC_ADDR("vkCmdDrawIndirect");
+m_vk.cmdDrawIndexedIndirect                                                    = (CmdDrawIndexedIndirectFunc)                                                  GET_PROC_ADDR("vkCmdDrawIndexedIndirect");
+m_vk.cmdDispatch                                                                       = (CmdDispatchFunc)                                                                             GET_PROC_ADDR("vkCmdDispatch");
+m_vk.cmdDispatchIndirect                                                       = (CmdDispatchIndirectFunc)                                                             GET_PROC_ADDR("vkCmdDispatchIndirect");
+m_vk.cmdCopyBuffer                                                                     = (CmdCopyBufferFunc)                                                                   GET_PROC_ADDR("vkCmdCopyBuffer");
+m_vk.cmdCopyImage                                                                      = (CmdCopyImageFunc)                                                                    GET_PROC_ADDR("vkCmdCopyImage");
+m_vk.cmdBlitImage                                                                      = (CmdBlitImageFunc)                                                                    GET_PROC_ADDR("vkCmdBlitImage");
+m_vk.cmdCopyBufferToImage                                                      = (CmdCopyBufferToImageFunc)                                                    GET_PROC_ADDR("vkCmdCopyBufferToImage");
+m_vk.cmdCopyImageToBuffer                                                      = (CmdCopyImageToBufferFunc)                                                    GET_PROC_ADDR("vkCmdCopyImageToBuffer");
+m_vk.cmdUpdateBuffer                                                           = (CmdUpdateBufferFunc)                                                                 GET_PROC_ADDR("vkCmdUpdateBuffer");
+m_vk.cmdFillBuffer                                                                     = (CmdFillBufferFunc)                                                                   GET_PROC_ADDR("vkCmdFillBuffer");
+m_vk.cmdClearColorImage                                                                = (CmdClearColorImageFunc)                                                              GET_PROC_ADDR("vkCmdClearColorImage");
+m_vk.cmdClearDepthStencilImage                                         = (CmdClearDepthStencilImageFunc)                                               GET_PROC_ADDR("vkCmdClearDepthStencilImage");
+m_vk.cmdClearColorAttachment                                           = (CmdClearColorAttachmentFunc)                                                 GET_PROC_ADDR("vkCmdClearColorAttachment");
+m_vk.cmdClearDepthStencilAttachment                                    = (CmdClearDepthStencilAttachmentFunc)                                  GET_PROC_ADDR("vkCmdClearDepthStencilAttachment");
+m_vk.cmdResolveImage                                                           = (CmdResolveImageFunc)                                                                 GET_PROC_ADDR("vkCmdResolveImage");
+m_vk.cmdSetEvent                                                                       = (CmdSetEventFunc)                                                                             GET_PROC_ADDR("vkCmdSetEvent");
+m_vk.cmdResetEvent                                                                     = (CmdResetEventFunc)                                                                   GET_PROC_ADDR("vkCmdResetEvent");
+m_vk.cmdWaitEvents                                                                     = (CmdWaitEventsFunc)                                                                   GET_PROC_ADDR("vkCmdWaitEvents");
+m_vk.cmdPipelineBarrier                                                                = (CmdPipelineBarrierFunc)                                                              GET_PROC_ADDR("vkCmdPipelineBarrier");
+m_vk.cmdBeginQuery                                                                     = (CmdBeginQueryFunc)                                                                   GET_PROC_ADDR("vkCmdBeginQuery");
+m_vk.cmdEndQuery                                                                       = (CmdEndQueryFunc)                                                                             GET_PROC_ADDR("vkCmdEndQuery");
+m_vk.cmdResetQueryPool                                                         = (CmdResetQueryPoolFunc)                                                               GET_PROC_ADDR("vkCmdResetQueryPool");
+m_vk.cmdWriteTimestamp                                                         = (CmdWriteTimestampFunc)                                                               GET_PROC_ADDR("vkCmdWriteTimestamp");
+m_vk.cmdCopyQueryPoolResults                                           = (CmdCopyQueryPoolResultsFunc)                                                 GET_PROC_ADDR("vkCmdCopyQueryPoolResults");
+m_vk.cmdPushConstants                                                          = (CmdPushConstantsFunc)                                                                GET_PROC_ADDR("vkCmdPushConstants");
+m_vk.cmdBeginRenderPass                                                                = (CmdBeginRenderPassFunc)                                                              GET_PROC_ADDR("vkCmdBeginRenderPass");
+m_vk.cmdNextSubpass                                                                    = (CmdNextSubpassFunc)                                                                  GET_PROC_ADDR("vkCmdNextSubpass");
+m_vk.cmdEndRenderPass                                                          = (CmdEndRenderPassFunc)                                                                GET_PROC_ADDR("vkCmdEndRenderPass");
+m_vk.cmdExecuteCommands                                                                = (CmdExecuteCommandsFunc)                                                              GET_PROC_ADDR("vkCmdExecuteCommands");
diff --git a/external/vulkancts/framework/vulkan/vkInitInstanceFunctionPointers.inl b/external/vulkancts/framework/vulkan/vkInitInstanceFunctionPointers.inl
new file mode 100644 (file)
index 0000000..3729a4a
--- /dev/null
@@ -0,0 +1,15 @@
+/* WARNING: This is auto-generated file. Do not modify, since changes will
+ * be lost! Modify the generating script instead.
+ */
+m_vk.destroyInstance                                           = (DestroyInstanceFunc)                                                 GET_PROC_ADDR("vkDestroyInstance");
+m_vk.enumeratePhysicalDevices                          = (EnumeratePhysicalDevicesFunc)                                GET_PROC_ADDR("vkEnumeratePhysicalDevices");
+m_vk.getPhysicalDeviceFeatures                         = (GetPhysicalDeviceFeaturesFunc)                               GET_PROC_ADDR("vkGetPhysicalDeviceFeatures");
+m_vk.getPhysicalDeviceFormatProperties         = (GetPhysicalDeviceFormatPropertiesFunc)               GET_PROC_ADDR("vkGetPhysicalDeviceFormatProperties");
+m_vk.getPhysicalDeviceImageFormatProperties    = (GetPhysicalDeviceImageFormatPropertiesFunc)  GET_PROC_ADDR("vkGetPhysicalDeviceImageFormatProperties");
+m_vk.getPhysicalDeviceLimits                           = (GetPhysicalDeviceLimitsFunc)                                 GET_PROC_ADDR("vkGetPhysicalDeviceLimits");
+m_vk.getPhysicalDeviceProperties                       = (GetPhysicalDevicePropertiesFunc)                             GET_PROC_ADDR("vkGetPhysicalDeviceProperties");
+m_vk.getPhysicalDeviceQueueCount                       = (GetPhysicalDeviceQueueCountFunc)                             GET_PROC_ADDR("vkGetPhysicalDeviceQueueCount");
+m_vk.getPhysicalDeviceQueueProperties          = (GetPhysicalDeviceQueuePropertiesFunc)                GET_PROC_ADDR("vkGetPhysicalDeviceQueueProperties");
+m_vk.getPhysicalDeviceMemoryProperties         = (GetPhysicalDeviceMemoryPropertiesFunc)               GET_PROC_ADDR("vkGetPhysicalDeviceMemoryProperties");
+m_vk.getDeviceProcAddr                                         = (GetDeviceProcAddrFunc)                                               GET_PROC_ADDR("vkGetDeviceProcAddr");
+m_vk.createDevice                                                      = (CreateDeviceFunc)                                                    GET_PROC_ADDR("vkCreateDevice");
index 1870f31..c9eec85 100644 (file)
@@ -1,6 +1,5 @@
 /* WARNING: This is auto-generated file. Do not modify, since changes will
  * be lost! Modify the generating script instead.
  */
-m_vk.createInstance                            = (CreateInstanceFunc)                          GET_PROC_ADDR("vkCreateInstance");
-m_vk.destroyInstance                   = (DestroyInstanceFunc)                         GET_PROC_ADDR("vkDestroyInstance");
-m_vk.enumeratePhysicalDevices  = (EnumeratePhysicalDevicesFunc)        GET_PROC_ADDR("vkEnumeratePhysicalDevices");
+m_vk.createInstance                    = (CreateInstanceFunc)          GET_PROC_ADDR("vkCreateInstance");
+m_vk.getInstanceProcAddr       = (GetInstanceProcAddrFunc)     GET_PROC_ADDR("vkGetInstanceProcAddr");
diff --git a/external/vulkancts/framework/vulkan/vkInstanceDriverImpl.inl b/external/vulkancts/framework/vulkan/vkInstanceDriverImpl.inl
new file mode 100644 (file)
index 0000000..07d7a8e
--- /dev/null
@@ -0,0 +1,63 @@
+/* WARNING: This is auto-generated file. Do not modify, since changes will
+ * be lost! Modify the generating script instead.
+ */
+
+VkResult InstanceDriver::destroyInstance (VkInstance instance) const
+{
+       return m_vk.destroyInstance(instance);
+}
+
+VkResult InstanceDriver::enumeratePhysicalDevices (VkInstance instance, deUint32* pPhysicalDeviceCount, VkPhysicalDevice* pPhysicalDevices) const
+{
+       return m_vk.enumeratePhysicalDevices(instance, pPhysicalDeviceCount, pPhysicalDevices);
+}
+
+VkResult InstanceDriver::getPhysicalDeviceFeatures (VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures* pFeatures) const
+{
+       return m_vk.getPhysicalDeviceFeatures(physicalDevice, pFeatures);
+}
+
+VkResult InstanceDriver::getPhysicalDeviceFormatProperties (VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties* pFormatProperties) const
+{
+       return m_vk.getPhysicalDeviceFormatProperties(physicalDevice, format, pFormatProperties);
+}
+
+VkResult InstanceDriver::getPhysicalDeviceImageFormatProperties (VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageFormatProperties* pImageFormatProperties) const
+{
+       return m_vk.getPhysicalDeviceImageFormatProperties(physicalDevice, format, type, tiling, usage, pImageFormatProperties);
+}
+
+VkResult InstanceDriver::getPhysicalDeviceLimits (VkPhysicalDevice physicalDevice, VkPhysicalDeviceLimits* pLimits) const
+{
+       return m_vk.getPhysicalDeviceLimits(physicalDevice, pLimits);
+}
+
+VkResult InstanceDriver::getPhysicalDeviceProperties (VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties* pProperties) const
+{
+       return m_vk.getPhysicalDeviceProperties(physicalDevice, pProperties);
+}
+
+VkResult InstanceDriver::getPhysicalDeviceQueueCount (VkPhysicalDevice physicalDevice, deUint32* pCount) const
+{
+       return m_vk.getPhysicalDeviceQueueCount(physicalDevice, pCount);
+}
+
+VkResult InstanceDriver::getPhysicalDeviceQueueProperties (VkPhysicalDevice physicalDevice, deUint32 count, VkPhysicalDeviceQueueProperties* pQueueProperties) const
+{
+       return m_vk.getPhysicalDeviceQueueProperties(physicalDevice, count, pQueueProperties);
+}
+
+VkResult InstanceDriver::getPhysicalDeviceMemoryProperties (VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties* pMemoryProperties) const
+{
+       return m_vk.getPhysicalDeviceMemoryProperties(physicalDevice, pMemoryProperties);
+}
+
+PFN_vkVoidFunction InstanceDriver::getDeviceProcAddr (VkDevice device, const char* pName) const
+{
+       return m_vk.getDeviceProcAddr(device, pName);
+}
+
+VkResult InstanceDriver::createDevice (VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo* pCreateInfo, VkDevice* pDevice) const
+{
+       return m_vk.createDevice(physicalDevice, pCreateInfo, pDevice);
+}
diff --git a/external/vulkancts/framework/vulkan/vkInstanceFunctionPointers.inl b/external/vulkancts/framework/vulkan/vkInstanceFunctionPointers.inl
new file mode 100644 (file)
index 0000000..a212893
--- /dev/null
@@ -0,0 +1,15 @@
+/* WARNING: This is auto-generated file. Do not modify, since changes will
+ * be lost! Modify the generating script instead.
+ */
+DestroyInstanceFunc                                                    destroyInstance;
+EnumeratePhysicalDevicesFunc                           enumeratePhysicalDevices;
+GetPhysicalDeviceFeaturesFunc                          getPhysicalDeviceFeatures;
+GetPhysicalDeviceFormatPropertiesFunc          getPhysicalDeviceFormatProperties;
+GetPhysicalDeviceImageFormatPropertiesFunc     getPhysicalDeviceImageFormatProperties;
+GetPhysicalDeviceLimitsFunc                                    getPhysicalDeviceLimits;
+GetPhysicalDevicePropertiesFunc                                getPhysicalDeviceProperties;
+GetPhysicalDeviceQueueCountFunc                                getPhysicalDeviceQueueCount;
+GetPhysicalDeviceQueuePropertiesFunc           getPhysicalDeviceQueueProperties;
+GetPhysicalDeviceMemoryPropertiesFunc          getPhysicalDeviceMemoryProperties;
+GetDeviceProcAddrFunc                                          getDeviceProcAddr;
+CreateDeviceFunc                                                       createDevice;
index c189677..5c57264 100644 (file)
@@ -34,6 +34,9 @@
 
 #include "vkMemUtil.hpp"
 #include "vkStrUtil.hpp"
+#include "vkQueryUtil.hpp"
+#include "vkRef.hpp"
+#include "deInt32.h"
 
 #include <sstream>
 
@@ -42,6 +45,23 @@ namespace vk
 
 using de::MovePtr;
 
+namespace
+{
+
+deUint32 selectMemoryTypeWithProperties (const VkPhysicalDeviceMemoryProperties& deviceMemProps, deUint32 allowedMemTypeBits, VkMemoryPropertyFlags allocProps)
+{
+       for (deUint32 memoryTypeNdx = 0; memoryTypeNdx < deviceMemProps.memoryTypeCount; memoryTypeNdx++)
+       {
+               if ((allowedMemTypeBits & (1u << memoryTypeNdx)) != 0 &&
+                       (deviceMemProps.memoryTypes[memoryTypeNdx].propertyFlags & allocProps) == allocProps)
+                       return memoryTypeNdx;
+       }
+
+       TCU_THROW(NotSupportedError, "No compatible memory type found");
+}
+
+} // anonymous
+
 // Allocation
 
 Allocation::Allocation (VkDeviceMemory memory, VkDeviceSize offset)
@@ -59,78 +79,48 @@ Allocation::~Allocation (void)
 class SimpleAllocation : public Allocation
 {
 public:
-                                                       SimpleAllocation        (const DeviceInterface& vk, VkDevice device, VkDeviceMemory memory);
-       virtual                                 ~SimpleAllocation       (void);
+                                                                       SimpleAllocation        (Move<VkDeviceMemory> mem);
+       virtual                                                 ~SimpleAllocation       (void);
 
 private:
-       const DeviceInterface&  m_vk;
-       const VkDevice                  m_device;
+       const Unique<VkDeviceMemory>    m_memHolder;
 };
 
-SimpleAllocation::SimpleAllocation (const DeviceInterface& vk, VkDevice device, VkDeviceMemory memory)
-       : Allocation(memory, (VkDeviceSize)0)
-       , m_vk          (vk)
-       , m_device      (device)
+SimpleAllocation::SimpleAllocation (Move<VkDeviceMemory> mem)
+       : Allocation    (*mem, (VkDeviceSize)0)
+       , m_memHolder   (mem)
 {
 }
 
 SimpleAllocation::~SimpleAllocation (void)
 {
-       m_vk.freeMemory(m_device, getMemory());
 }
 
-SimpleAllocator::SimpleAllocator (const DeviceInterface& vk, VkDevice device)
+SimpleAllocator::SimpleAllocator (const DeviceInterface& vk, VkDevice device, const VkPhysicalDeviceMemoryProperties& deviceMemProps)
        : m_vk          (vk)
        , m_device      (device)
+       , m_memProps(deviceMemProps)
 {
 }
 
-MovePtr<Allocation> SimpleAllocator::allocate (const VkMemoryAllocInfo* allocInfo, VkDeviceSize alignment)
+MovePtr<Allocation> SimpleAllocator::allocate (const VkMemoryAllocInfo& allocInfo, VkDeviceSize alignment)
 {
-       VkDeviceMemory  mem     = DE_NULL;
-
-       VK_CHECK(m_vk.allocMemory(m_device, allocInfo, &mem));
-       TCU_CHECK(mem);
-
        DE_UNREF(alignment);
-
-       try
-       {
-               return MovePtr<Allocation>(new SimpleAllocation(m_vk, m_device, mem));
-       }
-       catch (...)
-       {
-               m_vk.freeMemory(m_device, mem);
-               throw;
-       }
+       return MovePtr<Allocation>(new SimpleAllocation(allocMemory(m_vk, m_device, &allocInfo)));
 }
 
-// Utils
-
-MovePtr<Allocation> allocate (Allocator& allocator, VkDeviceSize allocationSize, VkMemoryPropertyFlags memProps, VkDeviceSize alignment, VkMemoryPriority memPriority)
+MovePtr<Allocation> SimpleAllocator::allocate (const VkMemoryRequirements& memReqs, VkMemoryPropertyFlags allocProps)
 {
+       const deUint32                  memoryTypeNdx   = selectMemoryTypeWithProperties(m_memProps, memReqs.memoryTypeBits, allocProps);
        const VkMemoryAllocInfo allocInfo       =
        {
                VK_STRUCTURE_TYPE_MEMORY_ALLOC_INFO,    //      VkStructureType                 sType;
                DE_NULL,                                                                //      const void*                             pNext;
-               allocationSize,                                                 //      VkDeviceSize                    allocationSize;
-               memProps,                                                               //      VkMemoryPropertyFlags   memProps;
-               memPriority,                                                    //      VkMemoryPriority                memPriority;
+               memReqs.size,                                                   //      VkDeviceSize                    allocationSize;
+               memoryTypeNdx,                                                  //      deUint32                                memoryTypeIndex;
        };
 
-       return allocator.allocate(&allocInfo, alignment);
-}
-
-MovePtr<Allocation> allocate (Allocator& allocator, const VkMemoryRequirements& requirements, VkMemoryPropertyFlags memProps, VkMemoryPriority priority)
-{
-       if ((requirements.memPropsAllowed & memProps) != memProps)
-       {
-               std::ostringstream      msg;
-               msg << getMemoryPropertyFlagsStr(memProps & ~requirements.memPropsAllowed) << " not supported by object type";
-               TCU_THROW(NotSupportedError, msg.str().c_str());
-       }
-
-       return allocate(allocator, requirements.size, memProps | requirements.memPropsRequired, requirements.alignment, priority);
+       return allocate(allocInfo, memReqs.alignment);
 }
 
 } // vk
index 67f0fd1..66109e2 100644 (file)
@@ -64,35 +64,25 @@ public:
                                                                        Allocator       (void) {}
        virtual                                                 ~Allocator      (void) {}
 
-       virtual de::MovePtr<Allocation> allocate        (const VkMemoryAllocInfo* allocInfo, VkDeviceSize alignment) = 0;
+       virtual de::MovePtr<Allocation> allocate        (const VkMemoryAllocInfo& allocInfo, VkDeviceSize alignment) = 0;
+       virtual de::MovePtr<Allocation> allocate        (const VkMemoryRequirements& memRequirements, VkMemoryPropertyFlags allocProps) = 0;
 };
 
 //! Allocator that backs every allocation with its own VkDeviceMemory
 class SimpleAllocator : public Allocator
 {
 public:
-                                                               SimpleAllocator (const DeviceInterface& vk, VkDevice device);
+                                                                                       SimpleAllocator (const DeviceInterface& vk, VkDevice device, const VkPhysicalDeviceMemoryProperties& deviceMemProps);
 
-       de::MovePtr<Allocation>         allocate                (const VkMemoryAllocInfo* allocInfo, VkDeviceSize alignment);
+       de::MovePtr<Allocation>                                 allocate                (const VkMemoryAllocInfo& allocInfo, VkDeviceSize alignment);
+       de::MovePtr<Allocation>                                 allocate                (const VkMemoryRequirements& memRequirements, VkMemoryPropertyFlags allocProps);
 
 private:
-       const DeviceInterface&          m_vk;
-       VkDevice                                        m_device;
+       const DeviceInterface&                                  m_vk;
+       const VkDevice                                                  m_device;
+       const VkPhysicalDeviceMemoryProperties  m_memProps;
 };
 
-// Utilities
-
-de::MovePtr<Allocation>                allocate        (Allocator&                                             allocator,
-                                                                                VkDeviceSize                                   allocationSize,
-                                                                                VkMemoryPropertyFlags                  memProps,
-                                                                                VkDeviceSize                                   alignment,
-                                                                                VkMemoryPriority                               memPriority = VK_MEMORY_PRIORITY_UNUSED);
-
-de::MovePtr<Allocation>                allocate        (Allocator&                                             allocator,
-                                                                                const VkMemoryRequirements&    requirements,
-                                                                                VkMemoryPropertyFlags                  memProps = 0u,
-                                                                                VkMemoryPriority                               priority = VK_MEMORY_PRIORITY_UNUSED);
-
 } // vk
 
 #endif // _VKMEMUTIL_HPP
index d88ca0c..12332f0 100644 (file)
  *//*--------------------------------------------------------------------*/
 
 #include "vkPlatform.hpp"
+#include "tcuFunctionLibrary.hpp"
 
 namespace vk
 {
 
-PlatformDriver::PlatformDriver (GetProcAddrFunc getProc)
+PlatformDriver::PlatformDriver (const tcu::FunctionLibrary& library)
 {
-       m_vk.getProcAddr = getProc;
-
-#define GET_PROC_ADDR(NAME) getProc(DE_NULL, NAME)
+#define GET_PROC_ADDR(NAME) library.getFunction(NAME)
 #include "vkInitPlatformFunctionPointers.inl"
 #undef GET_PROC_ADDR
 }
@@ -50,9 +49,20 @@ PlatformDriver::~PlatformDriver (void)
 {
 }
 
-DeviceDriver::DeviceDriver (const PlatformInterface& platformInterface, VkPhysicalDevice device)
+InstanceDriver::InstanceDriver (const PlatformInterface& platformInterface, VkInstance instance)
+{
+#define GET_PROC_ADDR(NAME) platformInterface.getInstanceProcAddr(instance, NAME)
+#include "vkInitInstanceFunctionPointers.inl"
+#undef GET_PROC_ADDR
+}
+
+InstanceDriver::~InstanceDriver (void)
+{
+}
+
+DeviceDriver::DeviceDriver (const InstanceInterface& instanceInterface, VkDevice device)
 {
-#define GET_PROC_ADDR(NAME) platformInterface.getProcAddr(device, NAME)
+#define GET_PROC_ADDR(NAME) instanceInterface.getDeviceProcAddr(device, NAME)
 #include "vkInitDeviceFunctionPointers.inl"
 #undef GET_PROC_ADDR
 }
@@ -62,6 +72,7 @@ DeviceDriver::~DeviceDriver (void)
 }
 
 #include "vkPlatformDriverImpl.inl"
+#include "vkInstanceDriverImpl.inl"
 #include "vkDeviceDriverImpl.inl"
 
 } // vk
index b9fe20d..06b1603 100644 (file)
  *//*--------------------------------------------------------------------*/
 
 #include "vkDefs.hpp"
-#include "tcuFunctionLibrary.hpp"
+
+namespace tcu
+{
+class FunctionLibrary;
+}
 
 namespace vk
 {
@@ -49,16 +53,10 @@ public:
        virtual const PlatformInterface&        getPlatformInterface    (void) const = 0;
 };
 
-DE_BEGIN_EXTERN_C
-
-#include "vkFunctionPointerTypes.inl"
-
-DE_END_EXTERN_C
-
 class PlatformDriver : public PlatformInterface
 {
 public:
-                               PlatformDriver  (GetProcAddrFunc getProc);
+                               PlatformDriver  (const tcu::FunctionLibrary& library);
                                ~PlatformDriver (void);
 
 #include "vkConcretePlatformInterface.inl"
@@ -72,10 +70,27 @@ protected:
        Functions       m_vk;
 };
 
+class InstanceDriver : public InstanceInterface
+{
+public:
+                               InstanceDriver  (const PlatformInterface& platformInterface, VkInstance instance);
+                               ~InstanceDriver (void);
+
+#include "vkConcreteInstanceInterface.inl"
+
+protected:
+       struct Functions
+       {
+#include "vkInstanceFunctionPointers.inl"
+       };
+
+       Functions       m_vk;
+};
+
 class DeviceDriver : public DeviceInterface
 {
 public:
-                               DeviceDriver    (const PlatformInterface& platformInterface, VkPhysicalDevice device);
+                               DeviceDriver    (const InstanceInterface& instanceInterface, VkDevice device);
                                ~DeviceDriver   (void);
 
 #include "vkConcreteDeviceInterface.inl"
index 2333bee..b3a085c 100644 (file)
@@ -7,17 +7,7 @@ VkResult PlatformDriver::createInstance (const VkInstanceCreateInfo* pCreateInfo
        return m_vk.createInstance(pCreateInfo, pInstance);
 }
 
-VkResult PlatformDriver::destroyInstance (VkInstance instance) const
+PFN_vkVoidFunction PlatformDriver::getInstanceProcAddr (VkInstance instance, const char* pName) const
 {
-       return m_vk.destroyInstance(instance);
-}
-
-VkResult PlatformDriver::enumeratePhysicalDevices (VkInstance instance, deUint32* pPhysicalDeviceCount, VkPhysicalDevice* pPhysicalDevices) const
-{
-       return m_vk.enumeratePhysicalDevices(instance, pPhysicalDeviceCount, pPhysicalDevices);
-}
-
-FunctionPtr PlatformDriver::getProcAddr (VkPhysicalDevice physicalDevice, const char* pName) const
-{
-       return m_vk.getProcAddr(physicalDevice, pName);
+       return m_vk.getInstanceProcAddr(instance, pName);
 }
index 1e9e049..6f5ba3e 100644 (file)
@@ -1,7 +1,5 @@
 /* WARNING: This is auto-generated file. Do not modify, since changes will
  * be lost! Modify the generating script instead.
  */
-CreateInstanceFunc                             createInstance;
-DestroyInstanceFunc                            destroyInstance;
-EnumeratePhysicalDevicesFunc   enumeratePhysicalDevices;
-GetProcAddrFunc                                        getProcAddr;
+CreateInstanceFunc             createInstance;
+GetInstanceProcAddrFunc        getInstanceProcAddr;
index e6a28cc..471bc0e 100644 (file)
@@ -53,122 +53,9 @@ ProgramBinary::ProgramBinary (ProgramFormat format, size_t binarySize, const deU
 
 // Utils
 
-namespace
-{
-
-// \todo [2015-05-12 pyry] All of this is just placeholder until we have proper SPIR-V binary support
-
-enum { GLSL_BINARY_MAGIC = 0x610d510a };
-
-struct BinaryHeader
-{
-       deUint32        magic;
-       deUint32        sourceLength[glu::SHADERTYPE_LAST]; // Length per stage, 0 means that not supplied
-};
-
-DE_STATIC_ASSERT(sizeof(BinaryHeader) == sizeof(deUint32)*7);
-
-size_t computeSrcArrayTotalLength (const vector<string>& sources)
-{
-       size_t total = 0;
-       for (vector<string>::const_iterator i = sources.begin(); i != sources.end(); ++i)
-               total += i->length();
-       return total;
-}
-
-size_t computeAggregatedSrcLength (const glu::ProgramSources& sources)
-{
-       size_t total = 0;
-       for (int type = 0; type < glu::SHADERTYPE_LAST; type++)
-               total += computeSrcArrayTotalLength(sources.sources[type]);
-       return total;
-}
-
-void encodeGLSLBinary (const glu::ProgramSources& sources, vector<deUint8>& dst)
-{
-       const size_t    binarySize              = sizeof(BinaryHeader) + computeAggregatedSrcLength(sources);
-
-       dst.resize(binarySize);
-
-       {
-               BinaryHeader* const     hdr     = (BinaryHeader*)&dst[0];
-               hdr->magic = GLSL_BINARY_MAGIC;
-
-               for (int type = 0; type < glu::SHADERTYPE_LAST; type++)
-                       hdr->sourceLength[type] = (deUint32)computeSrcArrayTotalLength(sources.sources[type]);
-       }
-
-       {
-               size_t curOffset = sizeof(BinaryHeader);
-               for (int type = 0; type < glu::SHADERTYPE_LAST; type++)
-               {
-                       for (vector<string>::const_iterator srcIter = sources.sources[type].begin();
-                                srcIter != sources.sources[type].end();
-                                ++srcIter)
-                       {
-                               if (!srcIter->empty())
-                               {
-                                       deMemcpy(&dst[curOffset], srcIter->c_str(), (int)srcIter->length());
-                                       curOffset += srcIter->length();
-                               }
-                       }
-               }
-       }
-}
-
-void decodeGLSLBinary (size_t binarySize, const deUint8* binary, glu::ProgramSources& dst)
-{
-       const BinaryHeader*     hdr     = (const BinaryHeader*)binary;
-
-       if (binarySize < sizeof(BinaryHeader) || hdr->magic != GLSL_BINARY_MAGIC)
-               TCU_THROW(Exception, "Invalid GLSL program binary");
-
-       {
-               size_t curOffset = sizeof(BinaryHeader);
-
-               for (int type = 0; type < glu::SHADERTYPE_LAST; type++)
-               {
-                       if (hdr->sourceLength[type] > 0)
-                       {
-                               if (curOffset+hdr->sourceLength[type] > binarySize)
-                                       TCU_THROW(Exception, "Incomplete GLSL program binary");
-
-                               dst.sources[type].resize(1);
-                               dst.sources[type][0] = std::string((const char*)&binary[curOffset], hdr->sourceLength[type]);
-
-                               curOffset += hdr->sourceLength[type];
-                       }
-                       else
-                               dst.sources[type].clear();
-               }
-       }
-}
-
-VkShaderStage getShaderStage (glu::ShaderType type)
-{
-       static const VkShaderStage stageMap[] =
-       {
-               VK_SHADER_STAGE_VERTEX,
-               VK_SHADER_STAGE_FRAGMENT,
-               VK_SHADER_STAGE_GEOMETRY,
-               VK_SHADER_STAGE_TESS_CONTROL,
-               VK_SHADER_STAGE_TESS_EVALUATION,
-               VK_SHADER_STAGE_COMPUTE,
-       };
-       return de::getSizedArrayElement<glu::SHADERTYPE_LAST>(stageMap, type);
-}
-
-} // anonymous
-
 ProgramBinary* buildProgram (const glu::ProgramSources& program, ProgramFormat binaryFormat)
 {
-       if (binaryFormat == PROGRAM_FORMAT_GLSL_SOURCE)
-       {
-               vector<deUint8> binary;
-               encodeGLSLBinary(program, binary);
-               return new ProgramBinary(binaryFormat, binary.size(), &binary[0]);
-       }
-       else if (binaryFormat == PROGRAM_FORMAT_SPIRV)
+       if (binaryFormat == PROGRAM_FORMAT_SPIRV)
        {
                vector<deUint8> binary;
                glslToSpirV(program, binary);
@@ -178,47 +65,20 @@ ProgramBinary* buildProgram (const glu::ProgramSources& program, ProgramFormat b
                TCU_THROW(NotSupportedError, "Unsupported program format");
 }
 
-Move<VkShaderT> createShader (const DeviceInterface& deviceInterface, VkDevice device, const ProgramBinary& binary, VkShaderCreateFlags flags)
+Move<VkShaderModule> createShaderModule (const DeviceInterface& deviceInterface, VkDevice device, const ProgramBinary& binary, VkShaderModuleCreateFlags flags)
 {
-       if (binary.getFormat() == PROGRAM_FORMAT_GLSL_SOURCE)
-       {
-               // HACK: just concatenate everything
-               glu::ProgramSources     sources;
-               std::string                     concatenated;
-
-               decodeGLSLBinary(binary.getSize(), binary.getBinary(), sources);
-
-               for (int shaderType = 0; shaderType < glu::SHADERTYPE_LAST; shaderType++)
-               {
-                       for (size_t ndx = 0; ndx < sources.sources[shaderType].size(); ++ndx)
-                               concatenated += sources.sources[shaderType][ndx];
-               }
-
-               {
-                       const struct VkShaderCreateInfo         shaderInfo      =
-                       {
-                               VK_STRUCTURE_TYPE_SHADER_CREATE_INFO,   //      VkStructureType         sType;
-                               DE_NULL,                                                                //      const void*                     pNext;
-                               (deUintptr)concatenated.size(),                 //      deUintptr                       codeSize;
-                               concatenated.c_str(),                                   //      const void*                     pCode;
-                               flags,                                                                  //      VkShaderCreateFlags     flags;
-                       };
-
-                       return createShader(deviceInterface, device, &shaderInfo);
-               }
-       }
-       else if (binary.getFormat() == PROGRAM_FORMAT_SPIRV)
+       if (binary.getFormat() == PROGRAM_FORMAT_SPIRV)
        {
-               const struct VkShaderCreateInfo         shaderInfo      =
+               const struct VkShaderModuleCreateInfo           shaderModuleInfo        =
                {
-                       VK_STRUCTURE_TYPE_SHADER_CREATE_INFO,   //      VkStructureType         sType;
-                       DE_NULL,                                                                //      const void*                     pNext;
-                       (deUintptr)binary.getSize(),                    //      deUintptr                       codeSize;
-                       binary.getBinary(),                                             //      const void*                     pCode;
-                       flags,                                                                  //      VkShaderCreateFlags     flags;
+                       VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO,    //      VkStructureType         sType;
+                       DE_NULL,                                                                                //      const void*                     pNext;
+                       (deUintptr)binary.getSize(),                                    //      deUintptr                       codeSize;
+                       binary.getBinary(),                                                             //      const void*                     pCode;
+                       flags,                                                                                  //      VkShaderModuleCreateFlags       flags;
                };
 
-               return createShader(deviceInterface, device, &shaderInfo);
+               return createShaderModule(deviceInterface, device, &shaderModuleInfo);
        }
        else
                TCU_THROW(NotSupportedError, "Unsupported program format");
index d9f143b..eb14933 100644 (file)
@@ -47,8 +47,7 @@ namespace vk
 
 enum ProgramFormat
 {
-       PROGRAM_FORMAT_GLSL_SOURCE = 0,
-       PROGRAM_FORMAT_SPIRV,
+       PROGRAM_FORMAT_SPIRV = 0,
 
        PROGRAM_FORMAT_LAST
 };
@@ -167,8 +166,8 @@ typedef ProgramCollection<glu::ProgramSources>      SourceCollection;
 typedef ProgramCollection<ProgramBinary>               BinaryCollection;
 
 // \todo [2015-03-13 pyry] Likely need BinaryBuilder abstraction for this
-ProgramBinary*         buildProgram    (const glu::ProgramSources& program, ProgramFormat binaryFormat);
-Move<VkShaderT>                createShader    (const DeviceInterface& deviceInterface, VkDevice device, const ProgramBinary& binary, VkShaderCreateFlags flags);
+ProgramBinary*                 buildProgram            (const glu::ProgramSources& program, ProgramFormat binaryFormat);
+Move<VkShaderModule>   createShaderModule      (const DeviceInterface& deviceInterface, VkDevice device, const ProgramBinary& binary, VkShaderModuleCreateFlags flags);
 
 } // vk
 
index 2ed907d..0ff5aea 100644 (file)
@@ -37,7 +37,7 @@
 namespace vk
 {
 
-std::vector<VkPhysicalDevice> enumeratePhysicalDevices (const PlatformInterface& vk, VkInstance instance)
+std::vector<VkPhysicalDevice> enumeratePhysicalDevices (const InstanceInterface& vk, VkInstance instance)
 {
        deUint32                                                numDevices      = 0;
        std::vector<VkPhysicalDevice>   devices;
@@ -56,4 +56,41 @@ std::vector<VkPhysicalDevice> enumeratePhysicalDevices (const PlatformInterface&
        return devices;
 }
 
+
+std::vector<VkPhysicalDeviceQueueProperties> getPhysicalDeviceQueueProperties (const InstanceInterface& vk, VkPhysicalDevice physicalDevice)
+{
+       deUint32                                                                                numQueues       = 0;
+       std::vector<VkPhysicalDeviceQueueProperties>    properties;
+
+       VK_CHECK(vk.getPhysicalDeviceQueueCount(physicalDevice, &numQueues));
+
+       if (numQueues > 0)
+       {
+               properties.resize(numQueues);
+               VK_CHECK(vk.getPhysicalDeviceQueueProperties(physicalDevice, numQueues, &properties[0]));
+       }
+
+       return properties;
+}
+
+VkPhysicalDeviceMemoryProperties getPhysicalDeviceMemoryProperties (const InstanceInterface& vk, VkPhysicalDevice physicalDevice)
+{
+       VkPhysicalDeviceMemoryProperties        properties;
+       VK_CHECK(vk.getPhysicalDeviceMemoryProperties(physicalDevice, &properties));
+       return properties;
+}
+
+VkMemoryRequirements getBufferMemoryRequirements (const DeviceInterface& vk, VkDevice device, VkBuffer buffer)
+{
+       VkMemoryRequirements req;
+       VK_CHECK(vk.getBufferMemoryRequirements(device, buffer, &req));
+       return req;
+}
+VkMemoryRequirements getImageMemoryRequirements (const DeviceInterface& vk, VkDevice device, VkImage image)
+{
+       VkMemoryRequirements req;
+       VK_CHECK(vk.getImageMemoryRequirements(device, image, &req));
+       return req;
+}
+
 } // vk
index 50cab90..5b768e7 100644 (file)
  *//*--------------------------------------------------------------------*/
 
 #include "vkDefs.hpp"
-#include "vkRef.hpp"
-#include "deMeta.hpp"
 
 #include <vector>
 
 namespace vk
 {
-namespace querydetails
-{
-
-enum QueryResultCount
-{
-       QUERY_RESULT_COUNT_SINGLE       = 0,
-       QUERY_RESULT_COUNT_MULTIPLE     = 1
-};
-
-template<VkPhysicalDeviceInfoType InfoType>
-struct PhysicalDeviceInfoTraits;
-
-#define VK_DECLARE_QUERY_TRAITS(QUERY_CLASS, QUERY_PARAM, RESULT_TYPE, RESULT_COUNT)   \
-template<>     \
-struct QUERY_CLASS##Traits<QUERY_PARAM>        \
-{      \
-       typedef RESULT_TYPE     Type;   \
-       enum { QUERY_RESULT_COUNT = QUERY_RESULT_COUNT_##RESULT_COUNT };        \
-}
-
-VK_DECLARE_QUERY_TRAITS(PhysicalDeviceInfo, VK_PHYSICAL_DEVICE_INFO_TYPE_PROPERTIES,           VkPhysicalDeviceProperties,                     SINGLE);
-VK_DECLARE_QUERY_TRAITS(PhysicalDeviceInfo, VK_PHYSICAL_DEVICE_INFO_TYPE_PERFORMANCE,          VkPhysicalDevicePerformance,            SINGLE);
-VK_DECLARE_QUERY_TRAITS(PhysicalDeviceInfo,    VK_PHYSICAL_DEVICE_INFO_TYPE_QUEUE_PROPERTIES,  VkPhysicalDeviceQueueProperties,        MULTIPLE);
-VK_DECLARE_QUERY_TRAITS(PhysicalDeviceInfo,    VK_PHYSICAL_DEVICE_INFO_TYPE_MEMORY_PROPERTIES, VkPhysicalDeviceMemoryProperties,       MULTIPLE);
-
-template<VkPhysicalDeviceInfoType InfoType>
-std::vector<typename PhysicalDeviceInfoTraits<InfoType>::Type> getPhysicalDeviceInfoImpl (const DeviceInterface& vk, VkPhysicalDevice physicalDevice)
-{
-       std::vector<typename PhysicalDeviceInfoTraits<InfoType>::Type>  values;
-       deUintptr                                                                                                               infoSize        = 0;
-
-       VK_CHECK(vk.getPhysicalDeviceInfo(physicalDevice, InfoType, &infoSize, DE_NULL));
-
-       if (infoSize % sizeof(typename PhysicalDeviceInfoTraits<InfoType>::Type) != 0)
-               TCU_FAIL("Returned info size is not divisible by structure size");
-
-       if (infoSize > 0)
-       {
-               values.resize(infoSize / sizeof(typename PhysicalDeviceInfoTraits<InfoType>::Type));
-               VK_CHECK(vk.getPhysicalDeviceInfo(physicalDevice, InfoType, &infoSize, &values[0]));
-
-               if (infoSize != values.size()*sizeof(typename PhysicalDeviceInfoTraits<InfoType>::Type))
-                       TCU_FAIL("Returned info size changed between queries");
-       }
-
-       return values;
-}
-
-template<VkPhysicalDeviceInfoType InfoType>
-std::vector<typename PhysicalDeviceInfoTraits<InfoType>::Type> getPhysicalDeviceInfo (typename de::meta::EnableIf<const DeviceInterface&, PhysicalDeviceInfoTraits<InfoType>::QUERY_RESULT_COUNT == QUERY_RESULT_COUNT_MULTIPLE>::Type vk, VkPhysicalDevice physicalDevice)
-{
-       return getPhysicalDeviceInfoImpl<InfoType>(vk, physicalDevice);
-}
-
-template<VkPhysicalDeviceInfoType InfoType>
-typename PhysicalDeviceInfoTraits<InfoType>::Type getPhysicalDeviceInfo (typename de::meta::EnableIf<const DeviceInterface&, PhysicalDeviceInfoTraits<InfoType>::QUERY_RESULT_COUNT == QUERY_RESULT_COUNT_SINGLE>::Type vk, VkPhysicalDevice physicalDevice)
-{
-       const std::vector<typename PhysicalDeviceInfoTraits<InfoType>::Type>    values  = getPhysicalDeviceInfoImpl<InfoType>(vk, physicalDevice);
-
-       if (values.size() != 1)
-               TCU_FAIL("Expected only single value");
-
-       return values[0];
-}
-
-template<VkObjectInfoType InfoType>
-struct ObjectInfoTraits;
-
-VK_DECLARE_QUERY_TRAITS(ObjectInfo,    VK_OBJECT_INFO_TYPE_MEMORY_REQUIREMENTS,        VkMemoryRequirements,   MULTIPLE);
-
-template<VkObjectInfoType InfoType>
-std::vector<typename ObjectInfoTraits<InfoType>::Type> getObjectInfoImpl (const DeviceInterface& vk, VkDevice device, VkObjectType objectType, VkObject object)
-{
-       std::vector<typename ObjectInfoTraits<InfoType>::Type>  values;
-       deUintptr                                                                                               infoSize        = 0;
-
-       VK_CHECK(vk.getObjectInfo(device, objectType, object, InfoType, &infoSize, DE_NULL));
-
-       if (infoSize % sizeof(typename ObjectInfoTraits<InfoType>::Type) != 0)
-               TCU_FAIL("Returned info size is not divisible by structure size");
-
-       if (infoSize > 0)
-       {
-               values.resize(infoSize / sizeof(typename ObjectInfoTraits<InfoType>::Type));
-               VK_CHECK(vk.getObjectInfo(device, objectType, object, InfoType, &infoSize, &values[0]));
-
-               if (infoSize != values.size()*sizeof(typename ObjectInfoTraits<InfoType>::Type))
-                       TCU_FAIL("Returned info size changed between queries");
-       }
-
-       return values;
-}
-
-template<VkObjectInfoType InfoType>
-std::vector<typename ObjectInfoTraits<InfoType>::Type> getObjectInfo (typename de::meta::EnableIf<const DeviceInterface&, ObjectInfoTraits<InfoType>::QUERY_RESULT_COUNT == QUERY_RESULT_COUNT_MULTIPLE>::Type vk, VkDevice device, VkObjectType objectType, VkObject object)
-{
-       return getObjectInfoImpl<InfoType>(vk, device, objectType, object);
-}
-
-template<VkObjectInfoType InfoType, typename T>
-std::vector<typename ObjectInfoTraits<InfoType>::Type> getObjectInfo (typename de::meta::EnableIf<const DeviceInterface&, ObjectInfoTraits<InfoType>::QUERY_RESULT_COUNT == QUERY_RESULT_COUNT_MULTIPLE>::Type vk, VkDevice device, const Unique<T>& object)
-{
-       return getObjectInfo<InfoType>(vk, device, getObjectType<T>(), object.get());
-}
-
-} // querydetails
 
-using querydetails::getPhysicalDeviceInfo;
-using querydetails::getObjectInfo;
+std::vector<VkPhysicalDevice>                                  enumeratePhysicalDevices                        (const InstanceInterface& vk, VkInstance instance);
+std::vector<VkPhysicalDeviceQueueProperties>   getPhysicalDeviceQueueProperties        (const InstanceInterface& vk, VkPhysicalDevice physicalDevice);
+VkPhysicalDeviceMemoryProperties                               getPhysicalDeviceMemoryProperties       (const InstanceInterface& vk, VkPhysicalDevice physicalDevice);
 
-std::vector<VkPhysicalDevice>  enumeratePhysicalDevices        (const PlatformInterface& vk, VkInstance instance);
+VkMemoryRequirements                                                   getBufferMemoryRequirements                     (const DeviceInterface& vk, VkDevice device, VkBuffer buffer);
+VkMemoryRequirements                                                   getImageMemoryRequirements                      (const DeviceInterface& vk, VkDevice device, VkImage image);
 
 } // vk
 
index f025763..02a3cf7 100644 (file)
@@ -39,4 +39,18 @@ namespace vk
 
 #include "vkRefUtilImpl.inl"
 
+Move<VkPipeline> createGraphicsPipeline (const DeviceInterface& vk, VkDevice device, VkPipelineCache pipelineCache, const VkGraphicsPipelineCreateInfo* pCreateInfo)
+{
+       VkPipeline object = 0;
+       VK_CHECK(vk.createGraphicsPipelines(device, pipelineCache, 1u, pCreateInfo, &object));
+       return Move<VkPipeline>(check<VkPipeline>(object), Deleter<VkPipeline>(vk, device));
+}
+
+Move<VkPipeline> createComputePipeline (const DeviceInterface& vk, VkDevice device, VkPipelineCache pipelineCache, const VkComputePipelineCreateInfo* pCreateInfo)
+{
+       VkPipeline object = 0;
+       VK_CHECK(vk.createComputePipelines(device, pipelineCache, 1u, pCreateInfo, &object));
+       return Move<VkPipeline>(check<VkPipeline>(object), Deleter<VkPipeline>(vk, device));
+}
+
 } // vk
index e6bdf41..f8794da 100644 (file)
 
 #include "vkDefs.hpp"
 #include "vkStrUtil.hpp"
+#include "deUniquePtr.hpp"
 #include "deMeta.hpp"
 
+#include <algorithm>
+
 namespace vk
 {
 
 namespace refdetails
 {
 
-using de::meta::EnableIf;
-
-template<typename T>
-struct RefTraits
-{
-       typedef DeviceInterface         Interface;
-       enum { REQUIRES_DEVICE = 1 };
-};
-
-template<>
-struct RefTraits<VkInstanceT>
-{
-       typedef PlatformInterface       Interface;
-       enum { REQUIRES_DEVICE = 0 };
-};
-
-template<>
-struct RefTraits<VkDeviceT>
-{
-       typedef DeviceInterface         Interface;
-       enum { REQUIRES_DEVICE = 0 };
-};
+using std::swap;
 
 template<typename T>
 struct Checked
 {
-       explicit inline                         Checked         (typename Traits<T>::Type object_) : object(object_) {}
+       explicit inline         Checked         (T object_) : object(object_) {}
 
-       typename Traits<T>::Type        object;
+       T                                       object;
 };
 
 //! Check that object is not null
 template<typename T>
-inline Checked<T> check (typename Traits<T>::Type object)
+inline Checked<T> check (T object)
 {
        if (!object)
                throw tcu::TestError("Object check() failed", (std::string(getTypeName<T>()) + " = 0").c_str(), __FILE__, __LINE__);
@@ -86,7 +68,7 @@ inline Checked<T> check (typename Traits<T>::Type object)
 
 //! Declare object as checked earlier
 template<typename T>
-inline Checked<T> notNull (typename Traits<T>::Type object)
+inline Checked<T> notNull (T object)
 {
        if (!object)
                throw tcu::InternalError("Null object was given to notNull()", (std::string(getTypeName<T>()) + " = 0").c_str(), __FILE__, __LINE__);
@@ -95,201 +77,100 @@ inline Checked<T> notNull (typename Traits<T>::Type object)
 
 //! Allow null object
 template<typename T>
-inline Checked<T> allowNull (typename Traits<T>::Type object)
+inline Checked<T> allowNull (T object)
 {
        return Checked<T>(object);
 }
 
-// \todo [2015-05-12 pyry] Can we further simplify this using RefTraits<T>::REQUIRES_DEVICE?
-
 template<typename T>
-struct RefData
+class Deleter
 {
-                                                                                       RefData         (const typename RefTraits<T>::Interface*        vk_,
-                                                                                                                VkDevice                                                                       device_,
-                                                                                                                typename Traits<T>::Type                                       object_)
-                                                                                                                       : vk    (vk_)
-                                                                                                                       , device(device_)
-                                                                                                                       , object(object_)
-                                                                                       {}
-                                                                                       RefData         (const typename RefTraits<T>::Interface*        vk_)
-                                                                                                                       : vk    (vk_)
-                                                                                                                       , device(0)
-                                                                                                                       , object(0)
-                                                                                       {}
-
-       const typename RefTraits<T>::Interface* vk;
-       VkDevice                                                                device;
-       typename Traits<T>::Type                                object;
-};
+public:
+                                                       Deleter         (const DeviceInterface& deviceIface, VkDevice device)
+                                                               : m_deviceIface (&deviceIface)
+                                                               , m_device              (device)
+                                                       {}
+                                                       Deleter         (void)
+                                                               : m_deviceIface (DE_NULL)
+                                                               , m_device              (DE_NULL)
+                                                       {}
 
-template<>
-struct RefData<VkInstanceT>
-{
-                                                                                               RefData         (const RefTraits<VkInstanceT>::Interface*       vk_,
-                                                                                                                        VkInstance                                                                     object_)
-                                                                                                                               : vk            (vk_)
-                                                                                                                               , object        (object_)
-                                                                                               {}
-                                                                                               RefData         (const RefTraits<VkInstanceT>::Interface*       vk_)
-                                                                                                                               : vk    (vk_)
-                                                                                                                               , object(0)
-                                                                                               {}
-
-       const RefTraits<VkInstanceT>::Interface*        vk;
-       Traits<VkInstanceT>::Type                                       object;
-};
+       void                                    operator()      (T obj) const;
 
-template<>
-struct RefData<VkDeviceT>
-{
-                                                                                       RefData         (const RefTraits<VkDeviceT>::Interface* vk_,
-                                                                                                                VkDevice                                                               object_)
-                                                                                                                       : vk            (vk_)
-                                                                                                                       , object        (object_)
-                                                                                       {}
-                                                                                       RefData         (const RefTraits<VkDevice>::Interface*  vk_)
-                                                                                                                       : vk    (vk_)
-                                                                                                                       , object(0)
-                                                                                       {}
-
-       const RefTraits<VkDeviceT>::Interface*  vk;
-       Traits<VkDeviceT>::Type                                 object;
+private:
+       const DeviceInterface*  m_deviceIface;
+       VkDevice                                m_device;
 };
 
-template<typename T>
-bool hasObject (const RefData<T>& ref)
-{
-       return ref.object != 0;
-}
-
-template<typename T>
-void clearObject (typename EnableIf<RefData<T>, RefTraits<T>::REQUIRES_DEVICE == 1>::Type& ref)
-{
-       ref.object      = 0;
-       ref.device      = 0;
-}
-
-template<typename T>
-void clearObject (typename EnableIf<RefData<T>, RefTraits<T>::REQUIRES_DEVICE == 0>::Type& ref)
-{
-       ref.object      = 0;
-}
-
-template<typename T>
-void assignObject (typename EnableIf<RefData<T>, RefTraits<T>::REQUIRES_DEVICE == 1>::Type& dst, const RefData<T>& src)
-{
-       dst.object      = src.object;
-       dst.device      = src.device;
-}
-
-template<typename T>
-void assignObject (typename EnableIf<RefData<T>, RefTraits<T>::REQUIRES_DEVICE == 0>::Type& dst, const RefData<T>& src)
-{
-       dst.object      = src.object;
-}
-
-template<typename T>
-void destroyObject (const RefData<T>& ref)
-{
-       ref.vk->destroyObject(ref.device, getObjectType<T>(), ref.object);
-}
-
 template<>
-inline void destroyObject<VkInstanceT> (const RefData<VkInstanceT>& ref)
+class Deleter<VkInstance>
 {
-       ref.vk->destroyInstance(ref.object);
-}
+public:
+                                                       Deleter         (const PlatformInterface& platformIface, VkInstance instance)
+                                                               : m_destroyInstance((DestroyInstanceFunc)platformIface.getInstanceProcAddr(instance, "vkDestroyInstance"))
+                                                       {}
+                                                       Deleter         (void)
+                                                               : m_destroyInstance((DestroyInstanceFunc)DE_NULL)
+                                                       {}
 
-template<>
-inline void destroyObject<VkDeviceT> (const RefData<VkDeviceT>& ref)
-{
-       ref.vk->destroyDevice(ref.object);
-}
+       void                                    operator()      (VkInstance obj) const { DE_TEST_ASSERT(m_destroyInstance(obj) == VK_SUCCESS); }
 
-template<>
-inline void destroyObject<VkDeviceMemoryT> (const RefData<VkDeviceMemoryT>& ref)
-{
-       ref.vk->freeMemory(ref.device, ref.object);
-}
+private:
+       DestroyInstanceFunc             m_destroyInstance;
+};
 
-template<typename T>
-class RefBase
+template<>
+class Deleter<VkDevice>
 {
 public:
-                                                                                       ~RefBase        (void);
-
-       inline const typename Traits<T>::Type&  get                     (void) const throw() { return m_data.object;    }
-       inline const typename Traits<T>::Type&  operator*       (void) const throw() { return get();                    }
-       inline operator                                                 bool            (void) const throw() { return !!get();                  }
-protected:
-                                                                                       RefBase         (RefData<T> data) : m_data(data)        {}
+                                                       Deleter         (const InstanceInterface& instanceIface, VkDevice device)
+                                                               : m_destroyDevice((DestroyDeviceFunc)instanceIface.getDeviceProcAddr(device, "vkDestroyDevice"))
+                                                       {}
+                                                       Deleter         (void)
+                                                               : m_destroyDevice((DestroyDeviceFunc)DE_NULL)
+                                                       {}
 
-       void                                                                    reset           (void);                         //!< Release previous object, set to null.
-       RefData<T>                                                              disown          (void) throw();         //!< Disown and return object (ownership transferred to caller).
-       void                                                                    assign          (RefData<T> data);      //!< Set new pointer, release previous pointer.
+       void                                    operator()      (VkDevice obj) const { DE_TEST_ASSERT(m_destroyDevice(obj) == VK_SUCCESS); }
 
 private:
-       RefData<T>                                                              m_data;
+       DestroyDeviceFunc               m_destroyDevice;
 };
 
-/*--------------------------------------------------------------------*//*!
- * \brief Movable Vulkan object reference.
- *
- * Similar to de::MovePtr.
- *//*--------------------------------------------------------------------*/
 template<typename T>
-class Move : public RefBase<T>
+struct RefData
 {
-public:
-       template<typename U>
-                               Move            (typename EnableIf<const typename RefTraits<U>::Interface&, RefTraits<U>::REQUIRES_DEVICE==1>::Type     vk,
-                                                        VkDevice                                                                                                                                                                                       device,
-                                                        Checked<U>                                                                                                                                                                                     object)
-                                                               : RefBase<T>(RefData<T>(&vk, device, object.object))
+                               RefData         (T object_, Deleter<T> deleter_)
+                                                               : object        (object_)
+                                                               , deleter       (deleter_)
                                {}
-
-       template<typename U>
-                               Move            (typename EnableIf<const typename RefTraits<U>::Interface&, RefTraits<U>::REQUIRES_DEVICE==0>::Type     vk,
-                                                        Checked<U>                                                                                                                                                                                     object)
-                                                               : RefBase<T>(RefData<T>(&vk, object.object))
+                               RefData         (void)
+                                                               : object        (0)
                                {}
 
-                               Move            (const typename RefTraits<T>::Interface& vk)    : RefBase<T>(RefData<T>(&vk))   {}
-                               Move            (RefData<T> data)                                                               : RefBase<T>(data)                              {}
-
-       Move<T>&        operator=       (Move<T>& other);
-       Move<T>&        operator=       (RefData<T> data);
-
-       operator        RefData<T>      (void) { return this->disown(); }
+       T                       object;
+       Deleter<T>      deleter;
 };
 
-/*--------------------------------------------------------------------*//*!
- * \brief Unique Vulkan object reference.
- *
- * Similar to de::UniquePtr.
- *//*--------------------------------------------------------------------*/
 template<typename T>
-class Unique : public RefBase<T>
+class RefBase
 {
 public:
-       template<typename U>
-                               Unique          (typename EnableIf<const typename RefTraits<U>::Interface&, RefTraits<U>::REQUIRES_DEVICE==1>::Type     vk,
-                                                        VkDevice                                                                                                                                                                                       device,
-                                                        Checked<U>                                                                                                                                                                                     object)
-                                                               : RefBase<T>(RefData<T>(&vk, device, object.object))
-                               {}
+                                               ~RefBase        (void);
 
-       template<typename U>
-                               Unique          (typename EnableIf<const typename RefTraits<U>::Interface&, RefTraits<U>::REQUIRES_DEVICE==0>::Type     vk,
-                                                        Checked<U>                                                                                                                                                                                     object)
-                                                               : RefBase<T>(RefData<T>(&vk, object.object))
-                                                       {}
+       inline const T&         get                     (void) const throw() { return m_data.object;    }
+       inline const T&         operator*       (void) const throw() { return get();                    }
+       inline operator         bool            (void) const throw() { return !!get();                  }
 
-                               Unique          (RefData<T> data)       : RefBase<T>(data)      {}
-};
+protected:
+                                               RefBase         (RefData<T> data) : m_data(data)        {}
+
+       void                            reset           (void);                         //!< Release previous object, set to null.
+       RefData<T>                      disown          (void) throw();         //!< Disown and return object (ownership transferred to caller).
+       void                            assign          (RefData<T> data);      //!< Set new pointer, release previous pointer.
 
-// RefBase
+private:
+       RefData<T>                      m_data;
+};
 
 template<typename T>
 inline RefBase<T>::~RefBase (void)
@@ -300,28 +181,53 @@ inline RefBase<T>::~RefBase (void)
 template<typename T>
 inline void RefBase<T>::reset (void)
 {
-       if (hasObject(m_data))
-               destroyObject<T>(m_data);
+       if (!!m_data.object)
+               m_data.deleter(m_data.object);
 
-       clearObject<T>(m_data);
+       m_data = RefData<T>();
 }
 
 template<typename T>
 inline RefData<T> RefBase<T>::disown (void) throw()
 {
-       const RefData<T>        old     = m_data;
-       clearObject<T>(m_data);
-       return old;
+       RefData<T> tmp;
+       swap(m_data, tmp);
+       return tmp;
 }
 
 template<typename T>
 inline void RefBase<T>::assign (RefData<T> data)
 {
        this->reset();
-       assignObject<T>(m_data, data);
+       m_data = data;
 }
 
-// Move
+/*--------------------------------------------------------------------*//*!
+ * \brief Movable Vulkan object reference.
+ *
+ * Similar to de::MovePtr.
+ *//*--------------------------------------------------------------------*/
+template<typename T>
+class Move : public RefBase<T>
+{
+public:
+       template<typename U>
+                               Move            (Checked<U> object, Deleter<U> deleter)
+                                                               : RefBase<T>(RefData<T>(object.object, deleter))
+                               {}
+
+                               Move            (RefData<T> data)
+                                                               : RefBase<T>(data)
+                               {}
+                               Move            (void)
+                                                               : RefBase<T>(RefData<T>())
+                               {}
+
+       Move<T>&        operator=       (Move<T>& other);
+       Move<T>&        operator=       (RefData<T> data);
+
+       operator        RefData<T>      (void) { return this->disown(); }
+};
 
 template<typename T>
 inline Move<T>& Move<T>::operator= (Move<T>& other)
@@ -339,16 +245,39 @@ inline Move<T>& Move<T>::operator= (RefData<T> data)
        return *this;
 }
 
+/*--------------------------------------------------------------------*//*!
+ * \brief Unique Vulkan object reference.
+ *
+ * Similar to de::UniquePtr.
+ *//*--------------------------------------------------------------------*/
+template<typename T>
+class Unique : public RefBase<T>
+{
+public:
+       template<typename U>
+                               Unique          (Checked<U> object, Deleter<U> deleter)
+                                                               : RefBase<T>(RefData<T>(object.object, deleter))
+                               {}
+
+                               Unique          (RefData<T> data)
+                                                               : RefBase<T>(data)
+                               {}
+};
+
 } // refdetails
 
 using refdetails::Move;
 using refdetails::Unique;
+using refdetails::Deleter;
 using refdetails::check;
 using refdetails::notNull;
 using refdetails::allowNull;
 
 #include "vkRefUtil.inl"
 
+Move<VkPipeline>       createGraphicsPipeline  (const DeviceInterface& vk, VkDevice device, VkPipelineCache pipelineCache, const VkGraphicsPipelineCreateInfo* pCreateInfo);
+Move<VkPipeline>       createComputePipeline   (const DeviceInterface& vk, VkDevice device, VkPipelineCache pipelineCache, const VkComputePipelineCreateInfo* pCreateInfo);
+
 } // vk
 
 #endif // _VKREF_HPP
index db175e1..2a118f1 100644 (file)
@@ -1,31 +1,30 @@
 /* WARNING: This is auto-generated file. Do not modify, since changes will
  * be lost! Modify the generating script instead.
  */
-Move<VkInstanceT>                              createInstance                                          (const PlatformInterface& vk, const VkInstanceCreateInfo* pCreateInfo);
-Move<VkDeviceT>                                        createDevice                                            (const DeviceInterface& vk, VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo* pCreateInfo);
-Move<VkDeviceMemoryT>                  allocMemory                                                     (const DeviceInterface& vk, VkDevice device, const VkMemoryAllocInfo* pAllocInfo);
-Move<VkFenceT>                                 createFence                                                     (const DeviceInterface& vk, VkDevice device, const VkFenceCreateInfo* pCreateInfo);
-Move<VkSemaphoreT>                             createSemaphore                                         (const DeviceInterface& vk, VkDevice device, const VkSemaphoreCreateInfo* pCreateInfo);
-Move<VkEventT>                                 createEvent                                                     (const DeviceInterface& vk, VkDevice device, const VkEventCreateInfo* pCreateInfo);
-Move<VkQueryPoolT>                             createQueryPool                                         (const DeviceInterface& vk, VkDevice device, const VkQueryPoolCreateInfo* pCreateInfo);
-Move<VkBufferT>                                        createBuffer                                            (const DeviceInterface& vk, VkDevice device, const VkBufferCreateInfo* pCreateInfo);
-Move<VkBufferViewT>                            createBufferView                                        (const DeviceInterface& vk, VkDevice device, const VkBufferViewCreateInfo* pCreateInfo);
-Move<VkImageT>                                 createImage                                                     (const DeviceInterface& vk, VkDevice device, const VkImageCreateInfo* pCreateInfo);
-Move<VkImageViewT>                             createImageView                                         (const DeviceInterface& vk, VkDevice device, const VkImageViewCreateInfo* pCreateInfo);
-Move<VkColorAttachmentViewT>   createColorAttachmentView                       (const DeviceInterface& vk, VkDevice device, const VkColorAttachmentViewCreateInfo* pCreateInfo);
-Move<VkDepthStencilViewT>              createDepthStencilView                          (const DeviceInterface& vk, VkDevice device, const VkDepthStencilViewCreateInfo* pCreateInfo);
-Move<VkShaderT>                                        createShader                                            (const DeviceInterface& vk, VkDevice device, const VkShaderCreateInfo* pCreateInfo);
-Move<VkPipelineT>                              createGraphicsPipeline                          (const DeviceInterface& vk, VkDevice device, const VkGraphicsPipelineCreateInfo* pCreateInfo);
-Move<VkPipelineT>                              createGraphicsPipelineDerivative        (const DeviceInterface& vk, VkDevice device, const VkGraphicsPipelineCreateInfo* pCreateInfo, VkPipeline basePipeline);
-Move<VkPipelineT>                              createComputePipeline                           (const DeviceInterface& vk, VkDevice device, const VkComputePipelineCreateInfo* pCreateInfo);
-Move<VkPipelineLayoutT>                        createPipelineLayout                            (const DeviceInterface& vk, VkDevice device, const VkPipelineLayoutCreateInfo* pCreateInfo);
-Move<VkSamplerT>                               createSampler                                           (const DeviceInterface& vk, VkDevice device, const VkSamplerCreateInfo* pCreateInfo);
-Move<VkDescriptorSetLayoutT>   createDescriptorSetLayout                       (const DeviceInterface& vk, VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo);
-Move<VkDescriptorPoolT>                        createDescriptorPool                            (const DeviceInterface& vk, VkDevice device, VkDescriptorPoolUsage poolUsage, deUint32 maxSets, const VkDescriptorPoolCreateInfo* pCreateInfo);
-Move<VkDynamicVpStateT>                        createDynamicViewportState                      (const DeviceInterface& vk, VkDevice device, const VkDynamicVpStateCreateInfo* pCreateInfo);
-Move<VkDynamicRsStateT>                        createDynamicRasterState                        (const DeviceInterface& vk, VkDevice device, const VkDynamicRsStateCreateInfo* pCreateInfo);
-Move<VkDynamicCbStateT>                        createDynamicColorBlendState            (const DeviceInterface& vk, VkDevice device, const VkDynamicCbStateCreateInfo* pCreateInfo);
-Move<VkDynamicDsStateT>                        createDynamicDepthStencilState          (const DeviceInterface& vk, VkDevice device, const VkDynamicDsStateCreateInfo* pCreateInfo);
-Move<VkCmdBufferT>                             createCommandBuffer                                     (const DeviceInterface& vk, VkDevice device, const VkCmdBufferCreateInfo* pCreateInfo);
-Move<VkFramebufferT>                   createFramebuffer                                       (const DeviceInterface& vk, VkDevice device, const VkFramebufferCreateInfo* pCreateInfo);
-Move<VkRenderPassT>                            createRenderPass                                        (const DeviceInterface& vk, VkDevice device, const VkRenderPassCreateInfo* pCreateInfo);
+Move<VkInstance>                                       createInstance                                  (const PlatformInterface& vk, const VkInstanceCreateInfo* pCreateInfo);
+Move<VkDevice>                                         createDevice                                    (const InstanceInterface& vk, VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo* pCreateInfo);
+Move<VkDeviceMemory>                           allocMemory                                             (const DeviceInterface& vk, VkDevice device, const VkMemoryAllocInfo* pAllocInfo);
+Move<VkFence>                                          createFence                                             (const DeviceInterface& vk, VkDevice device, const VkFenceCreateInfo* pCreateInfo);
+Move<VkSemaphore>                                      createSemaphore                                 (const DeviceInterface& vk, VkDevice device, const VkSemaphoreCreateInfo* pCreateInfo);
+Move<VkEvent>                                          createEvent                                             (const DeviceInterface& vk, VkDevice device, const VkEventCreateInfo* pCreateInfo);
+Move<VkQueryPool>                                      createQueryPool                                 (const DeviceInterface& vk, VkDevice device, const VkQueryPoolCreateInfo* pCreateInfo);
+Move<VkBuffer>                                         createBuffer                                    (const DeviceInterface& vk, VkDevice device, const VkBufferCreateInfo* pCreateInfo);
+Move<VkBufferView>                                     createBufferView                                (const DeviceInterface& vk, VkDevice device, const VkBufferViewCreateInfo* pCreateInfo);
+Move<VkImage>                                          createImage                                             (const DeviceInterface& vk, VkDevice device, const VkImageCreateInfo* pCreateInfo);
+Move<VkImageView>                                      createImageView                                 (const DeviceInterface& vk, VkDevice device, const VkImageViewCreateInfo* pCreateInfo);
+Move<VkAttachmentView>                         createAttachmentView                    (const DeviceInterface& vk, VkDevice device, const VkAttachmentViewCreateInfo* pCreateInfo);
+Move<VkShaderModule>                           createShaderModule                              (const DeviceInterface& vk, VkDevice device, const VkShaderModuleCreateInfo* pCreateInfo);
+Move<VkShader>                                         createShader                                    (const DeviceInterface& vk, VkDevice device, const VkShaderCreateInfo* pCreateInfo);
+Move<VkPipelineCache>                          createPipelineCache                             (const DeviceInterface& vk, VkDevice device, const VkPipelineCacheCreateInfo* pCreateInfo);
+Move<VkPipelineLayout>                         createPipelineLayout                    (const DeviceInterface& vk, VkDevice device, const VkPipelineLayoutCreateInfo* pCreateInfo);
+Move<VkSampler>                                                createSampler                                   (const DeviceInterface& vk, VkDevice device, const VkSamplerCreateInfo* pCreateInfo);
+Move<VkDescriptorSetLayout>                    createDescriptorSetLayout               (const DeviceInterface& vk, VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo);
+Move<VkDescriptorPool>                         createDescriptorPool                    (const DeviceInterface& vk, VkDevice device, VkDescriptorPoolUsage poolUsage, deUint32 maxSets, const VkDescriptorPoolCreateInfo* pCreateInfo);
+Move<VkDynamicViewportState>           createDynamicViewportState              (const DeviceInterface& vk, VkDevice device, const VkDynamicViewportStateCreateInfo* pCreateInfo);
+Move<VkDynamicRasterState>                     createDynamicRasterState                (const DeviceInterface& vk, VkDevice device, const VkDynamicRasterStateCreateInfo* pCreateInfo);
+Move<VkDynamicColorBlendState>         createDynamicColorBlendState    (const DeviceInterface& vk, VkDevice device, const VkDynamicColorBlendStateCreateInfo* pCreateInfo);
+Move<VkDynamicDepthStencilState>       createDynamicDepthStencilState  (const DeviceInterface& vk, VkDevice device, const VkDynamicDepthStencilStateCreateInfo* pCreateInfo);
+Move<VkFramebuffer>                                    createFramebuffer                               (const DeviceInterface& vk, VkDevice device, const VkFramebufferCreateInfo* pCreateInfo);
+Move<VkRenderPass>                                     createRenderPass                                (const DeviceInterface& vk, VkDevice device, const VkRenderPassCreateInfo* pCreateInfo);
+Move<VkCmdPool>                                                createCommandPool                               (const DeviceInterface& vk, VkDevice device, const VkCmdPoolCreateInfo* pCreateInfo);
+Move<VkCmdBuffer>                                      createCommandBuffer                             (const DeviceInterface& vk, VkDevice device, const VkCmdBufferCreateInfo* pCreateInfo);
index 14bf6fa..890529b 100644 (file)
 /* WARNING: This is auto-generated file. Do not modify, since changes will
  * be lost! Modify the generating script instead.
  */
-Move<VkInstanceT> createInstance (const PlatformInterface& vk, const VkInstanceCreateInfo* pCreateInfo)
+namespace refdetails
+{
+
+template<>
+void Deleter<VkDeviceMemory>::operator() (VkDeviceMemory obj) const
+{
+       DE_TEST_ASSERT(m_deviceIface->freeMemory(m_device, obj) == VK_SUCCESS);
+}
+
+template<>
+void Deleter<VkFence>::operator() (VkFence obj) const
+{
+       DE_TEST_ASSERT(m_deviceIface->destroyFence(m_device, obj) == VK_SUCCESS);
+}
+
+template<>
+void Deleter<VkSemaphore>::operator() (VkSemaphore obj) const
+{
+       DE_TEST_ASSERT(m_deviceIface->destroySemaphore(m_device, obj) == VK_SUCCESS);
+}
+
+template<>
+void Deleter<VkEvent>::operator() (VkEvent obj) const
+{
+       DE_TEST_ASSERT(m_deviceIface->destroyEvent(m_device, obj) == VK_SUCCESS);
+}
+
+template<>
+void Deleter<VkQueryPool>::operator() (VkQueryPool obj) const
+{
+       DE_TEST_ASSERT(m_deviceIface->destroyQueryPool(m_device, obj) == VK_SUCCESS);
+}
+
+template<>
+void Deleter<VkBuffer>::operator() (VkBuffer obj) const
+{
+       DE_TEST_ASSERT(m_deviceIface->destroyBuffer(m_device, obj) == VK_SUCCESS);
+}
+
+template<>
+void Deleter<VkBufferView>::operator() (VkBufferView obj) const
+{
+       DE_TEST_ASSERT(m_deviceIface->destroyBufferView(m_device, obj) == VK_SUCCESS);
+}
+
+template<>
+void Deleter<VkImage>::operator() (VkImage obj) const
+{
+       DE_TEST_ASSERT(m_deviceIface->destroyImage(m_device, obj) == VK_SUCCESS);
+}
+
+template<>
+void Deleter<VkImageView>::operator() (VkImageView obj) const
+{
+       DE_TEST_ASSERT(m_deviceIface->destroyImageView(m_device, obj) == VK_SUCCESS);
+}
+
+template<>
+void Deleter<VkAttachmentView>::operator() (VkAttachmentView obj) const
+{
+       DE_TEST_ASSERT(m_deviceIface->destroyAttachmentView(m_device, obj) == VK_SUCCESS);
+}
+
+template<>
+void Deleter<VkShaderModule>::operator() (VkShaderModule obj) const
+{
+       DE_TEST_ASSERT(m_deviceIface->destroyShaderModule(m_device, obj) == VK_SUCCESS);
+}
+
+template<>
+void Deleter<VkShader>::operator() (VkShader obj) const
+{
+       DE_TEST_ASSERT(m_deviceIface->destroyShader(m_device, obj) == VK_SUCCESS);
+}
+
+template<>
+void Deleter<VkPipelineCache>::operator() (VkPipelineCache obj) const
+{
+       DE_TEST_ASSERT(m_deviceIface->destroyPipelineCache(m_device, obj) == VK_SUCCESS);
+}
+
+template<>
+void Deleter<VkPipeline>::operator() (VkPipeline obj) const
+{
+       DE_TEST_ASSERT(m_deviceIface->destroyPipeline(m_device, obj) == VK_SUCCESS);
+}
+
+template<>
+void Deleter<VkPipelineLayout>::operator() (VkPipelineLayout obj) const
+{
+       DE_TEST_ASSERT(m_deviceIface->destroyPipelineLayout(m_device, obj) == VK_SUCCESS);
+}
+
+template<>
+void Deleter<VkSampler>::operator() (VkSampler obj) const
+{
+       DE_TEST_ASSERT(m_deviceIface->destroySampler(m_device, obj) == VK_SUCCESS);
+}
+
+template<>
+void Deleter<VkDescriptorSetLayout>::operator() (VkDescriptorSetLayout obj) const
+{
+       DE_TEST_ASSERT(m_deviceIface->destroyDescriptorSetLayout(m_device, obj) == VK_SUCCESS);
+}
+
+template<>
+void Deleter<VkDescriptorPool>::operator() (VkDescriptorPool obj) const
+{
+       DE_TEST_ASSERT(m_deviceIface->destroyDescriptorPool(m_device, obj) == VK_SUCCESS);
+}
+
+template<>
+void Deleter<VkDynamicViewportState>::operator() (VkDynamicViewportState obj) const
+{
+       DE_TEST_ASSERT(m_deviceIface->destroyDynamicViewportState(m_device, obj) == VK_SUCCESS);
+}
+
+template<>
+void Deleter<VkDynamicRasterState>::operator() (VkDynamicRasterState obj) const
+{
+       DE_TEST_ASSERT(m_deviceIface->destroyDynamicRasterState(m_device, obj) == VK_SUCCESS);
+}
+
+template<>
+void Deleter<VkDynamicColorBlendState>::operator() (VkDynamicColorBlendState obj) const
+{
+       DE_TEST_ASSERT(m_deviceIface->destroyDynamicColorBlendState(m_device, obj) == VK_SUCCESS);
+}
+
+template<>
+void Deleter<VkDynamicDepthStencilState>::operator() (VkDynamicDepthStencilState obj) const
+{
+       DE_TEST_ASSERT(m_deviceIface->destroyDynamicDepthStencilState(m_device, obj) == VK_SUCCESS);
+}
+
+template<>
+void Deleter<VkFramebuffer>::operator() (VkFramebuffer obj) const
+{
+       DE_TEST_ASSERT(m_deviceIface->destroyFramebuffer(m_device, obj) == VK_SUCCESS);
+}
+
+template<>
+void Deleter<VkRenderPass>::operator() (VkRenderPass obj) const
+{
+       DE_TEST_ASSERT(m_deviceIface->destroyRenderPass(m_device, obj) == VK_SUCCESS);
+}
+
+template<>
+void Deleter<VkCmdPool>::operator() (VkCmdPool obj) const
+{
+       DE_TEST_ASSERT(m_deviceIface->destroyCommandPool(m_device, obj) == VK_SUCCESS);
+}
+
+template<>
+void Deleter<VkCmdBuffer>::operator() (VkCmdBuffer obj) const
+{
+       DE_TEST_ASSERT(m_deviceIface->destroyCommandBuffer(m_device, obj) == VK_SUCCESS);
+}
+
+} // refdetails
+
+Move<VkInstance> createInstance (const PlatformInterface& vk, const VkInstanceCreateInfo* pCreateInfo)
 {
        VkInstance object = 0;
        VK_CHECK(vk.createInstance(pCreateInfo, &object));
-       return Move<VkInstanceT>(vk, check<VkInstanceT>(object));
+       return Move<VkInstance>(check<VkInstance>(object), Deleter<VkInstance>(vk, object));
 }
 
-Move<VkDeviceT> createDevice (const DeviceInterface& vk, VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo* pCreateInfo)
+Move<VkDevice> createDevice (const InstanceInterface& vk, VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo* pCreateInfo)
 {
        VkDevice object = 0;
        VK_CHECK(vk.createDevice(physicalDevice, pCreateInfo, &object));
-       return Move<VkDeviceT>(vk, check<VkDeviceT>(object));
+       return Move<VkDevice>(check<VkDevice>(object), Deleter<VkDevice>(vk, object));
 }
 
-Move<VkDeviceMemoryT> allocMemory (const DeviceInterface& vk, VkDevice device, const VkMemoryAllocInfo* pAllocInfo)
+Move<VkDeviceMemory> allocMemory (const DeviceInterface& vk, VkDevice device, const VkMemoryAllocInfo* pAllocInfo)
 {
        VkDeviceMemory object = 0;
        VK_CHECK(vk.allocMemory(device, pAllocInfo, &object));
-       return Move<VkDeviceMemoryT>(vk, device, check<VkDeviceMemoryT>(object));
+       return Move<VkDeviceMemory>(check<VkDeviceMemory>(object), Deleter<VkDeviceMemory>(vk, device));
 }
 
-Move<VkFenceT> createFence (const DeviceInterface& vk, VkDevice device, const VkFenceCreateInfo* pCreateInfo)
+Move<VkFence> createFence (const DeviceInterface& vk, VkDevice device, const VkFenceCreateInfo* pCreateInfo)
 {
        VkFence object = 0;
        VK_CHECK(vk.createFence(device, pCreateInfo, &object));
-       return Move<VkFenceT>(vk, device, check<VkFenceT>(object));
+       return Move<VkFence>(check<VkFence>(object), Deleter<VkFence>(vk, device));
 }
 
-Move<VkSemaphoreT> createSemaphore (const DeviceInterface& vk, VkDevice device, const VkSemaphoreCreateInfo* pCreateInfo)
+Move<VkSemaphore> createSemaphore (const DeviceInterface& vk, VkDevice device, const VkSemaphoreCreateInfo* pCreateInfo)
 {
        VkSemaphore object = 0;
        VK_CHECK(vk.createSemaphore(device, pCreateInfo, &object));
-       return Move<VkSemaphoreT>(vk, device, check<VkSemaphoreT>(object));
+       return Move<VkSemaphore>(check<VkSemaphore>(object), Deleter<VkSemaphore>(vk, device));
 }
 
-Move<VkEventT> createEvent (const DeviceInterface& vk, VkDevice device, const VkEventCreateInfo* pCreateInfo)
+Move<VkEvent> createEvent (const DeviceInterface& vk, VkDevice device, const VkEventCreateInfo* pCreateInfo)
 {
        VkEvent object = 0;
        VK_CHECK(vk.createEvent(device, pCreateInfo, &object));
-       return Move<VkEventT>(vk, device, check<VkEventT>(object));
+       return Move<VkEvent>(check<VkEvent>(object), Deleter<VkEvent>(vk, device));
 }
 
-Move<VkQueryPoolT> createQueryPool (const DeviceInterface& vk, VkDevice device, const VkQueryPoolCreateInfo* pCreateInfo)
+Move<VkQueryPool> createQueryPool (const DeviceInterface& vk, VkDevice device, const VkQueryPoolCreateInfo* pCreateInfo)
 {
        VkQueryPool object = 0;
        VK_CHECK(vk.createQueryPool(device, pCreateInfo, &object));
-       return Move<VkQueryPoolT>(vk, device, check<VkQueryPoolT>(object));
+       return Move<VkQueryPool>(check<VkQueryPool>(object), Deleter<VkQueryPool>(vk, device));
 }
 
-Move<VkBufferT> createBuffer (const DeviceInterface& vk, VkDevice device, const VkBufferCreateInfo* pCreateInfo)
+Move<VkBuffer> createBuffer (const DeviceInterface& vk, VkDevice device, const VkBufferCreateInfo* pCreateInfo)
 {
        VkBuffer object = 0;
        VK_CHECK(vk.createBuffer(device, pCreateInfo, &object));
-       return Move<VkBufferT>(vk, device, check<VkBufferT>(object));
+       return Move<VkBuffer>(check<VkBuffer>(object), Deleter<VkBuffer>(vk, device));
 }
 
-Move<VkBufferViewT> createBufferView (const DeviceInterface& vk, VkDevice device, const VkBufferViewCreateInfo* pCreateInfo)
+Move<VkBufferView> createBufferView (const DeviceInterface& vk, VkDevice device, const VkBufferViewCreateInfo* pCreateInfo)
 {
        VkBufferView object = 0;
        VK_CHECK(vk.createBufferView(device, pCreateInfo, &object));
-       return Move<VkBufferViewT>(vk, device, check<VkBufferViewT>(object));
+       return Move<VkBufferView>(check<VkBufferView>(object), Deleter<VkBufferView>(vk, device));
 }
 
-Move<VkImageT> createImage (const DeviceInterface& vk, VkDevice device, const VkImageCreateInfo* pCreateInfo)
+Move<VkImage> createImage (const DeviceInterface& vk, VkDevice device, const VkImageCreateInfo* pCreateInfo)
 {
        VkImage object = 0;
        VK_CHECK(vk.createImage(device, pCreateInfo, &object));
-       return Move<VkImageT>(vk, device, check<VkImageT>(object));
+       return Move<VkImage>(check<VkImage>(object), Deleter<VkImage>(vk, device));
 }
 
-Move<VkImageViewT> createImageView (const DeviceInterface& vk, VkDevice device, const VkImageViewCreateInfo* pCreateInfo)
+Move<VkImageView> createImageView (const DeviceInterface& vk, VkDevice device, const VkImageViewCreateInfo* pCreateInfo)
 {
        VkImageView object = 0;
        VK_CHECK(vk.createImageView(device, pCreateInfo, &object));
-       return Move<VkImageViewT>(vk, device, check<VkImageViewT>(object));
+       return Move<VkImageView>(check<VkImageView>(object), Deleter<VkImageView>(vk, device));
 }
 
-Move<VkColorAttachmentViewT> createColorAttachmentView (const DeviceInterface& vk, VkDevice device, const VkColorAttachmentViewCreateInfo* pCreateInfo)
+Move<VkAttachmentView> createAttachmentView (const DeviceInterface& vk, VkDevice device, const VkAttachmentViewCreateInfo* pCreateInfo)
 {
-       VkColorAttachmentView object = 0;
-       VK_CHECK(vk.createColorAttachmentView(device, pCreateInfo, &object));
-       return Move<VkColorAttachmentViewT>(vk, device, check<VkColorAttachmentViewT>(object));
+       VkAttachmentView object = 0;
+       VK_CHECK(vk.createAttachmentView(device, pCreateInfo, &object));
+       return Move<VkAttachmentView>(check<VkAttachmentView>(object), Deleter<VkAttachmentView>(vk, device));
 }
 
-Move<VkDepthStencilViewT> createDepthStencilView (const DeviceInterface& vk, VkDevice device, const VkDepthStencilViewCreateInfo* pCreateInfo)
+Move<VkShaderModule> createShaderModule (const DeviceInterface& vk, VkDevice device, const VkShaderModuleCreateInfo* pCreateInfo)
 {
-       VkDepthStencilView object = 0;
-       VK_CHECK(vk.createDepthStencilView(device, pCreateInfo, &object));
-       return Move<VkDepthStencilViewT>(vk, device, check<VkDepthStencilViewT>(object));
+       VkShaderModule object = 0;
+       VK_CHECK(vk.createShaderModule(device, pCreateInfo, &object));
+       return Move<VkShaderModule>(check<VkShaderModule>(object), Deleter<VkShaderModule>(vk, device));
 }
 
-Move<VkShaderT> createShader (const DeviceInterface& vk, VkDevice device, const VkShaderCreateInfo* pCreateInfo)
+Move<VkShader> createShader (const DeviceInterface& vk, VkDevice device, const VkShaderCreateInfo* pCreateInfo)
 {
        VkShader object = 0;
        VK_CHECK(vk.createShader(device, pCreateInfo, &object));
-       return Move<VkShaderT>(vk, device, check<VkShaderT>(object));
+       return Move<VkShader>(check<VkShader>(object), Deleter<VkShader>(vk, device));
 }
 
-Move<VkPipelineT> createGraphicsPipeline (const DeviceInterface& vk, VkDevice device, const VkGraphicsPipelineCreateInfo* pCreateInfo)
+Move<VkPipelineCache> createPipelineCache (const DeviceInterface& vk, VkDevice device, const VkPipelineCacheCreateInfo* pCreateInfo)
 {
-       VkPipeline object = 0;
-       VK_CHECK(vk.createGraphicsPipeline(device, pCreateInfo, &object));
-       return Move<VkPipelineT>(vk, device, check<VkPipelineT>(object));
+       VkPipelineCache object = 0;
+       VK_CHECK(vk.createPipelineCache(device, pCreateInfo, &object));
+       return Move<VkPipelineCache>(check<VkPipelineCache>(object), Deleter<VkPipelineCache>(vk, device));
 }
 
-Move<VkPipelineT> createGraphicsPipelineDerivative (const DeviceInterface& vk, VkDevice device, const VkGraphicsPipelineCreateInfo* pCreateInfo, VkPipeline basePipeline)
-{
-       VkPipeline object = 0;
-       VK_CHECK(vk.createGraphicsPipelineDerivative(device, pCreateInfo, basePipeline, &object));
-       return Move<VkPipelineT>(vk, device, check<VkPipelineT>(object));
-}
-
-Move<VkPipelineT> createComputePipeline (const DeviceInterface& vk, VkDevice device, const VkComputePipelineCreateInfo* pCreateInfo)
-{
-       VkPipeline object = 0;
-       VK_CHECK(vk.createComputePipeline(device, pCreateInfo, &object));
-       return Move<VkPipelineT>(vk, device, check<VkPipelineT>(object));
-}
-
-Move<VkPipelineLayoutT> createPipelineLayout (const DeviceInterface& vk, VkDevice device, const VkPipelineLayoutCreateInfo* pCreateInfo)
+Move<VkPipelineLayout> createPipelineLayout (const DeviceInterface& vk, VkDevice device, const VkPipelineLayoutCreateInfo* pCreateInfo)
 {
        VkPipelineLayout object = 0;
        VK_CHECK(vk.createPipelineLayout(device, pCreateInfo, &object));
-       return Move<VkPipelineLayoutT>(vk, device, check<VkPipelineLayoutT>(object));
+       return Move<VkPipelineLayout>(check<VkPipelineLayout>(object), Deleter<VkPipelineLayout>(vk, device));
 }
 
-Move<VkSamplerT> createSampler (const DeviceInterface& vk, VkDevice device, const VkSamplerCreateInfo* pCreateInfo)
+Move<VkSampler> createSampler (const DeviceInterface& vk, VkDevice device, const VkSamplerCreateInfo* pCreateInfo)
 {
        VkSampler object = 0;
        VK_CHECK(vk.createSampler(device, pCreateInfo, &object));
-       return Move<VkSamplerT>(vk, device, check<VkSamplerT>(object));
+       return Move<VkSampler>(check<VkSampler>(object), Deleter<VkSampler>(vk, device));
 }
 
-Move<VkDescriptorSetLayoutT> createDescriptorSetLayout (const DeviceInterface& vk, VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo)
+Move<VkDescriptorSetLayout> createDescriptorSetLayout (const DeviceInterface& vk, VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo)
 {
        VkDescriptorSetLayout object = 0;
        VK_CHECK(vk.createDescriptorSetLayout(device, pCreateInfo, &object));
-       return Move<VkDescriptorSetLayoutT>(vk, device, check<VkDescriptorSetLayoutT>(object));
+       return Move<VkDescriptorSetLayout>(check<VkDescriptorSetLayout>(object), Deleter<VkDescriptorSetLayout>(vk, device));
 }
 
-Move<VkDescriptorPoolT> createDescriptorPool (const DeviceInterface& vk, VkDevice device, VkDescriptorPoolUsage poolUsage, deUint32 maxSets, const VkDescriptorPoolCreateInfo* pCreateInfo)
+Move<VkDescriptorPool> createDescriptorPool (const DeviceInterface& vk, VkDevice device, VkDescriptorPoolUsage poolUsage, deUint32 maxSets, const VkDescriptorPoolCreateInfo* pCreateInfo)
 {
        VkDescriptorPool object = 0;
        VK_CHECK(vk.createDescriptorPool(device, poolUsage, maxSets, pCreateInfo, &object));
-       return Move<VkDescriptorPoolT>(vk, device, check<VkDescriptorPoolT>(object));
+       return Move<VkDescriptorPool>(check<VkDescriptorPool>(object), Deleter<VkDescriptorPool>(vk, device));
 }
 
-Move<VkDynamicVpStateT> createDynamicViewportState (const DeviceInterface& vk, VkDevice device, const VkDynamicVpStateCreateInfo* pCreateInfo)
+Move<VkDynamicViewportState> createDynamicViewportState (const DeviceInterface& vk, VkDevice device, const VkDynamicViewportStateCreateInfo* pCreateInfo)
 {
-       VkDynamicVpState object = 0;
+       VkDynamicViewportState object = 0;
        VK_CHECK(vk.createDynamicViewportState(device, pCreateInfo, &object));
-       return Move<VkDynamicVpStateT>(vk, device, check<VkDynamicVpStateT>(object));
+       return Move<VkDynamicViewportState>(check<VkDynamicViewportState>(object), Deleter<VkDynamicViewportState>(vk, device));
 }
 
-Move<VkDynamicRsStateT> createDynamicRasterState (const DeviceInterface& vk, VkDevice device, const VkDynamicRsStateCreateInfo* pCreateInfo)
+Move<VkDynamicRasterState> createDynamicRasterState (const DeviceInterface& vk, VkDevice device, const VkDynamicRasterStateCreateInfo* pCreateInfo)
 {
-       VkDynamicRsState object = 0;
+       VkDynamicRasterState object = 0;
        VK_CHECK(vk.createDynamicRasterState(device, pCreateInfo, &object));
-       return Move<VkDynamicRsStateT>(vk, device, check<VkDynamicRsStateT>(object));
+       return Move<VkDynamicRasterState>(check<VkDynamicRasterState>(object), Deleter<VkDynamicRasterState>(vk, device));
 }
 
-Move<VkDynamicCbStateT> createDynamicColorBlendState (const DeviceInterface& vk, VkDevice device, const VkDynamicCbStateCreateInfo* pCreateInfo)
+Move<VkDynamicColorBlendState> createDynamicColorBlendState (const DeviceInterface& vk, VkDevice device, const VkDynamicColorBlendStateCreateInfo* pCreateInfo)
 {
-       VkDynamicCbState object = 0;
+       VkDynamicColorBlendState object = 0;
        VK_CHECK(vk.createDynamicColorBlendState(device, pCreateInfo, &object));
-       return Move<VkDynamicCbStateT>(vk, device, check<VkDynamicCbStateT>(object));
+       return Move<VkDynamicColorBlendState>(check<VkDynamicColorBlendState>(object), Deleter<VkDynamicColorBlendState>(vk, device));
 }
 
-Move<VkDynamicDsStateT> createDynamicDepthStencilState (const DeviceInterface& vk, VkDevice device, const VkDynamicDsStateCreateInfo* pCreateInfo)
+Move<VkDynamicDepthStencilState> createDynamicDepthStencilState (const DeviceInterface& vk, VkDevice device, const VkDynamicDepthStencilStateCreateInfo* pCreateInfo)
 {
-       VkDynamicDsState object = 0;
+       VkDynamicDepthStencilState object = 0;
        VK_CHECK(vk.createDynamicDepthStencilState(device, pCreateInfo, &object));
-       return Move<VkDynamicDsStateT>(vk, device, check<VkDynamicDsStateT>(object));
+       return Move<VkDynamicDepthStencilState>(check<VkDynamicDepthStencilState>(object), Deleter<VkDynamicDepthStencilState>(vk, device));
 }
 
-Move<VkCmdBufferT> createCommandBuffer (const DeviceInterface& vk, VkDevice device, const VkCmdBufferCreateInfo* pCreateInfo)
-{
-       VkCmdBuffer object = 0;
-       VK_CHECK(vk.createCommandBuffer(device, pCreateInfo, &object));
-       return Move<VkCmdBufferT>(vk, device, check<VkCmdBufferT>(object));
-}
-
-Move<VkFramebufferT> createFramebuffer (const DeviceInterface& vk, VkDevice device, const VkFramebufferCreateInfo* pCreateInfo)
+Move<VkFramebuffer> createFramebuffer (const DeviceInterface& vk, VkDevice device, const VkFramebufferCreateInfo* pCreateInfo)
 {
        VkFramebuffer object = 0;
        VK_CHECK(vk.createFramebuffer(device, pCreateInfo, &object));
-       return Move<VkFramebufferT>(vk, device, check<VkFramebufferT>(object));
+       return Move<VkFramebuffer>(check<VkFramebuffer>(object), Deleter<VkFramebuffer>(vk, device));
 }
 
-Move<VkRenderPassT> createRenderPass (const DeviceInterface& vk, VkDevice device, const VkRenderPassCreateInfo* pCreateInfo)
+Move<VkRenderPass> createRenderPass (const DeviceInterface& vk, VkDevice device, const VkRenderPassCreateInfo* pCreateInfo)
 {
        VkRenderPass object = 0;
        VK_CHECK(vk.createRenderPass(device, pCreateInfo, &object));
-       return Move<VkRenderPassT>(vk, device, check<VkRenderPassT>(object));
+       return Move<VkRenderPass>(check<VkRenderPass>(object), Deleter<VkRenderPass>(vk, device));
+}
+
+Move<VkCmdPool> createCommandPool (const DeviceInterface& vk, VkDevice device, const VkCmdPoolCreateInfo* pCreateInfo)
+{
+       VkCmdPool object = 0;
+       VK_CHECK(vk.createCommandPool(device, pCreateInfo, &object));
+       return Move<VkCmdPool>(check<VkCmdPool>(object), Deleter<VkCmdPool>(vk, device));
+}
+
+Move<VkCmdBuffer> createCommandBuffer (const DeviceInterface& vk, VkDevice device, const VkCmdBufferCreateInfo* pCreateInfo)
+{
+       VkCmdBuffer object = 0;
+       VK_CHECK(vk.createCommandBuffer(device, pCreateInfo, &object));
+       return Move<VkCmdBuffer>(check<VkCmdBuffer>(object), Deleter<VkCmdBuffer>(vk, device));
 }
 
index 0fe140f..a842e1f 100644 (file)
@@ -45,15 +45,15 @@ namespace vk
 template<typename T>
 const char*    getTypeName     (void);
 
-inline std::ostream& operator<< (std::ostream& s, const ApiVersion& version)
+template<HandleType Type>
+inline std::ostream& operator<< (std::ostream& s, const Handle<Type>& handle)
 {
-       return s << version.major << "." << version.minor << "." << version.patch;
+       return s << tcu::toHex(handle.getInternal());
 }
 
-inline std::ostream& operator<< (std::ostream& s, const VkClearColorValue& value)
+inline std::ostream& operator<< (std::ostream& s, const ApiVersion& version)
 {
-       return s << "{ floatColor = " << tcu::formatArray(DE_ARRAY_BEGIN(value.floatColor), DE_ARRAY_END(value.floatColor))
-                        << ", rawColor = " << tcu::formatArray(tcu::Format::HexIterator<deUint32>(DE_ARRAY_BEGIN(value.rawColor)), tcu::Format::HexIterator<deUint32>(DE_ARRAY_END(value.rawColor))) << " }";
+       return s << version.major << "." << version.minor << "." << version.patch;
 }
 
 } // vk
index 1377ec7..3fcbbc5 100644 (file)
 /* WARNING: This is auto-generated file. Do not modify, since changes will
  * be lost! Modify the generating script instead.
  */
-const char*    getMemoryPriorityName                   (VkMemoryPriority value);
-const char*    getImageLayoutName                              (VkImageLayout value);
-const char*    getPipeEventName                                (VkPipeEvent value);
-const char*    getWaitEventName                                (VkWaitEvent value);
-const char*    getAttachmentLoadOpName                 (VkAttachmentLoadOp value);
-const char*    getAttachmentStoreOpName                (VkAttachmentStoreOp value);
-const char*    getImageTypeName                                (VkImageType value);
-const char*    getImageTilingName                              (VkImageTiling value);
-const char*    getImageViewTypeName                    (VkImageViewType value);
-const char*    getImageAspectName                              (VkImageAspect value);
-const char*    getBufferViewTypeName                   (VkBufferViewType value);
-const char*    getChannelSwizzleName                   (VkChannelSwizzle value);
-const char*    getDescriptorTypeName                   (VkDescriptorType value);
-const char*    getDescriptorPoolUsageName              (VkDescriptorPoolUsage value);
-const char*    getDescriptorUpdateModeName             (VkDescriptorUpdateMode value);
-const char*    getDescriptorSetUsageName               (VkDescriptorSetUsage value);
-const char*    getQueryTypeName                                (VkQueryType value);
-const char*    getTimestampTypeName                    (VkTimestampType value);
-const char*    getBorderColorName                              (VkBorderColor value);
-const char*    getPipelineBindPointName                (VkPipelineBindPoint value);
-const char*    getStateBindPointName                   (VkStateBindPoint value);
-const char*    getPrimitiveTopologyName                (VkPrimitiveTopology value);
-const char*    getIndexTypeName                                (VkIndexType value);
-const char*    getTexFilterName                                (VkTexFilter value);
-const char*    getTexMipmapModeName                    (VkTexMipmapMode value);
-const char*    getTexAddressName                               (VkTexAddress value);
-const char*    getCompareOpName                                (VkCompareOp value);
-const char*    getFillModeName                                 (VkFillMode value);
-const char*    getCullModeName                                 (VkCullMode value);
-const char*    getFrontFaceName                                (VkFrontFace value);
-const char*    getProvokingVertexName                  (VkProvokingVertex value);
-const char*    getCoordinateOriginName                 (VkCoordinateOrigin value);
-const char*    getDepthModeName                                (VkDepthMode value);
-const char*    getBlendName                                    (VkBlend value);
-const char*    getBlendOpName                                  (VkBlendOp value);
-const char*    getStencilOpName                                (VkStencilOp value);
-const char*    getLogicOpName                                  (VkLogicOp value);
-const char*    getSystemAllocTypeName                  (VkSystemAllocType value);
-const char*    getPhysicalDeviceTypeName               (VkPhysicalDeviceType value);
-const char*    getPhysicalDeviceInfoTypeName   (VkPhysicalDeviceInfoType value);
-const char*    getExtensionInfoTypeName                (VkExtensionInfoType value);
-const char*    getFormatInfoTypeName                   (VkFormatInfoType value);
-const char*    getSubresourceInfoTypeName              (VkSubresourceInfoType value);
-const char*    getObjectInfoTypeName                   (VkObjectInfoType value);
-const char*    getVertexInputStepRateName              (VkVertexInputStepRate value);
-const char*    getFormatName                                   (VkFormat value);
-const char*    getShaderStageName                              (VkShaderStage value);
-const char*    getStructureTypeName                    (VkStructureType value);
-const char*    getObjectTypeName                               (VkObjectType value);
-const char*    getResultName                                   (VkResult value);
+const char*    getResultName                           (VkResult value);
+const char*    getStructureTypeName            (VkStructureType value);
+const char*    getSystemAllocTypeName          (VkSystemAllocType value);
+const char*    getFormatName                           (VkFormat value);
+const char*    getImageTypeName                        (VkImageType value);
+const char*    getImageTilingName                      (VkImageTiling value);
+const char*    getPhysicalDeviceTypeName       (VkPhysicalDeviceType value);
+const char*    getImageAspectName                      (VkImageAspect value);
+const char*    getQueryTypeName                        (VkQueryType value);
+const char*    getSharingModeName                      (VkSharingMode value);
+const char*    getBufferViewTypeName           (VkBufferViewType value);
+const char*    getImageViewTypeName            (VkImageViewType value);
+const char*    getChannelSwizzleName           (VkChannelSwizzle value);
+const char*    getShaderStageName                      (VkShaderStage value);
+const char*    getVertexInputStepRateName      (VkVertexInputStepRate value);
+const char*    getPrimitiveTopologyName        (VkPrimitiveTopology value);
+const char*    getFillModeName                         (VkFillMode value);
+const char*    getCullModeName                         (VkCullMode value);
+const char*    getFrontFaceName                        (VkFrontFace value);
+const char*    getCompareOpName                        (VkCompareOp value);
+const char*    getStencilOpName                        (VkStencilOp value);
+const char*    getLogicOpName                          (VkLogicOp value);
+const char*    getBlendName                            (VkBlend value);
+const char*    getBlendOpName                          (VkBlendOp value);
+const char*    getTexFilterName                        (VkTexFilter value);
+const char*    getTexMipmapModeName            (VkTexMipmapMode value);
+const char*    getTexAddressName                       (VkTexAddress value);
+const char*    getBorderColorName                      (VkBorderColor value);
+const char*    getDescriptorTypeName           (VkDescriptorType value);
+const char*    getDescriptorPoolUsageName      (VkDescriptorPoolUsage value);
+const char*    getDescriptorSetUsageName       (VkDescriptorSetUsage value);
+const char*    getImageLayoutName                      (VkImageLayout value);
+const char*    getAttachmentLoadOpName         (VkAttachmentLoadOp value);
+const char*    getAttachmentStoreOpName        (VkAttachmentStoreOp value);
+const char*    getPipelineBindPointName        (VkPipelineBindPoint value);
+const char*    getCmdBufferLevelName           (VkCmdBufferLevel value);
+const char*    getIndexTypeName                        (VkIndexType value);
+const char*    getTimestampTypeName            (VkTimestampType value);
+const char*    getRenderPassContentsName       (VkRenderPassContents value);
 
-inline tcu::Format::Enum<VkMemoryPriority>                     getMemoryPriorityStr                    (VkMemoryPriority value)                        { return tcu::Format::Enum<VkMemoryPriority>(getMemoryPriorityName, value);                                     }
-inline tcu::Format::Enum<VkImageLayout>                                getImageLayoutStr                               (VkImageLayout value)                           { return tcu::Format::Enum<VkImageLayout>(getImageLayoutName, value);                                           }
-inline tcu::Format::Enum<VkPipeEvent>                          getPipeEventStr                                 (VkPipeEvent value)                                     { return tcu::Format::Enum<VkPipeEvent>(getPipeEventName, value);                                                       }
-inline tcu::Format::Enum<VkWaitEvent>                          getWaitEventStr                                 (VkWaitEvent value)                                     { return tcu::Format::Enum<VkWaitEvent>(getWaitEventName, value);                                                       }
-inline tcu::Format::Enum<VkAttachmentLoadOp>           getAttachmentLoadOpStr                  (VkAttachmentLoadOp value)                      { return tcu::Format::Enum<VkAttachmentLoadOp>(getAttachmentLoadOpName, value);                         }
-inline tcu::Format::Enum<VkAttachmentStoreOp>          getAttachmentStoreOpStr                 (VkAttachmentStoreOp value)                     { return tcu::Format::Enum<VkAttachmentStoreOp>(getAttachmentStoreOpName, value);                       }
-inline tcu::Format::Enum<VkImageType>                          getImageTypeStr                                 (VkImageType value)                                     { return tcu::Format::Enum<VkImageType>(getImageTypeName, value);                                                       }
-inline tcu::Format::Enum<VkImageTiling>                                getImageTilingStr                               (VkImageTiling value)                           { return tcu::Format::Enum<VkImageTiling>(getImageTilingName, value);                                           }
-inline tcu::Format::Enum<VkImageViewType>                      getImageViewTypeStr                             (VkImageViewType value)                         { return tcu::Format::Enum<VkImageViewType>(getImageViewTypeName, value);                                       }
-inline tcu::Format::Enum<VkImageAspect>                                getImageAspectStr                               (VkImageAspect value)                           { return tcu::Format::Enum<VkImageAspect>(getImageAspectName, value);                                           }
-inline tcu::Format::Enum<VkBufferViewType>                     getBufferViewTypeStr                    (VkBufferViewType value)                        { return tcu::Format::Enum<VkBufferViewType>(getBufferViewTypeName, value);                                     }
-inline tcu::Format::Enum<VkChannelSwizzle>                     getChannelSwizzleStr                    (VkChannelSwizzle value)                        { return tcu::Format::Enum<VkChannelSwizzle>(getChannelSwizzleName, value);                                     }
-inline tcu::Format::Enum<VkDescriptorType>                     getDescriptorTypeStr                    (VkDescriptorType value)                        { return tcu::Format::Enum<VkDescriptorType>(getDescriptorTypeName, value);                                     }
-inline tcu::Format::Enum<VkDescriptorPoolUsage>                getDescriptorPoolUsageStr               (VkDescriptorPoolUsage value)           { return tcu::Format::Enum<VkDescriptorPoolUsage>(getDescriptorPoolUsageName, value);           }
-inline tcu::Format::Enum<VkDescriptorUpdateMode>       getDescriptorUpdateModeStr              (VkDescriptorUpdateMode value)          { return tcu::Format::Enum<VkDescriptorUpdateMode>(getDescriptorUpdateModeName, value);         }
-inline tcu::Format::Enum<VkDescriptorSetUsage>         getDescriptorSetUsageStr                (VkDescriptorSetUsage value)            { return tcu::Format::Enum<VkDescriptorSetUsage>(getDescriptorSetUsageName, value);                     }
-inline tcu::Format::Enum<VkQueryType>                          getQueryTypeStr                                 (VkQueryType value)                                     { return tcu::Format::Enum<VkQueryType>(getQueryTypeName, value);                                                       }
-inline tcu::Format::Enum<VkTimestampType>                      getTimestampTypeStr                             (VkTimestampType value)                         { return tcu::Format::Enum<VkTimestampType>(getTimestampTypeName, value);                                       }
-inline tcu::Format::Enum<VkBorderColor>                                getBorderColorStr                               (VkBorderColor value)                           { return tcu::Format::Enum<VkBorderColor>(getBorderColorName, value);                                           }
-inline tcu::Format::Enum<VkPipelineBindPoint>          getPipelineBindPointStr                 (VkPipelineBindPoint value)                     { return tcu::Format::Enum<VkPipelineBindPoint>(getPipelineBindPointName, value);                       }
-inline tcu::Format::Enum<VkStateBindPoint>                     getStateBindPointStr                    (VkStateBindPoint value)                        { return tcu::Format::Enum<VkStateBindPoint>(getStateBindPointName, value);                                     }
-inline tcu::Format::Enum<VkPrimitiveTopology>          getPrimitiveTopologyStr                 (VkPrimitiveTopology value)                     { return tcu::Format::Enum<VkPrimitiveTopology>(getPrimitiveTopologyName, value);                       }
-inline tcu::Format::Enum<VkIndexType>                          getIndexTypeStr                                 (VkIndexType value)                                     { return tcu::Format::Enum<VkIndexType>(getIndexTypeName, value);                                                       }
-inline tcu::Format::Enum<VkTexFilter>                          getTexFilterStr                                 (VkTexFilter value)                                     { return tcu::Format::Enum<VkTexFilter>(getTexFilterName, value);                                                       }
-inline tcu::Format::Enum<VkTexMipmapMode>                      getTexMipmapModeStr                             (VkTexMipmapMode value)                         { return tcu::Format::Enum<VkTexMipmapMode>(getTexMipmapModeName, value);                                       }
-inline tcu::Format::Enum<VkTexAddress>                         getTexAddressStr                                (VkTexAddress value)                            { return tcu::Format::Enum<VkTexAddress>(getTexAddressName, value);                                                     }
-inline tcu::Format::Enum<VkCompareOp>                          getCompareOpStr                                 (VkCompareOp value)                                     { return tcu::Format::Enum<VkCompareOp>(getCompareOpName, value);                                                       }
-inline tcu::Format::Enum<VkFillMode>                           getFillModeStr                                  (VkFillMode value)                                      { return tcu::Format::Enum<VkFillMode>(getFillModeName, value);                                                         }
-inline tcu::Format::Enum<VkCullMode>                           getCullModeStr                                  (VkCullMode value)                                      { return tcu::Format::Enum<VkCullMode>(getCullModeName, value);                                                         }
-inline tcu::Format::Enum<VkFrontFace>                          getFrontFaceStr                                 (VkFrontFace value)                                     { return tcu::Format::Enum<VkFrontFace>(getFrontFaceName, value);                                                       }
-inline tcu::Format::Enum<VkProvokingVertex>                    getProvokingVertexStr                   (VkProvokingVertex value)                       { return tcu::Format::Enum<VkProvokingVertex>(getProvokingVertexName, value);                           }
-inline tcu::Format::Enum<VkCoordinateOrigin>           getCoordinateOriginStr                  (VkCoordinateOrigin value)                      { return tcu::Format::Enum<VkCoordinateOrigin>(getCoordinateOriginName, value);                         }
-inline tcu::Format::Enum<VkDepthMode>                          getDepthModeStr                                 (VkDepthMode value)                                     { return tcu::Format::Enum<VkDepthMode>(getDepthModeName, value);                                                       }
-inline tcu::Format::Enum<VkBlend>                                      getBlendStr                                             (VkBlend value)                                         { return tcu::Format::Enum<VkBlend>(getBlendName, value);                                                                       }
-inline tcu::Format::Enum<VkBlendOp>                                    getBlendOpStr                                   (VkBlendOp value)                                       { return tcu::Format::Enum<VkBlendOp>(getBlendOpName, value);                                                           }
-inline tcu::Format::Enum<VkStencilOp>                          getStencilOpStr                                 (VkStencilOp value)                                     { return tcu::Format::Enum<VkStencilOp>(getStencilOpName, value);                                                       }
-inline tcu::Format::Enum<VkLogicOp>                                    getLogicOpStr                                   (VkLogicOp value)                                       { return tcu::Format::Enum<VkLogicOp>(getLogicOpName, value);                                                           }
-inline tcu::Format::Enum<VkSystemAllocType>                    getSystemAllocTypeStr                   (VkSystemAllocType value)                       { return tcu::Format::Enum<VkSystemAllocType>(getSystemAllocTypeName, value);                           }
-inline tcu::Format::Enum<VkPhysicalDeviceType>         getPhysicalDeviceTypeStr                (VkPhysicalDeviceType value)            { return tcu::Format::Enum<VkPhysicalDeviceType>(getPhysicalDeviceTypeName, value);                     }
-inline tcu::Format::Enum<VkPhysicalDeviceInfoType>     getPhysicalDeviceInfoTypeStr    (VkPhysicalDeviceInfoType value)        { return tcu::Format::Enum<VkPhysicalDeviceInfoType>(getPhysicalDeviceInfoTypeName, value);     }
-inline tcu::Format::Enum<VkExtensionInfoType>          getExtensionInfoTypeStr                 (VkExtensionInfoType value)                     { return tcu::Format::Enum<VkExtensionInfoType>(getExtensionInfoTypeName, value);                       }
-inline tcu::Format::Enum<VkFormatInfoType>                     getFormatInfoTypeStr                    (VkFormatInfoType value)                        { return tcu::Format::Enum<VkFormatInfoType>(getFormatInfoTypeName, value);                                     }
-inline tcu::Format::Enum<VkSubresourceInfoType>                getSubresourceInfoTypeStr               (VkSubresourceInfoType value)           { return tcu::Format::Enum<VkSubresourceInfoType>(getSubresourceInfoTypeName, value);           }
-inline tcu::Format::Enum<VkObjectInfoType>                     getObjectInfoTypeStr                    (VkObjectInfoType value)                        { return tcu::Format::Enum<VkObjectInfoType>(getObjectInfoTypeName, value);                                     }
-inline tcu::Format::Enum<VkVertexInputStepRate>                getVertexInputStepRateStr               (VkVertexInputStepRate value)           { return tcu::Format::Enum<VkVertexInputStepRate>(getVertexInputStepRateName, value);           }
-inline tcu::Format::Enum<VkFormat>                                     getFormatStr                                    (VkFormat value)                                        { return tcu::Format::Enum<VkFormat>(getFormatName, value);                                                                     }
-inline tcu::Format::Enum<VkShaderStage>                                getShaderStageStr                               (VkShaderStage value)                           { return tcu::Format::Enum<VkShaderStage>(getShaderStageName, value);                                           }
-inline tcu::Format::Enum<VkStructureType>                      getStructureTypeStr                             (VkStructureType value)                         { return tcu::Format::Enum<VkStructureType>(getStructureTypeName, value);                                       }
-inline tcu::Format::Enum<VkObjectType>                         getObjectTypeStr                                (VkObjectType value)                            { return tcu::Format::Enum<VkObjectType>(getObjectTypeName, value);                                                     }
-inline tcu::Format::Enum<VkResult>                                     getResultStr                                    (VkResult value)                                        { return tcu::Format::Enum<VkResult>(getResultName, value);                                                                     }
+inline tcu::Format::Enum<VkResult>                             getResultStr                            (VkResult value)                                { return tcu::Format::Enum<VkResult>(getResultName, value);                                                             }
+inline tcu::Format::Enum<VkStructureType>              getStructureTypeStr                     (VkStructureType value)                 { return tcu::Format::Enum<VkStructureType>(getStructureTypeName, value);                               }
+inline tcu::Format::Enum<VkSystemAllocType>            getSystemAllocTypeStr           (VkSystemAllocType value)               { return tcu::Format::Enum<VkSystemAllocType>(getSystemAllocTypeName, value);                   }
+inline tcu::Format::Enum<VkFormat>                             getFormatStr                            (VkFormat value)                                { return tcu::Format::Enum<VkFormat>(getFormatName, value);                                                             }
+inline tcu::Format::Enum<VkImageType>                  getImageTypeStr                         (VkImageType value)                             { return tcu::Format::Enum<VkImageType>(getImageTypeName, value);                                               }
+inline tcu::Format::Enum<VkImageTiling>                        getImageTilingStr                       (VkImageTiling value)                   { return tcu::Format::Enum<VkImageTiling>(getImageTilingName, value);                                   }
+inline tcu::Format::Enum<VkPhysicalDeviceType> getPhysicalDeviceTypeStr        (VkPhysicalDeviceType value)    { return tcu::Format::Enum<VkPhysicalDeviceType>(getPhysicalDeviceTypeName, value);             }
+inline tcu::Format::Enum<VkImageAspect>                        getImageAspectStr                       (VkImageAspect value)                   { return tcu::Format::Enum<VkImageAspect>(getImageAspectName, value);                                   }
+inline tcu::Format::Enum<VkQueryType>                  getQueryTypeStr                         (VkQueryType value)                             { return tcu::Format::Enum<VkQueryType>(getQueryTypeName, value);                                               }
+inline tcu::Format::Enum<VkSharingMode>                        getSharingModeStr                       (VkSharingMode value)                   { return tcu::Format::Enum<VkSharingMode>(getSharingModeName, value);                                   }
+inline tcu::Format::Enum<VkBufferViewType>             getBufferViewTypeStr            (VkBufferViewType value)                { return tcu::Format::Enum<VkBufferViewType>(getBufferViewTypeName, value);                             }
+inline tcu::Format::Enum<VkImageViewType>              getImageViewTypeStr                     (VkImageViewType value)                 { return tcu::Format::Enum<VkImageViewType>(getImageViewTypeName, value);                               }
+inline tcu::Format::Enum<VkChannelSwizzle>             getChannelSwizzleStr            (VkChannelSwizzle value)                { return tcu::Format::Enum<VkChannelSwizzle>(getChannelSwizzleName, value);                             }
+inline tcu::Format::Enum<VkShaderStage>                        getShaderStageStr                       (VkShaderStage value)                   { return tcu::Format::Enum<VkShaderStage>(getShaderStageName, value);                                   }
+inline tcu::Format::Enum<VkVertexInputStepRate>        getVertexInputStepRateStr       (VkVertexInputStepRate value)   { return tcu::Format::Enum<VkVertexInputStepRate>(getVertexInputStepRateName, value);   }
+inline tcu::Format::Enum<VkPrimitiveTopology>  getPrimitiveTopologyStr         (VkPrimitiveTopology value)             { return tcu::Format::Enum<VkPrimitiveTopology>(getPrimitiveTopologyName, value);               }
+inline tcu::Format::Enum<VkFillMode>                   getFillModeStr                          (VkFillMode value)                              { return tcu::Format::Enum<VkFillMode>(getFillModeName, value);                                                 }
+inline tcu::Format::Enum<VkCullMode>                   getCullModeStr                          (VkCullMode value)                              { return tcu::Format::Enum<VkCullMode>(getCullModeName, value);                                                 }
+inline tcu::Format::Enum<VkFrontFace>                  getFrontFaceStr                         (VkFrontFace value)                             { return tcu::Format::Enum<VkFrontFace>(getFrontFaceName, value);                                               }
+inline tcu::Format::Enum<VkCompareOp>                  getCompareOpStr                         (VkCompareOp value)                             { return tcu::Format::Enum<VkCompareOp>(getCompareOpName, value);                                               }
+inline tcu::Format::Enum<VkStencilOp>                  getStencilOpStr                         (VkStencilOp value)                             { return tcu::Format::Enum<VkStencilOp>(getStencilOpName, value);                                               }
+inline tcu::Format::Enum<VkLogicOp>                            getLogicOpStr                           (VkLogicOp value)                               { return tcu::Format::Enum<VkLogicOp>(getLogicOpName, value);                                                   }
+inline tcu::Format::Enum<VkBlend>                              getBlendStr                                     (VkBlend value)                                 { return tcu::Format::Enum<VkBlend>(getBlendName, value);                                                               }
+inline tcu::Format::Enum<VkBlendOp>                            getBlendOpStr                           (VkBlendOp value)                               { return tcu::Format::Enum<VkBlendOp>(getBlendOpName, value);                                                   }
+inline tcu::Format::Enum<VkTexFilter>                  getTexFilterStr                         (VkTexFilter value)                             { return tcu::Format::Enum<VkTexFilter>(getTexFilterName, value);                                               }
+inline tcu::Format::Enum<VkTexMipmapMode>              getTexMipmapModeStr                     (VkTexMipmapMode value)                 { return tcu::Format::Enum<VkTexMipmapMode>(getTexMipmapModeName, value);                               }
+inline tcu::Format::Enum<VkTexAddress>                 getTexAddressStr                        (VkTexAddress value)                    { return tcu::Format::Enum<VkTexAddress>(getTexAddressName, value);                                             }
+inline tcu::Format::Enum<VkBorderColor>                        getBorderColorStr                       (VkBorderColor value)                   { return tcu::Format::Enum<VkBorderColor>(getBorderColorName, value);                                   }
+inline tcu::Format::Enum<VkDescriptorType>             getDescriptorTypeStr            (VkDescriptorType value)                { return tcu::Format::Enum<VkDescriptorType>(getDescriptorTypeName, value);                             }
+inline tcu::Format::Enum<VkDescriptorPoolUsage>        getDescriptorPoolUsageStr       (VkDescriptorPoolUsage value)   { return tcu::Format::Enum<VkDescriptorPoolUsage>(getDescriptorPoolUsageName, value);   }
+inline tcu::Format::Enum<VkDescriptorSetUsage> getDescriptorSetUsageStr        (VkDescriptorSetUsage value)    { return tcu::Format::Enum<VkDescriptorSetUsage>(getDescriptorSetUsageName, value);             }
+inline tcu::Format::Enum<VkImageLayout>                        getImageLayoutStr                       (VkImageLayout value)                   { return tcu::Format::Enum<VkImageLayout>(getImageLayoutName, value);                                   }
+inline tcu::Format::Enum<VkAttachmentLoadOp>   getAttachmentLoadOpStr          (VkAttachmentLoadOp value)              { return tcu::Format::Enum<VkAttachmentLoadOp>(getAttachmentLoadOpName, value);                 }
+inline tcu::Format::Enum<VkAttachmentStoreOp>  getAttachmentStoreOpStr         (VkAttachmentStoreOp value)             { return tcu::Format::Enum<VkAttachmentStoreOp>(getAttachmentStoreOpName, value);               }
+inline tcu::Format::Enum<VkPipelineBindPoint>  getPipelineBindPointStr         (VkPipelineBindPoint value)             { return tcu::Format::Enum<VkPipelineBindPoint>(getPipelineBindPointName, value);               }
+inline tcu::Format::Enum<VkCmdBufferLevel>             getCmdBufferLevelStr            (VkCmdBufferLevel value)                { return tcu::Format::Enum<VkCmdBufferLevel>(getCmdBufferLevelName, value);                             }
+inline tcu::Format::Enum<VkIndexType>                  getIndexTypeStr                         (VkIndexType value)                             { return tcu::Format::Enum<VkIndexType>(getIndexTypeName, value);                                               }
+inline tcu::Format::Enum<VkTimestampType>              getTimestampTypeStr                     (VkTimestampType value)                 { return tcu::Format::Enum<VkTimestampType>(getTimestampTypeName, value);                               }
+inline tcu::Format::Enum<VkRenderPassContents> getRenderPassContentsStr        (VkRenderPassContents value)    { return tcu::Format::Enum<VkRenderPassContents>(getRenderPassContentsName, value);             }
 
-inline std::ostream&   operator<<      (std::ostream& s, VkMemoryPriority value)                       { return s << getMemoryPriorityStr(value);                      }
-inline std::ostream&   operator<<      (std::ostream& s, VkImageLayout value)                          { return s << getImageLayoutStr(value);                         }
-inline std::ostream&   operator<<      (std::ostream& s, VkPipeEvent value)                            { return s << getPipeEventStr(value);                           }
-inline std::ostream&   operator<<      (std::ostream& s, VkWaitEvent value)                            { return s << getWaitEventStr(value);                           }
-inline std::ostream&   operator<<      (std::ostream& s, VkAttachmentLoadOp value)                     { return s << getAttachmentLoadOpStr(value);            }
-inline std::ostream&   operator<<      (std::ostream& s, VkAttachmentStoreOp value)            { return s << getAttachmentStoreOpStr(value);           }
-inline std::ostream&   operator<<      (std::ostream& s, VkImageType value)                            { return s << getImageTypeStr(value);                           }
-inline std::ostream&   operator<<      (std::ostream& s, VkImageTiling value)                          { return s << getImageTilingStr(value);                         }
-inline std::ostream&   operator<<      (std::ostream& s, VkImageViewType value)                        { return s << getImageViewTypeStr(value);                       }
-inline std::ostream&   operator<<      (std::ostream& s, VkImageAspect value)                          { return s << getImageAspectStr(value);                         }
-inline std::ostream&   operator<<      (std::ostream& s, VkBufferViewType value)                       { return s << getBufferViewTypeStr(value);                      }
-inline std::ostream&   operator<<      (std::ostream& s, VkChannelSwizzle value)                       { return s << getChannelSwizzleStr(value);                      }
-inline std::ostream&   operator<<      (std::ostream& s, VkDescriptorType value)                       { return s << getDescriptorTypeStr(value);                      }
-inline std::ostream&   operator<<      (std::ostream& s, VkDescriptorPoolUsage value)          { return s << getDescriptorPoolUsageStr(value);         }
-inline std::ostream&   operator<<      (std::ostream& s, VkDescriptorUpdateMode value)         { return s << getDescriptorUpdateModeStr(value);        }
-inline std::ostream&   operator<<      (std::ostream& s, VkDescriptorSetUsage value)           { return s << getDescriptorSetUsageStr(value);          }
-inline std::ostream&   operator<<      (std::ostream& s, VkQueryType value)                            { return s << getQueryTypeStr(value);                           }
-inline std::ostream&   operator<<      (std::ostream& s, VkTimestampType value)                        { return s << getTimestampTypeStr(value);                       }
-inline std::ostream&   operator<<      (std::ostream& s, VkBorderColor value)                          { return s << getBorderColorStr(value);                         }
-inline std::ostream&   operator<<      (std::ostream& s, VkPipelineBindPoint value)            { return s << getPipelineBindPointStr(value);           }
-inline std::ostream&   operator<<      (std::ostream& s, VkStateBindPoint value)                       { return s << getStateBindPointStr(value);                      }
-inline std::ostream&   operator<<      (std::ostream& s, VkPrimitiveTopology value)            { return s << getPrimitiveTopologyStr(value);           }
-inline std::ostream&   operator<<      (std::ostream& s, VkIndexType value)                            { return s << getIndexTypeStr(value);                           }
-inline std::ostream&   operator<<      (std::ostream& s, VkTexFilter value)                            { return s << getTexFilterStr(value);                           }
-inline std::ostream&   operator<<      (std::ostream& s, VkTexMipmapMode value)                        { return s << getTexMipmapModeStr(value);                       }
-inline std::ostream&   operator<<      (std::ostream& s, VkTexAddress value)                           { return s << getTexAddressStr(value);                          }
-inline std::ostream&   operator<<      (std::ostream& s, VkCompareOp value)                            { return s << getCompareOpStr(value);                           }
-inline std::ostream&   operator<<      (std::ostream& s, VkFillMode value)                                     { return s << getFillModeStr(value);                            }
-inline std::ostream&   operator<<      (std::ostream& s, VkCullMode value)                                     { return s << getCullModeStr(value);                            }
-inline std::ostream&   operator<<      (std::ostream& s, VkFrontFace value)                            { return s << getFrontFaceStr(value);                           }
-inline std::ostream&   operator<<      (std::ostream& s, VkProvokingVertex value)                      { return s << getProvokingVertexStr(value);                     }
-inline std::ostream&   operator<<      (std::ostream& s, VkCoordinateOrigin value)                     { return s << getCoordinateOriginStr(value);            }
-inline std::ostream&   operator<<      (std::ostream& s, VkDepthMode value)                            { return s << getDepthModeStr(value);                           }
-inline std::ostream&   operator<<      (std::ostream& s, VkBlend value)                                        { return s << getBlendStr(value);                                       }
-inline std::ostream&   operator<<      (std::ostream& s, VkBlendOp value)                                      { return s << getBlendOpStr(value);                                     }
-inline std::ostream&   operator<<      (std::ostream& s, VkStencilOp value)                            { return s << getStencilOpStr(value);                           }
-inline std::ostream&   operator<<      (std::ostream& s, VkLogicOp value)                                      { return s << getLogicOpStr(value);                                     }
-inline std::ostream&   operator<<      (std::ostream& s, VkSystemAllocType value)                      { return s << getSystemAllocTypeStr(value);                     }
-inline std::ostream&   operator<<      (std::ostream& s, VkPhysicalDeviceType value)           { return s << getPhysicalDeviceTypeStr(value);          }
-inline std::ostream&   operator<<      (std::ostream& s, VkPhysicalDeviceInfoType value)       { return s << getPhysicalDeviceInfoTypeStr(value);      }
-inline std::ostream&   operator<<      (std::ostream& s, VkExtensionInfoType value)            { return s << getExtensionInfoTypeStr(value);           }
-inline std::ostream&   operator<<      (std::ostream& s, VkFormatInfoType value)                       { return s << getFormatInfoTypeStr(value);                      }
-inline std::ostream&   operator<<      (std::ostream& s, VkSubresourceInfoType value)          { return s << getSubresourceInfoTypeStr(value);         }
-inline std::ostream&   operator<<      (std::ostream& s, VkObjectInfoType value)                       { return s << getObjectInfoTypeStr(value);                      }
-inline std::ostream&   operator<<      (std::ostream& s, VkVertexInputStepRate value)          { return s << getVertexInputStepRateStr(value);         }
-inline std::ostream&   operator<<      (std::ostream& s, VkFormat value)                                       { return s << getFormatStr(value);                                      }
-inline std::ostream&   operator<<      (std::ostream& s, VkShaderStage value)                          { return s << getShaderStageStr(value);                         }
-inline std::ostream&   operator<<      (std::ostream& s, VkStructureType value)                        { return s << getStructureTypeStr(value);                       }
-inline std::ostream&   operator<<      (std::ostream& s, VkObjectType value)                           { return s << getObjectTypeStr(value);                          }
-inline std::ostream&   operator<<      (std::ostream& s, VkResult value)                                       { return s << getResultStr(value);                                      }
+inline std::ostream&   operator<<      (std::ostream& s, VkResult value)                               { return s << getResultStr(value);                              }
+inline std::ostream&   operator<<      (std::ostream& s, VkStructureType value)                { return s << getStructureTypeStr(value);               }
+inline std::ostream&   operator<<      (std::ostream& s, VkSystemAllocType value)              { return s << getSystemAllocTypeStr(value);             }
+inline std::ostream&   operator<<      (std::ostream& s, VkFormat value)                               { return s << getFormatStr(value);                              }
+inline std::ostream&   operator<<      (std::ostream& s, VkImageType value)                    { return s << getImageTypeStr(value);                   }
+inline std::ostream&   operator<<      (std::ostream& s, VkImageTiling value)                  { return s << getImageTilingStr(value);                 }
+inline std::ostream&   operator<<      (std::ostream& s, VkPhysicalDeviceType value)   { return s << getPhysicalDeviceTypeStr(value);  }
+inline std::ostream&   operator<<      (std::ostream& s, VkImageAspect value)                  { return s << getImageAspectStr(value);                 }
+inline std::ostream&   operator<<      (std::ostream& s, VkQueryType value)                    { return s << getQueryTypeStr(value);                   }
+inline std::ostream&   operator<<      (std::ostream& s, VkSharingMode value)                  { return s << getSharingModeStr(value);                 }
+inline std::ostream&   operator<<      (std::ostream& s, VkBufferViewType value)               { return s << getBufferViewTypeStr(value);              }
+inline std::ostream&   operator<<      (std::ostream& s, VkImageViewType value)                { return s << getImageViewTypeStr(value);               }
+inline std::ostream&   operator<<      (std::ostream& s, VkChannelSwizzle value)               { return s << getChannelSwizzleStr(value);              }
+inline std::ostream&   operator<<      (std::ostream& s, VkShaderStage value)                  { return s << getShaderStageStr(value);                 }
+inline std::ostream&   operator<<      (std::ostream& s, VkVertexInputStepRate value)  { return s << getVertexInputStepRateStr(value); }
+inline std::ostream&   operator<<      (std::ostream& s, VkPrimitiveTopology value)    { return s << getPrimitiveTopologyStr(value);   }
+inline std::ostream&   operator<<      (std::ostream& s, VkFillMode value)                             { return s << getFillModeStr(value);                    }
+inline std::ostream&   operator<<      (std::ostream& s, VkCullMode value)                             { return s << getCullModeStr(value);                    }
+inline std::ostream&   operator<<      (std::ostream& s, VkFrontFace value)                    { return s << getFrontFaceStr(value);                   }
+inline std::ostream&   operator<<      (std::ostream& s, VkCompareOp value)                    { return s << getCompareOpStr(value);                   }
+inline std::ostream&   operator<<      (std::ostream& s, VkStencilOp value)                    { return s << getStencilOpStr(value);                   }
+inline std::ostream&   operator<<      (std::ostream& s, VkLogicOp value)                              { return s << getLogicOpStr(value);                             }
+inline std::ostream&   operator<<      (std::ostream& s, VkBlend value)                                { return s << getBlendStr(value);                               }
+inline std::ostream&   operator<<      (std::ostream& s, VkBlendOp value)                              { return s << getBlendOpStr(value);                             }
+inline std::ostream&   operator<<      (std::ostream& s, VkTexFilter value)                    { return s << getTexFilterStr(value);                   }
+inline std::ostream&   operator<<      (std::ostream& s, VkTexMipmapMode value)                { return s << getTexMipmapModeStr(value);               }
+inline std::ostream&   operator<<      (std::ostream& s, VkTexAddress value)                   { return s << getTexAddressStr(value);                  }
+inline std::ostream&   operator<<      (std::ostream& s, VkBorderColor value)                  { return s << getBorderColorStr(value);                 }
+inline std::ostream&   operator<<      (std::ostream& s, VkDescriptorType value)               { return s << getDescriptorTypeStr(value);              }
+inline std::ostream&   operator<<      (std::ostream& s, VkDescriptorPoolUsage value)  { return s << getDescriptorPoolUsageStr(value); }
+inline std::ostream&   operator<<      (std::ostream& s, VkDescriptorSetUsage value)   { return s << getDescriptorSetUsageStr(value);  }
+inline std::ostream&   operator<<      (std::ostream& s, VkImageLayout value)                  { return s << getImageLayoutStr(value);                 }
+inline std::ostream&   operator<<      (std::ostream& s, VkAttachmentLoadOp value)             { return s << getAttachmentLoadOpStr(value);    }
+inline std::ostream&   operator<<      (std::ostream& s, VkAttachmentStoreOp value)    { return s << getAttachmentStoreOpStr(value);   }
+inline std::ostream&   operator<<      (std::ostream& s, VkPipelineBindPoint value)    { return s << getPipelineBindPointStr(value);   }
+inline std::ostream&   operator<<      (std::ostream& s, VkCmdBufferLevel value)               { return s << getCmdBufferLevelStr(value);              }
+inline std::ostream&   operator<<      (std::ostream& s, VkIndexType value)                    { return s << getIndexTypeStr(value);                   }
+inline std::ostream&   operator<<      (std::ostream& s, VkTimestampType value)                { return s << getTimestampTypeStr(value);               }
+inline std::ostream&   operator<<      (std::ostream& s, VkRenderPassContents value)   { return s << getRenderPassContentsStr(value);  }
 
-tcu::Format::Bitfield<32>      getDeviceCreateFlagsStr                                 (VkDeviceCreateFlags value);
-tcu::Format::Bitfield<32>      getQueueFlagsStr                                                (VkQueueFlags value);
-tcu::Format::Bitfield<32>      getMemoryPropertyFlagsStr                               (VkMemoryPropertyFlags value);
-tcu::Format::Bitfield<32>      getMemoryOutputFlagsStr                                 (VkMemoryOutputFlags value);
-tcu::Format::Bitfield<32>      getMemoryInputFlagsStr                                  (VkMemoryInputFlags value);
-tcu::Format::Bitfield<32>      getBufferUsageFlagsStr                                  (VkBufferUsageFlags value);
-tcu::Format::Bitfield<32>      getBufferCreateFlagsStr                                 (VkBufferCreateFlags value);
-tcu::Format::Bitfield<32>      getShaderStageFlagsStr                                  (VkShaderStageFlags value);
-tcu::Format::Bitfield<32>      getImageUsageFlagsStr                                   (VkImageUsageFlags value);
-tcu::Format::Bitfield<32>      getImageCreateFlagsStr                                  (VkImageCreateFlags value);
-tcu::Format::Bitfield<32>      getDepthStencilViewCreateFlagsStr               (VkDepthStencilViewCreateFlags value);
-tcu::Format::Bitfield<32>      getPipelineCreateFlagsStr                               (VkPipelineCreateFlags value);
-tcu::Format::Bitfield<32>      getChannelFlagsStr                                              (VkChannelFlags value);
-tcu::Format::Bitfield<32>      getFenceCreateFlagsStr                                  (VkFenceCreateFlags value);
-tcu::Format::Bitfield<32>      getSemaphoreCreateFlagsStr                              (VkSemaphoreCreateFlags value);
-tcu::Format::Bitfield<32>      getFormatFeatureFlagsStr                                (VkFormatFeatureFlags value);
-tcu::Format::Bitfield<32>      getQueryControlFlagsStr                                 (VkQueryControlFlags value);
-tcu::Format::Bitfield<32>      getQueryResultFlagsStr                                  (VkQueryResultFlags value);
-tcu::Format::Bitfield<32>      getPhysicalDeviceCompatibilityFlagsStr  (VkPhysicalDeviceCompatibilityFlags value);
-tcu::Format::Bitfield<32>      getCmdBufferOptimizeFlagsStr                    (VkCmdBufferOptimizeFlags value);
-tcu::Format::Bitfield<32>      getQueryPipelineStatisticFlagsStr               (VkQueryPipelineStatisticFlags value);
+tcu::Format::Bitfield<32>      getFormatFeatureFlagsStr                        (VkFormatFeatureFlags value);
+tcu::Format::Bitfield<32>      getImageUsageFlagsStr                           (VkImageUsageFlags value);
+tcu::Format::Bitfield<32>      getQueueFlagsStr                                        (VkQueueFlags value);
+tcu::Format::Bitfield<32>      getMemoryPropertyFlagsStr                       (VkMemoryPropertyFlags value);
+tcu::Format::Bitfield<32>      getMemoryHeapFlagsStr                           (VkMemoryHeapFlags value);
+tcu::Format::Bitfield<32>      getDeviceCreateFlagsStr                         (VkDeviceCreateFlags value);
+tcu::Format::Bitfield<32>      getSparseImageFormatFlagsStr            (VkSparseImageFormatFlags value);
+tcu::Format::Bitfield<32>      getSparseMemoryBindFlagsStr                     (VkSparseMemoryBindFlags value);
+tcu::Format::Bitfield<32>      getFenceCreateFlagsStr                          (VkFenceCreateFlags value);
+tcu::Format::Bitfield<32>      getQueryPipelineStatisticFlagsStr       (VkQueryPipelineStatisticFlags value);
+tcu::Format::Bitfield<32>      getQueryResultFlagsStr                          (VkQueryResultFlags value);
+tcu::Format::Bitfield<32>      getBufferUsageFlagsStr                          (VkBufferUsageFlags value);
+tcu::Format::Bitfield<32>      getBufferCreateFlagsStr                         (VkBufferCreateFlags value);
+tcu::Format::Bitfield<32>      getImageCreateFlagsStr                          (VkImageCreateFlags value);
+tcu::Format::Bitfield<32>      getAttachmentViewCreateFlagsStr         (VkAttachmentViewCreateFlags value);
+tcu::Format::Bitfield<32>      getChannelFlagsStr                                      (VkChannelFlags value);
+tcu::Format::Bitfield<32>      getPipelineCreateFlagsStr                       (VkPipelineCreateFlags value);
+tcu::Format::Bitfield<32>      getShaderStageFlagsStr                          (VkShaderStageFlags value);
+tcu::Format::Bitfield<32>      getSubpassDescriptionFlagsStr           (VkSubpassDescriptionFlags value);
+tcu::Format::Bitfield<32>      getPipelineStageFlagsStr                        (VkPipelineStageFlags value);
+tcu::Format::Bitfield<32>      getMemoryOutputFlagsStr                         (VkMemoryOutputFlags value);
+tcu::Format::Bitfield<32>      getMemoryInputFlagsStr                          (VkMemoryInputFlags value);
+tcu::Format::Bitfield<32>      getCmdPoolCreateFlagsStr                        (VkCmdPoolCreateFlags value);
+tcu::Format::Bitfield<32>      getCmdPoolResetFlagsStr                         (VkCmdPoolResetFlags value);
+tcu::Format::Bitfield<32>      getCmdBufferOptimizeFlagsStr            (VkCmdBufferOptimizeFlags value);
+tcu::Format::Bitfield<32>      getCmdBufferResetFlagsStr                       (VkCmdBufferResetFlags value);
+tcu::Format::Bitfield<32>      getImageAspectFlagsStr                          (VkImageAspectFlags value);
+tcu::Format::Bitfield<32>      getQueryControlFlagsStr                         (VkQueryControlFlags value);
 
-std::ostream&  operator<<      (std::ostream& s, const VkOffset2D& value);
-std::ostream&  operator<<      (std::ostream& s, const VkOffset3D& value);
-std::ostream&  operator<<      (std::ostream& s, const VkExtent2D& value);
-std::ostream&  operator<<      (std::ostream& s, const VkExtent3D& value);
-std::ostream&  operator<<      (std::ostream& s, const VkViewport& value);
-std::ostream&  operator<<      (std::ostream& s, const VkRect& value);
-std::ostream&  operator<<      (std::ostream& s, const VkChannelMapping& value);
-std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceProperties& value);
-std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDevicePerformance& value);
-std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceCompatibilityInfo& value);
-std::ostream&  operator<<      (std::ostream& s, const VkExtensionProperties& value);
 std::ostream&  operator<<      (std::ostream& s, const VkApplicationInfo& value);
 std::ostream&  operator<<      (std::ostream& s, const VkAllocCallbacks& value);
-std::ostream&  operator<<      (std::ostream& s, const VkDeviceQueueCreateInfo& value);
-std::ostream&  operator<<      (std::ostream& s, const VkDeviceCreateInfo& value);
 std::ostream&  operator<<      (std::ostream& s, const VkInstanceCreateInfo& value);
-std::ostream&  operator<<      (std::ostream& s, const VkLayerCreateInfo& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceFeatures& value);
+std::ostream&  operator<<      (std::ostream& s, const VkFormatProperties& value);
+std::ostream&  operator<<      (std::ostream& s, const VkImageFormatProperties& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceLimits& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceProperties& value);
 std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceQueueProperties& value);
+std::ostream&  operator<<      (std::ostream& s, const VkMemoryType& value);
+std::ostream&  operator<<      (std::ostream& s, const VkMemoryHeap& value);
 std::ostream&  operator<<      (std::ostream& s, const VkPhysicalDeviceMemoryProperties& value);
+std::ostream&  operator<<      (std::ostream& s, const VkDeviceQueueCreateInfo& value);
+std::ostream&  operator<<      (std::ostream& s, const VkDeviceCreateInfo& value);
+std::ostream&  operator<<      (std::ostream& s, const VkExtensionProperties& value);
+std::ostream&  operator<<      (std::ostream& s, const VkLayerProperties& value);
 std::ostream&  operator<<      (std::ostream& s, const VkMemoryAllocInfo& value);
-std::ostream&  operator<<      (std::ostream& s, const VkMemoryOpenInfo& value);
-std::ostream&  operator<<      (std::ostream& s, const VkPeerMemoryOpenInfo& value);
+std::ostream&  operator<<      (std::ostream& s, const VkMappedMemoryRange& value);
 std::ostream&  operator<<      (std::ostream& s, const VkMemoryRequirements& value);
-std::ostream&  operator<<      (std::ostream& s, const VkFormatProperties& value);
-std::ostream&  operator<<      (std::ostream& s, const VkBufferViewAttachInfo& value);
-std::ostream&  operator<<      (std::ostream& s, const VkImageViewAttachInfo& value);
-std::ostream&  operator<<      (std::ostream& s, const VkUpdateSamplers& value);
-std::ostream&  operator<<      (std::ostream& s, const VkSamplerImageViewInfo& value);
-std::ostream&  operator<<      (std::ostream& s, const VkUpdateSamplerTextures& value);
-std::ostream&  operator<<      (std::ostream& s, const VkUpdateImages& value);
-std::ostream&  operator<<      (std::ostream& s, const VkUpdateBuffers& value);
-std::ostream&  operator<<      (std::ostream& s, const VkUpdateAsCopy& value);
+std::ostream&  operator<<      (std::ostream& s, const VkExtent3D& value);
+std::ostream&  operator<<      (std::ostream& s, const VkSparseImageFormatProperties& value);
+std::ostream&  operator<<      (std::ostream& s, const VkSparseImageMemoryRequirements& value);
+std::ostream&  operator<<      (std::ostream& s, const VkSparseMemoryBindInfo& value);
+std::ostream&  operator<<      (std::ostream& s, const VkImageSubresource& value);
+std::ostream&  operator<<      (std::ostream& s, const VkOffset3D& value);
+std::ostream&  operator<<      (std::ostream& s, const VkSparseImageMemoryBindInfo& value);
+std::ostream&  operator<<      (std::ostream& s, const VkFenceCreateInfo& value);
+std::ostream&  operator<<      (std::ostream& s, const VkSemaphoreCreateInfo& value);
+std::ostream&  operator<<      (std::ostream& s, const VkEventCreateInfo& value);
+std::ostream&  operator<<      (std::ostream& s, const VkQueryPoolCreateInfo& value);
 std::ostream&  operator<<      (std::ostream& s, const VkBufferCreateInfo& value);
 std::ostream&  operator<<      (std::ostream& s, const VkBufferViewCreateInfo& value);
-std::ostream&  operator<<      (std::ostream& s, const VkImageSubresource& value);
-std::ostream&  operator<<      (std::ostream& s, const VkImageSubresourceRange& value);
-std::ostream&  operator<<      (std::ostream& s, const VkMemoryBarrier& value);
-std::ostream&  operator<<      (std::ostream& s, const VkBufferMemoryBarrier& value);
-std::ostream&  operator<<      (std::ostream& s, const VkImageMemoryBarrier& value);
 std::ostream&  operator<<      (std::ostream& s, const VkImageCreateInfo& value);
-std::ostream&  operator<<      (std::ostream& s, const VkPeerImageOpenInfo& value);
 std::ostream&  operator<<      (std::ostream& s, const VkSubresourceLayout& value);
+std::ostream&  operator<<      (std::ostream& s, const VkChannelMapping& value);
+std::ostream&  operator<<      (std::ostream& s, const VkImageSubresourceRange& value);
 std::ostream&  operator<<      (std::ostream& s, const VkImageViewCreateInfo& value);
-std::ostream&  operator<<      (std::ostream& s, const VkColorAttachmentViewCreateInfo& value);
-std::ostream&  operator<<      (std::ostream& s, const VkDepthStencilViewCreateInfo& value);
-std::ostream&  operator<<      (std::ostream& s, const VkColorAttachmentBindInfo& value);
-std::ostream&  operator<<      (std::ostream& s, const VkDepthStencilBindInfo& value);
-std::ostream&  operator<<      (std::ostream& s, const VkBufferCopy& value);
-std::ostream&  operator<<      (std::ostream& s, const VkImageMemoryBindInfo& value);
-std::ostream&  operator<<      (std::ostream& s, const VkImageCopy& value);
-std::ostream&  operator<<      (std::ostream& s, const VkImageBlit& value);
-std::ostream&  operator<<      (std::ostream& s, const VkBufferImageCopy& value);
-std::ostream&  operator<<      (std::ostream& s, const VkImageResolve& value);
+std::ostream&  operator<<      (std::ostream& s, const VkAttachmentViewCreateInfo& value);
+std::ostream&  operator<<      (std::ostream& s, const VkShaderModuleCreateInfo& value);
 std::ostream&  operator<<      (std::ostream& s, const VkShaderCreateInfo& value);
-std::ostream&  operator<<      (std::ostream& s, const VkDescriptorSetLayoutBinding& value);
-std::ostream&  operator<<      (std::ostream& s, const VkDescriptorSetLayoutCreateInfo& value);
-std::ostream&  operator<<      (std::ostream& s, const VkDescriptorTypeCount& value);
-std::ostream&  operator<<      (std::ostream& s, const VkDescriptorPoolCreateInfo& value);
-std::ostream&  operator<<      (std::ostream& s, const VkLinkConstBuffer& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPipelineCacheCreateInfo& value);
 std::ostream&  operator<<      (std::ostream& s, const VkSpecializationMapEntry& value);
 std::ostream&  operator<<      (std::ostream& s, const VkSpecializationInfo& value);
-std::ostream&  operator<<      (std::ostream& s, const VkPipelineShader& value);
-std::ostream&  operator<<      (std::ostream& s, const VkComputePipelineCreateInfo& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPipelineShaderStageCreateInfo& value);
 std::ostream&  operator<<      (std::ostream& s, const VkVertexInputBindingDescription& value);
 std::ostream&  operator<<      (std::ostream& s, const VkVertexInputAttributeDescription& value);
-std::ostream&  operator<<      (std::ostream& s, const VkPipelineVertexInputCreateInfo& value);
-std::ostream&  operator<<      (std::ostream& s, const VkPipelineIaStateCreateInfo& value);
-std::ostream&  operator<<      (std::ostream& s, const VkPipelineTessStateCreateInfo& value);
-std::ostream&  operator<<      (std::ostream& s, const VkPipelineVpStateCreateInfo& value);
-std::ostream&  operator<<      (std::ostream& s, const VkPipelineRsStateCreateInfo& value);
-std::ostream&  operator<<      (std::ostream& s, const VkPipelineMsStateCreateInfo& value);
-std::ostream&  operator<<      (std::ostream& s, const VkPipelineCbAttachmentState& value);
-std::ostream&  operator<<      (std::ostream& s, const VkPipelineCbStateCreateInfo& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPipelineVertexInputStateCreateInfo& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPipelineInputAssemblyStateCreateInfo& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPipelineTessellationStateCreateInfo& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPipelineViewportStateCreateInfo& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPipelineRasterStateCreateInfo& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPipelineMultisampleStateCreateInfo& value);
 std::ostream&  operator<<      (std::ostream& s, const VkStencilOpState& value);
-std::ostream&  operator<<      (std::ostream& s, const VkPipelineDsStateCreateInfo& value);
-std::ostream&  operator<<      (std::ostream& s, const VkPipelineShaderStageCreateInfo& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPipelineDepthStencilStateCreateInfo& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPipelineColorBlendAttachmentState& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPipelineColorBlendStateCreateInfo& value);
 std::ostream&  operator<<      (std::ostream& s, const VkGraphicsPipelineCreateInfo& value);
+std::ostream&  operator<<      (std::ostream& s, const VkComputePipelineCreateInfo& value);
+std::ostream&  operator<<      (std::ostream& s, const VkPushConstantRange& value);
 std::ostream&  operator<<      (std::ostream& s, const VkPipelineLayoutCreateInfo& value);
 std::ostream&  operator<<      (std::ostream& s, const VkSamplerCreateInfo& value);
-std::ostream&  operator<<      (std::ostream& s, const VkDynamicVpStateCreateInfo& value);
-std::ostream&  operator<<      (std::ostream& s, const VkDynamicRsStateCreateInfo& value);
-std::ostream&  operator<<      (std::ostream& s, const VkDynamicCbStateCreateInfo& value);
-std::ostream&  operator<<      (std::ostream& s, const VkDynamicDsStateCreateInfo& value);
+std::ostream&  operator<<      (std::ostream& s, const VkDescriptorSetLayoutBinding& value);
+std::ostream&  operator<<      (std::ostream& s, const VkDescriptorSetLayoutCreateInfo& value);
+std::ostream&  operator<<      (std::ostream& s, const VkDescriptorTypeCount& value);
+std::ostream&  operator<<      (std::ostream& s, const VkDescriptorPoolCreateInfo& value);
+std::ostream&  operator<<      (std::ostream& s, const VkDescriptorInfo& value);
+std::ostream&  operator<<      (std::ostream& s, const VkWriteDescriptorSet& value);
+std::ostream&  operator<<      (std::ostream& s, const VkCopyDescriptorSet& value);
+std::ostream&  operator<<      (std::ostream& s, const VkViewport& value);
+std::ostream&  operator<<      (std::ostream& s, const VkOffset2D& value);
+std::ostream&  operator<<      (std::ostream& s, const VkExtent2D& value);
+std::ostream&  operator<<      (std::ostream& s, const VkRect2D& value);
+std::ostream&  operator<<      (std::ostream& s, const VkDynamicViewportStateCreateInfo& value);
+std::ostream&  operator<<      (std::ostream& s, const VkDynamicRasterStateCreateInfo& value);
+std::ostream&  operator<<      (std::ostream& s, const VkDynamicColorBlendStateCreateInfo& value);
+std::ostream&  operator<<      (std::ostream& s, const VkDynamicDepthStencilStateCreateInfo& value);
+std::ostream&  operator<<      (std::ostream& s, const VkAttachmentBindInfo& value);
+std::ostream&  operator<<      (std::ostream& s, const VkFramebufferCreateInfo& value);
+std::ostream&  operator<<      (std::ostream& s, const VkAttachmentDescription& value);
+std::ostream&  operator<<      (std::ostream& s, const VkAttachmentReference& value);
+std::ostream&  operator<<      (std::ostream& s, const VkSubpassDescription& value);
+std::ostream&  operator<<      (std::ostream& s, const VkSubpassDependency& value);
+std::ostream&  operator<<      (std::ostream& s, const VkRenderPassCreateInfo& value);
+std::ostream&  operator<<      (std::ostream& s, const VkCmdPoolCreateInfo& value);
 std::ostream&  operator<<      (std::ostream& s, const VkCmdBufferCreateInfo& value);
 std::ostream&  operator<<      (std::ostream& s, const VkCmdBufferBeginInfo& value);
-std::ostream&  operator<<      (std::ostream& s, const VkRenderPassBegin& value);
-std::ostream&  operator<<      (std::ostream& s, const VkCmdBufferGraphicsBeginInfo& value);
-std::ostream&  operator<<      (std::ostream& s, const VkClearColor& value);
-std::ostream&  operator<<      (std::ostream& s, const VkRenderPassCreateInfo& value);
-std::ostream&  operator<<      (std::ostream& s, const VkEventCreateInfo& value);
-std::ostream&  operator<<      (std::ostream& s, const VkFenceCreateInfo& value);
-std::ostream&  operator<<      (std::ostream& s, const VkSemaphoreCreateInfo& value);
-std::ostream&  operator<<      (std::ostream& s, const VkSemaphoreOpenInfo& value);
-std::ostream&  operator<<      (std::ostream& s, const VkQueryPoolCreateInfo& value);
-std::ostream&  operator<<      (std::ostream& s, const VkFramebufferCreateInfo& value);
-std::ostream&  operator<<      (std::ostream& s, const VkDrawIndirectCmd& value);
-std::ostream&  operator<<      (std::ostream& s, const VkDrawIndexedIndirectCmd& value);
+std::ostream&  operator<<      (std::ostream& s, const VkBufferCopy& value);
+std::ostream&  operator<<      (std::ostream& s, const VkImageCopy& value);
+std::ostream&  operator<<      (std::ostream& s, const VkImageBlit& value);
+std::ostream&  operator<<      (std::ostream& s, const VkBufferImageCopy& value);
+std::ostream&  operator<<      (std::ostream& s, const VkClearColorValue& value);
+std::ostream&  operator<<      (std::ostream& s, const VkRect3D& value);
+std::ostream&  operator<<      (std::ostream& s, const VkImageResolve& value);
+std::ostream&  operator<<      (std::ostream& s, const VkClearDepthStencilValue& value);
+std::ostream&  operator<<      (std::ostream& s, const VkClearValue& value);
+std::ostream&  operator<<      (std::ostream& s, const VkRenderPassBeginInfo& value);
+std::ostream&  operator<<      (std::ostream& s, const VkBufferMemoryBarrier& value);
 std::ostream&  operator<<      (std::ostream& s, const VkDispatchIndirectCmd& value);
+std::ostream&  operator<<      (std::ostream& s, const VkDrawIndexedIndirectCmd& value);
+std::ostream&  operator<<      (std::ostream& s, const VkDrawIndirectCmd& value);
+std::ostream&  operator<<      (std::ostream& s, const VkImageMemoryBarrier& value);
+std::ostream&  operator<<      (std::ostream& s, const VkMemoryBarrier& value);
index 4bc4ff4..a49e7df 100644 (file)
 /* WARNING: This is auto-generated file. Do not modify, since changes will
  * be lost! Modify the generating script instead.
  */
-template<> const char* getTypeName<VkObjectT>                          (void) { return "VkObject";                                     }
-template<> const char* getTypeName<VkInstanceT>                        (void) { return "VkInstance";                           }
-template<> const char* getTypeName<VkPhysicalDeviceT>          (void) { return "VkPhysicalDevice";                     }
-template<> const char* getTypeName<VkDeviceT>                          (void) { return "VkDevice";                                     }
-template<> const char* getTypeName<VkQueueT>                           (void) { return "VkQueue";                                      }
-template<> const char* getTypeName<VkCmdBufferT>                       (void) { return "VkCmdBuffer";                          }
-template<> const char* getTypeName<VkNonDispatchableT>         (void) { return "VkNonDispatchable";            }
-template<> const char* getTypeName<VkDeviceMemoryT>            (void) { return "VkDeviceMemory";                       }
-template<> const char* getTypeName<VkBufferT>                          (void) { return "VkBuffer";                                     }
-template<> const char* getTypeName<VkBufferViewT>                      (void) { return "VkBufferView";                         }
-template<> const char* getTypeName<VkImageT>                           (void) { return "VkImage";                                      }
-template<> const char* getTypeName<VkImageViewT>                       (void) { return "VkImageView";                          }
-template<> const char* getTypeName<VkColorAttachmentViewT>     (void) { return "VkColorAttachmentView";        }
-template<> const char* getTypeName<VkDepthStencilViewT>        (void) { return "VkDepthStencilView";           }
-template<> const char* getTypeName<VkShaderT>                          (void) { return "VkShader";                                     }
-template<> const char* getTypeName<VkPipelineT>                        (void) { return "VkPipeline";                           }
-template<> const char* getTypeName<VkPipelineLayoutT>          (void) { return "VkPipelineLayout";                     }
-template<> const char* getTypeName<VkSamplerT>                         (void) { return "VkSampler";                            }
-template<> const char* getTypeName<VkDescriptorSetT>           (void) { return "VkDescriptorSet";                      }
-template<> const char* getTypeName<VkDescriptorSetLayoutT>     (void) { return "VkDescriptorSetLayout";        }
-template<> const char* getTypeName<VkDescriptorPoolT>          (void) { return "VkDescriptorPool";                     }
-template<> const char* getTypeName<VkDynamicStateObjectT>      (void) { return "VkDynamicStateObject";         }
-template<> const char* getTypeName<VkDynamicVpStateT>          (void) { return "VkDynamicVpState";                     }
-template<> const char* getTypeName<VkDynamicRsStateT>          (void) { return "VkDynamicRsState";                     }
-template<> const char* getTypeName<VkDynamicCbStateT>          (void) { return "VkDynamicCbState";                     }
-template<> const char* getTypeName<VkDynamicDsStateT>          (void) { return "VkDynamicDsState";                     }
-template<> const char* getTypeName<VkFenceT>                           (void) { return "VkFence";                                      }
-template<> const char* getTypeName<VkSemaphoreT>                       (void) { return "VkSemaphore";                          }
-template<> const char* getTypeName<VkEventT>                           (void) { return "VkEvent";                                      }
-template<> const char* getTypeName<VkQueryPoolT>                       (void) { return "VkQueryPool";                          }
-template<> const char* getTypeName<VkFramebufferT>                     (void) { return "VkFramebuffer";                        }
-template<> const char* getTypeName<VkRenderPassT>                      (void) { return "VkRenderPass";                         }
-
-const char* getMemoryPriorityName (VkMemoryPriority value)
-{
-       switch (value)
-       {
-               case VK_MEMORY_PRIORITY_UNUSED:         return "VK_MEMORY_PRIORITY_UNUSED";
-               case VK_MEMORY_PRIORITY_VERY_LOW:       return "VK_MEMORY_PRIORITY_VERY_LOW";
-               case VK_MEMORY_PRIORITY_LOW:            return "VK_MEMORY_PRIORITY_LOW";
-               case VK_MEMORY_PRIORITY_NORMAL:         return "VK_MEMORY_PRIORITY_NORMAL";
-               case VK_MEMORY_PRIORITY_HIGH:           return "VK_MEMORY_PRIORITY_HIGH";
-               case VK_MEMORY_PRIORITY_VERY_HIGH:      return "VK_MEMORY_PRIORITY_VERY_HIGH";
-               default:                                                        return DE_NULL;
-       }
-}
+template<> const char* getTypeName<VkInstance>                                 (void) { return "VkInstance";                                   }
+template<> const char* getTypeName<VkPhysicalDevice>                   (void) { return "VkPhysicalDevice";                             }
+template<> const char* getTypeName<VkDevice>                                   (void) { return "VkDevice";                                             }
+template<> const char* getTypeName<VkQueue>                                    (void) { return "VkQueue";                                              }
+template<> const char* getTypeName<VkCmdBuffer>                                (void) { return "VkCmdBuffer";                                  }
+template<> const char* getTypeName<VkFence>                                    (void) { return "VkFence";                                              }
+template<> const char* getTypeName<VkDeviceMemory>                             (void) { return "VkDeviceMemory";                               }
+template<> const char* getTypeName<VkBuffer>                                   (void) { return "VkBuffer";                                             }
+template<> const char* getTypeName<VkImage>                                    (void) { return "VkImage";                                              }
+template<> const char* getTypeName<VkSemaphore>                                (void) { return "VkSemaphore";                                  }
+template<> const char* getTypeName<VkEvent>                                    (void) { return "VkEvent";                                              }
+template<> const char* getTypeName<VkQueryPool>                                (void) { return "VkQueryPool";                                  }
+template<> const char* getTypeName<VkBufferView>                               (void) { return "VkBufferView";                                 }
+template<> const char* getTypeName<VkImageView>                                (void) { return "VkImageView";                                  }
+template<> const char* getTypeName<VkAttachmentView>                   (void) { return "VkAttachmentView";                             }
+template<> const char* getTypeName<VkShaderModule>                             (void) { return "VkShaderModule";                               }
+template<> const char* getTypeName<VkShader>                                   (void) { return "VkShader";                                             }
+template<> const char* getTypeName<VkPipelineCache>                    (void) { return "VkPipelineCache";                              }
+template<> const char* getTypeName<VkPipelineLayout>                   (void) { return "VkPipelineLayout";                             }
+template<> const char* getTypeName<VkRenderPass>                               (void) { return "VkRenderPass";                                 }
+template<> const char* getTypeName<VkPipeline>                                 (void) { return "VkPipeline";                                   }
+template<> const char* getTypeName<VkDescriptorSetLayout>              (void) { return "VkDescriptorSetLayout";                }
+template<> const char* getTypeName<VkSampler>                                  (void) { return "VkSampler";                                    }
+template<> const char* getTypeName<VkDescriptorPool>                   (void) { return "VkDescriptorPool";                             }
+template<> const char* getTypeName<VkDescriptorSet>                    (void) { return "VkDescriptorSet";                              }
+template<> const char* getTypeName<VkDynamicViewportState>             (void) { return "VkDynamicViewportState";               }
+template<> const char* getTypeName<VkDynamicRasterState>               (void) { return "VkDynamicRasterState";                 }
+template<> const char* getTypeName<VkDynamicColorBlendState>   (void) { return "VkDynamicColorBlendState";             }
+template<> const char* getTypeName<VkDynamicDepthStencilState> (void) { return "VkDynamicDepthStencilState";   }
+template<> const char* getTypeName<VkFramebuffer>                              (void) { return "VkFramebuffer";                                }
+template<> const char* getTypeName<VkCmdPool>                                  (void) { return "VkCmdPool";                                    }
 
-const char* getImageLayoutName (VkImageLayout value)
+const char* getResultName (VkResult value)
 {
        switch (value)
        {
-               case VK_IMAGE_LAYOUT_UNDEFINED:                                                 return "VK_IMAGE_LAYOUT_UNDEFINED";
-               case VK_IMAGE_LAYOUT_GENERAL:                                                   return "VK_IMAGE_LAYOUT_GENERAL";
-               case VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL:                  return "VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL";
-               case VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL:  return "VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL";
-               case VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL:   return "VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL";
-               case VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL:                  return "VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL";
-               case VK_IMAGE_LAYOUT_CLEAR_OPTIMAL:                                             return "VK_IMAGE_LAYOUT_CLEAR_OPTIMAL";
-               case VK_IMAGE_LAYOUT_TRANSFER_SOURCE_OPTIMAL:                   return "VK_IMAGE_LAYOUT_TRANSFER_SOURCE_OPTIMAL";
-               case VK_IMAGE_LAYOUT_TRANSFER_DESTINATION_OPTIMAL:              return "VK_IMAGE_LAYOUT_TRANSFER_DESTINATION_OPTIMAL";
-               default:                                                                                                return DE_NULL;
+               case VK_SUCCESS:                                                                return "VK_SUCCESS";
+               case VK_UNSUPPORTED:                                                    return "VK_UNSUPPORTED";
+               case VK_NOT_READY:                                                              return "VK_NOT_READY";
+               case VK_TIMEOUT:                                                                return "VK_TIMEOUT";
+               case VK_EVENT_SET:                                                              return "VK_EVENT_SET";
+               case VK_EVENT_RESET:                                                    return "VK_EVENT_RESET";
+               case VK_INCOMPLETE:                                                             return "VK_INCOMPLETE";
+               case VK_ERROR_UNKNOWN:                                                  return "VK_ERROR_UNKNOWN";
+               case VK_ERROR_UNAVAILABLE:                                              return "VK_ERROR_UNAVAILABLE";
+               case VK_ERROR_INITIALIZATION_FAILED:                    return "VK_ERROR_INITIALIZATION_FAILED";
+               case VK_ERROR_OUT_OF_HOST_MEMORY:                               return "VK_ERROR_OUT_OF_HOST_MEMORY";
+               case VK_ERROR_OUT_OF_DEVICE_MEMORY:                             return "VK_ERROR_OUT_OF_DEVICE_MEMORY";
+               case VK_ERROR_DEVICE_ALREADY_CREATED:                   return "VK_ERROR_DEVICE_ALREADY_CREATED";
+               case VK_ERROR_DEVICE_LOST:                                              return "VK_ERROR_DEVICE_LOST";
+               case VK_ERROR_INVALID_POINTER:                                  return "VK_ERROR_INVALID_POINTER";
+               case VK_ERROR_INVALID_VALUE:                                    return "VK_ERROR_INVALID_VALUE";
+               case VK_ERROR_INVALID_HANDLE:                                   return "VK_ERROR_INVALID_HANDLE";
+               case VK_ERROR_INVALID_ORDINAL:                                  return "VK_ERROR_INVALID_ORDINAL";
+               case VK_ERROR_INVALID_MEMORY_SIZE:                              return "VK_ERROR_INVALID_MEMORY_SIZE";
+               case VK_ERROR_INVALID_EXTENSION:                                return "VK_ERROR_INVALID_EXTENSION";
+               case VK_ERROR_INVALID_FLAGS:                                    return "VK_ERROR_INVALID_FLAGS";
+               case VK_ERROR_INVALID_ALIGNMENT:                                return "VK_ERROR_INVALID_ALIGNMENT";
+               case VK_ERROR_INVALID_FORMAT:                                   return "VK_ERROR_INVALID_FORMAT";
+               case VK_ERROR_INVALID_IMAGE:                                    return "VK_ERROR_INVALID_IMAGE";
+               case VK_ERROR_INVALID_DESCRIPTOR_SET_DATA:              return "VK_ERROR_INVALID_DESCRIPTOR_SET_DATA";
+               case VK_ERROR_INVALID_QUEUE_TYPE:                               return "VK_ERROR_INVALID_QUEUE_TYPE";
+               case VK_ERROR_UNSUPPORTED_SHADER_IL_VERSION:    return "VK_ERROR_UNSUPPORTED_SHADER_IL_VERSION";
+               case VK_ERROR_BAD_SHADER_CODE:                                  return "VK_ERROR_BAD_SHADER_CODE";
+               case VK_ERROR_BAD_PIPELINE_DATA:                                return "VK_ERROR_BAD_PIPELINE_DATA";
+               case VK_ERROR_NOT_MAPPABLE:                                             return "VK_ERROR_NOT_MAPPABLE";
+               case VK_ERROR_MEMORY_MAP_FAILED:                                return "VK_ERROR_MEMORY_MAP_FAILED";
+               case VK_ERROR_MEMORY_UNMAP_FAILED:                              return "VK_ERROR_MEMORY_UNMAP_FAILED";
+               case VK_ERROR_INCOMPATIBLE_DEVICE:                              return "VK_ERROR_INCOMPATIBLE_DEVICE";
+               case VK_ERROR_INCOMPATIBLE_DRIVER:                              return "VK_ERROR_INCOMPATIBLE_DRIVER";
+               case VK_ERROR_INCOMPLETE_COMMAND_BUFFER:                return "VK_ERROR_INCOMPLETE_COMMAND_BUFFER";
+               case VK_ERROR_BUILDING_COMMAND_BUFFER:                  return "VK_ERROR_BUILDING_COMMAND_BUFFER";
+               case VK_ERROR_MEMORY_NOT_BOUND:                                 return "VK_ERROR_MEMORY_NOT_BOUND";
+               case VK_ERROR_INCOMPATIBLE_QUEUE:                               return "VK_ERROR_INCOMPATIBLE_QUEUE";
+               case VK_ERROR_INVALID_LAYER:                                    return "VK_ERROR_INVALID_LAYER";
+               default:                                                                                return DE_NULL;
        }
 }
 
-const char* getPipeEventName (VkPipeEvent value)
+const char* getStructureTypeName (VkStructureType value)
 {
        switch (value)
        {
-               case VK_PIPE_EVENT_TOP_OF_PIPE:                                                 return "VK_PIPE_EVENT_TOP_OF_PIPE";
-               case VK_PIPE_EVENT_VERTEX_PROCESSING_COMPLETE:                  return "VK_PIPE_EVENT_VERTEX_PROCESSING_COMPLETE";
-               case VK_PIPE_EVENT_LOCAL_FRAGMENT_PROCESSING_COMPLETE:  return "VK_PIPE_EVENT_LOCAL_FRAGMENT_PROCESSING_COMPLETE";
-               case VK_PIPE_EVENT_FRAGMENT_PROCESSING_COMPLETE:                return "VK_PIPE_EVENT_FRAGMENT_PROCESSING_COMPLETE";
-               case VK_PIPE_EVENT_GRAPHICS_PIPELINE_COMPLETE:                  return "VK_PIPE_EVENT_GRAPHICS_PIPELINE_COMPLETE";
-               case VK_PIPE_EVENT_COMPUTE_PIPELINE_COMPLETE:                   return "VK_PIPE_EVENT_COMPUTE_PIPELINE_COMPLETE";
-               case VK_PIPE_EVENT_TRANSFER_COMPLETE:                                   return "VK_PIPE_EVENT_TRANSFER_COMPLETE";
-               case VK_PIPE_EVENT_COMMANDS_COMPLETE:                                   return "VK_PIPE_EVENT_COMMANDS_COMPLETE";
-               default:                                                                                                return DE_NULL;
+               case VK_STRUCTURE_TYPE_APPLICATION_INFO:                                                        return "VK_STRUCTURE_TYPE_APPLICATION_INFO";
+               case VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO:                                                      return "VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO";
+               case VK_STRUCTURE_TYPE_MEMORY_ALLOC_INFO:                                                       return "VK_STRUCTURE_TYPE_MEMORY_ALLOC_INFO";
+               case VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO:                                          return "VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO";
+               case VK_STRUCTURE_TYPE_ATTACHMENT_VIEW_CREATE_INFO:                                     return "VK_STRUCTURE_TYPE_ATTACHMENT_VIEW_CREATE_INFO";
+               case VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO:                                       return "VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO";
+               case VK_STRUCTURE_TYPE_SHADER_CREATE_INFO:                                                      return "VK_STRUCTURE_TYPE_SHADER_CREATE_INFO";
+               case VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO:                            return "VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO";
+               case VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO:                                                     return "VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO";
+               case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO:                       return "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO";
+               case VK_STRUCTURE_TYPE_DYNAMIC_VIEWPORT_STATE_CREATE_INFO:                      return "VK_STRUCTURE_TYPE_DYNAMIC_VIEWPORT_STATE_CREATE_INFO";
+               case VK_STRUCTURE_TYPE_DYNAMIC_RASTER_STATE_CREATE_INFO:                        return "VK_STRUCTURE_TYPE_DYNAMIC_RASTER_STATE_CREATE_INFO";
+               case VK_STRUCTURE_TYPE_DYNAMIC_COLOR_BLEND_STATE_CREATE_INFO:           return "VK_STRUCTURE_TYPE_DYNAMIC_COLOR_BLEND_STATE_CREATE_INFO";
+               case VK_STRUCTURE_TYPE_DYNAMIC_DEPTH_STENCIL_STATE_CREATE_INFO:         return "VK_STRUCTURE_TYPE_DYNAMIC_DEPTH_STENCIL_STATE_CREATE_INFO";
+               case VK_STRUCTURE_TYPE_CMD_BUFFER_CREATE_INFO:                                          return "VK_STRUCTURE_TYPE_CMD_BUFFER_CREATE_INFO";
+               case VK_STRUCTURE_TYPE_EVENT_CREATE_INFO:                                                       return "VK_STRUCTURE_TYPE_EVENT_CREATE_INFO";
+               case VK_STRUCTURE_TYPE_FENCE_CREATE_INFO:                                                       return "VK_STRUCTURE_TYPE_FENCE_CREATE_INFO";
+               case VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO:                                           return "VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO";
+               case VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO:                                          return "VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO";
+               case VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO:                       return "VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO";
+               case VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO:                           return "VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO";
+               case VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO:         return "VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO";
+               case VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO:       return "VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO";
+               case VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO:         return "VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO";
+               case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO:                     return "VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO";
+               case VK_STRUCTURE_TYPE_PIPELINE_RASTER_STATE_CREATE_INFO:                       return "VK_STRUCTURE_TYPE_PIPELINE_RASTER_STATE_CREATE_INFO";
+               case VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO:          return "VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO";
+               case VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO:          return "VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO";
+               case VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO:        return "VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO";
+               case VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO:                                                       return "VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO";
+               case VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO:                                                      return "VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO";
+               case VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO:                                         return "VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO";
+               case VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO:                                         return "VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO";
+               case VK_STRUCTURE_TYPE_CMD_BUFFER_BEGIN_INFO:                                           return "VK_STRUCTURE_TYPE_CMD_BUFFER_BEGIN_INFO";
+               case VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO:                                         return "VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO";
+               case VK_STRUCTURE_TYPE_LAYER_CREATE_INFO:                                                       return "VK_STRUCTURE_TYPE_LAYER_CREATE_INFO";
+               case VK_STRUCTURE_TYPE_MEMORY_BARRIER:                                                          return "VK_STRUCTURE_TYPE_MEMORY_BARRIER";
+               case VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER:                                           return "VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER";
+               case VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER:                                            return "VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER";
+               case VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO:                                     return "VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO";
+               case VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET:                                            return "VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET";
+               case VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET:                                                     return "VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET";
+               case VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO:                                            return "VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO";
+               case VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO:                                     return "VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO";
+               case VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE:                                                     return "VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE";
+               case VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO:                                      return "VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO";
+               case VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION:                                          return "VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION";
+               case VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION:                                                     return "VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION";
+               case VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY:                                                      return "VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY";
+               case VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO:                                          return "VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO";
+               case VK_STRUCTURE_TYPE_CMD_POOL_CREATE_INFO:                                            return "VK_STRUCTURE_TYPE_CMD_POOL_CREATE_INFO";
+               default:                                                                                                                        return DE_NULL;
        }
 }
 
-const char* getWaitEventName (VkWaitEvent value)
+const char* getSystemAllocTypeName (VkSystemAllocType value)
 {
        switch (value)
        {
-               case VK_WAIT_EVENT_TOP_OF_PIPE:                         return "VK_WAIT_EVENT_TOP_OF_PIPE";
-               case VK_WAIT_EVENT_BEFORE_RASTERIZATION:        return "VK_WAIT_EVENT_BEFORE_RASTERIZATION";
+               case VK_SYSTEM_ALLOC_TYPE_API_OBJECT:           return "VK_SYSTEM_ALLOC_TYPE_API_OBJECT";
+               case VK_SYSTEM_ALLOC_TYPE_INTERNAL:                     return "VK_SYSTEM_ALLOC_TYPE_INTERNAL";
+               case VK_SYSTEM_ALLOC_TYPE_INTERNAL_TEMP:        return "VK_SYSTEM_ALLOC_TYPE_INTERNAL_TEMP";
+               case VK_SYSTEM_ALLOC_TYPE_INTERNAL_SHADER:      return "VK_SYSTEM_ALLOC_TYPE_INTERNAL_SHADER";
+               case VK_SYSTEM_ALLOC_TYPE_DEBUG:                        return "VK_SYSTEM_ALLOC_TYPE_DEBUG";
                default:                                                                        return DE_NULL;
        }
 }
 
-const char* getAttachmentLoadOpName (VkAttachmentLoadOp value)
+const char* getFormatName (VkFormat value)
 {
        switch (value)
        {
-               case VK_ATTACHMENT_LOAD_OP_LOAD:                return "VK_ATTACHMENT_LOAD_OP_LOAD";
-               case VK_ATTACHMENT_LOAD_OP_CLEAR:               return "VK_ATTACHMENT_LOAD_OP_CLEAR";
-               case VK_ATTACHMENT_LOAD_OP_DONT_CARE:   return "VK_ATTACHMENT_LOAD_OP_DONT_CARE";
+               case VK_FORMAT_UNDEFINED:                               return "VK_FORMAT_UNDEFINED";
+               case VK_FORMAT_R4G4_UNORM:                              return "VK_FORMAT_R4G4_UNORM";
+               case VK_FORMAT_R4G4_USCALED:                    return "VK_FORMAT_R4G4_USCALED";
+               case VK_FORMAT_R4G4B4A4_UNORM:                  return "VK_FORMAT_R4G4B4A4_UNORM";
+               case VK_FORMAT_R4G4B4A4_USCALED:                return "VK_FORMAT_R4G4B4A4_USCALED";
+               case VK_FORMAT_R5G6B5_UNORM:                    return "VK_FORMAT_R5G6B5_UNORM";
+               case VK_FORMAT_R5G6B5_USCALED:                  return "VK_FORMAT_R5G6B5_USCALED";
+               case VK_FORMAT_R5G5B5A1_UNORM:                  return "VK_FORMAT_R5G5B5A1_UNORM";
+               case VK_FORMAT_R5G5B5A1_USCALED:                return "VK_FORMAT_R5G5B5A1_USCALED";
+               case VK_FORMAT_R8_UNORM:                                return "VK_FORMAT_R8_UNORM";
+               case VK_FORMAT_R8_SNORM:                                return "VK_FORMAT_R8_SNORM";
+               case VK_FORMAT_R8_USCALED:                              return "VK_FORMAT_R8_USCALED";
+               case VK_FORMAT_R8_SSCALED:                              return "VK_FORMAT_R8_SSCALED";
+               case VK_FORMAT_R8_UINT:                                 return "VK_FORMAT_R8_UINT";
+               case VK_FORMAT_R8_SINT:                                 return "VK_FORMAT_R8_SINT";
+               case VK_FORMAT_R8_SRGB:                                 return "VK_FORMAT_R8_SRGB";
+               case VK_FORMAT_R8G8_UNORM:                              return "VK_FORMAT_R8G8_UNORM";
+               case VK_FORMAT_R8G8_SNORM:                              return "VK_FORMAT_R8G8_SNORM";
+               case VK_FORMAT_R8G8_USCALED:                    return "VK_FORMAT_R8G8_USCALED";
+               case VK_FORMAT_R8G8_SSCALED:                    return "VK_FORMAT_R8G8_SSCALED";
+               case VK_FORMAT_R8G8_UINT:                               return "VK_FORMAT_R8G8_UINT";
+               case VK_FORMAT_R8G8_SINT:                               return "VK_FORMAT_R8G8_SINT";
+               case VK_FORMAT_R8G8_SRGB:                               return "VK_FORMAT_R8G8_SRGB";
+               case VK_FORMAT_R8G8B8_UNORM:                    return "VK_FORMAT_R8G8B8_UNORM";
+               case VK_FORMAT_R8G8B8_SNORM:                    return "VK_FORMAT_R8G8B8_SNORM";
+               case VK_FORMAT_R8G8B8_USCALED:                  return "VK_FORMAT_R8G8B8_USCALED";
+               case VK_FORMAT_R8G8B8_SSCALED:                  return "VK_FORMAT_R8G8B8_SSCALED";
+               case VK_FORMAT_R8G8B8_UINT:                             return "VK_FORMAT_R8G8B8_UINT";
+               case VK_FORMAT_R8G8B8_SINT:                             return "VK_FORMAT_R8G8B8_SINT";
+               case VK_FORMAT_R8G8B8_SRGB:                             return "VK_FORMAT_R8G8B8_SRGB";
+               case VK_FORMAT_R8G8B8A8_UNORM:                  return "VK_FORMAT_R8G8B8A8_UNORM";
+               case VK_FORMAT_R8G8B8A8_SNORM:                  return "VK_FORMAT_R8G8B8A8_SNORM";
+               case VK_FORMAT_R8G8B8A8_USCALED:                return "VK_FORMAT_R8G8B8A8_USCALED";
+               case VK_FORMAT_R8G8B8A8_SSCALED:                return "VK_FORMAT_R8G8B8A8_SSCALED";
+               case VK_FORMAT_R8G8B8A8_UINT:                   return "VK_FORMAT_R8G8B8A8_UINT";
+               case VK_FORMAT_R8G8B8A8_SINT:                   return "VK_FORMAT_R8G8B8A8_SINT";
+               case VK_FORMAT_R8G8B8A8_SRGB:                   return "VK_FORMAT_R8G8B8A8_SRGB";
+               case VK_FORMAT_R10G10B10A2_UNORM:               return "VK_FORMAT_R10G10B10A2_UNORM";
+               case VK_FORMAT_R10G10B10A2_SNORM:               return "VK_FORMAT_R10G10B10A2_SNORM";
+               case VK_FORMAT_R10G10B10A2_USCALED:             return "VK_FORMAT_R10G10B10A2_USCALED";
+               case VK_FORMAT_R10G10B10A2_SSCALED:             return "VK_FORMAT_R10G10B10A2_SSCALED";
+               case VK_FORMAT_R10G10B10A2_UINT:                return "VK_FORMAT_R10G10B10A2_UINT";
+               case VK_FORMAT_R10G10B10A2_SINT:                return "VK_FORMAT_R10G10B10A2_SINT";
+               case VK_FORMAT_R16_UNORM:                               return "VK_FORMAT_R16_UNORM";
+               case VK_FORMAT_R16_SNORM:                               return "VK_FORMAT_R16_SNORM";
+               case VK_FORMAT_R16_USCALED:                             return "VK_FORMAT_R16_USCALED";
+               case VK_FORMAT_R16_SSCALED:                             return "VK_FORMAT_R16_SSCALED";
+               case VK_FORMAT_R16_UINT:                                return "VK_FORMAT_R16_UINT";
+               case VK_FORMAT_R16_SINT:                                return "VK_FORMAT_R16_SINT";
+               case VK_FORMAT_R16_SFLOAT:                              return "VK_FORMAT_R16_SFLOAT";
+               case VK_FORMAT_R16G16_UNORM:                    return "VK_FORMAT_R16G16_UNORM";
+               case VK_FORMAT_R16G16_SNORM:                    return "VK_FORMAT_R16G16_SNORM";
+               case VK_FORMAT_R16G16_USCALED:                  return "VK_FORMAT_R16G16_USCALED";
+               case VK_FORMAT_R16G16_SSCALED:                  return "VK_FORMAT_R16G16_SSCALED";
+               case VK_FORMAT_R16G16_UINT:                             return "VK_FORMAT_R16G16_UINT";
+               case VK_FORMAT_R16G16_SINT:                             return "VK_FORMAT_R16G16_SINT";
+               case VK_FORMAT_R16G16_SFLOAT:                   return "VK_FORMAT_R16G16_SFLOAT";
+               case VK_FORMAT_R16G16B16_UNORM:                 return "VK_FORMAT_R16G16B16_UNORM";
+               case VK_FORMAT_R16G16B16_SNORM:                 return "VK_FORMAT_R16G16B16_SNORM";
+               case VK_FORMAT_R16G16B16_USCALED:               return "VK_FORMAT_R16G16B16_USCALED";
+               case VK_FORMAT_R16G16B16_SSCALED:               return "VK_FORMAT_R16G16B16_SSCALED";
+               case VK_FORMAT_R16G16B16_UINT:                  return "VK_FORMAT_R16G16B16_UINT";
+               case VK_FORMAT_R16G16B16_SINT:                  return "VK_FORMAT_R16G16B16_SINT";
+               case VK_FORMAT_R16G16B16_SFLOAT:                return "VK_FORMAT_R16G16B16_SFLOAT";
+               case VK_FORMAT_R16G16B16A16_UNORM:              return "VK_FORMAT_R16G16B16A16_UNORM";
+               case VK_FORMAT_R16G16B16A16_SNORM:              return "VK_FORMAT_R16G16B16A16_SNORM";
+               case VK_FORMAT_R16G16B16A16_USCALED:    return "VK_FORMAT_R16G16B16A16_USCALED";
+               case VK_FORMAT_R16G16B16A16_SSCALED:    return "VK_FORMAT_R16G16B16A16_SSCALED";
+               case VK_FORMAT_R16G16B16A16_UINT:               return "VK_FORMAT_R16G16B16A16_UINT";
+               case VK_FORMAT_R16G16B16A16_SINT:               return "VK_FORMAT_R16G16B16A16_SINT";
+               case VK_FORMAT_R16G16B16A16_SFLOAT:             return "VK_FORMAT_R16G16B16A16_SFLOAT";
+               case VK_FORMAT_R32_UINT:                                return "VK_FORMAT_R32_UINT";
+               case VK_FORMAT_R32_SINT:                                return "VK_FORMAT_R32_SINT";
+               case VK_FORMAT_R32_SFLOAT:                              return "VK_FORMAT_R32_SFLOAT";
+               case VK_FORMAT_R32G32_UINT:                             return "VK_FORMAT_R32G32_UINT";
+               case VK_FORMAT_R32G32_SINT:                             return "VK_FORMAT_R32G32_SINT";
+               case VK_FORMAT_R32G32_SFLOAT:                   return "VK_FORMAT_R32G32_SFLOAT";
+               case VK_FORMAT_R32G32B32_UINT:                  return "VK_FORMAT_R32G32B32_UINT";
+               case VK_FORMAT_R32G32B32_SINT:                  return "VK_FORMAT_R32G32B32_SINT";
+               case VK_FORMAT_R32G32B32_SFLOAT:                return "VK_FORMAT_R32G32B32_SFLOAT";
+               case VK_FORMAT_R32G32B32A32_UINT:               return "VK_FORMAT_R32G32B32A32_UINT";
+               case VK_FORMAT_R32G32B32A32_SINT:               return "VK_FORMAT_R32G32B32A32_SINT";
+               case VK_FORMAT_R32G32B32A32_SFLOAT:             return "VK_FORMAT_R32G32B32A32_SFLOAT";
+               case VK_FORMAT_R64_SFLOAT:                              return "VK_FORMAT_R64_SFLOAT";
+               case VK_FORMAT_R64G64_SFLOAT:                   return "VK_FORMAT_R64G64_SFLOAT";
+               case VK_FORMAT_R64G64B64_SFLOAT:                return "VK_FORMAT_R64G64B64_SFLOAT";
+               case VK_FORMAT_R64G64B64A64_SFLOAT:             return "VK_FORMAT_R64G64B64A64_SFLOAT";
+               case VK_FORMAT_R11G11B10_UFLOAT:                return "VK_FORMAT_R11G11B10_UFLOAT";
+               case VK_FORMAT_R9G9B9E5_UFLOAT:                 return "VK_FORMAT_R9G9B9E5_UFLOAT";
+               case VK_FORMAT_D16_UNORM:                               return "VK_FORMAT_D16_UNORM";
+               case VK_FORMAT_D24_UNORM:                               return "VK_FORMAT_D24_UNORM";
+               case VK_FORMAT_D32_SFLOAT:                              return "VK_FORMAT_D32_SFLOAT";
+               case VK_FORMAT_S8_UINT:                                 return "VK_FORMAT_S8_UINT";
+               case VK_FORMAT_D16_UNORM_S8_UINT:               return "VK_FORMAT_D16_UNORM_S8_UINT";
+               case VK_FORMAT_D24_UNORM_S8_UINT:               return "VK_FORMAT_D24_UNORM_S8_UINT";
+               case VK_FORMAT_D32_SFLOAT_S8_UINT:              return "VK_FORMAT_D32_SFLOAT_S8_UINT";
+               case VK_FORMAT_BC1_RGB_UNORM:                   return "VK_FORMAT_BC1_RGB_UNORM";
+               case VK_FORMAT_BC1_RGB_SRGB:                    return "VK_FORMAT_BC1_RGB_SRGB";
+               case VK_FORMAT_BC1_RGBA_UNORM:                  return "VK_FORMAT_BC1_RGBA_UNORM";
+               case VK_FORMAT_BC1_RGBA_SRGB:                   return "VK_FORMAT_BC1_RGBA_SRGB";
+               case VK_FORMAT_BC2_UNORM:                               return "VK_FORMAT_BC2_UNORM";
+               case VK_FORMAT_BC2_SRGB:                                return "VK_FORMAT_BC2_SRGB";
+               case VK_FORMAT_BC3_UNORM:                               return "VK_FORMAT_BC3_UNORM";
+               case VK_FORMAT_BC3_SRGB:                                return "VK_FORMAT_BC3_SRGB";
+               case VK_FORMAT_BC4_UNORM:                               return "VK_FORMAT_BC4_UNORM";
+               case VK_FORMAT_BC4_SNORM:                               return "VK_FORMAT_BC4_SNORM";
+               case VK_FORMAT_BC5_UNORM:                               return "VK_FORMAT_BC5_UNORM";
+               case VK_FORMAT_BC5_SNORM:                               return "VK_FORMAT_BC5_SNORM";
+               case VK_FORMAT_BC6H_UFLOAT:                             return "VK_FORMAT_BC6H_UFLOAT";
+               case VK_FORMAT_BC6H_SFLOAT:                             return "VK_FORMAT_BC6H_SFLOAT";
+               case VK_FORMAT_BC7_UNORM:                               return "VK_FORMAT_BC7_UNORM";
+               case VK_FORMAT_BC7_SRGB:                                return "VK_FORMAT_BC7_SRGB";
+               case VK_FORMAT_ETC2_R8G8B8_UNORM:               return "VK_FORMAT_ETC2_R8G8B8_UNORM";
+               case VK_FORMAT_ETC2_R8G8B8_SRGB:                return "VK_FORMAT_ETC2_R8G8B8_SRGB";
+               case VK_FORMAT_ETC2_R8G8B8A1_UNORM:             return "VK_FORMAT_ETC2_R8G8B8A1_UNORM";
+               case VK_FORMAT_ETC2_R8G8B8A1_SRGB:              return "VK_FORMAT_ETC2_R8G8B8A1_SRGB";
+               case VK_FORMAT_ETC2_R8G8B8A8_UNORM:             return "VK_FORMAT_ETC2_R8G8B8A8_UNORM";
+               case VK_FORMAT_ETC2_R8G8B8A8_SRGB:              return "VK_FORMAT_ETC2_R8G8B8A8_SRGB";
+               case VK_FORMAT_EAC_R11_UNORM:                   return "VK_FORMAT_EAC_R11_UNORM";
+               case VK_FORMAT_EAC_R11_SNORM:                   return "VK_FORMAT_EAC_R11_SNORM";
+               case VK_FORMAT_EAC_R11G11_UNORM:                return "VK_FORMAT_EAC_R11G11_UNORM";
+               case VK_FORMAT_EAC_R11G11_SNORM:                return "VK_FORMAT_EAC_R11G11_SNORM";
+               case VK_FORMAT_ASTC_4x4_UNORM:                  return "VK_FORMAT_ASTC_4x4_UNORM";
+               case VK_FORMAT_ASTC_4x4_SRGB:                   return "VK_FORMAT_ASTC_4x4_SRGB";
+               case VK_FORMAT_ASTC_5x4_UNORM:                  return "VK_FORMAT_ASTC_5x4_UNORM";
+               case VK_FORMAT_ASTC_5x4_SRGB:                   return "VK_FORMAT_ASTC_5x4_SRGB";
+               case VK_FORMAT_ASTC_5x5_UNORM:                  return "VK_FORMAT_ASTC_5x5_UNORM";
+               case VK_FORMAT_ASTC_5x5_SRGB:                   return "VK_FORMAT_ASTC_5x5_SRGB";
+               case VK_FORMAT_ASTC_6x5_UNORM:                  return "VK_FORMAT_ASTC_6x5_UNORM";
+               case VK_FORMAT_ASTC_6x5_SRGB:                   return "VK_FORMAT_ASTC_6x5_SRGB";
+               case VK_FORMAT_ASTC_6x6_UNORM:                  return "VK_FORMAT_ASTC_6x6_UNORM";
+               case VK_FORMAT_ASTC_6x6_SRGB:                   return "VK_FORMAT_ASTC_6x6_SRGB";
+               case VK_FORMAT_ASTC_8x5_UNORM:                  return "VK_FORMAT_ASTC_8x5_UNORM";
+               case VK_FORMAT_ASTC_8x5_SRGB:                   return "VK_FORMAT_ASTC_8x5_SRGB";
+               case VK_FORMAT_ASTC_8x6_UNORM:                  return "VK_FORMAT_ASTC_8x6_UNORM";
+               case VK_FORMAT_ASTC_8x6_SRGB:                   return "VK_FORMAT_ASTC_8x6_SRGB";
+               case VK_FORMAT_ASTC_8x8_UNORM:                  return "VK_FORMAT_ASTC_8x8_UNORM";
+               case VK_FORMAT_ASTC_8x8_SRGB:                   return "VK_FORMAT_ASTC_8x8_SRGB";
+               case VK_FORMAT_ASTC_10x5_UNORM:                 return "VK_FORMAT_ASTC_10x5_UNORM";
+               case VK_FORMAT_ASTC_10x5_SRGB:                  return "VK_FORMAT_ASTC_10x5_SRGB";
+               case VK_FORMAT_ASTC_10x6_UNORM:                 return "VK_FORMAT_ASTC_10x6_UNORM";
+               case VK_FORMAT_ASTC_10x6_SRGB:                  return "VK_FORMAT_ASTC_10x6_SRGB";
+               case VK_FORMAT_ASTC_10x8_UNORM:                 return "VK_FORMAT_ASTC_10x8_UNORM";
+               case VK_FORMAT_ASTC_10x8_SRGB:                  return "VK_FORMAT_ASTC_10x8_SRGB";
+               case VK_FORMAT_ASTC_10x10_UNORM:                return "VK_FORMAT_ASTC_10x10_UNORM";
+               case VK_FORMAT_ASTC_10x10_SRGB:                 return "VK_FORMAT_ASTC_10x10_SRGB";
+               case VK_FORMAT_ASTC_12x10_UNORM:                return "VK_FORMAT_ASTC_12x10_UNORM";
+               case VK_FORMAT_ASTC_12x10_SRGB:                 return "VK_FORMAT_ASTC_12x10_SRGB";
+               case VK_FORMAT_ASTC_12x12_UNORM:                return "VK_FORMAT_ASTC_12x12_UNORM";
+               case VK_FORMAT_ASTC_12x12_SRGB:                 return "VK_FORMAT_ASTC_12x12_SRGB";
+               case VK_FORMAT_B4G4R4A4_UNORM:                  return "VK_FORMAT_B4G4R4A4_UNORM";
+               case VK_FORMAT_B5G5R5A1_UNORM:                  return "VK_FORMAT_B5G5R5A1_UNORM";
+               case VK_FORMAT_B5G6R5_UNORM:                    return "VK_FORMAT_B5G6R5_UNORM";
+               case VK_FORMAT_B5G6R5_USCALED:                  return "VK_FORMAT_B5G6R5_USCALED";
+               case VK_FORMAT_B8G8R8_UNORM:                    return "VK_FORMAT_B8G8R8_UNORM";
+               case VK_FORMAT_B8G8R8_SNORM:                    return "VK_FORMAT_B8G8R8_SNORM";
+               case VK_FORMAT_B8G8R8_USCALED:                  return "VK_FORMAT_B8G8R8_USCALED";
+               case VK_FORMAT_B8G8R8_SSCALED:                  return "VK_FORMAT_B8G8R8_SSCALED";
+               case VK_FORMAT_B8G8R8_UINT:                             return "VK_FORMAT_B8G8R8_UINT";
+               case VK_FORMAT_B8G8R8_SINT:                             return "VK_FORMAT_B8G8R8_SINT";
+               case VK_FORMAT_B8G8R8_SRGB:                             return "VK_FORMAT_B8G8R8_SRGB";
+               case VK_FORMAT_B8G8R8A8_UNORM:                  return "VK_FORMAT_B8G8R8A8_UNORM";
+               case VK_FORMAT_B8G8R8A8_SNORM:                  return "VK_FORMAT_B8G8R8A8_SNORM";
+               case VK_FORMAT_B8G8R8A8_USCALED:                return "VK_FORMAT_B8G8R8A8_USCALED";
+               case VK_FORMAT_B8G8R8A8_SSCALED:                return "VK_FORMAT_B8G8R8A8_SSCALED";
+               case VK_FORMAT_B8G8R8A8_UINT:                   return "VK_FORMAT_B8G8R8A8_UINT";
+               case VK_FORMAT_B8G8R8A8_SINT:                   return "VK_FORMAT_B8G8R8A8_SINT";
+               case VK_FORMAT_B8G8R8A8_SRGB:                   return "VK_FORMAT_B8G8R8A8_SRGB";
+               case VK_FORMAT_B10G10R10A2_UNORM:               return "VK_FORMAT_B10G10R10A2_UNORM";
+               case VK_FORMAT_B10G10R10A2_SNORM:               return "VK_FORMAT_B10G10R10A2_SNORM";
+               case VK_FORMAT_B10G10R10A2_USCALED:             return "VK_FORMAT_B10G10R10A2_USCALED";
+               case VK_FORMAT_B10G10R10A2_SSCALED:             return "VK_FORMAT_B10G10R10A2_SSCALED";
+               case VK_FORMAT_B10G10R10A2_UINT:                return "VK_FORMAT_B10G10R10A2_UINT";
+               case VK_FORMAT_B10G10R10A2_SINT:                return "VK_FORMAT_B10G10R10A2_SINT";
                default:                                                                return DE_NULL;
        }
 }
 
-const char* getAttachmentStoreOpName (VkAttachmentStoreOp value)
-{
-       switch (value)
-       {
-               case VK_ATTACHMENT_STORE_OP_STORE:                      return "VK_ATTACHMENT_STORE_OP_STORE";
-               case VK_ATTACHMENT_STORE_OP_RESOLVE_MSAA:       return "VK_ATTACHMENT_STORE_OP_RESOLVE_MSAA";
-               case VK_ATTACHMENT_STORE_OP_DONT_CARE:          return "VK_ATTACHMENT_STORE_OP_DONT_CARE";
-               default:                                                                        return DE_NULL;
-       }
-}
-
 const char* getImageTypeName (VkImageType value)
 {
        switch (value)
@@ -134,18 +355,19 @@ const char* getImageTilingName (VkImageTiling value)
        }
 }
 
-const char* getImageViewTypeName (VkImageViewType value)
+const char* getPhysicalDeviceTypeName (VkPhysicalDeviceType value)
 {
        switch (value)
        {
-               case VK_IMAGE_VIEW_TYPE_1D:             return "VK_IMAGE_VIEW_TYPE_1D";
-               case VK_IMAGE_VIEW_TYPE_2D:             return "VK_IMAGE_VIEW_TYPE_2D";
-               case VK_IMAGE_VIEW_TYPE_3D:             return "VK_IMAGE_VIEW_TYPE_3D";
-               case VK_IMAGE_VIEW_TYPE_CUBE:   return "VK_IMAGE_VIEW_TYPE_CUBE";
-               default:                                                return DE_NULL;
-       }
-}
-
+               case VK_PHYSICAL_DEVICE_TYPE_OTHER:                             return "VK_PHYSICAL_DEVICE_TYPE_OTHER";
+               case VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU:    return "VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU";
+               case VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU:              return "VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU";
+               case VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU:               return "VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU";
+               case VK_PHYSICAL_DEVICE_TYPE_CPU:                               return "VK_PHYSICAL_DEVICE_TYPE_CPU";
+               default:                                                                                return DE_NULL;
+       }
+}
+
 const char* getImageAspectName (VkImageAspect value)
 {
        switch (value)
@@ -153,132 +375,91 @@ const char* getImageAspectName (VkImageAspect value)
                case VK_IMAGE_ASPECT_COLOR:             return "VK_IMAGE_ASPECT_COLOR";
                case VK_IMAGE_ASPECT_DEPTH:             return "VK_IMAGE_ASPECT_DEPTH";
                case VK_IMAGE_ASPECT_STENCIL:   return "VK_IMAGE_ASPECT_STENCIL";
+               case VK_IMAGE_ASPECT_METADATA:  return "VK_IMAGE_ASPECT_METADATA";
                default:                                                return DE_NULL;
        }
 }
 
-const char* getBufferViewTypeName (VkBufferViewType value)
-{
-       switch (value)
-       {
-               case VK_BUFFER_VIEW_TYPE_RAW:           return "VK_BUFFER_VIEW_TYPE_RAW";
-               case VK_BUFFER_VIEW_TYPE_FORMATTED:     return "VK_BUFFER_VIEW_TYPE_FORMATTED";
-               default:                                                        return DE_NULL;
-       }
-}
-
-const char* getChannelSwizzleName (VkChannelSwizzle value)
-{
-       switch (value)
-       {
-               case VK_CHANNEL_SWIZZLE_ZERO:   return "VK_CHANNEL_SWIZZLE_ZERO";
-               case VK_CHANNEL_SWIZZLE_ONE:    return "VK_CHANNEL_SWIZZLE_ONE";
-               case VK_CHANNEL_SWIZZLE_R:              return "VK_CHANNEL_SWIZZLE_R";
-               case VK_CHANNEL_SWIZZLE_G:              return "VK_CHANNEL_SWIZZLE_G";
-               case VK_CHANNEL_SWIZZLE_B:              return "VK_CHANNEL_SWIZZLE_B";
-               case VK_CHANNEL_SWIZZLE_A:              return "VK_CHANNEL_SWIZZLE_A";
-               default:                                                return DE_NULL;
-       }
-}
-
-const char* getDescriptorTypeName (VkDescriptorType value)
-{
-       switch (value)
-       {
-               case VK_DESCRIPTOR_TYPE_SAMPLER:                                return "VK_DESCRIPTOR_TYPE_SAMPLER";
-               case VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER: return "VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER";
-               case VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE:                  return "VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE";
-               case VK_DESCRIPTOR_TYPE_STORAGE_IMAGE:                  return "VK_DESCRIPTOR_TYPE_STORAGE_IMAGE";
-               case VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER:   return "VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER";
-               case VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER:   return "VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER";
-               case VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER:                 return "VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER";
-               case VK_DESCRIPTOR_TYPE_STORAGE_BUFFER:                 return "VK_DESCRIPTOR_TYPE_STORAGE_BUFFER";
-               case VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC: return "VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC";
-               case VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC: return "VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC";
-               default:                                                                                return DE_NULL;
-       }
-}
-
-const char* getDescriptorPoolUsageName (VkDescriptorPoolUsage value)
+const char* getQueryTypeName (VkQueryType value)
 {
        switch (value)
        {
-               case VK_DESCRIPTOR_POOL_USAGE_ONE_SHOT: return "VK_DESCRIPTOR_POOL_USAGE_ONE_SHOT";
-               case VK_DESCRIPTOR_POOL_USAGE_DYNAMIC:  return "VK_DESCRIPTOR_POOL_USAGE_DYNAMIC";
+               case VK_QUERY_TYPE_OCCLUSION:                   return "VK_QUERY_TYPE_OCCLUSION";
+               case VK_QUERY_TYPE_PIPELINE_STATISTICS: return "VK_QUERY_TYPE_PIPELINE_STATISTICS";
                default:                                                                return DE_NULL;
        }
 }
 
-const char* getDescriptorUpdateModeName (VkDescriptorUpdateMode value)
+const char* getSharingModeName (VkSharingMode value)
 {
        switch (value)
        {
-               case VK_DESCRIPTOR_UPDATE_MODE_COPY:    return "VK_DESCRIPTOR_UPDATE_MODE_COPY";
-               case VK_DESCRIPTOR_UPDATE_MODE_FASTEST: return "VK_DESCRIPTOR_UPDATE_MODE_FASTEST";
-               default:                                                                return DE_NULL;
+               case VK_SHARING_MODE_EXCLUSIVE:         return "VK_SHARING_MODE_EXCLUSIVE";
+               case VK_SHARING_MODE_CONCURRENT:        return "VK_SHARING_MODE_CONCURRENT";
+               default:                                                        return DE_NULL;
        }
 }
 
-const char* getDescriptorSetUsageName (VkDescriptorSetUsage value)
+const char* getBufferViewTypeName (VkBufferViewType value)
 {
        switch (value)
        {
-               case VK_DESCRIPTOR_SET_USAGE_ONE_SHOT:  return "VK_DESCRIPTOR_SET_USAGE_ONE_SHOT";
-               case VK_DESCRIPTOR_SET_USAGE_STATIC:    return "VK_DESCRIPTOR_SET_USAGE_STATIC";
-               default:                                                                return DE_NULL;
+               case VK_BUFFER_VIEW_TYPE_RAW:           return "VK_BUFFER_VIEW_TYPE_RAW";
+               case VK_BUFFER_VIEW_TYPE_FORMATTED:     return "VK_BUFFER_VIEW_TYPE_FORMATTED";
+               default:                                                        return DE_NULL;
        }
 }
 
-const char* getQueryTypeName (VkQueryType value)
+const char* getImageViewTypeName (VkImageViewType value)
 {
        switch (value)
        {
-               case VK_QUERY_TYPE_OCCLUSION:                   return "VK_QUERY_TYPE_OCCLUSION";
-               case VK_QUERY_TYPE_PIPELINE_STATISTICS: return "VK_QUERY_TYPE_PIPELINE_STATISTICS";
-               default:                                                                return DE_NULL;
+               case VK_IMAGE_VIEW_TYPE_1D:                     return "VK_IMAGE_VIEW_TYPE_1D";
+               case VK_IMAGE_VIEW_TYPE_2D:                     return "VK_IMAGE_VIEW_TYPE_2D";
+               case VK_IMAGE_VIEW_TYPE_3D:                     return "VK_IMAGE_VIEW_TYPE_3D";
+               case VK_IMAGE_VIEW_TYPE_CUBE:           return "VK_IMAGE_VIEW_TYPE_CUBE";
+               case VK_IMAGE_VIEW_TYPE_1D_ARRAY:       return "VK_IMAGE_VIEW_TYPE_1D_ARRAY";
+               case VK_IMAGE_VIEW_TYPE_2D_ARRAY:       return "VK_IMAGE_VIEW_TYPE_2D_ARRAY";
+               case VK_IMAGE_VIEW_TYPE_CUBE_ARRAY:     return "VK_IMAGE_VIEW_TYPE_CUBE_ARRAY";
+               default:                                                        return DE_NULL;
        }
 }
 
-const char* getTimestampTypeName (VkTimestampType value)
+const char* getChannelSwizzleName (VkChannelSwizzle value)
 {
        switch (value)
        {
-               case VK_TIMESTAMP_TYPE_TOP:             return "VK_TIMESTAMP_TYPE_TOP";
-               case VK_TIMESTAMP_TYPE_BOTTOM:  return "VK_TIMESTAMP_TYPE_BOTTOM";
+               case VK_CHANNEL_SWIZZLE_ZERO:   return "VK_CHANNEL_SWIZZLE_ZERO";
+               case VK_CHANNEL_SWIZZLE_ONE:    return "VK_CHANNEL_SWIZZLE_ONE";
+               case VK_CHANNEL_SWIZZLE_R:              return "VK_CHANNEL_SWIZZLE_R";
+               case VK_CHANNEL_SWIZZLE_G:              return "VK_CHANNEL_SWIZZLE_G";
+               case VK_CHANNEL_SWIZZLE_B:              return "VK_CHANNEL_SWIZZLE_B";
+               case VK_CHANNEL_SWIZZLE_A:              return "VK_CHANNEL_SWIZZLE_A";
                default:                                                return DE_NULL;
        }
 }
 
-const char* getBorderColorName (VkBorderColor value)
-{
-       switch (value)
-       {
-               case VK_BORDER_COLOR_OPAQUE_WHITE:              return "VK_BORDER_COLOR_OPAQUE_WHITE";
-               case VK_BORDER_COLOR_TRANSPARENT_BLACK: return "VK_BORDER_COLOR_TRANSPARENT_BLACK";
-               case VK_BORDER_COLOR_OPAQUE_BLACK:              return "VK_BORDER_COLOR_OPAQUE_BLACK";
-               default:                                                                return DE_NULL;
-       }
-}
-
-const char* getPipelineBindPointName (VkPipelineBindPoint value)
+const char* getShaderStageName (VkShaderStage value)
 {
        switch (value)
        {
-               case VK_PIPELINE_BIND_POINT_COMPUTE:    return "VK_PIPELINE_BIND_POINT_COMPUTE";
-               case VK_PIPELINE_BIND_POINT_GRAPHICS:   return "VK_PIPELINE_BIND_POINT_GRAPHICS";
+               case VK_SHADER_STAGE_VERTEX:                    return "VK_SHADER_STAGE_VERTEX";
+               case VK_SHADER_STAGE_TESS_CONTROL:              return "VK_SHADER_STAGE_TESS_CONTROL";
+               case VK_SHADER_STAGE_TESS_EVALUATION:   return "VK_SHADER_STAGE_TESS_EVALUATION";
+               case VK_SHADER_STAGE_GEOMETRY:                  return "VK_SHADER_STAGE_GEOMETRY";
+               case VK_SHADER_STAGE_FRAGMENT:                  return "VK_SHADER_STAGE_FRAGMENT";
+               case VK_SHADER_STAGE_COMPUTE:                   return "VK_SHADER_STAGE_COMPUTE";
                default:                                                                return DE_NULL;
        }
 }
 
-const char* getStateBindPointName (VkStateBindPoint value)
+const char* getVertexInputStepRateName (VkVertexInputStepRate value)
 {
        switch (value)
        {
-               case VK_STATE_BIND_POINT_VIEWPORT:              return "VK_STATE_BIND_POINT_VIEWPORT";
-               case VK_STATE_BIND_POINT_RASTER:                return "VK_STATE_BIND_POINT_RASTER";
-               case VK_STATE_BIND_POINT_COLOR_BLEND:   return "VK_STATE_BIND_POINT_COLOR_BLEND";
-               case VK_STATE_BIND_POINT_DEPTH_STENCIL: return "VK_STATE_BIND_POINT_DEPTH_STENCIL";
-               default:                                                                return DE_NULL;
+               case VK_VERTEX_INPUT_STEP_RATE_VERTEX:          return "VK_VERTEX_INPUT_STEP_RATE_VERTEX";
+               case VK_VERTEX_INPUT_STEP_RATE_INSTANCE:        return "VK_VERTEX_INPUT_STEP_RATE_INSTANCE";
+               default:                                                                        return DE_NULL;
        }
 }
 
@@ -301,67 +482,6 @@ const char* getPrimitiveTopologyName (VkPrimitiveTopology value)
        }
 }
 
-const char* getIndexTypeName (VkIndexType value)
-{
-       switch (value)
-       {
-               case VK_INDEX_TYPE_UINT8:       return "VK_INDEX_TYPE_UINT8";
-               case VK_INDEX_TYPE_UINT16:      return "VK_INDEX_TYPE_UINT16";
-               case VK_INDEX_TYPE_UINT32:      return "VK_INDEX_TYPE_UINT32";
-               default:                                        return DE_NULL;
-       }
-}
-
-const char* getTexFilterName (VkTexFilter value)
-{
-       switch (value)
-       {
-               case VK_TEX_FILTER_NEAREST:     return "VK_TEX_FILTER_NEAREST";
-               case VK_TEX_FILTER_LINEAR:      return "VK_TEX_FILTER_LINEAR";
-               default:                                        return DE_NULL;
-       }
-}
-
-const char* getTexMipmapModeName (VkTexMipmapMode value)
-{
-       switch (value)
-       {
-               case VK_TEX_MIPMAP_MODE_BASE:           return "VK_TEX_MIPMAP_MODE_BASE";
-               case VK_TEX_MIPMAP_MODE_NEAREST:        return "VK_TEX_MIPMAP_MODE_NEAREST";
-               case VK_TEX_MIPMAP_MODE_LINEAR:         return "VK_TEX_MIPMAP_MODE_LINEAR";
-               default:                                                        return DE_NULL;
-       }
-}
-
-const char* getTexAddressName (VkTexAddress value)
-{
-       switch (value)
-       {
-               case VK_TEX_ADDRESS_WRAP:                       return "VK_TEX_ADDRESS_WRAP";
-               case VK_TEX_ADDRESS_MIRROR:                     return "VK_TEX_ADDRESS_MIRROR";
-               case VK_TEX_ADDRESS_CLAMP:                      return "VK_TEX_ADDRESS_CLAMP";
-               case VK_TEX_ADDRESS_MIRROR_ONCE:        return "VK_TEX_ADDRESS_MIRROR_ONCE";
-               case VK_TEX_ADDRESS_CLAMP_BORDER:       return "VK_TEX_ADDRESS_CLAMP_BORDER";
-               default:                                                        return DE_NULL;
-       }
-}
-
-const char* getCompareOpName (VkCompareOp value)
-{
-       switch (value)
-       {
-               case VK_COMPARE_OP_NEVER:                       return "VK_COMPARE_OP_NEVER";
-               case VK_COMPARE_OP_LESS:                        return "VK_COMPARE_OP_LESS";
-               case VK_COMPARE_OP_EQUAL:                       return "VK_COMPARE_OP_EQUAL";
-               case VK_COMPARE_OP_LESS_EQUAL:          return "VK_COMPARE_OP_LESS_EQUAL";
-               case VK_COMPARE_OP_GREATER:                     return "VK_COMPARE_OP_GREATER";
-               case VK_COMPARE_OP_NOT_EQUAL:           return "VK_COMPARE_OP_NOT_EQUAL";
-               case VK_COMPARE_OP_GREATER_EQUAL:       return "VK_COMPARE_OP_GREATER_EQUAL";
-               case VK_COMPARE_OP_ALWAYS:                      return "VK_COMPARE_OP_ALWAYS";
-               default:                                                        return DE_NULL;
-       }
-}
-
 const char* getFillModeName (VkFillMode value)
 {
        switch (value)
@@ -395,33 +515,59 @@ const char* getFrontFaceName (VkFrontFace value)
        }
 }
 
-const char* getProvokingVertexName (VkProvokingVertex value)
+const char* getCompareOpName (VkCompareOp value)
 {
        switch (value)
        {
-               case VK_PROVOKING_VERTEX_FIRST: return "VK_PROVOKING_VERTEX_FIRST";
-               case VK_PROVOKING_VERTEX_LAST:  return "VK_PROVOKING_VERTEX_LAST";
-               default:                                                return DE_NULL;
+               case VK_COMPARE_OP_NEVER:                       return "VK_COMPARE_OP_NEVER";
+               case VK_COMPARE_OP_LESS:                        return "VK_COMPARE_OP_LESS";
+               case VK_COMPARE_OP_EQUAL:                       return "VK_COMPARE_OP_EQUAL";
+               case VK_COMPARE_OP_LESS_EQUAL:          return "VK_COMPARE_OP_LESS_EQUAL";
+               case VK_COMPARE_OP_GREATER:                     return "VK_COMPARE_OP_GREATER";
+               case VK_COMPARE_OP_NOT_EQUAL:           return "VK_COMPARE_OP_NOT_EQUAL";
+               case VK_COMPARE_OP_GREATER_EQUAL:       return "VK_COMPARE_OP_GREATER_EQUAL";
+               case VK_COMPARE_OP_ALWAYS:                      return "VK_COMPARE_OP_ALWAYS";
+               default:                                                        return DE_NULL;
        }
 }
 
-const char* getCoordinateOriginName (VkCoordinateOrigin value)
+const char* getStencilOpName (VkStencilOp value)
 {
        switch (value)
        {
-               case VK_COORDINATE_ORIGIN_UPPER_LEFT:   return "VK_COORDINATE_ORIGIN_UPPER_LEFT";
-               case VK_COORDINATE_ORIGIN_LOWER_LEFT:   return "VK_COORDINATE_ORIGIN_LOWER_LEFT";
-               default:                                                                return DE_NULL;
+               case VK_STENCIL_OP_KEEP:                return "VK_STENCIL_OP_KEEP";
+               case VK_STENCIL_OP_ZERO:                return "VK_STENCIL_OP_ZERO";
+               case VK_STENCIL_OP_REPLACE:             return "VK_STENCIL_OP_REPLACE";
+               case VK_STENCIL_OP_INC_CLAMP:   return "VK_STENCIL_OP_INC_CLAMP";
+               case VK_STENCIL_OP_DEC_CLAMP:   return "VK_STENCIL_OP_DEC_CLAMP";
+               case VK_STENCIL_OP_INVERT:              return "VK_STENCIL_OP_INVERT";
+               case VK_STENCIL_OP_INC_WRAP:    return "VK_STENCIL_OP_INC_WRAP";
+               case VK_STENCIL_OP_DEC_WRAP:    return "VK_STENCIL_OP_DEC_WRAP";
+               default:                                                return DE_NULL;
        }
 }
 
-const char* getDepthModeName (VkDepthMode value)
+const char* getLogicOpName (VkLogicOp value)
 {
        switch (value)
        {
-               case VK_DEPTH_MODE_ZERO_TO_ONE:                 return "VK_DEPTH_MODE_ZERO_TO_ONE";
-               case VK_DEPTH_MODE_NEGATIVE_ONE_TO_ONE: return "VK_DEPTH_MODE_NEGATIVE_ONE_TO_ONE";
-               default:                                                                return DE_NULL;
+               case VK_LOGIC_OP_CLEAR:                 return "VK_LOGIC_OP_CLEAR";
+               case VK_LOGIC_OP_AND:                   return "VK_LOGIC_OP_AND";
+               case VK_LOGIC_OP_AND_REVERSE:   return "VK_LOGIC_OP_AND_REVERSE";
+               case VK_LOGIC_OP_COPY:                  return "VK_LOGIC_OP_COPY";
+               case VK_LOGIC_OP_AND_INVERTED:  return "VK_LOGIC_OP_AND_INVERTED";
+               case VK_LOGIC_OP_NOOP:                  return "VK_LOGIC_OP_NOOP";
+               case VK_LOGIC_OP_XOR:                   return "VK_LOGIC_OP_XOR";
+               case VK_LOGIC_OP_OR:                    return "VK_LOGIC_OP_OR";
+               case VK_LOGIC_OP_NOR:                   return "VK_LOGIC_OP_NOR";
+               case VK_LOGIC_OP_EQUIV:                 return "VK_LOGIC_OP_EQUIV";
+               case VK_LOGIC_OP_INVERT:                return "VK_LOGIC_OP_INVERT";
+               case VK_LOGIC_OP_OR_REVERSE:    return "VK_LOGIC_OP_OR_REVERSE";
+               case VK_LOGIC_OP_COPY_INVERTED: return "VK_LOGIC_OP_COPY_INVERTED";
+               case VK_LOGIC_OP_OR_INVERTED:   return "VK_LOGIC_OP_OR_INVERTED";
+               case VK_LOGIC_OP_NAND:                  return "VK_LOGIC_OP_NAND";
+               case VK_LOGIC_OP_SET:                   return "VK_LOGIC_OP_SET";
+               default:                                                return DE_NULL;
        }
 }
 
@@ -465,481 +611,212 @@ const char* getBlendOpName (VkBlendOp value)
        }
 }
 
-const char* getStencilOpName (VkStencilOp value)
+const char* getTexFilterName (VkTexFilter value)
 {
        switch (value)
        {
-               case VK_STENCIL_OP_KEEP:                return "VK_STENCIL_OP_KEEP";
-               case VK_STENCIL_OP_ZERO:                return "VK_STENCIL_OP_ZERO";
-               case VK_STENCIL_OP_REPLACE:             return "VK_STENCIL_OP_REPLACE";
-               case VK_STENCIL_OP_INC_CLAMP:   return "VK_STENCIL_OP_INC_CLAMP";
-               case VK_STENCIL_OP_DEC_CLAMP:   return "VK_STENCIL_OP_DEC_CLAMP";
-               case VK_STENCIL_OP_INVERT:              return "VK_STENCIL_OP_INVERT";
-               case VK_STENCIL_OP_INC_WRAP:    return "VK_STENCIL_OP_INC_WRAP";
-               case VK_STENCIL_OP_DEC_WRAP:    return "VK_STENCIL_OP_DEC_WRAP";
-               default:                                                return DE_NULL;
+               case VK_TEX_FILTER_NEAREST:     return "VK_TEX_FILTER_NEAREST";
+               case VK_TEX_FILTER_LINEAR:      return "VK_TEX_FILTER_LINEAR";
+               default:                                        return DE_NULL;
        }
 }
 
-const char* getLogicOpName (VkLogicOp value)
+const char* getTexMipmapModeName (VkTexMipmapMode value)
 {
        switch (value)
        {
-               case VK_LOGIC_OP_COPY:                  return "VK_LOGIC_OP_COPY";
-               case VK_LOGIC_OP_CLEAR:                 return "VK_LOGIC_OP_CLEAR";
-               case VK_LOGIC_OP_AND:                   return "VK_LOGIC_OP_AND";
-               case VK_LOGIC_OP_AND_REVERSE:   return "VK_LOGIC_OP_AND_REVERSE";
-               case VK_LOGIC_OP_AND_INVERTED:  return "VK_LOGIC_OP_AND_INVERTED";
-               case VK_LOGIC_OP_NOOP:                  return "VK_LOGIC_OP_NOOP";
-               case VK_LOGIC_OP_XOR:                   return "VK_LOGIC_OP_XOR";
-               case VK_LOGIC_OP_OR:                    return "VK_LOGIC_OP_OR";
-               case VK_LOGIC_OP_NOR:                   return "VK_LOGIC_OP_NOR";
-               case VK_LOGIC_OP_EQUIV:                 return "VK_LOGIC_OP_EQUIV";
-               case VK_LOGIC_OP_INVERT:                return "VK_LOGIC_OP_INVERT";
-               case VK_LOGIC_OP_OR_REVERSE:    return "VK_LOGIC_OP_OR_REVERSE";
-               case VK_LOGIC_OP_COPY_INVERTED: return "VK_LOGIC_OP_COPY_INVERTED";
-               case VK_LOGIC_OP_OR_INVERTED:   return "VK_LOGIC_OP_OR_INVERTED";
-               case VK_LOGIC_OP_NAND:                  return "VK_LOGIC_OP_NAND";
-               case VK_LOGIC_OP_SET:                   return "VK_LOGIC_OP_SET";
-               default:                                                return DE_NULL;
+               case VK_TEX_MIPMAP_MODE_BASE:           return "VK_TEX_MIPMAP_MODE_BASE";
+               case VK_TEX_MIPMAP_MODE_NEAREST:        return "VK_TEX_MIPMAP_MODE_NEAREST";
+               case VK_TEX_MIPMAP_MODE_LINEAR:         return "VK_TEX_MIPMAP_MODE_LINEAR";
+               default:                                                        return DE_NULL;
        }
 }
 
-const char* getSystemAllocTypeName (VkSystemAllocType value)
+const char* getTexAddressName (VkTexAddress value)
 {
        switch (value)
        {
-               case VK_SYSTEM_ALLOC_TYPE_API_OBJECT:           return "VK_SYSTEM_ALLOC_TYPE_API_OBJECT";
-               case VK_SYSTEM_ALLOC_TYPE_INTERNAL:                     return "VK_SYSTEM_ALLOC_TYPE_INTERNAL";
-               case VK_SYSTEM_ALLOC_TYPE_INTERNAL_TEMP:        return "VK_SYSTEM_ALLOC_TYPE_INTERNAL_TEMP";
-               case VK_SYSTEM_ALLOC_TYPE_INTERNAL_SHADER:      return "VK_SYSTEM_ALLOC_TYPE_INTERNAL_SHADER";
-               case VK_SYSTEM_ALLOC_TYPE_DEBUG:                        return "VK_SYSTEM_ALLOC_TYPE_DEBUG";
-               default:                                                                        return DE_NULL;
-       }
-}
-
-const char* getPhysicalDeviceTypeName (VkPhysicalDeviceType value)
+               case VK_TEX_ADDRESS_WRAP:                       return "VK_TEX_ADDRESS_WRAP";
+               case VK_TEX_ADDRESS_MIRROR:                     return "VK_TEX_ADDRESS_MIRROR";
+               case VK_TEX_ADDRESS_CLAMP:                      return "VK_TEX_ADDRESS_CLAMP";
+               case VK_TEX_ADDRESS_MIRROR_ONCE:        return "VK_TEX_ADDRESS_MIRROR_ONCE";
+               case VK_TEX_ADDRESS_CLAMP_BORDER:       return "VK_TEX_ADDRESS_CLAMP_BORDER";
+               default:                                                        return DE_NULL;
+       }
+}
+
+const char* getBorderColorName (VkBorderColor value)
 {
        switch (value)
        {
-               case VK_PHYSICAL_DEVICE_TYPE_OTHER:                             return "VK_PHYSICAL_DEVICE_TYPE_OTHER";
-               case VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU:    return "VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU";
-               case VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU:              return "VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU";
-               case VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU:               return "VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU";
-               case VK_PHYSICAL_DEVICE_TYPE_CPU:                               return "VK_PHYSICAL_DEVICE_TYPE_CPU";
+               case VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK:   return "VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK";
+               case VK_BORDER_COLOR_INT_TRANSPARENT_BLACK:             return "VK_BORDER_COLOR_INT_TRANSPARENT_BLACK";
+               case VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK:                return "VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK";
+               case VK_BORDER_COLOR_INT_OPAQUE_BLACK:                  return "VK_BORDER_COLOR_INT_OPAQUE_BLACK";
+               case VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE:                return "VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE";
+               case VK_BORDER_COLOR_INT_OPAQUE_WHITE:                  return "VK_BORDER_COLOR_INT_OPAQUE_WHITE";
                default:                                                                                return DE_NULL;
        }
 }
 
-const char* getPhysicalDeviceInfoTypeName (VkPhysicalDeviceInfoType value)
+const char* getDescriptorTypeName (VkDescriptorType value)
 {
        switch (value)
        {
-               case VK_PHYSICAL_DEVICE_INFO_TYPE_PROPERTIES:                   return "VK_PHYSICAL_DEVICE_INFO_TYPE_PROPERTIES";
-               case VK_PHYSICAL_DEVICE_INFO_TYPE_PERFORMANCE:                  return "VK_PHYSICAL_DEVICE_INFO_TYPE_PERFORMANCE";
-               case VK_PHYSICAL_DEVICE_INFO_TYPE_QUEUE_PROPERTIES:             return "VK_PHYSICAL_DEVICE_INFO_TYPE_QUEUE_PROPERTIES";
-               case VK_PHYSICAL_DEVICE_INFO_TYPE_MEMORY_PROPERTIES:    return "VK_PHYSICAL_DEVICE_INFO_TYPE_MEMORY_PROPERTIES";
-               default:                                                                                                return DE_NULL;
+               case VK_DESCRIPTOR_TYPE_SAMPLER:                                return "VK_DESCRIPTOR_TYPE_SAMPLER";
+               case VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER: return "VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER";
+               case VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE:                  return "VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE";
+               case VK_DESCRIPTOR_TYPE_STORAGE_IMAGE:                  return "VK_DESCRIPTOR_TYPE_STORAGE_IMAGE";
+               case VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER:   return "VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER";
+               case VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER:   return "VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER";
+               case VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER:                 return "VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER";
+               case VK_DESCRIPTOR_TYPE_STORAGE_BUFFER:                 return "VK_DESCRIPTOR_TYPE_STORAGE_BUFFER";
+               case VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC: return "VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC";
+               case VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC: return "VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC";
+               case VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT:               return "VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT";
+               default:                                                                                return DE_NULL;
        }
 }
 
-const char* getExtensionInfoTypeName (VkExtensionInfoType value)
+const char* getDescriptorPoolUsageName (VkDescriptorPoolUsage value)
 {
        switch (value)
        {
-               case VK_EXTENSION_INFO_TYPE_COUNT:              return "VK_EXTENSION_INFO_TYPE_COUNT";
-               case VK_EXTENSION_INFO_TYPE_PROPERTIES: return "VK_EXTENSION_INFO_TYPE_PROPERTIES";
+               case VK_DESCRIPTOR_POOL_USAGE_ONE_SHOT: return "VK_DESCRIPTOR_POOL_USAGE_ONE_SHOT";
+               case VK_DESCRIPTOR_POOL_USAGE_DYNAMIC:  return "VK_DESCRIPTOR_POOL_USAGE_DYNAMIC";
                default:                                                                return DE_NULL;
        }
 }
 
-const char* getFormatInfoTypeName (VkFormatInfoType value)
+const char* getDescriptorSetUsageName (VkDescriptorSetUsage value)
 {
        switch (value)
        {
-               case VK_FORMAT_INFO_TYPE_PROPERTIES:    return "VK_FORMAT_INFO_TYPE_PROPERTIES";
+               case VK_DESCRIPTOR_SET_USAGE_ONE_SHOT:  return "VK_DESCRIPTOR_SET_USAGE_ONE_SHOT";
+               case VK_DESCRIPTOR_SET_USAGE_STATIC:    return "VK_DESCRIPTOR_SET_USAGE_STATIC";
                default:                                                                return DE_NULL;
        }
 }
 
-const char* getSubresourceInfoTypeName (VkSubresourceInfoType value)
+const char* getImageLayoutName (VkImageLayout value)
 {
        switch (value)
        {
-               case VK_SUBRESOURCE_INFO_TYPE_LAYOUT:   return "VK_SUBRESOURCE_INFO_TYPE_LAYOUT";
-               default:                                                                return DE_NULL;
+               case VK_IMAGE_LAYOUT_UNDEFINED:                                                 return "VK_IMAGE_LAYOUT_UNDEFINED";
+               case VK_IMAGE_LAYOUT_GENERAL:                                                   return "VK_IMAGE_LAYOUT_GENERAL";
+               case VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL:                  return "VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL";
+               case VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL:  return "VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL";
+               case VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL:   return "VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL";
+               case VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL:                  return "VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL";
+               case VK_IMAGE_LAYOUT_TRANSFER_SOURCE_OPTIMAL:                   return "VK_IMAGE_LAYOUT_TRANSFER_SOURCE_OPTIMAL";
+               case VK_IMAGE_LAYOUT_TRANSFER_DESTINATION_OPTIMAL:              return "VK_IMAGE_LAYOUT_TRANSFER_DESTINATION_OPTIMAL";
+               default:                                                                                                return DE_NULL;
        }
 }
 
-const char* getObjectInfoTypeName (VkObjectInfoType value)
+const char* getAttachmentLoadOpName (VkAttachmentLoadOp value)
 {
        switch (value)
        {
-               case VK_OBJECT_INFO_TYPE_MEMORY_ALLOCATION_COUNT:       return "VK_OBJECT_INFO_TYPE_MEMORY_ALLOCATION_COUNT";
-               case VK_OBJECT_INFO_TYPE_MEMORY_REQUIREMENTS:           return "VK_OBJECT_INFO_TYPE_MEMORY_REQUIREMENTS";
-               default:                                                                                        return DE_NULL;
+               case VK_ATTACHMENT_LOAD_OP_LOAD:                return "VK_ATTACHMENT_LOAD_OP_LOAD";
+               case VK_ATTACHMENT_LOAD_OP_CLEAR:               return "VK_ATTACHMENT_LOAD_OP_CLEAR";
+               case VK_ATTACHMENT_LOAD_OP_DONT_CARE:   return "VK_ATTACHMENT_LOAD_OP_DONT_CARE";
+               default:                                                                return DE_NULL;
        }
 }
 
-const char* getVertexInputStepRateName (VkVertexInputStepRate value)
+const char* getAttachmentStoreOpName (VkAttachmentStoreOp value)
 {
        switch (value)
        {
-               case VK_VERTEX_INPUT_STEP_RATE_VERTEX:          return "VK_VERTEX_INPUT_STEP_RATE_VERTEX";
-               case VK_VERTEX_INPUT_STEP_RATE_INSTANCE:        return "VK_VERTEX_INPUT_STEP_RATE_INSTANCE";
-               case VK_VERTEX_INPUT_STEP_RATE_DRAW:            return "VK_VERTEX_INPUT_STEP_RATE_DRAW";
-               default:                                                                        return DE_NULL;
+               case VK_ATTACHMENT_STORE_OP_STORE:              return "VK_ATTACHMENT_STORE_OP_STORE";
+               case VK_ATTACHMENT_STORE_OP_DONT_CARE:  return "VK_ATTACHMENT_STORE_OP_DONT_CARE";
+               default:                                                                return DE_NULL;
        }
 }
 
-const char* getFormatName (VkFormat value)
+const char* getPipelineBindPointName (VkPipelineBindPoint value)
 {
        switch (value)
        {
-               case VK_FORMAT_UNDEFINED:                               return "VK_FORMAT_UNDEFINED";
-               case VK_FORMAT_R4G4_UNORM:                              return "VK_FORMAT_R4G4_UNORM";
-               case VK_FORMAT_R4G4_USCALED:                    return "VK_FORMAT_R4G4_USCALED";
-               case VK_FORMAT_R4G4B4A4_UNORM:                  return "VK_FORMAT_R4G4B4A4_UNORM";
-               case VK_FORMAT_R4G4B4A4_USCALED:                return "VK_FORMAT_R4G4B4A4_USCALED";
-               case VK_FORMAT_R5G6B5_UNORM:                    return "VK_FORMAT_R5G6B5_UNORM";
-               case VK_FORMAT_R5G6B5_USCALED:                  return "VK_FORMAT_R5G6B5_USCALED";
-               case VK_FORMAT_R5G5B5A1_UNORM:                  return "VK_FORMAT_R5G5B5A1_UNORM";
-               case VK_FORMAT_R5G5B5A1_USCALED:                return "VK_FORMAT_R5G5B5A1_USCALED";
-               case VK_FORMAT_R8_UNORM:                                return "VK_FORMAT_R8_UNORM";
-               case VK_FORMAT_R8_SNORM:                                return "VK_FORMAT_R8_SNORM";
-               case VK_FORMAT_R8_USCALED:                              return "VK_FORMAT_R8_USCALED";
-               case VK_FORMAT_R8_SSCALED:                              return "VK_FORMAT_R8_SSCALED";
-               case VK_FORMAT_R8_UINT:                                 return "VK_FORMAT_R8_UINT";
-               case VK_FORMAT_R8_SINT:                                 return "VK_FORMAT_R8_SINT";
-               case VK_FORMAT_R8_SRGB:                                 return "VK_FORMAT_R8_SRGB";
-               case VK_FORMAT_R8G8_UNORM:                              return "VK_FORMAT_R8G8_UNORM";
-               case VK_FORMAT_R8G8_SNORM:                              return "VK_FORMAT_R8G8_SNORM";
-               case VK_FORMAT_R8G8_USCALED:                    return "VK_FORMAT_R8G8_USCALED";
-               case VK_FORMAT_R8G8_SSCALED:                    return "VK_FORMAT_R8G8_SSCALED";
-               case VK_FORMAT_R8G8_UINT:                               return "VK_FORMAT_R8G8_UINT";
-               case VK_FORMAT_R8G8_SINT:                               return "VK_FORMAT_R8G8_SINT";
-               case VK_FORMAT_R8G8_SRGB:                               return "VK_FORMAT_R8G8_SRGB";
-               case VK_FORMAT_R8G8B8_UNORM:                    return "VK_FORMAT_R8G8B8_UNORM";
-               case VK_FORMAT_R8G8B8_SNORM:                    return "VK_FORMAT_R8G8B8_SNORM";
-               case VK_FORMAT_R8G8B8_USCALED:                  return "VK_FORMAT_R8G8B8_USCALED";
-               case VK_FORMAT_R8G8B8_SSCALED:                  return "VK_FORMAT_R8G8B8_SSCALED";
-               case VK_FORMAT_R8G8B8_UINT:                             return "VK_FORMAT_R8G8B8_UINT";
-               case VK_FORMAT_R8G8B8_SINT:                             return "VK_FORMAT_R8G8B8_SINT";
-               case VK_FORMAT_R8G8B8_SRGB:                             return "VK_FORMAT_R8G8B8_SRGB";
-               case VK_FORMAT_R8G8B8A8_UNORM:                  return "VK_FORMAT_R8G8B8A8_UNORM";
-               case VK_FORMAT_R8G8B8A8_SNORM:                  return "VK_FORMAT_R8G8B8A8_SNORM";
-               case VK_FORMAT_R8G8B8A8_USCALED:                return "VK_FORMAT_R8G8B8A8_USCALED";
-               case VK_FORMAT_R8G8B8A8_SSCALED:                return "VK_FORMAT_R8G8B8A8_SSCALED";
-               case VK_FORMAT_R8G8B8A8_UINT:                   return "VK_FORMAT_R8G8B8A8_UINT";
-               case VK_FORMAT_R8G8B8A8_SINT:                   return "VK_FORMAT_R8G8B8A8_SINT";
-               case VK_FORMAT_R8G8B8A8_SRGB:                   return "VK_FORMAT_R8G8B8A8_SRGB";
-               case VK_FORMAT_R10G10B10A2_UNORM:               return "VK_FORMAT_R10G10B10A2_UNORM";
-               case VK_FORMAT_R10G10B10A2_SNORM:               return "VK_FORMAT_R10G10B10A2_SNORM";
-               case VK_FORMAT_R10G10B10A2_USCALED:             return "VK_FORMAT_R10G10B10A2_USCALED";
-               case VK_FORMAT_R10G10B10A2_SSCALED:             return "VK_FORMAT_R10G10B10A2_SSCALED";
-               case VK_FORMAT_R10G10B10A2_UINT:                return "VK_FORMAT_R10G10B10A2_UINT";
-               case VK_FORMAT_R10G10B10A2_SINT:                return "VK_FORMAT_R10G10B10A2_SINT";
-               case VK_FORMAT_R16_UNORM:                               return "VK_FORMAT_R16_UNORM";
-               case VK_FORMAT_R16_SNORM:                               return "VK_FORMAT_R16_SNORM";
-               case VK_FORMAT_R16_USCALED:                             return "VK_FORMAT_R16_USCALED";
-               case VK_FORMAT_R16_SSCALED:                             return "VK_FORMAT_R16_SSCALED";
-               case VK_FORMAT_R16_UINT:                                return "VK_FORMAT_R16_UINT";
-               case VK_FORMAT_R16_SINT:                                return "VK_FORMAT_R16_SINT";
-               case VK_FORMAT_R16_SFLOAT:                              return "VK_FORMAT_R16_SFLOAT";
-               case VK_FORMAT_R16G16_UNORM:                    return "VK_FORMAT_R16G16_UNORM";
-               case VK_FORMAT_R16G16_SNORM:                    return "VK_FORMAT_R16G16_SNORM";
-               case VK_FORMAT_R16G16_USCALED:                  return "VK_FORMAT_R16G16_USCALED";
-               case VK_FORMAT_R16G16_SSCALED:                  return "VK_FORMAT_R16G16_SSCALED";
-               case VK_FORMAT_R16G16_UINT:                             return "VK_FORMAT_R16G16_UINT";
-               case VK_FORMAT_R16G16_SINT:                             return "VK_FORMAT_R16G16_SINT";
-               case VK_FORMAT_R16G16_SFLOAT:                   return "VK_FORMAT_R16G16_SFLOAT";
-               case VK_FORMAT_R16G16B16_UNORM:                 return "VK_FORMAT_R16G16B16_UNORM";
-               case VK_FORMAT_R16G16B16_SNORM:                 return "VK_FORMAT_R16G16B16_SNORM";
-               case VK_FORMAT_R16G16B16_USCALED:               return "VK_FORMAT_R16G16B16_USCALED";
-               case VK_FORMAT_R16G16B16_SSCALED:               return "VK_FORMAT_R16G16B16_SSCALED";
-               case VK_FORMAT_R16G16B16_UINT:                  return "VK_FORMAT_R16G16B16_UINT";
-               case VK_FORMAT_R16G16B16_SINT:                  return "VK_FORMAT_R16G16B16_SINT";
-               case VK_FORMAT_R16G16B16_SFLOAT:                return "VK_FORMAT_R16G16B16_SFLOAT";
-               case VK_FORMAT_R16G16B16A16_UNORM:              return "VK_FORMAT_R16G16B16A16_UNORM";
-               case VK_FORMAT_R16G16B16A16_SNORM:              return "VK_FORMAT_R16G16B16A16_SNORM";
-               case VK_FORMAT_R16G16B16A16_USCALED:    return "VK_FORMAT_R16G16B16A16_USCALED";
-               case VK_FORMAT_R16G16B16A16_SSCALED:    return "VK_FORMAT_R16G16B16A16_SSCALED";
-               case VK_FORMAT_R16G16B16A16_UINT:               return "VK_FORMAT_R16G16B16A16_UINT";
-               case VK_FORMAT_R16G16B16A16_SINT:               return "VK_FORMAT_R16G16B16A16_SINT";
-               case VK_FORMAT_R16G16B16A16_SFLOAT:             return "VK_FORMAT_R16G16B16A16_SFLOAT";
-               case VK_FORMAT_R32_UINT:                                return "VK_FORMAT_R32_UINT";
-               case VK_FORMAT_R32_SINT:                                return "VK_FORMAT_R32_SINT";
-               case VK_FORMAT_R32_SFLOAT:                              return "VK_FORMAT_R32_SFLOAT";
-               case VK_FORMAT_R32G32_UINT:                             return "VK_FORMAT_R32G32_UINT";
-               case VK_FORMAT_R32G32_SINT:                             return "VK_FORMAT_R32G32_SINT";
-               case VK_FORMAT_R32G32_SFLOAT:                   return "VK_FORMAT_R32G32_SFLOAT";
-               case VK_FORMAT_R32G32B32_UINT:                  return "VK_FORMAT_R32G32B32_UINT";
-               case VK_FORMAT_R32G32B32_SINT:                  return "VK_FORMAT_R32G32B32_SINT";
-               case VK_FORMAT_R32G32B32_SFLOAT:                return "VK_FORMAT_R32G32B32_SFLOAT";
-               case VK_FORMAT_R32G32B32A32_UINT:               return "VK_FORMAT_R32G32B32A32_UINT";
-               case VK_FORMAT_R32G32B32A32_SINT:               return "VK_FORMAT_R32G32B32A32_SINT";
-               case VK_FORMAT_R32G32B32A32_SFLOAT:             return "VK_FORMAT_R32G32B32A32_SFLOAT";
-               case VK_FORMAT_R64_SFLOAT:                              return "VK_FORMAT_R64_SFLOAT";
-               case VK_FORMAT_R64G64_SFLOAT:                   return "VK_FORMAT_R64G64_SFLOAT";
-               case VK_FORMAT_R64G64B64_SFLOAT:                return "VK_FORMAT_R64G64B64_SFLOAT";
-               case VK_FORMAT_R64G64B64A64_SFLOAT:             return "VK_FORMAT_R64G64B64A64_SFLOAT";
-               case VK_FORMAT_R11G11B10_UFLOAT:                return "VK_FORMAT_R11G11B10_UFLOAT";
-               case VK_FORMAT_R9G9B9E5_UFLOAT:                 return "VK_FORMAT_R9G9B9E5_UFLOAT";
-               case VK_FORMAT_D16_UNORM:                               return "VK_FORMAT_D16_UNORM";
-               case VK_FORMAT_D24_UNORM:                               return "VK_FORMAT_D24_UNORM";
-               case VK_FORMAT_D32_SFLOAT:                              return "VK_FORMAT_D32_SFLOAT";
-               case VK_FORMAT_S8_UINT:                                 return "VK_FORMAT_S8_UINT";
-               case VK_FORMAT_D16_UNORM_S8_UINT:               return "VK_FORMAT_D16_UNORM_S8_UINT";
-               case VK_FORMAT_D24_UNORM_S8_UINT:               return "VK_FORMAT_D24_UNORM_S8_UINT";
-               case VK_FORMAT_D32_SFLOAT_S8_UINT:              return "VK_FORMAT_D32_SFLOAT_S8_UINT";
-               case VK_FORMAT_BC1_RGB_UNORM:                   return "VK_FORMAT_BC1_RGB_UNORM";
-               case VK_FORMAT_BC1_RGB_SRGB:                    return "VK_FORMAT_BC1_RGB_SRGB";
-               case VK_FORMAT_BC1_RGBA_UNORM:                  return "VK_FORMAT_BC1_RGBA_UNORM";
-               case VK_FORMAT_BC1_RGBA_SRGB:                   return "VK_FORMAT_BC1_RGBA_SRGB";
-               case VK_FORMAT_BC2_UNORM:                               return "VK_FORMAT_BC2_UNORM";
-               case VK_FORMAT_BC2_SRGB:                                return "VK_FORMAT_BC2_SRGB";
-               case VK_FORMAT_BC3_UNORM:                               return "VK_FORMAT_BC3_UNORM";
-               case VK_FORMAT_BC3_SRGB:                                return "VK_FORMAT_BC3_SRGB";
-               case VK_FORMAT_BC4_UNORM:                               return "VK_FORMAT_BC4_UNORM";
-               case VK_FORMAT_BC4_SNORM:                               return "VK_FORMAT_BC4_SNORM";
-               case VK_FORMAT_BC5_UNORM:                               return "VK_FORMAT_BC5_UNORM";
-               case VK_FORMAT_BC5_SNORM:                               return "VK_FORMAT_BC5_SNORM";
-               case VK_FORMAT_BC6H_UFLOAT:                             return "VK_FORMAT_BC6H_UFLOAT";
-               case VK_FORMAT_BC6H_SFLOAT:                             return "VK_FORMAT_BC6H_SFLOAT";
-               case VK_FORMAT_BC7_UNORM:                               return "VK_FORMAT_BC7_UNORM";
-               case VK_FORMAT_BC7_SRGB:                                return "VK_FORMAT_BC7_SRGB";
-               case VK_FORMAT_ETC2_R8G8B8_UNORM:               return "VK_FORMAT_ETC2_R8G8B8_UNORM";
-               case VK_FORMAT_ETC2_R8G8B8_SRGB:                return "VK_FORMAT_ETC2_R8G8B8_SRGB";
-               case VK_FORMAT_ETC2_R8G8B8A1_UNORM:             return "VK_FORMAT_ETC2_R8G8B8A1_UNORM";
-               case VK_FORMAT_ETC2_R8G8B8A1_SRGB:              return "VK_FORMAT_ETC2_R8G8B8A1_SRGB";
-               case VK_FORMAT_ETC2_R8G8B8A8_UNORM:             return "VK_FORMAT_ETC2_R8G8B8A8_UNORM";
-               case VK_FORMAT_ETC2_R8G8B8A8_SRGB:              return "VK_FORMAT_ETC2_R8G8B8A8_SRGB";
-               case VK_FORMAT_EAC_R11_UNORM:                   return "VK_FORMAT_EAC_R11_UNORM";
-               case VK_FORMAT_EAC_R11_SNORM:                   return "VK_FORMAT_EAC_R11_SNORM";
-               case VK_FORMAT_EAC_R11G11_UNORM:                return "VK_FORMAT_EAC_R11G11_UNORM";
-               case VK_FORMAT_EAC_R11G11_SNORM:                return "VK_FORMAT_EAC_R11G11_SNORM";
-               case VK_FORMAT_ASTC_4x4_UNORM:                  return "VK_FORMAT_ASTC_4x4_UNORM";
-               case VK_FORMAT_ASTC_4x4_SRGB:                   return "VK_FORMAT_ASTC_4x4_SRGB";
-               case VK_FORMAT_ASTC_5x4_UNORM:                  return "VK_FORMAT_ASTC_5x4_UNORM";
-               case VK_FORMAT_ASTC_5x4_SRGB:                   return "VK_FORMAT_ASTC_5x4_SRGB";
-               case VK_FORMAT_ASTC_5x5_UNORM:                  return "VK_FORMAT_ASTC_5x5_UNORM";
-               case VK_FORMAT_ASTC_5x5_SRGB:                   return "VK_FORMAT_ASTC_5x5_SRGB";
-               case VK_FORMAT_ASTC_6x5_UNORM:                  return "VK_FORMAT_ASTC_6x5_UNORM";
-               case VK_FORMAT_ASTC_6x5_SRGB:                   return "VK_FORMAT_ASTC_6x5_SRGB";
-               case VK_FORMAT_ASTC_6x6_UNORM:                  return "VK_FORMAT_ASTC_6x6_UNORM";
-               case VK_FORMAT_ASTC_6x6_SRGB:                   return "VK_FORMAT_ASTC_6x6_SRGB";
-               case VK_FORMAT_ASTC_8x5_UNORM:                  return "VK_FORMAT_ASTC_8x5_UNORM";
-               case VK_FORMAT_ASTC_8x5_SRGB:                   return "VK_FORMAT_ASTC_8x5_SRGB";
-               case VK_FORMAT_ASTC_8x6_UNORM:                  return "VK_FORMAT_ASTC_8x6_UNORM";
-               case VK_FORMAT_ASTC_8x6_SRGB:                   return "VK_FORMAT_ASTC_8x6_SRGB";
-               case VK_FORMAT_ASTC_8x8_UNORM:                  return "VK_FORMAT_ASTC_8x8_UNORM";
-               case VK_FORMAT_ASTC_8x8_SRGB:                   return "VK_FORMAT_ASTC_8x8_SRGB";
-               case VK_FORMAT_ASTC_10x5_UNORM:                 return "VK_FORMAT_ASTC_10x5_UNORM";
-               case VK_FORMAT_ASTC_10x5_SRGB:                  return "VK_FORMAT_ASTC_10x5_SRGB";
-               case VK_FORMAT_ASTC_10x6_UNORM:                 return "VK_FORMAT_ASTC_10x6_UNORM";
-               case VK_FORMAT_ASTC_10x6_SRGB:                  return "VK_FORMAT_ASTC_10x6_SRGB";
-               case VK_FORMAT_ASTC_10x8_UNORM:                 return "VK_FORMAT_ASTC_10x8_UNORM";
-               case VK_FORMAT_ASTC_10x8_SRGB:                  return "VK_FORMAT_ASTC_10x8_SRGB";
-               case VK_FORMAT_ASTC_10x10_UNORM:                return "VK_FORMAT_ASTC_10x10_UNORM";
-               case VK_FORMAT_ASTC_10x10_SRGB:                 return "VK_FORMAT_ASTC_10x10_SRGB";
-               case VK_FORMAT_ASTC_12x10_UNORM:                return "VK_FORMAT_ASTC_12x10_UNORM";
-               case VK_FORMAT_ASTC_12x10_SRGB:                 return "VK_FORMAT_ASTC_12x10_SRGB";
-               case VK_FORMAT_ASTC_12x12_UNORM:                return "VK_FORMAT_ASTC_12x12_UNORM";
-               case VK_FORMAT_ASTC_12x12_SRGB:                 return "VK_FORMAT_ASTC_12x12_SRGB";
-               case VK_FORMAT_B4G4R4A4_UNORM:                  return "VK_FORMAT_B4G4R4A4_UNORM";
-               case VK_FORMAT_B5G5R5A1_UNORM:                  return "VK_FORMAT_B5G5R5A1_UNORM";
-               case VK_FORMAT_B5G6R5_UNORM:                    return "VK_FORMAT_B5G6R5_UNORM";
-               case VK_FORMAT_B5G6R5_USCALED:                  return "VK_FORMAT_B5G6R5_USCALED";
-               case VK_FORMAT_B8G8R8_UNORM:                    return "VK_FORMAT_B8G8R8_UNORM";
-               case VK_FORMAT_B8G8R8_SNORM:                    return "VK_FORMAT_B8G8R8_SNORM";
-               case VK_FORMAT_B8G8R8_USCALED:                  return "VK_FORMAT_B8G8R8_USCALED";
-               case VK_FORMAT_B8G8R8_SSCALED:                  return "VK_FORMAT_B8G8R8_SSCALED";
-               case VK_FORMAT_B8G8R8_UINT:                             return "VK_FORMAT_B8G8R8_UINT";
-               case VK_FORMAT_B8G8R8_SINT:                             return "VK_FORMAT_B8G8R8_SINT";
-               case VK_FORMAT_B8G8R8_SRGB:                             return "VK_FORMAT_B8G8R8_SRGB";
-               case VK_FORMAT_B8G8R8A8_UNORM:                  return "VK_FORMAT_B8G8R8A8_UNORM";
-               case VK_FORMAT_B8G8R8A8_SNORM:                  return "VK_FORMAT_B8G8R8A8_SNORM";
-               case VK_FORMAT_B8G8R8A8_USCALED:                return "VK_FORMAT_B8G8R8A8_USCALED";
-               case VK_FORMAT_B8G8R8A8_SSCALED:                return "VK_FORMAT_B8G8R8A8_SSCALED";
-               case VK_FORMAT_B8G8R8A8_UINT:                   return "VK_FORMAT_B8G8R8A8_UINT";
-               case VK_FORMAT_B8G8R8A8_SINT:                   return "VK_FORMAT_B8G8R8A8_SINT";
-               case VK_FORMAT_B8G8R8A8_SRGB:                   return "VK_FORMAT_B8G8R8A8_SRGB";
-               case VK_FORMAT_B10G10R10A2_UNORM:               return "VK_FORMAT_B10G10R10A2_UNORM";
-               case VK_FORMAT_B10G10R10A2_SNORM:               return "VK_FORMAT_B10G10R10A2_SNORM";
-               case VK_FORMAT_B10G10R10A2_USCALED:             return "VK_FORMAT_B10G10R10A2_USCALED";
-               case VK_FORMAT_B10G10R10A2_SSCALED:             return "VK_FORMAT_B10G10R10A2_SSCALED";
-               case VK_FORMAT_B10G10R10A2_UINT:                return "VK_FORMAT_B10G10R10A2_UINT";
-               case VK_FORMAT_B10G10R10A2_SINT:                return "VK_FORMAT_B10G10R10A2_SINT";
+               case VK_PIPELINE_BIND_POINT_COMPUTE:    return "VK_PIPELINE_BIND_POINT_COMPUTE";
+               case VK_PIPELINE_BIND_POINT_GRAPHICS:   return "VK_PIPELINE_BIND_POINT_GRAPHICS";
                default:                                                                return DE_NULL;
        }
 }
 
-const char* getShaderStageName (VkShaderStage value)
+const char* getCmdBufferLevelName (VkCmdBufferLevel value)
 {
        switch (value)
        {
-               case VK_SHADER_STAGE_VERTEX:                    return "VK_SHADER_STAGE_VERTEX";
-               case VK_SHADER_STAGE_TESS_CONTROL:              return "VK_SHADER_STAGE_TESS_CONTROL";
-               case VK_SHADER_STAGE_TESS_EVALUATION:   return "VK_SHADER_STAGE_TESS_EVALUATION";
-               case VK_SHADER_STAGE_GEOMETRY:                  return "VK_SHADER_STAGE_GEOMETRY";
-               case VK_SHADER_STAGE_FRAGMENT:                  return "VK_SHADER_STAGE_FRAGMENT";
-               case VK_SHADER_STAGE_COMPUTE:                   return "VK_SHADER_STAGE_COMPUTE";
-               default:                                                                return DE_NULL;
+               case VK_CMD_BUFFER_LEVEL_PRIMARY:       return "VK_CMD_BUFFER_LEVEL_PRIMARY";
+               case VK_CMD_BUFFER_LEVEL_SECONDARY:     return "VK_CMD_BUFFER_LEVEL_SECONDARY";
+               default:                                                        return DE_NULL;
        }
 }
 
-const char* getStructureTypeName (VkStructureType value)
+const char* getIndexTypeName (VkIndexType value)
 {
        switch (value)
        {
-               case VK_STRUCTURE_TYPE_APPLICATION_INFO:                                        return "VK_STRUCTURE_TYPE_APPLICATION_INFO";
-               case VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO:                                      return "VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO";
-               case VK_STRUCTURE_TYPE_MEMORY_ALLOC_INFO:                                       return "VK_STRUCTURE_TYPE_MEMORY_ALLOC_INFO";
-               case VK_STRUCTURE_TYPE_MEMORY_OPEN_INFO:                                        return "VK_STRUCTURE_TYPE_MEMORY_OPEN_INFO";
-               case VK_STRUCTURE_TYPE_PEER_MEMORY_OPEN_INFO:                           return "VK_STRUCTURE_TYPE_PEER_MEMORY_OPEN_INFO";
-               case VK_STRUCTURE_TYPE_BUFFER_VIEW_ATTACH_INFO:                         return "VK_STRUCTURE_TYPE_BUFFER_VIEW_ATTACH_INFO";
-               case VK_STRUCTURE_TYPE_IMAGE_VIEW_ATTACH_INFO:                          return "VK_STRUCTURE_TYPE_IMAGE_VIEW_ATTACH_INFO";
-               case VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO:                          return "VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO";
-               case VK_STRUCTURE_TYPE_COLOR_ATTACHMENT_VIEW_CREATE_INFO:       return "VK_STRUCTURE_TYPE_COLOR_ATTACHMENT_VIEW_CREATE_INFO";
-               case VK_STRUCTURE_TYPE_DEPTH_STENCIL_VIEW_CREATE_INFO:          return "VK_STRUCTURE_TYPE_DEPTH_STENCIL_VIEW_CREATE_INFO";
-               case VK_STRUCTURE_TYPE_SHADER_CREATE_INFO:                                      return "VK_STRUCTURE_TYPE_SHADER_CREATE_INFO";
-               case VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO:            return "VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO";
-               case VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO:                                     return "VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO";
-               case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO:       return "VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO";
-               case VK_STRUCTURE_TYPE_DYNAMIC_VP_STATE_CREATE_INFO:            return "VK_STRUCTURE_TYPE_DYNAMIC_VP_STATE_CREATE_INFO";
-               case VK_STRUCTURE_TYPE_DYNAMIC_RS_STATE_CREATE_INFO:            return "VK_STRUCTURE_TYPE_DYNAMIC_RS_STATE_CREATE_INFO";
-               case VK_STRUCTURE_TYPE_DYNAMIC_CB_STATE_CREATE_INFO:            return "VK_STRUCTURE_TYPE_DYNAMIC_CB_STATE_CREATE_INFO";
-               case VK_STRUCTURE_TYPE_DYNAMIC_DS_STATE_CREATE_INFO:            return "VK_STRUCTURE_TYPE_DYNAMIC_DS_STATE_CREATE_INFO";
-               case VK_STRUCTURE_TYPE_CMD_BUFFER_CREATE_INFO:                          return "VK_STRUCTURE_TYPE_CMD_BUFFER_CREATE_INFO";
-               case VK_STRUCTURE_TYPE_EVENT_CREATE_INFO:                                       return "VK_STRUCTURE_TYPE_EVENT_CREATE_INFO";
-               case VK_STRUCTURE_TYPE_FENCE_CREATE_INFO:                                       return "VK_STRUCTURE_TYPE_FENCE_CREATE_INFO";
-               case VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO:                           return "VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO";
-               case VK_STRUCTURE_TYPE_SEMAPHORE_OPEN_INFO:                                     return "VK_STRUCTURE_TYPE_SEMAPHORE_OPEN_INFO";
-               case VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO:                          return "VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO";
-               case VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO:       return "VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO";
-               case VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO:           return "VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO";
-               case VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_CREATE_INFO:       return "VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_CREATE_INFO";
-               case VK_STRUCTURE_TYPE_PIPELINE_IA_STATE_CREATE_INFO:           return "VK_STRUCTURE_TYPE_PIPELINE_IA_STATE_CREATE_INFO";
-               case VK_STRUCTURE_TYPE_PIPELINE_TESS_STATE_CREATE_INFO:         return "VK_STRUCTURE_TYPE_PIPELINE_TESS_STATE_CREATE_INFO";
-               case VK_STRUCTURE_TYPE_PIPELINE_VP_STATE_CREATE_INFO:           return "VK_STRUCTURE_TYPE_PIPELINE_VP_STATE_CREATE_INFO";
-               case VK_STRUCTURE_TYPE_PIPELINE_RS_STATE_CREATE_INFO:           return "VK_STRUCTURE_TYPE_PIPELINE_RS_STATE_CREATE_INFO";
-               case VK_STRUCTURE_TYPE_PIPELINE_MS_STATE_CREATE_INFO:           return "VK_STRUCTURE_TYPE_PIPELINE_MS_STATE_CREATE_INFO";
-               case VK_STRUCTURE_TYPE_PIPELINE_CB_STATE_CREATE_INFO:           return "VK_STRUCTURE_TYPE_PIPELINE_CB_STATE_CREATE_INFO";
-               case VK_STRUCTURE_TYPE_PIPELINE_DS_STATE_CREATE_INFO:           return "VK_STRUCTURE_TYPE_PIPELINE_DS_STATE_CREATE_INFO";
-               case VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO:                                       return "VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO";
-               case VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO:                                      return "VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO";
-               case VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO:                         return "VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO";
-               case VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO:                         return "VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO";
-               case VK_STRUCTURE_TYPE_CMD_BUFFER_BEGIN_INFO:                           return "VK_STRUCTURE_TYPE_CMD_BUFFER_BEGIN_INFO";
-               case VK_STRUCTURE_TYPE_CMD_BUFFER_GRAPHICS_BEGIN_INFO:          return "VK_STRUCTURE_TYPE_CMD_BUFFER_GRAPHICS_BEGIN_INFO";
-               case VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO:                         return "VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO";
-               case VK_STRUCTURE_TYPE_LAYER_CREATE_INFO:                                       return "VK_STRUCTURE_TYPE_LAYER_CREATE_INFO";
-               case VK_STRUCTURE_TYPE_MEMORY_BARRIER:                                          return "VK_STRUCTURE_TYPE_MEMORY_BARRIER";
-               case VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER:                           return "VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER";
-               case VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER:                            return "VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER";
-               case VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO:                     return "VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO";
-               case VK_STRUCTURE_TYPE_UPDATE_SAMPLERS:                                         return "VK_STRUCTURE_TYPE_UPDATE_SAMPLERS";
-               case VK_STRUCTURE_TYPE_UPDATE_SAMPLER_TEXTURES:                         return "VK_STRUCTURE_TYPE_UPDATE_SAMPLER_TEXTURES";
-               case VK_STRUCTURE_TYPE_UPDATE_IMAGES:                                           return "VK_STRUCTURE_TYPE_UPDATE_IMAGES";
-               case VK_STRUCTURE_TYPE_UPDATE_BUFFERS:                                          return "VK_STRUCTURE_TYPE_UPDATE_BUFFERS";
-               case VK_STRUCTURE_TYPE_UPDATE_AS_COPY:                                          return "VK_STRUCTURE_TYPE_UPDATE_AS_COPY";
-               case VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO:                            return "VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO";
-               case VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO:                     return "VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO";
-               default:                                                                                                        return DE_NULL;
+               case VK_INDEX_TYPE_UINT16:      return "VK_INDEX_TYPE_UINT16";
+               case VK_INDEX_TYPE_UINT32:      return "VK_INDEX_TYPE_UINT32";
+               default:                                        return DE_NULL;
        }
 }
 
-const char* getObjectTypeName (VkObjectType value)
+const char* getTimestampTypeName (VkTimestampType value)
 {
        switch (value)
        {
-               case VK_OBJECT_TYPE_INSTANCE:                           return "VK_OBJECT_TYPE_INSTANCE";
-               case VK_OBJECT_TYPE_PHYSICAL_DEVICE:            return "VK_OBJECT_TYPE_PHYSICAL_DEVICE";
-               case VK_OBJECT_TYPE_DEVICE:                                     return "VK_OBJECT_TYPE_DEVICE";
-               case VK_OBJECT_TYPE_QUEUE:                                      return "VK_OBJECT_TYPE_QUEUE";
-               case VK_OBJECT_TYPE_COMMAND_BUFFER:                     return "VK_OBJECT_TYPE_COMMAND_BUFFER";
-               case VK_OBJECT_TYPE_DEVICE_MEMORY:                      return "VK_OBJECT_TYPE_DEVICE_MEMORY";
-               case VK_OBJECT_TYPE_BUFFER:                                     return "VK_OBJECT_TYPE_BUFFER";
-               case VK_OBJECT_TYPE_BUFFER_VIEW:                        return "VK_OBJECT_TYPE_BUFFER_VIEW";
-               case VK_OBJECT_TYPE_IMAGE:                                      return "VK_OBJECT_TYPE_IMAGE";
-               case VK_OBJECT_TYPE_IMAGE_VIEW:                         return "VK_OBJECT_TYPE_IMAGE_VIEW";
-               case VK_OBJECT_TYPE_COLOR_ATTACHMENT_VIEW:      return "VK_OBJECT_TYPE_COLOR_ATTACHMENT_VIEW";
-               case VK_OBJECT_TYPE_DEPTH_STENCIL_VIEW:         return "VK_OBJECT_TYPE_DEPTH_STENCIL_VIEW";
-               case VK_OBJECT_TYPE_SHADER:                                     return "VK_OBJECT_TYPE_SHADER";
-               case VK_OBJECT_TYPE_PIPELINE:                           return "VK_OBJECT_TYPE_PIPELINE";
-               case VK_OBJECT_TYPE_PIPELINE_LAYOUT:            return "VK_OBJECT_TYPE_PIPELINE_LAYOUT";
-               case VK_OBJECT_TYPE_SAMPLER:                            return "VK_OBJECT_TYPE_SAMPLER";
-               case VK_OBJECT_TYPE_DESCRIPTOR_SET:                     return "VK_OBJECT_TYPE_DESCRIPTOR_SET";
-               case VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT:      return "VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT";
-               case VK_OBJECT_TYPE_DESCRIPTOR_POOL:            return "VK_OBJECT_TYPE_DESCRIPTOR_POOL";
-               case VK_OBJECT_TYPE_DYNAMIC_VP_STATE:           return "VK_OBJECT_TYPE_DYNAMIC_VP_STATE";
-               case VK_OBJECT_TYPE_DYNAMIC_RS_STATE:           return "VK_OBJECT_TYPE_DYNAMIC_RS_STATE";
-               case VK_OBJECT_TYPE_DYNAMIC_CB_STATE:           return "VK_OBJECT_TYPE_DYNAMIC_CB_STATE";
-               case VK_OBJECT_TYPE_DYNAMIC_DS_STATE:           return "VK_OBJECT_TYPE_DYNAMIC_DS_STATE";
-               case VK_OBJECT_TYPE_FENCE:                                      return "VK_OBJECT_TYPE_FENCE";
-               case VK_OBJECT_TYPE_SEMAPHORE:                          return "VK_OBJECT_TYPE_SEMAPHORE";
-               case VK_OBJECT_TYPE_EVENT:                                      return "VK_OBJECT_TYPE_EVENT";
-               case VK_OBJECT_TYPE_QUERY_POOL:                         return "VK_OBJECT_TYPE_QUERY_POOL";
-               case VK_OBJECT_TYPE_FRAMEBUFFER:                        return "VK_OBJECT_TYPE_FRAMEBUFFER";
-               case VK_OBJECT_TYPE_RENDER_PASS:                        return "VK_OBJECT_TYPE_RENDER_PASS";
-               default:                                                                        return DE_NULL;
+               case VK_TIMESTAMP_TYPE_TOP:             return "VK_TIMESTAMP_TYPE_TOP";
+               case VK_TIMESTAMP_TYPE_BOTTOM:  return "VK_TIMESTAMP_TYPE_BOTTOM";
+               default:                                                return DE_NULL;
        }
 }
 
-const char* getResultName (VkResult value)
+const char* getRenderPassContentsName (VkRenderPassContents value)
 {
        switch (value)
        {
-               case VK_SUCCESS:                                                                return "VK_SUCCESS";
-               case VK_UNSUPPORTED:                                                    return "VK_UNSUPPORTED";
-               case VK_NOT_READY:                                                              return "VK_NOT_READY";
-               case VK_TIMEOUT:                                                                return "VK_TIMEOUT";
-               case VK_EVENT_SET:                                                              return "VK_EVENT_SET";
-               case VK_EVENT_RESET:                                                    return "VK_EVENT_RESET";
-               case VK_ERROR_UNKNOWN:                                                  return "VK_ERROR_UNKNOWN";
-               case VK_ERROR_UNAVAILABLE:                                              return "VK_ERROR_UNAVAILABLE";
-               case VK_ERROR_INITIALIZATION_FAILED:                    return "VK_ERROR_INITIALIZATION_FAILED";
-               case VK_ERROR_OUT_OF_HOST_MEMORY:                               return "VK_ERROR_OUT_OF_HOST_MEMORY";
-               case VK_ERROR_OUT_OF_DEVICE_MEMORY:                             return "VK_ERROR_OUT_OF_DEVICE_MEMORY";
-               case VK_ERROR_DEVICE_ALREADY_CREATED:                   return "VK_ERROR_DEVICE_ALREADY_CREATED";
-               case VK_ERROR_DEVICE_LOST:                                              return "VK_ERROR_DEVICE_LOST";
-               case VK_ERROR_INVALID_POINTER:                                  return "VK_ERROR_INVALID_POINTER";
-               case VK_ERROR_INVALID_VALUE:                                    return "VK_ERROR_INVALID_VALUE";
-               case VK_ERROR_INVALID_HANDLE:                                   return "VK_ERROR_INVALID_HANDLE";
-               case VK_ERROR_INVALID_ORDINAL:                                  return "VK_ERROR_INVALID_ORDINAL";
-               case VK_ERROR_INVALID_MEMORY_SIZE:                              return "VK_ERROR_INVALID_MEMORY_SIZE";
-               case VK_ERROR_INVALID_EXTENSION:                                return "VK_ERROR_INVALID_EXTENSION";
-               case VK_ERROR_INVALID_FLAGS:                                    return "VK_ERROR_INVALID_FLAGS";
-               case VK_ERROR_INVALID_ALIGNMENT:                                return "VK_ERROR_INVALID_ALIGNMENT";
-               case VK_ERROR_INVALID_FORMAT:                                   return "VK_ERROR_INVALID_FORMAT";
-               case VK_ERROR_INVALID_IMAGE:                                    return "VK_ERROR_INVALID_IMAGE";
-               case VK_ERROR_INVALID_DESCRIPTOR_SET_DATA:              return "VK_ERROR_INVALID_DESCRIPTOR_SET_DATA";
-               case VK_ERROR_INVALID_QUEUE_TYPE:                               return "VK_ERROR_INVALID_QUEUE_TYPE";
-               case VK_ERROR_INVALID_OBJECT_TYPE:                              return "VK_ERROR_INVALID_OBJECT_TYPE";
-               case VK_ERROR_UNSUPPORTED_SHADER_IL_VERSION:    return "VK_ERROR_UNSUPPORTED_SHADER_IL_VERSION";
-               case VK_ERROR_BAD_SHADER_CODE:                                  return "VK_ERROR_BAD_SHADER_CODE";
-               case VK_ERROR_BAD_PIPELINE_DATA:                                return "VK_ERROR_BAD_PIPELINE_DATA";
-               case VK_ERROR_TOO_MANY_MEMORY_REFERENCES:               return "VK_ERROR_TOO_MANY_MEMORY_REFERENCES";
-               case VK_ERROR_NOT_MAPPABLE:                                             return "VK_ERROR_NOT_MAPPABLE";
-               case VK_ERROR_MEMORY_MAP_FAILED:                                return "VK_ERROR_MEMORY_MAP_FAILED";
-               case VK_ERROR_MEMORY_UNMAP_FAILED:                              return "VK_ERROR_MEMORY_UNMAP_FAILED";
-               case VK_ERROR_INCOMPATIBLE_DEVICE:                              return "VK_ERROR_INCOMPATIBLE_DEVICE";
-               case VK_ERROR_INCOMPATIBLE_DRIVER:                              return "VK_ERROR_INCOMPATIBLE_DRIVER";
-               case VK_ERROR_INCOMPLETE_COMMAND_BUFFER:                return "VK_ERROR_INCOMPLETE_COMMAND_BUFFER";
-               case VK_ERROR_BUILDING_COMMAND_BUFFER:                  return "VK_ERROR_BUILDING_COMMAND_BUFFER";
-               case VK_ERROR_MEMORY_NOT_BOUND:                                 return "VK_ERROR_MEMORY_NOT_BOUND";
-               case VK_ERROR_INCOMPATIBLE_QUEUE:                               return "VK_ERROR_INCOMPATIBLE_QUEUE";
-               case VK_ERROR_NOT_SHAREABLE:                                    return "VK_ERROR_NOT_SHAREABLE";
-               default:                                                                                return DE_NULL;
+               case VK_RENDER_PASS_CONTENTS_INLINE:                            return "VK_RENDER_PASS_CONTENTS_INLINE";
+               case VK_RENDER_PASS_CONTENTS_SECONDARY_CMD_BUFFERS:     return "VK_RENDER_PASS_CONTENTS_SECONDARY_CMD_BUFFERS";
+               default:                                                                                        return DE_NULL;
        }
 }
 
-tcu::Format::Bitfield<32> getDeviceCreateFlagsStr (VkDeviceCreateFlags value)
+tcu::Format::Bitfield<32> getFormatFeatureFlagsStr (VkFormatFeatureFlags value)
 {
        static const tcu::Format::BitDesc s_desc[] =
        {
-               tcu::Format::BitDesc(VK_DEVICE_CREATE_VALIDATION_BIT,                           "VK_DEVICE_CREATE_VALIDATION_BIT"),
-               tcu::Format::BitDesc(VK_DEVICE_CREATE_MULTI_DEVICE_IQ_MATCH_BIT,        "VK_DEVICE_CREATE_MULTI_DEVICE_IQ_MATCH_BIT"),
+               tcu::Format::BitDesc(VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT,                               "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT"),
+               tcu::Format::BitDesc(VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT,                               "VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT"),
+               tcu::Format::BitDesc(VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT,                "VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT"),
+               tcu::Format::BitDesc(VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT,                "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT"),
+               tcu::Format::BitDesc(VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT,                "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT"),
+               tcu::Format::BitDesc(VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT, "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT"),
+               tcu::Format::BitDesc(VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT,                               "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT"),
+               tcu::Format::BitDesc(VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT,                    "VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT"),
+               tcu::Format::BitDesc(VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT,              "VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT"),
+               tcu::Format::BitDesc(VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT,    "VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT"),
+               tcu::Format::BitDesc(VK_FORMAT_FEATURE_CONVERSION_BIT,                                  "VK_FORMAT_FEATURE_CONVERSION_BIT"),
+       };
+       return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
+}
+
+tcu::Format::Bitfield<32> getImageUsageFlagsStr (VkImageUsageFlags value)
+{
+       static const tcu::Format::BitDesc s_desc[] =
+       {
+               tcu::Format::BitDesc(VK_IMAGE_USAGE_GENERAL,                                    "VK_IMAGE_USAGE_GENERAL"),
+               tcu::Format::BitDesc(VK_IMAGE_USAGE_TRANSFER_SOURCE_BIT,                "VK_IMAGE_USAGE_TRANSFER_SOURCE_BIT"),
+               tcu::Format::BitDesc(VK_IMAGE_USAGE_TRANSFER_DESTINATION_BIT,   "VK_IMAGE_USAGE_TRANSFER_DESTINATION_BIT"),
+               tcu::Format::BitDesc(VK_IMAGE_USAGE_SAMPLED_BIT,                                "VK_IMAGE_USAGE_SAMPLED_BIT"),
+               tcu::Format::BitDesc(VK_IMAGE_USAGE_STORAGE_BIT,                                "VK_IMAGE_USAGE_STORAGE_BIT"),
+               tcu::Format::BitDesc(VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT,               "VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT"),
+               tcu::Format::BitDesc(VK_IMAGE_USAGE_DEPTH_STENCIL_BIT,                  "VK_IMAGE_USAGE_DEPTH_STENCIL_BIT"),
+               tcu::Format::BitDesc(VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT,   "VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT"),
+               tcu::Format::BitDesc(VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT,               "VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT"),
        };
        return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
 }
@@ -948,11 +825,11 @@ tcu::Format::Bitfield<32> getQueueFlagsStr (VkQueueFlags value)
 {
        static const tcu::Format::BitDesc s_desc[] =
        {
-               tcu::Format::BitDesc(VK_QUEUE_GRAPHICS_BIT,     "VK_QUEUE_GRAPHICS_BIT"),
-               tcu::Format::BitDesc(VK_QUEUE_COMPUTE_BIT,      "VK_QUEUE_COMPUTE_BIT"),
-               tcu::Format::BitDesc(VK_QUEUE_DMA_BIT,          "VK_QUEUE_DMA_BIT"),
-               tcu::Format::BitDesc(VK_QUEUE_MEMMGR_BIT,       "VK_QUEUE_MEMMGR_BIT"),
-               tcu::Format::BitDesc(VK_QUEUE_EXTENDED_BIT,     "VK_QUEUE_EXTENDED_BIT"),
+               tcu::Format::BitDesc(VK_QUEUE_GRAPHICS_BIT,                     "VK_QUEUE_GRAPHICS_BIT"),
+               tcu::Format::BitDesc(VK_QUEUE_COMPUTE_BIT,                      "VK_QUEUE_COMPUTE_BIT"),
+               tcu::Format::BitDesc(VK_QUEUE_DMA_BIT,                          "VK_QUEUE_DMA_BIT"),
+               tcu::Format::BitDesc(VK_QUEUE_SPARSE_MEMMGR_BIT,        "VK_QUEUE_SPARSE_MEMMGR_BIT"),
+               tcu::Format::BitDesc(VK_QUEUE_EXTENDED_BIT,                     "VK_QUEUE_EXTENDED_BIT"),
        };
        return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
 }
@@ -961,43 +838,91 @@ tcu::Format::Bitfield<32> getMemoryPropertyFlagsStr (VkMemoryPropertyFlags value
 {
        static const tcu::Format::BitDesc s_desc[] =
        {
-               tcu::Format::BitDesc(VK_MEMORY_PROPERTY_DEVICE_ONLY,                            "VK_MEMORY_PROPERTY_DEVICE_ONLY"),
-               tcu::Format::BitDesc(VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT,                       "VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT"),
-               tcu::Format::BitDesc(VK_MEMORY_PROPERTY_HOST_DEVICE_COHERENT_BIT,       "VK_MEMORY_PROPERTY_HOST_DEVICE_COHERENT_BIT"),
-               tcu::Format::BitDesc(VK_MEMORY_PROPERTY_HOST_UNCACHED_BIT,                      "VK_MEMORY_PROPERTY_HOST_UNCACHED_BIT"),
-               tcu::Format::BitDesc(VK_MEMORY_PROPERTY_HOST_WRITE_COMBINED_BIT,        "VK_MEMORY_PROPERTY_HOST_WRITE_COMBINED_BIT"),
-               tcu::Format::BitDesc(VK_MEMORY_PROPERTY_PREFER_HOST_LOCAL,                      "VK_MEMORY_PROPERTY_PREFER_HOST_LOCAL"),
-               tcu::Format::BitDesc(VK_MEMORY_PROPERTY_SHAREABLE_BIT,                          "VK_MEMORY_PROPERTY_SHAREABLE_BIT"),
+               tcu::Format::BitDesc(VK_MEMORY_PROPERTY_DEVICE_ONLY,                            "VK_MEMORY_PROPERTY_DEVICE_ONLY"),
+               tcu::Format::BitDesc(VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT,                       "VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT"),
+               tcu::Format::BitDesc(VK_MEMORY_PROPERTY_HOST_NON_COHERENT_BIT,          "VK_MEMORY_PROPERTY_HOST_NON_COHERENT_BIT"),
+               tcu::Format::BitDesc(VK_MEMORY_PROPERTY_HOST_UNCACHED_BIT,                      "VK_MEMORY_PROPERTY_HOST_UNCACHED_BIT"),
+               tcu::Format::BitDesc(VK_MEMORY_PROPERTY_HOST_WRITE_COMBINED_BIT,        "VK_MEMORY_PROPERTY_HOST_WRITE_COMBINED_BIT"),
+               tcu::Format::BitDesc(VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT,           "VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT"),
+       };
+       return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
+}
+
+tcu::Format::Bitfield<32> getMemoryHeapFlagsStr (VkMemoryHeapFlags value)
+{
+       static const tcu::Format::BitDesc s_desc[] =
+       {
+               tcu::Format::BitDesc(VK_MEMORY_HEAP_HOST_LOCAL, "VK_MEMORY_HEAP_HOST_LOCAL"),
+       };
+       return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
+}
+
+tcu::Format::Bitfield<32> getDeviceCreateFlagsStr (VkDeviceCreateFlags value)
+{
+       static const tcu::Format::BitDesc s_desc[] =
+       {
+               tcu::Format::BitDesc(VK_DEVICE_CREATE_VALIDATION_BIT,   "VK_DEVICE_CREATE_VALIDATION_BIT"),
+       };
+       return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
+}
+
+tcu::Format::Bitfield<32> getSparseImageFormatFlagsStr (VkSparseImageFormatFlags value)
+{
+       static const tcu::Format::BitDesc s_desc[] =
+       {
+               tcu::Format::BitDesc(VK_SPARSE_IMAGE_FMT_SINGLE_MIPTAIL_BIT,    "VK_SPARSE_IMAGE_FMT_SINGLE_MIPTAIL_BIT"),
+               tcu::Format::BitDesc(VK_SPARSE_IMAGE_FMT_ALIGNED_MIP_SIZE_BIT,  "VK_SPARSE_IMAGE_FMT_ALIGNED_MIP_SIZE_BIT"),
+               tcu::Format::BitDesc(VK_SPARSE_IMAGE_FMT_NONSTD_BLOCK_SIZE_BIT, "VK_SPARSE_IMAGE_FMT_NONSTD_BLOCK_SIZE_BIT"),
+       };
+       return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
+}
+
+tcu::Format::Bitfield<32> getSparseMemoryBindFlagsStr (VkSparseMemoryBindFlags value)
+{
+       static const tcu::Format::BitDesc s_desc[] =
+       {
+               tcu::Format::BitDesc(VK_SPARSE_MEMORY_BIND_REPLICATE_64KIB_BLOCK_BIT,   "VK_SPARSE_MEMORY_BIND_REPLICATE_64KIB_BLOCK_BIT"),
+       };
+       return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
+}
+
+tcu::Format::Bitfield<32> getFenceCreateFlagsStr (VkFenceCreateFlags value)
+{
+       static const tcu::Format::BitDesc s_desc[] =
+       {
+               tcu::Format::BitDesc(VK_FENCE_CREATE_SIGNALED_BIT,      "VK_FENCE_CREATE_SIGNALED_BIT"),
        };
        return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
 }
 
-tcu::Format::Bitfield<32> getMemoryOutputFlagsStr (VkMemoryOutputFlags value)
+tcu::Format::Bitfield<32> getQueryPipelineStatisticFlagsStr (VkQueryPipelineStatisticFlags value)
 {
        static const tcu::Format::BitDesc s_desc[] =
        {
-               tcu::Format::BitDesc(VK_MEMORY_OUTPUT_CPU_WRITE_BIT,                            "VK_MEMORY_OUTPUT_CPU_WRITE_BIT"),
-               tcu::Format::BitDesc(VK_MEMORY_OUTPUT_SHADER_WRITE_BIT,                         "VK_MEMORY_OUTPUT_SHADER_WRITE_BIT"),
-               tcu::Format::BitDesc(VK_MEMORY_OUTPUT_COLOR_ATTACHMENT_BIT,                     "VK_MEMORY_OUTPUT_COLOR_ATTACHMENT_BIT"),
-               tcu::Format::BitDesc(VK_MEMORY_OUTPUT_DEPTH_STENCIL_ATTACHMENT_BIT,     "VK_MEMORY_OUTPUT_DEPTH_STENCIL_ATTACHMENT_BIT"),
-               tcu::Format::BitDesc(VK_MEMORY_OUTPUT_TRANSFER_BIT,                                     "VK_MEMORY_OUTPUT_TRANSFER_BIT"),
+               tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_IA_VERTICES_BIT,               "VK_QUERY_PIPELINE_STATISTIC_IA_VERTICES_BIT"),
+               tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_IA_PRIMITIVES_BIT,             "VK_QUERY_PIPELINE_STATISTIC_IA_PRIMITIVES_BIT"),
+               tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_VS_INVOCATIONS_BIT,    "VK_QUERY_PIPELINE_STATISTIC_VS_INVOCATIONS_BIT"),
+               tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_GS_INVOCATIONS_BIT,    "VK_QUERY_PIPELINE_STATISTIC_GS_INVOCATIONS_BIT"),
+               tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_GS_PRIMITIVES_BIT,             "VK_QUERY_PIPELINE_STATISTIC_GS_PRIMITIVES_BIT"),
+               tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_C_INVOCATIONS_BIT,             "VK_QUERY_PIPELINE_STATISTIC_C_INVOCATIONS_BIT"),
+               tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_C_PRIMITIVES_BIT,              "VK_QUERY_PIPELINE_STATISTIC_C_PRIMITIVES_BIT"),
+               tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_FS_INVOCATIONS_BIT,    "VK_QUERY_PIPELINE_STATISTIC_FS_INVOCATIONS_BIT"),
+               tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_TCS_PATCHES_BIT,               "VK_QUERY_PIPELINE_STATISTIC_TCS_PATCHES_BIT"),
+               tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_TES_INVOCATIONS_BIT,   "VK_QUERY_PIPELINE_STATISTIC_TES_INVOCATIONS_BIT"),
+               tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_CS_INVOCATIONS_BIT,    "VK_QUERY_PIPELINE_STATISTIC_CS_INVOCATIONS_BIT"),
        };
        return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
 }
 
-tcu::Format::Bitfield<32> getMemoryInputFlagsStr (VkMemoryInputFlags value)
+tcu::Format::Bitfield<32> getQueryResultFlagsStr (VkQueryResultFlags value)
 {
        static const tcu::Format::BitDesc s_desc[] =
        {
-               tcu::Format::BitDesc(VK_MEMORY_INPUT_CPU_READ_BIT,                                      "VK_MEMORY_INPUT_CPU_READ_BIT"),
-               tcu::Format::BitDesc(VK_MEMORY_INPUT_INDIRECT_COMMAND_BIT,                      "VK_MEMORY_INPUT_INDIRECT_COMMAND_BIT"),
-               tcu::Format::BitDesc(VK_MEMORY_INPUT_INDEX_FETCH_BIT,                           "VK_MEMORY_INPUT_INDEX_FETCH_BIT"),
-               tcu::Format::BitDesc(VK_MEMORY_INPUT_VERTEX_ATTRIBUTE_FETCH_BIT,        "VK_MEMORY_INPUT_VERTEX_ATTRIBUTE_FETCH_BIT"),
-               tcu::Format::BitDesc(VK_MEMORY_INPUT_UNIFORM_READ_BIT,                          "VK_MEMORY_INPUT_UNIFORM_READ_BIT"),
-               tcu::Format::BitDesc(VK_MEMORY_INPUT_SHADER_READ_BIT,                           "VK_MEMORY_INPUT_SHADER_READ_BIT"),
-               tcu::Format::BitDesc(VK_MEMORY_INPUT_COLOR_ATTACHMENT_BIT,                      "VK_MEMORY_INPUT_COLOR_ATTACHMENT_BIT"),
-               tcu::Format::BitDesc(VK_MEMORY_INPUT_DEPTH_STENCIL_ATTACHMENT_BIT,      "VK_MEMORY_INPUT_DEPTH_STENCIL_ATTACHMENT_BIT"),
-               tcu::Format::BitDesc(VK_MEMORY_INPUT_TRANSFER_BIT,                                      "VK_MEMORY_INPUT_TRANSFER_BIT"),
+               tcu::Format::BitDesc(VK_QUERY_RESULT_DEFAULT,                           "VK_QUERY_RESULT_DEFAULT"),
+               tcu::Format::BitDesc(VK_QUERY_RESULT_64_BIT,                            "VK_QUERY_RESULT_64_BIT"),
+               tcu::Format::BitDesc(VK_QUERY_RESULT_WAIT_BIT,                          "VK_QUERY_RESULT_WAIT_BIT"),
+               tcu::Format::BitDesc(VK_QUERY_RESULT_WITH_AVAILABILITY_BIT,     "VK_QUERY_RESULT_WITH_AVAILABILITY_BIT"),
+               tcu::Format::BitDesc(VK_QUERY_RESULT_PARTIAL_BIT,                       "VK_QUERY_RESULT_PARTIAL_BIT"),
        };
        return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
 }
@@ -1024,63 +949,45 @@ tcu::Format::Bitfield<32> getBufferCreateFlagsStr (VkBufferCreateFlags value)
 {
        static const tcu::Format::BitDesc s_desc[] =
        {
-               tcu::Format::BitDesc(VK_BUFFER_CREATE_SHAREABLE_BIT,    "VK_BUFFER_CREATE_SHAREABLE_BIT"),
-               tcu::Format::BitDesc(VK_BUFFER_CREATE_SPARSE_BIT,               "VK_BUFFER_CREATE_SPARSE_BIT"),
-       };
-       return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
-}
-
-tcu::Format::Bitfield<32> getShaderStageFlagsStr (VkShaderStageFlags value)
-{
-       static const tcu::Format::BitDesc s_desc[] =
-       {
-               tcu::Format::BitDesc(VK_SHADER_STAGE_VERTEX_BIT,                        "VK_SHADER_STAGE_VERTEX_BIT"),
-               tcu::Format::BitDesc(VK_SHADER_STAGE_TESS_CONTROL_BIT,          "VK_SHADER_STAGE_TESS_CONTROL_BIT"),
-               tcu::Format::BitDesc(VK_SHADER_STAGE_TESS_EVALUATION_BIT,       "VK_SHADER_STAGE_TESS_EVALUATION_BIT"),
-               tcu::Format::BitDesc(VK_SHADER_STAGE_GEOMETRY_BIT,                      "VK_SHADER_STAGE_GEOMETRY_BIT"),
-               tcu::Format::BitDesc(VK_SHADER_STAGE_FRAGMENT_BIT,                      "VK_SHADER_STAGE_FRAGMENT_BIT"),
-               tcu::Format::BitDesc(VK_SHADER_STAGE_COMPUTE_BIT,                       "VK_SHADER_STAGE_COMPUTE_BIT"),
-               tcu::Format::BitDesc(VK_SHADER_STAGE_ALL,                                       "VK_SHADER_STAGE_ALL"),
+               tcu::Format::BitDesc(VK_BUFFER_CREATE_SPARSE_BIT,                       "VK_BUFFER_CREATE_SPARSE_BIT"),
+               tcu::Format::BitDesc(VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT,     "VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT"),
+               tcu::Format::BitDesc(VK_BUFFER_CREATE_SPARSE_ALIASED_BIT,       "VK_BUFFER_CREATE_SPARSE_ALIASED_BIT"),
        };
        return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
 }
 
-tcu::Format::Bitfield<32> getImageUsageFlagsStr (VkImageUsageFlags value)
+tcu::Format::Bitfield<32> getImageCreateFlagsStr (VkImageCreateFlags value)
 {
        static const tcu::Format::BitDesc s_desc[] =
        {
-               tcu::Format::BitDesc(VK_IMAGE_USAGE_GENERAL,                                    "VK_IMAGE_USAGE_GENERAL"),
-               tcu::Format::BitDesc(VK_IMAGE_USAGE_TRANSFER_SOURCE_BIT,                "VK_IMAGE_USAGE_TRANSFER_SOURCE_BIT"),
-               tcu::Format::BitDesc(VK_IMAGE_USAGE_TRANSFER_DESTINATION_BIT,   "VK_IMAGE_USAGE_TRANSFER_DESTINATION_BIT"),
-               tcu::Format::BitDesc(VK_IMAGE_USAGE_SAMPLED_BIT,                                "VK_IMAGE_USAGE_SAMPLED_BIT"),
-               tcu::Format::BitDesc(VK_IMAGE_USAGE_STORAGE_BIT,                                "VK_IMAGE_USAGE_STORAGE_BIT"),
-               tcu::Format::BitDesc(VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT,               "VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT"),
-               tcu::Format::BitDesc(VK_IMAGE_USAGE_DEPTH_STENCIL_BIT,                  "VK_IMAGE_USAGE_DEPTH_STENCIL_BIT"),
-               tcu::Format::BitDesc(VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT,   "VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT"),
+               tcu::Format::BitDesc(VK_IMAGE_CREATE_SPARSE_BIT,                        "VK_IMAGE_CREATE_SPARSE_BIT"),
+               tcu::Format::BitDesc(VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT,      "VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT"),
+               tcu::Format::BitDesc(VK_IMAGE_CREATE_SPARSE_ALIASED_BIT,        "VK_IMAGE_CREATE_SPARSE_ALIASED_BIT"),
+               tcu::Format::BitDesc(VK_IMAGE_CREATE_INVARIANT_DATA_BIT,        "VK_IMAGE_CREATE_INVARIANT_DATA_BIT"),
+               tcu::Format::BitDesc(VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT,        "VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT"),
+               tcu::Format::BitDesc(VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT,       "VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT"),
        };
        return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
 }
 
-tcu::Format::Bitfield<32> getImageCreateFlagsStr (VkImageCreateFlags value)
+tcu::Format::Bitfield<32> getAttachmentViewCreateFlagsStr (VkAttachmentViewCreateFlags value)
 {
        static const tcu::Format::BitDesc s_desc[] =
        {
-               tcu::Format::BitDesc(VK_IMAGE_CREATE_INVARIANT_DATA_BIT,        "VK_IMAGE_CREATE_INVARIANT_DATA_BIT"),
-               tcu::Format::BitDesc(VK_IMAGE_CREATE_CLONEABLE_BIT,                     "VK_IMAGE_CREATE_CLONEABLE_BIT"),
-               tcu::Format::BitDesc(VK_IMAGE_CREATE_SHAREABLE_BIT,                     "VK_IMAGE_CREATE_SHAREABLE_BIT"),
-               tcu::Format::BitDesc(VK_IMAGE_CREATE_SPARSE_BIT,                        "VK_IMAGE_CREATE_SPARSE_BIT"),
-               tcu::Format::BitDesc(VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT,        "VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT"),
-               tcu::Format::BitDesc(VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT,       "VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT"),
+               tcu::Format::BitDesc(VK_ATTACHMENT_VIEW_CREATE_READ_ONLY_DEPTH_BIT,             "VK_ATTACHMENT_VIEW_CREATE_READ_ONLY_DEPTH_BIT"),
+               tcu::Format::BitDesc(VK_ATTACHMENT_VIEW_CREATE_READ_ONLY_STENCIL_BIT,   "VK_ATTACHMENT_VIEW_CREATE_READ_ONLY_STENCIL_BIT"),
        };
        return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
 }
 
-tcu::Format::Bitfield<32> getDepthStencilViewCreateFlagsStr (VkDepthStencilViewCreateFlags value)
+tcu::Format::Bitfield<32> getChannelFlagsStr (VkChannelFlags value)
 {
        static const tcu::Format::BitDesc s_desc[] =
        {
-               tcu::Format::BitDesc(VK_DEPTH_STENCIL_VIEW_CREATE_READ_ONLY_DEPTH_BIT,          "VK_DEPTH_STENCIL_VIEW_CREATE_READ_ONLY_DEPTH_BIT"),
-               tcu::Format::BitDesc(VK_DEPTH_STENCIL_VIEW_CREATE_READ_ONLY_STENCIL_BIT,        "VK_DEPTH_STENCIL_VIEW_CREATE_READ_ONLY_STENCIL_BIT"),
+               tcu::Format::BitDesc(VK_CHANNEL_R_BIT,  "VK_CHANNEL_R_BIT"),
+               tcu::Format::BitDesc(VK_CHANNEL_G_BIT,  "VK_CHANNEL_G_BIT"),
+               tcu::Format::BitDesc(VK_CHANNEL_B_BIT,  "VK_CHANNEL_B_BIT"),
+               tcu::Format::BitDesc(VK_CHANNEL_A_BIT,  "VK_CHANNEL_A_BIT"),
        };
        return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
 }
@@ -1091,93 +998,106 @@ tcu::Format::Bitfield<32> getPipelineCreateFlagsStr (VkPipelineCreateFlags value
        {
                tcu::Format::BitDesc(VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT,       "VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT"),
                tcu::Format::BitDesc(VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT,          "VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT"),
+               tcu::Format::BitDesc(VK_PIPELINE_CREATE_DERIVATIVE_BIT,                         "VK_PIPELINE_CREATE_DERIVATIVE_BIT"),
        };
        return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
 }
 
-tcu::Format::Bitfield<32> getChannelFlagsStr (VkChannelFlags value)
+tcu::Format::Bitfield<32> getShaderStageFlagsStr (VkShaderStageFlags value)
 {
        static const tcu::Format::BitDesc s_desc[] =
        {
-               tcu::Format::BitDesc(VK_CHANNEL_R_BIT,  "VK_CHANNEL_R_BIT"),
-               tcu::Format::BitDesc(VK_CHANNEL_G_BIT,  "VK_CHANNEL_G_BIT"),
-               tcu::Format::BitDesc(VK_CHANNEL_B_BIT,  "VK_CHANNEL_B_BIT"),
-               tcu::Format::BitDesc(VK_CHANNEL_A_BIT,  "VK_CHANNEL_A_BIT"),
+               tcu::Format::BitDesc(VK_SHADER_STAGE_VERTEX_BIT,                        "VK_SHADER_STAGE_VERTEX_BIT"),
+               tcu::Format::BitDesc(VK_SHADER_STAGE_TESS_CONTROL_BIT,          "VK_SHADER_STAGE_TESS_CONTROL_BIT"),
+               tcu::Format::BitDesc(VK_SHADER_STAGE_TESS_EVALUATION_BIT,       "VK_SHADER_STAGE_TESS_EVALUATION_BIT"),
+               tcu::Format::BitDesc(VK_SHADER_STAGE_GEOMETRY_BIT,                      "VK_SHADER_STAGE_GEOMETRY_BIT"),
+               tcu::Format::BitDesc(VK_SHADER_STAGE_FRAGMENT_BIT,                      "VK_SHADER_STAGE_FRAGMENT_BIT"),
+               tcu::Format::BitDesc(VK_SHADER_STAGE_COMPUTE_BIT,                       "VK_SHADER_STAGE_COMPUTE_BIT"),
+               tcu::Format::BitDesc(VK_SHADER_STAGE_ALL,                                       "VK_SHADER_STAGE_ALL"),
        };
        return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
 }
 
-tcu::Format::Bitfield<32> getFenceCreateFlagsStr (VkFenceCreateFlags value)
+tcu::Format::Bitfield<32> getSubpassDescriptionFlagsStr (VkSubpassDescriptionFlags value)
 {
        static const tcu::Format::BitDesc s_desc[] =
        {
-               tcu::Format::BitDesc(VK_FENCE_CREATE_SIGNALED_BIT,      "VK_FENCE_CREATE_SIGNALED_BIT"),
+               tcu::Format::BitDesc(VK_SUBPASS_DESCRIPTION_NO_OVERDRAW_BIT,    "VK_SUBPASS_DESCRIPTION_NO_OVERDRAW_BIT"),
        };
        return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
 }
 
-tcu::Format::Bitfield<32> getSemaphoreCreateFlagsStr (VkSemaphoreCreateFlags value)
+tcu::Format::Bitfield<32> getPipelineStageFlagsStr (VkPipelineStageFlags value)
 {
        static const tcu::Format::BitDesc s_desc[] =
        {
-               tcu::Format::BitDesc(VK_SEMAPHORE_CREATE_SHAREABLE_BIT, "VK_SEMAPHORE_CREATE_SHAREABLE_BIT"),
+               tcu::Format::BitDesc(VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,                         "VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT"),
+               tcu::Format::BitDesc(VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT,                       "VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT"),
+               tcu::Format::BitDesc(VK_PIPELINE_STAGE_VERTEX_INPUT_BIT,                        "VK_PIPELINE_STAGE_VERTEX_INPUT_BIT"),
+               tcu::Format::BitDesc(VK_PIPELINE_STAGE_VERTEX_SHADER_BIT,                       "VK_PIPELINE_STAGE_VERTEX_SHADER_BIT"),
+               tcu::Format::BitDesc(VK_PIPELINE_STAGE_TESS_CONTROL_SHADER_BIT,         "VK_PIPELINE_STAGE_TESS_CONTROL_SHADER_BIT"),
+               tcu::Format::BitDesc(VK_PIPELINE_STAGE_TESS_EVALUATION_SHADER_BIT,      "VK_PIPELINE_STAGE_TESS_EVALUATION_SHADER_BIT"),
+               tcu::Format::BitDesc(VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT,                     "VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT"),
+               tcu::Format::BitDesc(VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT,                     "VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT"),
+               tcu::Format::BitDesc(VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT,        "VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT"),
+               tcu::Format::BitDesc(VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT,         "VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT"),
+               tcu::Format::BitDesc(VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT,     "VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT"),
+               tcu::Format::BitDesc(VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT,                      "VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT"),
+               tcu::Format::BitDesc(VK_PIPELINE_STAGE_TRANSFER_BIT,                            "VK_PIPELINE_STAGE_TRANSFER_BIT"),
+               tcu::Format::BitDesc(VK_PIPELINE_STAGE_TRANSITION_BIT,                          "VK_PIPELINE_STAGE_TRANSITION_BIT"),
+               tcu::Format::BitDesc(VK_PIPELINE_STAGE_HOST_BIT,                                        "VK_PIPELINE_STAGE_HOST_BIT"),
+               tcu::Format::BitDesc(VK_PIPELINE_STAGE_ALL_GRAPHICS,                            "VK_PIPELINE_STAGE_ALL_GRAPHICS"),
+               tcu::Format::BitDesc(VK_PIPELINE_STAGE_ALL_GPU_COMMANDS,                        "VK_PIPELINE_STAGE_ALL_GPU_COMMANDS"),
        };
        return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
 }
 
-tcu::Format::Bitfield<32> getFormatFeatureFlagsStr (VkFormatFeatureFlags value)
+tcu::Format::Bitfield<32> getMemoryOutputFlagsStr (VkMemoryOutputFlags value)
 {
        static const tcu::Format::BitDesc s_desc[] =
        {
-               tcu::Format::BitDesc(VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT,                               "VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT"),
-               tcu::Format::BitDesc(VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT,                               "VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT"),
-               tcu::Format::BitDesc(VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT,                "VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT"),
-               tcu::Format::BitDesc(VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT,                "VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT"),
-               tcu::Format::BitDesc(VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT,                "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT"),
-               tcu::Format::BitDesc(VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT, "VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT"),
-               tcu::Format::BitDesc(VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT,                               "VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT"),
-               tcu::Format::BitDesc(VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT,                    "VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT"),
-               tcu::Format::BitDesc(VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT,              "VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT"),
-               tcu::Format::BitDesc(VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT,    "VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT"),
-               tcu::Format::BitDesc(VK_FORMAT_FEATURE_CONVERSION_BIT,                                  "VK_FORMAT_FEATURE_CONVERSION_BIT"),
+               tcu::Format::BitDesc(VK_MEMORY_OUTPUT_HOST_WRITE_BIT,                           "VK_MEMORY_OUTPUT_HOST_WRITE_BIT"),
+               tcu::Format::BitDesc(VK_MEMORY_OUTPUT_SHADER_WRITE_BIT,                         "VK_MEMORY_OUTPUT_SHADER_WRITE_BIT"),
+               tcu::Format::BitDesc(VK_MEMORY_OUTPUT_COLOR_ATTACHMENT_BIT,                     "VK_MEMORY_OUTPUT_COLOR_ATTACHMENT_BIT"),
+               tcu::Format::BitDesc(VK_MEMORY_OUTPUT_DEPTH_STENCIL_ATTACHMENT_BIT,     "VK_MEMORY_OUTPUT_DEPTH_STENCIL_ATTACHMENT_BIT"),
+               tcu::Format::BitDesc(VK_MEMORY_OUTPUT_TRANSFER_BIT,                                     "VK_MEMORY_OUTPUT_TRANSFER_BIT"),
        };
        return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
 }
 
-tcu::Format::Bitfield<32> getQueryControlFlagsStr (VkQueryControlFlags value)
+tcu::Format::Bitfield<32> getMemoryInputFlagsStr (VkMemoryInputFlags value)
 {
        static const tcu::Format::BitDesc s_desc[] =
        {
-               tcu::Format::BitDesc(VK_QUERY_CONTROL_CONSERVATIVE_BIT, "VK_QUERY_CONTROL_CONSERVATIVE_BIT"),
+               tcu::Format::BitDesc(VK_MEMORY_INPUT_HOST_READ_BIT,                                     "VK_MEMORY_INPUT_HOST_READ_BIT"),
+               tcu::Format::BitDesc(VK_MEMORY_INPUT_INDIRECT_COMMAND_BIT,                      "VK_MEMORY_INPUT_INDIRECT_COMMAND_BIT"),
+               tcu::Format::BitDesc(VK_MEMORY_INPUT_INDEX_FETCH_BIT,                           "VK_MEMORY_INPUT_INDEX_FETCH_BIT"),
+               tcu::Format::BitDesc(VK_MEMORY_INPUT_VERTEX_ATTRIBUTE_FETCH_BIT,        "VK_MEMORY_INPUT_VERTEX_ATTRIBUTE_FETCH_BIT"),
+               tcu::Format::BitDesc(VK_MEMORY_INPUT_UNIFORM_READ_BIT,                          "VK_MEMORY_INPUT_UNIFORM_READ_BIT"),
+               tcu::Format::BitDesc(VK_MEMORY_INPUT_SHADER_READ_BIT,                           "VK_MEMORY_INPUT_SHADER_READ_BIT"),
+               tcu::Format::BitDesc(VK_MEMORY_INPUT_COLOR_ATTACHMENT_BIT,                      "VK_MEMORY_INPUT_COLOR_ATTACHMENT_BIT"),
+               tcu::Format::BitDesc(VK_MEMORY_INPUT_DEPTH_STENCIL_ATTACHMENT_BIT,      "VK_MEMORY_INPUT_DEPTH_STENCIL_ATTACHMENT_BIT"),
+               tcu::Format::BitDesc(VK_MEMORY_INPUT_INPUT_ATTACHMENT_BIT,                      "VK_MEMORY_INPUT_INPUT_ATTACHMENT_BIT"),
+               tcu::Format::BitDesc(VK_MEMORY_INPUT_TRANSFER_BIT,                                      "VK_MEMORY_INPUT_TRANSFER_BIT"),
        };
        return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
 }
 
-tcu::Format::Bitfield<32> getQueryResultFlagsStr (VkQueryResultFlags value)
+tcu::Format::Bitfield<32> getCmdPoolCreateFlagsStr (VkCmdPoolCreateFlags value)
 {
        static const tcu::Format::BitDesc s_desc[] =
        {
-               tcu::Format::BitDesc(VK_QUERY_RESULT_32_BIT,                            "VK_QUERY_RESULT_32_BIT"),
-               tcu::Format::BitDesc(VK_QUERY_RESULT_64_BIT,                            "VK_QUERY_RESULT_64_BIT"),
-               tcu::Format::BitDesc(VK_QUERY_RESULT_NO_WAIT_BIT,                       "VK_QUERY_RESULT_NO_WAIT_BIT"),
-               tcu::Format::BitDesc(VK_QUERY_RESULT_WAIT_BIT,                          "VK_QUERY_RESULT_WAIT_BIT"),
-               tcu::Format::BitDesc(VK_QUERY_RESULT_WITH_AVAILABILITY_BIT,     "VK_QUERY_RESULT_WITH_AVAILABILITY_BIT"),
-               tcu::Format::BitDesc(VK_QUERY_RESULT_PARTIAL_BIT,                       "VK_QUERY_RESULT_PARTIAL_BIT"),
+               tcu::Format::BitDesc(VK_CMD_POOL_CREATE_TRANSIENT_BIT,                          "VK_CMD_POOL_CREATE_TRANSIENT_BIT"),
+               tcu::Format::BitDesc(VK_CMD_POOL_CREATE_RESET_COMMAND_BUFFER_BIT,       "VK_CMD_POOL_CREATE_RESET_COMMAND_BUFFER_BIT"),
        };
        return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
 }
 
-tcu::Format::Bitfield<32> getPhysicalDeviceCompatibilityFlagsStr (VkPhysicalDeviceCompatibilityFlags value)
+tcu::Format::Bitfield<32> getCmdPoolResetFlagsStr (VkCmdPoolResetFlags value)
 {
        static const tcu::Format::BitDesc s_desc[] =
        {
-               tcu::Format::BitDesc(VK_PHYSICAL_DEVICE_COMPATIBILITY_FEATURES_BIT,                                     "VK_PHYSICAL_DEVICE_COMPATIBILITY_FEATURES_BIT"),
-               tcu::Format::BitDesc(VK_PHYSICAL_DEVICE_COMPATIBILITY_IQ_MATCH_BIT,                                     "VK_PHYSICAL_DEVICE_COMPATIBILITY_IQ_MATCH_BIT"),
-               tcu::Format::BitDesc(VK_PHYSICAL_DEVICE_COMPATIBILITY_PEER_TRANSFER_BIT,                        "VK_PHYSICAL_DEVICE_COMPATIBILITY_PEER_TRANSFER_BIT"),
-               tcu::Format::BitDesc(VK_PHYSICAL_DEVICE_COMPATIBILITY_SHARED_MEMORY_BIT,                        "VK_PHYSICAL_DEVICE_COMPATIBILITY_SHARED_MEMORY_BIT"),
-               tcu::Format::BitDesc(VK_PHYSICAL_DEVICE_COMPATIBILITY_SHARED_SYNC_BIT,                          "VK_PHYSICAL_DEVICE_COMPATIBILITY_SHARED_SYNC_BIT"),
-               tcu::Format::BitDesc(VK_PHYSICAL_DEVICE_COMPATIBILITY_SHARED_DEVICE0_DISPLAY_BIT,       "VK_PHYSICAL_DEVICE_COMPATIBILITY_SHARED_DEVICE0_DISPLAY_BIT"),
-               tcu::Format::BitDesc(VK_PHYSICAL_DEVICE_COMPATIBILITY_SHARED_DEVICE1_DISPLAY_BIT,       "VK_PHYSICAL_DEVICE_COMPATIBILITY_SHARED_DEVICE1_DISPLAY_BIT"),
+               tcu::Format::BitDesc(VK_CMD_POOL_RESET_RELEASE_RESOURCES,       "VK_CMD_POOL_RESET_RELEASE_RESOURCES"),
        };
        return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
 }
@@ -1190,96 +1110,258 @@ tcu::Format::Bitfield<32> getCmdBufferOptimizeFlagsStr (VkCmdBufferOptimizeFlags
                tcu::Format::BitDesc(VK_CMD_BUFFER_OPTIMIZE_PIPELINE_SWITCH_BIT,                "VK_CMD_BUFFER_OPTIMIZE_PIPELINE_SWITCH_BIT"),
                tcu::Format::BitDesc(VK_CMD_BUFFER_OPTIMIZE_ONE_TIME_SUBMIT_BIT,                "VK_CMD_BUFFER_OPTIMIZE_ONE_TIME_SUBMIT_BIT"),
                tcu::Format::BitDesc(VK_CMD_BUFFER_OPTIMIZE_DESCRIPTOR_SET_SWITCH_BIT,  "VK_CMD_BUFFER_OPTIMIZE_DESCRIPTOR_SET_SWITCH_BIT"),
+               tcu::Format::BitDesc(VK_CMD_BUFFER_OPTIMIZE_NO_SIMULTANEOUS_USE_BIT,    "VK_CMD_BUFFER_OPTIMIZE_NO_SIMULTANEOUS_USE_BIT"),
        };
        return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
 }
 
-tcu::Format::Bitfield<32> getQueryPipelineStatisticFlagsStr (VkQueryPipelineStatisticFlags value)
+tcu::Format::Bitfield<32> getCmdBufferResetFlagsStr (VkCmdBufferResetFlags value)
 {
        static const tcu::Format::BitDesc s_desc[] =
        {
-               tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_IA_VERTICES_BIT,               "VK_QUERY_PIPELINE_STATISTIC_IA_VERTICES_BIT"),
-               tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_IA_PRIMITIVES_BIT,             "VK_QUERY_PIPELINE_STATISTIC_IA_PRIMITIVES_BIT"),
-               tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_VS_INVOCATIONS_BIT,    "VK_QUERY_PIPELINE_STATISTIC_VS_INVOCATIONS_BIT"),
-               tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_GS_INVOCATIONS_BIT,    "VK_QUERY_PIPELINE_STATISTIC_GS_INVOCATIONS_BIT"),
-               tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_GS_PRIMITIVES_BIT,             "VK_QUERY_PIPELINE_STATISTIC_GS_PRIMITIVES_BIT"),
-               tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_C_INVOCATIONS_BIT,             "VK_QUERY_PIPELINE_STATISTIC_C_INVOCATIONS_BIT"),
-               tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_C_PRIMITIVES_BIT,              "VK_QUERY_PIPELINE_STATISTIC_C_PRIMITIVES_BIT"),
-               tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_FS_INVOCATIONS_BIT,    "VK_QUERY_PIPELINE_STATISTIC_FS_INVOCATIONS_BIT"),
-               tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_TCS_PATCHES_BIT,               "VK_QUERY_PIPELINE_STATISTIC_TCS_PATCHES_BIT"),
-               tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_TES_INVOCATIONS_BIT,   "VK_QUERY_PIPELINE_STATISTIC_TES_INVOCATIONS_BIT"),
-               tcu::Format::BitDesc(VK_QUERY_PIPELINE_STATISTIC_CS_INVOCATIONS_BIT,    "VK_QUERY_PIPELINE_STATISTIC_CS_INVOCATIONS_BIT"),
+               tcu::Format::BitDesc(VK_CMD_BUFFER_RESET_RELEASE_RESOURCES,     "VK_CMD_BUFFER_RESET_RELEASE_RESOURCES"),
        };
        return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
 }
 
-std::ostream& operator<< (std::ostream& s, const VkOffset2D& value)
+tcu::Format::Bitfield<32> getImageAspectFlagsStr (VkImageAspectFlags value)
 {
-       s << "VkOffset2D = {\n";
-       s << "x = " << value.x << '\n';
-       s << "y = " << value.y << '\n';
+       static const tcu::Format::BitDesc s_desc[] =
+       {
+               tcu::Format::BitDesc(VK_IMAGE_ASPECT_COLOR_BIT,         "VK_IMAGE_ASPECT_COLOR_BIT"),
+               tcu::Format::BitDesc(VK_IMAGE_ASPECT_DEPTH_BIT,         "VK_IMAGE_ASPECT_DEPTH_BIT"),
+               tcu::Format::BitDesc(VK_IMAGE_ASPECT_STENCIL_BIT,       "VK_IMAGE_ASPECT_STENCIL_BIT"),
+               tcu::Format::BitDesc(VK_IMAGE_ASPECT_METADATA_BIT,      "VK_IMAGE_ASPECT_METADATA_BIT"),
+       };
+       return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
+}
+
+tcu::Format::Bitfield<32> getQueryControlFlagsStr (VkQueryControlFlags value)
+{
+       static const tcu::Format::BitDesc s_desc[] =
+       {
+               tcu::Format::BitDesc(VK_QUERY_CONTROL_CONSERVATIVE_BIT, "VK_QUERY_CONTROL_CONSERVATIVE_BIT"),
+       };
+       return tcu::Format::Bitfield<32>(value, DE_ARRAY_BEGIN(s_desc), DE_ARRAY_END(s_desc));
+}
+
+std::ostream& operator<< (std::ostream& s, const VkApplicationInfo& value)
+{
+       s << "VkApplicationInfo = {\n";
+       s << "sType = " << value.sType << '\n';
+       s << "pNext = " << value.pNext << '\n';
+       s << "pAppName = " << value.pAppName << '\n';
+       s << "appVersion = " << value.appVersion << '\n';
+       s << "pEngineName = " << value.pEngineName << '\n';
+       s << "engineVersion = " << value.engineVersion << '\n';
+       s << "apiVersion = " << value.apiVersion << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkOffset3D& value)
+std::ostream& operator<< (std::ostream& s, const VkAllocCallbacks& value)
 {
-       s << "VkOffset3D = {\n";
-       s << "x = " << value.x << '\n';
-       s << "y = " << value.y << '\n';
-       s << "z = " << value.z << '\n';
+       s << "VkAllocCallbacks = {\n";
+       s << "pUserData = " << value.pUserData << '\n';
+       s << "pfnAlloc = " << value.pfnAlloc << '\n';
+       s << "pfnFree = " << value.pfnFree << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkExtent2D& value)
+std::ostream& operator<< (std::ostream& s, const VkInstanceCreateInfo& value)
 {
-       s << "VkExtent2D = {\n";
-       s << "width = " << value.width << '\n';
-       s << "height = " << value.height << '\n';
+       s << "VkInstanceCreateInfo = {\n";
+       s << "sType = " << value.sType << '\n';
+       s << "pNext = " << value.pNext << '\n';
+       s << "pAppInfo = " << value.pAppInfo << '\n';
+       s << "pAllocCb = " << value.pAllocCb << '\n';
+       s << "layerCount = " << value.layerCount << '\n';
+       s << "ppEnabledLayerNames = " << value.ppEnabledLayerNames << '\n';
+       s << "extensionCount = " << value.extensionCount << '\n';
+       s << "ppEnabledExtensionNames = " << value.ppEnabledExtensionNames << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkExtent3D& value)
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceFeatures& value)
 {
-       s << "VkExtent3D = {\n";
-       s << "width = " << value.width << '\n';
-       s << "height = " << value.height << '\n';
-       s << "depth = " << value.depth << '\n';
+       s << "VkPhysicalDeviceFeatures = {\n";
+       s << "robustBufferAccess = " << value.robustBufferAccess << '\n';
+       s << "fullDrawIndexUint32 = " << value.fullDrawIndexUint32 << '\n';
+       s << "imageCubeArray = " << value.imageCubeArray << '\n';
+       s << "independentBlend = " << value.independentBlend << '\n';
+       s << "geometryShader = " << value.geometryShader << '\n';
+       s << "tessellationShader = " << value.tessellationShader << '\n';
+       s << "sampleRateShading = " << value.sampleRateShading << '\n';
+       s << "dualSourceBlend = " << value.dualSourceBlend << '\n';
+       s << "logicOp = " << value.logicOp << '\n';
+       s << "instancedDrawIndirect = " << value.instancedDrawIndirect << '\n';
+       s << "depthClip = " << value.depthClip << '\n';
+       s << "depthBiasClamp = " << value.depthBiasClamp << '\n';
+       s << "fillModeNonSolid = " << value.fillModeNonSolid << '\n';
+       s << "depthBounds = " << value.depthBounds << '\n';
+       s << "wideLines = " << value.wideLines << '\n';
+       s << "largePoints = " << value.largePoints << '\n';
+       s << "textureCompressionETC2 = " << value.textureCompressionETC2 << '\n';
+       s << "textureCompressionASTC_LDR = " << value.textureCompressionASTC_LDR << '\n';
+       s << "textureCompressionBC = " << value.textureCompressionBC << '\n';
+       s << "pipelineStatisticsQuery = " << value.pipelineStatisticsQuery << '\n';
+       s << "vertexSideEffects = " << value.vertexSideEffects << '\n';
+       s << "tessellationSideEffects = " << value.tessellationSideEffects << '\n';
+       s << "geometrySideEffects = " << value.geometrySideEffects << '\n';
+       s << "fragmentSideEffects = " << value.fragmentSideEffects << '\n';
+       s << "shaderTessellationPointSize = " << value.shaderTessellationPointSize << '\n';
+       s << "shaderGeometryPointSize = " << value.shaderGeometryPointSize << '\n';
+       s << "shaderTextureGatherExtended = " << value.shaderTextureGatherExtended << '\n';
+       s << "shaderStorageImageExtendedFormats = " << value.shaderStorageImageExtendedFormats << '\n';
+       s << "shaderStorageImageMultisample = " << value.shaderStorageImageMultisample << '\n';
+       s << "shaderStorageBufferArrayConstantIndexing = " << value.shaderStorageBufferArrayConstantIndexing << '\n';
+       s << "shaderStorageImageArrayConstantIndexing = " << value.shaderStorageImageArrayConstantIndexing << '\n';
+       s << "shaderUniformBufferArrayDynamicIndexing = " << value.shaderUniformBufferArrayDynamicIndexing << '\n';
+       s << "shaderSampledImageArrayDynamicIndexing = " << value.shaderSampledImageArrayDynamicIndexing << '\n';
+       s << "shaderStorageBufferArrayDynamicIndexing = " << value.shaderStorageBufferArrayDynamicIndexing << '\n';
+       s << "shaderStorageImageArrayDynamicIndexing = " << value.shaderStorageImageArrayDynamicIndexing << '\n';
+       s << "shaderClipDistance = " << value.shaderClipDistance << '\n';
+       s << "shaderCullDistance = " << value.shaderCullDistance << '\n';
+       s << "shaderFloat64 = " << value.shaderFloat64 << '\n';
+       s << "shaderInt64 = " << value.shaderInt64 << '\n';
+       s << "shaderFloat16 = " << value.shaderFloat16 << '\n';
+       s << "shaderInt16 = " << value.shaderInt16 << '\n';
+       s << "shaderResourceResidency = " << value.shaderResourceResidency << '\n';
+       s << "shaderResourceMinLOD = " << value.shaderResourceMinLOD << '\n';
+       s << "sparse = " << value.sparse << '\n';
+       s << "sparseResidencyBuffer = " << value.sparseResidencyBuffer << '\n';
+       s << "sparseResidencyImage2D = " << value.sparseResidencyImage2D << '\n';
+       s << "sparseResidencyImage3D = " << value.sparseResidencyImage3D << '\n';
+       s << "sparseResidency2Samples = " << value.sparseResidency2Samples << '\n';
+       s << "sparseResidency4Samples = " << value.sparseResidency4Samples << '\n';
+       s << "sparseResidency8Samples = " << value.sparseResidency8Samples << '\n';
+       s << "sparseResidency16Samples = " << value.sparseResidency16Samples << '\n';
+       s << "sparseResidencyStandard2DBlockShape = " << value.sparseResidencyStandard2DBlockShape << '\n';
+       s << "sparseResidencyStandard2DMSBlockShape = " << value.sparseResidencyStandard2DMSBlockShape << '\n';
+       s << "sparseResidencyStandard3DBlockShape = " << value.sparseResidencyStandard3DBlockShape << '\n';
+       s << "sparseResidencyAlignedMipSize = " << value.sparseResidencyAlignedMipSize << '\n';
+       s << "sparseResidencyNonResident = " << value.sparseResidencyNonResident << '\n';
+       s << "sparseResidencyNonResidentStrict = " << value.sparseResidencyNonResidentStrict << '\n';
+       s << "sparseResidencyAliased = " << value.sparseResidencyAliased << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkViewport& value)
+std::ostream& operator<< (std::ostream& s, const VkFormatProperties& value)
 {
-       s << "VkViewport = {\n";
-       s << "originX = " << value.originX << '\n';
-       s << "originY = " << value.originY << '\n';
-       s << "width = " << value.width << '\n';
-       s << "height = " << value.height << '\n';
-       s << "minDepth = " << value.minDepth << '\n';
-       s << "maxDepth = " << value.maxDepth << '\n';
+       s << "VkFormatProperties = {\n";
+       s << "linearTilingFeatures = " << getFormatFeatureFlagsStr(value.linearTilingFeatures) << '\n';
+       s << "optimalTilingFeatures = " << getFormatFeatureFlagsStr(value.optimalTilingFeatures) << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkRect& value)
+std::ostream& operator<< (std::ostream& s, const VkImageFormatProperties& value)
 {
-       s << "VkRect = {\n";
-       s << "offset = " << value.offset << '\n';
-       s << "extent = " << value.extent << '\n';
+       s << "VkImageFormatProperties = {\n";
+       s << "maxResourceSize = " << value.maxResourceSize << '\n';
+       s << "maxSamples = " << value.maxSamples << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkChannelMapping& value)
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceLimits& value)
 {
-       s << "VkChannelMapping = {\n";
-       s << "r = " << value.r << '\n';
-       s << "g = " << value.g << '\n';
-       s << "b = " << value.b << '\n';
-       s << "a = " << value.a << '\n';
+       s << "VkPhysicalDeviceLimits = {\n";
+       s << "maxImageDimension1D = " << value.maxImageDimension1D << '\n';
+       s << "maxImageDimension2D = " << value.maxImageDimension2D << '\n';
+       s << "maxImageDimension3D = " << value.maxImageDimension3D << '\n';
+       s << "maxImageDimensionCube = " << value.maxImageDimensionCube << '\n';
+       s << "maxImageArrayLayers = " << value.maxImageArrayLayers << '\n';
+       s << "maxTexelBufferSize = " << value.maxTexelBufferSize << '\n';
+       s << "maxUniformBufferSize = " << value.maxUniformBufferSize << '\n';
+       s << "maxStorageBufferSize = " << value.maxStorageBufferSize << '\n';
+       s << "maxPushConstantsSize = " << value.maxPushConstantsSize << '\n';
+       s << "maxMemoryAllocationCount = " << value.maxMemoryAllocationCount << '\n';
+       s << "bufferImageGranularity = " << value.bufferImageGranularity << '\n';
+       s << "maxBoundDescriptorSets = " << value.maxBoundDescriptorSets << '\n';
+       s << "maxDescriptorSets = " << value.maxDescriptorSets << '\n';
+       s << "maxPerStageDescriptorSamplers = " << value.maxPerStageDescriptorSamplers << '\n';
+       s << "maxPerStageDescriptorUniformBuffers = " << value.maxPerStageDescriptorUniformBuffers << '\n';
+       s << "maxPerStageDescriptorStorageBuffers = " << value.maxPerStageDescriptorStorageBuffers << '\n';
+       s << "maxPerStageDescriptorSampledImages = " << value.maxPerStageDescriptorSampledImages << '\n';
+       s << "maxPerStageDescriptorStorageImages = " << value.maxPerStageDescriptorStorageImages << '\n';
+       s << "maxDescriptorSetSamplers = " << value.maxDescriptorSetSamplers << '\n';
+       s << "maxDescriptorSetUniformBuffers = " << value.maxDescriptorSetUniformBuffers << '\n';
+       s << "maxDescriptorSetStorageBuffers = " << value.maxDescriptorSetStorageBuffers << '\n';
+       s << "maxDescriptorSetSampledImages = " << value.maxDescriptorSetSampledImages << '\n';
+       s << "maxDescriptorSetStorageImages = " << value.maxDescriptorSetStorageImages << '\n';
+       s << "maxVertexInputAttributes = " << value.maxVertexInputAttributes << '\n';
+       s << "maxVertexInputAttributeOffset = " << value.maxVertexInputAttributeOffset << '\n';
+       s << "maxVertexInputBindingStride = " << value.maxVertexInputBindingStride << '\n';
+       s << "maxVertexOutputComponents = " << value.maxVertexOutputComponents << '\n';
+       s << "maxTessGenLevel = " << value.maxTessGenLevel << '\n';
+       s << "maxTessPatchSize = " << value.maxTessPatchSize << '\n';
+       s << "maxTessControlPerVertexInputComponents = " << value.maxTessControlPerVertexInputComponents << '\n';
+       s << "maxTessControlPerVertexOutputComponents = " << value.maxTessControlPerVertexOutputComponents << '\n';
+       s << "maxTessControlPerPatchOutputComponents = " << value.maxTessControlPerPatchOutputComponents << '\n';
+       s << "maxTessControlTotalOutputComponents = " << value.maxTessControlTotalOutputComponents << '\n';
+       s << "maxTessEvaluationInputComponents = " << value.maxTessEvaluationInputComponents << '\n';
+       s << "maxTessEvaluationOutputComponents = " << value.maxTessEvaluationOutputComponents << '\n';
+       s << "maxGeometryShaderInvocations = " << value.maxGeometryShaderInvocations << '\n';
+       s << "maxGeometryInputComponents = " << value.maxGeometryInputComponents << '\n';
+       s << "maxGeometryOutputComponents = " << value.maxGeometryOutputComponents << '\n';
+       s << "maxGeometryOutputVertices = " << value.maxGeometryOutputVertices << '\n';
+       s << "maxGeometryTotalOutputComponents = " << value.maxGeometryTotalOutputComponents << '\n';
+       s << "maxFragmentInputComponents = " << value.maxFragmentInputComponents << '\n';
+       s << "maxFragmentOutputBuffers = " << value.maxFragmentOutputBuffers << '\n';
+       s << "maxFragmentDualSourceBuffers = " << value.maxFragmentDualSourceBuffers << '\n';
+       s << "maxFragmentCombinedOutputResources = " << value.maxFragmentCombinedOutputResources << '\n';
+       s << "maxComputeSharedMemorySize = " << value.maxComputeSharedMemorySize << '\n';
+       s << "maxComputeWorkGroupCount = " << tcu::formatArray(DE_ARRAY_BEGIN(value.maxComputeWorkGroupCount), DE_ARRAY_END(value.maxComputeWorkGroupCount)) << '\n';
+       s << "maxComputeWorkGroupInvocations = " << value.maxComputeWorkGroupInvocations << '\n';
+       s << "maxComputeWorkGroupSize = " << tcu::formatArray(DE_ARRAY_BEGIN(value.maxComputeWorkGroupSize), DE_ARRAY_END(value.maxComputeWorkGroupSize)) << '\n';
+       s << "subPixelPrecisionBits = " << value.subPixelPrecisionBits << '\n';
+       s << "subTexelPrecisionBits = " << value.subTexelPrecisionBits << '\n';
+       s << "mipmapPrecisionBits = " << value.mipmapPrecisionBits << '\n';
+       s << "maxDrawIndexedIndexValue = " << value.maxDrawIndexedIndexValue << '\n';
+       s << "maxDrawIndirectInstanceCount = " << value.maxDrawIndirectInstanceCount << '\n';
+       s << "primitiveRestartForPatches = " << value.primitiveRestartForPatches << '\n';
+       s << "maxSamplerLodBias = " << value.maxSamplerLodBias << '\n';
+       s << "maxSamplerAnisotropy = " << value.maxSamplerAnisotropy << '\n';
+       s << "maxViewports = " << value.maxViewports << '\n';
+       s << "maxDynamicViewportStates = " << value.maxDynamicViewportStates << '\n';
+       s << "maxViewportDimensions = " << tcu::formatArray(DE_ARRAY_BEGIN(value.maxViewportDimensions), DE_ARRAY_END(value.maxViewportDimensions)) << '\n';
+       s << "viewportBoundsRange = " << tcu::formatArray(DE_ARRAY_BEGIN(value.viewportBoundsRange), DE_ARRAY_END(value.viewportBoundsRange)) << '\n';
+       s << "viewportSubPixelBits = " << value.viewportSubPixelBits << '\n';
+       s << "minMemoryMapAlignment = " << value.minMemoryMapAlignment << '\n';
+       s << "minTexelBufferOffsetAlignment = " << value.minTexelBufferOffsetAlignment << '\n';
+       s << "minUniformBufferOffsetAlignment = " << value.minUniformBufferOffsetAlignment << '\n';
+       s << "minStorageBufferOffsetAlignment = " << value.minStorageBufferOffsetAlignment << '\n';
+       s << "minTexelOffset = " << value.minTexelOffset << '\n';
+       s << "maxTexelOffset = " << value.maxTexelOffset << '\n';
+       s << "minTexelGatherOffset = " << value.minTexelGatherOffset << '\n';
+       s << "maxTexelGatherOffset = " << value.maxTexelGatherOffset << '\n';
+       s << "minInterpolationOffset = " << value.minInterpolationOffset << '\n';
+       s << "maxInterpolationOffset = " << value.maxInterpolationOffset << '\n';
+       s << "subPixelInterpolationOffsetBits = " << value.subPixelInterpolationOffsetBits << '\n';
+       s << "maxFramebufferWidth = " << value.maxFramebufferWidth << '\n';
+       s << "maxFramebufferHeight = " << value.maxFramebufferHeight << '\n';
+       s << "maxFramebufferLayers = " << value.maxFramebufferLayers << '\n';
+       s << "maxFramebufferColorSamples = " << value.maxFramebufferColorSamples << '\n';
+       s << "maxFramebufferDepthSamples = " << value.maxFramebufferDepthSamples << '\n';
+       s << "maxFramebufferStencilSamples = " << value.maxFramebufferStencilSamples << '\n';
+       s << "maxColorAttachments = " << value.maxColorAttachments << '\n';
+       s << "maxSampledImageColorSamples = " << value.maxSampledImageColorSamples << '\n';
+       s << "maxSampledImageDepthSamples = " << value.maxSampledImageDepthSamples << '\n';
+       s << "maxSampledImageIntegerSamples = " << value.maxSampledImageIntegerSamples << '\n';
+       s << "maxStorageImageSamples = " << value.maxStorageImageSamples << '\n';
+       s << "maxSampleMaskWords = " << value.maxSampleMaskWords << '\n';
+       s << "timestampFrequency = " << value.timestampFrequency << '\n';
+       s << "maxClipDistances = " << value.maxClipDistances << '\n';
+       s << "maxCullDistances = " << value.maxCullDistances << '\n';
+       s << "maxCombinedClipAndCullDistances = " << value.maxCombinedClipAndCullDistances << '\n';
+       s << "pointSizeRange = " << tcu::formatArray(DE_ARRAY_BEGIN(value.pointSizeRange), DE_ARRAY_END(value.pointSizeRange)) << '\n';
+       s << "lineWidthRange = " << tcu::formatArray(DE_ARRAY_BEGIN(value.lineWidthRange), DE_ARRAY_END(value.lineWidthRange)) << '\n';
+       s << "pointSizeGranularity = " << value.pointSizeGranularity << '\n';
+       s << "lineWidthGranularity = " << value.lineWidthGranularity << '\n';
        s << '}';
        return s;
 }
@@ -1293,135 +1375,92 @@ std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceProperties& val
        s << "deviceId = " << value.deviceId << '\n';
        s << "deviceType = " << value.deviceType << '\n';
        s << "deviceName = " << (const char*)value.deviceName << '\n';
-       s << "maxInlineMemoryUpdateSize = " << value.maxInlineMemoryUpdateSize << '\n';
-       s << "maxBoundDescriptorSets = " << value.maxBoundDescriptorSets << '\n';
-       s << "maxThreadGroupSize = " << value.maxThreadGroupSize << '\n';
-       s << "timestampFrequency = " << value.timestampFrequency << '\n';
-       s << "multiColorAttachmentClears = " << value.multiColorAttachmentClears << '\n';
-       s << "maxDescriptorSets = " << value.maxDescriptorSets << '\n';
-       s << "maxViewports = " << value.maxViewports << '\n';
-       s << "maxColorAttachments = " << value.maxColorAttachments << '\n';
+       s << "pipelineCacheUUID = " << tcu::formatArray(DE_ARRAY_BEGIN(value.pipelineCacheUUID), DE_ARRAY_END(value.pipelineCacheUUID)) << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkPhysicalDevicePerformance& value)
-{
-       s << "VkPhysicalDevicePerformance = {\n";
-       s << "maxDeviceClock = " << value.maxDeviceClock << '\n';
-       s << "aluPerClock = " << value.aluPerClock << '\n';
-       s << "texPerClock = " << value.texPerClock << '\n';
-       s << "primsPerClock = " << value.primsPerClock << '\n';
-       s << "pixelsPerClock = " << value.pixelsPerClock << '\n';
-       s << '}';
-       return s;
-}
-
-std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceCompatibilityInfo& value)
-{
-       s << "VkPhysicalDeviceCompatibilityInfo = {\n";
-       s << "compatibilityFlags = " << getPhysicalDeviceCompatibilityFlagsStr(value.compatibilityFlags) << '\n';
-       s << '}';
-       return s;
-}
-
-std::ostream& operator<< (std::ostream& s, const VkExtensionProperties& value)
-{
-       s << "VkExtensionProperties = {\n";
-       s << "extName = " << (const char*)value.extName << '\n';
-       s << "version = " << value.version << '\n';
-       s << '}';
-       return s;
-}
-
-std::ostream& operator<< (std::ostream& s, const VkApplicationInfo& value)
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceQueueProperties& value)
 {
-       s << "VkApplicationInfo = {\n";
-       s << "sType = " << value.sType << '\n';
-       s << "pNext = " << value.pNext << '\n';
-       s << "pAppName = " << value.pAppName << '\n';
-       s << "appVersion = " << value.appVersion << '\n';
-       s << "pEngineName = " << value.pEngineName << '\n';
-       s << "engineVersion = " << value.engineVersion << '\n';
-       s << "apiVersion = " << value.apiVersion << '\n';
+       s << "VkPhysicalDeviceQueueProperties = {\n";
+       s << "queueFlags = " << getQueueFlagsStr(value.queueFlags) << '\n';
+       s << "queueCount = " << value.queueCount << '\n';
+       s << "supportsTimestamps = " << value.supportsTimestamps << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkAllocCallbacks& value)
+std::ostream& operator<< (std::ostream& s, const VkMemoryType& value)
 {
-       s << "VkAllocCallbacks = {\n";
-       s << "pUserData = " << value.pUserData << '\n';
-       s << "pfnAlloc = " << value.pfnAlloc << '\n';
-       s << "pfnFree = " << value.pfnFree << '\n';
+       s << "VkMemoryType = {\n";
+       s << "propertyFlags = " << getMemoryPropertyFlagsStr(value.propertyFlags) << '\n';
+       s << "heapIndex = " << value.heapIndex << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkDeviceQueueCreateInfo& value)
+std::ostream& operator<< (std::ostream& s, const VkMemoryHeap& value)
 {
-       s << "VkDeviceQueueCreateInfo = {\n";
-       s << "queueNodeIndex = " << value.queueNodeIndex << '\n';
-       s << "queueCount = " << value.queueCount << '\n';
+       s << "VkMemoryHeap = {\n";
+       s << "size = " << value.size << '\n';
+       s << "flags = " << getMemoryHeapFlagsStr(value.flags) << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkDeviceCreateInfo& value)
+std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceMemoryProperties& value)
 {
-       s << "VkDeviceCreateInfo = {\n";
-       s << "sType = " << value.sType << '\n';
-       s << "pNext = " << value.pNext << '\n';
-       s << "queueRecordCount = " << value.queueRecordCount << '\n';
-       s << "pRequestedQueues = " << value.pRequestedQueues << '\n';
-       s << "extensionCount = " << value.extensionCount << '\n';
-       s << "ppEnabledExtensionNames = " << value.ppEnabledExtensionNames << '\n';
-       s << "flags = " << getDeviceCreateFlagsStr(value.flags) << '\n';
+       s << "VkPhysicalDeviceMemoryProperties = {\n";
+       s << "memoryTypeCount = " << value.memoryTypeCount << '\n';
+       s << "memoryTypes = " << tcu::formatArray(DE_ARRAY_BEGIN(value.memoryTypes), DE_ARRAY_END(value.memoryTypes)) << '\n';
+       s << "memoryHeapCount = " << value.memoryHeapCount << '\n';
+       s << "memoryHeaps = " << tcu::formatArray(DE_ARRAY_BEGIN(value.memoryHeaps), DE_ARRAY_END(value.memoryHeaps)) << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkInstanceCreateInfo& value)
+std::ostream& operator<< (std::ostream& s, const VkDeviceQueueCreateInfo& value)
 {
-       s << "VkInstanceCreateInfo = {\n";
-       s << "sType = " << value.sType << '\n';
-       s << "pNext = " << value.pNext << '\n';
-       s << "pAppInfo = " << value.pAppInfo << '\n';
-       s << "pAllocCb = " << value.pAllocCb << '\n';
-       s << "extensionCount = " << value.extensionCount << '\n';
-       s << "ppEnabledExtensionNames = " << value.ppEnabledExtensionNames << '\n';
+       s << "VkDeviceQueueCreateInfo = {\n";
+       s << "queueFamilyIndex = " << value.queueFamilyIndex << '\n';
+       s << "queueCount = " << value.queueCount << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkLayerCreateInfo& value)
+std::ostream& operator<< (std::ostream& s, const VkDeviceCreateInfo& value)
 {
-       s << "VkLayerCreateInfo = {\n";
+       s << "VkDeviceCreateInfo = {\n";
        s << "sType = " << value.sType << '\n';
        s << "pNext = " << value.pNext << '\n';
+       s << "queueRecordCount = " << value.queueRecordCount << '\n';
+       s << "pRequestedQueues = " << value.pRequestedQueues << '\n';
        s << "layerCount = " << value.layerCount << '\n';
-       s << "ppActiveLayerNames = " << value.ppActiveLayerNames << '\n';
+       s << "ppEnabledLayerNames = " << value.ppEnabledLayerNames << '\n';
+       s << "extensionCount = " << value.extensionCount << '\n';
+       s << "ppEnabledExtensionNames = " << value.ppEnabledExtensionNames << '\n';
+       s << "pEnabledFeatures = " << value.pEnabledFeatures << '\n';
+       s << "flags = " << getDeviceCreateFlagsStr(value.flags) << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceQueueProperties& value)
+std::ostream& operator<< (std::ostream& s, const VkExtensionProperties& value)
 {
-       s << "VkPhysicalDeviceQueueProperties = {\n";
-       s << "queueFlags = " << getQueueFlagsStr(value.queueFlags) << '\n';
-       s << "queueCount = " << value.queueCount << '\n';
-       s << "maxAtomicCounters = " << value.maxAtomicCounters << '\n';
-       s << "supportsTimestamps = " << value.supportsTimestamps << '\n';
-       s << "maxMemReferences = " << value.maxMemReferences << '\n';
+       s << "VkExtensionProperties = {\n";
+       s << "extName = " << (const char*)value.extName << '\n';
+       s << "specVersion = " << value.specVersion << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkPhysicalDeviceMemoryProperties& value)
+std::ostream& operator<< (std::ostream& s, const VkLayerProperties& value)
 {
-       s << "VkPhysicalDeviceMemoryProperties = {\n";
-       s << "supportsMigration = " << value.supportsMigration << '\n';
-       s << "supportsPinning = " << value.supportsPinning << '\n';
+       s << "VkLayerProperties = {\n";
+       s << "layerName = " << tcu::formatArray(DE_ARRAY_BEGIN(value.layerName), DE_ARRAY_END(value.layerName)) << '\n';
+       s << "specVersion = " << value.specVersion << '\n';
+       s << "implVersion = " << value.implVersion << '\n';
+       s << "description = " << tcu::formatArray(DE_ARRAY_BEGIN(value.description), DE_ARRAY_END(value.description)) << '\n';
        s << '}';
        return s;
 }
@@ -1432,147 +1471,147 @@ std::ostream& operator<< (std::ostream& s, const VkMemoryAllocInfo& value)
        s << "sType = " << value.sType << '\n';
        s << "pNext = " << value.pNext << '\n';
        s << "allocationSize = " << value.allocationSize << '\n';
-       s << "memProps = " << getMemoryPropertyFlagsStr(value.memProps) << '\n';
-       s << "memPriority = " << value.memPriority << '\n';
+       s << "memoryTypeIndex = " << value.memoryTypeIndex << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkMemoryOpenInfo& value)
+std::ostream& operator<< (std::ostream& s, const VkMappedMemoryRange& value)
 {
-       s << "VkMemoryOpenInfo = {\n";
+       s << "VkMappedMemoryRange = {\n";
        s << "sType = " << value.sType << '\n';
        s << "pNext = " << value.pNext << '\n';
-       s << "sharedMem = " << value.sharedMem << '\n';
+       s << "mem = " << value.mem << '\n';
+       s << "offset = " << value.offset << '\n';
+       s << "size = " << value.size << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkPeerMemoryOpenInfo& value)
+std::ostream& operator<< (std::ostream& s, const VkMemoryRequirements& value)
 {
-       s << "VkPeerMemoryOpenInfo = {\n";
-       s << "sType = " << value.sType << '\n';
-       s << "pNext = " << value.pNext << '\n';
-       s << "originalMem = " << value.originalMem << '\n';
+       s << "VkMemoryRequirements = {\n";
+       s << "size = " << value.size << '\n';
+       s << "alignment = " << value.alignment << '\n';
+       s << "memoryTypeBits = " << value.memoryTypeBits << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkMemoryRequirements& value)
+std::ostream& operator<< (std::ostream& s, const VkExtent3D& value)
 {
-       s << "VkMemoryRequirements = {\n";
-       s << "size = " << value.size << '\n';
-       s << "alignment = " << value.alignment << '\n';
-       s << "granularity = " << value.granularity << '\n';
-       s << "memPropsAllowed = " << getMemoryPropertyFlagsStr(value.memPropsAllowed) << '\n';
-       s << "memPropsRequired = " << getMemoryPropertyFlagsStr(value.memPropsRequired) << '\n';
+       s << "VkExtent3D = {\n";
+       s << "width = " << value.width << '\n';
+       s << "height = " << value.height << '\n';
+       s << "depth = " << value.depth << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkFormatProperties& value)
+std::ostream& operator<< (std::ostream& s, const VkSparseImageFormatProperties& value)
 {
-       s << "VkFormatProperties = {\n";
-       s << "linearTilingFeatures = " << getFormatFeatureFlagsStr(value.linearTilingFeatures) << '\n';
-       s << "optimalTilingFeatures = " << getFormatFeatureFlagsStr(value.optimalTilingFeatures) << '\n';
+       s << "VkSparseImageFormatProperties = {\n";
+       s << "aspect = " << value.aspect << '\n';
+       s << "imageGranularity = " << value.imageGranularity << '\n';
+       s << "flags = " << getSparseImageFormatFlagsStr(value.flags) << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkBufferViewAttachInfo& value)
+std::ostream& operator<< (std::ostream& s, const VkSparseImageMemoryRequirements& value)
 {
-       s << "VkBufferViewAttachInfo = {\n";
-       s << "sType = " << value.sType << '\n';
-       s << "pNext = " << value.pNext << '\n';
-       s << "view = " << value.view << '\n';
+       s << "VkSparseImageMemoryRequirements = {\n";
+       s << "formatProps = " << value.formatProps << '\n';
+       s << "imageMipTailStartLOD = " << value.imageMipTailStartLOD << '\n';
+       s << "imageMipTailSize = " << value.imageMipTailSize << '\n';
+       s << "imageMipTailOffset = " << value.imageMipTailOffset << '\n';
+       s << "imageMipTailStride = " << value.imageMipTailStride << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkImageViewAttachInfo& value)
+std::ostream& operator<< (std::ostream& s, const VkSparseMemoryBindInfo& value)
 {
-       s << "VkImageViewAttachInfo = {\n";
-       s << "sType = " << value.sType << '\n';
-       s << "pNext = " << value.pNext << '\n';
-       s << "view = " << value.view << '\n';
-       s << "layout = " << value.layout << '\n';
+       s << "VkSparseMemoryBindInfo = {\n";
+       s << "offset = " << value.offset << '\n';
+       s << "memOffset = " << value.memOffset << '\n';
+       s << "mem = " << value.mem << '\n';
+       s << "flags = " << getSparseMemoryBindFlagsStr(value.flags) << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkUpdateSamplers& value)
+std::ostream& operator<< (std::ostream& s, const VkImageSubresource& value)
 {
-       s << "VkUpdateSamplers = {\n";
-       s << "sType = " << value.sType << '\n';
-       s << "pNext = " << value.pNext << '\n';
-       s << "binding = " << value.binding << '\n';
-       s << "arrayIndex = " << value.arrayIndex << '\n';
-       s << "count = " << value.count << '\n';
-       s << "pSamplers = " << value.pSamplers << '\n';
+       s << "VkImageSubresource = {\n";
+       s << "aspect = " << value.aspect << '\n';
+       s << "mipLevel = " << value.mipLevel << '\n';
+       s << "arraySlice = " << value.arraySlice << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkSamplerImageViewInfo& value)
+std::ostream& operator<< (std::ostream& s, const VkOffset3D& value)
 {
-       s << "VkSamplerImageViewInfo = {\n";
-       s << "sampler = " << value.sampler << '\n';
-       s << "pImageView = " << value.pImageView << '\n';
+       s << "VkOffset3D = {\n";
+       s << "x = " << value.x << '\n';
+       s << "y = " << value.y << '\n';
+       s << "z = " << value.z << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkSparseImageMemoryBindInfo& value)
+{
+       s << "VkSparseImageMemoryBindInfo = {\n";
+       s << "subresource = " << value.subresource << '\n';
+       s << "offset = " << value.offset << '\n';
+       s << "extent = " << value.extent << '\n';
+       s << "memOffset = " << value.memOffset << '\n';
+       s << "mem = " << value.mem << '\n';
+       s << "flags = " << getSparseMemoryBindFlagsStr(value.flags) << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkUpdateSamplerTextures& value)
+std::ostream& operator<< (std::ostream& s, const VkFenceCreateInfo& value)
 {
-       s << "VkUpdateSamplerTextures = {\n";
+       s << "VkFenceCreateInfo = {\n";
        s << "sType = " << value.sType << '\n';
        s << "pNext = " << value.pNext << '\n';
-       s << "binding = " << value.binding << '\n';
-       s << "arrayIndex = " << value.arrayIndex << '\n';
-       s << "count = " << value.count << '\n';
-       s << "pSamplerImageViews = " << value.pSamplerImageViews << '\n';
+       s << "flags = " << getFenceCreateFlagsStr(value.flags) << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkUpdateImages& value)
+std::ostream& operator<< (std::ostream& s, const VkSemaphoreCreateInfo& value)
 {
-       s << "VkUpdateImages = {\n";
+       s << "VkSemaphoreCreateInfo = {\n";
        s << "sType = " << value.sType << '\n';
        s << "pNext = " << value.pNext << '\n';
-       s << "descriptorType = " << value.descriptorType << '\n';
-       s << "binding = " << value.binding << '\n';
-       s << "arrayIndex = " << value.arrayIndex << '\n';
-       s << "count = " << value.count << '\n';
-       s << "pImageViews = " << value.pImageViews << '\n';
+       s << "flags = " << value.flags << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkUpdateBuffers& value)
+std::ostream& operator<< (std::ostream& s, const VkEventCreateInfo& value)
 {
-       s << "VkUpdateBuffers = {\n";
+       s << "VkEventCreateInfo = {\n";
        s << "sType = " << value.sType << '\n';
        s << "pNext = " << value.pNext << '\n';
-       s << "descriptorType = " << value.descriptorType << '\n';
-       s << "binding = " << value.binding << '\n';
-       s << "arrayIndex = " << value.arrayIndex << '\n';
-       s << "count = " << value.count << '\n';
-       s << "pBufferViews = " << value.pBufferViews << '\n';
+       s << "flags = " << value.flags << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkUpdateAsCopy& value)
+std::ostream& operator<< (std::ostream& s, const VkQueryPoolCreateInfo& value)
 {
-       s << "VkUpdateAsCopy = {\n";
+       s << "VkQueryPoolCreateInfo = {\n";
        s << "sType = " << value.sType << '\n';
        s << "pNext = " << value.pNext << '\n';
-       s << "descriptorType = " << value.descriptorType << '\n';
-       s << "descriptorSet = " << value.descriptorSet << '\n';
-       s << "binding = " << value.binding << '\n';
-       s << "arrayElement = " << value.arrayElement << '\n';
-       s << "count = " << value.count << '\n';
+       s << "queryType = " << value.queryType << '\n';
+       s << "slots = " << value.slots << '\n';
+       s << "pipelineStatistics = " << getQueryPipelineStatisticFlagsStr(value.pipelineStatistics) << '\n';
        s << '}';
        return s;
 }
@@ -1585,6 +1624,9 @@ std::ostream& operator<< (std::ostream& s, const VkBufferCreateInfo& value)
        s << "size = " << value.size << '\n';
        s << "usage = " << getBufferUsageFlagsStr(value.usage) << '\n';
        s << "flags = " << getBufferCreateFlagsStr(value.flags) << '\n';
+       s << "sharingMode = " << value.sharingMode << '\n';
+       s << "queueFamilyCount = " << value.queueFamilyCount << '\n';
+       s << "pQueueFamilyIndices = " << value.pQueueFamilyIndices << '\n';
        s << '}';
        return s;
 }
@@ -1603,12 +1645,45 @@ std::ostream& operator<< (std::ostream& s, const VkBufferViewCreateInfo& value)
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkImageSubresource& value)
+std::ostream& operator<< (std::ostream& s, const VkImageCreateInfo& value)
 {
-       s << "VkImageSubresource = {\n";
-       s << "aspect = " << value.aspect << '\n';
-       s << "mipLevel = " << value.mipLevel << '\n';
-       s << "arraySlice = " << value.arraySlice << '\n';
+       s << "VkImageCreateInfo = {\n";
+       s << "sType = " << value.sType << '\n';
+       s << "pNext = " << value.pNext << '\n';
+       s << "imageType = " << value.imageType << '\n';
+       s << "format = " << value.format << '\n';
+       s << "extent = " << value.extent << '\n';
+       s << "mipLevels = " << value.mipLevels << '\n';
+       s << "arraySize = " << value.arraySize << '\n';
+       s << "samples = " << value.samples << '\n';
+       s << "tiling = " << value.tiling << '\n';
+       s << "usage = " << getImageUsageFlagsStr(value.usage) << '\n';
+       s << "flags = " << getImageCreateFlagsStr(value.flags) << '\n';
+       s << "sharingMode = " << value.sharingMode << '\n';
+       s << "queueFamilyCount = " << value.queueFamilyCount << '\n';
+       s << "pQueueFamilyIndices = " << value.pQueueFamilyIndices << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkSubresourceLayout& value)
+{
+       s << "VkSubresourceLayout = {\n";
+       s << "offset = " << value.offset << '\n';
+       s << "size = " << value.size << '\n';
+       s << "rowPitch = " << value.rowPitch << '\n';
+       s << "depthPitch = " << value.depthPitch << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkChannelMapping& value)
+{
+       s << "VkChannelMapping = {\n";
+       s << "r = " << value.r << '\n';
+       s << "g = " << value.g << '\n';
+       s << "b = " << value.b << '\n';
+       s << "a = " << value.a << '\n';
        s << '}';
        return s;
 }
@@ -1625,224 +1700,332 @@ std::ostream& operator<< (std::ostream& s, const VkImageSubresourceRange& value)
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkMemoryBarrier& value)
+std::ostream& operator<< (std::ostream& s, const VkImageViewCreateInfo& value)
 {
-       s << "VkMemoryBarrier = {\n";
+       s << "VkImageViewCreateInfo = {\n";
        s << "sType = " << value.sType << '\n';
        s << "pNext = " << value.pNext << '\n';
-       s << "outputMask = " << getMemoryOutputFlagsStr(value.outputMask) << '\n';
-       s << "inputMask = " << getMemoryInputFlagsStr(value.inputMask) << '\n';
+       s << "image = " << value.image << '\n';
+       s << "viewType = " << value.viewType << '\n';
+       s << "format = " << value.format << '\n';
+       s << "channels = " << value.channels << '\n';
+       s << "subresourceRange = " << value.subresourceRange << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkBufferMemoryBarrier& value)
+std::ostream& operator<< (std::ostream& s, const VkAttachmentViewCreateInfo& value)
 {
-       s << "VkBufferMemoryBarrier = {\n";
+       s << "VkAttachmentViewCreateInfo = {\n";
        s << "sType = " << value.sType << '\n';
        s << "pNext = " << value.pNext << '\n';
-       s << "outputMask = " << getMemoryOutputFlagsStr(value.outputMask) << '\n';
-       s << "inputMask = " << getMemoryInputFlagsStr(value.inputMask) << '\n';
-       s << "buffer = " << value.buffer << '\n';
-       s << "offset = " << value.offset << '\n';
+       s << "image = " << value.image << '\n';
+       s << "format = " << value.format << '\n';
+       s << "mipLevel = " << value.mipLevel << '\n';
+       s << "baseArraySlice = " << value.baseArraySlice << '\n';
+       s << "arraySize = " << value.arraySize << '\n';
+       s << "flags = " << getAttachmentViewCreateFlagsStr(value.flags) << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkShaderModuleCreateInfo& value)
+{
+       s << "VkShaderModuleCreateInfo = {\n";
+       s << "sType = " << value.sType << '\n';
+       s << "pNext = " << value.pNext << '\n';
+       s << "codeSize = " << value.codeSize << '\n';
+       s << "pCode = " << value.pCode << '\n';
+       s << "flags = " << value.flags << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkShaderCreateInfo& value)
+{
+       s << "VkShaderCreateInfo = {\n";
+       s << "sType = " << value.sType << '\n';
+       s << "pNext = " << value.pNext << '\n';
+       s << "module = " << value.module << '\n';
+       s << "pName = " << value.pName << '\n';
+       s << "flags = " << value.flags << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPipelineCacheCreateInfo& value)
+{
+       s << "VkPipelineCacheCreateInfo = {\n";
+       s << "sType = " << value.sType << '\n';
+       s << "pNext = " << value.pNext << '\n';
+       s << "initialSize = " << value.initialSize << '\n';
+       s << "initialData = " << value.initialData << '\n';
+       s << "maxSize = " << value.maxSize << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkSpecializationMapEntry& value)
+{
+       s << "VkSpecializationMapEntry = {\n";
+       s << "constantId = " << value.constantId << '\n';
        s << "size = " << value.size << '\n';
+       s << "offset = " << value.offset << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkSpecializationInfo& value)
+{
+       s << "VkSpecializationInfo = {\n";
+       s << "mapEntryCount = " << value.mapEntryCount << '\n';
+       s << "pMap = " << value.pMap << '\n';
+       s << "dataSize = " << value.dataSize << '\n';
+       s << "pData = " << value.pData << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkPipelineShaderStageCreateInfo& value)
+{
+       s << "VkPipelineShaderStageCreateInfo = {\n";
+       s << "sType = " << value.sType << '\n';
+       s << "pNext = " << value.pNext << '\n';
+       s << "stage = " << value.stage << '\n';
+       s << "shader = " << value.shader << '\n';
+       s << "pSpecializationInfo = " << value.pSpecializationInfo << '\n';
+       s << '}';
+       return s;
+}
+
+std::ostream& operator<< (std::ostream& s, const VkVertexInputBindingDescription& value)
+{
+       s << "VkVertexInputBindingDescription = {\n";
+       s << "binding = " << value.binding << '\n';
+       s << "strideInBytes = " << value.strideInBytes << '\n';
+       s << "stepRate = " << value.stepRate << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkImageMemoryBarrier& value)
+std::ostream& operator<< (std::ostream& s, const VkVertexInputAttributeDescription& value)
 {
-       s << "VkImageMemoryBarrier = {\n";
-       s << "sType = " << value.sType << '\n';
-       s << "pNext = " << value.pNext << '\n';
-       s << "outputMask = " << getMemoryOutputFlagsStr(value.outputMask) << '\n';
-       s << "inputMask = " << getMemoryInputFlagsStr(value.inputMask) << '\n';
-       s << "oldLayout = " << value.oldLayout << '\n';
-       s << "newLayout = " << value.newLayout << '\n';
-       s << "image = " << value.image << '\n';
-       s << "subresourceRange = " << value.subresourceRange << '\n';
+       s << "VkVertexInputAttributeDescription = {\n";
+       s << "location = " << value.location << '\n';
+       s << "binding = " << value.binding << '\n';
+       s << "format = " << value.format << '\n';
+       s << "offsetInBytes = " << value.offsetInBytes << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkImageCreateInfo& value)
+std::ostream& operator<< (std::ostream& s, const VkPipelineVertexInputStateCreateInfo& value)
 {
-       s << "VkImageCreateInfo = {\n";
+       s << "VkPipelineVertexInputStateCreateInfo = {\n";
        s << "sType = " << value.sType << '\n';
        s << "pNext = " << value.pNext << '\n';
-       s << "imageType = " << value.imageType << '\n';
-       s << "format = " << value.format << '\n';
-       s << "extent = " << value.extent << '\n';
-       s << "mipLevels = " << value.mipLevels << '\n';
-       s << "arraySize = " << value.arraySize << '\n';
-       s << "samples = " << value.samples << '\n';
-       s << "tiling = " << value.tiling << '\n';
-       s << "usage = " << getImageUsageFlagsStr(value.usage) << '\n';
-       s << "flags = " << getImageCreateFlagsStr(value.flags) << '\n';
+       s << "bindingCount = " << value.bindingCount << '\n';
+       s << "pVertexBindingDescriptions = " << value.pVertexBindingDescriptions << '\n';
+       s << "attributeCount = " << value.attributeCount << '\n';
+       s << "pVertexAttributeDescriptions = " << value.pVertexAttributeDescriptions << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkPeerImageOpenInfo& value)
+std::ostream& operator<< (std::ostream& s, const VkPipelineInputAssemblyStateCreateInfo& value)
 {
-       s << "VkPeerImageOpenInfo = {\n";
-       s << "originalImage = " << value.originalImage << '\n';
+       s << "VkPipelineInputAssemblyStateCreateInfo = {\n";
+       s << "sType = " << value.sType << '\n';
+       s << "pNext = " << value.pNext << '\n';
+       s << "topology = " << value.topology << '\n';
+       s << "primitiveRestartEnable = " << value.primitiveRestartEnable << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkSubresourceLayout& value)
+std::ostream& operator<< (std::ostream& s, const VkPipelineTessellationStateCreateInfo& value)
 {
-       s << "VkSubresourceLayout = {\n";
-       s << "offset = " << value.offset << '\n';
-       s << "size = " << value.size << '\n';
-       s << "rowPitch = " << value.rowPitch << '\n';
-       s << "depthPitch = " << value.depthPitch << '\n';
+       s << "VkPipelineTessellationStateCreateInfo = {\n";
+       s << "sType = " << value.sType << '\n';
+       s << "pNext = " << value.pNext << '\n';
+       s << "patchControlPoints = " << value.patchControlPoints << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkImageViewCreateInfo& value)
+std::ostream& operator<< (std::ostream& s, const VkPipelineViewportStateCreateInfo& value)
 {
-       s << "VkImageViewCreateInfo = {\n";
+       s << "VkPipelineViewportStateCreateInfo = {\n";
        s << "sType = " << value.sType << '\n';
        s << "pNext = " << value.pNext << '\n';
-       s << "image = " << value.image << '\n';
-       s << "viewType = " << value.viewType << '\n';
-       s << "format = " << value.format << '\n';
-       s << "channels = " << value.channels << '\n';
-       s << "subresourceRange = " << value.subresourceRange << '\n';
-       s << "minLod = " << value.minLod << '\n';
+       s << "viewportCount = " << value.viewportCount << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkColorAttachmentViewCreateInfo& value)
+std::ostream& operator<< (std::ostream& s, const VkPipelineRasterStateCreateInfo& value)
 {
-       s << "VkColorAttachmentViewCreateInfo = {\n";
+       s << "VkPipelineRasterStateCreateInfo = {\n";
        s << "sType = " << value.sType << '\n';
        s << "pNext = " << value.pNext << '\n';
-       s << "image = " << value.image << '\n';
-       s << "format = " << value.format << '\n';
-       s << "mipLevel = " << value.mipLevel << '\n';
-       s << "baseArraySlice = " << value.baseArraySlice << '\n';
-       s << "arraySize = " << value.arraySize << '\n';
-       s << "msaaResolveImage = " << value.msaaResolveImage << '\n';
-       s << "msaaResolveSubResource = " << value.msaaResolveSubResource << '\n';
+       s << "depthClipEnable = " << value.depthClipEnable << '\n';
+       s << "rasterizerDiscardEnable = " << value.rasterizerDiscardEnable << '\n';
+       s << "fillMode = " << value.fillMode << '\n';
+       s << "cullMode = " << value.cullMode << '\n';
+       s << "frontFace = " << value.frontFace << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkDepthStencilViewCreateInfo& value)
+std::ostream& operator<< (std::ostream& s, const VkPipelineMultisampleStateCreateInfo& value)
 {
-       s << "VkDepthStencilViewCreateInfo = {\n";
+       s << "VkPipelineMultisampleStateCreateInfo = {\n";
        s << "sType = " << value.sType << '\n';
        s << "pNext = " << value.pNext << '\n';
-       s << "image = " << value.image << '\n';
-       s << "mipLevel = " << value.mipLevel << '\n';
-       s << "baseArraySlice = " << value.baseArraySlice << '\n';
-       s << "arraySize = " << value.arraySize << '\n';
-       s << "msaaResolveImage = " << value.msaaResolveImage << '\n';
-       s << "msaaResolveSubResource = " << value.msaaResolveSubResource << '\n';
-       s << "flags = " << getDepthStencilViewCreateFlagsStr(value.flags) << '\n';
+       s << "rasterSamples = " << value.rasterSamples << '\n';
+       s << "sampleShadingEnable = " << value.sampleShadingEnable << '\n';
+       s << "minSampleShading = " << value.minSampleShading << '\n';
+       s << "sampleMask = " << value.sampleMask << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkColorAttachmentBindInfo& value)
+std::ostream& operator<< (std::ostream& s, const VkStencilOpState& value)
 {
-       s << "VkColorAttachmentBindInfo = {\n";
-       s << "view = " << value.view << '\n';
-       s << "layout = " << value.layout << '\n';
+       s << "VkStencilOpState = {\n";
+       s << "stencilFailOp = " << value.stencilFailOp << '\n';
+       s << "stencilPassOp = " << value.stencilPassOp << '\n';
+       s << "stencilDepthFailOp = " << value.stencilDepthFailOp << '\n';
+       s << "stencilCompareOp = " << value.stencilCompareOp << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkDepthStencilBindInfo& value)
+std::ostream& operator<< (std::ostream& s, const VkPipelineDepthStencilStateCreateInfo& value)
 {
-       s << "VkDepthStencilBindInfo = {\n";
-       s << "view = " << value.view << '\n';
-       s << "layout = " << value.layout << '\n';
+       s << "VkPipelineDepthStencilStateCreateInfo = {\n";
+       s << "sType = " << value.sType << '\n';
+       s << "pNext = " << value.pNext << '\n';
+       s << "depthTestEnable = " << value.depthTestEnable << '\n';
+       s << "depthWriteEnable = " << value.depthWriteEnable << '\n';
+       s << "depthCompareOp = " << value.depthCompareOp << '\n';
+       s << "depthBoundsEnable = " << value.depthBoundsEnable << '\n';
+       s << "stencilTestEnable = " << value.stencilTestEnable << '\n';
+       s << "front = " << value.front << '\n';
+       s << "back = " << value.back << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkBufferCopy& value)
+std::ostream& operator<< (std::ostream& s, const VkPipelineColorBlendAttachmentState& value)
 {
-       s << "VkBufferCopy = {\n";
-       s << "srcOffset = " << value.srcOffset << '\n';
-       s << "destOffset = " << value.destOffset << '\n';
-       s << "copySize = " << value.copySize << '\n';
+       s << "VkPipelineColorBlendAttachmentState = {\n";
+       s << "blendEnable = " << value.blendEnable << '\n';
+       s << "srcBlendColor = " << value.srcBlendColor << '\n';
+       s << "destBlendColor = " << value.destBlendColor << '\n';
+       s << "blendOpColor = " << value.blendOpColor << '\n';
+       s << "srcBlendAlpha = " << value.srcBlendAlpha << '\n';
+       s << "destBlendAlpha = " << value.destBlendAlpha << '\n';
+       s << "blendOpAlpha = " << value.blendOpAlpha << '\n';
+       s << "channelWriteMask = " << getChannelFlagsStr(value.channelWriteMask) << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkImageMemoryBindInfo& value)
+std::ostream& operator<< (std::ostream& s, const VkPipelineColorBlendStateCreateInfo& value)
 {
-       s << "VkImageMemoryBindInfo = {\n";
-       s << "subresource = " << value.subresource << '\n';
-       s << "offset = " << value.offset << '\n';
-       s << "extent = " << value.extent << '\n';
+       s << "VkPipelineColorBlendStateCreateInfo = {\n";
+       s << "sType = " << value.sType << '\n';
+       s << "pNext = " << value.pNext << '\n';
+       s << "alphaToCoverageEnable = " << value.alphaToCoverageEnable << '\n';
+       s << "logicOpEnable = " << value.logicOpEnable << '\n';
+       s << "logicOp = " << value.logicOp << '\n';
+       s << "attachmentCount = " << value.attachmentCount << '\n';
+       s << "pAttachments = " << value.pAttachments << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkImageCopy& value)
+std::ostream& operator<< (std::ostream& s, const VkGraphicsPipelineCreateInfo& value)
 {
-       s << "VkImageCopy = {\n";
-       s << "srcSubresource = " << value.srcSubresource << '\n';
-       s << "srcOffset = " << value.srcOffset << '\n';
-       s << "destSubresource = " << value.destSubresource << '\n';
-       s << "destOffset = " << value.destOffset << '\n';
-       s << "extent = " << value.extent << '\n';
+       s << "VkGraphicsPipelineCreateInfo = {\n";
+       s << "sType = " << value.sType << '\n';
+       s << "pNext = " << value.pNext << '\n';
+       s << "stageCount = " << value.stageCount << '\n';
+       s << "pStages = " << value.pStages << '\n';
+       s << "pVertexInputState = " << value.pVertexInputState << '\n';
+       s << "pInputAssemblyState = " << value.pInputAssemblyState << '\n';
+       s << "pTessellationState = " << value.pTessellationState << '\n';
+       s << "pViewportState = " << value.pViewportState << '\n';
+       s << "pRasterState = " << value.pRasterState << '\n';
+       s << "pMultisampleState = " << value.pMultisampleState << '\n';
+       s << "pDepthStencilState = " << value.pDepthStencilState << '\n';
+       s << "pColorBlendState = " << value.pColorBlendState << '\n';
+       s << "flags = " << getPipelineCreateFlagsStr(value.flags) << '\n';
+       s << "layout = " << value.layout << '\n';
+       s << "renderPass = " << value.renderPass << '\n';
+       s << "subpass = " << value.subpass << '\n';
+       s << "basePipelineHandle = " << value.basePipelineHandle << '\n';
+       s << "basePipelineIndex = " << value.basePipelineIndex << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkImageBlit& value)
+std::ostream& operator<< (std::ostream& s, const VkComputePipelineCreateInfo& value)
 {
-       s << "VkImageBlit = {\n";
-       s << "srcSubresource = " << value.srcSubresource << '\n';
-       s << "srcOffset = " << value.srcOffset << '\n';
-       s << "srcExtent = " << value.srcExtent << '\n';
-       s << "destSubresource = " << value.destSubresource << '\n';
-       s << "destOffset = " << value.destOffset << '\n';
-       s << "destExtent = " << value.destExtent << '\n';
+       s << "VkComputePipelineCreateInfo = {\n";
+       s << "sType = " << value.sType << '\n';
+       s << "pNext = " << value.pNext << '\n';
+       s << "cs = " << value.cs << '\n';
+       s << "flags = " << getPipelineCreateFlagsStr(value.flags) << '\n';
+       s << "layout = " << value.layout << '\n';
+       s << "basePipelineHandle = " << value.basePipelineHandle << '\n';
+       s << "basePipelineIndex = " << value.basePipelineIndex << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkBufferImageCopy& value)
+std::ostream& operator<< (std::ostream& s, const VkPushConstantRange& value)
 {
-       s << "VkBufferImageCopy = {\n";
-       s << "bufferOffset = " << value.bufferOffset << '\n';
-       s << "imageSubresource = " << value.imageSubresource << '\n';
-       s << "imageOffset = " << value.imageOffset << '\n';
-       s << "imageExtent = " << value.imageExtent << '\n';
+       s << "VkPushConstantRange = {\n";
+       s << "stageFlags = " << getShaderStageFlagsStr(value.stageFlags) << '\n';
+       s << "start = " << value.start << '\n';
+       s << "length = " << value.length << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkImageResolve& value)
+std::ostream& operator<< (std::ostream& s, const VkPipelineLayoutCreateInfo& value)
 {
-       s << "VkImageResolve = {\n";
-       s << "srcSubresource = " << value.srcSubresource << '\n';
-       s << "srcOffset = " << value.srcOffset << '\n';
-       s << "destSubresource = " << value.destSubresource << '\n';
-       s << "destOffset = " << value.destOffset << '\n';
-       s << "extent = " << value.extent << '\n';
+       s << "VkPipelineLayoutCreateInfo = {\n";
+       s << "sType = " << value.sType << '\n';
+       s << "pNext = " << value.pNext << '\n';
+       s << "descriptorSetCount = " << value.descriptorSetCount << '\n';
+       s << "pSetLayouts = " << value.pSetLayouts << '\n';
+       s << "pushConstantRangeCount = " << value.pushConstantRangeCount << '\n';
+       s << "pPushConstantRanges = " << value.pPushConstantRanges << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkShaderCreateInfo& value)
+std::ostream& operator<< (std::ostream& s, const VkSamplerCreateInfo& value)
 {
-       s << "VkShaderCreateInfo = {\n";
+       s << "VkSamplerCreateInfo = {\n";
        s << "sType = " << value.sType << '\n';
        s << "pNext = " << value.pNext << '\n';
-       s << "codeSize = " << value.codeSize << '\n';
-       s << "pCode = " << value.pCode << '\n';
-       s << "flags = " << value.flags << '\n';
+       s << "magFilter = " << value.magFilter << '\n';
+       s << "minFilter = " << value.minFilter << '\n';
+       s << "mipMode = " << value.mipMode << '\n';
+       s << "addressU = " << value.addressU << '\n';
+       s << "addressV = " << value.addressV << '\n';
+       s << "addressW = " << value.addressW << '\n';
+       s << "mipLodBias = " << value.mipLodBias << '\n';
+       s << "maxAnisotropy = " << value.maxAnisotropy << '\n';
+       s << "compareEnable = " << value.compareEnable << '\n';
+       s << "compareOp = " << value.compareOp << '\n';
+       s << "minLod = " << value.minLod << '\n';
+       s << "maxLod = " << value.maxLod << '\n';
+       s << "borderColor = " << value.borderColor << '\n';
        s << '}';
        return s;
 }
@@ -1851,7 +2034,7 @@ std::ostream& operator<< (std::ostream& s, const VkDescriptorSetLayoutBinding& v
 {
        s << "VkDescriptorSetLayoutBinding = {\n";
        s << "descriptorType = " << value.descriptorType << '\n';
-       s << "count = " << value.count << '\n';
+       s << "arraySize = " << value.arraySize << '\n';
        s << "stageFlags = " << getShaderStageFlagsStr(value.stageFlags) << '\n';
        s << "pImmutableSamplers = " << value.pImmutableSamplers << '\n';
        s << '}';
@@ -1889,463 +2072,419 @@ std::ostream& operator<< (std::ostream& s, const VkDescriptorPoolCreateInfo& val
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkLinkConstBuffer& value)
-{
-       s << "VkLinkConstBuffer = {\n";
-       s << "bufferId = " << value.bufferId << '\n';
-       s << "bufferSize = " << value.bufferSize << '\n';
-       s << "pBufferData = " << value.pBufferData << '\n';
-       s << '}';
-       return s;
-}
-
-std::ostream& operator<< (std::ostream& s, const VkSpecializationMapEntry& value)
-{
-       s << "VkSpecializationMapEntry = {\n";
-       s << "constantId = " << value.constantId << '\n';
-       s << "offset = " << value.offset << '\n';
-       s << '}';
-       return s;
-}
-
-std::ostream& operator<< (std::ostream& s, const VkSpecializationInfo& value)
+std::ostream& operator<< (std::ostream& s, const VkDescriptorInfo& value)
 {
-       s << "VkSpecializationInfo = {\n";
-       s << "mapEntryCount = " << value.mapEntryCount << '\n';
-       s << "pMap = " << value.pMap << '\n';
-       s << "pData = " << value.pData << '\n';
+       s << "VkDescriptorInfo = {\n";
+       s << "bufferView = " << value.bufferView << '\n';
+       s << "sampler = " << value.sampler << '\n';
+       s << "imageView = " << value.imageView << '\n';
+       s << "attachmentView = " << value.attachmentView << '\n';
+       s << "imageLayout = " << value.imageLayout << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkPipelineShader& value)
+std::ostream& operator<< (std::ostream& s, const VkWriteDescriptorSet& value)
 {
-       s << "VkPipelineShader = {\n";
-       s << "stage = " << value.stage << '\n';
-       s << "shader = " << value.shader << '\n';
-       s << "linkConstBufferCount = " << value.linkConstBufferCount << '\n';
-       s << "pLinkConstBufferInfo = " << value.pLinkConstBufferInfo << '\n';
-       s << "pSpecializationInfo = " << value.pSpecializationInfo << '\n';
+       s << "VkWriteDescriptorSet = {\n";
+       s << "sType = " << value.sType << '\n';
+       s << "pNext = " << value.pNext << '\n';
+       s << "destSet = " << value.destSet << '\n';
+       s << "destBinding = " << value.destBinding << '\n';
+       s << "destArrayElement = " << value.destArrayElement << '\n';
+       s << "count = " << value.count << '\n';
+       s << "descriptorType = " << value.descriptorType << '\n';
+       s << "pDescriptors = " << value.pDescriptors << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkComputePipelineCreateInfo& value)
+std::ostream& operator<< (std::ostream& s, const VkCopyDescriptorSet& value)
 {
-       s << "VkComputePipelineCreateInfo = {\n";
+       s << "VkCopyDescriptorSet = {\n";
        s << "sType = " << value.sType << '\n';
        s << "pNext = " << value.pNext << '\n';
-       s << "cs = " << value.cs << '\n';
-       s << "flags = " << getPipelineCreateFlagsStr(value.flags) << '\n';
-       s << "layout = " << value.layout << '\n';
+       s << "srcSet = " << value.srcSet << '\n';
+       s << "srcBinding = " << value.srcBinding << '\n';
+       s << "srcArrayElement = " << value.srcArrayElement << '\n';
+       s << "destSet = " << value.destSet << '\n';
+       s << "destBinding = " << value.destBinding << '\n';
+       s << "destArrayElement = " << value.destArrayElement << '\n';
+       s << "count = " << value.count << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkVertexInputBindingDescription& value)
+std::ostream& operator<< (std::ostream& s, const VkViewport& value)
 {
-       s << "VkVertexInputBindingDescription = {\n";
-       s << "binding = " << value.binding << '\n';
-       s << "strideInBytes = " << value.strideInBytes << '\n';
-       s << "stepRate = " << value.stepRate << '\n';
+       s << "VkViewport = {\n";
+       s << "originX = " << value.originX << '\n';
+       s << "originY = " << value.originY << '\n';
+       s << "width = " << value.width << '\n';
+       s << "height = " << value.height << '\n';
+       s << "minDepth = " << value.minDepth << '\n';
+       s << "maxDepth = " << value.maxDepth << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkVertexInputAttributeDescription& value)
+std::ostream& operator<< (std::ostream& s, const VkOffset2D& value)
 {
-       s << "VkVertexInputAttributeDescription = {\n";
-       s << "location = " << value.location << '\n';
-       s << "binding = " << value.binding << '\n';
-       s << "format = " << value.format << '\n';
-       s << "offsetInBytes = " << value.offsetInBytes << '\n';
+       s << "VkOffset2D = {\n";
+       s << "x = " << value.x << '\n';
+       s << "y = " << value.y << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkPipelineVertexInputCreateInfo& value)
+std::ostream& operator<< (std::ostream& s, const VkExtent2D& value)
 {
-       s << "VkPipelineVertexInputCreateInfo = {\n";
-       s << "sType = " << value.sType << '\n';
-       s << "pNext = " << value.pNext << '\n';
-       s << "bindingCount = " << value.bindingCount << '\n';
-       s << "pVertexBindingDescriptions = " << value.pVertexBindingDescriptions << '\n';
-       s << "attributeCount = " << value.attributeCount << '\n';
-       s << "pVertexAttributeDescriptions = " << value.pVertexAttributeDescriptions << '\n';
+       s << "VkExtent2D = {\n";
+       s << "width = " << value.width << '\n';
+       s << "height = " << value.height << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkPipelineIaStateCreateInfo& value)
+std::ostream& operator<< (std::ostream& s, const VkRect2D& value)
 {
-       s << "VkPipelineIaStateCreateInfo = {\n";
-       s << "sType = " << value.sType << '\n';
-       s << "pNext = " << value.pNext << '\n';
-       s << "topology = " << value.topology << '\n';
-       s << "disableVertexReuse = " << value.disableVertexReuse << '\n';
-       s << "primitiveRestartEnable = " << value.primitiveRestartEnable << '\n';
-       s << "primitiveRestartIndex = " << value.primitiveRestartIndex << '\n';
+       s << "VkRect2D = {\n";
+       s << "offset = " << value.offset << '\n';
+       s << "extent = " << value.extent << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkPipelineTessStateCreateInfo& value)
+std::ostream& operator<< (std::ostream& s, const VkDynamicViewportStateCreateInfo& value)
 {
-       s << "VkPipelineTessStateCreateInfo = {\n";
+       s << "VkDynamicViewportStateCreateInfo = {\n";
        s << "sType = " << value.sType << '\n';
        s << "pNext = " << value.pNext << '\n';
-       s << "patchControlPoints = " << value.patchControlPoints << '\n';
+       s << "viewportAndScissorCount = " << value.viewportAndScissorCount << '\n';
+       s << "pViewports = " << value.pViewports << '\n';
+       s << "pScissors = " << value.pScissors << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkPipelineVpStateCreateInfo& value)
+std::ostream& operator<< (std::ostream& s, const VkDynamicRasterStateCreateInfo& value)
 {
-       s << "VkPipelineVpStateCreateInfo = {\n";
+       s << "VkDynamicRasterStateCreateInfo = {\n";
        s << "sType = " << value.sType << '\n';
        s << "pNext = " << value.pNext << '\n';
-       s << "viewportCount = " << value.viewportCount << '\n';
-       s << "clipOrigin = " << value.clipOrigin << '\n';
-       s << "depthMode = " << value.depthMode << '\n';
+       s << "depthBias = " << value.depthBias << '\n';
+       s << "depthBiasClamp = " << value.depthBiasClamp << '\n';
+       s << "slopeScaledDepthBias = " << value.slopeScaledDepthBias << '\n';
+       s << "lineWidth = " << value.lineWidth << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkPipelineRsStateCreateInfo& value)
+std::ostream& operator<< (std::ostream& s, const VkDynamicColorBlendStateCreateInfo& value)
 {
-       s << "VkPipelineRsStateCreateInfo = {\n";
+       s << "VkDynamicColorBlendStateCreateInfo = {\n";
        s << "sType = " << value.sType << '\n';
        s << "pNext = " << value.pNext << '\n';
-       s << "depthClipEnable = " << value.depthClipEnable << '\n';
-       s << "rasterizerDiscardEnable = " << value.rasterizerDiscardEnable << '\n';
-       s << "programPointSize = " << value.programPointSize << '\n';
-       s << "pointOrigin = " << value.pointOrigin << '\n';
-       s << "provokingVertex = " << value.provokingVertex << '\n';
-       s << "fillMode = " << value.fillMode << '\n';
-       s << "cullMode = " << value.cullMode << '\n';
-       s << "frontFace = " << value.frontFace << '\n';
+       s << "blendConst = " << tcu::formatArray(DE_ARRAY_BEGIN(value.blendConst), DE_ARRAY_END(value.blendConst)) << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkPipelineMsStateCreateInfo& value)
+std::ostream& operator<< (std::ostream& s, const VkDynamicDepthStencilStateCreateInfo& value)
 {
-       s << "VkPipelineMsStateCreateInfo = {\n";
+       s << "VkDynamicDepthStencilStateCreateInfo = {\n";
        s << "sType = " << value.sType << '\n';
        s << "pNext = " << value.pNext << '\n';
-       s << "samples = " << value.samples << '\n';
-       s << "multisampleEnable = " << value.multisampleEnable << '\n';
-       s << "sampleShadingEnable = " << value.sampleShadingEnable << '\n';
-       s << "minSampleShading = " << value.minSampleShading << '\n';
-       s << "sampleMask = " << value.sampleMask << '\n';
+       s << "minDepthBounds = " << value.minDepthBounds << '\n';
+       s << "maxDepthBounds = " << value.maxDepthBounds << '\n';
+       s << "stencilReadMask = " << value.stencilReadMask << '\n';
+       s << "stencilWriteMask = " << value.stencilWriteMask << '\n';
+       s << "stencilFrontRef = " << value.stencilFrontRef << '\n';
+       s << "stencilBackRef = " << value.stencilBackRef << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkPipelineCbAttachmentState& value)
+std::ostream& operator<< (std::ostream& s, const VkAttachmentBindInfo& value)
 {
-       s << "VkPipelineCbAttachmentState = {\n";
-       s << "blendEnable = " << value.blendEnable << '\n';
-       s << "format = " << value.format << '\n';
-       s << "srcBlendColor = " << value.srcBlendColor << '\n';
-       s << "destBlendColor = " << value.destBlendColor << '\n';
-       s << "blendOpColor = " << value.blendOpColor << '\n';
-       s << "srcBlendAlpha = " << value.srcBlendAlpha << '\n';
-       s << "destBlendAlpha = " << value.destBlendAlpha << '\n';
-       s << "blendOpAlpha = " << value.blendOpAlpha << '\n';
-       s << "channelWriteMask = " << getChannelFlagsStr(value.channelWriteMask) << '\n';
+       s << "VkAttachmentBindInfo = {\n";
+       s << "view = " << value.view << '\n';
+       s << "layout = " << value.layout << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkPipelineCbStateCreateInfo& value)
+std::ostream& operator<< (std::ostream& s, const VkFramebufferCreateInfo& value)
 {
-       s << "VkPipelineCbStateCreateInfo = {\n";
+       s << "VkFramebufferCreateInfo = {\n";
        s << "sType = " << value.sType << '\n';
        s << "pNext = " << value.pNext << '\n';
-       s << "alphaToCoverageEnable = " << value.alphaToCoverageEnable << '\n';
-       s << "logicOpEnable = " << value.logicOpEnable << '\n';
-       s << "logicOp = " << value.logicOp << '\n';
+       s << "renderPass = " << value.renderPass << '\n';
        s << "attachmentCount = " << value.attachmentCount << '\n';
        s << "pAttachments = " << value.pAttachments << '\n';
+       s << "width = " << value.width << '\n';
+       s << "height = " << value.height << '\n';
+       s << "layers = " << value.layers << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkStencilOpState& value)
-{
-       s << "VkStencilOpState = {\n";
-       s << "stencilFailOp = " << value.stencilFailOp << '\n';
-       s << "stencilPassOp = " << value.stencilPassOp << '\n';
-       s << "stencilDepthFailOp = " << value.stencilDepthFailOp << '\n';
-       s << "stencilCompareOp = " << value.stencilCompareOp << '\n';
-       s << '}';
-       return s;
-}
-
-std::ostream& operator<< (std::ostream& s, const VkPipelineDsStateCreateInfo& value)
+std::ostream& operator<< (std::ostream& s, const VkAttachmentDescription& value)
 {
-       s << "VkPipelineDsStateCreateInfo = {\n";
+       s << "VkAttachmentDescription = {\n";
        s << "sType = " << value.sType << '\n';
        s << "pNext = " << value.pNext << '\n';
        s << "format = " << value.format << '\n';
-       s << "depthTestEnable = " << value.depthTestEnable << '\n';
-       s << "depthWriteEnable = " << value.depthWriteEnable << '\n';
-       s << "depthCompareOp = " << value.depthCompareOp << '\n';
-       s << "depthBoundsEnable = " << value.depthBoundsEnable << '\n';
-       s << "stencilTestEnable = " << value.stencilTestEnable << '\n';
-       s << "front = " << value.front << '\n';
-       s << "back = " << value.back << '\n';
+       s << "samples = " << value.samples << '\n';
+       s << "loadOp = " << value.loadOp << '\n';
+       s << "storeOp = " << value.storeOp << '\n';
+       s << "stencilLoadOp = " << value.stencilLoadOp << '\n';
+       s << "stencilStoreOp = " << value.stencilStoreOp << '\n';
+       s << "initialLayout = " << value.initialLayout << '\n';
+       s << "finalLayout = " << value.finalLayout << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkPipelineShaderStageCreateInfo& value)
+std::ostream& operator<< (std::ostream& s, const VkAttachmentReference& value)
 {
-       s << "VkPipelineShaderStageCreateInfo = {\n";
-       s << "sType = " << value.sType << '\n';
-       s << "pNext = " << value.pNext << '\n';
-       s << "shader = " << value.shader << '\n';
+       s << "VkAttachmentReference = {\n";
+       s << "attachment = " << value.attachment << '\n';
+       s << "layout = " << value.layout << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkGraphicsPipelineCreateInfo& value)
+std::ostream& operator<< (std::ostream& s, const VkSubpassDescription& value)
 {
-       s << "VkGraphicsPipelineCreateInfo = {\n";
+       s << "VkSubpassDescription = {\n";
        s << "sType = " << value.sType << '\n';
        s << "pNext = " << value.pNext << '\n';
-       s << "flags = " << getPipelineCreateFlagsStr(value.flags) << '\n';
-       s << "layout = " << value.layout << '\n';
+       s << "pipelineBindPoint = " << value.pipelineBindPoint << '\n';
+       s << "flags = " << getSubpassDescriptionFlagsStr(value.flags) << '\n';
+       s << "inputCount = " << value.inputCount << '\n';
+       s << "inputAttachments = " << value.inputAttachments << '\n';
+       s << "colorCount = " << value.colorCount << '\n';
+       s << "colorAttachments = " << value.colorAttachments << '\n';
+       s << "resolveAttachments = " << value.resolveAttachments << '\n';
+       s << "depthStencilAttachment = " << value.depthStencilAttachment << '\n';
+       s << "preserveCount = " << value.preserveCount << '\n';
+       s << "preserveAttachments = " << value.preserveAttachments << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkPipelineLayoutCreateInfo& value)
+std::ostream& operator<< (std::ostream& s, const VkSubpassDependency& value)
 {
-       s << "VkPipelineLayoutCreateInfo = {\n";
+       s << "VkSubpassDependency = {\n";
        s << "sType = " << value.sType << '\n';
        s << "pNext = " << value.pNext << '\n';
-       s << "descriptorSetCount = " << value.descriptorSetCount << '\n';
-       s << "pSetLayouts = " << value.pSetLayouts << '\n';
+       s << "srcSubpass = " << value.srcSubpass << '\n';
+       s << "destSubpass = " << value.destSubpass << '\n';
+       s << "srcStageMask = " << getPipelineStageFlagsStr(value.srcStageMask) << '\n';
+       s << "destStageMask = " << getPipelineStageFlagsStr(value.destStageMask) << '\n';
+       s << "outputMask = " << getMemoryOutputFlagsStr(value.outputMask) << '\n';
+       s << "inputMask = " << getMemoryInputFlagsStr(value.inputMask) << '\n';
+       s << "byRegion = " << value.byRegion << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkSamplerCreateInfo& value)
+std::ostream& operator<< (std::ostream& s, const VkRenderPassCreateInfo& value)
 {
-       s << "VkSamplerCreateInfo = {\n";
+       s << "VkRenderPassCreateInfo = {\n";
        s << "sType = " << value.sType << '\n';
        s << "pNext = " << value.pNext << '\n';
-       s << "magFilter = " << value.magFilter << '\n';
-       s << "minFilter = " << value.minFilter << '\n';
-       s << "mipMode = " << value.mipMode << '\n';
-       s << "addressU = " << value.addressU << '\n';
-       s << "addressV = " << value.addressV << '\n';
-       s << "addressW = " << value.addressW << '\n';
-       s << "mipLodBias = " << value.mipLodBias << '\n';
-       s << "maxAnisotropy = " << value.maxAnisotropy << '\n';
-       s << "compareOp = " << value.compareOp << '\n';
-       s << "minLod = " << value.minLod << '\n';
-       s << "maxLod = " << value.maxLod << '\n';
-       s << "borderColor = " << value.borderColor << '\n';
+       s << "attachmentCount = " << value.attachmentCount << '\n';
+       s << "pAttachments = " << value.pAttachments << '\n';
+       s << "subpassCount = " << value.subpassCount << '\n';
+       s << "pSubpasses = " << value.pSubpasses << '\n';
+       s << "dependencyCount = " << value.dependencyCount << '\n';
+       s << "pDependencies = " << value.pDependencies << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkDynamicVpStateCreateInfo& value)
+std::ostream& operator<< (std::ostream& s, const VkCmdPoolCreateInfo& value)
 {
-       s << "VkDynamicVpStateCreateInfo = {\n";
+       s << "VkCmdPoolCreateInfo = {\n";
        s << "sType = " << value.sType << '\n';
        s << "pNext = " << value.pNext << '\n';
-       s << "viewportAndScissorCount = " << value.viewportAndScissorCount << '\n';
-       s << "pViewports = " << value.pViewports << '\n';
-       s << "pScissors = " << value.pScissors << '\n';
+       s << "queueFamilyIndex = " << value.queueFamilyIndex << '\n';
+       s << "flags = " << getCmdPoolCreateFlagsStr(value.flags) << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkDynamicRsStateCreateInfo& value)
+std::ostream& operator<< (std::ostream& s, const VkCmdBufferCreateInfo& value)
 {
-       s << "VkDynamicRsStateCreateInfo = {\n";
+       s << "VkCmdBufferCreateInfo = {\n";
        s << "sType = " << value.sType << '\n';
        s << "pNext = " << value.pNext << '\n';
-       s << "depthBias = " << value.depthBias << '\n';
-       s << "depthBiasClamp = " << value.depthBiasClamp << '\n';
-       s << "slopeScaledDepthBias = " << value.slopeScaledDepthBias << '\n';
-       s << "pointSize = " << value.pointSize << '\n';
-       s << "pointFadeThreshold = " << value.pointFadeThreshold << '\n';
-       s << "lineWidth = " << value.lineWidth << '\n';
+       s << "cmdPool = " << value.cmdPool << '\n';
+       s << "level = " << value.level << '\n';
+       s << "flags = " << value.flags << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkDynamicCbStateCreateInfo& value)
+std::ostream& operator<< (std::ostream& s, const VkCmdBufferBeginInfo& value)
 {
-       s << "VkDynamicCbStateCreateInfo = {\n";
+       s << "VkCmdBufferBeginInfo = {\n";
        s << "sType = " << value.sType << '\n';
        s << "pNext = " << value.pNext << '\n';
-       s << "blendConst = " << tcu::formatArray(DE_ARRAY_BEGIN(value.blendConst), DE_ARRAY_END(value.blendConst)) << '\n';
+       s << "flags = " << getCmdBufferOptimizeFlagsStr(value.flags) << '\n';
+       s << "renderPass = " << value.renderPass << '\n';
+       s << "framebuffer = " << value.framebuffer << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkDynamicDsStateCreateInfo& value)
+std::ostream& operator<< (std::ostream& s, const VkBufferCopy& value)
 {
-       s << "VkDynamicDsStateCreateInfo = {\n";
-       s << "sType = " << value.sType << '\n';
-       s << "pNext = " << value.pNext << '\n';
-       s << "minDepth = " << value.minDepth << '\n';
-       s << "maxDepth = " << value.maxDepth << '\n';
-       s << "stencilReadMask = " << value.stencilReadMask << '\n';
-       s << "stencilWriteMask = " << value.stencilWriteMask << '\n';
-       s << "stencilFrontRef = " << value.stencilFrontRef << '\n';
-       s << "stencilBackRef = " << value.stencilBackRef << '\n';
+       s << "VkBufferCopy = {\n";
+       s << "srcOffset = " << value.srcOffset << '\n';
+       s << "destOffset = " << value.destOffset << '\n';
+       s << "copySize = " << value.copySize << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkCmdBufferCreateInfo& value)
+std::ostream& operator<< (std::ostream& s, const VkImageCopy& value)
 {
-       s << "VkCmdBufferCreateInfo = {\n";
-       s << "sType = " << value.sType << '\n';
-       s << "pNext = " << value.pNext << '\n';
-       s << "queueNodeIndex = " << value.queueNodeIndex << '\n';
-       s << "flags = " << value.flags << '\n';
+       s << "VkImageCopy = {\n";
+       s << "srcSubresource = " << value.srcSubresource << '\n';
+       s << "srcOffset = " << value.srcOffset << '\n';
+       s << "destSubresource = " << value.destSubresource << '\n';
+       s << "destOffset = " << value.destOffset << '\n';
+       s << "extent = " << value.extent << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkCmdBufferBeginInfo& value)
+std::ostream& operator<< (std::ostream& s, const VkImageBlit& value)
 {
-       s << "VkCmdBufferBeginInfo = {\n";
-       s << "sType = " << value.sType << '\n';
-       s << "pNext = " << value.pNext << '\n';
-       s << "flags = " << getCmdBufferOptimizeFlagsStr(value.flags) << '\n';
+       s << "VkImageBlit = {\n";
+       s << "srcSubresource = " << value.srcSubresource << '\n';
+       s << "srcOffset = " << value.srcOffset << '\n';
+       s << "srcExtent = " << value.srcExtent << '\n';
+       s << "destSubresource = " << value.destSubresource << '\n';
+       s << "destOffset = " << value.destOffset << '\n';
+       s << "destExtent = " << value.destExtent << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkRenderPassBegin& value)
+std::ostream& operator<< (std::ostream& s, const VkBufferImageCopy& value)
 {
-       s << "VkRenderPassBegin = {\n";
-       s << "renderPass = " << value.renderPass << '\n';
-       s << "framebuffer = " << value.framebuffer << '\n';
+       s << "VkBufferImageCopy = {\n";
+       s << "bufferOffset = " << value.bufferOffset << '\n';
+       s << "bufferRowLength = " << value.bufferRowLength << '\n';
+       s << "bufferImageHeight = " << value.bufferImageHeight << '\n';
+       s << "imageSubresource = " << value.imageSubresource << '\n';
+       s << "imageOffset = " << value.imageOffset << '\n';
+       s << "imageExtent = " << value.imageExtent << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkCmdBufferGraphicsBeginInfo& value)
+std::ostream& operator<< (std::ostream& s, const VkClearColorValue& value)
 {
-       s << "VkCmdBufferGraphicsBeginInfo = {\n";
-       s << "sType = " << value.sType << '\n';
-       s << "pNext = " << value.pNext << '\n';
-       s << "renderPassContinue = " << value.renderPassContinue << '\n';
+       s << "VkClearColorValue = {\n";
+       s << "f32 = " << tcu::formatArray(DE_ARRAY_BEGIN(value.f32), DE_ARRAY_END(value.f32)) << '\n';
+       s << "s32 = " << tcu::formatArray(DE_ARRAY_BEGIN(value.s32), DE_ARRAY_END(value.s32)) << '\n';
+       s << "u32 = " << tcu::formatArray(DE_ARRAY_BEGIN(value.u32), DE_ARRAY_END(value.u32)) << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkClearColor& value)
+std::ostream& operator<< (std::ostream& s, const VkRect3D& value)
 {
-       s << "VkClearColor = {\n";
-       s << "color = " << value.color << '\n';
-       s << "useRawValue = " << value.useRawValue << '\n';
+       s << "VkRect3D = {\n";
+       s << "offset = " << value.offset << '\n';
+       s << "extent = " << value.extent << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkRenderPassCreateInfo& value)
+std::ostream& operator<< (std::ostream& s, const VkImageResolve& value)
 {
-       s << "VkRenderPassCreateInfo = {\n";
-       s << "sType = " << value.sType << '\n';
-       s << "pNext = " << value.pNext << '\n';
-       s << "renderArea = " << value.renderArea << '\n';
-       s << "colorAttachmentCount = " << value.colorAttachmentCount << '\n';
+       s << "VkImageResolve = {\n";
+       s << "srcSubresource = " << value.srcSubresource << '\n';
+       s << "srcOffset = " << value.srcOffset << '\n';
+       s << "destSubresource = " << value.destSubresource << '\n';
+       s << "destOffset = " << value.destOffset << '\n';
        s << "extent = " << value.extent << '\n';
-       s << "sampleCount = " << value.sampleCount << '\n';
-       s << "layers = " << value.layers << '\n';
-       s << "pColorFormats = " << value.pColorFormats << '\n';
-       s << "pColorLayouts = " << value.pColorLayouts << '\n';
-       s << "pColorLoadOps = " << value.pColorLoadOps << '\n';
-       s << "pColorStoreOps = " << value.pColorStoreOps << '\n';
-       s << "pColorLoadClearValues = " << value.pColorLoadClearValues << '\n';
-       s << "depthStencilFormat = " << value.depthStencilFormat << '\n';
-       s << "depthStencilLayout = " << value.depthStencilLayout << '\n';
-       s << "depthLoadOp = " << value.depthLoadOp << '\n';
-       s << "depthLoadClearValue = " << value.depthLoadClearValue << '\n';
-       s << "depthStoreOp = " << value.depthStoreOp << '\n';
-       s << "stencilLoadOp = " << value.stencilLoadOp << '\n';
-       s << "stencilLoadClearValue = " << value.stencilLoadClearValue << '\n';
-       s << "stencilStoreOp = " << value.stencilStoreOp << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkEventCreateInfo& value)
+std::ostream& operator<< (std::ostream& s, const VkClearDepthStencilValue& value)
 {
-       s << "VkEventCreateInfo = {\n";
-       s << "sType = " << value.sType << '\n';
-       s << "pNext = " << value.pNext << '\n';
-       s << "flags = " << value.flags << '\n';
+       s << "VkClearDepthStencilValue = {\n";
+       s << "depth = " << value.depth << '\n';
+       s << "stencil = " << value.stencil << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkFenceCreateInfo& value)
+std::ostream& operator<< (std::ostream& s, const VkClearValue& value)
 {
-       s << "VkFenceCreateInfo = {\n";
-       s << "sType = " << value.sType << '\n';
-       s << "pNext = " << value.pNext << '\n';
-       s << "flags = " << getFenceCreateFlagsStr(value.flags) << '\n';
+       s << "VkClearValue = {\n";
+       s << "color = " << value.color << '\n';
+       s << "ds = " << value.ds << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkSemaphoreCreateInfo& value)
+std::ostream& operator<< (std::ostream& s, const VkRenderPassBeginInfo& value)
 {
-       s << "VkSemaphoreCreateInfo = {\n";
+       s << "VkRenderPassBeginInfo = {\n";
        s << "sType = " << value.sType << '\n';
        s << "pNext = " << value.pNext << '\n';
-       s << "initialCount = " << value.initialCount << '\n';
-       s << "flags = " << getSemaphoreCreateFlagsStr(value.flags) << '\n';
+       s << "renderPass = " << value.renderPass << '\n';
+       s << "framebuffer = " << value.framebuffer << '\n';
+       s << "renderArea = " << value.renderArea << '\n';
+       s << "attachmentCount = " << value.attachmentCount << '\n';
+       s << "pAttachmentClearValues = " << value.pAttachmentClearValues << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkSemaphoreOpenInfo& value)
+std::ostream& operator<< (std::ostream& s, const VkBufferMemoryBarrier& value)
 {
-       s << "VkSemaphoreOpenInfo = {\n";
+       s << "VkBufferMemoryBarrier = {\n";
        s << "sType = " << value.sType << '\n';
        s << "pNext = " << value.pNext << '\n';
-       s << "sharedSemaphore = " << value.sharedSemaphore << '\n';
+       s << "outputMask = " << getMemoryOutputFlagsStr(value.outputMask) << '\n';
+       s << "inputMask = " << getMemoryInputFlagsStr(value.inputMask) << '\n';
+       s << "srcQueueFamilyIndex = " << value.srcQueueFamilyIndex << '\n';
+       s << "destQueueFamilyIndex = " << value.destQueueFamilyIndex << '\n';
+       s << "buffer = " << value.buffer << '\n';
+       s << "offset = " << value.offset << '\n';
+       s << "size = " << value.size << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkQueryPoolCreateInfo& value)
+std::ostream& operator<< (std::ostream& s, const VkDispatchIndirectCmd& value)
 {
-       s << "VkQueryPoolCreateInfo = {\n";
-       s << "sType = " << value.sType << '\n';
-       s << "pNext = " << value.pNext << '\n';
-       s << "queryType = " << value.queryType << '\n';
-       s << "slots = " << value.slots << '\n';
-       s << "pipelineStatistics = " << getQueryPipelineStatisticFlagsStr(value.pipelineStatistics) << '\n';
+       s << "VkDispatchIndirectCmd = {\n";
+       s << "x = " << value.x << '\n';
+       s << "y = " << value.y << '\n';
+       s << "z = " << value.z << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkFramebufferCreateInfo& value)
+std::ostream& operator<< (std::ostream& s, const VkDrawIndexedIndirectCmd& value)
 {
-       s << "VkFramebufferCreateInfo = {\n";
-       s << "sType = " << value.sType << '\n';
-       s << "pNext = " << value.pNext << '\n';
-       s << "colorAttachmentCount = " << value.colorAttachmentCount << '\n';
-       s << "pColorAttachments = " << value.pColorAttachments << '\n';
-       s << "pDepthStencilAttachment = " << value.pDepthStencilAttachment << '\n';
-       s << "sampleCount = " << value.sampleCount << '\n';
-       s << "width = " << value.width << '\n';
-       s << "height = " << value.height << '\n';
-       s << "layers = " << value.layers << '\n';
+       s << "VkDrawIndexedIndirectCmd = {\n";
+       s << "indexCount = " << value.indexCount << '\n';
+       s << "instanceCount = " << value.instanceCount << '\n';
+       s << "firstIndex = " << value.firstIndex << '\n';
+       s << "vertexOffset = " << value.vertexOffset << '\n';
+       s << "firstInstance = " << value.firstInstance << '\n';
        s << '}';
        return s;
 }
@@ -2361,24 +2500,30 @@ std::ostream& operator<< (std::ostream& s, const VkDrawIndirectCmd& value)
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkDrawIndexedIndirectCmd& value)
+std::ostream& operator<< (std::ostream& s, const VkImageMemoryBarrier& value)
 {
-       s << "VkDrawIndexedIndirectCmd = {\n";
-       s << "indexCount = " << value.indexCount << '\n';
-       s << "instanceCount = " << value.instanceCount << '\n';
-       s << "firstIndex = " << value.firstIndex << '\n';
-       s << "vertexOffset = " << value.vertexOffset << '\n';
-       s << "firstInstance = " << value.firstInstance << '\n';
+       s << "VkImageMemoryBarrier = {\n";
+       s << "sType = " << value.sType << '\n';
+       s << "pNext = " << value.pNext << '\n';
+       s << "outputMask = " << getMemoryOutputFlagsStr(value.outputMask) << '\n';
+       s << "inputMask = " << getMemoryInputFlagsStr(value.inputMask) << '\n';
+       s << "oldLayout = " << value.oldLayout << '\n';
+       s << "newLayout = " << value.newLayout << '\n';
+       s << "srcQueueFamilyIndex = " << value.srcQueueFamilyIndex << '\n';
+       s << "destQueueFamilyIndex = " << value.destQueueFamilyIndex << '\n';
+       s << "image = " << value.image << '\n';
+       s << "subresourceRange = " << value.subresourceRange << '\n';
        s << '}';
        return s;
 }
 
-std::ostream& operator<< (std::ostream& s, const VkDispatchIndirectCmd& value)
+std::ostream& operator<< (std::ostream& s, const VkMemoryBarrier& value)
 {
-       s << "VkDispatchIndirectCmd = {\n";
-       s << "x = " << value.x << '\n';
-       s << "y = " << value.y << '\n';
-       s << "z = " << value.z << '\n';
+       s << "VkMemoryBarrier = {\n";
+       s << "sType = " << value.sType << '\n';
+       s << "pNext = " << value.pNext << '\n';
+       s << "outputMask = " << getMemoryOutputFlagsStr(value.outputMask) << '\n';
+       s << "inputMask = " << getMemoryInputFlagsStr(value.inputMask) << '\n';
        s << '}';
        return s;
 }
index 60a2a62..9f236e2 100644 (file)
 /* WARNING: This is auto-generated file. Do not modify, since changes will
  * be lost! Modify the generating script instead.
  */
-struct VkOffset2D
-{
-       deInt32 x;
-       deInt32 y;
-};
-
-struct VkOffset3D
+struct VkApplicationInfo
 {
-       deInt32 x;
-       deInt32 y;
-       deInt32 z;
+       VkStructureType sType;
+       const void*             pNext;
+       const char*             pAppName;
+       deUint32                appVersion;
+       const char*             pEngineName;
+       deUint32                engineVersion;
+       deUint32                apiVersion;
 };
 
-struct VkExtent2D
+struct VkAllocCallbacks
 {
-       deInt32 width;
-       deInt32 height;
+       void*                           pUserData;
+       PFN_vkAllocFunction     pfnAlloc;
+       PFN_vkFreeFunction      pfnFree;
 };
 
-struct VkExtent3D
+struct VkInstanceCreateInfo
 {
-       deInt32 width;
-       deInt32 height;
-       deInt32 depth;
+       VkStructureType                         sType;
+       const void*                                     pNext;
+       const VkApplicationInfo*        pAppInfo;
+       const VkAllocCallbacks*         pAllocCb;
+       deUint32                                        layerCount;
+       const char*const*                       ppEnabledLayerNames;
+       deUint32                                        extensionCount;
+       const char*const*                       ppEnabledExtensionNames;
 };
 
-struct VkViewport
-{
-       float   originX;
-       float   originY;
-       float   width;
-       float   height;
-       float   minDepth;
-       float   maxDepth;
+struct VkPhysicalDeviceFeatures
+{
+       VkBool32        robustBufferAccess;
+       VkBool32        fullDrawIndexUint32;
+       VkBool32        imageCubeArray;
+       VkBool32        independentBlend;
+       VkBool32        geometryShader;
+       VkBool32        tessellationShader;
+       VkBool32        sampleRateShading;
+       VkBool32        dualSourceBlend;
+       VkBool32        logicOp;
+       VkBool32        instancedDrawIndirect;
+       VkBool32        depthClip;
+       VkBool32        depthBiasClamp;
+       VkBool32        fillModeNonSolid;
+       VkBool32        depthBounds;
+       VkBool32        wideLines;
+       VkBool32        largePoints;
+       VkBool32        textureCompressionETC2;
+       VkBool32        textureCompressionASTC_LDR;
+       VkBool32        textureCompressionBC;
+       VkBool32        pipelineStatisticsQuery;
+       VkBool32        vertexSideEffects;
+       VkBool32        tessellationSideEffects;
+       VkBool32        geometrySideEffects;
+       VkBool32        fragmentSideEffects;
+       VkBool32        shaderTessellationPointSize;
+       VkBool32        shaderGeometryPointSize;
+       VkBool32        shaderTextureGatherExtended;
+       VkBool32        shaderStorageImageExtendedFormats;
+       VkBool32        shaderStorageImageMultisample;
+       VkBool32        shaderStorageBufferArrayConstantIndexing;
+       VkBool32        shaderStorageImageArrayConstantIndexing;
+       VkBool32        shaderUniformBufferArrayDynamicIndexing;
+       VkBool32        shaderSampledImageArrayDynamicIndexing;
+       VkBool32        shaderStorageBufferArrayDynamicIndexing;
+       VkBool32        shaderStorageImageArrayDynamicIndexing;
+       VkBool32        shaderClipDistance;
+       VkBool32        shaderCullDistance;
+       VkBool32        shaderFloat64;
+       VkBool32        shaderInt64;
+       VkBool32        shaderFloat16;
+       VkBool32        shaderInt16;
+       VkBool32        shaderResourceResidency;
+       VkBool32        shaderResourceMinLOD;
+       VkBool32        sparse;
+       VkBool32        sparseResidencyBuffer;
+       VkBool32        sparseResidencyImage2D;
+       VkBool32        sparseResidencyImage3D;
+       VkBool32        sparseResidency2Samples;
+       VkBool32        sparseResidency4Samples;
+       VkBool32        sparseResidency8Samples;
+       VkBool32        sparseResidency16Samples;
+       VkBool32        sparseResidencyStandard2DBlockShape;
+       VkBool32        sparseResidencyStandard2DMSBlockShape;
+       VkBool32        sparseResidencyStandard3DBlockShape;
+       VkBool32        sparseResidencyAlignedMipSize;
+       VkBool32        sparseResidencyNonResident;
+       VkBool32        sparseResidencyNonResidentStrict;
+       VkBool32        sparseResidencyAliased;
 };
 
-struct VkRect
+struct VkFormatProperties
 {
-       VkOffset2D      offset;
-       VkExtent2D      extent;
+       VkFormatFeatureFlags    linearTilingFeatures;
+       VkFormatFeatureFlags    optimalTilingFeatures;
 };
 
-struct VkChannelMapping
-{
-       VkChannelSwizzle        r;
-       VkChannelSwizzle        g;
-       VkChannelSwizzle        b;
-       VkChannelSwizzle        a;
+struct VkImageFormatProperties
+{
+       deUint64        maxResourceSize;
+       deUint32        maxSamples;
+};
+
+struct VkPhysicalDeviceLimits
+{
+       deUint32                maxImageDimension1D;
+       deUint32                maxImageDimension2D;
+       deUint32                maxImageDimension3D;
+       deUint32                maxImageDimensionCube;
+       deUint32                maxImageArrayLayers;
+       deUint32                maxTexelBufferSize;
+       deUint32                maxUniformBufferSize;
+       deUint32                maxStorageBufferSize;
+       deUint32                maxPushConstantsSize;
+       deUint32                maxMemoryAllocationCount;
+       VkDeviceSize    bufferImageGranularity;
+       deUint32                maxBoundDescriptorSets;
+       deUint32                maxDescriptorSets;
+       deUint32                maxPerStageDescriptorSamplers;
+       deUint32                maxPerStageDescriptorUniformBuffers;
+       deUint32                maxPerStageDescriptorStorageBuffers;
+       deUint32                maxPerStageDescriptorSampledImages;
+       deUint32                maxPerStageDescriptorStorageImages;
+       deUint32                maxDescriptorSetSamplers;
+       deUint32                maxDescriptorSetUniformBuffers;
+       deUint32                maxDescriptorSetStorageBuffers;
+       deUint32                maxDescriptorSetSampledImages;
+       deUint32                maxDescriptorSetStorageImages;
+       deUint32                maxVertexInputAttributes;
+       deUint32                maxVertexInputAttributeOffset;
+       deUint32                maxVertexInputBindingStride;
+       deUint32                maxVertexOutputComponents;
+       deUint32                maxTessGenLevel;
+       deUint32                maxTessPatchSize;
+       deUint32                maxTessControlPerVertexInputComponents;
+       deUint32                maxTessControlPerVertexOutputComponents;
+       deUint32                maxTessControlPerPatchOutputComponents;
+       deUint32                maxTessControlTotalOutputComponents;
+       deUint32                maxTessEvaluationInputComponents;
+       deUint32                maxTessEvaluationOutputComponents;
+       deUint32                maxGeometryShaderInvocations;
+       deUint32                maxGeometryInputComponents;
+       deUint32                maxGeometryOutputComponents;
+       deUint32                maxGeometryOutputVertices;
+       deUint32                maxGeometryTotalOutputComponents;
+       deUint32                maxFragmentInputComponents;
+       deUint32                maxFragmentOutputBuffers;
+       deUint32                maxFragmentDualSourceBuffers;
+       deUint32                maxFragmentCombinedOutputResources;
+       deUint32                maxComputeSharedMemorySize;
+       deUint32                maxComputeWorkGroupCount[3];
+       deUint32                maxComputeWorkGroupInvocations;
+       deUint32                maxComputeWorkGroupSize[3];
+       deUint32                subPixelPrecisionBits;
+       deUint32                subTexelPrecisionBits;
+       deUint32                mipmapPrecisionBits;
+       deUint32                maxDrawIndexedIndexValue;
+       deUint32                maxDrawIndirectInstanceCount;
+       VkBool32                primitiveRestartForPatches;
+       float                   maxSamplerLodBias;
+       float                   maxSamplerAnisotropy;
+       deUint32                maxViewports;
+       deUint32                maxDynamicViewportStates;
+       deUint32                maxViewportDimensions[2];
+       float                   viewportBoundsRange[2];
+       deUint32                viewportSubPixelBits;
+       deUint32                minMemoryMapAlignment;
+       deUint32                minTexelBufferOffsetAlignment;
+       deUint32                minUniformBufferOffsetAlignment;
+       deUint32                minStorageBufferOffsetAlignment;
+       deUint32                minTexelOffset;
+       deUint32                maxTexelOffset;
+       deUint32                minTexelGatherOffset;
+       deUint32                maxTexelGatherOffset;
+       float                   minInterpolationOffset;
+       float                   maxInterpolationOffset;
+       deUint32                subPixelInterpolationOffsetBits;
+       deUint32                maxFramebufferWidth;
+       deUint32                maxFramebufferHeight;
+       deUint32                maxFramebufferLayers;
+       deUint32                maxFramebufferColorSamples;
+       deUint32                maxFramebufferDepthSamples;
+       deUint32                maxFramebufferStencilSamples;
+       deUint32                maxColorAttachments;
+       deUint32                maxSampledImageColorSamples;
+       deUint32                maxSampledImageDepthSamples;
+       deUint32                maxSampledImageIntegerSamples;
+       deUint32                maxStorageImageSamples;
+       deUint32                maxSampleMaskWords;
+       deUint64                timestampFrequency;
+       deUint32                maxClipDistances;
+       deUint32                maxCullDistances;
+       deUint32                maxCombinedClipAndCullDistances;
+       float                   pointSizeRange[2];
+       float                   lineWidthRange[2];
+       float                   pointSizeGranularity;
+       float                   lineWidthGranularity;
 };
 
 struct VkPhysicalDeviceProperties
@@ -59,57 +209,39 @@ struct VkPhysicalDeviceProperties
        deUint32                                deviceId;
        VkPhysicalDeviceType    deviceType;
        char                                    deviceName[VK_MAX_PHYSICAL_DEVICE_NAME];
-       VkDeviceSize                    maxInlineMemoryUpdateSize;
-       deUint32                                maxBoundDescriptorSets;
-       deUint32                                maxThreadGroupSize;
-       deUint64                                timestampFrequency;
-       deUint32                                multiColorAttachmentClears;
-       deUint32                                maxDescriptorSets;
-       deUint32                                maxViewports;
-       deUint32                                maxColorAttachments;
-};
-
-struct VkPhysicalDevicePerformance
-{
-       float   maxDeviceClock;
-       float   aluPerClock;
-       float   texPerClock;
-       float   primsPerClock;
-       float   pixelsPerClock;
+       deUint8                                 pipelineCacheUUID[VK_UUID_LENGTH];
 };
 
-struct VkPhysicalDeviceCompatibilityInfo
+struct VkPhysicalDeviceQueueProperties
 {
-       VkPhysicalDeviceCompatibilityFlags      compatibilityFlags;
+       VkQueueFlags    queueFlags;
+       deUint32                queueCount;
+       VkBool32                supportsTimestamps;
 };
 
-struct VkExtensionProperties
+struct VkMemoryType
 {
-       char            extName[VK_MAX_EXTENSION_NAME];
-       deUint32        version;
+       VkMemoryPropertyFlags   propertyFlags;
+       deUint32                                heapIndex;
 };
 
-struct VkApplicationInfo
+struct VkMemoryHeap
 {
-       VkStructureType sType;
-       const void*             pNext;
-       const char*             pAppName;
-       deUint32                appVersion;
-       const char*             pEngineName;
-       deUint32                engineVersion;
-       deUint32                apiVersion;
+       VkDeviceSize            size;
+       VkMemoryHeapFlags       flags;
 };
 
-struct VkAllocCallbacks
+struct VkPhysicalDeviceMemoryProperties
 {
-       void*                           pUserData;
-       PFN_vkAllocFunction     pfnAlloc;
-       PFN_vkFreeFunction      pfnFree;
+       deUint32                memoryTypeCount;
+       VkMemoryType    memoryTypes[VK_MAX_MEMORY_TYPES];
+       deUint32                memoryHeapCount;
+       VkMemoryHeap    memoryHeaps[VK_MAX_MEMORY_HEAPS];
 };
 
 struct VkDeviceQueueCreateInfo
 {
-       deUint32        queueNodeIndex;
+       deUint32        queueFamilyIndex;
        deUint32        queueCount;
 };
 
@@ -119,221 +251,158 @@ struct VkDeviceCreateInfo
        const void*                                             pNext;
        deUint32                                                queueRecordCount;
        const VkDeviceQueueCreateInfo*  pRequestedQueues;
+       deUint32                                                layerCount;
+       const char*const*                               ppEnabledLayerNames;
        deUint32                                                extensionCount;
        const char*const*                               ppEnabledExtensionNames;
+       const VkPhysicalDeviceFeatures* pEnabledFeatures;
        VkDeviceCreateFlags                             flags;
 };
 
-struct VkInstanceCreateInfo
-{
-       VkStructureType                         sType;
-       const void*                                     pNext;
-       const VkApplicationInfo*        pAppInfo;
-       const VkAllocCallbacks*         pAllocCb;
-       deUint32                                        extensionCount;
-       const char*const*                       ppEnabledExtensionNames;
-};
-
-struct VkLayerCreateInfo
-{
-       VkStructureType         sType;
-       const void*                     pNext;
-       deUint32                        layerCount;
-       const char *const*      ppActiveLayerNames;
-};
-
-struct VkPhysicalDeviceQueueProperties
+struct VkExtensionProperties
 {
-       VkQueueFlags    queueFlags;
-       deUint32                queueCount;
-       deUint32                maxAtomicCounters;
-       deUint32                supportsTimestamps;
-       deUint32                maxMemReferences;
+       char            extName[VK_MAX_EXTENSION_NAME];
+       deUint32        specVersion;
 };
 
-struct VkPhysicalDeviceMemoryProperties
+struct VkLayerProperties
 {
-       deUint32        supportsMigration;
-       deUint32        supportsPinning;
+       char            layerName[VK_MAX_EXTENSION_NAME];
+       deUint32        specVersion;
+       deUint32        implVersion;
+       const char*     description[VK_MAX_DESCRIPTION];
 };
 
 struct VkMemoryAllocInfo
 {
-       VkStructureType                 sType;
-       const void*                             pNext;
-       VkDeviceSize                    allocationSize;
-       VkMemoryPropertyFlags   memProps;
-       VkMemoryPriority                memPriority;
-};
-
-struct VkMemoryOpenInfo
-{
        VkStructureType sType;
        const void*             pNext;
-       VkDeviceMemory  sharedMem;
+       VkDeviceSize    allocationSize;
+       deUint32                memoryTypeIndex;
 };
 
-struct VkPeerMemoryOpenInfo
+struct VkMappedMemoryRange
 {
        VkStructureType sType;
        const void*             pNext;
-       VkDeviceMemory  originalMem;
+       VkDeviceMemory  mem;
+       VkDeviceSize    offset;
+       VkDeviceSize    size;
 };
 
 struct VkMemoryRequirements
 {
-       VkDeviceSize                    size;
-       VkDeviceSize                    alignment;
-       VkDeviceSize                    granularity;
-       VkMemoryPropertyFlags   memPropsAllowed;
-       VkMemoryPropertyFlags   memPropsRequired;
-};
-
-struct VkFormatProperties
-{
-       VkFormatFeatureFlags    linearTilingFeatures;
-       VkFormatFeatureFlags    optimalTilingFeatures;
+       VkDeviceSize    size;
+       VkDeviceSize    alignment;
+       deUint32                memoryTypeBits;
 };
 
-struct VkBufferViewAttachInfo
+struct VkExtent3D
 {
-       VkStructureType sType;
-       const void*             pNext;
-       VkBufferView    view;
+       deInt32 width;
+       deInt32 height;
+       deInt32 depth;
 };
 
-struct VkImageViewAttachInfo
+struct VkSparseImageFormatProperties
 {
-       VkStructureType sType;
-       const void*             pNext;
-       VkImageView             view;
-       VkImageLayout   layout;
+       VkImageAspect                           aspect;
+       VkExtent3D                                      imageGranularity;
+       VkSparseImageFormatFlags        flags;
 };
 
-struct VkUpdateSamplers
+struct VkSparseImageMemoryRequirements
 {
-       VkStructureType         sType;
-       const void*                     pNext;
-       deUint32                        binding;
-       deUint32                        arrayIndex;
-       deUint32                        count;
-       const VkSampler*        pSamplers;
+       VkSparseImageFormatProperties   formatProps;
+       deUint32                                                imageMipTailStartLOD;
+       VkDeviceSize                                    imageMipTailSize;
+       VkDeviceSize                                    imageMipTailOffset;
+       VkDeviceSize                                    imageMipTailStride;
 };
 
-struct VkSamplerImageViewInfo
+struct VkSparseMemoryBindInfo
 {
-       VkSampler                                               sampler;
-       const VkImageViewAttachInfo*    pImageView;
+       VkDeviceSize                    offset;
+       VkDeviceSize                    memOffset;
+       VkDeviceMemory                  mem;
+       VkSparseMemoryBindFlags flags;
 };
 
-struct VkUpdateSamplerTextures
+struct VkImageSubresource
 {
-       VkStructureType                                 sType;
-       const void*                                             pNext;
-       deUint32                                                binding;
-       deUint32                                                arrayIndex;
-       deUint32                                                count;
-       const VkSamplerImageViewInfo*   pSamplerImageViews;
+       VkImageAspect   aspect;
+       deUint32                mipLevel;
+       deUint32                arraySlice;
 };
 
-struct VkUpdateImages
+struct VkOffset3D
 {
-       VkStructureType                                 sType;
-       const void*                                             pNext;
-       VkDescriptorType                                descriptorType;
-       deUint32                                                binding;
-       deUint32                                                arrayIndex;
-       deUint32                                                count;
-       const VkImageViewAttachInfo*    pImageViews;
+       deInt32 x;
+       deInt32 y;
+       deInt32 z;
 };
 
-struct VkUpdateBuffers
+struct VkSparseImageMemoryBindInfo
 {
-       VkStructureType                                 sType;
-       const void*                                             pNext;
-       VkDescriptorType                                descriptorType;
-       deUint32                                                binding;
-       deUint32                                                arrayIndex;
-       deUint32                                                count;
-       const VkBufferViewAttachInfo*   pBufferViews;
+       VkImageSubresource              subresource;
+       VkOffset3D                              offset;
+       VkExtent3D                              extent;
+       VkDeviceSize                    memOffset;
+       VkDeviceMemory                  mem;
+       VkSparseMemoryBindFlags flags;
 };
 
-struct VkUpdateAsCopy
+struct VkFenceCreateInfo
 {
        VkStructureType         sType;
        const void*                     pNext;
-       VkDescriptorType        descriptorType;
-       VkDescriptorSet         descriptorSet;
-       deUint32                        binding;
-       deUint32                        arrayElement;
-       deUint32                        count;
+       VkFenceCreateFlags      flags;
 };
 
-struct VkBufferCreateInfo
+struct VkSemaphoreCreateInfo
 {
-       VkStructureType         sType;
-       const void*                     pNext;
-       VkDeviceSize            size;
-       VkBufferUsageFlags      usage;
-       VkBufferCreateFlags     flags;
+       VkStructureType                 sType;
+       const void*                             pNext;
+       VkSemaphoreCreateFlags  flags;
 };
 
-struct VkBufferViewCreateInfo
+struct VkEventCreateInfo
 {
        VkStructureType         sType;
        const void*                     pNext;
-       VkBuffer                        buffer;
-       VkBufferViewType        viewType;
-       VkFormat                        format;
-       VkDeviceSize            offset;
-       VkDeviceSize            range;
-};
-
-struct VkImageSubresource
-{
-       VkImageAspect   aspect;
-       deUint32                mipLevel;
-       deUint32                arraySlice;
+       VkEventCreateFlags      flags;
 };
 
-struct VkImageSubresourceRange
+struct VkQueryPoolCreateInfo
 {
-       VkImageAspect   aspect;
-       deUint32                baseMipLevel;
-       deUint32                mipLevels;
-       deUint32                baseArraySlice;
-       deUint32                arraySize;
+       VkStructureType                                 sType;
+       const void*                                             pNext;
+       VkQueryType                                             queryType;
+       deUint32                                                slots;
+       VkQueryPipelineStatisticFlags   pipelineStatistics;
 };
 
-struct VkMemoryBarrier
+struct VkBufferCreateInfo
 {
        VkStructureType         sType;
        const void*                     pNext;
-       VkMemoryOutputFlags     outputMask;
-       VkMemoryInputFlags      inputMask;
+       VkDeviceSize            size;
+       VkBufferUsageFlags      usage;
+       VkBufferCreateFlags     flags;
+       VkSharingMode           sharingMode;
+       deUint32                        queueFamilyCount;
+       const deUint32*         pQueueFamilyIndices;
 };
 
-struct VkBufferMemoryBarrier
+struct VkBufferViewCreateInfo
 {
        VkStructureType         sType;
        const void*                     pNext;
-       VkMemoryOutputFlags     outputMask;
-       VkMemoryInputFlags      inputMask;
        VkBuffer                        buffer;
+       VkBufferViewType        viewType;
+       VkFormat                        format;
        VkDeviceSize            offset;
-       VkDeviceSize            size;
-};
-
-struct VkImageMemoryBarrier
-{
-       VkStructureType                 sType;
-       const void*                             pNext;
-       VkMemoryOutputFlags             outputMask;
-       VkMemoryInputFlags              inputMask;
-       VkImageLayout                   oldLayout;
-       VkImageLayout                   newLayout;
-       VkImage                                 image;
-       VkImageSubresourceRange subresourceRange;
+       VkDeviceSize            range;
 };
 
 struct VkImageCreateInfo
@@ -349,11 +418,9 @@ struct VkImageCreateInfo
        VkImageTiling           tiling;
        VkImageUsageFlags       usage;
        VkImageCreateFlags      flags;
-};
-
-struct VkPeerImageOpenInfo
-{
-       VkImage originalImage;
+       VkSharingMode           sharingMode;
+       deUint32                        queueFamilyCount;
+       const deUint32*         pQueueFamilyIndices;
 };
 
 struct VkSubresourceLayout
@@ -364,6 +431,23 @@ struct VkSubresourceLayout
        VkDeviceSize    depthPitch;
 };
 
+struct VkChannelMapping
+{
+       VkChannelSwizzle        r;
+       VkChannelSwizzle        g;
+       VkChannelSwizzle        b;
+       VkChannelSwizzle        a;
+};
+
+struct VkImageSubresourceRange
+{
+       VkImageAspect   aspect;
+       deUint32                baseMipLevel;
+       deUint32                mipLevels;
+       deUint32                baseArraySlice;
+       deUint32                arraySize;
+};
+
 struct VkImageViewCreateInfo
 {
        VkStructureType                 sType;
@@ -373,174 +457,71 @@ struct VkImageViewCreateInfo
        VkFormat                                format;
        VkChannelMapping                channels;
        VkImageSubresourceRange subresourceRange;
-       float                                   minLod;
 };
 
-struct VkColorAttachmentViewCreateInfo
+struct VkAttachmentViewCreateInfo
 {
-       VkStructureType                 sType;
-       const void*                             pNext;
-       VkImage                                 image;
-       VkFormat                                format;
-       deUint32                                mipLevel;
-       deUint32                                baseArraySlice;
-       deUint32                                arraySize;
-       VkImage                                 msaaResolveImage;
-       VkImageSubresourceRange msaaResolveSubResource;
+       VkStructureType                         sType;
+       const void*                                     pNext;
+       VkImage                                         image;
+       VkFormat                                        format;
+       deUint32                                        mipLevel;
+       deUint32                                        baseArraySlice;
+       deUint32                                        arraySize;
+       VkAttachmentViewCreateFlags     flags;
 };
 
-struct VkDepthStencilViewCreateInfo
+struct VkShaderModuleCreateInfo
 {
-       VkStructureType                                 sType;
-       const void*                                             pNext;
-       VkImage                                                 image;
-       deUint32                                                mipLevel;
-       deUint32                                                baseArraySlice;
-       deUint32                                                arraySize;
-       VkImage                                                 msaaResolveImage;
-       VkImageSubresourceRange                 msaaResolveSubResource;
-       VkDepthStencilViewCreateFlags   flags;
+       VkStructureType                         sType;
+       const void*                                     pNext;
+       deUintptr                                       codeSize;
+       const void*                                     pCode;
+       VkShaderModuleCreateFlags       flags;
 };
 
-struct VkColorAttachmentBindInfo
+struct VkShaderCreateInfo
 {
-       VkColorAttachmentView   view;
-       VkImageLayout                   layout;
+       VkStructureType         sType;
+       const void*                     pNext;
+       VkShaderModule          module;
+       const char*                     pName;
+       VkShaderCreateFlags     flags;
 };
 
-struct VkDepthStencilBindInfo
+struct VkPipelineCacheCreateInfo
 {
-       VkDepthStencilView      view;
-       VkImageLayout           layout;
+       VkStructureType sType;
+       const void*             pNext;
+       deUintptr               initialSize;
+       const void*             initialData;
+       deUintptr               maxSize;
 };
 
-struct VkBufferCopy
+struct VkSpecializationMapEntry
 {
-       VkDeviceSize    srcOffset;
-       VkDeviceSize    destOffset;
-       VkDeviceSize    copySize;
+       deUint32        constantId;
+       deUintptr       size;
+       deUint32        offset;
 };
 
-struct VkImageMemoryBindInfo
-{
-       VkImageSubresource      subresource;
-       VkOffset3D                      offset;
-       VkExtent3D                      extent;
-};
-
-struct VkImageCopy
-{
-       VkImageSubresource      srcSubresource;
-       VkOffset3D                      srcOffset;
-       VkImageSubresource      destSubresource;
-       VkOffset3D                      destOffset;
-       VkExtent3D                      extent;
-};
-
-struct VkImageBlit
-{
-       VkImageSubresource      srcSubresource;
-       VkOffset3D                      srcOffset;
-       VkExtent3D                      srcExtent;
-       VkImageSubresource      destSubresource;
-       VkOffset3D                      destOffset;
-       VkExtent3D                      destExtent;
-};
-
-struct VkBufferImageCopy
-{
-       VkDeviceSize            bufferOffset;
-       VkImageSubresource      imageSubresource;
-       VkOffset3D                      imageOffset;
-       VkExtent3D                      imageExtent;
-};
-
-struct VkImageResolve
-{
-       VkImageSubresource      srcSubresource;
-       VkOffset3D                      srcOffset;
-       VkImageSubresource      destSubresource;
-       VkOffset3D                      destOffset;
-       VkExtent3D                      extent;
-};
-
-struct VkShaderCreateInfo
-{
-       VkStructureType         sType;
-       const void*                     pNext;
-       deUintptr                       codeSize;
-       const void*                     pCode;
-       VkShaderCreateFlags     flags;
-};
-
-struct VkDescriptorSetLayoutBinding
-{
-       VkDescriptorType        descriptorType;
-       deUint32                        count;
-       VkShaderStageFlags      stageFlags;
-       const VkSampler*        pImmutableSamplers;
-};
-
-struct VkDescriptorSetLayoutCreateInfo
-{
-       VkStructureType                                         sType;
-       const void*                                                     pNext;
-       deUint32                                                        count;
-       const VkDescriptorSetLayoutBinding*     pBinding;
-};
-
-struct VkDescriptorTypeCount
-{
-       VkDescriptorType        type;
-       deUint32                        count;
-};
-
-struct VkDescriptorPoolCreateInfo
-{
-       VkStructureType                                 sType;
-       const void*                                             pNext;
-       deUint32                                                count;
-       const VkDescriptorTypeCount*    pTypeCount;
-};
-
-struct VkLinkConstBuffer
-{
-       deUint32        bufferId;
-       deUintptr       bufferSize;
-       const void*     pBufferData;
-};
-
-struct VkSpecializationMapEntry
-{
-       deUint32        constantId;
-       deUint32        offset;
-};
-
-struct VkSpecializationInfo
+struct VkSpecializationInfo
 {
        deUint32                                                mapEntryCount;
        const VkSpecializationMapEntry* pMap;
+       const deUintptr                                 dataSize;
        const void*                                             pData;
 };
 
-struct VkPipelineShader
+struct VkPipelineShaderStageCreateInfo
 {
+       VkStructureType                         sType;
+       const void*                                     pNext;
        VkShaderStage                           stage;
        VkShader                                        shader;
-       deUint32                                        linkConstBufferCount;
-       const VkLinkConstBuffer*        pLinkConstBufferInfo;
        const VkSpecializationInfo*     pSpecializationInfo;
 };
 
-struct VkComputePipelineCreateInfo
-{
-       VkStructureType                 sType;
-       const void*                             pNext;
-       VkPipelineShader                cs;
-       VkPipelineCreateFlags   flags;
-       VkPipelineLayout                layout;
-};
-
 struct VkVertexInputBindingDescription
 {
        deUint32                                binding;
@@ -556,7 +537,7 @@ struct VkVertexInputAttributeDescription
        deUint32        offsetInBytes;
 };
 
-struct VkPipelineVertexInputCreateInfo
+struct VkPipelineVertexInputStateCreateInfo
 {
        VkStructureType                                                         sType;
        const void*                                                                     pNext;
@@ -566,81 +547,49 @@ struct VkPipelineVertexInputCreateInfo
        const VkVertexInputAttributeDescription*        pVertexAttributeDescriptions;
 };
 
-struct VkPipelineIaStateCreateInfo
+struct VkPipelineInputAssemblyStateCreateInfo
 {
        VkStructureType         sType;
        const void*                     pNext;
        VkPrimitiveTopology     topology;
-       deUint32                        disableVertexReuse;
-       deUint32                        primitiveRestartEnable;
-       deUint32                        primitiveRestartIndex;
+       VkBool32                        primitiveRestartEnable;
 };
 
-struct VkPipelineTessStateCreateInfo
+struct VkPipelineTessellationStateCreateInfo
 {
        VkStructureType sType;
        const void*             pNext;
        deUint32                patchControlPoints;
 };
 
-struct VkPipelineVpStateCreateInfo
+struct VkPipelineViewportStateCreateInfo
 {
-       VkStructureType         sType;
-       const void*                     pNext;
-       deUint32                        viewportCount;
-       VkCoordinateOrigin      clipOrigin;
-       VkDepthMode                     depthMode;
+       VkStructureType sType;
+       const void*             pNext;
+       deUint32                viewportCount;
 };
 
-struct VkPipelineRsStateCreateInfo
+struct VkPipelineRasterStateCreateInfo
 {
-       VkStructureType         sType;
-       const void*                     pNext;
-       deUint32                        depthClipEnable;
-       deUint32                        rasterizerDiscardEnable;
-       deUint32                        programPointSize;
-       VkCoordinateOrigin      pointOrigin;
-       VkProvokingVertex       provokingVertex;
-       VkFillMode                      fillMode;
-       VkCullMode                      cullMode;
-       VkFrontFace                     frontFace;
+       VkStructureType sType;
+       const void*             pNext;
+       VkBool32                depthClipEnable;
+       VkBool32                rasterizerDiscardEnable;
+       VkFillMode              fillMode;
+       VkCullMode              cullMode;
+       VkFrontFace             frontFace;
 };
 
-struct VkPipelineMsStateCreateInfo
+struct VkPipelineMultisampleStateCreateInfo
 {
        VkStructureType sType;
        const void*             pNext;
-       deUint32                samples;
-       deUint32                multisampleEnable;
-       deUint32                sampleShadingEnable;
+       deUint32                rasterSamples;
+       VkBool32                sampleShadingEnable;
        float                   minSampleShading;
        VkSampleMask    sampleMask;
 };
 
-struct VkPipelineCbAttachmentState
-{
-       deUint32                blendEnable;
-       VkFormat                format;
-       VkBlend                 srcBlendColor;
-       VkBlend                 destBlendColor;
-       VkBlendOp               blendOpColor;
-       VkBlend                 srcBlendAlpha;
-       VkBlend                 destBlendAlpha;
-       VkBlendOp               blendOpAlpha;
-       VkChannelFlags  channelWriteMask;
-};
-
-struct VkPipelineCbStateCreateInfo
-{
-       VkStructureType                                         sType;
-       const void*                                                     pNext;
-       deUint32                                                        alphaToCoverageEnable;
-       deUint32                                                        logicOpEnable;
-       VkLogicOp                                                       logicOp;
-       deUint32                                                        attachmentCount;
-       const VkPipelineCbAttachmentState*      pAttachments;
-};
-
 struct VkStencilOpState
 {
        VkStencilOp     stencilFailOp;
@@ -649,33 +598,80 @@ struct VkStencilOpState
        VkCompareOp     stencilCompareOp;
 };
 
-struct VkPipelineDsStateCreateInfo
+struct VkPipelineDepthStencilStateCreateInfo
 {
        VkStructureType         sType;
        const void*                     pNext;
-       VkFormat                        format;
-       deUint32                        depthTestEnable;
-       deUint32                        depthWriteEnable;
+       VkBool32                        depthTestEnable;
+       VkBool32                        depthWriteEnable;
        VkCompareOp                     depthCompareOp;
-       deUint32                        depthBoundsEnable;
-       deUint32                        stencilTestEnable;
+       VkBool32                        depthBoundsEnable;
+       VkBool32                        stencilTestEnable;
        VkStencilOpState        front;
        VkStencilOpState        back;
 };
 
-struct VkPipelineShaderStageCreateInfo
+struct VkPipelineColorBlendAttachmentState
 {
-       VkStructureType         sType;
-       const void*                     pNext;
-       VkPipelineShader        shader;
+       VkBool32                blendEnable;
+       VkBlend                 srcBlendColor;
+       VkBlend                 destBlendColor;
+       VkBlendOp               blendOpColor;
+       VkBlend                 srcBlendAlpha;
+       VkBlend                 destBlendAlpha;
+       VkBlendOp               blendOpAlpha;
+       VkChannelFlags  channelWriteMask;
+};
+
+struct VkPipelineColorBlendStateCreateInfo
+{
+       VkStructureType                                                         sType;
+       const void*                                                                     pNext;
+       VkBool32                                                                        alphaToCoverageEnable;
+       VkBool32                                                                        logicOpEnable;
+       VkLogicOp                                                                       logicOp;
+       deUint32                                                                        attachmentCount;
+       const VkPipelineColorBlendAttachmentState*      pAttachments;
 };
 
 struct VkGraphicsPipelineCreateInfo
 {
-       VkStructureType                 sType;
-       const void*                             pNext;
-       VkPipelineCreateFlags   flags;
-       VkPipelineLayout                layout;
+       VkStructureType                                                                 sType;
+       const void*                                                                             pNext;
+       deUint32                                                                                stageCount;
+       const VkPipelineShaderStageCreateInfo*                  pStages;
+       const VkPipelineVertexInputStateCreateInfo*             pVertexInputState;
+       const VkPipelineInputAssemblyStateCreateInfo*   pInputAssemblyState;
+       const VkPipelineTessellationStateCreateInfo*    pTessellationState;
+       const VkPipelineViewportStateCreateInfo*                pViewportState;
+       const VkPipelineRasterStateCreateInfo*                  pRasterState;
+       const VkPipelineMultisampleStateCreateInfo*             pMultisampleState;
+       const VkPipelineDepthStencilStateCreateInfo*    pDepthStencilState;
+       const VkPipelineColorBlendStateCreateInfo*              pColorBlendState;
+       VkPipelineCreateFlags                                                   flags;
+       VkPipelineLayout                                                                layout;
+       VkRenderPass                                                                    renderPass;
+       deUint32                                                                                subpass;
+       VkPipeline                                                                              basePipelineHandle;
+       deInt32                                                                                 basePipelineIndex;
+};
+
+struct VkComputePipelineCreateInfo
+{
+       VkStructureType                                 sType;
+       const void*                                             pNext;
+       VkPipelineShaderStageCreateInfo cs;
+       VkPipelineCreateFlags                   flags;
+       VkPipelineLayout                                layout;
+       VkPipeline                                              basePipelineHandle;
+       deInt32                                                 basePipelineIndex;
+};
+
+struct VkPushConstantRange
+{
+       VkShaderStageFlags      stageFlags;
+       deUint32                        start;
+       deUint32                        length;
 };
 
 struct VkPipelineLayoutCreateInfo
@@ -684,6 +680,8 @@ struct VkPipelineLayoutCreateInfo
        const void*                                             pNext;
        deUint32                                                descriptorSetCount;
        const VkDescriptorSetLayout*    pSetLayouts;
+       deUint32                                                pushConstantRangeCount;
+       const VkPushConstantRange*              pPushConstantRanges;
 };
 
 struct VkSamplerCreateInfo
@@ -697,58 +695,237 @@ struct VkSamplerCreateInfo
        VkTexAddress    addressV;
        VkTexAddress    addressW;
        float                   mipLodBias;
-       deUint32                maxAnisotropy;
+       float                   maxAnisotropy;
+       VkBool32                compareEnable;
        VkCompareOp             compareOp;
        float                   minLod;
        float                   maxLod;
        VkBorderColor   borderColor;
 };
 
-struct VkDynamicVpStateCreateInfo
+struct VkDescriptorSetLayoutBinding
+{
+       VkDescriptorType        descriptorType;
+       deUint32                        arraySize;
+       VkShaderStageFlags      stageFlags;
+       const VkSampler*        pImmutableSamplers;
+};
+
+struct VkDescriptorSetLayoutCreateInfo
+{
+       VkStructureType                                         sType;
+       const void*                                                     pNext;
+       deUint32                                                        count;
+       const VkDescriptorSetLayoutBinding*     pBinding;
+};
+
+struct VkDescriptorTypeCount
+{
+       VkDescriptorType        type;
+       deUint32                        count;
+};
+
+struct VkDescriptorPoolCreateInfo
+{
+       VkStructureType                                 sType;
+       const void*                                             pNext;
+       deUint32                                                count;
+       const VkDescriptorTypeCount*    pTypeCount;
+};
+
+struct VkDescriptorInfo
+{
+       VkBufferView            bufferView;
+       VkSampler                       sampler;
+       VkImageView                     imageView;
+       VkAttachmentView        attachmentView;
+       VkImageLayout           imageLayout;
+};
+
+struct VkWriteDescriptorSet
+{
+       VkStructureType                 sType;
+       const void*                             pNext;
+       VkDescriptorSet                 destSet;
+       deUint32                                destBinding;
+       deUint32                                destArrayElement;
+       deUint32                                count;
+       VkDescriptorType                descriptorType;
+       const VkDescriptorInfo* pDescriptors;
+};
+
+struct VkCopyDescriptorSet
+{
+       VkStructureType sType;
+       const void*             pNext;
+       VkDescriptorSet srcSet;
+       deUint32                srcBinding;
+       deUint32                srcArrayElement;
+       VkDescriptorSet destSet;
+       deUint32                destBinding;
+       deUint32                destArrayElement;
+       deUint32                count;
+};
+
+struct VkViewport
+{
+       float   originX;
+       float   originY;
+       float   width;
+       float   height;
+       float   minDepth;
+       float   maxDepth;
+};
+
+struct VkOffset2D
+{
+       deInt32 x;
+       deInt32 y;
+};
+
+struct VkExtent2D
+{
+       deInt32 width;
+       deInt32 height;
+};
+
+struct VkRect2D
+{
+       VkOffset2D      offset;
+       VkExtent2D      extent;
+};
+
+struct VkDynamicViewportStateCreateInfo
 {
        VkStructureType         sType;
        const void*                     pNext;
        deUint32                        viewportAndScissorCount;
        const VkViewport*       pViewports;
-       const VkRect*           pScissors;
+       const VkRect2D*         pScissors;
 };
 
-struct VkDynamicRsStateCreateInfo
+struct VkDynamicRasterStateCreateInfo
 {
        VkStructureType sType;
        const void*             pNext;
        float                   depthBias;
        float                   depthBiasClamp;
        float                   slopeScaledDepthBias;
-       float                   pointSize;
-       float                   pointFadeThreshold;
        float                   lineWidth;
 };
 
-struct VkDynamicCbStateCreateInfo
+struct VkDynamicColorBlendStateCreateInfo
 {
        VkStructureType sType;
        const void*             pNext;
        float                   blendConst[4];
 };
 
-struct VkDynamicDsStateCreateInfo
+struct VkDynamicDepthStencilStateCreateInfo
 {
        VkStructureType sType;
        const void*             pNext;
-       float                   minDepth;
-       float                   maxDepth;
+       float                   minDepthBounds;
+       float                   maxDepthBounds;
        deUint32                stencilReadMask;
        deUint32                stencilWriteMask;
        deUint32                stencilFrontRef;
        deUint32                stencilBackRef;
 };
 
+struct VkAttachmentBindInfo
+{
+       VkAttachmentView        view;
+       VkImageLayout           layout;
+};
+
+struct VkFramebufferCreateInfo
+{
+       VkStructureType                         sType;
+       const void*                                     pNext;
+       VkRenderPass                            renderPass;
+       deUint32                                        attachmentCount;
+       const VkAttachmentBindInfo*     pAttachments;
+       deUint32                                        width;
+       deUint32                                        height;
+       deUint32                                        layers;
+};
+
+struct VkAttachmentDescription
+{
+       VkStructureType         sType;
+       const void*                     pNext;
+       VkFormat                        format;
+       deUint32                        samples;
+       VkAttachmentLoadOp      loadOp;
+       VkAttachmentStoreOp     storeOp;
+       VkAttachmentLoadOp      stencilLoadOp;
+       VkAttachmentStoreOp     stencilStoreOp;
+       VkImageLayout           initialLayout;
+       VkImageLayout           finalLayout;
+};
+
+struct VkAttachmentReference
+{
+       deUint32                attachment;
+       VkImageLayout   layout;
+};
+
+struct VkSubpassDescription
+{
+       VkStructureType                                 sType;
+       const void*                                             pNext;
+       VkPipelineBindPoint                             pipelineBindPoint;
+       VkSubpassDescriptionFlags               flags;
+       deUint32                                                inputCount;
+       const VkAttachmentReference*    inputAttachments;
+       deUint32                                                colorCount;
+       const VkAttachmentReference*    colorAttachments;
+       const VkAttachmentReference*    resolveAttachments;
+       VkAttachmentReference                   depthStencilAttachment;
+       deUint32                                                preserveCount;
+       const VkAttachmentReference*    preserveAttachments;
+};
+
+struct VkSubpassDependency
+{
+       VkStructureType                 sType;
+       const void*                             pNext;
+       deUint32                                srcSubpass;
+       deUint32                                destSubpass;
+       VkPipelineStageFlags    srcStageMask;
+       VkPipelineStageFlags    destStageMask;
+       VkMemoryOutputFlags             outputMask;
+       VkMemoryInputFlags              inputMask;
+       VkBool32                                byRegion;
+};
+
+struct VkRenderPassCreateInfo
+{
+       VkStructureType                                 sType;
+       const void*                                             pNext;
+       deUint32                                                attachmentCount;
+       const VkAttachmentDescription*  pAttachments;
+       deUint32                                                subpassCount;
+       const VkSubpassDescription*             pSubpasses;
+       deUint32                                                dependencyCount;
+       const VkSubpassDependency*              pDependencies;
+};
+
+struct VkCmdPoolCreateInfo
+{
+       VkStructureType                 sType;
+       const void*                             pNext;
+       deUint32                                queueFamilyIndex;
+       VkCmdPoolCreateFlags    flags;
+};
+
 struct VkCmdBufferCreateInfo
 {
        VkStructureType                 sType;
        const void*                             pNext;
-       deUint32                                queueNodeIndex;
+       VkCmdPool                               cmdPool;
+       VkCmdBufferLevel                level;
        VkCmdBufferCreateFlags  flags;
 };
 
@@ -757,108 +934,109 @@ struct VkCmdBufferBeginInfo
        VkStructureType                         sType;
        const void*                                     pNext;
        VkCmdBufferOptimizeFlags        flags;
+       VkRenderPass                            renderPass;
+       VkFramebuffer                           framebuffer;
 };
 
-struct VkRenderPassBegin
+struct VkBufferCopy
 {
-       VkRenderPass    renderPass;
-       VkFramebuffer   framebuffer;
+       VkDeviceSize    srcOffset;
+       VkDeviceSize    destOffset;
+       VkDeviceSize    copySize;
 };
 
-struct VkCmdBufferGraphicsBeginInfo
+struct VkImageCopy
 {
-       VkStructureType         sType;
-       const void*                     pNext;
-       VkRenderPassBegin       renderPassContinue;
+       VkImageSubresource      srcSubresource;
+       VkOffset3D                      srcOffset;
+       VkImageSubresource      destSubresource;
+       VkOffset3D                      destOffset;
+       VkExtent3D                      extent;
+};
+
+struct VkImageBlit
+{
+       VkImageSubresource      srcSubresource;
+       VkOffset3D                      srcOffset;
+       VkExtent3D                      srcExtent;
+       VkImageSubresource      destSubresource;
+       VkOffset3D                      destOffset;
+       VkExtent3D                      destExtent;
 };
 
-struct VkClearColor
+struct VkBufferImageCopy
 {
-       VkClearColorValue       color;
-       deUint32                        useRawValue;
+       VkDeviceSize            bufferOffset;
+       deUint32                        bufferRowLength;
+       deUint32                        bufferImageHeight;
+       VkImageSubresource      imageSubresource;
+       VkOffset3D                      imageOffset;
+       VkExtent3D                      imageExtent;
 };
 
-struct VkRenderPassCreateInfo
+union VkClearColorValue
 {
-       VkStructureType                         sType;
-       const void*                                     pNext;
-       VkRect                                          renderArea;
-       deUint32                                        colorAttachmentCount;
-       VkExtent2D                                      extent;
-       deUint32                                        sampleCount;
-       deUint32                                        layers;
-       const VkFormat*                         pColorFormats;
-       const VkImageLayout*            pColorLayouts;
-       const VkAttachmentLoadOp*       pColorLoadOps;
-       const VkAttachmentStoreOp*      pColorStoreOps;
-       const VkClearColor*                     pColorLoadClearValues;
-       VkFormat                                        depthStencilFormat;
-       VkImageLayout                           depthStencilLayout;
-       VkAttachmentLoadOp                      depthLoadOp;
-       float                                           depthLoadClearValue;
-       VkAttachmentStoreOp                     depthStoreOp;
-       VkAttachmentLoadOp                      stencilLoadOp;
-       deUint32                                        stencilLoadClearValue;
-       VkAttachmentStoreOp                     stencilStoreOp;
+       float           f32[4];
+       deInt32         s32[4];
+       deUint32        u32[4];
 };
 
-struct VkEventCreateInfo
+struct VkRect3D
 {
-       VkStructureType         sType;
-       const void*                     pNext;
-       VkEventCreateFlags      flags;
+       VkOffset3D      offset;
+       VkExtent3D      extent;
 };
 
-struct VkFenceCreateInfo
+struct VkImageResolve
 {
-       VkStructureType         sType;
-       const void*                     pNext;
-       VkFenceCreateFlags      flags;
+       VkImageSubresource      srcSubresource;
+       VkOffset3D                      srcOffset;
+       VkImageSubresource      destSubresource;
+       VkOffset3D                      destOffset;
+       VkExtent3D                      extent;
 };
 
-struct VkSemaphoreCreateInfo
+struct VkClearDepthStencilValue
 {
-       VkStructureType                 sType;
-       const void*                             pNext;
-       deUint32                                initialCount;
-       VkSemaphoreCreateFlags  flags;
+       float           depth;
+       deUint32        stencil;
 };
 
-struct VkSemaphoreOpenInfo
+union VkClearValue
 {
-       VkStructureType sType;
-       const void*             pNext;
-       VkSemaphore             sharedSemaphore;
+       VkClearColorValue                       color;
+       VkClearDepthStencilValue        ds;
 };
 
-struct VkQueryPoolCreateInfo
+struct VkRenderPassBeginInfo
 {
-       VkStructureType                                 sType;
-       const void*                                             pNext;
-       VkQueryType                                             queryType;
-       deUint32                                                slots;
-       VkQueryPipelineStatisticFlags   pipelineStatistics;
+       VkStructureType         sType;
+       const void*                     pNext;
+       VkRenderPass            renderPass;
+       VkFramebuffer           framebuffer;
+       VkRect2D                        renderArea;
+       deUint32                        attachmentCount;
+       const VkClearValue*     pAttachmentClearValues;
 };
 
-struct VkFramebufferCreateInfo
+struct VkBufferMemoryBarrier
 {
-       VkStructureType                                         sType;
-       const void*                                                     pNext;
-       deUint32                                                        colorAttachmentCount;
-       const VkColorAttachmentBindInfo*        pColorAttachments;
-       const VkDepthStencilBindInfo*           pDepthStencilAttachment;
-       deUint32                                                        sampleCount;
-       deUint32                                                        width;
-       deUint32                                                        height;
-       deUint32                                                        layers;
+       VkStructureType         sType;
+       const void*                     pNext;
+       VkMemoryOutputFlags     outputMask;
+       VkMemoryInputFlags      inputMask;
+       deUint32                        srcQueueFamilyIndex;
+       deUint32                        destQueueFamilyIndex;
+       VkBuffer                        buffer;
+       VkDeviceSize            offset;
+       VkDeviceSize            size;
 };
 
-struct VkDrawIndirectCmd
+struct VkDispatchIndirectCmd
 {
-       deUint32        vertexCount;
-       deUint32        instanceCount;
-       deUint32        firstVertex;
-       deUint32        firstInstance;
+       deUint32        x;
+       deUint32        y;
+       deUint32        z;
 };
 
 struct VkDrawIndexedIndirectCmd
@@ -870,10 +1048,33 @@ struct VkDrawIndexedIndirectCmd
        deUint32        firstInstance;
 };
 
-struct VkDispatchIndirectCmd
+struct VkDrawIndirectCmd
 {
-       deUint32        x;
-       deUint32        y;
-       deUint32        z;
+       deUint32        vertexCount;
+       deUint32        instanceCount;
+       deUint32        firstVertex;
+       deUint32        firstInstance;
+};
+
+struct VkImageMemoryBarrier
+{
+       VkStructureType                 sType;
+       const void*                             pNext;
+       VkMemoryOutputFlags             outputMask;
+       VkMemoryInputFlags              inputMask;
+       VkImageLayout                   oldLayout;
+       VkImageLayout                   newLayout;
+       deUint32                                srcQueueFamilyIndex;
+       deUint32                                destQueueFamilyIndex;
+       VkImage                                 image;
+       VkImageSubresourceRange subresourceRange;
+};
+
+struct VkMemoryBarrier
+{
+       VkStructureType         sType;
+       const void*                     pNext;
+       VkMemoryOutputFlags     outputMask;
+       VkMemoryInputFlags      inputMask;
 };
 
index a56992c..54e012d 100644 (file)
 /* WARNING: This is auto-generated file. Do not modify, since changes will
  * be lost! Modify the generating script instead.
  */
-virtual VkResult       getPhysicalDeviceInfo                           (VkPhysicalDevice physicalDevice, VkPhysicalDeviceInfoType infoType, deUintptr* pDataSize, void* pData) const = 0;
-virtual VkResult       createDevice                                            (VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo* pCreateInfo, VkDevice* pDevice) const = 0;
-virtual VkResult       destroyDevice                                           (VkDevice device) const = 0;
-virtual VkResult       getGlobalExtensionInfo                          (VkExtensionInfoType infoType, deUint32 extensionIndex, deUintptr* pDataSize, void* pData) const = 0;
-virtual VkResult       getPhysicalDeviceExtensionInfo          (VkPhysicalDevice physicalDevice, VkExtensionInfoType infoType, deUint32 extensionIndex, deUintptr* pDataSize, void* pData) const = 0;
-virtual VkResult       enumerateLayers                                         (VkPhysicalDevice physicalDevice, deUintptr maxStringSize, deUintptr* pLayerCount, char* const* pOutLayers, void* pReserved) const = 0;
-virtual VkResult       getDeviceQueue                                          (VkDevice device, deUint32 queueNodeIndex, deUint32 queueIndex, VkQueue* pQueue) const = 0;
-virtual VkResult       queueSubmit                                                     (VkQueue queue, deUint32 cmdBufferCount, const VkCmdBuffer* pCmdBuffers, VkFence fence) const = 0;
-virtual VkResult       queueAddMemReferences                           (VkQueue queue, deUint32 count, const VkDeviceMemory* pMems) const = 0;
-virtual VkResult       queueRemoveMemReferences                        (VkQueue queue, deUint32 count, const VkDeviceMemory* pMems) const = 0;
-virtual VkResult       queueWaitIdle                                           (VkQueue queue) const = 0;
-virtual VkResult       deviceWaitIdle                                          (VkDevice device) const = 0;
-virtual VkResult       allocMemory                                                     (VkDevice device, const VkMemoryAllocInfo* pAllocInfo, VkDeviceMemory* pMem) const = 0;
-virtual VkResult       freeMemory                                                      (VkDevice device, VkDeviceMemory mem) const = 0;
-virtual VkResult       setMemoryPriority                                       (VkDevice device, VkDeviceMemory mem, VkMemoryPriority priority) const = 0;
-virtual VkResult       mapMemory                                                       (VkDevice device, VkDeviceMemory mem, VkDeviceSize offset, VkDeviceSize size, VkMemoryMapFlags flags, void** ppData) const = 0;
-virtual VkResult       unmapMemory                                                     (VkDevice device, VkDeviceMemory mem) const = 0;
-virtual VkResult       flushMappedMemory                                       (VkDevice device, VkDeviceMemory mem, VkDeviceSize offset, VkDeviceSize size) const = 0;
-virtual VkResult       pinSystemMemory                                         (VkDevice device, const void* pSysMem, deUintptr memSize, VkDeviceMemory* pMem) const = 0;
-virtual VkResult       getMultiDeviceCompatibility                     (VkPhysicalDevice physicalDevice0, VkPhysicalDevice physicalDevice1, VkPhysicalDeviceCompatibilityInfo* pInfo) const = 0;
-virtual VkResult       openSharedMemory                                        (VkDevice device, const VkMemoryOpenInfo* pOpenInfo, VkDeviceMemory* pMem) const = 0;
-virtual VkResult       openSharedSemaphore                                     (VkDevice device, const VkSemaphoreOpenInfo* pOpenInfo, VkSemaphore* pSemaphore) const = 0;
-virtual VkResult       openPeerMemory                                          (VkDevice device, const VkPeerMemoryOpenInfo* pOpenInfo, VkDeviceMemory* pMem) const = 0;
-virtual VkResult       openPeerImage                                           (VkDevice device, const VkPeerImageOpenInfo* pOpenInfo, VkImage* pImage, VkDeviceMemory* pMem) const = 0;
-virtual VkResult       destroyObject                                           (VkDevice device, VkObjectType objType, VkObject object) const = 0;
-virtual VkResult       getObjectInfo                                           (VkDevice device, VkObjectType objType, VkObject object, VkObjectInfoType infoType, deUintptr* pDataSize, void* pData) const = 0;
-virtual VkResult       queueBindObjectMemory                           (VkQueue queue, VkObjectType objType, VkObject object, deUint32 allocationIdx, VkDeviceMemory mem, VkDeviceSize memOffset) const = 0;
-virtual VkResult       queueBindObjectMemoryRange                      (VkQueue queue, VkObjectType objType, VkObject object, deUint32 allocationIdx, VkDeviceSize rangeOffset, VkDeviceSize rangeSize, VkDeviceMemory mem, VkDeviceSize memOffset) const = 0;
-virtual VkResult       queueBindImageMemoryRange                       (VkQueue queue, VkImage image, deUint32 allocationIdx, const VkImageMemoryBindInfo* pBindInfo, VkDeviceMemory mem, VkDeviceSize memOffset) const = 0;
-virtual VkResult       createFence                                                     (VkDevice device, const VkFenceCreateInfo* pCreateInfo, VkFence* pFence) const = 0;
-virtual VkResult       resetFences                                                     (VkDevice device, deUint32 fenceCount, VkFence* pFences) const = 0;
-virtual VkResult       getFenceStatus                                          (VkDevice device, VkFence fence) const = 0;
-virtual VkResult       waitForFences                                           (VkDevice device, deUint32 fenceCount, const VkFence* pFences, deUint32 waitAll, deUint64 timeout) const = 0;
-virtual VkResult       createSemaphore                                         (VkDevice device, const VkSemaphoreCreateInfo* pCreateInfo, VkSemaphore* pSemaphore) const = 0;
-virtual VkResult       queueSignalSemaphore                            (VkQueue queue, VkSemaphore semaphore) const = 0;
-virtual VkResult       queueWaitSemaphore                                      (VkQueue queue, VkSemaphore semaphore) const = 0;
-virtual VkResult       createEvent                                                     (VkDevice device, const VkEventCreateInfo* pCreateInfo, VkEvent* pEvent) const = 0;
-virtual VkResult       getEventStatus                                          (VkDevice device, VkEvent event) const = 0;
-virtual VkResult       setEvent                                                        (VkDevice device, VkEvent event) const = 0;
-virtual VkResult       resetEvent                                                      (VkDevice device, VkEvent event) const = 0;
-virtual VkResult       createQueryPool                                         (VkDevice device, const VkQueryPoolCreateInfo* pCreateInfo, VkQueryPool* pQueryPool) const = 0;
-virtual VkResult       getQueryPoolResults                                     (VkDevice device, VkQueryPool queryPool, deUint32 startQuery, deUint32 queryCount, deUintptr* pDataSize, void* pData, VkQueryResultFlags flags) const = 0;
-virtual VkResult       getFormatInfo                                           (VkDevice device, VkFormat format, VkFormatInfoType infoType, deUintptr* pDataSize, void* pData) const = 0;
-virtual VkResult       createBuffer                                            (VkDevice device, const VkBufferCreateInfo* pCreateInfo, VkBuffer* pBuffer) const = 0;
-virtual VkResult       createBufferView                                        (VkDevice device, const VkBufferViewCreateInfo* pCreateInfo, VkBufferView* pView) const = 0;
-virtual VkResult       createImage                                                     (VkDevice device, const VkImageCreateInfo* pCreateInfo, VkImage* pImage) const = 0;
-virtual VkResult       getImageSubresourceInfo                         (VkDevice device, VkImage image, const VkImageSubresource* pSubresource, VkSubresourceInfoType infoType, deUintptr* pDataSize, void* pData) const = 0;
-virtual VkResult       createImageView                                         (VkDevice device, const VkImageViewCreateInfo* pCreateInfo, VkImageView* pView) const = 0;
-virtual VkResult       createColorAttachmentView                       (VkDevice device, const VkColorAttachmentViewCreateInfo* pCreateInfo, VkColorAttachmentView* pView) const = 0;
-virtual VkResult       createDepthStencilView                          (VkDevice device, const VkDepthStencilViewCreateInfo* pCreateInfo, VkDepthStencilView* pView) const = 0;
-virtual VkResult       createShader                                            (VkDevice device, const VkShaderCreateInfo* pCreateInfo, VkShader* pShader) const = 0;
-virtual VkResult       createGraphicsPipeline                          (VkDevice device, const VkGraphicsPipelineCreateInfo* pCreateInfo, VkPipeline* pPipeline) const = 0;
-virtual VkResult       createGraphicsPipelineDerivative        (VkDevice device, const VkGraphicsPipelineCreateInfo* pCreateInfo, VkPipeline basePipeline, VkPipeline* pPipeline) const = 0;
-virtual VkResult       createComputePipeline                           (VkDevice device, const VkComputePipelineCreateInfo* pCreateInfo, VkPipeline* pPipeline) const = 0;
-virtual VkResult       storePipeline                                           (VkDevice device, VkPipeline pipeline, deUintptr* pDataSize, void* pData) const = 0;
-virtual VkResult       loadPipeline                                            (VkDevice device, deUintptr dataSize, const void* pData, VkPipeline* pPipeline) const = 0;
-virtual VkResult       loadPipelineDerivative                          (VkDevice device, deUintptr dataSize, const void* pData, VkPipeline basePipeline, VkPipeline* pPipeline) const = 0;
-virtual VkResult       createPipelineLayout                            (VkDevice device, const VkPipelineLayoutCreateInfo* pCreateInfo, VkPipelineLayout* pPipelineLayout) const = 0;
-virtual VkResult       createSampler                                           (VkDevice device, const VkSamplerCreateInfo* pCreateInfo, VkSampler* pSampler) const = 0;
-virtual VkResult       createDescriptorSetLayout                       (VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, VkDescriptorSetLayout* pSetLayout) const = 0;
-virtual VkResult       beginDescriptorPoolUpdate                       (VkDevice device, VkDescriptorUpdateMode updateMode) const = 0;
-virtual VkResult       endDescriptorPoolUpdate                         (VkDevice device, VkCmdBuffer cmd) const = 0;
-virtual VkResult       createDescriptorPool                            (VkDevice device, VkDescriptorPoolUsage poolUsage, deUint32 maxSets, const VkDescriptorPoolCreateInfo* pCreateInfo, VkDescriptorPool* pDescriptorPool) const = 0;
-virtual VkResult       resetDescriptorPool                                     (VkDevice device, VkDescriptorPool descriptorPool) const = 0;
-virtual VkResult       allocDescriptorSets                                     (VkDevice device, VkDescriptorPool descriptorPool, VkDescriptorSetUsage setUsage, deUint32 count, const VkDescriptorSetLayout* pSetLayouts, VkDescriptorSet* pDescriptorSets, deUint32* pCount) const = 0;
-virtual void           clearDescriptorSets                                     (VkDevice device, VkDescriptorPool descriptorPool, deUint32 count, const VkDescriptorSet* pDescriptorSets) const = 0;
-virtual void           updateDescriptors                                       (VkDevice device, VkDescriptorSet descriptorSet, deUint32 updateCount, const void** ppUpdateArray) const = 0;
-virtual VkResult       createDynamicViewportState                      (VkDevice device, const VkDynamicVpStateCreateInfo* pCreateInfo, VkDynamicVpState* pState) const = 0;
-virtual VkResult       createDynamicRasterState                        (VkDevice device, const VkDynamicRsStateCreateInfo* pCreateInfo, VkDynamicRsState* pState) const = 0;
-virtual VkResult       createDynamicColorBlendState            (VkDevice device, const VkDynamicCbStateCreateInfo* pCreateInfo, VkDynamicCbState* pState) const = 0;
-virtual VkResult       createDynamicDepthStencilState          (VkDevice device, const VkDynamicDsStateCreateInfo* pCreateInfo, VkDynamicDsState* pState) const = 0;
-virtual VkResult       createCommandBuffer                                     (VkDevice device, const VkCmdBufferCreateInfo* pCreateInfo, VkCmdBuffer* pCmdBuffer) const = 0;
-virtual VkResult       beginCommandBuffer                                      (VkCmdBuffer cmdBuffer, const VkCmdBufferBeginInfo* pBeginInfo) const = 0;
-virtual VkResult       endCommandBuffer                                        (VkCmdBuffer cmdBuffer) const = 0;
-virtual VkResult       resetCommandBuffer                                      (VkCmdBuffer cmdBuffer) const = 0;
-virtual void           cmdBindPipeline                                         (VkCmdBuffer cmdBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline) const = 0;
-virtual void           cmdBindDynamicStateObject                       (VkCmdBuffer cmdBuffer, VkStateBindPoint stateBindPoint, VkDynamicStateObject dynamicState) const = 0;
-virtual void           cmdBindDescriptorSets                           (VkCmdBuffer cmdBuffer, VkPipelineBindPoint pipelineBindPoint, deUint32 firstSet, deUint32 setCount, const VkDescriptorSet* pDescriptorSets, deUint32 dynamicOffsetCount, const deUint32* pDynamicOffsets) const = 0;
-virtual void           cmdBindIndexBuffer                                      (VkCmdBuffer cmdBuffer, VkBuffer buffer, VkDeviceSize offset, VkIndexType indexType) const = 0;
-virtual void           cmdBindVertexBuffers                            (VkCmdBuffer cmdBuffer, deUint32 startBinding, deUint32 bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets) const = 0;
-virtual void           cmdDraw                                                         (VkCmdBuffer cmdBuffer, deUint32 firstVertex, deUint32 vertexCount, deUint32 firstInstance, deUint32 instanceCount) const = 0;
-virtual void           cmdDrawIndexed                                          (VkCmdBuffer cmdBuffer, deUint32 firstIndex, deUint32 indexCount, deInt32 vertexOffset, deUint32 firstInstance, deUint32 instanceCount) const = 0;
-virtual void           cmdDrawIndirect                                         (VkCmdBuffer cmdBuffer, VkBuffer buffer, VkDeviceSize offset, deUint32 count, deUint32 stride) const = 0;
-virtual void           cmdDrawIndexedIndirect                          (VkCmdBuffer cmdBuffer, VkBuffer buffer, VkDeviceSize offset, deUint32 count, deUint32 stride) const = 0;
-virtual void           cmdDispatch                                                     (VkCmdBuffer cmdBuffer, deUint32 x, deUint32 y, deUint32 z) const = 0;
-virtual void           cmdDispatchIndirect                                     (VkCmdBuffer cmdBuffer, VkBuffer buffer, VkDeviceSize offset) const = 0;
-virtual void           cmdCopyBuffer                                           (VkCmdBuffer cmdBuffer, VkBuffer srcBuffer, VkBuffer destBuffer, deUint32 regionCount, const VkBufferCopy* pRegions) const = 0;
-virtual void           cmdCopyImage                                            (VkCmdBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage destImage, VkImageLayout destImageLayout, deUint32 regionCount, const VkImageCopy* pRegions) const = 0;
-virtual void           cmdBlitImage                                            (VkCmdBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage destImage, VkImageLayout destImageLayout, deUint32 regionCount, const VkImageBlit* pRegions) const = 0;
-virtual void           cmdCopyBufferToImage                            (VkCmdBuffer cmdBuffer, VkBuffer srcBuffer, VkImage destImage, VkImageLayout destImageLayout, deUint32 regionCount, const VkBufferImageCopy* pRegions) const = 0;
-virtual void           cmdCopyImageToBuffer                            (VkCmdBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkBuffer destBuffer, deUint32 regionCount, const VkBufferImageCopy* pRegions) const = 0;
-virtual void           cmdCloneImageData                                       (VkCmdBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage destImage, VkImageLayout destImageLayout) const = 0;
-virtual void           cmdUpdateBuffer                                         (VkCmdBuffer cmdBuffer, VkBuffer destBuffer, VkDeviceSize destOffset, VkDeviceSize dataSize, const deUint32* pData) const = 0;
-virtual void           cmdFillBuffer                                           (VkCmdBuffer cmdBuffer, VkBuffer destBuffer, VkDeviceSize destOffset, VkDeviceSize fillSize, deUint32 data) const = 0;
-virtual void           cmdClearColorImage                                      (VkCmdBuffer cmdBuffer, VkImage image, VkImageLayout imageLayout, VkClearColor color, deUint32 rangeCount, const VkImageSubresourceRange* pRanges) const = 0;
-virtual void           cmdClearDepthStencil                            (VkCmdBuffer cmdBuffer, VkImage image, VkImageLayout imageLayout, float depth, deUint32 stencil, deUint32 rangeCount, const VkImageSubresourceRange* pRanges) const = 0;
-virtual void           cmdResolveImage                                         (VkCmdBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage destImage, VkImageLayout destImageLayout, deUint32 regionCount, const VkImageResolve* pRegions) const = 0;
-virtual void           cmdSetEvent                                                     (VkCmdBuffer cmdBuffer, VkEvent event, VkPipeEvent pipeEvent) const = 0;
-virtual void           cmdResetEvent                                           (VkCmdBuffer cmdBuffer, VkEvent event, VkPipeEvent pipeEvent) const = 0;
-virtual void           cmdWaitEvents                                           (VkCmdBuffer cmdBuffer, VkWaitEvent waitEvent, deUint32 eventCount, const VkEvent* pEvents, deUint32 memBarrierCount, const void** ppMemBarriers) const = 0;
-virtual void           cmdPipelineBarrier                                      (VkCmdBuffer cmdBuffer, VkWaitEvent waitEvent, deUint32 pipeEventCount, const VkPipeEvent* pPipeEvents, deUint32 memBarrierCount, const void** ppMemBarriers) const = 0;
-virtual void           cmdBeginQuery                                           (VkCmdBuffer cmdBuffer, VkQueryPool queryPool, deUint32 slot, VkQueryControlFlags flags) const = 0;
-virtual void           cmdEndQuery                                                     (VkCmdBuffer cmdBuffer, VkQueryPool queryPool, deUint32 slot) const = 0;
-virtual void           cmdResetQueryPool                                       (VkCmdBuffer cmdBuffer, VkQueryPool queryPool, deUint32 startQuery, deUint32 queryCount) const = 0;
-virtual void           cmdWriteTimestamp                                       (VkCmdBuffer cmdBuffer, VkTimestampType timestampType, VkBuffer destBuffer, VkDeviceSize destOffset) const = 0;
-virtual void           cmdCopyQueryPoolResults                         (VkCmdBuffer cmdBuffer, VkQueryPool queryPool, deUint32 startQuery, deUint32 queryCount, VkBuffer destBuffer, VkDeviceSize destOffset, VkDeviceSize destStride, VkQueryResultFlags flags) const = 0;
-virtual void           cmdInitAtomicCounters                           (VkCmdBuffer cmdBuffer, VkPipelineBindPoint pipelineBindPoint, deUint32 startCounter, deUint32 counterCount, const deUint32* pData) const = 0;
-virtual void           cmdLoadAtomicCounters                           (VkCmdBuffer cmdBuffer, VkPipelineBindPoint pipelineBindPoint, deUint32 startCounter, deUint32 counterCount, VkBuffer srcBuffer, VkDeviceSize srcOffset) const = 0;
-virtual void           cmdSaveAtomicCounters                           (VkCmdBuffer cmdBuffer, VkPipelineBindPoint pipelineBindPoint, deUint32 startCounter, deUint32 counterCount, VkBuffer destBuffer, VkDeviceSize destOffset) const = 0;
-virtual VkResult       createFramebuffer                                       (VkDevice device, const VkFramebufferCreateInfo* pCreateInfo, VkFramebuffer* pFramebuffer) const = 0;
-virtual VkResult       createRenderPass                                        (VkDevice device, const VkRenderPassCreateInfo* pCreateInfo, VkRenderPass* pRenderPass) const = 0;
-virtual void           cmdBeginRenderPass                                      (VkCmdBuffer cmdBuffer, const VkRenderPassBegin* pRenderPassBegin) const = 0;
-virtual void           cmdEndRenderPass                                        (VkCmdBuffer cmdBuffer, VkRenderPass renderPass) const = 0;
+virtual VkResult       destroyDevice                                                                   (VkDevice device) const = 0;
+virtual VkResult       getGlobalExtensionProperties                                    (const char* pLayerName, deUint32* pCount, VkExtensionProperties* pProperties) const = 0;
+virtual VkResult       getPhysicalDeviceExtensionProperties                    (VkPhysicalDevice physicalDevice, const char* pLayerName, deUint32* pCount, VkExtensionProperties* pProperties) const = 0;
+virtual VkResult       getGlobalLayerProperties                                                (deUint32* pCount, VkLayerProperties* pProperties) const = 0;
+virtual VkResult       getPhysicalDeviceLayerProperties                                (VkPhysicalDevice physicalDevice, deUint32* pCount, VkLayerProperties* pProperties) const = 0;
+virtual VkResult       getDeviceQueue                                                                  (VkDevice device, deUint32 queueFamilyIndex, deUint32 queueIndex, VkQueue* pQueue) const = 0;
+virtual VkResult       queueSubmit                                                                             (VkQueue queue, deUint32 cmdBufferCount, const VkCmdBuffer* pCmdBuffers, VkFence fence) const = 0;
+virtual VkResult       queueWaitIdle                                                                   (VkQueue queue) const = 0;
+virtual VkResult       deviceWaitIdle                                                                  (VkDevice device) const = 0;
+virtual VkResult       allocMemory                                                                             (VkDevice device, const VkMemoryAllocInfo* pAllocInfo, VkDeviceMemory* pMem) const = 0;
+virtual VkResult       freeMemory                                                                              (VkDevice device, VkDeviceMemory mem) const = 0;
+virtual VkResult       mapMemory                                                                               (VkDevice device, VkDeviceMemory mem, VkDeviceSize offset, VkDeviceSize size, VkMemoryMapFlags flags, void** ppData) const = 0;
+virtual VkResult       unmapMemory                                                                             (VkDevice device, VkDeviceMemory mem) const = 0;
+virtual VkResult       flushMappedMemoryRanges                                                 (VkDevice device, deUint32 memRangeCount, const VkMappedMemoryRange* pMemRanges) const = 0;
+virtual VkResult       invalidateMappedMemoryRanges                                    (VkDevice device, deUint32 memRangeCount, const VkMappedMemoryRange* pMemRanges) const = 0;
+virtual VkResult       getDeviceMemoryCommitment                                               (VkDevice device, VkDeviceMemory memory, VkDeviceSize* pCommittedMemoryInBytes) const = 0;
+virtual VkResult       bindBufferMemory                                                                (VkDevice device, VkBuffer buffer, VkDeviceMemory mem, VkDeviceSize memOffset) const = 0;
+virtual VkResult       bindImageMemory                                                                 (VkDevice device, VkImage image, VkDeviceMemory mem, VkDeviceSize memOffset) const = 0;
+virtual VkResult       getBufferMemoryRequirements                                             (VkDevice device, VkBuffer buffer, VkMemoryRequirements* pMemoryRequirements) const = 0;
+virtual VkResult       getImageMemoryRequirements                                              (VkDevice device, VkImage image, VkMemoryRequirements* pMemoryRequirements) const = 0;
+virtual VkResult       getImageSparseMemoryRequirements                                (VkDevice device, VkImage image, deUint32* pNumRequirements, VkSparseImageMemoryRequirements* pSparseMemoryRequirements) const = 0;
+virtual VkResult       getPhysicalDeviceSparseImageFormatProperties    (VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, deUint32 samples, VkImageUsageFlags usage, VkImageTiling tiling, deUint32* pNumProperties, VkSparseImageFormatProperties* pProperties) const = 0;
+virtual VkResult       queueBindSparseBufferMemory                                             (VkQueue queue, VkBuffer buffer, deUint32 numBindings, const VkSparseMemoryBindInfo* pBindInfo) const = 0;
+virtual VkResult       queueBindSparseImageOpaqueMemory                                (VkQueue queue, VkImage image, deUint32 numBindings, const VkSparseMemoryBindInfo* pBindInfo) const = 0;
+virtual VkResult       queueBindSparseImageMemory                                              (VkQueue queue, VkImage image, deUint32 numBindings, const VkSparseImageMemoryBindInfo* pBindInfo) const = 0;
+virtual VkResult       createFence                                                                             (VkDevice device, const VkFenceCreateInfo* pCreateInfo, VkFence* pFence) const = 0;
+virtual VkResult       destroyFence                                                                    (VkDevice device, VkFence fence) const = 0;
+virtual VkResult       resetFences                                                                             (VkDevice device, deUint32 fenceCount, const VkFence* pFences) const = 0;
+virtual VkResult       getFenceStatus                                                                  (VkDevice device, VkFence fence) const = 0;
+virtual VkResult       waitForFences                                                                   (VkDevice device, deUint32 fenceCount, const VkFence* pFences, VkBool32 waitAll, deUint64 timeout) const = 0;
+virtual VkResult       createSemaphore                                                                 (VkDevice device, const VkSemaphoreCreateInfo* pCreateInfo, VkSemaphore* pSemaphore) const = 0;
+virtual VkResult       destroySemaphore                                                                (VkDevice device, VkSemaphore semaphore) const = 0;
+virtual VkResult       queueSignalSemaphore                                                    (VkQueue queue, VkSemaphore semaphore) const = 0;
+virtual VkResult       queueWaitSemaphore                                                              (VkQueue queue, VkSemaphore semaphore) const = 0;
+virtual VkResult       createEvent                                                                             (VkDevice device, const VkEventCreateInfo* pCreateInfo, VkEvent* pEvent) const = 0;
+virtual VkResult       destroyEvent                                                                    (VkDevice device, VkEvent event) const = 0;
+virtual VkResult       getEventStatus                                                                  (VkDevice device, VkEvent event) const = 0;
+virtual VkResult       setEvent                                                                                (VkDevice device, VkEvent event) const = 0;
+virtual VkResult       resetEvent                                                                              (VkDevice device, VkEvent event) const = 0;
+virtual VkResult       createQueryPool                                                                 (VkDevice device, const VkQueryPoolCreateInfo* pCreateInfo, VkQueryPool* pQueryPool) const = 0;
+virtual VkResult       destroyQueryPool                                                                (VkDevice device, VkQueryPool queryPool) const = 0;
+virtual VkResult       getQueryPoolResults                                                             (VkDevice device, VkQueryPool queryPool, deUint32 startQuery, deUint32 queryCount, deUintptr* pDataSize, void* pData, VkQueryResultFlags flags) const = 0;
+virtual VkResult       createBuffer                                                                    (VkDevice device, const VkBufferCreateInfo* pCreateInfo, VkBuffer* pBuffer) const = 0;
+virtual VkResult       destroyBuffer                                                                   (VkDevice device, VkBuffer buffer) const = 0;
+virtual VkResult       createBufferView                                                                (VkDevice device, const VkBufferViewCreateInfo* pCreateInfo, VkBufferView* pView) const = 0;
+virtual VkResult       destroyBufferView                                                               (VkDevice device, VkBufferView bufferView) const = 0;
+virtual VkResult       createImage                                                                             (VkDevice device, const VkImageCreateInfo* pCreateInfo, VkImage* pImage) const = 0;
+virtual VkResult       destroyImage                                                                    (VkDevice device, VkImage image) const = 0;
+virtual VkResult       getImageSubresourceLayout                                               (VkDevice device, VkImage image, const VkImageSubresource* pSubresource, VkSubresourceLayout* pLayout) const = 0;
+virtual VkResult       createImageView                                                                 (VkDevice device, const VkImageViewCreateInfo* pCreateInfo, VkImageView* pView) const = 0;
+virtual VkResult       destroyImageView                                                                (VkDevice device, VkImageView imageView) const = 0;
+virtual VkResult       createAttachmentView                                                    (VkDevice device, const VkAttachmentViewCreateInfo* pCreateInfo, VkAttachmentView* pView) const = 0;
+virtual VkResult       destroyAttachmentView                                                   (VkDevice device, VkAttachmentView attachmentView) const = 0;
+virtual VkResult       createShaderModule                                                              (VkDevice device, const VkShaderModuleCreateInfo* pCreateInfo, VkShaderModule* pShaderModule) const = 0;
+virtual VkResult       destroyShaderModule                                                             (VkDevice device, VkShaderModule shaderModule) const = 0;
+virtual VkResult       createShader                                                                    (VkDevice device, const VkShaderCreateInfo* pCreateInfo, VkShader* pShader) const = 0;
+virtual VkResult       destroyShader                                                                   (VkDevice device, VkShader shader) const = 0;
+virtual VkResult       createPipelineCache                                                             (VkDevice device, const VkPipelineCacheCreateInfo* pCreateInfo, VkPipelineCache* pPipelineCache) const = 0;
+virtual VkResult       destroyPipelineCache                                                    (VkDevice device, VkPipelineCache pipelineCache) const = 0;
+virtual deUintptr      getPipelineCacheSize                                                    (VkDevice device, VkPipelineCache pipelineCache) const = 0;
+virtual VkResult       getPipelineCacheData                                                    (VkDevice device, VkPipelineCache pipelineCache, void* pData) const = 0;
+virtual VkResult       mergePipelineCaches                                                             (VkDevice device, VkPipelineCache destCache, deUint32 srcCacheCount, const VkPipelineCache* pSrcCaches) const = 0;
+virtual VkResult       createGraphicsPipelines                                                 (VkDevice device, VkPipelineCache pipelineCache, deUint32 count, const VkGraphicsPipelineCreateInfo* pCreateInfos, VkPipeline* pPipelines) const = 0;
+virtual VkResult       createComputePipelines                                                  (VkDevice device, VkPipelineCache pipelineCache, deUint32 count, const VkComputePipelineCreateInfo* pCreateInfos, VkPipeline* pPipelines) const = 0;
+virtual VkResult       destroyPipeline                                                                 (VkDevice device, VkPipeline pipeline) const = 0;
+virtual VkResult       createPipelineLayout                                                    (VkDevice device, const VkPipelineLayoutCreateInfo* pCreateInfo, VkPipelineLayout* pPipelineLayout) const = 0;
+virtual VkResult       destroyPipelineLayout                                                   (VkDevice device, VkPipelineLayout pipelineLayout) const = 0;
+virtual VkResult       createSampler                                                                   (VkDevice device, const VkSamplerCreateInfo* pCreateInfo, VkSampler* pSampler) const = 0;
+virtual VkResult       destroySampler                                                                  (VkDevice device, VkSampler sampler) const = 0;
+virtual VkResult       createDescriptorSetLayout                                               (VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, VkDescriptorSetLayout* pSetLayout) const = 0;
+virtual VkResult       destroyDescriptorSetLayout                                              (VkDevice device, VkDescriptorSetLayout descriptorSetLayout) const = 0;
+virtual VkResult       createDescriptorPool                                                    (VkDevice device, VkDescriptorPoolUsage poolUsage, deUint32 maxSets, const VkDescriptorPoolCreateInfo* pCreateInfo, VkDescriptorPool* pDescriptorPool) const = 0;
+virtual VkResult       destroyDescriptorPool                                                   (VkDevice device, VkDescriptorPool descriptorPool) const = 0;
+virtual VkResult       resetDescriptorPool                                                             (VkDevice device, VkDescriptorPool descriptorPool) const = 0;
+virtual VkResult       allocDescriptorSets                                                             (VkDevice device, VkDescriptorPool descriptorPool, VkDescriptorSetUsage setUsage, deUint32 count, const VkDescriptorSetLayout* pSetLayouts, VkDescriptorSet* pDescriptorSets, deUint32* pCount) const = 0;
+virtual VkResult       updateDescriptorSets                                                    (VkDevice device, deUint32 writeCount, const VkWriteDescriptorSet* pDescriptorWrites, deUint32 copyCount, const VkCopyDescriptorSet* pDescriptorCopies) const = 0;
+virtual VkResult       createDynamicViewportState                                              (VkDevice device, const VkDynamicViewportStateCreateInfo* pCreateInfo, VkDynamicViewportState* pState) const = 0;
+virtual VkResult       destroyDynamicViewportState                                             (VkDevice device, VkDynamicViewportState dynamicViewportState) const = 0;
+virtual VkResult       createDynamicRasterState                                                (VkDevice device, const VkDynamicRasterStateCreateInfo* pCreateInfo, VkDynamicRasterState* pState) const = 0;
+virtual VkResult       destroyDynamicRasterState                                               (VkDevice device, VkDynamicRasterState dynamicRasterState) const = 0;
+virtual VkResult       createDynamicColorBlendState                                    (VkDevice device, const VkDynamicColorBlendStateCreateInfo* pCreateInfo, VkDynamicColorBlendState* pState) const = 0;
+virtual VkResult       destroyDynamicColorBlendState                                   (VkDevice device, VkDynamicColorBlendState dynamicColorBlendState) const = 0;
+virtual VkResult       createDynamicDepthStencilState                                  (VkDevice device, const VkDynamicDepthStencilStateCreateInfo* pCreateInfo, VkDynamicDepthStencilState* pState) const = 0;
+virtual VkResult       destroyDynamicDepthStencilState                                 (VkDevice device, VkDynamicDepthStencilState dynamicDepthStencilState) const = 0;
+virtual VkResult       createFramebuffer                                                               (VkDevice device, const VkFramebufferCreateInfo* pCreateInfo, VkFramebuffer* pFramebuffer) const = 0;
+virtual VkResult       destroyFramebuffer                                                              (VkDevice device, VkFramebuffer framebuffer) const = 0;
+virtual VkResult       createRenderPass                                                                (VkDevice device, const VkRenderPassCreateInfo* pCreateInfo, VkRenderPass* pRenderPass) const = 0;
+virtual VkResult       destroyRenderPass                                                               (VkDevice device, VkRenderPass renderPass) const = 0;
+virtual VkResult       getRenderAreaGranularity                                                (VkDevice device, VkRenderPass renderPass, VkExtent2D* pGranularity) const = 0;
+virtual VkResult       createCommandPool                                                               (VkDevice device, const VkCmdPoolCreateInfo* pCreateInfo, VkCmdPool* pCmdPool) const = 0;
+virtual VkResult       destroyCommandPool                                                              (VkDevice device, VkCmdPool cmdPool) const = 0;
+virtual VkResult       resetCommandPool                                                                (VkDevice device, VkCmdPool cmdPool, VkCmdPoolResetFlags flags) const = 0;
+virtual VkResult       createCommandBuffer                                                             (VkDevice device, const VkCmdBufferCreateInfo* pCreateInfo, VkCmdBuffer* pCmdBuffer) const = 0;
+virtual VkResult       destroyCommandBuffer                                                    (VkDevice device, VkCmdBuffer commandBuffer) const = 0;
+virtual VkResult       beginCommandBuffer                                                              (VkCmdBuffer cmdBuffer, const VkCmdBufferBeginInfo* pBeginInfo) const = 0;
+virtual VkResult       endCommandBuffer                                                                (VkCmdBuffer cmdBuffer) const = 0;
+virtual VkResult       resetCommandBuffer                                                              (VkCmdBuffer cmdBuffer, VkCmdBufferResetFlags flags) const = 0;
+virtual void           cmdBindPipeline                                                                 (VkCmdBuffer cmdBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline) const = 0;
+virtual void           cmdBindDynamicViewportState                                             (VkCmdBuffer cmdBuffer, VkDynamicViewportState dynamicViewportState) const = 0;
+virtual void           cmdBindDynamicRasterState                                               (VkCmdBuffer cmdBuffer, VkDynamicRasterState dynamicRasterState) const = 0;
+virtual void           cmdBindDynamicColorBlendState                                   (VkCmdBuffer cmdBuffer, VkDynamicColorBlendState dynamicColorBlendState) const = 0;
+virtual void           cmdBindDynamicDepthStencilState                                 (VkCmdBuffer cmdBuffer, VkDynamicDepthStencilState dynamicDepthStencilState) const = 0;
+virtual void           cmdBindDescriptorSets                                                   (VkCmdBuffer cmdBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, deUint32 firstSet, deUint32 setCount, const VkDescriptorSet* pDescriptorSets, deUint32 dynamicOffsetCount, const deUint32* pDynamicOffsets) const = 0;
+virtual void           cmdBindIndexBuffer                                                              (VkCmdBuffer cmdBuffer, VkBuffer buffer, VkDeviceSize offset, VkIndexType indexType) const = 0;
+virtual void           cmdBindVertexBuffers                                                    (VkCmdBuffer cmdBuffer, deUint32 startBinding, deUint32 bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets) const = 0;
+virtual void           cmdDraw                                                                                 (VkCmdBuffer cmdBuffer, deUint32 firstVertex, deUint32 vertexCount, deUint32 firstInstance, deUint32 instanceCount) const = 0;
+virtual void           cmdDrawIndexed                                                                  (VkCmdBuffer cmdBuffer, deUint32 firstIndex, deUint32 indexCount, deInt32 vertexOffset, deUint32 firstInstance, deUint32 instanceCount) const = 0;
+virtual void           cmdDrawIndirect                                                                 (VkCmdBuffer cmdBuffer, VkBuffer buffer, VkDeviceSize offset, deUint32 count, deUint32 stride) const = 0;
+virtual void           cmdDrawIndexedIndirect                                                  (VkCmdBuffer cmdBuffer, VkBuffer buffer, VkDeviceSize offset, deUint32 count, deUint32 stride) const = 0;
+virtual void           cmdDispatch                                                                             (VkCmdBuffer cmdBuffer, deUint32 x, deUint32 y, deUint32 z) const = 0;
+virtual void           cmdDispatchIndirect                                                             (VkCmdBuffer cmdBuffer, VkBuffer buffer, VkDeviceSize offset) const = 0;
+virtual void           cmdCopyBuffer                                                                   (VkCmdBuffer cmdBuffer, VkBuffer srcBuffer, VkBuffer destBuffer, deUint32 regionCount, const VkBufferCopy* pRegions) const = 0;
+virtual void           cmdCopyImage                                                                    (VkCmdBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage destImage, VkImageLayout destImageLayout, deUint32 regionCount, const VkImageCopy* pRegions) const = 0;
+virtual void           cmdBlitImage                                                                    (VkCmdBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage destImage, VkImageLayout destImageLayout, deUint32 regionCount, const VkImageBlit* pRegions, VkTexFilter filter) const = 0;
+virtual void           cmdCopyBufferToImage                                                    (VkCmdBuffer cmdBuffer, VkBuffer srcBuffer, VkImage destImage, VkImageLayout destImageLayout, deUint32 regionCount, const VkBufferImageCopy* pRegions) const = 0;
+virtual void           cmdCopyImageToBuffer                                                    (VkCmdBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkBuffer destBuffer, deUint32 regionCount, const VkBufferImageCopy* pRegions) const = 0;
+virtual void           cmdUpdateBuffer                                                                 (VkCmdBuffer cmdBuffer, VkBuffer destBuffer, VkDeviceSize destOffset, VkDeviceSize dataSize, const deUint32* pData) const = 0;
+virtual void           cmdFillBuffer                                                                   (VkCmdBuffer cmdBuffer, VkBuffer destBuffer, VkDeviceSize destOffset, VkDeviceSize fillSize, deUint32 data) const = 0;
+virtual void           cmdClearColorImage                                                              (VkCmdBuffer cmdBuffer, VkImage image, VkImageLayout imageLayout, const VkClearColorValue* pColor, deUint32 rangeCount, const VkImageSubresourceRange* pRanges) const = 0;
+virtual void           cmdClearDepthStencilImage                                               (VkCmdBuffer cmdBuffer, VkImage image, VkImageLayout imageLayout, float depth, deUint32 stencil, deUint32 rangeCount, const VkImageSubresourceRange* pRanges) const = 0;
+virtual void           cmdClearColorAttachment                                                 (VkCmdBuffer cmdBuffer, deUint32 colorAttachment, VkImageLayout imageLayout, const VkClearColorValue* pColor, deUint32 rectCount, const VkRect3D* pRects) const = 0;
+virtual void           cmdClearDepthStencilAttachment                                  (VkCmdBuffer cmdBuffer, VkImageAspectFlags imageAspectMask, VkImageLayout imageLayout, float depth, deUint32 stencil, deUint32 rectCount, const VkRect3D* pRects) const = 0;
+virtual void           cmdResolveImage                                                                 (VkCmdBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage destImage, VkImageLayout destImageLayout, deUint32 regionCount, const VkImageResolve* pRegions) const = 0;
+virtual void           cmdSetEvent                                                                             (VkCmdBuffer cmdBuffer, VkEvent event, VkPipelineStageFlags stageMask) const = 0;
+virtual void           cmdResetEvent                                                                   (VkCmdBuffer cmdBuffer, VkEvent event, VkPipelineStageFlags stageMask) const = 0;
+virtual void           cmdWaitEvents                                                                   (VkCmdBuffer cmdBuffer, deUint32 eventCount, const VkEvent* pEvents, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags destStageMask, deUint32 memBarrierCount, const void* const* ppMemBarriers) const = 0;
+virtual void           cmdPipelineBarrier                                                              (VkCmdBuffer cmdBuffer, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags destStageMask, VkBool32 byRegion, deUint32 memBarrierCount, const void* const* ppMemBarriers) const = 0;
+virtual void           cmdBeginQuery                                                                   (VkCmdBuffer cmdBuffer, VkQueryPool queryPool, deUint32 slot, VkQueryControlFlags flags) const = 0;
+virtual void           cmdEndQuery                                                                             (VkCmdBuffer cmdBuffer, VkQueryPool queryPool, deUint32 slot) const = 0;
+virtual void           cmdResetQueryPool                                                               (VkCmdBuffer cmdBuffer, VkQueryPool queryPool, deUint32 startQuery, deUint32 queryCount) const = 0;
+virtual void           cmdWriteTimestamp                                                               (VkCmdBuffer cmdBuffer, VkTimestampType timestampType, VkBuffer destBuffer, VkDeviceSize destOffset) const = 0;
+virtual void           cmdCopyQueryPoolResults                                                 (VkCmdBuffer cmdBuffer, VkQueryPool queryPool, deUint32 startQuery, deUint32 queryCount, VkBuffer destBuffer, VkDeviceSize destOffset, VkDeviceSize destStride, VkQueryResultFlags flags) const = 0;
+virtual void           cmdPushConstants                                                                (VkCmdBuffer cmdBuffer, VkPipelineLayout layout, VkShaderStageFlags stageFlags, deUint32 start, deUint32 length, const void* values) const = 0;
+virtual void           cmdBeginRenderPass                                                              (VkCmdBuffer cmdBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, VkRenderPassContents contents) const = 0;
+virtual void           cmdNextSubpass                                                                  (VkCmdBuffer cmdBuffer, VkRenderPassContents contents) const = 0;
+virtual void           cmdEndRenderPass                                                                (VkCmdBuffer cmdBuffer) const = 0;
+virtual void           cmdExecuteCommands                                                              (VkCmdBuffer cmdBuffer, deUint32 cmdBuffersCount, const VkCmdBuffer* pCmdBuffers) const = 0;
diff --git a/external/vulkancts/framework/vulkan/vkVirtualInstanceInterface.inl b/external/vulkancts/framework/vulkan/vkVirtualInstanceInterface.inl
new file mode 100644 (file)
index 0000000..7dd2e53
--- /dev/null
@@ -0,0 +1,15 @@
+/* WARNING: This is auto-generated file. Do not modify, since changes will
+ * be lost! Modify the generating script instead.
+ */
+virtual VkResult                       destroyInstance                                                 (VkInstance instance) const = 0;
+virtual VkResult                       enumeratePhysicalDevices                                (VkInstance instance, deUint32* pPhysicalDeviceCount, VkPhysicalDevice* pPhysicalDevices) const = 0;
+virtual VkResult                       getPhysicalDeviceFeatures                               (VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures* pFeatures) const = 0;
+virtual VkResult                       getPhysicalDeviceFormatProperties               (VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties* pFormatProperties) const = 0;
+virtual VkResult                       getPhysicalDeviceImageFormatProperties  (VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageFormatProperties* pImageFormatProperties) const = 0;
+virtual VkResult                       getPhysicalDeviceLimits                                 (VkPhysicalDevice physicalDevice, VkPhysicalDeviceLimits* pLimits) const = 0;
+virtual VkResult                       getPhysicalDeviceProperties                             (VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties* pProperties) const = 0;
+virtual VkResult                       getPhysicalDeviceQueueCount                             (VkPhysicalDevice physicalDevice, deUint32* pCount) const = 0;
+virtual VkResult                       getPhysicalDeviceQueueProperties                (VkPhysicalDevice physicalDevice, deUint32 count, VkPhysicalDeviceQueueProperties* pQueueProperties) const = 0;
+virtual VkResult                       getPhysicalDeviceMemoryProperties               (VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties* pMemoryProperties) const = 0;
+virtual PFN_vkVoidFunction     getDeviceProcAddr                                               (VkDevice device, const char* pName) const = 0;
+virtual VkResult                       createDevice                                                    (VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo* pCreateInfo, VkDevice* pDevice) const = 0;
index b2f72f5..7e86105 100644 (file)
@@ -1,7 +1,5 @@
 /* WARNING: This is auto-generated file. Do not modify, since changes will
  * be lost! Modify the generating script instead.
  */
-virtual VkResult       createInstance                          (const VkInstanceCreateInfo* pCreateInfo, VkInstance* pInstance) const = 0;
-virtual VkResult       destroyInstance                         (VkInstance instance) const = 0;
-virtual VkResult       enumeratePhysicalDevices        (VkInstance instance, deUint32* pPhysicalDeviceCount, VkPhysicalDevice* pPhysicalDevices) const = 0;
-virtual FunctionPtr    getProcAddr                                     (VkPhysicalDevice physicalDevice, const char* pName) const = 0;
+virtual VkResult                       createInstance          (const VkInstanceCreateInfo* pCreateInfo, VkInstance* pInstance) const = 0;
+virtual PFN_vkVoidFunction     getInstanceProcAddr     (VkInstance instance, const char* pName) const = 0;
index e848359..6df101c 100644 (file)
@@ -50,41 +50,44 @@ INL_HEADER = """\
 
 PLATFORM_FUNCTIONS     = [
        "vkCreateInstance",
+       "vkGetInstanceProcAddr"
+]
+INSTANCE_FUNCTIONS     = [
        "vkDestroyInstance",
        "vkEnumeratePhysicalDevices",
+       "vkGetPhysicalDeviceFeatures",
+       "vkGetPhysicalDeviceFormatProperties",
+       "vkGetPhysicalDeviceImageFormatProperties",
+       "vkGetPhysicalDeviceLimits",
+       "vkGetPhysicalDeviceProperties",
+       "vkGetPhysicalDeviceQueueCount",
+       "vkGetPhysicalDeviceQueueProperties",
+       "vkGetPhysicalDeviceMemoryProperties",
+       "vkCreateDevice",
+       "vkGetDeviceProcAddr"
 ]
-GET_PROC_ADDR          = "vkGetProcAddr"
-
-OBJECT_TYPE_REPL       = {
-       "VkObject":                             None,
-       "VkNonDispatchable":    None,
-       "VkDynamicStateObject": None,
-       "VkCmdBuffer":                  "VK_OBJECT_TYPE_COMMAND_BUFFER",
-}
 
 DEFINITIONS                    = [
        "VK_API_VERSION",
        "VK_MAX_PHYSICAL_DEVICE_NAME",
-       "VK_MAX_EXTENSION_NAME"
+       "VK_MAX_EXTENSION_NAME",
+       "VK_UUID_LENGTH",
+       "VK_MAX_MEMORY_TYPES",
+       "VK_MAX_MEMORY_HEAPS",
+       "VK_MAX_DESCRIPTION"
 ]
 
 class Handle:
-       TYPE_ROOT               = 0
-       TYPE_DISP               = 1
-       TYPE_NONDISP    = 2
+       TYPE_DISP               = 0
+       TYPE_NONDISP    = 1
 
-       def __init__ (self, type, name, parent = None):
-               assert (type == Handle.TYPE_ROOT) == (parent == None)
+       def __init__ (self, type, name):
                self.type       = type
                self.name       = name
-               self.parent     = parent
 
-       def getObjectType (self):
-               if self.name in OBJECT_TYPE_REPL:
-                       return OBJECT_TYPE_REPL[self.name]
-               else:
-                       name = re.sub(r'([A-Z])', r'_\1', self.name)
-                       return "VK_OBJECT_TYPE_" + name[4:].upper()
+       def getHandleType (self):
+               name = re.sub(r'([A-Z])', r'_\1', self.name)
+               return "HANDLE_TYPE_" + name[4:].upper()
 
 class Enum:
        def __init__ (self, name, values):
@@ -101,15 +104,23 @@ class Variable:
                self.type       = type
                self.name       = name
 
-class Struct:
-       def __init__ (self, name, members):
+class CompositeType:
+       CLASS_STRUCT    = 0
+       CLASS_UNION             = 1
+
+       def __init__ (self, typeClass, name, members):
+               self.typeClass  = typeClass
                self.name               = name
                self.members    = members
 
+       def getClassName (self):
+               names = {CompositeType.CLASS_STRUCT: 'struct', CompositeType.CLASS_UNION: 'union'}
+               return names[self.typeClass]
+
 class Function:
-       TYPE_GET_PROC_ADDR      = 0 # Special
-       TYPE_PLATFORM           = 1 # Not bound to VkPhysicalDevice
-       TYPE_DEVICE                     = 2 # Bound to VkPhysicalDevice
+       TYPE_PLATFORM           = 0 # Not bound to anything
+       TYPE_INSTANCE           = 1 # Bound to VkInstance
+       TYPE_DEVICE                     = 2 # Bound to VkDevice
 
        def __init__ (self, name, returnType, arguments):
                self.name               = name
@@ -117,20 +128,20 @@ class Function:
                self.arguments  = arguments
 
        def getType (self):
-               if self.name == GET_PROC_ADDR:
-                       return Function.TYPE_GET_PROC_ADDR
-               elif self.name in PLATFORM_FUNCTIONS:
+               if self.name in PLATFORM_FUNCTIONS:
                        return Function.TYPE_PLATFORM
+               elif self.name in INSTANCE_FUNCTIONS:
+                       return Function.TYPE_INSTANCE
                else:
                        return Function.TYPE_DEVICE
 
 class API:
-       def __init__ (self, definitions, handles, enums, bitfields, structs, functions):
+       def __init__ (self, definitions, handles, enums, bitfields, compositeTypes, functions):
                self.definitions        = definitions
                self.handles            = handles
                self.enums                      = enums
                self.bitfields          = bitfields
-               self.structs            = structs
+               self.compositeTypes     = compositeTypes
                self.functions          = functions
 
 def readFile (filename):
@@ -174,9 +185,6 @@ def fixupFunction (function):
        fixedArgs               = [Variable(fixupType(a.type), a.name) for a in function.arguments]
        fixedReturnType = fixupType(function.returnType)
 
-       if function.name == "vkGetProcAddr":
-               fixedReturnType = "FunctionPtr"
-
        return Function(function.name, fixedReturnType, fixedArgs)
 
 def getInterfaceName (function):
@@ -206,7 +214,7 @@ def parseEnum (name, src):
 
 # \note Parses raw enums, some are mapped to bitfields later
 def parseEnums (src):
-       matches = re.findall(r'typedef enum ' + IDENT_PTRN + r'\s*{([^}]*)}\s*(' + IDENT_PTRN + r')\s*;', src)
+       matches = re.findall(r'typedef enum\s*{([^}]*)}\s*(' + IDENT_PTRN + r')\s*;', src)
        enums   = []
 
        for contents, name in matches:
@@ -214,38 +222,31 @@ def parseEnums (src):
 
        return enums
 
-def parseStruct (name, src):
+def parseCompositeType (type, name, src):
        # \todo [pyry] Array support is currently a hack (size coupled with name)
        typeNamePtrn    = r'(' + TYPE_PTRN + ')(\s' + IDENT_PTRN + r'(\[[^\]]+\])*)\s*;'
        matches                 = re.findall(typeNamePtrn, src)
        members                 = [Variable(fixupType(t.strip()), n.strip()) for t, n, a in matches]
 
-       return Struct(name, members)
+       return CompositeType(type, name, members)
 
-def parseStructs (src):
-       matches = re.findall(r'typedef struct ' + IDENT_PTRN + r'\s*{([^}]*)}\s*(' + IDENT_PTRN + r')\s*;', src)
-       structs = []
+def parseCompositeTypes (src):
+       typeMap = { 'struct': CompositeType.CLASS_STRUCT, 'union': CompositeType.CLASS_UNION }
+       matches = re.findall(r'typedef (struct|union)\s*{([^}]*)}\s*(' + IDENT_PTRN + r')\s*;', src)
+       types   = []
 
-       for contents, name in matches:
-               structs.append(parseStruct(name, contents))
+       for type, contents, name in matches:
+               types.append(parseCompositeType(typeMap[type], name, contents))
 
-       return structs
+       return types
 
 def parseHandles (src):
-       matches = re.findall(r'VK_DEFINE_(NONDISP|DISP)_SUBCLASS_HANDLE\((' + IDENT_PTRN + r'),\s*(' + IDENT_PTRN + r')\)[ \t]*[\n\r]', src)
+       matches = re.findall(r'VK_DEFINE(_NONDISP|)_HANDLE\((' + IDENT_PTRN + r')\)[ \t]*[\n\r]', src)
        handles = []
-       typeMap = {'DISP': Handle.TYPE_DISP, 'NONDISP': Handle.TYPE_NONDISP}
-       byName  = {}
-       root    = Handle(Handle.TYPE_ROOT, 'VkObject')
+       typeMap = {'': Handle.TYPE_DISP, '_NONDISP': Handle.TYPE_NONDISP}
 
-       byName[root.name] = root
-       handles.append(root)
-
-       for type, name, parentName in matches:
-               parent  = byName[parentName]
-               handle  = Handle(typeMap[type], name, parent)
-
-               byName[handle.name] = handle
+       for type, name in matches:
+               handle = Handle(typeMap[type], name)
                handles.append(handle)
 
        return handles
@@ -291,12 +292,25 @@ def parseAPI (src):
                        enums.append(enum)
 
        return API(
-               definitions     = definitions,
-               handles         = parseHandles(src),
-               enums           = enums,
-               bitfields       = bitfields,
-               structs         = parseStructs(src),
-               functions       = parseFunctions(src))
+               definitions             = definitions,
+               handles                 = parseHandles(src),
+               enums                   = enums,
+               bitfields               = bitfields,
+               compositeTypes  = parseCompositeTypes(src),
+               functions               = parseFunctions(src))
+
+def writeHandleType (api, filename):
+       def gen ():
+               yield "enum HandleType"
+               yield "{"
+               yield "\t%s = 0," % api.handles[0].getHandleType()
+               for handle in api.handles[1:]:
+                       yield "\t%s," % handle.getHandleType()
+               yield "\tHANDLE_TYPE_LAST"
+               yield "};"
+               yield ""
+
+       writeInlFile(filename, INL_HEADER, gen())
 
 def genEnumSrc (enum):
        yield "enum %s" % enum.name
@@ -313,22 +327,20 @@ def genBitfieldSrc (bitfield):
        yield "};"
        yield "typedef deUint32 %s;" % bitfield.name
 
-def genStructSrc (struct):
-       yield "struct %s" % struct.name
+def genCompositeTypeSrc (type):
+       yield "%s %s" % (type.getClassName(), type.name)
        yield "{"
-       for line in indentLines(["\t%s\t%s;" % (m.type, m.name) for m in struct.members]):
+       for line in indentLines(["\t%s\t%s;" % (m.type, m.name) for m in type.members]):
                yield line
        yield "};"
 
 def genHandlesSrc (handles):
        def genLines (handles):
                for handle in handles:
-                       if handle.type == Handle.TYPE_ROOT:
-                               yield "VK_DEFINE_BASE_HANDLE\t(%s);" % handle.name
-                       elif handle.type == Handle.TYPE_DISP:
-                               yield "VK_DEFINE_DISP_SUBCLASS_HANDLE\t(%s,\t%s);" % (handle.name, handle.parent.name)
+                       if handle.type == Handle.TYPE_DISP:
+                               yield "VK_DEFINE_HANDLE\t(%s,\t%s);" % (handle.name, handle.getHandleType())
                        elif handle.type == Handle.TYPE_NONDISP:
-                               yield "VK_DEFINE_NONDISP_SUBCLASS_HANDLE\t(%s,\t%s);" % (handle.name, handle.parent.name)
+                               yield "VK_DEFINE_NONDISP_HANDLE\t(%s,\t%s);" % (handle.name, handle.getHandleType())
 
        for line in indentLines(genLines(handles)):
                yield line
@@ -349,22 +361,13 @@ def writeBasicTypes (api, filename):
                        for line in genBitfieldSrc(bitfield):
                                yield line
                        yield ""
-               for line in indentLines(["VK_DEFINE_HANDLE_TYPE_TRAITS(%s);" % handle.name for handle in api.handles]):
-                       yield line
 
        writeInlFile(filename, INL_HEADER, gen())
 
-def writeGetObjectTypeImpl (api, filename):
+def writeCompositeTypes (api, filename):
        def gen ():
-               for line in indentLines(["template<> VkObjectType\tgetObjectType<%sT>\t(void) { return %s;\t}" % (handle.name, handle.getObjectType()) for handle in api.handles if handle.getObjectType() != None]):
-                       yield line
-
-       writeInlFile(filename, INL_HEADER, gen())
-
-def writeStructTypes (api, filename):
-       def gen ():
-               for struct in api.structs:
-                       for line in genStructSrc(struct):
+               for type in api.compositeTypes:
+                       for line in genCompositeTypeSrc(type):
                                yield line
                        yield ""
 
@@ -426,14 +429,14 @@ def writeStrUtilProto (api, filename):
                for line in indentLines(["tcu::Format::Bitfield<32>\tget%sStr\t(%s value);" % (bitfield.name[2:], bitfield.name) for bitfield in api.bitfields]):
                        yield line
                yield ""
-               for line in indentLines(["std::ostream&\toperator<<\t(std::ostream& s, const %s& value);" % (s.name) for s in api.structs]):
+               for line in indentLines(["std::ostream&\toperator<<\t(std::ostream& s, const %s& value);" % (s.name) for s in api.compositeTypes]):
                        yield line
 
        writeInlFile(filename, INL_HEADER, makeStrUtilProto())
 
 def writeStrUtilImpl (api, filename):
        def makeStrUtilImpl ():
-               for line in indentLines(["template<> const char*\tgetTypeName<%sT>\t(void) { return \"%s\";\t}" % (handle.name, handle.name) for handle in api.handles]):
+               for line in indentLines(["template<> const char*\tgetTypeName<%s>\t(void) { return \"%s\";\t}" % (handle.name, handle.name) for handle in api.handles]):
                        yield line
 
                for enum in api.enums:
@@ -461,12 +464,12 @@ def writeStrUtilImpl (api, filename):
 
                bitfieldTypeNames = set([bitfield.name for bitfield in api.bitfields])
 
-               for struct in api.structs:
+               for type in api.compositeTypes:
                        yield ""
-                       yield "std::ostream& operator<< (std::ostream& s, const %s& value)" % struct.name
+                       yield "std::ostream& operator<< (std::ostream& s, const %s& value)" % type.name
                        yield "{"
-                       yield "\ts << \"%s = {\\n\";" % struct.name
-                       for member in struct.members:
+                       yield "\ts << \"%s = {\\n\";" % type.name
+                       for member in type.members:
                                memberName      = member.name
                                valFmt          = None
                                if member.type in bitfieldTypeNames:
@@ -489,7 +492,8 @@ def writeStrUtilImpl (api, filename):
        writeInlFile(filename, INL_HEADER, makeStrUtilImpl())
 
 class ConstructorFunction:
-       def __init__ (self, name, objectType, iface, arguments):
+       def __init__ (self, type, name, objectType, iface, arguments):
+               self.type               = type
                self.name               = name
                self.objectType = objectType
                self.iface              = iface
@@ -498,16 +502,18 @@ class ConstructorFunction:
 def getConstructorFunctions (api):
        funcs = []
        for function in api.functions:
-               if function.name[:8] == "vkCreate" or function.name == "vkAllocMemory":
+               if (function.name[:8] == "vkCreate" or function.name == "vkAllocMemory") and not "count" in [a.name for a in function.arguments]:
                        # \todo [pyry] Rather hacky
                        iface = None
                        if function.getType() == Function.TYPE_PLATFORM:
                                iface = Variable("const PlatformInterface&", "vk")
+                       elif function.getType() == Function.TYPE_INSTANCE:
+                               iface = Variable("const InstanceInterface&", "vk")
                        else:
                                iface = Variable("const DeviceInterface&", "vk")
                        objectType      = function.arguments[-1].type.replace("*", "").strip()
                        arguments       = function.arguments[:-1]
-                       funcs.append(ConstructorFunction(getInterfaceName(function), objectType, iface, arguments))
+                       funcs.append(ConstructorFunction(function.getType(), getInterfaceName(function), objectType, iface, arguments))
        return funcs
 
 def writeRefUtilProto (api, filename):
@@ -515,7 +521,7 @@ def writeRefUtilProto (api, filename):
 
        def makeRefUtilProto ():
                unindented = []
-               for line in indentLines(["Move<%sT>\t%s\t(%s);" % (function.objectType, function.name, argListToStr([function.iface] + function.arguments)) for function in functions]):
+               for line in indentLines(["Move<%s>\t%s\t(%s);" % (function.objectType, function.name, argListToStr([function.iface] + function.arguments)) for function in functions]):
                        yield line
 
        writeInlFile(filename, INL_HEADER, makeRefUtilProto())
@@ -524,14 +530,33 @@ def writeRefUtilImpl (api, filename):
        functions = getConstructorFunctions(api)
 
        def makeRefUtilImpl ():
+               yield "namespace refdetails"
+               yield "{"
+               yield ""
+
+               for function in api.functions:
+                       if function.getType() == Function.TYPE_DEVICE \
+                          and (function.name[:9] == "vkDestroy" or function.name == "vkFreeMemory") \
+                          and not function.name == "vkDestroyDevice":
+                               objectType = function.arguments[-1].type
+                               yield "template<>"
+                               yield "void Deleter<%s>::operator() (%s obj) const" % (objectType, objectType)
+                               yield "{"
+                               yield "\tDE_TEST_ASSERT(m_deviceIface->%s(m_device, obj) == VK_SUCCESS);" % (getInterfaceName(function))
+                               yield "}"
+                               yield ""
+
+               yield "} // refdetails"
+               yield ""
+
                for function in functions:
-                       maybeDevice = ", device" if "device" in set([a.name for a in function.arguments]) else ""
+                       dtorObj = "device" if function.type == Function.TYPE_DEVICE else "object"
 
-                       yield "Move<%sT> %s (%s)" % (function.objectType, function.name, argListToStr([function.iface] + function.arguments))
+                       yield "Move<%s> %s (%s)" % (function.objectType, function.name, argListToStr([function.iface] + function.arguments))
                        yield "{"
                        yield "\t%s object = 0;" % function.objectType
                        yield "\tVK_CHECK(vk.%s(%s));" % (function.name, ", ".join([a.name for a in function.arguments] + ["&object"]))
-                       yield "\treturn Move<%sT>(vk%s, check<%sT>(object));" % (function.objectType, maybeDevice, function.objectType)
+                       yield "\treturn Move<%s>(check<%s>(object), Deleter<%s>(vk, %s));" % (function.objectType, function.objectType, function.objectType, dtorObj)
                        yield "}"
                        yield ""
 
@@ -540,22 +565,28 @@ def writeRefUtilImpl (api, filename):
 if __name__ == "__main__":
        src                             = readFile(sys.argv[1])
        api                             = parseAPI(src)
-       platformFuncs   = set([Function.TYPE_GET_PROC_ADDR, Function.TYPE_PLATFORM])
+       platformFuncs   = set([Function.TYPE_PLATFORM])
+       instanceFuncs   = set([Function.TYPE_INSTANCE])
        deviceFuncs             = set([Function.TYPE_DEVICE])
 
+       writeHandleType                         (api, os.path.join(VULKAN_DIR, "vkHandleType.inl"))
        writeBasicTypes                         (api, os.path.join(VULKAN_DIR, "vkBasicTypes.inl"))
-       writeStructTypes                        (api, os.path.join(VULKAN_DIR, "vkStructTypes.inl"))
-       writeGetObjectTypeImpl          (api, os.path.join(VULKAN_DIR, "vkGetObjectTypeImpl.inl"))
+       writeCompositeTypes                     (api, os.path.join(VULKAN_DIR, "vkStructTypes.inl"))
        writeInterfaceDecl                      (api, os.path.join(VULKAN_DIR, "vkVirtualPlatformInterface.inl"),               functionTypes = platformFuncs,  concrete = False)
+       writeInterfaceDecl                      (api, os.path.join(VULKAN_DIR, "vkVirtualInstanceInterface.inl"),               functionTypes = instanceFuncs,  concrete = False)
        writeInterfaceDecl                      (api, os.path.join(VULKAN_DIR, "vkVirtualDeviceInterface.inl"),                 functionTypes = deviceFuncs,    concrete = False)
        writeInterfaceDecl                      (api, os.path.join(VULKAN_DIR, "vkConcretePlatformInterface.inl"),              functionTypes = platformFuncs,  concrete = True)
+       writeInterfaceDecl                      (api, os.path.join(VULKAN_DIR, "vkConcreteInstanceInterface.inl"),              functionTypes = instanceFuncs,  concrete = True)
        writeInterfaceDecl                      (api, os.path.join(VULKAN_DIR, "vkConcreteDeviceInterface.inl"),                functionTypes = deviceFuncs,    concrete = True)
        writeFunctionPtrTypes           (api, os.path.join(VULKAN_DIR, "vkFunctionPointerTypes.inl"))
        writeFunctionPointers           (api, os.path.join(VULKAN_DIR, "vkPlatformFunctionPointers.inl"),               functionTypes = platformFuncs)
+       writeFunctionPointers           (api, os.path.join(VULKAN_DIR, "vkInstanceFunctionPointers.inl"),               functionTypes = instanceFuncs)
        writeFunctionPointers           (api, os.path.join(VULKAN_DIR, "vkDeviceFunctionPointers.inl"),                 functionTypes = deviceFuncs)
-       writeInitFunctionPointers       (api, os.path.join(VULKAN_DIR, "vkInitPlatformFunctionPointers.inl"),   functionTypes = set([Function.TYPE_PLATFORM])) # \note No vkGetProcAddr
+       writeInitFunctionPointers       (api, os.path.join(VULKAN_DIR, "vkInitPlatformFunctionPointers.inl"),   functionTypes = platformFuncs)
+       writeInitFunctionPointers       (api, os.path.join(VULKAN_DIR, "vkInitInstanceFunctionPointers.inl"),   functionTypes = instanceFuncs)
        writeInitFunctionPointers       (api, os.path.join(VULKAN_DIR, "vkInitDeviceFunctionPointers.inl"),             functionTypes = deviceFuncs)
        writeFuncPtrInterfaceImpl       (api, os.path.join(VULKAN_DIR, "vkPlatformDriverImpl.inl"),                             functionTypes = platformFuncs,  className = "PlatformDriver")
+       writeFuncPtrInterfaceImpl       (api, os.path.join(VULKAN_DIR, "vkInstanceDriverImpl.inl"),                             functionTypes = instanceFuncs,  className = "InstanceDriver")
        writeFuncPtrInterfaceImpl       (api, os.path.join(VULKAN_DIR, "vkDeviceDriverImpl.inl"),                               functionTypes = deviceFuncs,    className = "DeviceDriver")
        writeStrUtilProto                       (api, os.path.join(VULKAN_DIR, "vkStrUtil.inl"))
        writeStrUtilImpl                        (api, os.path.join(VULKAN_DIR, "vkStrUtilImpl.inl"))
index d4621e7..80cf906 100644 (file)
@@ -49,7 +49,6 @@
 #include "tcuFormatUtil.hpp"
 
 #include "deUniquePtr.hpp"
-#include "deSharedPtr.hpp"
 
 namespace vkt
 {
@@ -60,31 +59,8 @@ using namespace vk;
 using std::vector;
 using tcu::TestLog;
 using de::UniquePtr;
-using de::MovePtr;
 
-// \todo [pyry] Want probably clean this up..
-
-typedef std::vector<de::SharedPtr<Allocation> >        AllocationList;
-
-AllocationList allocate (Allocator& allocator, size_t numAllocations, const VkMemoryRequirements* allocRequirements, VkMemoryPropertyFlags memProps = 0u)
-{
-       AllocationList  allocs;
-
-       for (size_t ndx = 0; ndx < numAllocations; ndx++)
-               allocs.push_back(de::SharedPtr<Allocation>(allocate(allocator, allocRequirements[ndx], memProps).release()));
-
-       return allocs;
-}
-
-AllocationList allocate (Allocator& allocator, const vector<VkMemoryRequirements>& allocRequirements, VkMemoryPropertyFlags memProps = 0u)
-{
-       if (!allocRequirements.empty())
-               return allocate(allocator, allocRequirements.size(), &allocRequirements[0], memProps);
-       else
-               return AllocationList();
-}
-
-tcu::TestStatus createSampler (Context& context)
+tcu::TestStatus createSamplerTest (Context& context)
 {
        const VkDevice                  vkDevice        = context.getDevice();
        const DeviceInterface&  vk                      = context.getDeviceInterface();
@@ -92,28 +68,29 @@ tcu::TestStatus createSampler (Context& context)
        {
                const struct VkSamplerCreateInfo                samplerInfo     =
                {
-                       VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO,  //      VkStructureType sType;
-                       DE_NULL,                                                                //      const void*             pNext;
-                       VK_TEX_FILTER_NEAREST,                                  //      VkTexFilter             magFilter;
-                       VK_TEX_FILTER_NEAREST,                                  //      VkTexFilter             minFilter;
-                       VK_TEX_MIPMAP_MODE_BASE,                                //      VkTexMipmapMode mipMode;
-                       VK_TEX_ADDRESS_CLAMP,                                   //      VkTexAddress    addressU;
-                       VK_TEX_ADDRESS_CLAMP,                                   //      VkTexAddress    addressV;
-                       VK_TEX_ADDRESS_CLAMP,                                   //      VkTexAddress    addressW;
-                       0.0f,                                                                   //      float                   mipLodBias;
-                       0u,                                                                             //      deUint32                maxAnisotropy;
-                       VK_COMPARE_OP_ALWAYS,                                   //      VkCompareOp             compareOp;
-                       0.0f,                                                                   //      float                   minLod;
-                       0.0f,                                                                   //      float                   maxLod;
-                       VK_BORDER_COLOR_TRANSPARENT_BLACK,              //      VkBorderColor   borderColor;
+                       VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO,          //      VkStructureType sType;
+                       DE_NULL,                                                                        //      const void*             pNext;
+                       VK_TEX_FILTER_NEAREST,                                          //      VkTexFilter             magFilter;
+                       VK_TEX_FILTER_NEAREST,                                          //      VkTexFilter             minFilter;
+                       VK_TEX_MIPMAP_MODE_BASE,                                        //      VkTexMipmapMode mipMode;
+                       VK_TEX_ADDRESS_CLAMP,                                           //      VkTexAddress    addressU;
+                       VK_TEX_ADDRESS_CLAMP,                                           //      VkTexAddress    addressV;
+                       VK_TEX_ADDRESS_CLAMP,                                           //      VkTexAddress    addressW;
+                       0.0f,                                                                           //      float                   mipLodBias;
+                       0.0f,                                                                           //      float                   maxAnisotropy;
+                       DE_FALSE,                                                                       //      VkBool32                compareEnable;
+                       VK_COMPARE_OP_ALWAYS,                                           //      VkCompareOp             compareOp;
+                       0.0f,                                                                           //      float                   minLod;
+                       0.0f,                                                                           //      float                   maxLod;
+                       VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK,        //      VkBorderColor   borderColor;
                };
 
-               Move<VkSamplerT>        tmpSampler      = createSampler(vk, vkDevice, &samplerInfo);
-               Move<VkSamplerT>        tmp2Sampler     (vk);
+               Move<VkSampler>                 tmpSampler      = createSampler(vk, vkDevice, &samplerInfo);
+               Move<VkSampler>                 tmp2Sampler;
 
                tmp2Sampler = tmpSampler;
 
-               Unique<VkSamplerT>      sampler         (tmp2Sampler);
+               const Unique<VkSampler> sampler         (tmp2Sampler);
        }
 
        return tcu::TestStatus::pass("Creating sampler succeeded");
@@ -127,13 +104,13 @@ void createShaderProgs (SourceCollection& dst)
                "void main (void) { gl_Position = a_position; }\n");
 }
 
-tcu::TestStatus createShader (Context& context)
+tcu::TestStatus createShaderModuleTest (Context& context)
 {
-       const VkDevice                  vkDevice        = context.getDevice();
-       const DeviceInterface&  vk                      = context.getDeviceInterface();
-       const Unique<VkShaderT> shader          (createShader(vk, vkDevice, context.getBinaryCollection().get("test"), 0));
+       const VkDevice                                  vkDevice        = context.getDevice();
+       const DeviceInterface&                  vk                      = context.getDeviceInterface();
+       const Unique<VkShaderModule>    shader          (createShaderModule(vk, vkDevice, context.getBinaryCollection().get("test"), 0));
 
-       return tcu::TestStatus::pass("Creating shader succeeded");
+       return tcu::TestStatus::pass("Creating shader module succeeded");
 }
 
 void createTriangleProgs (SourceCollection& dst)
@@ -148,12 +125,13 @@ void createTriangleProgs (SourceCollection& dst)
                "void main (void) { o_color = vec4(1.0, 0.0, 1.0, 1.0); }\n");
 }
 
-tcu::TestStatus renderTriangle (Context& context)
+tcu::TestStatus renderTriangleTest (Context& context)
 {
        const VkDevice                                                  vkDevice                                = context.getDevice();
        const DeviceInterface&                                  vk                                              = context.getDeviceInterface();
        const VkQueue                                                   queue                                   = context.getUniversalQueue();
-       SimpleAllocator                                                 memAlloc                                (vk, vkDevice);
+       const deUint32                                                  queueIndex                              = context.getUniversalQueueIndex();
+       SimpleAllocator                                                 memAlloc                                (vk, vkDevice, getPhysicalDeviceMemoryProperties(context.getInstanceInterface(), context.getPhysicalDevice()));
        const tcu::IVec2                                                renderSize                              (256, 256);
 
        const tcu::Vec4                                                 vertices[]                              =
@@ -170,9 +148,12 @@ tcu::TestStatus renderTriangle (Context& context)
                (VkDeviceSize)sizeof(vertices),                 //      VkDeviceSize            size;
                VK_BUFFER_USAGE_VERTEX_BUFFER_BIT,              //      VkBufferUsageFlags      usage;
                0u,                                                                             //      VkBufferCreateFlags     flags;
+               VK_SHARING_MODE_EXCLUSIVE,                              //      VkSharingMode           sharingMode;
+               1u,                                                                             //      deUint32                        queueFamilyCount;
+               &queueIndex,                                                    //      const deUint32*         pQueueFamilyIndices;
        };
-       const Unique<VkBufferT>                                 vertexBuffer                    (createBuffer(vk, vkDevice, &vertexBufferParams));
-       const AllocationList                                    vertexBufferAllocs              = allocate(memAlloc, getObjectInfo<VK_OBJECT_INFO_TYPE_MEMORY_REQUIREMENTS>(vk, vkDevice, vertexBuffer), VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT);
+       const Unique<VkBuffer                                 vertexBuffer                    (createBuffer(vk, vkDevice, &vertexBufferParams));
+       const UniquePtr<Allocation>                             vertexBufferMemory              (memAlloc.allocate(getBufferMemoryRequirements(vk, vkDevice, *vertexBuffer), VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT));
 
        const VkDeviceSize                                              imageSizeBytes                  = (VkDeviceSize)(sizeof(deUint32)*renderSize.x()*renderSize.y());
        const VkBufferCreateInfo                                readImageBufferParams   =
@@ -182,9 +163,12 @@ tcu::TestStatus renderTriangle (Context& context)
                imageSizeBytes,                                                         //      VkDeviceSize            size;
                VK_BUFFER_USAGE_TRANSFER_DESTINATION_BIT,       //      VkBufferUsageFlags      usage;
                0u,                                                                                     //      VkBufferCreateFlags     flags;
+               VK_SHARING_MODE_EXCLUSIVE,                                      //      VkSharingMode           sharingMode;
+               1u,                                                                                     //      deUint32                        queueFamilyCount;
+               &queueIndex,                                                            //      const deUint32*         pQueueFamilyIndices;
        };
-       const Unique<VkBufferT>                                 readImageBuffer                 (createBuffer(vk, vkDevice, &readImageBufferParams));
-       const AllocationList                                    readImageBufferAllocs   = allocate(memAlloc, getObjectInfo<VK_OBJECT_INFO_TYPE_MEMORY_REQUIREMENTS>(vk, vkDevice, vertexBuffer), VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT|VK_MEMORY_PROPERTY_HOST_UNCACHED_BIT);
+       const Unique<VkBuffer                                 readImageBuffer                 (createBuffer(vk, vkDevice, &readImageBufferParams));
+       const UniquePtr<Allocation>                             readImageBufferMemory   (memAlloc.allocate(getBufferMemoryRequirements(vk, vkDevice, *readImageBuffer), VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT));
 
        const VkImageCreateInfo                                 imageParams                             =
        {
@@ -198,34 +182,94 @@ tcu::TestStatus renderTriangle (Context& context)
                1u,                                                                             //      deUint32                        samples;
                VK_IMAGE_TILING_OPTIMAL,                                //      VkImageTiling           tiling;
                VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT,    //      VkImageUsageFlags       usage;
-               0u                                                                              //      VkImageCreateFlags      flags;
+               0u,                                                                             //      VkImageCreateFlags      flags;
+               VK_SHARING_MODE_EXCLUSIVE,                              //      VkSharingMode           sharingMode;
+               1u,                                                                             //      deUint32                        queueFamilyCount;
+               &queueIndex,                                                    //      const deUint32*         pQueueFamilyIndices;
        };
 
-       const Unique<VkImageT>                                  image                                   (createImage(vk, vkDevice, &imageParams));
-       const AllocationList                                    imageAllocs                             = allocate(memAlloc, getObjectInfo<VK_OBJECT_INFO_TYPE_MEMORY_REQUIREMENTS>(vk, vkDevice, image));
-
-       const VkColorAttachmentViewCreateInfo   colorAttViewParams              =
+       const Unique<VkImage>                                   image                                   (createImage(vk, vkDevice, &imageParams));
+       const UniquePtr<Allocation>                             imageMemory                             (memAlloc.allocate(getImageMemoryRequirements(vk, vkDevice, *image), 0u));
+
+       const VkAttachmentDescription                   colorAttDesc                    =
+       {
+               VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION,               //      VkStructureType         sType;
+               DE_NULL,                                                                                //      const void*                     pNext;
+               VK_FORMAT_R8G8B8A8_UNORM,                                               //      VkFormat                        format;
+               1u,                                                                                             //      deUint32                        samples;
+               VK_ATTACHMENT_LOAD_OP_CLEAR,                                    //      VkAttachmentLoadOp      loadOp;
+               VK_ATTACHMENT_STORE_OP_STORE,                                   //      VkAttachmentStoreOp     storeOp;
+               VK_ATTACHMENT_LOAD_OP_DONT_CARE,                                //      VkAttachmentLoadOp      stencilLoadOp;
+               VK_ATTACHMENT_STORE_OP_DONT_CARE,                               //      VkAttachmentStoreOp     stencilStoreOp;
+               VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL,               //      VkImageLayout           initialLayout;
+               VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL,               //      VkImageLayout           finalLayout;
+       };
+       const VkAttachmentReference                             colorAttRef                             =
        {
-               VK_STRUCTURE_TYPE_COLOR_ATTACHMENT_VIEW_CREATE_INFO,    //      VkStructureType                 sType;
-               DE_NULL,                                                                                                //      const void*                             pNext;
-               *image,                                                                                                 //      VkImage                                 image;
-               VK_FORMAT_R8G8B8A8_UNORM,                                                               //      VkFormat                                format;
-               0u,                                                                                                             //      deUint32                                mipLevel;
-               0u,                                                                                                             //      deUint32                                baseArraySlice;
-               1u,                                                                                                             //      deUint32                                arraySize;
-               DE_NULL,                                                                                                //      VkImage                                 msaaResolveImage;
-               {
-                       VK_IMAGE_ASPECT_COLOR,                                                                  //      VkImageAspect   aspect;
-                       0u,                                                                                                             //      deUint32                baseMipLevel;
-                       1u,                                                                                                             //      deUint32                mipLevels;
-                       0u,                                                                                                             //      deUint32                baseArraySlice;
-                       1u,                                                                                                             //      deUint32                arraySize;
-               },                                                                                                              //      VkImageSubresourceRange msaaResolveSubResource;
+               0u,                                                                                             //      deUint32                attachment;
+               VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL,               //      VkImageLayout   layout;
+       };
+       const VkSubpassDescription                              subpassDesc                             =
+       {
+               VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION,                  //      VkStructureType                                 sType;
+               DE_NULL,                                                                                //      const void*                                             pNext;
+               VK_PIPELINE_BIND_POINT_GRAPHICS,                                //      VkPipelineBindPoint                             pipelineBindPoint;
+               0u,                                                                                             //      VkSubpassDescriptionFlags               flags;
+               0u,                                                                                             //      deUint32                                                inputCount;
+               DE_NULL,                                                                                //      const VkAttachmentReference*    inputAttachments;
+               1u,                                                                                             //      deUint32                                                colorCount;
+               &colorAttRef,                                                                   //      const VkAttachmentReference*    colorAttachments;
+               DE_NULL,                                                                                //      const VkAttachmentReference*    resolveAttachments;
+               { ~0u, VK_IMAGE_LAYOUT_GENERAL },                               //      VkAttachmentReference                   depthStencilAttachment;
+               0u,                                                                                             //      deUint32                                                preserveCount;
+               DE_NULL,                                                                                //      const VkAttachmentReference*    preserveAttachments;
        };
-       const Unique<VkColorAttachmentViewT>    colorAttView                    (createColorAttachmentView(vk, vkDevice, &colorAttViewParams));
+       const VkRenderPassCreateInfo                    renderPassParams                =
+       {
+               VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO,              //      VkStructureType                                 sType;
+               DE_NULL,                                                                                //      const void*                                             pNext;
+               1u,                                                                                             //      deUint32                                                attachmentCount;
+               &colorAttDesc,                                                                  //      const VkAttachmentDescription*  pAttachments;
+               1u,                                                                                             //      deUint32                                                subpassCount;
+               &subpassDesc,                                                                   //      const VkSubpassDescription*             pSubpasses;
+               0u,                                                                                             //      deUint32                                                dependencyCount;
+               DE_NULL,                                                                                //      const VkSubpassDependency*              pDependencies;
+       };
+       const Unique<VkRenderPass>                              renderPass                              (createRenderPass(vk, vkDevice, &renderPassParams));
+
+       const VkAttachmentViewCreateInfo                colorAttViewParams              =
+       {
+               VK_STRUCTURE_TYPE_ATTACHMENT_VIEW_CREATE_INFO,  //      VkStructureType                         sType;
+               DE_NULL,                                                                                //      const void*                                     pNext;
+               *image,                                                                                 //      VkImage                                         image;
+               VK_FORMAT_R8G8B8A8_UNORM,                                               //      VkFormat                                        format;
+               0u,                                                                                             //      deUint32                                        mipLevel;
+               0u,                                                                                             //      deUint32                                        baseArraySlice;
+               0u,                                                                                             //      deUint32                                        arraySize;
+               0u,                                                                                             //      VkAttachmentViewCreateFlags     flags;
+       };
+       const Unique<VkAttachmentView>                  colorAttView                    (createAttachmentView(vk, vkDevice, &colorAttViewParams));
 
-       const Unique<VkShaderT>                                 vertShader                              (createShader(vk, vkDevice, context.getBinaryCollection().get("vert"), 0));
-       const Unique<VkShaderT>                                 fragShader                              (createShader(vk, vkDevice, context.getBinaryCollection().get("frag"), 0));
+       const Unique<VkShaderModule>                    vertShaderModule                (createShaderModule(vk, vkDevice, context.getBinaryCollection().get("vert"), 0));
+       const VkShaderCreateInfo                                vertShaderParams                =
+       {
+               VK_STRUCTURE_TYPE_SHADER_CREATE_INFO,                   //      VkStructureType         sType;
+               DE_NULL,                                                                                //      const void*                     pNext;
+               *vertShaderModule,                                                              //      VkShaderModule          module;
+               DE_NULL,                                                                                //      const char*                     pName;
+               0u,                                                                                             //      VkShaderCreateFlags     flags;
+       };
+       const Unique<VkShader>                                  vertShader                              (createShader(vk, vkDevice, &vertShaderParams));
+       const Unique<VkShaderModule>                    fragShaderModule                (createShaderModule(vk, vkDevice, context.getBinaryCollection().get("frag"), 0));
+       const VkShaderCreateInfo                                fragShaderParams                =
+       {
+               VK_STRUCTURE_TYPE_SHADER_CREATE_INFO,                   //      VkStructureType         sType;
+               DE_NULL,                                                                                //      const void*                     pNext;
+               *fragShaderModule,                                                              //      VkShaderModule          module;
+               DE_NULL,                                                                                //      const char*                     pName;
+               0u,                                                                                             //      VkShaderCreateFlags     flags;
+       };
+       const Unique<VkShader>                                  fragShader                              (createShader(vk, vkDevice, &fragShaderParams));
 
        // Pipeline layout
        const VkPipelineLayoutCreateInfo                pipelineLayoutParams    =
@@ -234,159 +278,159 @@ tcu::TestStatus renderTriangle (Context& context)
                DE_NULL,                                                                                                //      const void*                                             pNext;
                0u,                                                                                                             //      deUint32                                                descriptorSetCount;
                DE_NULL,                                                                                                //      const VkDescriptorSetLayout*    pSetLayouts;
+               0u,                                                                                                             //      deUint32                                                pushConstantRangeCount;
+               DE_NULL,                                                                                                //      const VkPushConstantRange*              pPushConstantRanges;
        };
-       const Unique<VkPipelineLayoutT>                 pipelineLayout                  (createPipelineLayout(vk, vkDevice, &pipelineLayoutParams));
+       const Unique<VkPipelineLayout                 pipelineLayout                  (createPipelineLayout(vk, vkDevice, &pipelineLayoutParams));
 
        // Pipeline
        const VkSpecializationInfo                              emptyShaderSpecParams   =
        {
                0u,                                                                                                             //      deUint32                                                mapEntryCount;
                DE_NULL,                                                                                                //      const VkSpecializationMapEntry* pMap;
+               0,                                                                                                              //      const deUintptr                                 dataSize;
                DE_NULL,                                                                                                //      const void*                                             pData;
        };
-       const VkPipelineShaderStageCreateInfo   vertShaderParams                =
+       const VkPipelineShaderStageCreateInfo   shaderStageParams[]     =
        {
-               VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO,    //      VkStructureType         sType;
-               DE_NULL,                                                                                                //      const void*                     pNext;
                {
+                       VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO,    //      VkStructureType                         sType;
+                       DE_NULL,                                                                                                //      const void*                                     pNext;
                        VK_SHADER_STAGE_VERTEX,                                                                 //      VkShaderStage                           stage;
                        *vertShader,                                                                                    //      VkShader                                        shader;
-                       0u,                                                                                                             //      deUint32                                        linkConstBufferCount;
-                       DE_NULL,                                                                                                //      const VkLinkConstBuffer*        pLinkConstBufferInfo;
                        &emptyShaderSpecParams,                                                                 //      const VkSpecializationInfo*     pSpecializationInfo;
-               }                                                                                                               //      VkPipelineShader        shader;
-       };
-       const VkPipelineShaderStageCreateInfo   fragShaderParams                =
-       {
-               VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO,    //      VkStructureType         sType;
-               &vertShaderParams,                                                                              //      const void*                     pNext;
+               },
                {
+                       VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO,    //      VkStructureType                         sType;
+                       &vertShaderParams,                                                                              //      const void*                                     pNext;
                        VK_SHADER_STAGE_FRAGMENT,                                                               //      VkShaderStage                           stage;
                        *fragShader,                                                                                    //      VkShader                                        shader;
-                       0u,                                                                                                             //      deUint32                                        linkConstBufferCount;
-                       DE_NULL,                                                                                                //      const VkLinkConstBuffer*        pLinkConstBufferInfo;
                        &emptyShaderSpecParams,                                                                 //      const VkSpecializationInfo*     pSpecializationInfo;
-               }                                                                                                               //      VkPipelineShader        shader;
-       };
-       const VkPipelineDsStateCreateInfo               depthStencilParams              =
-       {
-               VK_STRUCTURE_TYPE_PIPELINE_DS_STATE_CREATE_INFO,                //      VkStructureType         sType;
-               &fragShaderParams,                                                                              //      const void*                     pNext;
-               VK_FORMAT_UNDEFINED,                                                                    //      VkFormat                        format;
-               DE_FALSE,                                                                                               //      deUint32                        depthTestEnable;
-               DE_FALSE,                                                                                               //      deUint32                        depthWriteEnable;
-               VK_COMPARE_OP_ALWAYS,                                                                   //      VkCompareOp                     depthCompareOp;
-               DE_FALSE,                                                                                               //      deUint32                        depthBoundsEnable;
-               DE_FALSE,                                                                                               //      deUint32                        stencilTestEnable;
+               }
+       };
+       const VkPipelineDepthStencilStateCreateInfo     depthStencilParams              =
+       {
+               VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO,     //      VkStructureType         sType;
+               &fragShaderParams,                                                                                      //      const void*                     pNext;
+               DE_FALSE,                                                                                                       //      deUint32                        depthTestEnable;
+               DE_FALSE,                                                                                                       //      deUint32                        depthWriteEnable;
+               VK_COMPARE_OP_ALWAYS,                                                                           //      VkCompareOp                     depthCompareOp;
+               DE_FALSE,                                                                                                       //      deUint32                        depthBoundsEnable;
+               DE_FALSE,                                                                                                       //      deUint32                        stencilTestEnable;
                {
-                       VK_STENCIL_OP_KEEP,                                                                             //      VkStencilOp     stencilFailOp;
-                       VK_STENCIL_OP_KEEP,                                                                             //      VkStencilOp     stencilPassOp;
-                       VK_STENCIL_OP_KEEP,                                                                             //      VkStencilOp     stencilDepthFailOp;
-                       VK_COMPARE_OP_ALWAYS,                                                                   //      VkCompareOp     stencilCompareOp;
-               },                                                                                                              //      VkStencilOpState        front;
+                       VK_STENCIL_OP_KEEP,                                                                                     //      VkStencilOp     stencilFailOp;
+                       VK_STENCIL_OP_KEEP,                                                                                     //      VkStencilOp     stencilPassOp;
+                       VK_STENCIL_OP_KEEP,                                                                                     //      VkStencilOp     stencilDepthFailOp;
+                       VK_COMPARE_OP_ALWAYS,                                                                           //      VkCompareOp     stencilCompareOp;
+               },                                                                                                                      //      VkStencilOpState        front;
                {
-                       VK_STENCIL_OP_KEEP,                                                                             //      VkStencilOp     stencilFailOp;
-                       VK_STENCIL_OP_KEEP,                                                                             //      VkStencilOp     stencilPassOp;
-                       VK_STENCIL_OP_KEEP,                                                                             //      VkStencilOp     stencilDepthFailOp;
-                       VK_COMPARE_OP_ALWAYS,                                                                   //      VkCompareOp     stencilCompareOp;
-               }                                                                                                               //      VkStencilOpState        back;
+                       VK_STENCIL_OP_KEEP,                                                                                     //      VkStencilOp     stencilFailOp;
+                       VK_STENCIL_OP_KEEP,                                                                                     //      VkStencilOp     stencilPassOp;
+                       VK_STENCIL_OP_KEEP,                                                                                     //      VkStencilOp     stencilDepthFailOp;
+                       VK_COMPARE_OP_ALWAYS,                                                                           //      VkCompareOp     stencilCompareOp;
+               }                                                                                                                       //      VkStencilOpState        back;
        };
-       const VkPipelineVpStateCreateInfo               viewportParams                  =
+       const VkPipelineViewportStateCreateInfo         viewportParams                  =
        {
-               VK_STRUCTURE_TYPE_PIPELINE_VP_STATE_CREATE_INFO,                //      VkStructureType         sType;
-               &depthStencilParams,                                                                    //      const void*                     pNext;
-               1u,                                                                                                             //      deUint32                        viewportCount;
-               VK_COORDINATE_ORIGIN_LOWER_LEFT,                                                //      VkCoordinateOrigin      clipOrigin;
-               VK_DEPTH_MODE_ZERO_TO_ONE,                                                              //      VkDepthMode                     depthMode;
+               VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO,          //      VkStructureType         sType;
+               &depthStencilParams,                                                                            //      const void*                     pNext;
+               1u,                                                                                                                     //      deUint32                        viewportCount;
        };
-       const VkPipelineMsStateCreateInfo               multisampleParams               =
-       {
-               VK_STRUCTURE_TYPE_PIPELINE_MS_STATE_CREATE_INFO,                //      VkStructureType sType;
-               &viewportParams,                                                                                //      const void*             pNext;
-               1u,                                                                                                             //      deUint32                samples;
-               DE_FALSE,                                                                                               //      deUint32                multisampleEnable;
-               DE_FALSE,                                                                                               //      deUint32                sampleShadingEnable;
-               0.0f,                                                                                                   //      float                   minSampleShading;
-               ~0u,                                                                                                    //      VkSampleMask    sampleMask;
+       const VkPipelineMultisampleStateCreateInfo      multisampleParams               =
+       {
+               VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO,       //      VkStructureType sType;
+               DE_NULL,                                                                                                        //      const void*             pNext;
+               1u,                                                                                                                     //      deUint32                rasterSamples;
+               DE_FALSE,                                                                                                       //      deUint32                sampleShadingEnable;
+               0.0f,                                                                                                           //      float                   minSampleShading;
+               ~0u,                                                                                                            //      VkSampleMask    sampleMask;
        };
-       const VkPipelineCbAttachmentState               colorAttachmentParams   =
+       const VkPipelineRasterStateCreateInfo           rasterParams                    =
        {
-               DE_FALSE,                                                                                                                               //      deUint32                blendEnable;
-               VK_FORMAT_R8G8B8A8_UNORM,                                                                                               //      VkFormat                format;
-               VK_BLEND_ONE,                                                                                                                   //      VkBlend                 srcBlendColor;
-               VK_BLEND_ZERO,                                                                                                                  //      VkBlend                 destBlendColor;
-               VK_BLEND_OP_ADD,                                                                                                                //      VkBlendOp               blendOpColor;
-               VK_BLEND_ONE,                                                                                                                   //      VkBlend                 srcBlendAlpha;
-               VK_BLEND_ZERO,                                                                                                                  //      VkBlend                 destBlendAlpha;
-               VK_BLEND_OP_ADD,                                                                                                                //      VkBlendOp               blendOpAlpha;
-               VK_CHANNEL_R_BIT|VK_CHANNEL_G_BIT|VK_CHANNEL_B_BIT|VK_CHANNEL_A_BIT,    //      VkChannelFlags  channelWriteMask;
-       };
-       const VkPipelineCbStateCreateInfo               colorBufferParams               =
-       {
-               VK_STRUCTURE_TYPE_PIPELINE_CB_STATE_CREATE_INFO,                //      VkStructureType                                         sType;
-               &multisampleParams,                                                                             //      const void*                                                     pNext;
-               DE_FALSE,                                                                                               //      deUint32                                                        alphaToCoverageEnable;
-               DE_FALSE,                                                                                               //      deUint32                                                        logicOpEnable;
-               VK_LOGIC_OP_COPY,                                                                               //      VkLogicOp                                                       logicOp;
-               1u,                                                                                                             //      deUint32                                                        attachmentCount;
-               &colorAttachmentParams,                                                                 //      const VkPipelineCbAttachmentState*      pAttachments;
-       };
-       const VkPipelineRsStateCreateInfo               rasterParams                    =
-       {
-               VK_STRUCTURE_TYPE_PIPELINE_RS_STATE_CREATE_INFO,                //      VkStructureType         sType;
-               &colorBufferParams,                                                                             //      const void*                     pNext;
+               VK_STRUCTURE_TYPE_PIPELINE_RASTER_STATE_CREATE_INFO,    //      VkStructureType         sType;
+               DE_NULL,                                                                                                //      const void*                     pNext;
                DE_TRUE,                                                                                                //      deUint32                        depthClipEnable;
                DE_FALSE,                                                                                               //      deUint32                        rasterizerDiscardEnable;
-               DE_FALSE,                                                                                               //      deUint32                        programPointSize;
-               VK_COORDINATE_ORIGIN_LOWER_LEFT,                                                //      VkCoordinateOrigin      pointOrigin;
-               VK_PROVOKING_VERTEX_FIRST,                                                              //      VkProvokingVertex       provokingVertex;
                VK_FILL_MODE_SOLID,                                                                             //      VkFillMode                      fillMode;
                VK_CULL_MODE_NONE,                                                                              //      VkCullMode                      cullMode;
                VK_FRONT_FACE_CCW,                                                                              //      VkFrontFace                     frontFace;
        };
-       const VkPipelineIaStateCreateInfo               inputAssemblerParams    =
+       const VkPipelineInputAssemblyStateCreateInfo    inputAssemblyParams     =
        {
-               VK_STRUCTURE_TYPE_PIPELINE_IA_STATE_CREATE_INFO,                //      VkStructureType         sType;
-               &rasterParams,                                                                                  //      const void*                     pNext;
-               VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST,                                    //      VkPrimitiveTopology     topology;
-               DE_FALSE,                                                                                               //      deUint32                        disableVertexReuse;
-               DE_FALSE,                                                                                               //      deUint32                        primitiveRestartEnable;
-               0u,                                                                                                             //      deUint32                        primitiveRestartIndex;
+               VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO,    //      VkStructureType         sType;
+               DE_NULL,                                                                                                                //      const void*                     pNext;
+               VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST,                                                    //      VkPrimitiveTopology     topology;
+               DE_FALSE,                                                                                                               //      deUint32                        primitiveRestartEnable;
        };
-       const VkVertexInputBindingDescription   vertexBinding0                  =
+       const VkVertexInputBindingDescription           vertexBinding0                  =
        {
                0u,                                                                                                             //      deUint32                                binding;
                (deUint32)sizeof(tcu::Vec4),                                                    //      deUint32                                strideInBytes;
                VK_VERTEX_INPUT_STEP_RATE_VERTEX,                                               //      VkVertexInputStepRate   stepRate;
        };
-       const VkVertexInputAttributeDescription vertexAttrib0                   =
+       const VkVertexInputAttributeDescription         vertexAttrib0                   =
        {
                0u,                                                                                                             //      deUint32        location;
                0u,                                                                                                             //      deUint32        binding;
                VK_FORMAT_R32G32B32A32_SFLOAT,                                                  //      VkFormat        format;
                0u,                                                                                                             //      deUint32        offsetInBytes;
        };
-       const VkPipelineVertexInputCreateInfo   vertexInputInfo                 =
+       const VkPipelineVertexInputStateCreateInfo      vertexInputStateParams  =
+       {
+               VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO,      //      VkStructureType                                                         sType;
+               DE_NULL,                                                                                                        //      const void*                                                                     pNext;
+               1u,                                                                                                                     //      deUint32                                                                        bindingCount;
+               &vertexBinding0,                                                                                        //      const VkVertexInputBindingDescription*          pVertexBindingDescriptions;
+               1u,                                                                                                                     //      deUint32                                                                        attributeCount;
+               &vertexAttrib0,                                                                                         //      const VkVertexInputAttributeDescription*        pVertexAttributeDescriptions;
+       };
+       const VkPipelineColorBlendAttachmentState       attBlendParams                  =
        {
-               VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_CREATE_INFO,    //      VkStructureType                                                         sType;
-               &inputAssemblerParams,                                                                  //      const void*                                                                     pNext;
-               1u,                                                                                                             //      deUint32                                                                        bindingCount;
-               &vertexBinding0,                                                                                //      const VkVertexInputBindingDescription*          pVertexBindingDescriptions;
-               1u,                                                                                                             //      deUint32                                                                        attributeCount;
-               &vertexAttrib0,                                                                                 //      const VkVertexInputAttributeDescription*        pVertexAttributeDescriptions;
+               DE_FALSE,                                                                                                                               //      deUint32                blendEnable;
+               VK_BLEND_ONE,                                                                                                                   //      VkBlend                 srcBlendColor;
+               VK_BLEND_ZERO,                                                                                                                  //      VkBlend                 destBlendColor;
+               VK_BLEND_OP_ADD,                                                                                                                //      VkBlendOp               blendOpColor;
+               VK_BLEND_ONE,                                                                                                                   //      VkBlend                 srcBlendAlpha;
+               VK_BLEND_ZERO,                                                                                                                  //      VkBlend                 destBlendAlpha;
+               VK_BLEND_OP_ADD,                                                                                                                //      VkBlendOp               blendOpAlpha;
+               VK_CHANNEL_R_BIT|VK_CHANNEL_G_BIT|VK_CHANNEL_B_BIT|VK_CHANNEL_A_BIT,    //      VkChannelFlags  channelWriteMask;
+       };
+       const VkPipelineColorBlendStateCreateInfo       blendParams                             =
+       {
+               VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO,       //      VkStructureType                                                         sType;
+               DE_NULL,                                                                                                        //      const void*                                                                     pNext;
+               DE_FALSE,                                                                                                       //      VkBool32                                                                        alphaToCoverageEnable;
+               DE_FALSE,                                                                                                       //      VkBool32                                                                        logicOpEnable;
+               VK_LOGIC_OP_COPY,                                                                                       //      VkLogicOp                                                                       logicOp;
+               1u,                                                                                                                     //      deUint32                                                                        attachmentCount;
+               &attBlendParams,                                                                                        //      const VkPipelineColorBlendAttachmentState*      pAttachments;
        };
        const VkGraphicsPipelineCreateInfo              pipelineParams                  =
        {
-               VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO,                //      VkStructureType                 sType;
-               &vertexInputInfo,                                                                               //      const void*                             pNext;
-               0u,                                                                                                             //      VkPipelineCreateFlags   flags;
-               *pipelineLayout                                                                                 //      VkPipelineLayout                layout;
+               VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO,                //      VkStructureType                                                                 sType;
+               DE_NULL,                                                                                                //      const void*                                                                             pNext;
+               (deUint32)DE_LENGTH_OF_ARRAY(shaderStageParams),                //      deUint32                                                                                stageCount;
+               shaderStageParams,                                                                              //      const VkPipelineShaderStageCreateInfo*                  pStages;
+               &vertexInputStateParams,                                                                //      const VkPipelineVertexInputStateCreateInfo*             pVertexInputState;
+               &inputAssemblyParams,                                                                   //      const VkPipelineInputAssemblyStateCreateInfo*   pInputAssemblyState;
+               DE_NULL,                                                                                                //      const VkPipelineTessellationStateCreateInfo*    pTessellationState;
+               &viewportParams,                                                                                //      const VkPipelineViewportStateCreateInfo*                pViewportState;
+               &rasterParams,                                                                                  //      const VkPipelineRasterStateCreateInfo*                  pRasterState;
+               &multisampleParams,                                                                             //      const VkPipelineMultisampleStateCreateInfo*             pMultisampleState;
+               &depthStencilParams,                                                                    //      const VkPipelineDepthStencilStateCreateInfo*    pDepthStencilState;
+               &blendParams,                                                                                   //      const VkPipelineColorBlendStateCreateInfo*              pColorBlendState;
+               0u,                                                                                                             //      VkPipelineCreateFlags                                                   flags;
+               *pipelineLayout,                                                                                //      VkPipelineLayout                                                                layout;
+               DE_NULL,                                                                                                //      VkRenderPass                                                                    renderPass;
+               0u,                                                                                                             //      deUint32                                                                                subpass;
+               DE_NULL,                                                                                                //      VkPipeline                                                                              basePipelineHandle;
+               0u,                                                                                                             //      deInt32                                                                                 basePipelineIndex;
        };
 
-       const Unique<VkPipelineT>                               pipeline                                (createGraphicsPipeline(vk, vkDevice, &pipelineParams));
+       const Unique<VkPipeline>                                pipeline                                (createGraphicsPipeline(vk, vkDevice, DE_NULL, &pipelineParams));
 
        // Framebuffer
-       const VkColorAttachmentBindInfo                 colorBinding0                   =
+       const VkAttachmentBindInfo                              colorBinding0                   =
        {
                *colorAttView,                                                                                  //      VkColorAttachmentView   view;
                VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL,                               //      VkImageLayout                   layout;
@@ -395,15 +439,14 @@ tcu::TestStatus renderTriangle (Context& context)
        {
                VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO,                              //      VkStructureType                                         sType;
                DE_NULL,                                                                                                //      const void*                                                     pNext;
-               1u,                                                                                                             //      deUint32                                                        colorAttachmentCount;
-               &colorBinding0,                                                                                 //      const VkColorAttachmentBindInfo*        pColorAttachments;
-               DE_NULL,                                                                                                //      const VkDepthStencilBindInfo*           pDepthStencilAttachment;
-               1u,                                                                                                             //      deUint32                                                        sampleCount;
+               *renderPass,                                                                                    //      VkRenderPass                                            renderPass;
+               1u,                                                                                                             //      deUint32                                                        attachmentCount;
+               &colorBinding0,                                                                                 //      const VkAttachmentBindInfo*                     pAttachments;
                (deUint32)renderSize.x(),                                                               //      deUint32                                                        width;
                (deUint32)renderSize.y(),                                                               //      deUint32                                                        height;
                1u,                                                                                                             //      deUint32                                                        layers;
        };
-       const Unique<VkFramebufferT>                    framebuffer                             (createFramebuffer(vk, vkDevice, &framebufferParams));
+       const Unique<VkFramebuffer>                             framebuffer                             (createFramebuffer(vk, vkDevice, &framebufferParams));
 
        // Viewport state
        const VkViewport                                                viewport0                               =
@@ -415,7 +458,7 @@ tcu::TestStatus renderTriangle (Context& context)
                0.0f,                                                                                                   //      float   minDepth;
                1.0f,                                                                                                   //      float   maxDepth;
        };
-       const VkRect                                                    scissor0                                =
+       const VkRect2D                                                  scissor0                                =
        {
                {
                        0u,                                                                                                             //      deInt32 x;
@@ -426,117 +469,51 @@ tcu::TestStatus renderTriangle (Context& context)
                        renderSize.y(),                                                                                 //      deInt32 height;
                },                                                                                                              //      VkExtent2D      extent;
        };
-       const VkDynamicVpStateCreateInfo                viewportStateParams             =
+       const VkDynamicViewportStateCreateInfo  viewportStateParams             =
        {
-               VK_STRUCTURE_TYPE_DYNAMIC_VP_STATE_CREATE_INFO,                 //      VkStructureType         sType;
+               VK_STRUCTURE_TYPE_DYNAMIC_VIEWPORT_STATE_CREATE_INFO,   //      VkStructureType         sType;
                DE_NULL,                                                                                                //      const void*                     pNext;
                1u,                                                                                                             //      deUint32                        viewportAndScissorCount;
                &viewport0,                                                                                             //      const VkViewport*       pViewports;
                &scissor0,                                                                                              //      const VkRect*           pScissors;
        };
-       const Unique<VkDynamicVpStateT>                 viewportState                   (createDynamicViewportState(vk, vkDevice, &viewportStateParams));
-
-       // Render pass
-       struct
-       {
-               VkFormat                        format;
-               VkImageLayout           layout;
-               VkAttachmentLoadOp      loadOp;
-               VkAttachmentStoreOp     storeOp;
-               VkClearColor            clearColor;
-       }                                                                               passAttParams                   =
-       {
-               VK_FORMAT_R8G8B8A8_UNORM,
-               VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL,
-               VK_ATTACHMENT_LOAD_OP_CLEAR,
-               VK_ATTACHMENT_STORE_OP_STORE,
-               {
-                       VkClearColorValue(0.125f, 0.25f, 0.75f, 1.0f),
-                       DE_FALSE
-               },
-       };
-       const VkRenderPassCreateInfo                    renderPassParams                =
-       {
-               VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO,                              //      VkStructureType                         sType;
-               DE_NULL,                                                                                                //      const void*                                     pNext;
-               { { 0u, 0u, }, { renderSize.x(), renderSize.y() } },    //      VkRect                                          renderArea;
-               1u,                                                                                                             //      deUint32                                        colorAttachmentCount;
-               { renderSize.x(), renderSize.y() },                                             //      VkExtent2D                                      extent;
-               1u,                                                                                                             //      deUint32                                        sampleCount;
-               1u,                                                                                                             //      deUint32                                        layers;
-               &passAttParams.format,                                                                  //      const VkFormat*                         pColorFormats;
-               &passAttParams.layout,                                                                  //      const VkImageLayout*            pColorLayouts;
-               &passAttParams.loadOp,                                                                  //      const VkAttachmentLoadOp*       pColorLoadOps;
-               &passAttParams.storeOp,                                                                 //      const VkAttachmentStoreOp*      pColorStoreOps;
-               &passAttParams.clearColor,                                                              //      const VkClearColor*                     pColorLoadClearValues;
-               VK_FORMAT_UNDEFINED,                                                                    //      VkFormat                                        depthStencilFormat;
-               VK_IMAGE_LAYOUT_UNDEFINED,                                                              //      VkImageLayout                           depthStencilLayout;
-               VK_ATTACHMENT_LOAD_OP_DONT_CARE,                                                //      VkAttachmentLoadOp                      depthLoadOp;
-               0.0f,                                                                                                   //      float                                           depthLoadClearValue;
-               VK_ATTACHMENT_STORE_OP_DONT_CARE,                                               //      VkAttachmentStoreOp                     depthStoreOp;
-               VK_ATTACHMENT_LOAD_OP_DONT_CARE,                                                //      VkAttachmentLoadOp                      stencilLoadOp;
-               0u,                                                                                                             //      deUint32                                        stencilLoadClearValue;
-               VK_ATTACHMENT_STORE_OP_DONT_CARE,                                               //      VkAttachmentStoreOp                     stencilStoreOp;
-       };
-       const Unique<VkRenderPassT>                             renderPass                              (createRenderPass(vk, vkDevice, &renderPassParams));
+       const Unique<VkDynamicViewportState>    viewportState                   (createDynamicViewportState(vk, vkDevice, &viewportStateParams));
 
        // Command buffer
        const VkCmdBufferCreateInfo                             cmdBufParams                    =
        {
                VK_STRUCTURE_TYPE_CMD_BUFFER_CREATE_INFO,                               //      VkStructureType                 sType;
                DE_NULL,                                                                                                //      const void*                             pNext;
-               context.getUniversalQueueIndex(),                                               //      deUint32                                queueNodeIndex;
+               DE_NULL,                                                                                                //      VkCmdPool                               pool;
+               VK_CMD_BUFFER_LEVEL_PRIMARY,                                                    //      VkCmdBufferLevel                level;
                0u,                                                                                                             //      VkCmdBufferCreateFlags  flags;
        };
-       const Unique<VkCmdBufferT>                              cmdBuf                                  (createCommandBuffer(vk, vkDevice, &cmdBufParams));
+       const Unique<VkCmdBuffer                              cmdBuf                                  (createCommandBuffer(vk, vkDevice, &cmdBufParams));
 
        const VkCmdBufferBeginInfo                              cmdBufBeginParams               =
        {
                VK_STRUCTURE_TYPE_CMD_BUFFER_BEGIN_INFO,                                //      VkStructureType                         sType;
                DE_NULL,                                                                                                //      const void*                                     pNext;
                0u,                                                                                                             //      VkCmdBufferOptimizeFlags        flags;
+               *renderPass,                                                                                    //      VkRenderPass                            renderPass;
+               *framebuffer,                                                                                   //      VkFramebuffer                           framebuffer;
        };
 
        // Attach memory
        // \note [pyry] Should be able to do this after creating CmdBuffer but one driver crashes at vkCopyImageToBuffer if memory is not attached at that point
-       for (size_t allocNdx = 0; allocNdx < vertexBufferAllocs.size(); allocNdx++)
-       {
-               const VkDeviceMemory    memory  = vertexBufferAllocs[allocNdx]->getMemory();
-               VK_CHECK(vk.queueBindObjectMemory(queue, VK_OBJECT_TYPE_BUFFER, *vertexBuffer, (deUint32)allocNdx, memory, vertexBufferAllocs[allocNdx]->getOffset()));
-               VK_CHECK(vk.queueAddMemReferences(queue, 1u, &memory));
-       }
-
-       for (size_t allocNdx = 0; allocNdx < readImageBufferAllocs.size(); allocNdx++)
-       {
-               const VkDeviceMemory    memory  = readImageBufferAllocs[allocNdx]->getMemory();
-               VK_CHECK(vk.queueBindObjectMemory(queue, VK_OBJECT_TYPE_BUFFER, *readImageBuffer, (deUint32)allocNdx, memory, readImageBufferAllocs[allocNdx]->getOffset()));
-               VK_CHECK(vk.queueAddMemReferences(queue, 1u, &memory));
-       }
-
-       for (size_t allocNdx = 0; allocNdx < imageAllocs.size(); allocNdx++)
-       {
-               const VkDeviceMemory    memory  = imageAllocs[allocNdx]->getMemory();
-               VK_CHECK(vk.queueBindObjectMemory(queue, VK_OBJECT_TYPE_IMAGE, *image, (deUint32)allocNdx, memory, imageAllocs[allocNdx]->getOffset()));
-               VK_CHECK(vk.queueAddMemReferences(queue, 1u, &memory));
-       }
-
-       // \note Only buffers and images are expected to require device memory. Later API revisions make this explicit.
-       TCU_CHECK(getObjectInfo<VK_OBJECT_INFO_TYPE_MEMORY_REQUIREMENTS>(vk, vkDevice, pipeline).empty());
-       TCU_CHECK(getObjectInfo<VK_OBJECT_INFO_TYPE_MEMORY_REQUIREMENTS>(vk, vkDevice, framebuffer).empty());
-       TCU_CHECK(getObjectInfo<VK_OBJECT_INFO_TYPE_MEMORY_REQUIREMENTS>(vk, vkDevice, viewportState).empty());
-       TCU_CHECK(getObjectInfo<VK_OBJECT_INFO_TYPE_MEMORY_REQUIREMENTS>(vk, vkDevice, renderPass).empty());
-       TCU_CHECK(getObjectInfo<VK_OBJECT_INFO_TYPE_MEMORY_REQUIREMENTS>(vk, vkDevice, cmdBuf).empty());
+       VK_CHECK(vk.bindBufferMemory(vkDevice, *vertexBuffer, vertexBufferMemory->getMemory(), vertexBufferMemory->getOffset()));
+       VK_CHECK(vk.bindBufferMemory(vkDevice, *readImageBuffer, readImageBufferMemory->getMemory(), readImageBufferMemory->getOffset()));
+       VK_CHECK(vk.bindImageMemory(vkDevice, *image, imageMemory->getMemory(), imageMemory->getOffset()));
 
        // Record commands
        VK_CHECK(vk.beginCommandBuffer(*cmdBuf, &cmdBufBeginParams));
 
        {
-               const VkPipeEvent                       pipeEvent                       = VK_PIPE_EVENT_TOP_OF_PIPE;
                const VkMemoryBarrier           vertFlushBarrier        =
                {
                        VK_STRUCTURE_TYPE_MEMORY_BARRIER,                       //      VkStructureType         sType;
                        DE_NULL,                                                                        //      const void*                     pNext;
-                       VK_MEMORY_OUTPUT_CPU_WRITE_BIT,                         //      VkMemoryOutputFlags     outputMask;
+                       VK_MEMORY_OUTPUT_HOST_WRITE_BIT,                        //      VkMemoryOutputFlags     outputMask;
                        VK_MEMORY_INPUT_VERTEX_ATTRIBUTE_FETCH_BIT,     //      VkMemoryInputFlags      inputMask;
                };
                const VkImageMemoryBarrier      colorAttBarrier         =
@@ -547,6 +524,8 @@ tcu::TestStatus renderTriangle (Context& context)
                        0u,                                                                                     //      VkMemoryInputFlags              inputMask;
                        VK_IMAGE_LAYOUT_UNDEFINED,                                      //      VkImageLayout                   oldLayout;
                        VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL,       //      VkImageLayout                   newLayout;
+                       queueIndex,                                                                     //      deUint32                                srcQueueFamilyIndex;
+                       queueIndex,                                                                     //      deUint32                                destQueueFamilyIndex;
                        *image,                                                                         //      VkImage                                 image;
                        {
                                VK_IMAGE_ASPECT_COLOR,                                          //      VkImageAspect   aspect;
@@ -557,29 +536,34 @@ tcu::TestStatus renderTriangle (Context& context)
                        }                                                                                       //      VkImageSubresourceRange subresourceRange;
                };
                const void*                             barriers[]                              = { &vertFlushBarrier, &colorAttBarrier };
-               vk.cmdPipelineBarrier(*cmdBuf, VK_WAIT_EVENT_TOP_OF_PIPE, 1u, &pipeEvent, (deUint32)DE_LENGTH_OF_ARRAY(barriers), barriers);
+               vk.cmdPipelineBarrier(*cmdBuf, VK_PIPELINE_STAGE_HOST_BIT, VK_PIPELINE_STAGE_ALL_GPU_COMMANDS, DE_FALSE, (deUint32)DE_LENGTH_OF_ARRAY(barriers), barriers);
        }
 
        {
-               const VkRenderPassBegin passBeginParams =
+               const VkClearValue                      clearValue              = clearValueColorF32(0.125f, 0.25f, 0.75f, 1.0f);
+               const VkRenderPassBeginInfo     passBeginParams =
                {
-                       *renderPass,    //      VkRenderPass    renderPass;
-                       *framebuffer,   //      VkFramebuffer   framebuffer;
+                       VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO,                       //      VkStructureType         sType;
+                       DE_NULL,                                                                                        //      const void*                     pNext;
+                       *renderPass,                                                                            //      VkRenderPass            renderPass;
+                       *framebuffer,                                                                           //      VkFramebuffer           framebuffer;
+                       { { 0, 0 }, { renderSize.x(), renderSize.y() } },       //      VkRect2D                        renderArea;
+                       1u,                                                                                                     //      deUint32                        attachmentCount;
+                       &clearValue,                                                                            //      const VkClearValue*     pAttachmentClearValues;
                };
-               vk.cmdBeginRenderPass(*cmdBuf, &passBeginParams);
+               vk.cmdBeginRenderPass(*cmdBuf, &passBeginParams, VK_RENDER_PASS_CONTENTS_INLINE);
        }
 
-       vk.cmdBindDynamicStateObject(*cmdBuf, VK_STATE_BIND_POINT_VIEWPORT, *viewportState);
+       vk.cmdBindDynamicViewportState(*cmdBuf, *viewportState);
        vk.cmdBindPipeline(*cmdBuf, VK_PIPELINE_BIND_POINT_GRAPHICS, *pipeline);
        {
                const VkDeviceSize bindingOffset = 0;
                vk.cmdBindVertexBuffers(*cmdBuf, 0u, 1u, &vertexBuffer.get(), &bindingOffset);
        }
        vk.cmdDraw(*cmdBuf, 0u, 3u, 0u, 1u);
-       vk.cmdEndRenderPass(*cmdBuf, *renderPass);
+       vk.cmdEndRenderPass(*cmdBuf);
 
        {
-               const VkPipeEvent                       pipeEvent                       = VK_PIPE_EVENT_GRAPHICS_PIPELINE_COMPLETE;
                const VkImageMemoryBarrier      renderFinishBarrier     =
                {
                        VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER,         //      VkStructureType                 sType;
@@ -588,6 +572,8 @@ tcu::TestStatus renderTriangle (Context& context)
                        VK_MEMORY_INPUT_TRANSFER_BIT,                           //      VkMemoryInputFlags              inputMask;
                        VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL,       //      VkImageLayout                   oldLayout;
                        VK_IMAGE_LAYOUT_TRANSFER_SOURCE_OPTIMAL,        //      VkImageLayout                   newLayout;
+                       queueIndex,                                                                     //      deUint32                                srcQueueFamilyIndex;
+                       queueIndex,                                                                     //      deUint32                                destQueueFamilyIndex;
                        *image,                                                                         //      VkImage                                 image;
                        {
                                VK_IMAGE_ASPECT_COLOR,                                          //      VkImageAspect   aspect;
@@ -598,13 +584,15 @@ tcu::TestStatus renderTriangle (Context& context)
                        }                                                                                       //      VkImageSubresourceRange subresourceRange;
                };
                const void*                             barriers[]                              = { &renderFinishBarrier };
-               vk.cmdPipelineBarrier(*cmdBuf, VK_WAIT_EVENT_TOP_OF_PIPE, 1u, &pipeEvent, (deUint32)DE_LENGTH_OF_ARRAY(barriers), barriers);
+               vk.cmdPipelineBarrier(*cmdBuf, VK_PIPELINE_STAGE_ALL_GRAPHICS, VK_PIPELINE_STAGE_TRANSFER_BIT, DE_FALSE, (deUint32)DE_LENGTH_OF_ARRAY(barriers), barriers);
        }
 
        {
                const VkBufferImageCopy copyParams      =
                {
                        (VkDeviceSize)0u,                                               //      VkDeviceSize            bufferOffset;
+                       (deUint32)(renderSize.x()*4),                   //      deUint32                        bufferRowLength;
+                       0u,                                                                             //      deUint32                        bufferImageHeight;
                        {
                                VK_IMAGE_ASPECT_COLOR,                                  //      VkImageAspect   aspect;
                                0u,                                                                             //      deUint32                mipLevel;
@@ -617,31 +605,40 @@ tcu::TestStatus renderTriangle (Context& context)
        }
 
        {
-               const VkPipeEvent                       pipeEvent                       = VK_PIPE_EVENT_TRANSFER_COMPLETE;
                const VkBufferMemoryBarrier     copyFinishBarrier       =
                {
                        VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER,        //      VkStructureType         sType;
                        DE_NULL,                                                                        //      const void*                     pNext;
                        VK_MEMORY_OUTPUT_TRANSFER_BIT,                          //      VkMemoryOutputFlags     outputMask;
-                       VK_MEMORY_INPUT_CPU_READ_BIT,                           //      VkMemoryInputFlags      inputMask;
+                       VK_MEMORY_INPUT_HOST_READ_BIT,                          //      VkMemoryInputFlags      inputMask;
+                       queueIndex,                                                                     //      deUint32                        srcQueueFamilyIndex;
+                       queueIndex,                                                                     //      deUint32                        destQueueFamilyIndex;
                        *readImageBuffer,                                                       //      VkBuffer                        buffer;
                        0u,                                                                                     //      VkDeviceSize            offset;
                        imageSizeBytes                                                          //      VkDeviceSize            size;
                };
                const void*                             barriers[]                              = { &copyFinishBarrier };
-               vk.cmdPipelineBarrier(*cmdBuf, VK_WAIT_EVENT_TOP_OF_PIPE, 1u, &pipeEvent, (deUint32)DE_LENGTH_OF_ARRAY(barriers), barriers);
+               vk.cmdPipelineBarrier(*cmdBuf, VK_PIPELINE_STAGE_TRANSFER_BIT, VK_PIPELINE_STAGE_HOST_BIT, DE_FALSE, (deUint32)DE_LENGTH_OF_ARRAY(barriers), barriers);
        }
 
        VK_CHECK(vk.endCommandBuffer(*cmdBuf));
 
        // Upload vertex data
        {
+               const VkMappedMemoryRange       range   =
+               {
+                       VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE,  //      VkStructureType sType;
+                       DE_NULL,                                                                //      const void*             pNext;
+                       vertexBufferMemory->getMemory(),                //      VkDeviceMemory  mem;
+                       0,                                                                              //      VkDeviceSize    offset;
+                       (VkDeviceSize)sizeof(vertices),                 //      VkDeviceSize    size;
+               };
                void*   vertexBufPtr    = DE_NULL;
 
-               VK_CHECK(vk.mapMemory(vkDevice, vertexBufferAllocs[0]->getMemory(), vertexBufferAllocs[0]->getOffset(), (VkDeviceSize)sizeof(vertices), 0u, &vertexBufPtr));
+               VK_CHECK(vk.mapMemory(vkDevice, vertexBufferMemory->getMemory(), vertexBufferMemory->getOffset(), (VkDeviceSize)sizeof(vertices), 0u, &vertexBufPtr));
                deMemcpy(vertexBufPtr, &vertices[0], sizeof(vertices));
-               VK_CHECK(vk.flushMappedMemory(vkDevice, vertexBufferAllocs[0]->getMemory(), vertexBufferAllocs[0]->getOffset(), (VkDeviceSize)sizeof(vertices)));
-               VK_CHECK(vk.unmapMemory(vkDevice, vertexBufferAllocs[0]->getMemory()));
+               VK_CHECK(vk.flushMappedMemoryRanges(vkDevice, 1u, &range));
+               VK_CHECK(vk.unmapMemory(vkDevice, vertexBufferMemory->getMemory()));
        }
 
        // Submit & wait for completion
@@ -652,7 +649,7 @@ tcu::TestStatus renderTriangle (Context& context)
                        DE_NULL,                                                                //      const void*                     pNext;
                        0u,                                                                             //      VkFenceCreateFlags      flags;
                };
-               const Unique<VkFenceT>  fence           (createFence(vk, vkDevice, &fenceParams));
+               const Unique<VkFence  fence           (createFence(vk, vkDevice, &fenceParams));
 
                VK_CHECK(vk.queueSubmit(queue, 1u, &cmdBuf.get(), *fence));
                VK_CHECK(vk.waitForFences(vkDevice, 1u, &fence.get(), DE_TRUE, ~0ull));
@@ -662,9 +659,9 @@ tcu::TestStatus renderTriangle (Context& context)
        {
                void*   imagePtr        = DE_NULL;
 
-               VK_CHECK(vk.mapMemory(vkDevice, readImageBufferAllocs[0]->getMemory(), readImageBufferAllocs[0]->getOffset(), imageSizeBytes, 0u, &imagePtr));
+               VK_CHECK(vk.mapMemory(vkDevice, readImageBufferMemory->getMemory(), readImageBufferMemory->getOffset(), imageSizeBytes, 0u, &imagePtr));
                context.getTestContext().getLog() << TestLog::Image("Result", "Result", tcu::ConstPixelBufferAccess(tcu::TextureFormat(tcu::TextureFormat::RGBA, tcu::TextureFormat::UNORM_INT8), renderSize.x(), renderSize.y(), 1, imagePtr));
-               VK_CHECK(vk.unmapMemory(vkDevice, readImageBufferAllocs[0]->getMemory()));
+               VK_CHECK(vk.unmapMemory(vkDevice, readImageBufferMemory->getMemory()));
        }
 
        return tcu::TestStatus::pass("Rendering succeeded");
@@ -674,9 +671,9 @@ tcu::TestCaseGroup* createTests (tcu::TestContext& testCtx)
 {
        de::MovePtr<tcu::TestCaseGroup> apiTests        (new tcu::TestCaseGroup(testCtx, "api", "API Tests"));
 
-       addFunctionCase                         (apiTests.get(), "create_sampler",      "",     createSampler);
-       addFunctionCaseWithPrograms     (apiTests.get(), "create_shader",       "", createShaderProgs,          createShader);
-       addFunctionCaseWithPrograms     (apiTests.get(), "triangle",            "", createTriangleProgs,        renderTriangle);
+       addFunctionCase                         (apiTests.get(), "create_sampler",      "",     createSamplerTest);
+       addFunctionCaseWithPrograms     (apiTests.get(), "create_shader",       "", createShaderProgs,          createShaderModuleTest);
+       addFunctionCaseWithPrograms     (apiTests.get(), "triangle",            "", createTriangleProgs,        renderTriangleTest);
 
        return apiTests.release();
 }
index b3d25da..d9c10c0 100644 (file)
@@ -46,7 +46,6 @@
 #include "tcuFormatUtil.hpp"
 
 #include "deUniquePtr.hpp"
-#include "deStringUtil.hpp"
 
 namespace vkt
 {
@@ -60,63 +59,41 @@ using tcu::TestLog;
 
 tcu::TestStatus enumeratePhysicalDevices (Context& context)
 {
-       const PlatformInterface&                vkPlatform      = context.getPlatformInterface();
-       TestLog&                                                log                     = context.getTestContext().getLog();
-       const VkInstance                                instance        = context.getInstance();
-       const vector<VkPhysicalDevice>  devices         = vk::enumeratePhysicalDevices(vkPlatform, instance);
+       TestLog&                                                log             = context.getTestContext().getLog();
+       const vector<VkPhysicalDevice>  devices = vk::enumeratePhysicalDevices(context.getInstanceInterface(), context.getInstance());
 
        log << TestLog::Integer("NumDevices", "Number of devices", "", QP_KEY_TAG_NONE, deInt64(devices.size()));
 
        for (size_t ndx = 0; ndx < devices.size(); ndx++)
-               log << TestLog::Message << ndx << ": " << tcu::toHex(devices[ndx]) << TestLog::EndMessage;
+               log << TestLog::Message << ndx << ": " << devices[ndx] << TestLog::EndMessage;
 
        return tcu::TestStatus::pass("Enumerating devices succeeded");
 }
 
-template<VkPhysicalDeviceInfoType InfoType>
-tcu::TestStatus singleProperty (Context& context)
+tcu::TestStatus queueProperties (Context& context)
 {
-       const PlatformInterface&                vkPlatform      = context.getPlatformInterface();
-       TestLog&                                                log                     = context.getTestContext().getLog();
-       const VkInstance                                instance        = context.getInstance();
-       const vector<VkPhysicalDevice>  devices         = vk::enumeratePhysicalDevices(vkPlatform, instance);
+       TestLog&                                                                                log                                     = context.getTestContext().getLog();
+       const vector<VkPhysicalDeviceQueueProperties>   queueProperties         = getPhysicalDeviceQueueProperties(context.getInstanceInterface(), context.getPhysicalDevice());
 
-       for (size_t ndx = 0; ndx < devices.size(); ndx++)
-       {
-               const VkPhysicalDevice          physicalDevice  = devices[ndx];
-               const tcu::ScopedLogSection     section                 (log, string("Device") + de::toString(ndx), string("Device ") + de::toString(ndx) + " (" + de::toString(tcu::toHex(physicalDevice)) + ")");
-               const vk::DeviceDriver          vkDevice                (vkPlatform, physicalDevice);
+       log << TestLog::Message << "device = " << context.getPhysicalDevice() << TestLog::EndMessage;
 
-               log << TestLog::Message << getPhysicalDeviceInfo<InfoType>(vkDevice, physicalDevice) << TestLog::EndMessage;
-       }
+       for (size_t queueNdx = 0; queueNdx < queueProperties.size(); queueNdx++)
+               log << TestLog::Message << queueNdx << ": " << queueProperties[queueNdx] << TestLog::EndMessage;
 
-       return tcu::TestStatus::pass("Querying properties succeeded");
+       return tcu::TestStatus::pass("Querying queue properties succeeded");
 }
 
-template<VkPhysicalDeviceInfoType InfoType>
-tcu::TestStatus multiProperty (Context& context, const char* propName)
+tcu::TestStatus memoryProperties (Context& context)
 {
-       typedef typename vk::querydetails::PhysicalDeviceInfoTraits<InfoType>::Type PropertyType;
-
-       const PlatformInterface&                vkPlatform      = context.getPlatformInterface();
-       TestLog&                                                log                     = context.getTestContext().getLog();
-       const VkInstance                                instance        = context.getInstance();
-       const vector<VkPhysicalDevice>  devices         = vk::enumeratePhysicalDevices(vkPlatform, instance);
-
-       for (size_t deviceNdx = 0; deviceNdx < devices.size(); deviceNdx++)
-       {
-               const VkPhysicalDevice                  physicalDevice  = devices[deviceNdx];
-               const tcu::ScopedLogSection             deviceSection   (log, string("Device") + de::toString(deviceNdx), string("Device ") + de::toString(deviceNdx) + " (" + de::toString(tcu::toHex(physicalDevice)) + ")");
-               const vk::DeviceDriver                  vkDevice                (vkPlatform, physicalDevice);
-               const vector<PropertyType>              properties              = getPhysicalDeviceInfo<InfoType>(vkDevice, physicalDevice);
+       TestLog&        log             = context.getTestContext().getLog();
 
-               log << TestLog::Integer(string("Num") + propName + "Props", string("Number of ") + propName + " properties", "", QP_KEY_TAG_NONE, (deInt64)properties.size());
+       log << TestLog::Message << "device = " << context.getPhysicalDevice() << TestLog::EndMessage;
 
-               for (size_t entryNdx = 0; entryNdx < properties.size(); entryNdx++)
-                       log << TestLog::Message << properties[entryNdx] << TestLog::EndMessage;
-       }
+       log << TestLog::Message
+               << getPhysicalDeviceMemoryProperties(context.getInstanceInterface(), context.getPhysicalDevice())
+               << TestLog::EndMessage;
 
-       return tcu::TestStatus::pass("Querying properties succeeded");
+       return tcu::TestStatus::pass("Querying memory properties succeeded");
 }
 
 } // anonymous
@@ -126,10 +103,8 @@ tcu::TestCaseGroup* createInfoTests (tcu::TestContext& testCtx)
        de::MovePtr<tcu::TestCaseGroup> infoTests       (new tcu::TestCaseGroup(testCtx, "info", "Platform Information Tests"));
 
        addFunctionCase(infoTests.get(), "physical_devices",    "Physical devices",             enumeratePhysicalDevices);
-       addFunctionCase(infoTests.get(), "device_properties",   "Device properties",    singleProperty<VK_PHYSICAL_DEVICE_INFO_TYPE_PROPERTIES>);
-       addFunctionCase(infoTests.get(), "performance",                 "Performance",                  singleProperty<VK_PHYSICAL_DEVICE_INFO_TYPE_PERFORMANCE>);
-       addFunctionCase(infoTests.get(), "queue_properties",    "Queue properties",             multiProperty<VK_PHYSICAL_DEVICE_INFO_TYPE_QUEUE_PROPERTIES>,   "Queue");
-       addFunctionCase(infoTests.get(), "memory_properties",   "Memory properties",    multiProperty<VK_PHYSICAL_DEVICE_INFO_TYPE_MEMORY_PROPERTIES>,  "Memory");
+       addFunctionCase(infoTests.get(), "queue_properties",    "Queue properties",             queueProperties);
+       addFunctionCase(infoTests.get(), "memory_properties",   "Memory properties",    memoryProperties);
 
        return infoTests.release();
 }
index 866aa61..e70384b 100644 (file)
@@ -49,9 +49,9 @@ namespace vkt
 using std::vector;
 using namespace vk;
 
-static deUint32 findQueueNodeIndexWithCaps (const DeviceInterface& vkDevice, VkPhysicalDevice physicalDevice, VkQueueFlags requiredCaps)
+static deUint32 findQueueNodeIndexWithCaps (const InstanceInterface& vkInstance, VkPhysicalDevice physicalDevice, VkQueueFlags requiredCaps)
 {
-       const vector<VkPhysicalDeviceQueueProperties>   queueProps      = getPhysicalDeviceInfo<VK_PHYSICAL_DEVICE_INFO_TYPE_QUEUE_PROPERTIES>(vkDevice, physicalDevice);
+       const vector<VkPhysicalDeviceQueueProperties>   queueProps      = getPhysicalDeviceQueueProperties(vkInstance, physicalDevice);
 
        for (size_t queueNdx = 0; queueNdx < queueProps.size(); queueNdx++)
        {
@@ -64,15 +64,21 @@ static deUint32 findQueueNodeIndexWithCaps (const DeviceInterface& vkDevice, VkP
 
 struct DeviceCreateInfoHelper
 {
+       VkPhysicalDeviceFeatures        enabledFeatures;
        VkDeviceQueueCreateInfo         queueInfo;
        VkDeviceCreateInfo                      deviceInfo;
 
        DeviceCreateInfoHelper (deUint32 queueIndex)
        {
-               deMemset(&queueInfo, 0, sizeof(queueInfo));
-               deMemset(&deviceInfo, 0, sizeof(deviceInfo));
+               deMemset(&enabledFeatures,      0, sizeof(enabledFeatures));
+               deMemset(&queueInfo,            0, sizeof(queueInfo));
+               deMemset(&deviceInfo,           0, sizeof(deviceInfo));
 
-               queueInfo.queueNodeIndex                        = queueIndex;
+               // \todo [2015-07-09 pyry] What's the policy for enabling features?
+               //  * Enable all supported by default, and expose that to test cases
+               //  * More limited enabled set could be used for verifying that tests behave correctly
+
+               queueInfo.queueFamilyIndex                      = queueIndex;
                queueInfo.queueCount                            = 1u;
 
                deviceInfo.sType                                        = VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO;
@@ -81,6 +87,7 @@ struct DeviceCreateInfoHelper
                deviceInfo.pRequestedQueues                     = &queueInfo;
                deviceInfo.extensionCount                       = 0u;
                deviceInfo.ppEnabledExtensionNames      = DE_NULL;
+               deviceInfo.pEnabledFeatures                     = &enabledFeatures;
                deviceInfo.flags                                        = 0u;
        }
 };
@@ -92,28 +99,37 @@ public:
                                                                        ~DefaultDevice                  (void);
 
        VkInstance                                              getInstance                             (void) const    { return *m_instance;                   }
+       const InstanceInterface&                getInstanceInterface    (void) const    { return m_instanceInterface;   }
+
        VkPhysicalDevice                                getPhysicalDevice               (void) const    { return m_physicalDevice;              }
+
        VkDevice                                                getDevice                               (void) const    { return *m_device;                             }
-       const DeviceInterface&                  getInterface                    (void) const    { return m_deviceInterface;             }
+       const DeviceInterface&                  getDeviceInterface              (void) const    { return m_deviceInterface;             }
+
        deUint32                                                getUniversalQueueIndex  (void) const    { return m_universalQueueIndex; }
        VkQueue                                                 getUniversalQueue               (void) const;
 
 private:
-       const Unique<VkInstanceT>               m_instance;
+       const Unique<VkInstance>                m_instance;
+       const InstanceDriver                    m_instanceInterface;
+
        const VkPhysicalDevice                  m_physicalDevice;
-       const DeviceDriver                              m_deviceInterface;
+
        const deUint32                                  m_universalQueueIndex;
        const DeviceCreateInfoHelper    m_deviceCreateInfo;
-       const Unique<VkDeviceT>                 m_device;
+
+       const Unique<VkDevice>                  m_device;
+       const DeviceDriver                              m_deviceInterface;
 };
 
 DefaultDevice::DefaultDevice (const PlatformInterface& vkPlatform, const tcu::CommandLine& cmdLine)
        : m_instance                    (createDefaultInstance(vkPlatform))
-       , m_physicalDevice              (chooseDevice(vkPlatform, *m_instance, cmdLine))
-       , m_deviceInterface             (vkPlatform, m_physicalDevice)
-       , m_universalQueueIndex (findQueueNodeIndexWithCaps(m_deviceInterface, m_physicalDevice, VK_QUEUE_GRAPHICS_BIT|VK_QUEUE_COMPUTE_BIT|VK_QUEUE_DMA_BIT|VK_QUEUE_MEMMGR_BIT))
+       , m_instanceInterface   (vkPlatform, *m_instance)
+       , m_physicalDevice              (chooseDevice(m_instanceInterface, *m_instance, cmdLine))
+       , m_universalQueueIndex (findQueueNodeIndexWithCaps(m_instanceInterface, m_physicalDevice, VK_QUEUE_GRAPHICS_BIT|VK_QUEUE_COMPUTE_BIT|VK_QUEUE_DMA_BIT))
        , m_deviceCreateInfo    (m_universalQueueIndex)
-       , m_device                              (createDevice(m_deviceInterface, m_physicalDevice, &m_deviceCreateInfo.deviceInfo))
+       , m_device                              (createDevice(m_instanceInterface, m_physicalDevice, &m_deviceCreateInfo.deviceInfo))
+       , m_deviceInterface             (m_instanceInterface, *m_device)
 {
 }
 
@@ -145,12 +161,13 @@ Context::~Context (void)
        delete m_device;
 }
 
-vk::VkInstance                         Context::getInstance                    (void) const { return m_device->getInstance();                          }
-vk::VkPhysicalDevice           Context::getPhysicalDevice              (void) const { return m_device->getPhysicalDevice();            }
-vk::VkDevice                           Context::getDevice                              (void) const { return m_device->getDevice();                            }
-const vk::DeviceInterface&     Context::getDeviceInterface             (void) const { return m_device->getInterface();                         }
-deUint32                                       Context::getUniversalQueueIndex (void) const { return m_device->getUniversalQueueIndex();       }
-vk::VkQueue                                    Context::getUniversalQueue              (void) const { return m_device->getUniversalQueue();            }
+vk::VkInstance                                 Context::getInstance                    (void) const { return m_device->getInstance();                          }
+const vk::InstanceInterface&   Context::getInstanceInterface   (void) const { return m_device->getInstanceInterface();         }
+vk::VkPhysicalDevice                   Context::getPhysicalDevice              (void) const { return m_device->getPhysicalDevice();            }
+vk::VkDevice                                   Context::getDevice                              (void) const { return m_device->getDevice();                            }
+const vk::DeviceInterface&             Context::getDeviceInterface             (void) const { return m_device->getDeviceInterface();           }
+deUint32                                               Context::getUniversalQueueIndex (void) const { return m_device->getUniversalQueueIndex();       }
+vk::VkQueue                                            Context::getUniversalQueue              (void) const { return m_device->getUniversalQueue();            }
 
 // TestCase
 
index b6fe7f9..e6acca3 100644 (file)
@@ -69,6 +69,7 @@ public:
 
        // Default instance & device, selected with --deqp-vk-device-id=N
        vk::VkInstance                                                          getInstance                             (void) const;
+       const vk::InstanceInterface&                            getInstanceInterface    (void) const;
        vk::VkPhysicalDevice                                            getPhysicalDevice               (void) const;
        vk::VkDevice                                                            getDevice                               (void) const;
        const vk::DeviceInterface&                                      getDeviceInterface              (void) const;
index 4f3f6c9..d9a46d5 100644 (file)
@@ -29,6 +29,7 @@
 #include "egluUtil.hpp"
 #include "eglwLibrary.hpp"
 #include "eglwEnums.hpp"
+#include "tcuFunctionLibrary.hpp"
 
 // Assume no call translation is needed
 #include <android/native_window.h>
@@ -185,22 +186,12 @@ eglu::NativeDisplay* NativeDisplayFactory::createDisplay (const EGLAttrib* attri
 
 // Vulkan
 
-static vk::GetProcAddrFunc loadGetProcAddr (const de::DynamicLibrary& library)
-{
-       const vk::GetProcAddrFunc       getProc = (vk::GetProcAddrFunc)library.getFunction("vkGetProcAddr");
-
-       if (!getProc)
-               TCU_THROW(InternalError, "Failed to load vkGetProcAddr");
-
-       return getProc;
-}
-
 class VulkanLibrary : public vk::Library
 {
 public:
        VulkanLibrary (void)
                : m_library     ("libvulkan.so")
-               , m_driver      (loadGetProcAddr(m_library))
+               , m_driver      (m_library)
        {
        }
 
@@ -210,8 +201,8 @@ public:
        }
 
 private:
-       const de::DynamicLibrary        m_library;
-       const vk::PlatformDriver        m_driver;
+       const tcu::DynamicFunctionLibrary       m_library;
+       const vk::PlatformDriver                        m_driver;
 };
 
 // Platform
index 1fd85e8..4f36535 100644 (file)
@@ -23,6 +23,7 @@
 
 #include "tcuWin32Platform.hpp"
 #include "tcuWGLContextFactory.hpp"
+#include "tcuFunctionLibrary.hpp"
 
 #if defined(DEQP_SUPPORT_EGL)
 #      include "tcuWin32EGLNativeDisplayFactory.hpp"
 namespace tcu
 {
 
-static vk::GetProcAddrFunc loadGetProcAddr (const de::DynamicLibrary& library)
-{
-       const vk::GetProcAddrFunc       getProc = (vk::GetProcAddrFunc)library.getFunction("vkGetProcAddr");
-
-       if (!getProc)
-               TCU_THROW(InternalError, "Failed to load vkGetProcAddr");
-
-       return getProc;
-}
-
 class VulkanLibrary : public vk::Library
 {
 public:
        VulkanLibrary (void)
                : m_library     ("vulkan.dll")
-               , m_driver      (loadGetProcAddr(m_library))
+               , m_driver      (m_library)
        {
        }
 
@@ -57,8 +48,8 @@ public:
        }
 
 private:
-       const de::DynamicLibrary        m_library;
-       const vk::PlatformDriver        m_driver;
+       const tcu::DynamicFunctionLibrary       m_library;
+       const vk::PlatformDriver                        m_driver;
 };
 
 Win32Platform::Win32Platform (void)