diff options
| -rw-r--r-- | demos/cube.c | 44 | ||||
| -rw-r--r-- | demos/tri.c | 50 | ||||
| -rw-r--r-- | demos/vulkaninfo.c | 14 | ||||
| -rw-r--r-- | icd/nulldrv/nulldrv.c | 24 | ||||
| -rw-r--r-- | include/vulkan/vulkan.h | 161 | ||||
| -rw-r--r-- | layers/api_dump.h | 4 | ||||
| -rw-r--r-- | layers/device_limits.cpp | 4 | ||||
| -rw-r--r-- | layers/draw_state.cpp | 113 | ||||
| -rw-r--r-- | layers/generic.h | 4 | ||||
| -rw-r--r-- | layers/image.cpp | 16 | ||||
| -rw-r--r-- | layers/mem_tracker.cpp | 6 | ||||
| -rw-r--r-- | layers/object_tracker.h | 12 | ||||
| -rw-r--r-- | layers/param_checker.cpp | 85 | ||||
| -rw-r--r-- | layers/screenshot.cpp | 6 | ||||
| -rw-r--r-- | layers/swapchain.cpp | 6 | ||||
| -rw-r--r-- | layers/unique_objects.h | 4 | ||||
| -rw-r--r-- | loader/debug_report.c | 2 | ||||
| -rw-r--r-- | loader/loader.c | 40 | ||||
| -rw-r--r-- | loader/trampoline.c | 43 | ||||
| -rw-r--r-- | loader/wsi.c | 2 | ||||
| -rwxr-xr-x | vk-layer-generate.py | 39 | ||||
| -rwxr-xr-x | vulkan.py | 20 |
22 files changed, 384 insertions, 315 deletions
diff --git a/demos/cube.c b/demos/cube.c index f1202cbc..44c34b73 100644 --- a/demos/cube.c +++ b/demos/cube.c @@ -492,16 +492,15 @@ static void demo_set_image_layout( .pNext = NULL, .commandPool = demo->cmd_pool, .level = VK_COMMAND_BUFFER_LEVEL_PRIMARY, - .bufferCount = 1, + .commandBufferCount = 1, }; err = vkAllocateCommandBuffers(demo->device, &cmd, &demo->cmd); assert(!err); - VkCommandBufferBeginInfo cmd_buf_info = { - .sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO, + VkCommandBufferInheritanceInfo cmd_buf_hinfo = { + .sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO, .pNext = NULL, - .flags = 0, .renderPass = VK_NULL_HANDLE, .subpass = 0, .framebuffer = VK_NULL_HANDLE, @@ -509,6 +508,12 @@ static void demo_set_image_layout( .queryFlags = 0, .pipelineStatistics = 0, }; + VkCommandBufferBeginInfo cmd_buf_info = { + .sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO, + .pNext = NULL, + .flags = 0, + .pInheritanceInfo = &cmd_buf_hinfo, + }; err = vkBeginCommandBuffer(demo->cmd, &cmd_buf_info); assert(!err); } @@ -547,15 +552,14 @@ static void demo_set_image_layout( VkPipelineStageFlags src_stages = VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT; VkPipelineStageFlags dest_stages = VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT; - vkCmdPipelineBarrier(demo->cmd, src_stages, dest_stages, 0, 1, (const void * const*)&pmemory_barrier); + vkCmdPipelineBarrier(demo->cmd, src_stages, dest_stages, 0, 0, NULL, 0, NULL, 1, pmemory_barrier); } static void demo_draw_build_cmd(struct demo *demo, VkCommandBuffer cmd_buf) { - const VkCommandBufferBeginInfo cmd_buf_info = { - .sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO, + VkCommandBufferInheritanceInfo cmd_buf_hinfo = { + .sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO, .pNext = NULL, - .flags = 0, .renderPass = VK_NULL_HANDLE, .subpass = 0, .framebuffer = VK_NULL_HANDLE, @@ -563,6 +567,12 @@ static void demo_draw_build_cmd(struct demo *demo, VkCommandBuffer cmd_buf) .queryFlags = 0, .pipelineStatistics = 0, }; + const VkCommandBufferBeginInfo cmd_buf_info = { + .sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO, + .pNext = NULL, + .flags = 0, + .pInheritanceInfo = &cmd_buf_hinfo, + }; const VkClearValue clear_values[2] = { [0] = { .color.float32 = { 0.2f, 0.2f, 0.2f, 0.2f } }, [1] = { .depthStencil = { 1.0f, 0 } }, @@ -625,7 +635,7 @@ static void demo_draw_build_cmd(struct demo *demo, VkCommandBuffer cmd_buf) prePresentBarrier.image = demo->buffers[demo->current_buffer].image; VkImageMemoryBarrier *pmemory_barrier = &prePresentBarrier; vkCmdPipelineBarrier(cmd_buf, VK_PIPELINE_STAGE_ALL_COMMANDS_BIT, VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT, - 0, 1, (const void * const*)&pmemory_barrier); + 0, 0, NULL, 0, NULL, 1, pmemory_barrier); err = vkEndCommandBuffer(cmd_buf); @@ -776,7 +786,7 @@ static void demo_prepare_buffers(struct demo *demo) VkExtent2D swapchainExtent; // width and height are either both -1, or both not -1. - if (surfCapabilities.currentExtent.width == -1) + if (surfCapabilities.currentExtent.width == (uint32_t) -1) { // If the surface size is undefined, the size is set to // the size of the images requested. @@ -1214,7 +1224,7 @@ static void demo_prepare_textures(struct demo *demo) .pNext = NULL, .magFilter = VK_FILTER_NEAREST, .minFilter = VK_FILTER_NEAREST, - .mipmapMode = VK_SAMPLER_MIPMAP_MODE_BASE, + .mipmapMode = VK_SAMPLER_MIPMAP_MODE_NEAREST, .addressModeU = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE, .addressModeV = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE, .addressModeW = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE, @@ -1652,7 +1662,7 @@ static void demo_prepare_descriptor_set(struct demo *demo) .sType = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO, .pNext = NULL, .descriptorPool = demo->desc_pool, - .setLayoutCount = 1, + .descriptorSetCount = 1, .pSetLayouts = &demo->desc_layout }; err = vkAllocateDescriptorSets(demo->device, &alloc_info, &demo->desc_set); @@ -1729,7 +1739,7 @@ static void demo_prepare(struct demo *demo) .pNext = NULL, .commandPool = demo->cmd_pool, .level = VK_COMMAND_BUFFER_LEVEL_PRIMARY, - .bufferCount = 1, + .commandBufferCount = 1, }; demo_prepare_buffers(demo); @@ -2247,9 +2257,9 @@ static void demo_init_vk(struct demo *demo) .sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO, .pNext = NULL, .pApplicationInfo = &app, - .enabledLayerNameCount = enabled_layer_count, + .enabledLayerCount = enabled_layer_count, .ppEnabledLayerNames = (const char *const*) ((demo->validate) ? instance_validation_layers : NULL), - .enabledExtensionNameCount = enabled_extension_count, + .enabledExtensionCount = enabled_extension_count, .ppEnabledExtensionNames = (const char *const*) extension_names, }; @@ -2423,9 +2433,9 @@ static void demo_init_vk(struct demo *demo) .pNext = NULL, .queueCreateInfoCount = 1, .pQueueCreateInfos = &queue, - .enabledLayerNameCount = enabled_layer_count, + .enabledLayerCount = enabled_layer_count, .ppEnabledLayerNames = (const char *const*) ((demo->validate) ? device_validation_layers : NULL), - .enabledExtensionNameCount = enabled_extension_count, + .enabledExtensionCount = enabled_extension_count, .ppEnabledExtensionNames = (const char *const*) extension_names, .pEnabledFeatures = NULL, // If specific features are required, pass them in here }; diff --git a/demos/tri.c b/demos/tri.c index 391a118e..8773e54a 100644 --- a/demos/tri.c +++ b/demos/tri.c @@ -315,16 +315,15 @@ static void demo_set_image_layout( .pNext = NULL, .commandPool = demo->cmd_pool, .level = VK_COMMAND_BUFFER_LEVEL_PRIMARY, - .bufferCount = 1, + .commandBufferCount = 1, }; err = vkAllocateCommandBuffers(demo->device, &cmd, &demo->setup_cmd); assert(!err); - VkCommandBufferBeginInfo cmd_buf_info = { - .sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO, + VkCommandBufferInheritanceInfo cmd_buf_hinfo = { + .sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO, .pNext = NULL, - .flags = 0, .renderPass = VK_NULL_HANDLE, .subpass = 0, .framebuffer = VK_NULL_HANDLE, @@ -332,6 +331,12 @@ static void demo_set_image_layout( .queryFlags = 0, .pipelineStatistics = 0, }; + VkCommandBufferBeginInfo cmd_buf_info = { + .sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO, + .pNext = NULL, + .flags = 0, + .pInheritanceInfo = &cmd_buf_hinfo, + }; err = vkBeginCommandBuffer(demo->setup_cmd, &cmd_buf_info); assert(!err); } @@ -370,21 +375,26 @@ static void demo_set_image_layout( VkPipelineStageFlags src_stages = VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT; VkPipelineStageFlags dest_stages = VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT; - vkCmdPipelineBarrier(demo->setup_cmd, src_stages, dest_stages, 0, 1, (const void * const*)&pmemory_barrier); + vkCmdPipelineBarrier(demo->setup_cmd, src_stages, dest_stages, 0, 0, NULL, 0, NULL, 1, pmemory_barrier); } static void demo_draw_build_cmd(struct demo *demo) { + const VkCommandBufferInheritanceInfo cmd_buf_hinfo = { + .sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO, + .pNext = NULL, + .renderPass = VK_NULL_HANDLE, + .subpass = 0, + .framebuffer = VK_NULL_HANDLE, + .occlusionQueryEnable = VK_FALSE, + .queryFlags = 0, + .pipelineStatistics = 0, + }; const VkCommandBufferBeginInfo cmd_buf_info = { .sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO, .pNext = NULL, .flags = 0, - .renderPass = VK_NULL_HANDLE, - .subpass = 0, - .framebuffer = VK_NULL_HANDLE, - .occlusionQueryEnable = VK_FALSE, - .queryFlags = 0, - .pipelineStatistics = 0, + .pInheritanceInfo = &cmd_buf_hinfo, }; const VkClearValue clear_values[2] = { [0] = { .color.float32 = { 0.2f, 0.2f, 0.2f, 0.2f } }, @@ -450,7 +460,7 @@ static void demo_draw_build_cmd(struct demo *demo) prePresentBarrier.image = demo->buffers[demo->current_buffer].image; VkImageMemoryBarrier *pmemory_barrier = &prePresentBarrier; vkCmdPipelineBarrier(demo->draw_cmd, VK_PIPELINE_STAGE_ALL_COMMANDS_BIT, VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT, - 0, 1, (const void * const*)&pmemory_barrier); + 0, 0, NULL, 0, NULL, 1, pmemory_barrier); err = vkEndCommandBuffer(demo->draw_cmd); assert(!err); @@ -578,7 +588,7 @@ static void demo_prepare_buffers(struct demo *demo) VkExtent2D swapchainExtent; // width and height are either both -1, or both not -1. - if (surfCapabilities.currentExtent.width == -1) + if (surfCapabilities.currentExtent.width == (uint32_t) -1) { // If the surface size is undefined, the size is set to // the size of the images requested. @@ -951,7 +961,7 @@ static void demo_prepare_textures(struct demo *demo) .pNext = NULL, .magFilter = VK_FILTER_NEAREST, .minFilter = VK_FILTER_NEAREST, - .mipmapMode = VK_SAMPLER_MIPMAP_MODE_BASE, + .mipmapMode = VK_SAMPLER_MIPMAP_MODE_NEAREST, .addressModeU = VK_SAMPLER_ADDRESS_MODE_REPEAT, .addressModeV = VK_SAMPLER_ADDRESS_MODE_REPEAT, .addressModeW = VK_SAMPLER_ADDRESS_MODE_REPEAT, @@ -1382,7 +1392,7 @@ static void demo_prepare_descriptor_set(struct demo *demo) .sType = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO, .pNext = NULL, .descriptorPool = demo->desc_pool, - .setLayoutCount = 1, + .descriptorSetCount = 1, .pSetLayouts = &demo->desc_layout }; err = vkAllocateDescriptorSets(demo->device, &alloc_info, &demo->desc_set); @@ -1451,7 +1461,7 @@ static void demo_prepare(struct demo *demo) .pNext = NULL, .commandPool = demo->cmd_pool, .level = VK_COMMAND_BUFFER_LEVEL_PRIMARY, - .bufferCount = 1, + .commandBufferCount = 1, }; err = vkAllocateCommandBuffers(demo->device, &cmd, &demo->draw_cmd); assert(!err); @@ -1832,9 +1842,9 @@ static void demo_init_vk(struct demo *demo) .sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO, .pNext = NULL, .pApplicationInfo = &app, - .enabledLayerNameCount = enabled_layer_count, + .enabledLayerCount = enabled_layer_count, .ppEnabledLayerNames = (const char *const*) layer_names, - .enabledExtensionNameCount = enabled_extension_count, + .enabledExtensionCount = enabled_extension_count, .ppEnabledExtensionNames = (const char *const*) extension_names, }; float queue_priorities[1] = { 0.0 }; @@ -1940,9 +1950,9 @@ static void demo_init_vk(struct demo *demo) .pNext = NULL, .queueCreateInfoCount = 1, .pQueueCreateInfos = &queue, - .enabledLayerNameCount = enabled_layer_count, + .enabledLayerCount = enabled_layer_count, .ppEnabledLayerNames = (const char *const*) ((demo->validate) ? device_validation_layers : NULL), - .enabledExtensionNameCount = enabled_extension_count, + .enabledExtensionCount = enabled_extension_count, .ppEnabledExtensionNames = (const char *const*) extension_names, }; diff --git a/demos/vulkaninfo.c b/demos/vulkaninfo.c index 74f65e9e..926127d0 100644 --- a/demos/vulkaninfo.c +++ b/demos/vulkaninfo.c @@ -447,9 +447,9 @@ static void app_dev_init(struct app_dev *dev, struct app_gpu *gpu) .pNext = NULL, .queueCreateInfoCount = 0, .pQueueCreateInfos = NULL, - .enabledLayerNameCount = 0, + .enabledLayerCount = 0, .ppEnabledLayerNames = NULL, - .enabledExtensionNameCount = 0, + .enabledExtensionCount = 0, .ppEnabledExtensionNames = NULL, }; VkResult U_ASSERT_ONLY err; @@ -532,9 +532,9 @@ static void app_dev_init(struct app_dev *dev, struct app_gpu *gpu) info.queueCreateInfoCount = gpu->queue_count; info.pQueueCreateInfos = gpu->queue_reqs; - info.enabledLayerNameCount = 0; + info.enabledLayerCount = 0; info.ppEnabledLayerNames = NULL; - info.enabledExtensionNameCount = enabled_extension_count; + info.enabledExtensionCount = enabled_extension_count; info.ppEnabledExtensionNames = (const char*const*) known_extensions; dev->gpu = gpu; err = vkCreateDevice(gpu->obj, &info, NULL, &dev->obj); @@ -589,9 +589,9 @@ static void app_create_instance(struct app_instance *inst) .sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO, .pNext = NULL, .pApplicationInfo = &app_info, - .enabledLayerNameCount = 0, + .enabledLayerCount = 0, .ppEnabledLayerNames = NULL, - .enabledExtensionNameCount = 0, + .enabledExtensionCount = 0, .ppEnabledExtensionNames = NULL, }; VkResult U_ASSERT_ONLY err; @@ -684,7 +684,7 @@ static void app_create_instance(struct app_instance *inst) } } - inst_info.enabledExtensionNameCount = global_extension_count; + inst_info.enabledExtensionCount = global_extension_count; inst_info.ppEnabledExtensionNames = (const char * const *) known_extensions; VkDebugReportCallbackCreateInfoEXT dbg_info; diff --git a/icd/nulldrv/nulldrv.c b/icd/nulldrv/nulldrv.c index 0971aa90..3523f48d 100644 --- a/icd/nulldrv/nulldrv.c +++ b/icd/nulldrv/nulldrv.c @@ -203,7 +203,7 @@ static VkResult nulldrv_dev_create(struct nulldrv_gpu *gpu, if (!dev) return VK_ERROR_OUT_OF_HOST_MEMORY; - for (i = 0; i < info->enabledExtensionNameCount; i++) { + for (i = 0; i < info->enabledExtensionCount; i++) { const enum nulldrv_ext_type ext = nulldrv_gpu_lookup_extension( gpu, info->ppEnabledExtensionNames[i]); @@ -478,7 +478,7 @@ static VkResult nulldrv_cmd_create(struct nulldrv_dev *dev, struct nulldrv_cmd *cmd; uint32_t num_allocated = 0; - for (uint32_t i = 0; i < info->bufferCount; i++) { + for (uint32_t i = 0; i < info->commandBufferCount; i++) { cmd = (struct nulldrv_cmd *) nulldrv_base_create(dev, sizeof(*cmd), VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT); if (!cmd) { @@ -1175,24 +1175,32 @@ VKAPI_ATTR void VKAPI_CALL vkCmdDispatchIndirect( } VKAPI_ATTR void VKAPI_CALL vkCmdWaitEvents( - VkCommandBuffer commandBuffer, + VkCommandBuffer commandBuffer, uint32_t eventCount, const VkEvent* pEvents, VkPipelineStageFlags sourceStageMask, VkPipelineStageFlags dstStageMask, uint32_t memoryBarrierCount, - const void* const* ppMemoryBarriers) + const VkMemoryBarrier* pMemoryBarriers, + uint32_t bufferMemoryBarrierCount, + const VkBufferMemoryBarrier* pBufferMemoryBarriers, + uint32_t imageMemoryBarrierCount, + const VkImageMemoryBarrier* pImageMemoryBarriers) { NULLDRV_LOG_FUNC; } VKAPI_ATTR void VKAPI_CALL vkCmdPipelineBarrier( - VkCommandBuffer commandBuffer, + VkCommandBuffer commandBuffer, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, VkDependencyFlags dependencyFlags, uint32_t memoryBarrierCount, - const void* const* ppMemoryBarriers) + const VkMemoryBarrier* pMemoryBarriers, + uint32_t bufferMemoryBarrierCount, + const VkBufferMemoryBarrier* pBufferMemoryBarriers, + uint32_t imageMemoryBarrierCount, + const VkImageMemoryBarrier* pImageMemoryBarriers) { NULLDRV_LOG_FUNC; } @@ -1982,7 +1990,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkResetDescriptorPool( VKAPI_ATTR VkResult VKAPI_CALL vkAllocateDescriptorSets( VkDevice device, - const VkDescriptorSetAllocateInfo* pAllocateInfo, + const VkDescriptorSetAllocateInfo* pAllocateInfo, VkDescriptorSet* pDescriptorSets) { NULLDRV_LOG_FUNC; @@ -1991,7 +1999,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkAllocateDescriptorSets( VkResult ret = VK_SUCCESS; uint32_t i; - for (i = 0; i < pAllocateInfo->setLayoutCount; i++) { + for (i = 0; i < pAllocateInfo->descriptorSetCount; i++) { const struct nulldrv_desc_layout *layout = nulldrv_desc_layout(pAllocateInfo->pSetLayouts[i]); diff --git a/include/vulkan/vulkan.h b/include/vulkan/vulkan.h index 0563eb78..a64f6a5d 100644 --- a/include/vulkan/vulkan.h +++ b/include/vulkan/vulkan.h @@ -41,7 +41,7 @@ extern "C" { ((major << 22) | (minor << 12) | patch) // Vulkan API version supported by this file -#define VK_API_VERSION VK_MAKE_VERSION(0, 221, 0) +#define VK_API_VERSION VK_MAKE_VERSION(0, 222, 0) #define VK_NULL_HANDLE 0 @@ -187,13 +187,14 @@ typedef enum VkStructureType { VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO = 38, VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO = 39, VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO = 40, - VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO = 41, - VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO = 42, - VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER = 43, - VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER = 44, - VK_STRUCTURE_TYPE_MEMORY_BARRIER = 45, - VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO = 46, - VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO = 47, + VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO = 41, + VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO = 42, + VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO = 43, + VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER = 44, + VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER = 45, + VK_STRUCTURE_TYPE_MEMORY_BARRIER = 46, + VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO = 47, + VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO = 48, VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR = 1000001000, VK_STRUCTURE_TYPE_PRESENT_INFO_KHR = 1000001001, VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR = 1000002000, @@ -682,12 +683,11 @@ typedef enum VkFilter { } VkFilter; typedef enum VkSamplerMipmapMode { - VK_SAMPLER_MIPMAP_MODE_BASE = 0, - VK_SAMPLER_MIPMAP_MODE_NEAREST = 1, - VK_SAMPLER_MIPMAP_MODE_LINEAR = 2, - VK_SAMPLER_MIPMAP_MODE_BEGIN_RANGE = VK_SAMPLER_MIPMAP_MODE_BASE, + VK_SAMPLER_MIPMAP_MODE_NEAREST = 0, + VK_SAMPLER_MIPMAP_MODE_LINEAR = 1, + VK_SAMPLER_MIPMAP_MODE_BEGIN_RANGE = VK_SAMPLER_MIPMAP_MODE_NEAREST, VK_SAMPLER_MIPMAP_MODE_END_RANGE = VK_SAMPLER_MIPMAP_MODE_LINEAR, - VK_SAMPLER_MIPMAP_MODE_RANGE_SIZE = (VK_SAMPLER_MIPMAP_MODE_LINEAR - VK_SAMPLER_MIPMAP_MODE_BASE + 1), + VK_SAMPLER_MIPMAP_MODE_RANGE_SIZE = (VK_SAMPLER_MIPMAP_MODE_LINEAR - VK_SAMPLER_MIPMAP_MODE_NEAREST + 1), VK_SAMPLER_MIPMAP_MODE_MAX_ENUM = 0x7FFFFFFF } VkSamplerMipmapMode; @@ -980,7 +980,7 @@ typedef enum VkShaderStageFlagBits { } VkShaderStageFlagBits; typedef VkFlags VkPipelineVertexInputStateCreateFlags; typedef VkFlags VkPipelineInputAssemblyStateCreateFlags; -typedef VkFlags VkPipelineTesselationStateCreateFlags; +typedef VkFlags VkPipelineTessellationStateCreateFlags; typedef VkFlags VkPipelineViewportStateCreateFlags; typedef VkFlags VkPipelineRasterizationStateCreateFlags; @@ -1129,9 +1129,9 @@ typedef struct VkInstanceCreateInfo { const void* pNext; VkInstanceCreateFlags flags; const VkApplicationInfo* pApplicationInfo; - uint32_t enabledLayerNameCount; + uint32_t enabledLayerCount; const char* const* ppEnabledLayerNames; - uint32_t enabledExtensionNameCount; + uint32_t enabledExtensionCount; const char* const* ppEnabledExtensionNames; } VkInstanceCreateInfo; @@ -1209,9 +1209,9 @@ typedef struct VkFormatProperties { } VkFormatProperties; typedef struct VkExtent3D { - int32_t width; - int32_t height; - int32_t depth; + uint32_t width; + uint32_t height; + uint32_t depth; } VkExtent3D; typedef struct VkImageFormatProperties { @@ -1390,9 +1390,9 @@ typedef struct VkDeviceCreateInfo { VkDeviceCreateFlags flags; uint32_t queueCreateInfoCount; const VkDeviceQueueCreateInfo* pQueueCreateInfos; - uint32_t enabledLayerNameCount; + uint32_t enabledLayerCount; const char* const* ppEnabledLayerNames; - uint32_t enabledExtensionNameCount; + uint32_t enabledExtensionCount; const char* const* ppEnabledExtensionNames; const VkPhysicalDeviceFeatures* pEnabledFeatures; } VkDeviceCreateInfo; @@ -1541,7 +1541,7 @@ typedef struct VkQueryPoolCreateInfo { const void* pNext; VkQueryPoolCreateFlags flags; VkQueryType queryType; - uint32_t entryCount; + uint32_t queryCount; VkQueryPipelineStatisticFlags pipelineStatistics; } VkQueryPoolCreateInfo; @@ -1691,7 +1691,7 @@ typedef struct VkPipelineInputAssemblyStateCreateInfo { typedef struct VkPipelineTessellationStateCreateInfo { VkStructureType sType; const void* pNext; - VkPipelineTesselationStateCreateFlags flags; + VkPipelineTessellationStateCreateFlags flags; uint32_t patchControlPoints; } VkPipelineTessellationStateCreateInfo; @@ -1710,8 +1710,8 @@ typedef struct VkOffset2D { } VkOffset2D; typedef struct VkExtent2D { - int32_t width; - int32_t height; + uint32_t width; + uint32_t height; } VkExtent2D; typedef struct VkRect2D { @@ -1915,7 +1915,7 @@ typedef struct VkDescriptorSetAllocateInfo { VkStructureType sType; const void* pNext; VkDescriptorPool descriptorPool; - uint32_t setLayoutCount; + uint32_t descriptorSetCount; const VkDescriptorSetLayout* pSetLayouts; } VkDescriptorSetAllocateInfo; @@ -1995,7 +1995,7 @@ typedef struct VkSubpassDescription { const VkAttachmentReference* pResolveAttachments; const VkAttachmentReference* pDepthStencilAttachment; uint32_t preserveAttachmentCount; - const VkAttachmentReference* pPreserveAttachments; + const uint32_t* pPreserveAttachments; } VkSubpassDescription; typedef struct VkSubpassDependency { @@ -2032,19 +2032,25 @@ typedef struct VkCommandBufferAllocateInfo { const void* pNext; VkCommandPool commandPool; VkCommandBufferLevel level; - uint32_t bufferCount; + uint32_t commandBufferCount; } VkCommandBufferAllocateInfo; -typedef struct VkCommandBufferBeginInfo { +typedef struct VkCommandBufferInheritanceInfo { VkStructureType sType; const void* pNext; - VkCommandBufferUsageFlags flags; VkRenderPass renderPass; uint32_t subpass; VkFramebuffer framebuffer; VkBool32 occlusionQueryEnable; VkQueryControlFlags queryFlags; VkQueryPipelineStatisticFlags pipelineStatistics; +} VkCommandBufferInheritanceInfo; + +typedef struct VkCommandBufferBeginInfo { + VkStructureType sType; + const void* pNext; + VkCommandBufferUsageFlags flags; + const VkCommandBufferInheritanceInfo* pInheritanceInfo; } VkCommandBufferBeginInfo; typedef struct VkBufferCopy { @@ -2070,11 +2076,9 @@ typedef struct VkImageCopy { typedef struct VkImageBlit { VkImageSubresourceLayers srcSubresource; - VkOffset3D srcOffset; - VkExtent3D srcExtent; + VkOffset3D srcOffsets[2]; VkImageSubresourceLayers dstSubresource; - VkOffset3D dstOffset; - VkExtent3D dstExtent; + VkOffset3D dstOffsets[2]; } VkImageBlit; typedef struct VkBufferImageCopy { @@ -2122,15 +2126,12 @@ typedef struct VkImageResolve { VkExtent3D extent; } VkImageResolve; -typedef struct VkRenderPassBeginInfo { +typedef struct VkMemoryBarrier { VkStructureType sType; const void* pNext; - VkRenderPass renderPass; - VkFramebuffer framebuffer; - VkRect2D renderArea; - uint32_t clearValueCount; - const VkClearValue* pClearValues; -} VkRenderPassBeginInfo; + VkAccessFlags srcAccessMask; + VkAccessFlags dstAccessMask; +} VkMemoryBarrier; typedef struct VkBufferMemoryBarrier { VkStructureType sType; @@ -2144,6 +2145,29 @@ typedef struct VkBufferMemoryBarrier { VkDeviceSize size; } VkBufferMemoryBarrier; +typedef struct VkImageMemoryBarrier { + VkStructureType sType; + const void* pNext; + VkAccessFlags srcAccessMask; + VkAccessFlags dstAccessMask; + VkImageLayout oldLayout; + VkImageLayout newLayout; + uint32_t srcQueueFamilyIndex; + uint32_t dstQueueFamilyIndex; + VkImage image; + VkImageSubresourceRange subresourceRange; +} VkImageMemoryBarrier; + +typedef struct VkRenderPassBeginInfo { + VkStructureType sType; + const void* pNext; + VkRenderPass renderPass; + VkFramebuffer framebuffer; + VkRect2D renderArea; + uint32_t clearValueCount; + const VkClearValue* pClearValues; +} VkRenderPassBeginInfo; + typedef struct VkDispatchIndirectCommand { uint32_t x; uint32_t y; @@ -2165,26 +2189,6 @@ typedef struct VkDrawIndirectCommand { uint32_t firstInstance; } VkDrawIndirectCommand; -typedef struct VkImageMemoryBarrier { - VkStructureType sType; - const void* pNext; - VkAccessFlags srcAccessMask; - VkAccessFlags dstAccessMask; - VkImageLayout oldLayout; - VkImageLayout newLayout; - uint32_t srcQueueFamilyIndex; - uint32_t dstQueueFamilyIndex; - VkImage image; - VkImageSubresourceRange subresourceRange; -} VkImageMemoryBarrier; - -typedef struct VkMemoryBarrier { - VkStructureType sType; - const void* pNext; - VkAccessFlags srcAccessMask; - VkAccessFlags dstAccessMask; -} VkMemoryBarrier; - typedef VkResult (VKAPI_PTR *PFN_vkCreateInstance)(const VkInstanceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkInstance* pInstance); typedef void (VKAPI_PTR *PFN_vkDestroyInstance)(VkInstance instance, const VkAllocationCallbacks* pAllocator); @@ -2311,18 +2315,18 @@ typedef void (VKAPI_PTR *PFN_vkCmdClearAttachments)(VkCommandBuffer commandBuffe typedef void (VKAPI_PTR *PFN_vkCmdResolveImage)(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkImageResolve* pRegions); typedef void (VKAPI_PTR *PFN_vkCmdSetEvent)(VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags stageMask); typedef void (VKAPI_PTR *PFN_vkCmdResetEvent)(VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags stageMask); -typedef void (VKAPI_PTR *PFN_vkCmdWaitEvents)(VkCommandBuffer commandBuffer, uint32_t eventCount, const VkEvent* pEvents, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, uint32_t memoryBarrierCount, const void* const* ppMemoryBarriers); -typedef void (VKAPI_PTR *PFN_vkCmdPipelineBarrier)(VkCommandBuffer commandBuffer, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, VkDependencyFlags dependencyFlags, uint32_t memoryBarrierCount, const void* const* ppMemoryBarriers); -typedef void (VKAPI_PTR *PFN_vkCmdBeginQuery)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t entry, VkQueryControlFlags flags); -typedef void (VKAPI_PTR *PFN_vkCmdEndQuery)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t entry); +typedef void (VKAPI_PTR *PFN_vkCmdWaitEvents)(VkCommandBuffer commandBuffer, uint32_t eventCount, const VkEvent* pEvents, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, uint32_t memoryBarrierCount, const VkMemoryBarrier* pMemoryBarriers, uint32_t bufferMemoryBarrierCount, const VkBufferMemoryBarrier* pBufferMemoryBarriers, uint32_t imageMemoryBarrierCount, const VkImageMemoryBarrier* pImageMemoryBarriers); +typedef void (VKAPI_PTR *PFN_vkCmdPipelineBarrier)(VkCommandBuffer commandBuffer, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, VkDependencyFlags dependencyFlags, uint32_t memoryBarrierCount, const VkMemoryBarrier* pMemoryBarriers, uint32_t bufferMemoryBarrierCount, const VkBufferMemoryBarrier* pBufferMemoryBarriers, uint32_t imageMemoryBarrierCount, const VkImageMemoryBarrier* pImageMemoryBarriers); +typedef void (VKAPI_PTR *PFN_vkCmdBeginQuery)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t query, VkQueryControlFlags flags); +typedef void (VKAPI_PTR *PFN_vkCmdEndQuery)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t query); typedef void (VKAPI_PTR *PFN_vkCmdResetQueryPool)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount); -typedef void (VKAPI_PTR *PFN_vkCmdWriteTimestamp)(VkCommandBuffer commandBuffer, VkPipelineStageFlagBits pipelineStage, VkQueryPool queryPool, uint32_t entry); +typedef void (VKAPI_PTR *PFN_vkCmdWriteTimestamp)(VkCommandBuffer commandBuffer, VkPipelineStageFlagBits pipelineStage, VkQueryPool queryPool, uint32_t query); typedef void (VKAPI_PTR *PFN_vkCmdCopyQueryPoolResults)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize stride, VkQueryResultFlags flags); typedef void (VKAPI_PTR *PFN_vkCmdPushConstants)(VkCommandBuffer commandBuffer, VkPipelineLayout layout, VkShaderStageFlags stageFlags, uint32_t offset, uint32_t size, const void* pValues); typedef void (VKAPI_PTR *PFN_vkCmdBeginRenderPass)(VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, VkSubpassContents contents); typedef void (VKAPI_PTR *PFN_vkCmdNextSubpass)(VkCommandBuffer commandBuffer, VkSubpassContents contents); typedef void (VKAPI_PTR *PFN_vkCmdEndRenderPass)(VkCommandBuffer commandBuffer); -typedef void (VKAPI_PTR *PFN_vkCmdExecuteCommands)(VkCommandBuffer commandBuffer, uint32_t commandBuffersCount, const VkCommandBuffer* pCommandBuffers); +typedef void (VKAPI_PTR *PFN_vkCmdExecuteCommands)(VkCommandBuffer commandBuffer, uint32_t commandBufferCount, const VkCommandBuffer* pCommandBuffers); #ifdef VK_PROTOTYPES VKAPI_ATTR VkResult VKAPI_CALL vkCreateInstance( @@ -3046,7 +3050,11 @@ VKAPI_ATTR void VKAPI_CALL vkCmdWaitEvents( VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, uint32_t memoryBarrierCount, - const void* const* ppMemoryBarriers); + const VkMemoryBarrier* pMemoryBarriers, + uint32_t bufferMemoryBarrierCount, + const VkBufferMemoryBarrier* pBufferMemoryBarriers, + uint32_t imageMemoryBarrierCount, + const VkImageMemoryBarrier* pImageMemoryBarriers); VKAPI_ATTR void VKAPI_CALL vkCmdPipelineBarrier( VkCommandBuffer commandBuffer, @@ -3054,18 +3062,22 @@ VKAPI_ATTR void VKAPI_CALL vkCmdPipelineBarrier( VkPipelineStageFlags dstStageMask, VkDependencyFlags dependencyFlags, uint32_t memoryBarrierCount, - const void* const* ppMemoryBarriers); + const VkMemoryBarrier* pMemoryBarriers, + uint32_t bufferMemoryBarrierCount, + const VkBufferMemoryBarrier* pBufferMemoryBarriers, + uint32_t imageMemoryBarrierCount, + const VkImageMemoryBarrier* pImageMemoryBarriers); VKAPI_ATTR void VKAPI_CALL vkCmdBeginQuery( VkCommandBuffer commandBuffer, VkQueryPool queryPool, - uint32_t entry, + uint32_t query, VkQueryControlFlags flags); VKAPI_ATTR void VKAPI_CALL vkCmdEndQuery( VkCommandBuffer commandBuffer, VkQueryPool queryPool, - uint32_t entry); + uint32_t query); VKAPI_ATTR void VKAPI_CALL vkCmdResetQueryPool( VkCommandBuffer commandBuffer, @@ -3077,7 +3089,7 @@ VKAPI_ATTR void VKAPI_CALL vkCmdWriteTimestamp( VkCommandBuffer commandBuffer, VkPipelineStageFlagBits pipelineStage, VkQueryPool queryPool, - uint32_t entry); + uint32_t query); VKAPI_ATTR void VKAPI_CALL vkCmdCopyQueryPoolResults( VkCommandBuffer commandBuffer, @@ -3111,7 +3123,7 @@ VKAPI_ATTR void VKAPI_CALL vkCmdEndRenderPass( VKAPI_ATTR void VKAPI_CALL vkCmdExecuteCommands( VkCommandBuffer commandBuffer, - uint32_t commandBuffersCount, + uint32_t commandBufferCount, const VkCommandBuffer* pCommandBuffers); #endif @@ -3374,7 +3386,7 @@ typedef struct VkDisplaySurfaceCreateInfoKHR { typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceDisplayPropertiesKHR)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkDisplayPropertiesKHR* pProperties); typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkDisplayPlanePropertiesKHR* pProperties); -typedef VkResult (VKAPI_PTR *PFN_vkGetDisplayPlaneSupportedDisplaysKHR)(VkPhysicalDevice physicalDevice, uint32_t* pDisplayCount, VkDisplayKHR* pDisplays); +typedef VkResult (VKAPI_PTR *PFN_vkGetDisplayPlaneSupportedDisplaysKHR)(VkPhysicalDevice physicalDevice, uint32_t planeIndex, uint32_t* pDisplayCount, VkDisplayKHR* pDisplays); typedef VkResult (VKAPI_PTR *PFN_vkGetDisplayModePropertiesKHR)(VkPhysicalDevice physicalDevice, VkDisplayKHR display, uint32_t* pPropertyCount, VkDisplayModePropertiesKHR* pProperties); typedef VkResult (VKAPI_PTR *PFN_vkCreateDisplayModeKHR)(VkPhysicalDevice physicalDevice, VkDisplayKHR display, const VkDisplayModeCreateInfoKHR*pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDisplayModeKHR* pMode); typedef VkResult (VKAPI_PTR *PFN_vkGetDisplayPlaneCapabilitiesKHR)(VkPhysicalDevice physicalDevice, VkDisplayModeKHR mode, uint32_t planeIndex, VkDisplayPlaneCapabilitiesKHR* pCapabilities); @@ -3393,6 +3405,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceDisplayPlanePropertiesKHR( VKAPI_ATTR VkResult VKAPI_CALL vkGetDisplayPlaneSupportedDisplaysKHR( VkPhysicalDevice physicalDevice, + uint32_t planeIndex, uint32_t* pDisplayCount, VkDisplayKHR* pDisplays); diff --git a/layers/api_dump.h b/layers/api_dump.h index 5675233d..3dc8e2f1 100644 --- a/layers/api_dump.h +++ b/layers/api_dump.h @@ -76,7 +76,7 @@ static void createDeviceRegisterExtensions(const VkDeviceCreateInfo* pCreateInfo pDisp->QueuePresentKHR = (PFN_vkQueuePresentKHR) gpa(device, "vkQueuePresentKHR"); deviceExtMap[pDisp].wsi_enabled = false; - for (i = 0; i < pCreateInfo->enabledExtensionNameCount; i++) { + for (i = 0; i < pCreateInfo->enabledExtensionCount; i++) { if (strcmp(pCreateInfo->ppEnabledExtensionNames[i], VK_KHR_SWAPCHAIN_EXTENSION_NAME) == 0) deviceExtMap[pDisp].wsi_enabled = true; @@ -118,7 +118,7 @@ static void createInstanceRegisterExtensions(const VkInstanceCreateInfo* pCreate #endif // VK_USE_PLATFORM_ANDROID_KHR instanceExtMap[pDisp].wsi_enabled = false; - for (i = 0; i < pCreateInfo->enabledExtensionNameCount; i++) { + for (i = 0; i < pCreateInfo->enabledExtensionCount; i++) { if (strcmp(pCreateInfo->ppEnabledExtensionNames[i], VK_KHR_SURFACE_EXTENSION_NAME) == 0) instanceExtMap[pDisp].wsi_enabled = true; diff --git a/layers/device_limits.cpp b/layers/device_limits.cpp index fc180fea..e46149fb 100644 --- a/layers/device_limits.cpp +++ b/layers/device_limits.cpp @@ -191,7 +191,7 @@ VK_LAYER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateInstance(const VkInstance my_data->report_data = debug_report_create_instance( pTable, *pInstance, - pCreateInfo->enabledExtensionNameCount, + pCreateInfo->enabledExtensionCount, pCreateInfo->ppEnabledExtensionNames); init_device_limits(my_data, pAllocator); @@ -377,7 +377,7 @@ static void createDeviceRegisterExtensions(const VkDeviceCreateInfo* pCreateInfo layer_data *my_data = get_my_data_ptr(get_dispatch_key(device), layer_data_map); my_data->device_extensions.debug_marker_enabled = false; - for (i = 0; i < pCreateInfo->enabledExtensionNameCount; i++) { + for (i = 0; i < pCreateInfo->enabledExtensionCount; i++) { if (strcmp(pCreateInfo->ppEnabledExtensionNames[i], DEBUG_MARKER_EXTENSION_NAME) == 0) { /* Found a matching extension name, mark it enabled and init dispatch table*/ initDebugMarkerTable(device); diff --git a/layers/draw_state.cpp b/layers/draw_state.cpp index 13559600..6c341f1a 100644 --- a/layers/draw_state.cpp +++ b/layers/draw_state.cpp @@ -2764,7 +2764,7 @@ VK_LAYER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateInstance(const VkInstance my_data->report_data = debug_report_create_instance( pTable, *pInstance, - pCreateInfo->enabledExtensionNameCount, + pCreateInfo->enabledExtensionCount, pCreateInfo->ppEnabledExtensionNames); init_draw_state(my_data, pAllocator); @@ -2816,7 +2816,7 @@ static void createDeviceRegisterExtensions(const VkDeviceCreateInfo* pCreateInfo pDisp->AcquireNextImageKHR = (PFN_vkAcquireNextImageKHR) gpa(device, "vkAcquireNextImageKHR"); pDisp->QueuePresentKHR = (PFN_vkQueuePresentKHR) gpa(device, "vkQueuePresentKHR"); - for (i = 0; i < pCreateInfo->enabledExtensionNameCount; i++) { + for (i = 0; i < pCreateInfo->enabledExtensionCount; i++) { if (strcmp(pCreateInfo->ppEnabledExtensionNames[i], VK_KHR_SWAPCHAIN_EXTENSION_NAME) == 0) { dev_data->device_extensions.wsi_enabled = true; } @@ -3792,7 +3792,7 @@ VK_LAYER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkAllocateDescriptorSets(VkDevice skipCall |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT, (uint64_t) pAllocateInfo->descriptorPool, __LINE__, DRAWSTATE_INVALID_POOL, "DS", "Unable to find pool node for pool %#" PRIxLEAST64 " specified in vkAllocateDescriptorSets() call", (uint64_t) pAllocateInfo->descriptorPool); } else { // Make sure pool has all the available descriptors before calling down chain - skipCall |= validate_descriptor_availability_in_pool(dev_data, pPoolNode, pAllocateInfo->setLayoutCount, pAllocateInfo->pSetLayouts); + skipCall |= validate_descriptor_availability_in_pool(dev_data, pPoolNode, pAllocateInfo->descriptorSetCount, pAllocateInfo->pSetLayouts); } if (skipCall) return VK_ERROR_VALIDATION_FAILED_EXT; @@ -3800,11 +3800,11 @@ VK_LAYER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkAllocateDescriptorSets(VkDevice if (VK_SUCCESS == result) { DESCRIPTOR_POOL_NODE *pPoolNode = getPoolNode(dev_data, pAllocateInfo->descriptorPool); if (pPoolNode) { - if (pAllocateInfo->setLayoutCount == 0) { - log_msg(dev_data->report_data, VK_DEBUG_REPORT_INFO_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT, pAllocateInfo->setLayoutCount, __LINE__, DRAWSTATE_NONE, "DS", + if (pAllocateInfo->descriptorSetCount == 0) { + log_msg(dev_data->report_data, VK_DEBUG_REPORT_INFO_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT, pAllocateInfo->descriptorSetCount, __LINE__, DRAWSTATE_NONE, "DS", "AllocateDescriptorSets called with 0 count"); } - for (uint32_t i = 0; i < pAllocateInfo->setLayoutCount; i++) { + for (uint32_t i = 0; i < pAllocateInfo->descriptorSetCount; i++) { log_msg(dev_data->report_data, VK_DEBUG_REPORT_INFO_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT, (uint64_t) pDescriptorSets[i], __LINE__, DRAWSTATE_NONE, "DS", "Created Descriptor Set %#" PRIxLEAST64, (uint64_t) pDescriptorSets[i]); // Create new set node and add to head of pool nodes @@ -3888,7 +3888,7 @@ VK_LAYER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkAllocateCommandBuffers(VkDevice layer_data* dev_data = get_my_data_ptr(get_dispatch_key(device), layer_data_map); VkResult result = dev_data->device_dispatch_table->AllocateCommandBuffers(device, pCreateInfo, pCommandBuffer); if (VK_SUCCESS == result) { - for (uint32_t i = 0; i < pCreateInfo->bufferCount; i++) { + for (uint32_t i = 0; i < pCreateInfo->commandBufferCount; i++) { // Validate command pool if (dev_data->commandPoolMap.find(pCreateInfo->commandPool) != dev_data->commandPoolMap.end()) { loader_platform_thread_lock_mutex(&globalLock); @@ -3914,32 +3914,28 @@ VK_LAYER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkBeginCommandBuffer(VkCommandBuf // Validate command buffer level GLOBAL_CB_NODE* pCB = getCBNode(dev_data, commandBuffer); if (pCB) { - if (pCB->createInfo.level == VK_COMMAND_BUFFER_LEVEL_PRIMARY) { - if (pBeginInfo->renderPass || pBeginInfo->framebuffer) { - // These should be NULL for a Primary CB - skipCall |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT, (uint64_t)commandBuffer, __LINE__, DRAWSTATE_BEGIN_CB_INVALID_STATE, "DS", - "vkBeginCommandBuffer(): Primary Command Buffer (%p) may not specify framebuffer or renderpass parameters.", (void*)commandBuffer); - } - } else { // Secondary Command Buffer + if (pCB->createInfo.level != VK_COMMAND_BUFFER_LEVEL_PRIMARY) { + // Secondary Command Buffer // TODO : Add check here from spec "If commandBuffer is a secondary command buffer and either the // occlusionQueryEnable member of pBeginInfo is VK_FALSE, or the precise occlusion queries feature // is not enabled, the queryFlags member of pBeginInfo must not contain VK_QUERY_CONTROL_PRECISE_BIT" + const VkCommandBufferInheritanceInfo *pInfo = pBeginInfo->pInheritanceInfo; if (pBeginInfo->flags & VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT) { - if (!pBeginInfo->renderPass) { // renderpass should NOT be null for an Secondary CB + if (!pInfo->renderPass) { // renderpass should NOT be null for an Secondary CB skipCall |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT, (uint64_t)commandBuffer, __LINE__, DRAWSTATE_BEGIN_CB_INVALID_STATE, "DS", "vkBeginCommandBuffer(): Secondary Command Buffers (%p) must specify a valid renderpass parameter.", (void*)commandBuffer); } - if (!pBeginInfo->framebuffer) { // framebuffer may be null for an Secondary CB, but this affects perf + if (!pInfo->framebuffer) { // framebuffer may be null for an Secondary CB, but this affects perf skipCall |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_PERF_WARN_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT, (uint64_t)commandBuffer, __LINE__, DRAWSTATE_BEGIN_CB_INVALID_STATE, "DS", "vkBeginCommandBuffer(): Secondary Command Buffers (%p) may perform better if a valid framebuffer parameter is specified.", (void*)commandBuffer); } else { string errorString = ""; - VkRenderPass fbRP = dev_data->frameBufferMap[pBeginInfo->framebuffer]->renderPass; - if (!verify_renderpass_compatibility(dev_data, fbRP, pBeginInfo->renderPass, errorString)) { + VkRenderPass fbRP = dev_data->frameBufferMap[pInfo->framebuffer]->renderPass; + if (!verify_renderpass_compatibility(dev_data, fbRP, pInfo->renderPass, errorString)) { // renderPass that framebuffer was created with must be compatible with local renderPass skipCall |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT, (uint64_t)commandBuffer, __LINE__, DRAWSTATE_RENDERPASS_INCOMPATIBLE, "DS", "vkBeginCommandBuffer(): Secondary Command Buffer (%p) renderPass (%#" PRIxLEAST64 ") is incompatible w/ framebuffer (%#" PRIxLEAST64 ") w/ render pass (%#" PRIxLEAST64 ") due to: %s", - (void*)commandBuffer, (uint64_t)pBeginInfo->renderPass, (uint64_t)pBeginInfo->framebuffer, (uint64_t)fbRP, errorString.c_str()); + (void*)commandBuffer, (uint64_t)pInfo->renderPass, (uint64_t)pInfo->framebuffer, (uint64_t)fbRP, errorString.c_str()); } } } @@ -4812,7 +4808,7 @@ VK_LAYER_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdResetEvent(VkCommandBuffer comma dev_data->device_dispatch_table->CmdResetEvent(commandBuffer, event, stageMask); } -VkBool32 TransitionImageLayouts(VkCommandBuffer cmdBuffer, uint32_t memBarrierCount, const void* const* ppMemBarriers) { +VkBool32 TransitionImageLayouts(VkCommandBuffer cmdBuffer, uint32_t memBarrierCount, const VkImageMemoryBarrier* pImgMemBarriers) { layer_data* dev_data = get_my_data_ptr(get_dispatch_key(cmdBuffer), layer_data_map); GLOBAL_CB_NODE* pCB = getCBNode(dev_data, cmdBuffer); VkBool32 skip = VK_FALSE; @@ -4823,19 +4819,18 @@ VkBool32 TransitionImageLayouts(VkCommandBuffer cmdBuffer, uint32_t memBarrierCo #endif // DISABLE_IMAGE_LAYOUT_VALIDATION for (uint32_t i = 0; i < memBarrierCount; ++i) { - auto mem_barrier = reinterpret_cast<const VkMemoryBarrier*>(ppMemBarriers[i]); + auto mem_barrier = &pImgMemBarriers[i]; if (mem_barrier && mem_barrier->sType == VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER) { - auto image_mem_barrier = reinterpret_cast<const VkImageMemoryBarrier*>(mem_barrier); - auto image_data = pCB->imageLayoutMap.find(image_mem_barrier->image); + auto image_data = pCB->imageLayoutMap.find(mem_barrier->image); if (image_data == pCB->imageLayoutMap.end()) { - pCB->imageLayoutMap[image_mem_barrier->image].initialLayout = image_mem_barrier->oldLayout; - pCB->imageLayoutMap[image_mem_barrier->image].layout = image_mem_barrier->newLayout; + pCB->imageLayoutMap[mem_barrier->image].initialLayout = mem_barrier->oldLayout; + pCB->imageLayoutMap[mem_barrier->image].layout = mem_barrier->newLayout; } else { - if (image_data->second.layout != image_mem_barrier->oldLayout) { + if (image_data->second.layout != mem_barrier->oldLayout) { skip |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, (VkDebugReportObjectTypeEXT)0, 0, __LINE__, DRAWSTATE_INVALID_IMAGE_LAYOUT, "DS", - "You cannot transition the layout from %d when current layout is %d.", image_mem_barrier->oldLayout, image_data->second.layout); + "You cannot transition the layout from %d when current layout is %d.", mem_barrier->oldLayout, image_data->second.layout); } - image_data->second.layout = image_mem_barrier->newLayout; + image_data->second.layout = mem_barrier->newLayout; } } } @@ -4946,13 +4941,14 @@ VkBool32 ValidateMaskBitsFromLayouts(const layer_data* my_data, VkCommandBuffer return skip_call; } -VkBool32 ValidateBarriers(VkCommandBuffer cmdBuffer, uint32_t memBarrierCount, const void* const* ppMemBarriers) { +VkBool32 ValidateBarriers(VkCommandBuffer cmdBuffer, uint32_t memBarrierCount, const VkMemoryBarrier* pMemBarriers, uint32_t imageMemBarrierCount, const VkImageMemoryBarrier *pImageMemBarriers) +{ VkBool32 skip_call = VK_FALSE; layer_data* dev_data = get_my_data_ptr(get_dispatch_key(cmdBuffer), layer_data_map); GLOBAL_CB_NODE* pCB = getCBNode(dev_data, cmdBuffer); if (pCB->activeRenderPass && memBarrierCount) { for (uint32_t i = 0; i < memBarrierCount; ++i) { - auto mem_barrier = reinterpret_cast<const VkMemoryBarrier*>(ppMemBarriers[i]); + auto mem_barrier = &pMemBarriers[i]; if (mem_barrier && mem_barrier->sType != VK_STRUCTURE_TYPE_MEMORY_BARRIER) { skip_call |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, (VkDebugReportObjectTypeEXT)0, 0, __LINE__, DRAWSTATE_INVALID_BARRIER, "DS", "Image or Buffers Barriers cannot be used during a render pass."); @@ -4964,19 +4960,23 @@ VkBool32 ValidateBarriers(VkCommandBuffer cmdBuffer, uint32_t memBarrierCount, c } } - for (uint32_t i = 0; i < memBarrierCount; ++i) { - auto mem_barrier = reinterpret_cast<const VkMemoryBarrier*>(ppMemBarriers[i]); + for (uint32_t i = 0; i < imageMemBarrierCount; ++i) { + auto mem_barrier = &pImageMemBarriers[i]; if (mem_barrier && mem_barrier->sType == VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER) { - auto image_mem_barrier = reinterpret_cast<const VkImageMemoryBarrier*>(mem_barrier); - skip_call |= ValidateMaskBitsFromLayouts(dev_data, cmdBuffer, image_mem_barrier->srcAccessMask, image_mem_barrier->oldLayout, "Source"); - skip_call |= ValidateMaskBitsFromLayouts(dev_data, cmdBuffer, image_mem_barrier->dstAccessMask, image_mem_barrier->newLayout, "Dest"); + skip_call |= ValidateMaskBitsFromLayouts(dev_data, cmdBuffer, mem_barrier->srcAccessMask, mem_barrier->oldLayout, "Source"); + skip_call |= ValidateMaskBitsFromLayouts(dev_data, cmdBuffer, mem_barrier->dstAccessMask, mem_barrier->newLayout, "Dest"); } } return skip_call; } -VK_LAYER_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdWaitEvents(VkCommandBuffer commandBuffer, uint32_t eventCount, const VkEvent* pEvents, VkPipelineStageFlags sourceStageMask, VkPipelineStageFlags dstStageMask, uint32_t memoryBarrierCount, const void* const* ppMemoryBarriers) +VK_LAYER_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdWaitEvents( + VkCommandBuffer commandBuffer, uint32_t eventCount, const VkEvent* pEvents, + VkPipelineStageFlags sourceStageMask, VkPipelineStageFlags dstStageMask, + uint32_t memoryBarrierCount, const VkMemoryBarrier* pMemoryBarriers, + uint32_t bufferMemoryBarrierCount, const VkBufferMemoryBarrier* pBufferMemoryBarriers, + uint32_t imageMemoryBarrierCount, const VkImageMemoryBarrier* pImageMemoryBarriers) { VkBool32 skipCall = VK_FALSE; layer_data* dev_data = get_my_data_ptr(get_dispatch_key(commandBuffer), layer_data_map); @@ -4990,25 +4990,36 @@ VK_LAYER_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdWaitEvents(VkCommandBuffer comma } else { skipCall |= report_error_no_cb_begin(dev_data, commandBuffer, "vkCmdWaitEvents()"); } - skipCall |= TransitionImageLayouts(commandBuffer, memoryBarrierCount, ppMemoryBarriers); - skipCall |= ValidateBarriers(commandBuffer, memoryBarrierCount, ppMemoryBarriers); + skipCall |= TransitionImageLayouts(commandBuffer, imageMemoryBarrierCount, pImageMemoryBarriers); + skipCall |= ValidateBarriers(commandBuffer, memoryBarrierCount, pMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers); } if (VK_FALSE == skipCall) - dev_data->device_dispatch_table->CmdWaitEvents(commandBuffer, eventCount, pEvents, sourceStageMask, dstStageMask, memoryBarrierCount, ppMemoryBarriers); + dev_data->device_dispatch_table->CmdWaitEvents(commandBuffer, eventCount, pEvents, sourceStageMask, dstStageMask, + memoryBarrierCount, pMemoryBarriers, + bufferMemoryBarrierCount, pBufferMemoryBarriers, + imageMemoryBarrierCount, pImageMemoryBarriers); } -VK_LAYER_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdPipelineBarrier(VkCommandBuffer commandBuffer, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, VkDependencyFlags dependencyFlags, uint32_t memoryBarrierCount, const void* const* ppMemoryBarriers) +VK_LAYER_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdPipelineBarrier( + VkCommandBuffer commandBuffer, VkPipelineStageFlags srcStageMask, + VkPipelineStageFlags dstStageMask, VkDependencyFlags dependencyFlags, + uint32_t memoryBarrierCount, const VkMemoryBarrier* pMemoryBarriers, + uint32_t bufferMemoryBarrierCount, const VkBufferMemoryBarrier* pBufferMemoryBarriers, + uint32_t imageMemoryBarrierCount, const VkImageMemoryBarrier* pImageMemoryBarriers) { VkBool32 skipCall = VK_FALSE; layer_data* dev_data = get_my_data_ptr(get_dispatch_key(commandBuffer), layer_data_map); GLOBAL_CB_NODE* pCB = getCBNode(dev_data, commandBuffer); if (pCB) { skipCall |= addCmd(dev_data, pCB, CMD_PIPELINEBARRIER, "vkCmdPipelineBarrier()"); - skipCall |= TransitionImageLayouts(commandBuffer, memoryBarrierCount, ppMemoryBarriers); - skipCall |= ValidateBarriers(commandBuffer, memoryBarrierCount, ppMemoryBarriers); + skipCall |= TransitionImageLayouts(commandBuffer, imageMemoryBarrierCount, pImageMemoryBarriers); + skipCall |= ValidateBarriers(commandBuffer, memoryBarrierCount, pMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers); } if (VK_FALSE == skipCall) - dev_data->device_dispatch_table->CmdPipelineBarrier(commandBuffer, srcStageMask, dstStageMask, dependencyFlags, memoryBarrierCount, ppMemoryBarriers); + dev_data->device_dispatch_table->CmdPipelineBarrier(commandBuffer, srcStageMask, dstStageMask, dependencyFlags, + memoryBarrierCount, pMemoryBarriers, + bufferMemoryBarrierCount, pBufferMemoryBarriers, + imageMemoryBarrierCount, pImageMemoryBarriers); } VK_LAYER_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdBeginQuery(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t slot, VkFlags flags) @@ -5179,7 +5190,7 @@ VkBool32 CheckDependencyExists(const layer_data* my_data, VkDevice device, const return result; } -VkBool32 CheckPreserved(const layer_data* my_data, VkDevice device, const VkRenderPassCreateInfo* pCreateInfo, const int index, const int attachment, const std::vector<DAGNode>& subpass_to_node, int depth, VkBool32& skip_call) { +VkBool32 CheckPreserved(const layer_data* my_data, VkDevice device, const VkRenderPassCreateInfo* pCreateInfo, const int index, const uint32_t attachment, const std::vector<DAGNode>& subpass_to_node, int depth, VkBool32& skip_call) { const DAGNode& node = subpass_to_node[index]; // If this node writes to the attachment return true as next nodes need to preserve the attachment. const VkSubpassDescription& subpass = pCreateInfo->pSubpasses[index]; @@ -5202,7 +5213,7 @@ VkBool32 CheckPreserved(const layer_data* my_data, VkDevice device, const VkRend const VkSubpassDescription& subpass = pCreateInfo->pSubpasses[index]; VkBool32 has_preserved = VK_FALSE; for (uint32_t j = 0; j < subpass.preserveAttachmentCount; ++j) { - if (subpass.pPreserveAttachments[j].attachment == attachment) { + if (subpass.pPreserveAttachments[j] == attachment) { has_preserved = VK_TRUE; break; } @@ -5421,7 +5432,7 @@ VK_LAYER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateRenderPass(VkDevice devic memcpy(attachments, subpass->pPreserveAttachments, sizeof(attachments[0]) * subpass->preserveAttachmentCount); - subpass->pPreserveAttachments = attachments; + subpass->pPreserveAttachments = &attachments->attachment; } } if (pCreateInfo->pDependencies) { @@ -5669,18 +5680,18 @@ VK_LAYER_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdExecuteCommands(VkCommandBuffer "vkCmdExecuteCommands(): Secondary Command Buffer (%p) executed within render pass (%#" PRIxLEAST64 ") must have had vkBeginCommandBuffer() called w/ VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT set.", (void*)pCommandBuffers[i], (uint64_t)pCB->activeRenderPass); } string errorString = ""; - if (!verify_renderpass_compatibility(dev_data, pCB->activeRenderPass, pSubCB->beginInfo.renderPass, errorString)) { + if (!verify_renderpass_compatibility(dev_data, pCB->activeRenderPass, pSubCB->beginInfo.pInheritanceInfo->renderPass, errorString)) { skipCall |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT, (uint64_t)pCommandBuffers[i], __LINE__, DRAWSTATE_RENDERPASS_INCOMPATIBLE, "DS", "vkCmdExecuteCommands(): Secondary Command Buffer (%p) w/ render pass (%#" PRIxLEAST64 ") is incompatible w/ primary command buffer (%p) w/ render pass (%#" PRIxLEAST64 ") due to: %s", - (void*)pCommandBuffers[i], (uint64_t)pSubCB->beginInfo.renderPass, (void*)commandBuffer, (uint64_t)pCB->activeRenderPass, errorString.c_str()); + (void*)pCommandBuffers[i], (uint64_t)pSubCB->beginInfo.pInheritanceInfo->renderPass, (void*)commandBuffer, (uint64_t)pCB->activeRenderPass, errorString.c_str()); } // If framebuffer for secondary CB is not NULL, then it must match FB from vkCmdBeginRenderPass() // that this CB will be executed in AND framebuffer must have been created w/ RP compatible w/ renderpass - if (pSubCB->beginInfo.framebuffer) { - if (pSubCB->beginInfo.framebuffer != pCB->activeRenderPassBeginInfo.framebuffer) { + if (pSubCB->beginInfo.pInheritanceInfo->framebuffer) { + if (pSubCB->beginInfo.pInheritanceInfo->framebuffer != pCB->activeRenderPassBeginInfo.framebuffer) { skipCall |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT, (uint64_t)pCommandBuffers[i], __LINE__, DRAWSTATE_FRAMEBUFFER_INCOMPATIBLE, "DS", "vkCmdExecuteCommands(): Secondary Command Buffer (%p) references framebuffer (%#" PRIxLEAST64 ") that does not match framebuffer (%#" PRIxLEAST64 ") in active renderpass (%#" PRIxLEAST64 ").", - (void*)pCommandBuffers[i], (uint64_t)pSubCB->beginInfo.framebuffer, (uint64_t)pCB->activeRenderPassBeginInfo.framebuffer, (uint64_t)pCB->activeRenderPass); + (void*)pCommandBuffers[i], (uint64_t)pSubCB->beginInfo.pInheritanceInfo->framebuffer, (uint64_t)pCB->activeRenderPassBeginInfo.framebuffer, (uint64_t)pCB->activeRenderPass); } } } diff --git a/layers/generic.h b/layers/generic.h index bc5c555c..32a78ef3 100644 --- a/layers/generic.h +++ b/layers/generic.h @@ -84,7 +84,7 @@ static void createDeviceRegisterExtensions(const VkDeviceCreateInfo* pCreateInfo pDisp->QueuePresentKHR = (PFN_vkQueuePresentKHR) gpa(device, "vkQueuePresentKHR"); deviceExtMap[pDisp].wsi_enabled = false; - for (i = 0; i < pCreateInfo->enabledExtensionNameCount; i++) { + for (i = 0; i < pCreateInfo->enabledExtensionCount; i++) { if (strcmp(pCreateInfo->ppEnabledExtensionNames[i], VK_KHR_SWAPCHAIN_EXTENSION_NAME) == 0) deviceExtMap[pDisp].wsi_enabled = true; @@ -101,7 +101,7 @@ static void createInstanceRegisterExtensions(const VkInstanceCreateInfo* pCreate pDisp->GetPhysicalDeviceSurfaceFormatsKHR = (PFN_vkGetPhysicalDeviceSurfaceFormatsKHR) gpa(instance, "vkGetPhysicalDeviceSurfaceFormatsKHR"); pDisp->GetPhysicalDeviceSurfacePresentModesKHR = (PFN_vkGetPhysicalDeviceSurfacePresentModesKHR) gpa(instance, "vkGetPhysicalDeviceSurfacePresentModesKHR"); instanceExtMap[pDisp].wsi_enabled = false; - for (i = 0; i < pCreateInfo->enabledExtensionNameCount; i++) { + for (i = 0; i < pCreateInfo->enabledExtensionCount; i++) { if (strcmp(pCreateInfo->ppEnabledExtensionNames[i], VK_KHR_SURFACE_EXTENSION_NAME) == 0) instanceExtMap[pDisp].wsi_enabled = true; diff --git a/layers/image.cpp b/layers/image.cpp index 1d8de457..658b5a1d 100644 --- a/layers/image.cpp +++ b/layers/image.cpp @@ -151,7 +151,7 @@ VK_LAYER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateInstance(const VkInstance VkResult result = pTable->CreateInstance(pCreateInfo, pAllocator, pInstance); if (result == VK_SUCCESS) { - my_data->report_data = debug_report_create_instance(pTable, *pInstance, pCreateInfo->enabledExtensionNameCount, + my_data->report_data = debug_report_create_instance(pTable, *pInstance, pCreateInfo->enabledExtensionCount, pCreateInfo->ppEnabledExtensionNames); InitImage(my_data, pAllocator); @@ -986,14 +986,18 @@ VK_LAYER_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdPipelineBarrier( VkPipelineStageFlags dstStageMask, VkDependencyFlags dependencyFlags, uint32_t memoryBarrierCount, - const void* const* ppMemoryBarriers) + const VkMemoryBarrier *pMemoryBarriers, + uint32_t bufferMemoryBarrierCount, + const VkBufferMemoryBarrier *pBufferMemoryBarriers, + uint32_t imageMemoryBarrierCount, + const VkImageMemoryBarrier *pImageMemoryBarriers) { VkBool32 skipCall = VK_FALSE; layer_data *device_data = get_my_data_ptr(get_dispatch_key(commandBuffer), layer_data_map); - for (uint32_t i = 0; i < memoryBarrierCount; ++i) + for (uint32_t i = 0; i < imageMemoryBarrierCount; ++i) { - VkImageMemoryBarrier const*const barrier = (VkImageMemoryBarrier const*const)ppMemoryBarriers[i]; + VkImageMemoryBarrier const*const barrier = (VkImageMemoryBarrier const*const) &pImageMemoryBarriers[i]; if (barrier->sType == VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER) { if (barrier->subresourceRange.layerCount == 0) @@ -1012,7 +1016,9 @@ VK_LAYER_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdPipelineBarrier( } device_data->device_dispatch_table->CmdPipelineBarrier(commandBuffer, srcStageMask, dstStageMask, dependencyFlags, - memoryBarrierCount, ppMemoryBarriers); + memoryBarrierCount, pMemoryBarriers, + bufferMemoryBarrierCount, pBufferMemoryBarriers, + imageMemoryBarrierCount, pImageMemoryBarriers); } VK_LAYER_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdResolveImage( diff --git a/layers/mem_tracker.cpp b/layers/mem_tracker.cpp index f9242053..321cf1e6 100644 --- a/layers/mem_tracker.cpp +++ b/layers/mem_tracker.cpp @@ -1127,7 +1127,7 @@ VKAPI_ATTR VkResult VKAPI_CALL vkCreateInstance( my_data->report_data = debug_report_create_instance( pTable, *pInstance, - pCreateInfo->enabledExtensionNameCount, + pCreateInfo->enabledExtensionCount, pCreateInfo->ppEnabledExtensionNames); init_mem_tracker(my_data, pAllocator); @@ -1149,7 +1149,7 @@ createDeviceRegisterExtensions( pDisp->AcquireNextImageKHR = (PFN_vkAcquireNextImageKHR) gpa(device, "vkAcquireNextImageKHR"); pDisp->QueuePresentKHR = (PFN_vkQueuePresentKHR) gpa(device, "vkQueuePresentKHR"); my_device_data->wsi_enabled = VK_FALSE; - for (uint32_t i = 0; i < pCreateInfo->enabledExtensionNameCount; i++) { + for (uint32_t i = 0; i < pCreateInfo->enabledExtensionCount; i++) { if (strcmp(pCreateInfo->ppEnabledExtensionNames[i], VK_KHR_SWAPCHAIN_EXTENSION_NAME) == 0) my_device_data->wsi_enabled = true; } @@ -2107,7 +2107,7 @@ VK_LAYER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkAllocateCommandBuffers( loader_platform_thread_lock_mutex(&globalLock); if (VK_SUCCESS == result) { - for (uint32_t i = 0; i < pCreateInfo->bufferCount; i++) { + for (uint32_t i = 0; i < pCreateInfo->commandBufferCount; i++) { add_cmd_buf_info(my_data, pCreateInfo->commandPool, pCommandBuffer[i]); } } diff --git a/layers/object_tracker.h b/layers/object_tracker.h index c5a2452b..de44f0e2 100644 --- a/layers/object_tracker.h +++ b/layers/object_tracker.h @@ -193,7 +193,7 @@ static void createDeviceRegisterExtensions(const VkDeviceCreateInfo* pCreateInfo pDisp->AcquireNextImageKHR = (PFN_vkAcquireNextImageKHR) gpa(device, "vkAcquireNextImageKHR"); pDisp->QueuePresentKHR = (PFN_vkQueuePresentKHR) gpa(device, "vkQueuePresentKHR"); my_device_data->wsi_enabled = false; - for (uint32_t i = 0; i < pCreateInfo->enabledExtensionNameCount; i++) { + for (uint32_t i = 0; i < pCreateInfo->enabledExtensionCount; i++) { if (strcmp(pCreateInfo->ppEnabledExtensionNames[i], VK_KHR_SWAPCHAIN_EXTENSION_NAME) == 0) my_device_data->wsi_enabled = true; @@ -237,7 +237,7 @@ static void createInstanceRegisterExtensions(const VkInstanceCreateInfo* pCreate #endif // VK_USE_PLATFORM_ANDROID_KHR instanceExtMap[pDisp].wsi_enabled = false; - for (i = 0; i < pCreateInfo->enabledExtensionNameCount; i++) { + for (i = 0; i < pCreateInfo->enabledExtensionCount; i++) { if (strcmp(pCreateInfo->ppEnabledExtensionNames[i], VK_KHR_SURFACE_EXTENSION_NAME) == 0) instanceExtMap[pDisp].wsi_enabled = true; @@ -698,7 +698,7 @@ explicit_CreateInstance( my_data->report_data = debug_report_create_instance( pInstanceTable, *pInstance, - pCreateInfo->enabledExtensionNameCount, + pCreateInfo->enabledExtensionCount, pCreateInfo->ppEnabledExtensionNames); createInstanceRegisterExtensions(pCreateInfo, *pInstance); @@ -867,7 +867,7 @@ explicit_AllocateCommandBuffers( device, pAllocateInfo, pCommandBuffers); loader_platform_thread_lock_mutex(&objLock); - for (uint32_t i = 0; i < pAllocateInfo->bufferCount; i++) { + for (uint32_t i = 0; i < pAllocateInfo->commandBufferCount; i++) { alloc_command_buffer(device, pAllocateInfo->commandPool, pCommandBuffers[i], VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT); } loader_platform_thread_unlock_mutex(&objLock); @@ -885,7 +885,7 @@ explicit_AllocateDescriptorSets( loader_platform_thread_lock_mutex(&objLock); skipCall |= validate_device(device, device, VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT, false); skipCall |= validate_descriptor_pool(device, pAllocateInfo->descriptorPool, VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT, false); - for (uint32_t i = 0; i < pAllocateInfo->setLayoutCount; i++) { + for (uint32_t i = 0; i < pAllocateInfo->descriptorSetCount; i++) { skipCall |= validate_descriptor_set_layout(device, pAllocateInfo->pSetLayouts[i], VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT, false); } loader_platform_thread_unlock_mutex(&objLock); @@ -896,7 +896,7 @@ explicit_AllocateDescriptorSets( device, pAllocateInfo, pDescriptorSets); loader_platform_thread_lock_mutex(&objLock); - for (uint32_t i = 0; i < pAllocateInfo->setLayoutCount; i++) { + for (uint32_t i = 0; i < pAllocateInfo->descriptorSetCount; i++) { alloc_descriptor_set(device, pAllocateInfo->descriptorPool, pDescriptorSets[i], VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT); } loader_platform_thread_unlock_mutex(&objLock); diff --git a/layers/param_checker.cpp b/layers/param_checker.cpp index 18227434..2521ffb4 100644 --- a/layers/param_checker.cpp +++ b/layers/param_checker.cpp @@ -1765,7 +1765,7 @@ VK_LAYER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateInstance( if (result == VK_SUCCESS) { layer_data *data = get_my_data_ptr(get_dispatch_key(*pInstance), layer_data_map); - data->report_data = debug_report_create_instance(pTable, *pInstance, pCreateInfo->enabledExtensionNameCount, + data->report_data = debug_report_create_instance(pTable, *pInstance, pCreateInfo->enabledExtensionCount, pCreateInfo->ppEnabledExtensionNames); InitParamChecker(data, pAllocator); @@ -4442,7 +4442,7 @@ VK_LAYER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkAllocateDescriptorSets( VkResult result = get_dispatch_table(pc_device_table_map, device)->AllocateDescriptorSets(device, pAllocateInfo, pDescriptorSets); - PostAllocateDescriptorSets(device, pAllocateInfo->descriptorPool, pAllocateInfo->setLayoutCount, pDescriptorSets, result); + PostAllocateDescriptorSets(device, pAllocateInfo->descriptorPool, pAllocateInfo->descriptorSetCount, pDescriptorSets, result); return result; } @@ -4717,16 +4717,7 @@ bool PreCreateRenderPass( "vkCreateRenderPass parameter, VkImageLayout pCreateInfo->pSubpasses->pDepthStencilAttachment->layout, is an unrecognized enumerator"); return false; } - if(pCreateInfo->pSubpasses->pPreserveAttachments != nullptr) - { - if(pCreateInfo->pSubpasses->pPreserveAttachments->layout < VK_IMAGE_LAYOUT_BEGIN_RANGE || - pCreateInfo->pSubpasses->pPreserveAttachments->layout > VK_IMAGE_LAYOUT_END_RANGE) - { - log_msg(mdd(device), VK_DEBUG_REPORT_ERROR_BIT_EXT, (VkDebugReportObjectTypeEXT)0, 0, __LINE__, 1, "PARAMCHECK", - "vkCreateRenderPass parameter, VkImageLayout pCreateInfo->pSubpasses->pPreserveAttachments->layout, is an unrecognized enumerator"); - return false; - } - } + } if(pCreateInfo->pDependencies != nullptr) { @@ -6040,13 +6031,18 @@ VK_LAYER_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdResetEvent( bool PreCmdWaitEvents( VkCommandBuffer commandBuffer, const VkEvent* pEvents, - const void* const* ppMemoryBarriers) + uint32_t memoryBarrierCount, + const VkMemoryBarrier *pMemoryBarriers, + uint32_t bufferMemoryBarrierCount, + const VkBufferMemoryBarrier *pBufferMemoryBarriers, + uint32_t imageMemoryBarrierCount, + const VkImageMemoryBarrier *pImageMemoryBarriers) { if(pEvents != nullptr) { } - if(ppMemoryBarriers != nullptr) + if(pMemoryBarriers != nullptr) { } @@ -6069,26 +6065,35 @@ bool PostCmdWaitEvents( } VK_LAYER_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdWaitEvents( - VkCommandBuffer commandBuffer, - uint32_t eventCount, - const VkEvent* pEvents, - VkPipelineStageFlags srcStageMask, - VkPipelineStageFlags dstStageMask, - uint32_t memoryBarrierCount, - const void* const* ppMemoryBarriers) -{ - PreCmdWaitEvents(commandBuffer, pEvents, ppMemoryBarriers); - - get_dispatch_table(pc_device_table_map, commandBuffer)->CmdWaitEvents(commandBuffer, eventCount, pEvents, srcStageMask, dstStageMask, memoryBarrierCount, ppMemoryBarriers); + VkCommandBuffer commandBuffer, + uint32_t eventCount, + const VkEvent *pEvents, + VkPipelineStageFlags srcStageMask, + VkPipelineStageFlags dstStageMask, + uint32_t memoryBarrierCount, + const VkMemoryBarrier *pMemoryBarriers, + uint32_t bufferMemoryBarrierCount, + const VkBufferMemoryBarrier *pBufferMemoryBarriers, + uint32_t imageMemoryBarrierCount, + const VkImageMemoryBarrier *pImageMemoryBarriers) +{ + PreCmdWaitEvents(commandBuffer, pEvents, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers); + + get_dispatch_table(pc_device_table_map, commandBuffer)->CmdWaitEvents(commandBuffer, eventCount, pEvents, srcStageMask, dstStageMask, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers); PostCmdWaitEvents(commandBuffer, eventCount, srcStageMask, dstStageMask, memoryBarrierCount); } bool PreCmdPipelineBarrier( - VkCommandBuffer commandBuffer, - const void* const* ppMemoryBarriers) + VkCommandBuffer commandBuffer, + uint32_t memoryBarrierCount, + const VkMemoryBarrier *pMemoryBarriers, + uint32_t bufferMemoryBarrierCount, + const VkBufferMemoryBarrier *pBufferMemoryBarriers, + uint32_t imageMemoryBarrierCount, + const VkImageMemoryBarrier *pImageMemoryBarriers) { - if(ppMemoryBarriers != nullptr) + if(pMemoryBarriers != nullptr) { } @@ -6111,16 +6116,20 @@ bool PostCmdPipelineBarrier( } VK_LAYER_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdPipelineBarrier( - VkCommandBuffer commandBuffer, - VkPipelineStageFlags srcStageMask, - VkPipelineStageFlags dstStageMask, - VkDependencyFlags dependencyFlags, - uint32_t memoryBarrierCount, - const void* const* ppMemoryBarriers) -{ - PreCmdPipelineBarrier(commandBuffer, ppMemoryBarriers); - - get_dispatch_table(pc_device_table_map, commandBuffer)->CmdPipelineBarrier(commandBuffer, srcStageMask, dstStageMask, dependencyFlags, memoryBarrierCount, ppMemoryBarriers); + VkCommandBuffer commandBuffer, + VkPipelineStageFlags srcStageMask, + VkPipelineStageFlags dstStageMask, + VkDependencyFlags dependencyFlags, + uint32_t memoryBarrierCount, + const VkMemoryBarrier *pMemoryBarriers, + uint32_t bufferMemoryBarrierCount, + const VkBufferMemoryBarrier *pBufferMemoryBarriers, + uint32_t imageMemoryBarrierCount, + const VkImageMemoryBarrier *pImageMemoryBarriers) +{ + PreCmdPipelineBarrier(commandBuffer, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers); + + get_dispatch_table(pc_device_table_map, commandBuffer)->CmdPipelineBarrier(commandBuffer, srcStageMask, dstStageMask, dependencyFlags, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers); PostCmdPipelineBarrier(commandBuffer, srcStageMask, dstStageMask, dependencyFlags, memoryBarrierCount); } diff --git a/layers/screenshot.cpp b/layers/screenshot.cpp index b3bd9af5..a3ac0a94 100644 --- a/layers/screenshot.cpp +++ b/layers/screenshot.cpp @@ -146,8 +146,8 @@ static void writePPM( const char *filename, VkImage image1) VkPhysicalDevice physicalDevice = deviceMap[device]->physicalDevice; VkInstance instance = physDeviceMap[physicalDevice]->instance; VkQueue queue = deviceMap[device]->queue; - int width = imageMap[image1]->imageExtent.width; - int height = imageMap[image1]->imageExtent.height; + uint32_t width = imageMap[image1]->imageExtent.width; + uint32_t height = imageMap[image1]->imageExtent.height; VkFormat format = imageMap[image1]->format; const VkImageSubresource sr = {VK_IMAGE_ASPECT_COLOR_BIT, 0, 0}; VkSubresourceLayout sr_layout; @@ -326,7 +326,7 @@ static void createDeviceRegisterExtensions(const VkDeviceCreateInfo* pCreateInfo pDisp->AcquireNextImageKHR = (PFN_vkAcquireNextImageKHR) gpa(device, "vkAcquireNextImageKHR"); pDisp->QueuePresentKHR = (PFN_vkQueuePresentKHR) gpa(device, "vkQueuePresentKHR"); deviceExtMap[pDisp].wsi_enabled = false; - for (i = 0; i < pCreateInfo->enabledExtensionNameCount; i++) { + for (i = 0; i < pCreateInfo->enabledExtensionCount; i++) { if (strcmp(pCreateInfo->ppEnabledExtensionNames[i], VK_KHR_SWAPCHAIN_EXTENSION_NAME) == 0) deviceExtMap[pDisp].wsi_enabled = true; } diff --git a/layers/swapchain.cpp b/layers/swapchain.cpp index f84f48f9..d9e0a092 100644 --- a/layers/swapchain.cpp +++ b/layers/swapchain.cpp @@ -107,7 +107,7 @@ static void createDeviceRegisterExtensions(VkPhysicalDevice physicalDevice, cons // Record whether the WSI device extension was enabled for this VkDevice. // No need to check if the extension was advertised by // vkEnumerateDeviceExtensionProperties(), since the loader handles that. - for (i = 0; i < pCreateInfo->enabledExtensionNameCount; i++) { + for (i = 0; i < pCreateInfo->enabledExtensionCount; i++) { if (strcmp(pCreateInfo->ppEnabledExtensionNames[i], VK_KHR_SWAPCHAIN_EXTENSION_NAME) == 0) { my_device_data->deviceMap[device].swapchainExtensionEnabled = true; @@ -177,7 +177,7 @@ static void createInstanceRegisterExtensions(const VkInstanceCreateInfo* pCreate // Record whether the WSI instance extension was enabled for this // VkInstance. No need to check if the extension was advertised by // vkEnumerateInstanceExtensionProperties(), since the loader handles that. - for (i = 0; i < pCreateInfo->enabledExtensionNameCount; i++) { + for (i = 0; i < pCreateInfo->enabledExtensionCount; i++) { if (strcmp(pCreateInfo->ppEnabledExtensionNames[i], VK_KHR_SURFACE_EXTENSION_NAME) == 0) { my_data->instanceMap[instance].surfaceExtensionEnabled = true; @@ -296,7 +296,7 @@ VK_LAYER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateInstance(const VkInstance my_data->report_data = debug_report_create_instance( pTable, *pInstance, - pCreateInfo->enabledExtensionNameCount, + pCreateInfo->enabledExtensionCount, pCreateInfo->ppEnabledExtensionNames); // Call the following function after my_data is initialized: createInstanceRegisterExtensions(pCreateInfo, *pInstance); diff --git a/layers/unique_objects.h b/layers/unique_objects.h index 68505e28..02e66990 100644 --- a/layers/unique_objects.h +++ b/layers/unique_objects.h @@ -105,7 +105,7 @@ static void createInstanceRegisterExtensions(const VkInstanceCreateInfo* pCreate #endif // VK_USE_PLATFORM_ANDROID_KHR instanceExtMap[pDisp] = {}; - for (i = 0; i < pCreateInfo->enabledExtensionNameCount; i++) { + for (i = 0; i < pCreateInfo->enabledExtensionCount; i++) { if (strcmp(pCreateInfo->ppEnabledExtensionNames[i], VK_KHR_SURFACE_EXTENSION_NAME) == 0) instanceExtMap[pDisp].wsi_enabled = true; #ifdef VK_USE_PLATFORM_XLIB_KHR @@ -163,7 +163,7 @@ static void createDeviceRegisterExtensions(const VkDeviceCreateInfo* pCreateInfo pDisp->AcquireNextImageKHR = (PFN_vkAcquireNextImageKHR) gpa(device, "vkAcquireNextImageKHR"); pDisp->QueuePresentKHR = (PFN_vkQueuePresentKHR) gpa(device, "vkQueuePresentKHR"); my_device_data->wsi_enabled = false; - for (uint32_t i = 0; i < pCreateInfo->enabledExtensionNameCount; i++) { + for (uint32_t i = 0; i < pCreateInfo->enabledExtensionCount; i++) { if (strcmp(pCreateInfo->ppEnabledExtensionNames[i], VK_KHR_SWAPCHAIN_EXTENSION_NAME) == 0) my_device_data->wsi_enabled = true; } diff --git a/loader/debug_report.c b/loader/debug_report.c index 4065fb03..7d1a9b31 100644 --- a/loader/debug_report.c +++ b/loader/debug_report.c @@ -58,7 +58,7 @@ void debug_report_create_instance( { ptr_instance->debug_report_enabled = false; - for (uint32_t i = 0; i < pCreateInfo->enabledExtensionNameCount; i++) { + for (uint32_t i = 0; i < pCreateInfo->enabledExtensionCount; i++) { if (strcmp(pCreateInfo->ppEnabledExtensionNames[i], VK_EXT_DEBUG_REPORT_EXTENSION_NAME) == 0) { ptr_instance->debug_report_enabled = true; return; diff --git a/loader/loader.c b/loader/loader.c index 81c805ab..0b9beb05 100644 --- a/loader/loader.c +++ b/loader/loader.c @@ -2788,7 +2788,7 @@ VkResult loader_enable_instance_layers( err = loader_add_layer_names_to_list( inst, &inst->activated_layer_list, - pCreateInfo->enabledLayerNameCount, + pCreateInfo->enabledLayerCount, pCreateInfo->ppEnabledLayerNames, instance_layers); @@ -2926,7 +2926,7 @@ static VkResult loader_enable_device_layers( err = loader_add_layer_names_to_list( inst, &dev->activated_layer_list, - pCreateInfo->enabledLayerNameCount, + pCreateInfo->enabledLayerCount, pCreateInfo->ppEnabledLayerNames, device_layers); @@ -3055,7 +3055,7 @@ VkResult loader_validate_instance_extensions( VkExtensionProperties *extension_prop; struct loader_layer_properties *layer_prop; - for (uint32_t i = 0; i < pCreateInfo->enabledExtensionNameCount; i++) { + for (uint32_t i = 0; i < pCreateInfo->enabledExtensionCount; i++) { extension_prop = get_extension_property(pCreateInfo->ppEnabledExtensionNames[i], icd_exts); @@ -3066,7 +3066,7 @@ VkResult loader_validate_instance_extensions( extension_prop = NULL; /* Not in global list, search layer extension lists */ - for (uint32_t j = 0; j < pCreateInfo->enabledLayerNameCount; j++) { + for (uint32_t j = 0; j < pCreateInfo->enabledLayerCount; j++) { layer_prop = loader_get_layer_property(pCreateInfo->ppEnabledLayerNames[i], instance_layer); if (!layer_prop) { @@ -3100,7 +3100,7 @@ VkResult loader_validate_device_extensions( VkExtensionProperties *extension_prop; struct loader_layer_properties *layer_prop; - for (uint32_t i = 0; i < pCreateInfo->enabledExtensionNameCount; i++) { + for (uint32_t i = 0; i < pCreateInfo->enabledExtensionCount; i++) { const char *extension_name = pCreateInfo->ppEnabledExtensionNames[i]; extension_prop = get_extension_property(extension_name, &phys_dev->device_extension_cache); @@ -3110,7 +3110,7 @@ VkResult loader_validate_device_extensions( } /* Not in global list, search layer extension lists */ - for (uint32_t j = 0; j < pCreateInfo->enabledLayerNameCount; j++) { + for (uint32_t j = 0; j < pCreateInfo->enabledLayerCount; j++) { const char *layer_name = pCreateInfo->ppEnabledLayerNames[j]; layer_prop = loader_get_layer_property(layer_name, device_layer); @@ -3153,7 +3153,7 @@ VKAPI_ATTR VkResult VKAPI_CALL loader_CreateInstance( memcpy(&icd_create_info, pCreateInfo, sizeof(icd_create_info)); - icd_create_info.enabledLayerNameCount = 0; + icd_create_info.enabledLayerCount = 0; icd_create_info.ppEnabledLayerNames = NULL; /* @@ -3163,7 +3163,7 @@ VKAPI_ATTR VkResult VKAPI_CALL loader_CreateInstance( * library could support a layer, but it would be * independent of the actual ICD, just in the same library. */ - filtered_extension_names = loader_stack_alloc(pCreateInfo->enabledExtensionNameCount * sizeof(char *)); + filtered_extension_names = loader_stack_alloc(pCreateInfo->enabledExtensionCount * sizeof(char *)); if (!filtered_extension_names) { return VK_ERROR_OUT_OF_HOST_MEMORY; } @@ -3172,7 +3172,7 @@ VKAPI_ATTR VkResult VKAPI_CALL loader_CreateInstance( for (uint32_t i = 0; i < ptr_instance->icd_libs.count; i++) { icd = loader_icd_add(ptr_instance, &ptr_instance->icd_libs.list[i]); if (icd) { - icd_create_info.enabledExtensionNameCount = 0; + icd_create_info.enabledExtensionCount = 0; struct loader_extension_list icd_exts; loader_log(ptr_instance, VK_DEBUG_REPORT_DEBUG_BIT_EXT, 0, "Build ICD instance extension list"); @@ -3184,12 +3184,12 @@ VKAPI_ATTR VkResult VKAPI_CALL loader_CreateInstance( icd->this_icd_lib->lib_name, &icd_exts); - for (uint32_t i = 0; i < pCreateInfo->enabledExtensionNameCount; i++) { + for (uint32_t i = 0; i < pCreateInfo->enabledExtensionCount; i++) { prop = get_extension_property(pCreateInfo->ppEnabledExtensionNames[i], &icd_exts); if (prop) { - filtered_extension_names[icd_create_info.enabledExtensionNameCount] = (char *) pCreateInfo->ppEnabledExtensionNames[i]; - icd_create_info.enabledExtensionNameCount++; + filtered_extension_names[icd_create_info.enabledExtensionCount] = (char *) pCreateInfo->ppEnabledExtensionNames[i]; + icd_create_info.enabledExtensionCount++; } } @@ -3500,8 +3500,8 @@ VKAPI_ATTR VkResult VKAPI_CALL loader_CreateDevice( } /* validate any app enabled layers are available */ - if (pCreateInfo->enabledLayerNameCount > 0) { - res = loader_validate_layers(pCreateInfo->enabledLayerNameCount, + if (pCreateInfo->enabledLayerCount > 0) { + res = loader_validate_layers(pCreateInfo->enabledLayerCount, pCreateInfo->ppEnabledLayerNames, &inst->device_layer_list); if (res != VK_SUCCESS) { @@ -3537,7 +3537,7 @@ VKAPI_ATTR VkResult VKAPI_CALL loader_CreateDevice( * library could support a layer, but it would be * independent of the actual ICD, just in the same library. */ - filtered_extension_names = loader_stack_alloc(pCreateInfo->enabledExtensionNameCount * sizeof(char *)); + filtered_extension_names = loader_stack_alloc(pCreateInfo->enabledExtensionCount * sizeof(char *)); if (!filtered_extension_names) { return VK_ERROR_OUT_OF_HOST_MEMORY; } @@ -3546,19 +3546,19 @@ VKAPI_ATTR VkResult VKAPI_CALL loader_CreateDevice( memcpy(&device_create_info, pCreateInfo, sizeof(VkDeviceCreateInfo)); /* ICD's do not use layers */ - device_create_info.enabledLayerNameCount = 0; + device_create_info.enabledLayerCount = 0; device_create_info.ppEnabledLayerNames = NULL; - device_create_info.enabledExtensionNameCount = 0; + device_create_info.enabledExtensionCount = 0; device_create_info.ppEnabledExtensionNames = (const char * const *) filtered_extension_names; - for (uint32_t i = 0; i < pCreateInfo->enabledExtensionNameCount; i++) { + for (uint32_t i = 0; i < pCreateInfo->enabledExtensionCount; i++) { const char *extension_name = pCreateInfo->ppEnabledExtensionNames[i]; VkExtensionProperties *prop = get_extension_property(extension_name, &phys_dev->device_extension_cache); if (prop) { - filtered_extension_names[device_create_info.enabledExtensionNameCount] = (char *) extension_name; - device_create_info.enabledExtensionNameCount++; + filtered_extension_names[device_create_info.enabledExtensionCount] = (char *) extension_name; + device_create_info.enabledExtensionCount++; } } diff --git a/loader/trampoline.c b/loader/trampoline.c index 6a81cafd..64285b04 100644 --- a/loader/trampoline.c +++ b/loader/trampoline.c @@ -87,7 +87,7 @@ LOADER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateInstance( } /* Due to implicit layers need to get layer list even if - * enabledLayerNameCount == 0 and VK_INSTANCE_LAYERS is unset. For now always + * enabledLayerCount == 0 and VK_INSTANCE_LAYERS is unset. For now always * get layer list (both instance and device) via loader_layer_scan(). */ memset(&ptr_instance->instance_layer_list, 0, sizeof(ptr_instance->instance_layer_list)); memset(&ptr_instance->device_layer_list, 0, sizeof(ptr_instance->device_layer_list)); @@ -96,8 +96,8 @@ LOADER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkCreateInstance( &ptr_instance->device_layer_list); /* validate the app requested layers to be enabled */ - if (pCreateInfo->enabledLayerNameCount > 0) { - res = loader_validate_layers(pCreateInfo->enabledLayerNameCount, + if (pCreateInfo->enabledLayerCount > 0) { + res = loader_validate_layers(pCreateInfo->enabledLayerCount, pCreateInfo->ppEnabledLayerNames, &ptr_instance->instance_layer_list); if (res != VK_SUCCESS) { @@ -1026,7 +1026,7 @@ LOADER_EXPORT VKAPI_ATTR VkResult VKAPI_CALL vkAllocateCommandBuffers( res = disp->AllocateCommandBuffers(device, pAllocateInfo, pCommandBuffers); if (res == VK_SUCCESS) { - for (uint32_t i =0; i < pAllocateInfo->bufferCount; i++) { + for (uint32_t i =0; i < pAllocateInfo->commandBufferCount; i++) { if (pCommandBuffers[i]) { loader_init_dispatch(pCommandBuffers[i], disp); } @@ -1364,22 +1364,49 @@ LOADER_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdResetEvent(VkCommandBuffer command disp->CmdResetEvent(commandBuffer, event, stageMask); } -LOADER_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdWaitEvents(VkCommandBuffer commandBuffer, uint32_t eventCount, const VkEvent* pEvents, VkPipelineStageFlags sourceStageMask, VkPipelineStageFlags dstStageMask, uint32_t memoryBarrierCount, const void* const* ppMemoryBarriers) +LOADER_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdWaitEvents( + VkCommandBuffer commandBuffer, + uint32_t eventCount, + const VkEvent* pEvents, + VkPipelineStageFlags sourceStageMask, + VkPipelineStageFlags dstStageMask, + uint32_t memoryBarrierCount, + const VkMemoryBarrier* pMemoryBarriers, + uint32_t bufferMemoryBarrierCount, + const VkBufferMemoryBarrier* pBufferMemoryBarriers, + uint32_t imageMemoryBarrierCount, + const VkImageMemoryBarrier* pImageMemoryBarriers) { const VkLayerDispatchTable *disp; disp = loader_get_dispatch(commandBuffer); - disp->CmdWaitEvents(commandBuffer, eventCount, pEvents, sourceStageMask, dstStageMask, memoryBarrierCount, ppMemoryBarriers); + disp->CmdWaitEvents(commandBuffer, eventCount, pEvents, sourceStageMask, + dstStageMask, memoryBarrierCount, pMemoryBarriers, + bufferMemoryBarrierCount, pBufferMemoryBarriers, + imageMemoryBarrierCount, pImageMemoryBarriers); } -LOADER_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdPipelineBarrier(VkCommandBuffer commandBuffer, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, VkDependencyFlags dependencyFlags, uint32_t memoryBarrierCount, const void* const* ppMemoryBarriers) +LOADER_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdPipelineBarrier( + VkCommandBuffer commandBuffer, + VkPipelineStageFlags srcStageMask, + VkPipelineStageFlags dstStageMask, + VkDependencyFlags dependencyFlags, + uint32_t memoryBarrierCount, + const VkMemoryBarrier* pMemoryBarriers, + uint32_t bufferMemoryBarrierCount, + const VkBufferMemoryBarrier* pBufferMemoryBarriers, + uint32_t imageMemoryBarrierCount, + const VkImageMemoryBarrier* pImageMemoryBarriers) { const VkLayerDispatchTable *disp; disp = loader_get_dispatch(commandBuffer); - disp->CmdPipelineBarrier(commandBuffer, srcStageMask, dstStageMask, dependencyFlags, memoryBarrierCount, ppMemoryBarriers); + disp->CmdPipelineBarrier(commandBuffer, srcStageMask, dstStageMask, + dependencyFlags, memoryBarrierCount, pMemoryBarriers, + bufferMemoryBarrierCount, pBufferMemoryBarriers, + imageMemoryBarrierCount, pImageMemoryBarriers); } LOADER_EXPORT VKAPI_ATTR void VKAPI_CALL vkCmdBeginQuery(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t slot, VkFlags flags) diff --git a/loader/wsi.c b/loader/wsi.c index f9a82f54..584e3e69 100644 --- a/loader/wsi.c +++ b/loader/wsi.c @@ -130,7 +130,7 @@ void wsi_create_instance( ptr_instance->wsi_android_surface_enabled = false; #endif // VK_USE_PLATFORM_ANDROID_KHR - for (uint32_t i = 0; i < pCreateInfo->enabledExtensionNameCount; i++) { + for (uint32_t i = 0; i < pCreateInfo->enabledExtensionCount; i++) { if (strcmp(pCreateInfo->ppEnabledExtensionNames[i], VK_KHR_SURFACE_EXTENSION_NAME) == 0) { ptr_instance->wsi_surface_enabled = true; continue; diff --git a/vk-layer-generate.py b/vk-layer-generate.py index b43632af..b12b4740 100755 --- a/vk-layer-generate.py +++ b/vk-layer-generate.py @@ -891,7 +891,7 @@ class GenericLayerSubcommand(Subcommand): ' my_data->report_data = debug_report_create_instance(\n' ' instance_dispatch_table(*pInstance),\n' ' *pInstance,\n' - ' pCreateInfo->enabledExtensionNameCount,\n' + ' pCreateInfo->enabledExtensionCount,\n' ' pCreateInfo->ppEnabledExtensionNames);\n' ' init_generic(my_data, pAllocator);\n' ' sprintf(str, "Completed generic layered %s\\n");\n' @@ -1023,35 +1023,6 @@ class APIDumpSubcommand(Subcommand): header_txt.append(' return retVal;') header_txt.append('}') header_txt.append('') - header_txt.append('void interpret_memBarriers(const void* const* ppMemoryBarriers, uint32_t memoryBarrierCount)') - header_txt.append('{') - header_txt.append(' if (ppMemoryBarriers) {') - header_txt.append(' string tmp_str;') - header_txt.append(' for (uint32_t i = 0; i < memoryBarrierCount; i++) {') - header_txt.append(' switch(*(VkStructureType*)ppMemoryBarriers[i])') - header_txt.append(' {') - header_txt.append(' case VK_STRUCTURE_TYPE_MEMORY_BARRIER:') - header_txt.append(' tmp_str = vk_print_vkmemorybarrier((VkMemoryBarrier*)ppMemoryBarriers[i], " ");') - header_txt.append(' break;') - header_txt.append(' case VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER:') - header_txt.append(' tmp_str = vk_print_vkbuffermemorybarrier((VkBufferMemoryBarrier*)ppMemoryBarriers[i], " ");') - header_txt.append(' break;') - header_txt.append(' case VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER:') - header_txt.append(' tmp_str = vk_print_vkimagememorybarrier((VkImageMemoryBarrier*)ppMemoryBarriers[i], " ");') - header_txt.append(' break;') - header_txt.append(' default:') - header_txt.append(' break;') - header_txt.append(' }') - header_txt.append('') - header_txt.append(' if (StreamControl::writeAddress == true) {') - header_txt.append(' (*outputStream) << " ppMemoryBarriers[" << i << "] (" << &ppMemoryBarriers[i] << ")" << endl << tmp_str << endl;') - header_txt.append(' } else {') - header_txt.append(' (*outputStream) << " ppMemoryBarriers[" << i << "] (address)" << endl << " address" << endl;') - header_txt.append(' }') - header_txt.append(' }') - header_txt.append(' }') - header_txt.append('}') - header_txt.append('') return "\n".join(header_txt) def generate_init(self): @@ -1230,10 +1201,6 @@ class APIDumpSubcommand(Subcommand): log_func += '\n%s(*outputStream) << " %s (" << %s << ")" << endl << tmp_str << endl;' % (indent, local_name, local_name) indent = indent[4:] log_func += '\n%s}' % (indent) - elif 'memoryBarrierCount' == sp_param_dict[sp_index]: # call helper function - log_func += '\n%sif (ppMemoryBarriers) {' % (indent) - log_func += '\n%s interpret_memBarriers(ppMemoryBarriers, memoryBarrierCount);' % (indent) - log_func += '\n%s}' % (indent) else: # We have a count value stored to iterate over an array print_cast = '' print_func = '' @@ -2123,7 +2090,7 @@ class UniqueObjectsSubcommand(Subcommand): 'CreateGraphicsPipelines'] # Give special treatment to create functions that return multiple new objects # This dict stores array name and size of array - custom_create_dict = {'pDescriptorSets' : 'pAllocateInfo->setLayoutCount'} + custom_create_dict = {'pDescriptorSets' : 'pAllocateInfo->descriptorSetCount'} if proto.name in explicit_object_tracker_functions: funcs.append('%s%s\n' '{\n' @@ -2489,7 +2456,7 @@ class ThreadingSubcommand(Subcommand): ' my_data->report_data = debug_report_create_instance(\n' ' pInstanceTable,\n' ' *pInstance,\n' - ' pCreateInfo->enabledExtensionNameCount,\n' + ' pCreateInfo->enabledExtensionCount,\n' ' pCreateInfo->ppEnabledExtensionNames);\n' ' init_threading(my_data, pAllocator);\n' ' }\n' @@ -943,7 +943,11 @@ core = Extension( Param("VkPipelineStageFlags", "srcStageMask"), Param("VkPipelineStageFlags", "dstStageMask"), Param("uint32_t", "memoryBarrierCount"), - Param("const void* const*", "ppMemoryBarriers")]), + Param("const VkMemoryBarrier*", "pMemoryBarriers"), + Param("uint32_t", "bufferMemoryBarrierCount"), + Param("const VkBufferMemoryBarrier*", "pBufferMemoryBarriers"), + Param("uint32_t", "imageMemoryBarrierCount"), + Param("const VkImageMemoryBarrier*", "pImageMemoryBarriers")]), Proto("void", "CmdPipelineBarrier", [Param("VkCommandBuffer", "commandBuffer"), @@ -951,18 +955,22 @@ core = Extension( Param("VkPipelineStageFlags", "dstStageMask"), Param("VkDependencyFlags", "dependencyFlags"), Param("uint32_t", "memoryBarrierCount"), - Param("const void* const*", "ppMemoryBarriers")]), + Param("const VkMemoryBarrier*", "pMemoryBarriers"), + Param("uint32_t", "bufferMemoryBarrierCount"), + Param("const VkBufferMemoryBarrier*", "pBufferMemoryBarriers"), + Param("uint32_t", "imageMemoryBarrierCount"), + Param("const VkImageMemoryBarrier*", "pImageMemoryBarriers")]), Proto("void", "CmdBeginQuery", [Param("VkCommandBuffer", "commandBuffer"), Param("VkQueryPool", "queryPool"), - Param("uint32_t", "entry"), + Param("uint32_t", "query"), Param("VkQueryControlFlags", "flags")]), Proto("void", "CmdEndQuery", [Param("VkCommandBuffer", "commandBuffer"), Param("VkQueryPool", "queryPool"), - Param("uint32_t", "entry")]), + Param("uint32_t", "query")]), Proto("void", "CmdResetQueryPool", [Param("VkCommandBuffer", "commandBuffer"), @@ -974,7 +982,7 @@ core = Extension( [Param("VkCommandBuffer", "commandBuffer"), Param("VkPipelineStageFlagBits", "pipelineStage"), Param("VkQueryPool", "queryPool"), - Param("uint32_t", "entry")]), + Param("uint32_t", "query")]), Proto("void", "CmdCopyQueryPoolResults", [Param("VkCommandBuffer", "commandBuffer"), @@ -1008,7 +1016,7 @@ core = Extension( Proto("void", "CmdExecuteCommands", [Param("VkCommandBuffer", "commandBuffer"), - Param("uint32_t", "commandBuffersCount"), + Param("uint32_t", "commandBufferCount"), Param("const VkCommandBuffer*", "pCommandBuffers")]), ], ) |
