diff options
| author | Tony Barbour <tony@LunarG.com> | 2015-07-03 10:33:54 -0600 |
|---|---|---|
| committer | Courtney Goeltzenleuchter <courtney@LunarG.com> | 2015-07-17 10:05:18 -0600 |
| commit | 155cce8cc60c92f57aeba7e6289e5738983c6e22 (patch) | |
| tree | 0b374ecffd0bba71632353dd4a3a8329608b6d15 | |
| parent | d167258bcd8116a044eb829a0ce5a471af0c69e4 (diff) | |
| download | usermoji-155cce8cc60c92f57aeba7e6289e5738983c6e22.tar.xz | |
Bug 14084 - Improve type safety and remove polymorphism
| -rw-r--r-- | CMakeLists.txt | 14 | ||||
| -rw-r--r-- | demos/cube.c | 120 | ||||
| -rw-r--r-- | demos/tri.c | 131 | ||||
| -rw-r--r-- | demos/vulkaninfo.c | 1 | ||||
| -rw-r--r-- | icd/common/icd-instance.c | 9 | ||||
| -rw-r--r-- | icd/common/icd-instance.h | 4 | ||||
| -rw-r--r-- | icd/nulldrv/nulldrv.c | 339 | ||||
| -rw-r--r-- | include/vk_debug_marker_lunarg.h | 16 | ||||
| -rw-r--r-- | include/vk_debug_report_lunarg.h | 63 | ||||
| -rw-r--r-- | include/vk_icd.h | 4 | ||||
| -rw-r--r-- | include/vk_layer.h | 42 | ||||
| -rw-r--r-- | include/vk_wsi_lunarg.h | 12 | ||||
| -rw-r--r-- | include/vulkan.h | 380 | ||||
| -rw-r--r-- | layers/vk_layer_logging.h | 8 | ||||
| -rw-r--r-- | layers/vk_layer_table.h | 10 | ||||
| -rw-r--r-- | loader/debug_report.c | 23 | ||||
| -rw-r--r-- | loader/gpa_helper.h | 70 | ||||
| -rw-r--r-- | loader/loader.c | 28 | ||||
| -rw-r--r-- | loader/loader.h | 8 | ||||
| -rw-r--r-- | loader/table_ops.h | 105 | ||||
| -rw-r--r-- | loader/trampoline.c | 269 | ||||
| -rwxr-xr-x | vulkan.py | 169 |
22 files changed, 1348 insertions, 477 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index da5d5265..332aeeb7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -53,12 +53,12 @@ option(BUILD_TESTS "Build tests" ON) # tests: VULKAN tests add_subdirectory(loader) add_subdirectory(icd) -if(NOT WIN32) - # TODO: Tests don't build on Windows - if(BUILD_TESTS) - add_subdirectory(tests) - endif() -endif() -add_subdirectory(layers) +#if(NOT WIN32) +# # TODO: Tests don't build on Windows +# if(BUILD_TESTS) +# add_subdirectory(tests) +# endif() +#endif() +#add_subdirectory(layers) add_subdirectory(demos) #add_subdirectory(tools/glave) diff --git a/demos/cube.c b/demos/cube.c index 9db21d96..0642bbd4 100644 --- a/demos/cube.c +++ b/demos/cube.c @@ -248,9 +248,9 @@ void dumpVec4(const char *note, vec4 vector) } void dbgFunc( - VkFlags msgFlags, - VkObjectType objType, - VkObject srcObject, + VkFlags msgFlags, + VkDbgObjectType objType, + uint64_t srcObject, size_t location, int32_t msgCode, const char* pLayerPrefix, @@ -348,10 +348,10 @@ struct demo { VkRenderPass render_pass; VkPipeline pipeline; - VkDynamicVpState viewport; - VkDynamicRsState raster; - VkDynamicCbState color_blend; - VkDynamicDsState depth_stencil; + VkDynamicViewportState viewport; + VkDynamicRasterState raster; + VkDynamicColorBlendState color_blend; + VkDynamicDepthStencilState depth_stencil; mat4x4 projection_matrix; mat4x4 view_matrix; @@ -405,14 +405,15 @@ static void demo_flush_init_cmd(struct demo *demo) assert(!err); const VkCmdBuffer cmd_bufs[] = { demo->cmd }; + VkFence nullFence = { VK_NULL_HANDLE }; - err = vkQueueSubmit(demo->queue, 1, cmd_bufs, VK_NULL_HANDLE); + err = vkQueueSubmit(demo->queue, 1, cmd_bufs, nullFence); assert(!err); err = vkQueueWaitIdle(demo->queue); assert(!err); - vkDestroyObject(demo->device, VK_OBJECT_TYPE_COMMAND_BUFFER, demo->cmd); + vkDestroyCommandBuffer(demo->device, demo->cmd); demo->cmd = VK_NULL_HANDLE; } @@ -511,12 +512,10 @@ static void demo_draw_build_cmd(struct demo *demo, VkCmdBuffer cmd_buf) vkCmdBindDescriptorSets(cmd_buf, VK_PIPELINE_BIND_POINT_GRAPHICS, demo->pipeline_layout, 0, 1, &demo->desc_set, 0, NULL); - vkCmdBindDynamicStateObject(cmd_buf, VK_STATE_BIND_POINT_VIEWPORT, demo->viewport); - vkCmdBindDynamicStateObject(cmd_buf, VK_STATE_BIND_POINT_RASTER, demo->raster); - vkCmdBindDynamicStateObject(cmd_buf, VK_STATE_BIND_POINT_COLOR_BLEND, - demo->color_blend); - vkCmdBindDynamicStateObject(cmd_buf, VK_STATE_BIND_POINT_DEPTH_STENCIL, - demo->depth_stencil); + vkCmdBindDynamicViewportState(cmd_buf, demo->viewport); + vkCmdBindDynamicRasterState(cmd_buf, demo->raster); + vkCmdBindDynamicColorBlendState(cmd_buf, demo->color_blend); + vkCmdBindDynamicDepthStencilState(cmd_buf, demo->depth_stencil); vkCmdDraw(cmd_buf, 0, 12 * 3, 0, 1); vkCmdEndRenderPass(cmd_buf); @@ -558,9 +557,10 @@ static void demo_draw(struct demo *demo) .flipInterval = 0, }; VkResult U_ASSERT_ONLY err; + VkFence nullFence = { VK_NULL_HANDLE }; err = vkQueueSubmit(demo->queue, 1, &demo->buffers[demo->current_buffer].cmd, - VK_NULL_HANDLE); + nullFence); assert(!err); err = demo->fpQueuePresentWSI(demo->queue, &present); @@ -653,7 +653,7 @@ static void demo_prepare_depth(struct demo *demo) VkAttachmentViewCreateInfo view = { .sType = VK_STRUCTURE_TYPE_ATTACHMENT_VIEW_CREATE_INFO, .pNext = NULL, - .image = VK_NULL_HANDLE, + .image.handle = VK_NULL_HANDLE, .mipLevel = 0, .baseArraySlice = 0, .arraySize = 1, @@ -670,8 +670,8 @@ static void demo_prepare_depth(struct demo *demo) &demo->depth.image); assert(!err); - err = vkGetObjectMemoryRequirements(demo->device, - VK_OBJECT_TYPE_IMAGE, demo->depth.image, &mem_reqs); + err = vkGetImageMemoryRequirements(demo->device, + demo->depth.image, &mem_reqs); mem_alloc.allocationSize = mem_reqs.size; err = memory_type_from_properties(demo, @@ -685,8 +685,7 @@ static void demo_prepare_depth(struct demo *demo) assert(!err); /* bind memory */ - err = vkBindObjectMemory(demo->device, - VK_OBJECT_TYPE_IMAGE, demo->depth.image, + err = vkBindImageMemory(demo->device, demo->depth.image, demo->depth.mem, 0); assert(!err); @@ -902,8 +901,7 @@ static void demo_prepare_texture_image(struct demo *demo, &tex_obj->image); assert(!err); - err = vkGetObjectMemoryRequirements(demo->device, - VK_OBJECT_TYPE_IMAGE, tex_obj->image, &mem_reqs); + err = vkGetImageMemoryRequirements(demo->device, tex_obj->image, &mem_reqs); assert(!err); mem_alloc.allocationSize = mem_reqs.size; @@ -917,8 +915,7 @@ static void demo_prepare_texture_image(struct demo *demo, assert(!err); /* bind memory */ - err = vkBindObjectMemory(demo->device, - VK_OBJECT_TYPE_IMAGE, tex_obj->image, + err = vkBindImageMemory(demo->device, tex_obj->image, tex_obj->mem, 0); assert(!err); @@ -957,7 +954,7 @@ static void demo_destroy_texture_image(struct demo *demo, struct texture_object { /* clean up staging resources */ vkFreeMemory(demo->device, tex_objs->mem); - vkDestroyObject(demo->device, VK_OBJECT_TYPE_IMAGE, tex_objs->image); + vkDestroyImage(demo->device, tex_objs->image); } static void demo_prepare_textures(struct demo *demo) @@ -1044,7 +1041,7 @@ static void demo_prepare_textures(struct demo *demo) VkImageViewCreateInfo view = { .sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO, .pNext = NULL, - .image = VK_NULL_HANDLE, + .image.handle = VK_NULL_HANDLE, .viewType = VK_IMAGE_VIEW_TYPE_2D, .format = tex_format, .channels = { VK_CHANNEL_SWIZZLE_R, @@ -1107,8 +1104,7 @@ void demo_prepare_cube_data_buffer(struct demo *demo) err = vkCreateBuffer(demo->device, &buf_info, &demo->uniform_data.buf); assert(!err); - err = vkGetObjectMemoryRequirements(demo->device, - VK_OBJECT_TYPE_BUFFER, demo->uniform_data.buf, &mem_reqs); + err = vkGetBufferMemoryRequirements(demo->device, demo->uniform_data.buf, &mem_reqs); assert(!err && mem_reqs_size == sizeof(mem_reqs)); alloc_info.allocationSize = mem_reqs.size; @@ -1129,8 +1125,8 @@ void demo_prepare_cube_data_buffer(struct demo *demo) err = vkUnmapMemory(demo->device, demo->uniform_data.mem); assert(!err); - err = vkBindObjectMemory(demo->device, - VK_OBJECT_TYPE_BUFFER, demo->uniform_data.buf, + err = vkBindBufferMemory(demo->device, + demo->uniform_data.buf, demo->uniform_data.mem, 0); assert(!err); @@ -1492,20 +1488,20 @@ static void demo_prepare_pipeline(struct demo *demo) assert(!err); for (uint32_t i = 0; i < pipeline.stageCount; i++) { - vkDestroyObject(demo->device, VK_OBJECT_TYPE_SHADER, shaderStages[i].shader); + vkDestroyShader(demo->device, shaderStages[i].shader); } } static void demo_prepare_dynamic_states(struct demo *demo) { - VkDynamicVpStateCreateInfo viewport_create; - VkDynamicRsStateCreateInfo raster; - VkDynamicCbStateCreateInfo color_blend; - VkDynamicDsStateCreateInfo depth_stencil; + VkDynamicViewportStateCreateInfo viewport_create; + VkDynamicRasterStateCreateInfo raster; + VkDynamicColorBlendStateCreateInfo color_blend; + VkDynamicDepthStencilStateCreateInfo depth_stencil; VkResult U_ASSERT_ONLY err; memset(&viewport_create, 0, sizeof(viewport_create)); - viewport_create.sType = VK_STRUCTURE_TYPE_DYNAMIC_VP_STATE_CREATE_INFO; + viewport_create.sType = VK_STRUCTURE_TYPE_DYNAMIC_VIEWPORT_STATE_CREATE_INFO; viewport_create.viewportAndScissorCount = 1; VkViewport viewport; memset(&viewport, 0, sizeof(viewport)); @@ -1523,18 +1519,18 @@ static void demo_prepare_dynamic_states(struct demo *demo) viewport_create.pScissors = &scissor; memset(&raster, 0, sizeof(raster)); - raster.sType = VK_STRUCTURE_TYPE_DYNAMIC_RS_STATE_CREATE_INFO; + raster.sType = VK_STRUCTURE_TYPE_DYNAMIC_RASTER_STATE_CREATE_INFO; raster.lineWidth = 1.0; memset(&color_blend, 0, sizeof(color_blend)); - color_blend.sType = VK_STRUCTURE_TYPE_DYNAMIC_CB_STATE_CREATE_INFO; + color_blend.sType = VK_STRUCTURE_TYPE_DYNAMIC_COLOR_BLEND_STATE_CREATE_INFO; color_blend.blendConst[0] = 1.0f; color_blend.blendConst[1] = 1.0f; color_blend.blendConst[2] = 1.0f; color_blend.blendConst[3] = 1.0f; memset(&depth_stencil, 0, sizeof(depth_stencil)); - depth_stencil.sType = VK_STRUCTURE_TYPE_DYNAMIC_DS_STATE_CREATE_INFO; + depth_stencil.sType = VK_STRUCTURE_TYPE_DYNAMIC_DEPTH_STENCIL_STATE_CREATE_INFO; depth_stencil.minDepthBounds = 0.0f; depth_stencil.maxDepthBounds = 1.0f; depth_stencil.stencilBackRef = 0; @@ -1707,42 +1703,42 @@ static void demo_cleanup(struct demo *demo) demo->prepared = false; - for (i = 0; i < DEMO_BUFFER_COUNT; i++) - vkDestroyObject(demo->device, VK_OBJECT_TYPE_FRAMEBUFFER, demo->framebuffers[i]); - - vkDestroyObject(demo->device, VK_OBJECT_TYPE_DESCRIPTOR_SET, demo->desc_set); - vkDestroyObject(demo->device, VK_OBJECT_TYPE_DESCRIPTOR_POOL, demo->desc_pool); + for (i = 0; i < DEMO_BUFFER_COUNT; i++) { + vkDestroyFramebuffer(demo->device, demo->framebuffers[i]); + } +// vkDestroyDescriptorSet(demo->device, demo->desc_set); + vkDestroyDescriptorPool(demo->device, demo->desc_pool); - vkDestroyObject(demo->device, VK_OBJECT_TYPE_DYNAMIC_VP_STATE, demo->viewport); - vkDestroyObject(demo->device, VK_OBJECT_TYPE_DYNAMIC_RS_STATE, demo->raster); - vkDestroyObject(demo->device, VK_OBJECT_TYPE_DYNAMIC_CB_STATE, demo->color_blend); - vkDestroyObject(demo->device, VK_OBJECT_TYPE_DYNAMIC_DS_STATE, demo->depth_stencil); + vkDestroyDynamicViewportState(demo->device, demo->viewport); + vkDestroyDynamicRasterState(demo->device, demo->raster); + vkDestroyDynamicColorBlendState(demo->device, demo->color_blend); + vkDestroyDynamicDepthStencilState(demo->device, demo->depth_stencil); - vkDestroyObject(demo->device, VK_OBJECT_TYPE_PIPELINE, demo->pipeline); + vkDestroyPipeline(demo->device, demo->pipeline); vkDestroyPipelineCache(demo->device, demo->pipelineCache); - vkDestroyObject(demo->device, VK_OBJECT_TYPE_RENDER_PASS, demo->render_pass); - vkDestroyObject(demo->device, VK_OBJECT_TYPE_PIPELINE_LAYOUT, demo->pipeline_layout); - vkDestroyObject(demo->device, VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT, demo->desc_layout); + vkDestroyRenderPass(demo->device, demo->render_pass); + vkDestroyPipelineLayout(demo->device, demo->pipeline_layout); + vkDestroyDescriptorSetLayout(demo->device, demo->desc_layout); for (i = 0; i < DEMO_TEXTURE_COUNT; i++) { - vkDestroyObject(demo->device, VK_OBJECT_TYPE_IMAGE_VIEW, demo->textures[i].view); - vkDestroyObject(demo->device, VK_OBJECT_TYPE_IMAGE, demo->textures[i].image); + vkDestroyImageView(demo->device, demo->textures[i].view); + vkDestroyImage(demo->device, demo->textures[i].image); vkFreeMemory(demo->device, demo->textures[i].mem); - vkDestroyObject(demo->device, VK_OBJECT_TYPE_SAMPLER, demo->textures[i].sampler); + vkDestroySampler(demo->device, demo->textures[i].sampler); } demo->fpDestroySwapChainWSI(demo->swap_chain); - vkDestroyObject(demo->device, VK_OBJECT_TYPE_ATTACHMENT_VIEW, demo->depth.view); - vkDestroyObject(demo->device, VK_OBJECT_TYPE_IMAGE, demo->depth.image); + vkDestroyAttachmentView(demo->device, demo->depth.view); + vkDestroyImage(demo->device, demo->depth.image); vkFreeMemory(demo->device, demo->depth.mem); - vkDestroyObject(demo->device, VK_OBJECT_TYPE_BUFFER_VIEW, demo->uniform_data.view); - vkDestroyObject(demo->device, VK_OBJECT_TYPE_BUFFER, demo->uniform_data.buf); + vkDestroyBufferView(demo->device, demo->uniform_data.view); + vkDestroyBuffer(demo->device, demo->uniform_data.buf); vkFreeMemory(demo->device, demo->uniform_data.mem); for (i = 0; i < DEMO_BUFFER_COUNT; i++) { - vkDestroyObject(demo->device, VK_OBJECT_TYPE_ATTACHMENT_VIEW, demo->buffers[i].view); - vkDestroyObject(demo->device, VK_OBJECT_TYPE_COMMAND_BUFFER, demo->buffers[i].cmd); + vkDestroyAttachmentView(demo->device, demo->buffers[i].view); + vkDestroyCommandBuffer(demo->device, demo->buffers[i].cmd); } vkDestroyDevice(demo->device); diff --git a/demos/tri.c b/demos/tri.c index 7ffd8a85..60650b32 100644 --- a/demos/tri.c +++ b/demos/tri.c @@ -101,9 +101,9 @@ struct texture_object { }; void dbgFunc( - VkFlags msgFlags, - VkObjectType objType, - VkObject srcObject, + VkFlags msgFlags, + VkDbgObjectType objType, + uint64_t srcObject, size_t location, int32_t msgCode, const char* pLayerPrefix, @@ -198,10 +198,10 @@ struct demo { VkRenderPass render_pass; VkPipeline pipeline; - VkDynamicVpState viewport; - VkDynamicRsState raster; - VkDynamicCbState color_blend; - VkDynamicDsState depth_stencil; + VkDynamicViewportState viewport; + VkDynamicRasterState raster; + VkDynamicColorBlendState color_blend; + VkDynamicDepthStencilState depth_stencil; VkDescriptorPool desc_pool; VkDescriptorSet desc_set; @@ -246,14 +246,15 @@ static void demo_flush_init_cmd(struct demo *demo) assert(!err); const VkCmdBuffer cmd_bufs[] = { demo->setup_cmd }; + VkFence nullFence = {VK_NULL_HANDLE}; - err = vkQueueSubmit(demo->queue, 1, cmd_bufs, VK_NULL_HANDLE); + err = vkQueueSubmit(demo->queue, 1, cmd_bufs, nullFence); assert(!err); err = vkQueueWaitIdle(demo->queue); assert(!err); - vkDestroyObject(demo->device, VK_OBJECT_TYPE_COMMAND_BUFFER, demo->setup_cmd); + vkDestroyCommandBuffer(demo->device, demo->setup_cmd); demo->setup_cmd = VK_NULL_HANDLE; } @@ -351,12 +352,10 @@ static void demo_draw_build_cmd(struct demo *demo) vkCmdBindDescriptorSets(demo->draw_cmd, VK_PIPELINE_BIND_POINT_GRAPHICS, demo->pipeline_layout, 0, 1, & demo->desc_set, 0, NULL); - vkCmdBindDynamicStateObject(demo->draw_cmd, VK_STATE_BIND_POINT_VIEWPORT, demo->viewport); - vkCmdBindDynamicStateObject(demo->draw_cmd, VK_STATE_BIND_POINT_RASTER, demo->raster); - vkCmdBindDynamicStateObject(demo->draw_cmd, VK_STATE_BIND_POINT_COLOR_BLEND, - demo->color_blend); - vkCmdBindDynamicStateObject(demo->draw_cmd, VK_STATE_BIND_POINT_DEPTH_STENCIL, - demo->depth_stencil); + vkCmdBindDynamicViewportState(demo->draw_cmd, demo->viewport); + vkCmdBindDynamicRasterState(demo->draw_cmd, demo->raster); + vkCmdBindDynamicColorBlendState(demo->draw_cmd, demo->color_blend); + vkCmdBindDynamicDepthStencilState(demo->draw_cmd, demo->depth_stencil); VkDeviceSize offsets[1] = {0}; vkCmdBindVertexBuffers(demo->draw_cmd, VERTEX_BUFFER_BIND_ID, 1, &demo->vertices.buf, offsets); @@ -379,8 +378,9 @@ static void demo_draw(struct demo *demo) VkResult U_ASSERT_ONLY err; demo_draw_build_cmd(demo); + VkFence nullFence = { VK_NULL_HANDLE }; - err = vkQueueSubmit(demo->queue, 1, &demo->draw_cmd, VK_NULL_HANDLE); + err = vkQueueSubmit(demo->queue, 1, &demo->draw_cmd, nullFence); assert(!err); err = demo->fpQueuePresentWSI(demo->queue, &present); @@ -475,7 +475,7 @@ static void demo_prepare_depth(struct demo *demo) VkAttachmentViewCreateInfo view = { .sType = VK_STRUCTURE_TYPE_ATTACHMENT_VIEW_CREATE_INFO, .pNext = NULL, - .image = VK_NULL_HANDLE, + .image.handle = VK_NULL_HANDLE, .mipLevel = 0, .baseArraySlice = 0, .arraySize = 1, @@ -493,8 +493,8 @@ static void demo_prepare_depth(struct demo *demo) assert(!err); /* get memory requirements for this object */ - err = vkGetObjectMemoryRequirements(demo->device, - VK_OBJECT_TYPE_IMAGE, demo->depth.image, &mem_reqs); + err = vkGetImageMemoryRequirements(demo->device, demo->depth.image, + &mem_reqs); /* select memory size and type */ mem_alloc.allocationSize = mem_reqs.size; @@ -509,9 +509,8 @@ static void demo_prepare_depth(struct demo *demo) assert(!err); /* bind memory */ - err = vkBindObjectMemory(demo->device, - VK_OBJECT_TYPE_IMAGE, demo->depth.image, - demo->depth.mem, 0); + err = vkBindImageMemory(demo->device, demo->depth.image, + demo->depth.mem, 0); assert(!err); demo_set_image_layout(demo, demo->depth.image, @@ -566,8 +565,7 @@ static void demo_prepare_texture_image(struct demo *demo, &tex_obj->image); assert(!err); - err = vkGetObjectMemoryRequirements(demo->device, - VK_OBJECT_TYPE_IMAGE, tex_obj->image, &mem_reqs); + err = vkGetImageMemoryRequirements(demo->device, tex_obj->image, &mem_reqs); mem_alloc.allocationSize = mem_reqs.size; err = memory_type_from_properties(demo, mem_reqs.memoryTypeBits, mem_props, &mem_alloc.memoryTypeIndex); @@ -578,8 +576,7 @@ static void demo_prepare_texture_image(struct demo *demo, assert(!err); /* bind memory */ - err = vkBindObjectMemory(demo->device, - VK_OBJECT_TYPE_IMAGE, tex_obj->image, + err = vkBindImageMemory(demo->device, tex_obj->image, tex_obj->mem, 0); assert(!err); @@ -620,7 +617,7 @@ static void demo_prepare_texture_image(struct demo *demo, static void demo_destroy_texture_image(struct demo *demo, struct texture_object *tex_obj) { /* clean up staging resources */ - vkDestroyObject(demo->device, VK_OBJECT_TYPE_IMAGE, tex_obj->image); + vkDestroyImage(demo->device, tex_obj->image); vkFreeMemory(demo->device, tex_obj->mem); } @@ -709,7 +706,7 @@ static void demo_prepare_textures(struct demo *demo) VkImageViewCreateInfo view = { .sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO, .pNext = NULL, - .image = VK_NULL_HANDLE, + .image.handle = VK_NULL_HANDLE, .viewType = VK_IMAGE_VIEW_TYPE_2D, .format = tex_format, .channels = { VK_CHANNEL_SWIZZLE_R, @@ -762,8 +759,8 @@ static void demo_prepare_vertices(struct demo *demo) err = vkCreateBuffer(demo->device, &buf_info, &demo->vertices.buf); assert(!err); - err = vkGetObjectMemoryRequirements(demo->device, - VK_OBJECT_TYPE_BUFFER, demo->vertices.buf, &mem_reqs); + err = vkGetBufferMemoryRequirements(demo->device, + demo->vertices.buf, &mem_reqs); mem_alloc.allocationSize = mem_reqs.size; err = memory_type_from_properties(demo, @@ -783,8 +780,7 @@ static void demo_prepare_vertices(struct demo *demo) err = vkUnmapMemory(demo->device, demo->vertices.mem); assert(!err); - err = vkBindObjectMemory(demo->device, - VK_OBJECT_TYPE_BUFFER, demo->vertices.buf, + err = vkBindBufferMemory(demo->device, demo->vertices.buf, demo->vertices.mem, 0); assert(!err); @@ -1139,20 +1135,20 @@ static void demo_prepare_pipeline(struct demo *demo) assert(!err); for (uint32_t i = 0; i < pipeline.stageCount; i++) { - vkDestroyObject(demo->device, VK_OBJECT_TYPE_SHADER, shaderStages[i].shader); + vkDestroyShader(demo->device, shaderStages[i].shader); } } static void demo_prepare_dynamic_states(struct demo *demo) { - VkDynamicVpStateCreateInfo viewport_create; - VkDynamicRsStateCreateInfo raster; - VkDynamicCbStateCreateInfo color_blend; - VkDynamicDsStateCreateInfo depth_stencil; + VkDynamicViewportStateCreateInfo viewport_create; + VkDynamicRasterStateCreateInfo raster; + VkDynamicColorBlendStateCreateInfo color_blend; + VkDynamicDepthStencilStateCreateInfo depth_stencil; VkResult U_ASSERT_ONLY err; memset(&viewport_create, 0, sizeof(viewport_create)); - viewport_create.sType = VK_STRUCTURE_TYPE_DYNAMIC_VP_STATE_CREATE_INFO; + viewport_create.sType = VK_STRUCTURE_TYPE_DYNAMIC_VIEWPORT_STATE_CREATE_INFO; viewport_create.viewportAndScissorCount = 1; VkViewport viewport; memset(&viewport, 0, sizeof(viewport)); @@ -1170,18 +1166,18 @@ static void demo_prepare_dynamic_states(struct demo *demo) viewport_create.pScissors = &scissor; memset(&raster, 0, sizeof(raster)); - raster.sType = VK_STRUCTURE_TYPE_DYNAMIC_RS_STATE_CREATE_INFO; + raster.sType = VK_STRUCTURE_TYPE_DYNAMIC_RASTER_STATE_CREATE_INFO; raster.lineWidth = 1.0; memset(&color_blend, 0, sizeof(color_blend)); - color_blend.sType = VK_STRUCTURE_TYPE_DYNAMIC_CB_STATE_CREATE_INFO; + color_blend.sType = VK_STRUCTURE_TYPE_DYNAMIC_COLOR_BLEND_STATE_CREATE_INFO; color_blend.blendConst[0] = 1.0f; color_blend.blendConst[1] = 1.0f; color_blend.blendConst[2] = 1.0f; color_blend.blendConst[3] = 1.0f; memset(&depth_stencil, 0, sizeof(depth_stencil)); - depth_stencil.sType = VK_STRUCTURE_TYPE_DYNAMIC_DS_STATE_CREATE_INFO; + depth_stencil.sType = VK_STRUCTURE_TYPE_DYNAMIC_DEPTH_STENCIL_STATE_CREATE_INFO; depth_stencil.minDepthBounds = 0.0f; depth_stencil.maxDepthBounds = 1.0f; depth_stencil.stencilBackRef = 0; @@ -1260,7 +1256,7 @@ static void demo_prepare_framebuffers(struct demo *demo) { VkAttachmentBindInfo attachments[2] = { [0] = { - .view = VK_NULL_HANDLE, + .view.handle = VK_NULL_HANDLE, .layout = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL, }, [1] = { @@ -1645,7 +1641,7 @@ static void demo_init_vk(struct demo *demo) }; if (demo->validate) { - demo->dbgCreateMsgCallback = vkGetInstanceProcAddr((VkPhysicalDevice) NULL, "vkDbgCreateMsgCallback"); + demo->dbgCreateMsgCallback = vkGetInstanceProcAddr(demo->inst, "vkDbgCreateMsgCallback"); if (!demo->dbgCreateMsgCallback) { ERR_EXIT("GetProcAddr: Unable to find vkDbgCreateMsgCallback\n", "vkGetProcAddr Failure"); @@ -1788,44 +1784,45 @@ static void demo_cleanup(struct demo *demo) { uint32_t i; - for (i = 0; i < DEMO_BUFFER_COUNT; i++) - vkDestroyObject(demo->device, VK_OBJECT_TYPE_FRAMEBUFFER, demo->framebuffers[i]); - - vkDestroyObject(demo->device, VK_OBJECT_TYPE_DESCRIPTOR_SET, demo->desc_set); - vkDestroyObject(demo->device, VK_OBJECT_TYPE_DESCRIPTOR_POOL, demo->desc_pool); + for (i = 0; i < DEMO_BUFFER_COUNT; i++) { + vkDestroyFramebuffer(demo->device, demo->framebuffers[i]); + } + // vkDestroyDescriptorSet(demo->device, demo->desc_set); + vkDestroyDescriptorPool(demo->device, demo->desc_pool); if (demo->setup_cmd) { - vkDestroyObject(demo->device, VK_OBJECT_TYPE_COMMAND_BUFFER, demo->setup_cmd); + vkDestroyCommandBuffer(demo->device, demo->setup_cmd); } - vkDestroyObject(demo->device, VK_OBJECT_TYPE_COMMAND_BUFFER, demo->draw_cmd); + vkDestroyCommandBuffer(demo->device, demo->draw_cmd); - vkDestroyObject(demo->device, VK_OBJECT_TYPE_DYNAMIC_VP_STATE, demo->viewport); - vkDestroyObject(demo->device, VK_OBJECT_TYPE_DYNAMIC_RS_STATE, demo->raster); - vkDestroyObject(demo->device, VK_OBJECT_TYPE_DYNAMIC_CB_STATE, demo->color_blend); - vkDestroyObject(demo->device, VK_OBJECT_TYPE_DYNAMIC_DS_STATE, demo->depth_stencil); + vkDestroyDynamicViewportState(demo->device, demo->viewport); + vkDestroyDynamicRasterState(demo->device, demo->raster); + vkDestroyDynamicColorBlendState(demo->device, demo->color_blend); + vkDestroyDynamicDepthStencilState(demo->device, demo->depth_stencil); - vkDestroyObject(demo->device, VK_OBJECT_TYPE_PIPELINE, demo->pipeline); - vkDestroyObject(demo->device, VK_OBJECT_TYPE_RENDER_PASS, demo->render_pass); - vkDestroyObject(demo->device, VK_OBJECT_TYPE_PIPELINE_LAYOUT, demo->pipeline_layout); - vkDestroyObject(demo->device, VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT, demo->desc_layout); + vkDestroyPipeline(demo->device, demo->pipeline); + vkDestroyRenderPass(demo->device, demo->render_pass); + vkDestroyPipelineLayout(demo->device, demo->pipeline_layout); + vkDestroyDescriptorSetLayout(demo->device, demo->desc_layout); - vkDestroyObject(demo->device, VK_OBJECT_TYPE_BUFFER, demo->vertices.buf); + vkDestroyBuffer(demo->device, demo->vertices.buf); vkFreeMemory(demo->device, demo->vertices.mem); for (i = 0; i < DEMO_TEXTURE_COUNT; i++) { - vkDestroyObject(demo->device, VK_OBJECT_TYPE_IMAGE_VIEW, demo->textures[i].view); - vkDestroyObject(demo->device, VK_OBJECT_TYPE_IMAGE, demo->textures[i].image); + vkDestroyImageView(demo->device, demo->textures[i].view); + vkDestroyImage(demo->device, demo->textures[i].image); vkFreeMemory(demo->device, demo->textures[i].mem); - vkDestroyObject(demo->device, VK_OBJECT_TYPE_SAMPLER, demo->textures[i].sampler); + vkDestroySampler(demo->device, demo->textures[i].sampler); } - vkDestroyObject(demo->device, VK_OBJECT_TYPE_ATTACHMENT_VIEW, demo->depth.view); - vkDestroyObject(demo->device, VK_OBJECT_TYPE_IMAGE, demo->depth.image); - vkFreeMemory(demo->device, demo->depth.mem); - for (i = 0; i < DEMO_BUFFER_COUNT; i++) { - vkDestroyObject(demo->device, VK_OBJECT_TYPE_ATTACHMENT_VIEW, demo->buffers[i].view); + vkDestroyAttachmentView(demo->device, demo->buffers[i].view); } + + vkDestroyAttachmentView(demo->device, demo->depth.view); + vkDestroyImage(demo->device, demo->depth.image); + vkFreeMemory(demo->device, demo->depth.mem); + demo->fpDestroySwapChainWSI(demo->swap_chain); vkDestroyDevice(demo->device); diff --git a/demos/vulkaninfo.c b/demos/vulkaninfo.c index c5405d1a..48afbffb 100644 --- a/demos/vulkaninfo.c +++ b/demos/vulkaninfo.c @@ -153,7 +153,6 @@ static const char *vk_result_string(VkResult err) STR(VK_ERROR_INVALID_IMAGE); STR(VK_ERROR_INVALID_DESCRIPTOR_SET_DATA); STR(VK_ERROR_INVALID_QUEUE_TYPE); - STR(VK_ERROR_INVALID_OBJECT_TYPE); STR(VK_ERROR_UNSUPPORTED_SHADER_IL_VERSION); STR(VK_ERROR_BAD_SHADER_CODE); STR(VK_ERROR_BAD_PIPELINE_DATA); diff --git a/icd/common/icd-instance.c b/icd/common/icd-instance.c index a4cb5fe2..ae3b2986 100644 --- a/icd/common/icd-instance.c +++ b/icd/common/icd-instance.c @@ -139,7 +139,7 @@ VkResult icd_instance_create_logger( logger->user_data = (void *) user_data; - *msg_obj = (VkDbgMsgCallback) logger; + *( struct icd_instance_logger **)msg_obj = logger; return VK_SUCCESS; } @@ -149,10 +149,11 @@ VkResult icd_instance_destroy_logger( const VkDbgMsgCallback msg_obj) { struct icd_instance_logger *logger, *prev; + VkDbgMsgCallback local_msg_obj = msg_obj; for (prev = NULL, logger = instance->loggers; logger; prev = logger, logger = logger->next) { - if (logger == (struct icd_instance_logger *) msg_obj) + if (logger == *(struct icd_instance_logger **) &local_msg_obj) break; } @@ -171,8 +172,8 @@ VkResult icd_instance_destroy_logger( void icd_instance_log(const struct icd_instance *instance, VkFlags msg_flags, - VkObjectType obj_type, - VkObject src_object, + VkDbgObjectType obj_type, + uint64_t src_object, size_t location, int32_t msg_code, const char *msg) { diff --git a/icd/common/icd-instance.h b/icd/common/icd-instance.h index 04b0ff07..400c642d 100644 --- a/icd/common/icd-instance.h +++ b/icd/common/icd-instance.h @@ -81,8 +81,8 @@ VkResult icd_instance_destroy_logger( void icd_instance_log(const struct icd_instance *instance, VkFlags msg_flags, - VkObjectType obj_type, - VkObject src_object, + VkDbgObjectType obj_type, + uint64_t src_object, size_t location, int32_t msg_code, const char *msg); diff --git a/icd/nulldrv/nulldrv.c b/icd/nulldrv/nulldrv.c index 6e4ea00d..d49dff46 100644 --- a/icd/nulldrv/nulldrv.c +++ b/icd/nulldrv/nulldrv.c @@ -50,7 +50,7 @@ static const VkExtensionProperties intel_gpu_exts[NULLDRV_EXT_COUNT] = { } }; -static struct nulldrv_base *nulldrv_base(VkObject base) +static struct nulldrv_base *nulldrv_base(void* base) { return (struct nulldrv_base *) base; } @@ -58,7 +58,7 @@ static struct nulldrv_base *nulldrv_base(VkObject base) static struct nulldrv_base *nulldrv_base_create( struct nulldrv_dev *dev, size_t obj_size, - VkObjectType type) + VkDbgObjectType type) { struct nulldrv_base *base; @@ -74,7 +74,7 @@ static struct nulldrv_base *nulldrv_base_create( memset(base, 0, obj_size); // Initialize pointer to loader's dispatch table with ICD_LOADER_MAGIC - set_loader_magic_value((VkObject) base); + set_loader_magic_value(base); if (dev == NULL) { /* @@ -101,7 +101,7 @@ static VkResult nulldrv_gpu_add(int devid, const char *primary_node, memset(gpu, 0, sizeof(*gpu)); // Initialize pointer to loader's dispatch table with ICD_LOADER_MAGIC - set_loader_magic_value((VkObject) gpu); + set_loader_magic_value(gpu); *gpu_ret = gpu; @@ -318,7 +318,7 @@ static VkResult nulldrv_img_create(struct nulldrv_dev *dev, static struct nulldrv_img *nulldrv_img(VkImage image) { - return (struct nulldrv_img *) image; + return *(struct nulldrv_img **) ℑ } static VkResult nulldrv_mem_alloc(struct nulldrv_dev *dev, @@ -388,7 +388,7 @@ static void *nulldrv_mem_map(struct nulldrv_mem *mem, VkFlags flags) static struct nulldrv_mem *nulldrv_mem(VkDeviceMemory mem) { - return (struct nulldrv_mem *) mem; + return *(struct nulldrv_mem **) &mem; } static struct nulldrv_buf *nulldrv_buf_from_base(struct nulldrv_base *base) @@ -467,7 +467,7 @@ static VkResult nulldrv_pipeline_layout_create(struct nulldrv_dev *dev, static struct nulldrv_desc_layout *nulldrv_desc_layout(VkDescriptorSetLayout layout) { - return (struct nulldrv_desc_layout *) layout; + return *(struct nulldrv_desc_layout **) &layout; } static VkResult shader_create(struct nulldrv_dev *dev, @@ -504,7 +504,7 @@ static VkResult graphics_pipeline_create(struct nulldrv_dev *dev, } static VkResult nulldrv_viewport_state_create(struct nulldrv_dev *dev, - const VkDynamicVpStateCreateInfo *info, + const VkDynamicViewportStateCreateInfo *info, struct nulldrv_dynamic_vp **state_ret) { struct nulldrv_dynamic_vp *state; @@ -520,7 +520,7 @@ static VkResult nulldrv_viewport_state_create(struct nulldrv_dev *dev, } static VkResult nulldrv_raster_state_create(struct nulldrv_dev *dev, - const VkDynamicRsStateCreateInfo *info, + const VkDynamicRasterStateCreateInfo *info, struct nulldrv_dynamic_rs **state_ret) { struct nulldrv_dynamic_rs *state; @@ -536,7 +536,7 @@ static VkResult nulldrv_raster_state_create(struct nulldrv_dev *dev, } static VkResult nulldrv_blend_state_create(struct nulldrv_dev *dev, - const VkDynamicCbStateCreateInfo *info, + const VkDynamicColorBlendStateCreateInfo *info, struct nulldrv_dynamic_cb **state_ret) { struct nulldrv_dynamic_cb *state; @@ -552,7 +552,7 @@ static VkResult nulldrv_blend_state_create(struct nulldrv_dev *dev, } static VkResult nulldrv_ds_state_create(struct nulldrv_dev *dev, - const VkDynamicDsStateCreateInfo *info, + const VkDynamicDepthStencilStateCreateInfo *info, struct nulldrv_dynamic_ds **state_ret) { struct nulldrv_dynamic_ds *state; @@ -628,7 +628,7 @@ static VkResult nulldrv_desc_set_create(struct nulldrv_dev *dev, static struct nulldrv_desc_pool *nulldrv_desc_pool(VkDescriptorPool pool) { - return (struct nulldrv_desc_pool *) pool; + return *(struct nulldrv_desc_pool **) &pool; } static VkResult nulldrv_fb_create(struct nulldrv_dev *dev, @@ -665,7 +665,7 @@ static VkResult nulldrv_render_pass_create(struct nulldrv_dev *dev, static struct nulldrv_buf *nulldrv_buf(VkBuffer buf) { - return (struct nulldrv_buf *) buf; + return *(struct nulldrv_buf **) &buf; } static VkResult nulldrv_buf_view_create(struct nulldrv_dev *dev, @@ -703,6 +703,14 @@ ICD_EXPORT VkResult VKAPI vkCreateBuffer( return nulldrv_buf_create(dev, pCreateInfo, (struct nulldrv_buf **) pBuffer); } +ICD_EXPORT VkResult VKAPI vkDestroyBuffer( + VkDevice device, + VkBuffer buffer) +{ + NULLDRV_LOG_FUNC; + return VK_SUCCESS; +} + ICD_EXPORT VkResult VKAPI vkCreateCommandBuffer( VkDevice device, const VkCmdBufferCreateInfo* pCreateInfo, @@ -715,6 +723,14 @@ ICD_EXPORT VkResult VKAPI vkCreateCommandBuffer( (struct nulldrv_cmd **) pCmdBuffer); } +ICD_EXPORT VkResult VKAPI vkDestroyCommandBuffer( + VkDevice device, + VkCmdBuffer cmdBuffer) +{ + NULLDRV_LOG_FUNC; + return VK_SUCCESS; +} + ICD_EXPORT VkResult VKAPI vkBeginCommandBuffer( VkCmdBuffer cmdBuffer, const VkCmdBufferBeginInfo *info) @@ -861,8 +877,8 @@ ICD_EXPORT VkResult VKAPI vkGetSwapChainInfoWSI( if (!mem) return VK_ERROR_OUT_OF_HOST_MEMORY; - images[i].image = (VkImage) img; - images[i].memory = (VkDeviceMemory) mem; + images[i].image.handle = (uint64_t) img; + images[i].memory.handle = (uint64_t) mem; } } break; @@ -1096,16 +1112,36 @@ ICD_EXPORT void VKAPI vkCmdWriteTimestamp( ICD_EXPORT void VKAPI vkCmdBindPipeline( VkCmdBuffer cmdBuffer, - VkPipelineBindPoint pipelineBindPoint, - VkPipeline pipeline) + VkPipelineBindPoint pipelineBindPoint, + VkPipeline pipeline) { NULLDRV_LOG_FUNC; } -ICD_EXPORT void VKAPI vkCmdBindDynamicStateObject( - VkCmdBuffer cmdBuffer, - VkStateBindPoint stateBindPoint, - VkDynamicStateObject state) +ICD_EXPORT void VKAPI vkCmdBindDynamicViewportState( + VkCmdBuffer cmdBuffer, + VkDynamicViewportState state) +{ + NULLDRV_LOG_FUNC; +} + +ICD_EXPORT void VKAPI vkCmdBindDynamicRasterState( + VkCmdBuffer cmdBuffer, + VkDynamicRasterState state) +{ + NULLDRV_LOG_FUNC; +} + +ICD_EXPORT void VKAPI vkCmdBindDynamicColorBlendState( + VkCmdBuffer cmdBuffer, + VkDynamicColorBlendState state) +{ + NULLDRV_LOG_FUNC; +} + +ICD_EXPORT void VKAPI vkCmdBindDynamicDepthStencilState( + VkCmdBuffer cmdBuffer, + VkDynamicDepthStencilState state) { NULLDRV_LOG_FUNC; } @@ -1268,6 +1304,14 @@ ICD_EXPORT VkResult VKAPI vkCreateEvent( return VK_SUCCESS; } +ICD_EXPORT VkResult VKAPI vkDestroyEvent( + VkDevice device, + VkEvent event) +{ + NULLDRV_LOG_FUNC; + return VK_SUCCESS; +} + ICD_EXPORT VkResult VKAPI vkGetEventStatus( VkDevice device, VkEvent event_) @@ -1304,6 +1348,14 @@ ICD_EXPORT VkResult VKAPI vkCreateFence( (struct nulldrv_fence **) pFence); } +ICD_EXPORT VkResult VKAPI vkDestroyFence( + VkDevice device, + VkFence fence) +{ + NULLDRV_LOG_FUNC; + return VK_SUCCESS; +} + ICD_EXPORT VkResult VKAPI vkGetFenceStatus( VkDevice device, VkFence fence_) @@ -1499,6 +1551,14 @@ ICD_EXPORT VkResult VKAPI vkCreateImage( (struct nulldrv_img **) pImage); } +ICD_EXPORT VkResult VKAPI vkDestroyImage( + VkDevice device, + VkImage image) +{ + NULLDRV_LOG_FUNC; + return VK_SUCCESS; +} + ICD_EXPORT VkResult VKAPI vkGetImageSubresourceLayout( VkDevice device, VkImage image, @@ -1629,31 +1689,41 @@ ICD_EXPORT VkResult VKAPI vkEnumerateLayers( return VK_SUCCESS; } -ICD_EXPORT VkResult VKAPI vkDestroyObject( - VkDevice device, - VkObjectType objType, - VkObject object) +ICD_EXPORT VkResult VKAPI vkGetBufferMemoryRequirements( + VkDevice device, + VkBuffer buffer, + VkMemoryRequirements* pMemoryRequirements) { NULLDRV_LOG_FUNC; - return VK_SUCCESS; + struct nulldrv_base *base = nulldrv_base((void*)buffer.handle); + + return base->get_memory_requirements(base, pMemoryRequirements); } -ICD_EXPORT VkResult VKAPI vkGetObjectMemoryRequirements( +ICD_EXPORT VkResult VKAPI vkGetImageMemoryRequirements( VkDevice device, - VkObjectType objType, - VkObject object, + VkImage image, VkMemoryRequirements* pMemoryRequirements) { NULLDRV_LOG_FUNC; - struct nulldrv_base *base = nulldrv_base(object); + struct nulldrv_base *base = nulldrv_base((void*)image.handle); return base->get_memory_requirements(base, pMemoryRequirements); } -ICD_EXPORT VkResult VKAPI vkBindObjectMemory( +ICD_EXPORT VkResult VKAPI vkBindBufferMemory( + VkDevice device, + VkBuffer buffer, + VkDeviceMemory mem_, + VkDeviceSize memOffset) +{ + NULLDRV_LOG_FUNC; + return VK_SUCCESS; +} + +ICD_EXPORT VkResult VKAPI vkBindImageMemory( VkDevice device, - VkObjectType objType, - VkObject object, + VkImage image, VkDeviceMemory mem_, VkDeviceSize memOffset) { @@ -1724,9 +1794,25 @@ ICD_EXPORT VkResult VKAPI vkCreatePipelineCache( return VK_SUCCESS; } +<<<<<<< HEAD VkResult VKAPI vkDestroyPipelineCache( VkDevice device, VkPipelineCache pipelineCache) +======= +ICD_EXPORT VkResult VKAPI vkDestroyPipeline( + VkDevice device, + VkPipeline pipeline) +{ + NULLDRV_LOG_FUNC; + return VK_SUCCESS; +} + +ICD_EXPORT VkResult VKAPI vkCreateGraphicsPipelineDerivative( + VkDevice device, + const VkGraphicsPipelineCreateInfo* pCreateInfo, + VkPipeline basePipeline, + VkPipeline* pPipeline) +>>>>>>> Bug 14084 - Improve type safety and remove polymorphism { NULLDRV_LOG_FUNC; return VK_SUCCESS; @@ -1798,6 +1884,14 @@ ICD_EXPORT VkResult VKAPI vkCreateQueryPool( return VK_SUCCESS; } +ICD_EXPORT VkResult VKAPI vkDestroyQueryPool( + VkDevice device, + VkQueryPool queryPoool) +{ + NULLDRV_LOG_FUNC; + return VK_SUCCESS; +} + ICD_EXPORT VkResult VKAPI vkGetQueryPoolResults( VkDevice device, VkQueryPool queryPool, @@ -1837,6 +1931,14 @@ ICD_EXPORT VkResult VKAPI vkCreateSemaphore( return VK_SUCCESS; } +ICD_EXPORT VkResult VKAPI vkDestroySemaphore( + VkDevice device, + VkSemaphore semaphore) +{ + NULLDRV_LOG_FUNC; + return VK_SUCCESS; +} + ICD_EXPORT VkResult VKAPI vkQueueSignalSemaphore( VkQueue queue, VkSemaphore semaphore) @@ -1865,12 +1967,30 @@ ICD_EXPORT VkResult VKAPI vkCreateSampler( (struct nulldrv_sampler **) pSampler); } +ICD_EXPORT VkResult VKAPI vkDestroySampler( + VkDevice device, + VkSampler sampler) +{ + NULLDRV_LOG_FUNC; + return VK_SUCCESS; +} + ICD_EXPORT VkResult VKAPI vkCreateShaderModule( VkDevice device, const VkShaderModuleCreateInfo* pCreateInfo, VkShaderModule* pShaderModule) { // TODO: Fill in with real data + NULLDRV_LOG_FUNC; + return VK_SUCCESS; +} + +ICD_EXPORT VkResult VKAPI vkDestroyShaderModule( + VkDevice device, + VkShaderModule shaderModule) +{ + // TODO: Fill in with real data + NULLDRV_LOG_FUNC; return VK_SUCCESS; } @@ -1885,10 +2005,18 @@ ICD_EXPORT VkResult VKAPI vkCreateShader( return shader_create(dev, pCreateInfo, (struct nulldrv_shader **) pShader); } -ICD_EXPORT VkResult VKAPI vkCreateDynamicViewportState( +ICD_EXPORT VkResult VKAPI vkDestroyShader( VkDevice device, - const VkDynamicVpStateCreateInfo* pCreateInfo, - VkDynamicVpState* pState) + VkShader shader) +{ + NULLDRV_LOG_FUNC; + return VK_SUCCESS; +} + +ICD_EXPORT VkResult VKAPI vkCreateDynamicViewportState( + VkDevice device, + const VkDynamicViewportStateCreateInfo* pCreateInfo, + VkDynamicViewportState* pState) { NULLDRV_LOG_FUNC; struct nulldrv_dev *dev = nulldrv_dev(device); @@ -1897,10 +2025,18 @@ ICD_EXPORT VkResult VKAPI vkCreateDynamicViewportState( (struct nulldrv_dynamic_vp **) pState); } +ICD_EXPORT VkResult VKAPI vkDestroyDynamicViewportState( + VkDevice device, + VkDynamicViewportState dynamicViewportState) +{ + NULLDRV_LOG_FUNC; + return VK_SUCCESS; +} + ICD_EXPORT VkResult VKAPI vkCreateDynamicRasterState( VkDevice device, - const VkDynamicRsStateCreateInfo* pCreateInfo, - VkDynamicRsState* pState) + const VkDynamicRasterStateCreateInfo* pCreateInfo, + VkDynamicRasterState* pState) { NULLDRV_LOG_FUNC; struct nulldrv_dev *dev = nulldrv_dev(device); @@ -1909,10 +2045,18 @@ ICD_EXPORT VkResult VKAPI vkCreateDynamicRasterState( (struct nulldrv_dynamic_rs **) pState); } -ICD_EXPORT VkResult VKAPI vkCreateDynamicColorBlendState( +ICD_EXPORT VkResult VKAPI vkDestroyDynamicRasterState( VkDevice device, - const VkDynamicCbStateCreateInfo* pCreateInfo, - VkDynamicCbState* pState) + VkDynamicRasterState dynamicRasterState) +{ + NULLDRV_LOG_FUNC; + return VK_SUCCESS; +} + +ICD_EXPORT VkResult VKAPI vkCreateDynamicColorBlendState( + VkDevice device, + const VkDynamicColorBlendStateCreateInfo* pCreateInfo, + VkDynamicColorBlendState* pState) { NULLDRV_LOG_FUNC; struct nulldrv_dev *dev = nulldrv_dev(device); @@ -1921,10 +2065,18 @@ ICD_EXPORT VkResult VKAPI vkCreateDynamicColorBlendState( (struct nulldrv_dynamic_cb **) pState); } -ICD_EXPORT VkResult VKAPI vkCreateDynamicDepthStencilState( +ICD_EXPORT VkResult VKAPI vkDestroyDynamicColorBlendState( VkDevice device, - const VkDynamicDsStateCreateInfo* pCreateInfo, - VkDynamicDsState* pState) + VkDynamicColorBlendState dynamicColorBlendState) +{ + NULLDRV_LOG_FUNC; + return VK_SUCCESS; +} + +ICD_EXPORT VkResult VKAPI vkCreateDynamicDepthStencilState( + VkDevice device, + const VkDynamicDepthStencilStateCreateInfo* pCreateInfo, + VkDynamicDepthStencilState* pState) { NULLDRV_LOG_FUNC; struct nulldrv_dev *dev = nulldrv_dev(device); @@ -1933,6 +2085,14 @@ ICD_EXPORT VkResult VKAPI vkCreateDynamicDepthStencilState( (struct nulldrv_dynamic_ds **) pState); } +ICD_EXPORT VkResult VKAPI vkDestroyDynamicDepthStencilState( + VkDevice device, + VkDynamicDepthStencilState dynamicDepthStencilState) +{ + NULLDRV_LOG_FUNC; + return VK_SUCCESS; +} + ICD_EXPORT VkResult VKAPI vkCreateBufferView( VkDevice device, const VkBufferViewCreateInfo* pCreateInfo, @@ -1945,6 +2105,14 @@ ICD_EXPORT VkResult VKAPI vkCreateBufferView( (struct nulldrv_buf_view **) pView); } +ICD_EXPORT VkResult VKAPI vkDestroyBufferView( + VkDevice device, + VkBufferView bufferView) +{ + NULLDRV_LOG_FUNC; + return VK_SUCCESS; +} + ICD_EXPORT VkResult VKAPI vkCreateImageView( VkDevice device, const VkImageViewCreateInfo* pCreateInfo, @@ -1957,7 +2125,19 @@ ICD_EXPORT VkResult VKAPI vkCreateImageView( (struct nulldrv_img_view **) pView); } +<<<<<<< HEAD ICD_EXPORT VkResult VKAPI vkCreateAttachmentView( +======= +ICD_EXPORT VkResult VKAPI vkDestroyImageView( + VkDevice device, + VkImageView imageView) +{ + NULLDRV_LOG_FUNC; + return VK_SUCCESS; +} + +ICD_EXPORT VkResult VKAPI vkCreateColorAttachmentView( +>>>>>>> Bug 14084 - Improve type safety and remove polymorphism VkDevice device, const VkAttachmentViewCreateInfo* pCreateInfo, VkAttachmentView* pView) @@ -1969,6 +2149,38 @@ ICD_EXPORT VkResult VKAPI vkCreateAttachmentView( (struct nulldrv_rt_view **) pView); } +<<<<<<< HEAD +======= +ICD_EXPORT VkResult VKAPI vkDestroyColorAttachmentView( + VkDevice device, + VkColorAttachmentView colorAttachmentView) +{ + NULLDRV_LOG_FUNC; + return VK_SUCCESS; +} + +ICD_EXPORT VkResult VKAPI vkCreateDepthStencilView( + VkDevice device, + const VkDepthStencilViewCreateInfo* pCreateInfo, + VkDepthStencilView* pView) +{ + NULLDRV_LOG_FUNC; + struct nulldrv_dev *dev = nulldrv_dev(device); + + return nulldrv_ds_view_create(dev, pCreateInfo, + (struct nulldrv_ds_view **) pView); + +} + +ICD_EXPORT VkResult VKAPI vkDestroyDepthStencilView( + VkDevice device, + VkDepthStencilView depthStencilView) +{ + NULLDRV_LOG_FUNC; + return VK_SUCCESS; +} + +>>>>>>> Bug 14084 - Improve type safety and remove polymorphism ICD_EXPORT VkResult VKAPI vkCreateDescriptorSetLayout( VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, @@ -1981,6 +2193,14 @@ ICD_EXPORT VkResult VKAPI vkCreateDescriptorSetLayout( (struct nulldrv_desc_layout **) pSetLayout); } +ICD_EXPORT VkResult VKAPI vkDestroyDescriptorSetLayout( + VkDevice device, + VkDescriptorSetLayout descriptorSetLayout) +{ + NULLDRV_LOG_FUNC; + return VK_SUCCESS; +} + ICD_EXPORT VkResult VKAPI vkCreatePipelineLayout( VkDevice device, const VkPipelineLayoutCreateInfo* pCreateInfo, @@ -1994,6 +2214,14 @@ ICD_EXPORT VkResult VKAPI vkCreatePipelineLayout( (struct nulldrv_pipeline_layout **) pPipelineLayout); } +ICD_EXPORT VkResult VKAPI vkDestroyPipelineLayout( + VkDevice device, + VkPipelineLayout pipelineLayout) +{ + NULLDRV_LOG_FUNC; + return VK_SUCCESS; +} + ICD_EXPORT VkResult VKAPI vkCreateDescriptorPool( VkDevice device, VkDescriptorPoolUsage poolUsage, @@ -2008,6 +2236,14 @@ ICD_EXPORT VkResult VKAPI vkCreateDescriptorPool( (struct nulldrv_desc_pool **) pDescriptorPool); } +ICD_EXPORT VkResult VKAPI vkDestroyDescriptorPool( + VkDevice device, + VkDescriptorPool descriptorPool) +{ + NULLDRV_LOG_FUNC; + return VK_SUCCESS; +} + ICD_EXPORT VkResult VKAPI vkResetDescriptorPool( VkDevice device, VkDescriptorPool descriptorPool) @@ -2069,6 +2305,13 @@ ICD_EXPORT VkResult VKAPI vkCreateFramebuffer( return nulldrv_fb_create(dev, info, (struct nulldrv_framebuffer **) fb_ret); } +ICD_EXPORT VkResult VKAPI vkDestroyFramebuffer( + VkDevice device, + VkFramebuffer framebuffer) +{ + NULLDRV_LOG_FUNC; + return VK_SUCCESS; +} ICD_EXPORT VkResult VKAPI vkCreateRenderPass( VkDevice device, @@ -2081,6 +2324,14 @@ ICD_EXPORT VkResult VKAPI vkCreateRenderPass( return nulldrv_render_pass_create(dev, info, (struct nulldrv_render_pass **) rp_ret); } +ICD_EXPORT VkResult VKAPI vkDestroyRenderPass( + VkDevice device, + VkRenderPass renderPass) +{ + NULLDRV_LOG_FUNC; + return VK_SUCCESS; +} + ICD_EXPORT void VKAPI vkCmdBeginRenderPass( VkCmdBuffer cmdBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, diff --git a/include/vk_debug_marker_lunarg.h b/include/vk_debug_marker_lunarg.h index d0fdfdc4..bce7aa3b 100644 --- a/include/vk_debug_marker_lunarg.h +++ b/include/vk_debug_marker_lunarg.h @@ -53,16 +53,16 @@ extern "C" #define VK_DEBUG_MARKER_ENUM_EXTEND(type, id) ((type)(VK_DEBUG_MARKER_EXTENSION_NUMBER * -1000 + (id))) -#define VK_OBJECT_INFO_TYPE_DBG_OBJECT_TAG VK_DEBUG_MARKER_ENUM_EXTEND(VkObjectInfoType, 0) -#define VK_OBJECT_INFO_TYPE_DBG_OBJECT_NAME VK_DEBUG_MARKER_ENUM_EXTEND(VkObjectInfoType, 1) +#define VK_OBJECT_INFO_TYPE_DBG_OBJECT_TAG VK_DEBUG_MARKER_ENUM_EXTEND(VkDbgObjectInfoType, 0) +#define VK_OBJECT_INFO_TYPE_DBG_OBJECT_NAME VK_DEBUG_MARKER_ENUM_EXTEND(VkDbgObjectInfoType, 1) // ------------------------------------------------------------------------------------------------ // API functions typedef void (VKAPI *PFN_vkCmdDbgMarkerBegin)(VkCmdBuffer cmdBuffer, const char* pMarker); typedef void (VKAPI *PFN_vkCmdDbgMarkerEnd)(VkCmdBuffer cmdBuffer); -typedef VkResult (VKAPI *PFN_vkDbgSetObjectTag)(VkDevice device, VkObjectType objType, VkObject object, size_t tagSize, const void* pTag); -typedef VkResult (VKAPI *PFN_vkDbgSetObjectName)(VkDevice device, VkObjectType objType, VkObject object, size_t nameSize, const char* pName); +typedef VkResult (VKAPI *PFN_vkDbgSetObjectTag)(VkDevice device, VkDbgObjectType objType, uint64_t object, size_t tagSize, const void* pTag); +typedef VkResult (VKAPI *PFN_vkDbgSetObjectName)(VkDevice device, VkDbgObjectType objType, uint64_t object, size_t nameSize, const char* pName); #ifdef VK_PROTOTYPES @@ -76,15 +76,15 @@ void VKAPI vkCmdDbgMarkerEnd( VkResult VKAPI vkDbgSetObjectTag( VkDevice device, - VkObjectType objType, - VkObject object, + VkDbgObjectType objType, + uint64_t object, size_t tagSize, const void* pTag); VkResult VKAPI vkDbgSetObjectName( VkDevice device, - VkObjectType objType, - VkObject object, + VkDbgObjectType objType, + uint64_t object, size_t nameSize, const char* pName); diff --git a/include/vk_debug_report_lunarg.h b/include/vk_debug_report_lunarg.h index 72770e08..8654a486 100644 --- a/include/vk_debug_report_lunarg.h +++ b/include/vk_debug_report_lunarg.h @@ -46,10 +46,47 @@ extern "C" * DebugReport Vulkan Extension API *************************************************************************************************** */ +typedef enum { + 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_ATTACHMENT_VIEW = 10, + VK_OBJECT_TYPE_SHADER_MODULE = 12, + VK_OBJECT_TYPE_SHADER = 13, + VK_OBJECT_TYPE_PIPELINE = 14, + VK_OBJECT_TYPE_PIPELINE_LAYOUT = 15, + VK_OBJECT_TYPE_SAMPLER = 16, + VK_OBJECT_TYPE_DESCRIPTOR_SET = 17, + VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT = 18, + VK_OBJECT_TYPE_DESCRIPTOR_POOL = 19, + VK_OBJECT_TYPE_DYNAMIC_VP_STATE = 20, + VK_OBJECT_TYPE_DYNAMIC_RS_STATE = 21, + VK_OBJECT_TYPE_DYNAMIC_CB_STATE = 22, + VK_OBJECT_TYPE_DYNAMIC_DS_STATE = 23, + VK_OBJECT_TYPE_FENCE = 24, + VK_OBJECT_TYPE_SEMAPHORE = 25, + VK_OBJECT_TYPE_EVENT = 26, + VK_OBJECT_TYPE_QUERY_POOL = 27, + VK_OBJECT_TYPE_FRAMEBUFFER = 28, + VK_OBJECT_TYPE_RENDER_PASS = 29, + VK_OBJECT_TYPE_PIPELINE_CACHE = 30, + VK_OBJECT_TYPE_SWAP_CHAIN_WSI = 31, + VK_OBJECT_TYPE_BEGIN_RANGE = VK_OBJECT_TYPE_INSTANCE, + VK_OBJECT_TYPE_END_RANGE = VK_OBJECT_TYPE_SWAP_CHAIN_WSI, + VK_OBJECT_TYPE_NUM = (VK_OBJECT_TYPE_SWAP_CHAIN_WSI - VK_OBJECT_TYPE_INSTANCE + 1), + VK_OBJECT_TYPE_MAX_ENUM = 0x7FFFFFFF +} VkDbgObjectType; #define DEBUG_REPORT_EXTENSION_NAME "DEBUG_REPORT" -VK_DEFINE_NONDISP_SUBCLASS_HANDLE(VkDbgMsgCallback, VkObject) +VK_DEFINE_NONDISP_HANDLE(VkDbgMsgCallback) // ------------------------------------------------------------------------------------------------ // Enumerations @@ -72,14 +109,14 @@ typedef enum _DEBUG_REPORT_ERROR #define VK_DEBUG_REPORT_ENUM_EXTEND(type, id) ((type)(VK_DEBUG_REPORT_EXTENSION_NUMBER * -1000 + (id))) -#define VK_OBJECT_TYPE_MSG_CALLBACK VK_DEBUG_REPORT_ENUM_EXTEND(VkObjectType, 0) +#define VK_OBJECT_TYPE_MSG_CALLBACK VK_DEBUG_REPORT_ENUM_EXTEND(VkDbgObjectType, 0) // ------------------------------------------------------------------------------------------------ // Vulkan function pointers typedef void (*PFN_vkDbgMsgCallback)( VkFlags msgFlags, - VkObjectType objType, - VkObject srcObject, + VkDbgObjectType objType, + uint64_t srcObject, size_t location, int32_t msgCode, const char* pLayerPrefix, @@ -91,9 +128,9 @@ typedef void (*PFN_vkDbgMsgCallback)( typedef VkResult (VKAPI *PFN_vkDbgCreateMsgCallback)(VkInstance instance, VkFlags msgFlags, const PFN_vkDbgMsgCallback pfnMsgCallback, const void* pUserData, VkDbgMsgCallback* pMsgCallback); typedef VkResult (VKAPI *PFN_vkDbgDestroyMsgCallback)(VkInstance instance, VkDbgMsgCallback msgCallback); -typedef void (VKAPI *PFN_vkDbgStringCallback)(VkFlags msgFlags, VkObjectType objType, VkObject srcObject, size_t location, int32_t msgCode, const char* pLayerPrefix, const char* pMsg, void* pUserData); -typedef void (VKAPI *PFN_vkDbgStdioCallback)(VkFlags msgFlags, VkObjectType objType, VkObject srcObject, size_t location, int32_t msgCode, const char* pLayerPrefix, const char* pMsg, void* pUserData); -typedef void (VKAPI *PFN_vkDbgBreakCallback)(VkFlags msgFlags, VkObjectType objType, VkObject srcObject, size_t location, int32_t msgCode, const char* pLayerPrefix, const char* pMsg, void* pUserData); +typedef void (VKAPI *PFN_vkDbgStringCallback)(VkFlags msgFlags, VkDbgObjectType objType, uint64_t srcObject, size_t location, int32_t msgCode, const char* pLayerPrefix, const char* pMsg, void* pUserData); +typedef void (VKAPI *PFN_vkDbgStdioCallback)(VkFlags msgFlags, VkDbgObjectType objType, uint64_t srcObject, size_t location, int32_t msgCode, const char* pLayerPrefix, const char* pMsg, void* pUserData); +typedef void (VKAPI *PFN_vkDbgBreakCallback)(VkFlags msgFlags, VkDbgObjectType objType, uint64_t srcObject, size_t location, int32_t msgCode, const char* pLayerPrefix, const char* pMsg, void* pUserData); #ifdef VK_PROTOTYPES @@ -112,8 +149,8 @@ VkResult VKAPI vkDbgDestroyMsgCallback( // DebugReport utility callback functions void VKAPI vkDbgStringCallback( VkFlags msgFlags, - VkObjectType objType, - VkObject srcObject, + VkDbgObjectType objType, + uint64_t srcObject, size_t location, int32_t msgCode, const char* pLayerPrefix, @@ -122,8 +159,8 @@ void VKAPI vkDbgStringCallback( void VKAPI vkDbgStdioCallback( VkFlags msgFlags, - VkObjectType objType, - VkObject srcObject, + VkDbgObjectType objType, + uint64_t srcObject, size_t location, int32_t msgCode, const char* pLayerPrefix, @@ -132,8 +169,8 @@ void VKAPI vkDbgStdioCallback( void VKAPI vkDbgBreakCallback( VkFlags msgFlags, - VkObjectType objType, - VkObject srcObject, + VkDbgObjectType objType, + uint64_t srcObject, size_t location, int32_t msgCode, const char* pLayerPrefix, diff --git a/include/vk_icd.h b/include/vk_icd.h index 8f1bfdb7..0f64c722 100644 --- a/include/vk_icd.h +++ b/include/vk_icd.h @@ -18,12 +18,12 @@ typedef union _VK_LOADER_DATA { void *loaderData; } VK_LOADER_DATA; -static inline void set_loader_magic_value(VkObject pNewObject) { +static inline void set_loader_magic_value(void* pNewObject) { VK_LOADER_DATA *loader_info = (VK_LOADER_DATA *) pNewObject; loader_info->loaderMagic = ICD_LOADER_MAGIC; } -static inline bool valid_loader_magic_value(VkObject pNewObject) { +static inline bool valid_loader_magic_value(void* pNewObject) { const VK_LOADER_DATA *loader_info = (VK_LOADER_DATA *) pNewObject; return loader_info->loaderMagic == ICD_LOADER_MAGIC; } diff --git a/include/vk_layer.h b/include/vk_layer.h index d9e4387f..8cb5f3fa 100644 --- a/include/vk_layer.h +++ b/include/vk_layer.h @@ -17,12 +17,13 @@ # define VK_LAYER_EXPORT #endif -typedef void * (*PFN_vkGPA)(VkObject obj, const char * pName); +typedef void * (*PFN_vkGPA)(void* obj, const char * pName); + typedef struct VkBaseLayerObject_ { PFN_vkGPA pGPA; - VkObject nextObject; - VkObject baseObject; + void* nextObject; + void* baseObject; } VkBaseLayerObject; typedef struct VkLayerDispatchTable_ @@ -40,34 +41,46 @@ typedef struct VkLayerDispatchTable_ PFN_vkUnmapMemory UnmapMemory; PFN_vkFlushMappedMemoryRanges FlushMappedMemoryRanges; PFN_vkInvalidateMappedMemoryRanges InvalidateMappedMemoryRanges; - PFN_vkDestroyObject DestroyObject; - PFN_vkGetObjectMemoryRequirements GetObjectMemoryRequirements; - PFN_vkBindObjectMemory BindObjectMemory; PFN_vkGetImageSparseMemoryRequirements GetImageSparseMemoryRequirements; + PFN_vkGetImageMemoryRequirements GetImageMemoryRequirements; + PFN_vkGetBufferMemoryRequirements GetBufferMemoryRequirements; + PFN_vkBindImageMemory BindImageMemory; + PFN_vkBindBufferMemory BindBufferMemory; PFN_vkQueueBindSparseBufferMemory QueueBindSparseBufferMemory; PFN_vkQueueBindSparseImageOpaqueMemory QueueBindSparseImageOpaqueMemory; PFN_vkQueueBindSparseImageMemory QueueBindSparseImageMemory; PFN_vkCreateFence CreateFence; + PFN_vkDestroyFence DestroyFence; PFN_vkGetFenceStatus GetFenceStatus; PFN_vkResetFences ResetFences; PFN_vkWaitForFences WaitForFences; PFN_vkCreateSemaphore CreateSemaphore; + PFN_vkDestroySemaphore DestroySemaphore; PFN_vkQueueSignalSemaphore QueueSignalSemaphore; PFN_vkQueueWaitSemaphore QueueWaitSemaphore; PFN_vkCreateEvent CreateEvent; + PFN_vkDestroyEvent DestroyEvent; PFN_vkGetEventStatus GetEventStatus; PFN_vkSetEvent SetEvent; PFN_vkResetEvent ResetEvent; PFN_vkCreateQueryPool CreateQueryPool; + PFN_vkDestroyQueryPool DestroyQueryPool; PFN_vkGetQueryPoolResults GetQueryPoolResults; PFN_vkCreateBuffer CreateBuffer; + PFN_vkDestroyBuffer DestroyBuffer; PFN_vkCreateBufferView CreateBufferView; + PFN_vkDestroyBufferView DestroyBufferView; PFN_vkCreateImage CreateImage; + PFN_vkDestroyImage DestroyImage; PFN_vkGetImageSubresourceLayout GetImageSubresourceLayout; PFN_vkCreateImageView CreateImageView; + PFN_vkDestroyImageView DestroyImageView; PFN_vkCreateAttachmentView CreateAttachmentView; + PFN_vkDestroyAttachmentView DestroyAttachmentView; PFN_vkCreateShaderModule CreateShaderModule; + PFN_vkDestroyShaderModule DestroyShaderModule; PFN_vkCreateShader CreateShader; + PFN_vkDestroyShader DestroyShader; PFN_vkCreatePipelineCache CreatePipelineCache; PFN_vkDestroyPipelineCache DestroyPipelineCache; PFN_vkGetPipelineCacheSize GetPipelineCacheSize; @@ -75,23 +88,36 @@ typedef struct VkLayerDispatchTable_ PFN_vkMergePipelineCaches MergePipelineCaches; PFN_vkCreateGraphicsPipelines CreateGraphicsPipelines; PFN_vkCreateComputePipelines CreateComputePipelines; + PFN_vkDestroyPipeline DestroyPipeline; PFN_vkCreatePipelineLayout CreatePipelineLayout; + PFN_vkDestroyPipelineLayout DestroyPipelineLayout; PFN_vkCreateSampler CreateSampler; + PFN_vkDestroySampler DestroySampler; PFN_vkCreateDescriptorSetLayout CreateDescriptorSetLayout; + PFN_vkDestroyDescriptorSetLayout DestroyDescriptorSetLayout; PFN_vkCreateDescriptorPool CreateDescriptorPool; + PFN_vkDestroyDescriptorPool DestroyDescriptorPool; PFN_vkResetDescriptorPool ResetDescriptorPool; PFN_vkAllocDescriptorSets AllocDescriptorSets; PFN_vkUpdateDescriptorSets UpdateDescriptorSets; PFN_vkCreateDynamicViewportState CreateDynamicViewportState; + PFN_vkDestroyDynamicViewportState DestroyDynamicViewportState; PFN_vkCreateDynamicRasterState CreateDynamicRasterState; + PFN_vkDestroyDynamicRasterState DestroyDynamicRasterState; PFN_vkCreateDynamicColorBlendState CreateDynamicColorBlendState; + PFN_vkDestroyDynamicColorBlendState DestroyDynamicColorBlendState; PFN_vkCreateDynamicDepthStencilState CreateDynamicDepthStencilState; + PFN_vkDestroyDynamicDepthStencilState DestroyDynamicDepthStencilState; PFN_vkCreateCommandBuffer CreateCommandBuffer; + PFN_vkDestroyCommandBuffer DestroyCommandBuffer; PFN_vkBeginCommandBuffer BeginCommandBuffer; PFN_vkEndCommandBuffer EndCommandBuffer; PFN_vkResetCommandBuffer ResetCommandBuffer; PFN_vkCmdBindPipeline CmdBindPipeline; - PFN_vkCmdBindDynamicStateObject CmdBindDynamicStateObject; + PFN_vkCmdBindDynamicViewportState CmdBindDynamicViewportState; + PFN_vkCmdBindDynamicRasterState CmdBindDynamicRasterState; + PFN_vkCmdBindDynamicColorBlendState CmdBindDynamicColorBlendState; + PFN_vkCmdBindDynamicDepthStencilState CmdBindDynamicDepthStencilState; PFN_vkCmdBindDescriptorSets CmdBindDescriptorSets; PFN_vkCmdBindVertexBuffers CmdBindVertexBuffers; PFN_vkCmdBindIndexBuffer CmdBindIndexBuffer; @@ -123,7 +149,9 @@ typedef struct VkLayerDispatchTable_ PFN_vkCmdWriteTimestamp CmdWriteTimestamp; PFN_vkCmdCopyQueryPoolResults CmdCopyQueryPoolResults; PFN_vkCreateFramebuffer CreateFramebuffer; + PFN_vkDestroyFramebuffer DestroyFramebuffer; PFN_vkCreateRenderPass CreateRenderPass; + PFN_vkDestroyRenderPass DestroyRenderPass; PFN_vkCmdBeginRenderPass CmdBeginRenderPass; PFN_vkCmdNextSubpass CmdNextSubpass; PFN_vkCmdEndRenderPass CmdEndRenderPass; diff --git a/include/vk_wsi_lunarg.h b/include/vk_wsi_lunarg.h index bbd887da..4a869623 100644 --- a/include/vk_wsi_lunarg.h +++ b/include/vk_wsi_lunarg.h @@ -41,8 +41,8 @@ extern "C" // ------------------------------------------------------------------------------------------------ // Objects -VK_DEFINE_DISP_SUBCLASS_HANDLE(VkDisplayWSI, VkObject) -VK_DEFINE_DISP_SUBCLASS_HANDLE(VkSwapChainWSI, VkObject) +VK_DEFINE_HANDLE(VkDisplayWSI) +VK_DEFINE_HANDLE(VkSwapChainWSI) // ------------------------------------------------------------------------------------------------ // Enumeration constants @@ -59,14 +59,6 @@ VK_DEFINE_DISP_SUBCLASS_HANDLE(VkSwapChainWSI, VkObject) // Extend VkImageLayout enum with extension specific constants #define VK_IMAGE_LAYOUT_PRESENT_SOURCE_WSI VK_WSI_LUNARG_ENUM(VkImageLayout, 0) -// Extend VkObjectType enum for new objects -#define VK_OBJECT_TYPE_DISPLAY_WSI VK_WSI_LUNARG_ENUM(VkObjectType, 0) -#define VK_OBJECT_TYPE_SWAP_CHAIN_WSI VK_WSI_LUNARG_ENUM(VkObjectType, 1) - -// ------------------------------------------------------------------------------------------------ -// Enumerations - - typedef enum VkSwapChainInfoTypeWSI_ { // Info type for vkGetSwapChainInfo() diff --git a/include/vulkan.h b/include/vulkan.h index d3344434..072ebb4e 100644 --- a/include/vulkan.h +++ b/include/vulkan.h @@ -46,58 +46,66 @@ extern "C" *************************************************************************************************** */ -#if defined (__cplusplus) && (VK_UINTPTRLEAST64_MAX == UINTPTR_MAX) - #define VK_TYPE_SAFE_COMPATIBLE_HANDLES 1 -#endif - -#if defined(VK_TYPE_SAFE_COMPATIBLE_HANDLES) && !defined(VK_DISABLE_TYPE_SAFE_HANDLES) - #define VK_DEFINE_PTR_HANDLE(_obj) struct _obj##_T { char _dummy; }; typedef _obj##_T* _obj; - #define VK_DEFINE_PTR_SUBCLASS_HANDLE(_obj, _base) struct _obj##_T : public _base##_T {}; typedef _obj##_T* _obj; - - #define VK_DEFINE_BASE_HANDLE(_obj) VK_DEFINE_PTR_HANDLE(_obj) - #define VK_DEFINE_DISP_SUBCLASS_HANDLE(_obj, _base) VK_DEFINE_PTR_SUBCLASS_HANDLE(_obj, _base) - #define VK_DEFINE_NONDISP_SUBCLASS_HANDLE(_obj, _base) VK_DEFINE_PTR_SUBCLASS_HANDLE(_obj, _base) +#define VK_DEFINE_HANDLE(obj) typedef struct obj##_T* obj; + + +#if defined(__cplusplus) + #if (_MSC_VER >= 1800 || __cplusplus >= 201103L) + // The bool operator only works if there are no implicit conversions from an obj to + // a bool-compatible type, which can then be used to unintentially violate type safety. + // C++11 and above supports the "explicit" keyword on conversion operators to stop this + // from happening. Otherwise users of C++ below C++11 won't get direct access to evaluating + // the object handle as a bool in expressions like: + // if (obj) vkDestroy(obj); + #define VK_NONDISP_HANDLE_OPERATOR_BOOL() explicit operator bool() const { return handle != 0; } + #else + #define VK_NONDISP_HANDLE_OPERATOR_BOOL() + #endif + #define VK_DEFINE_NONDISP_HANDLE(obj) \ + struct obj { \ + obj() { } \ + obj(uint64_t x) { handle = x; } \ + obj& operator =(uint64_t x) { handle = x; return *this; } \ + bool operator==(const obj& other) const { return handle == other.handle; } \ + bool operator!=(const obj& other) const { return handle != other.handle; } \ + bool operator!() const { return !handle; } \ + VK_NONDISP_HANDLE_OPERATOR_BOOL() \ + uint64_t handle; \ + }; #else - #define VK_DEFINE_BASE_HANDLE(_obj) typedef VkUintPtrLeast64 _obj; - #define VK_DEFINE_DISP_SUBCLASS_HANDLE(_obj, _base) typedef uintptr_t _obj; - #define VK_DEFINE_NONDISP_SUBCLASS_HANDLE(_obj, _base) typedef VkUintPtrLeast64 _obj; + #define VK_DEFINE_NONDISP_HANDLE(obj) typedef struct obj##_T { uint64_t handle; } obj; #endif -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(VkAttachmentView, VkNonDispatchable) -VK_DEFINE_NONDISP_SUBCLASS_HANDLE(VkShaderModule, VkNonDispatchable) -VK_DEFINE_NONDISP_SUBCLASS_HANDLE(VkShader, VkNonDispatchable) -VK_DEFINE_NONDISP_SUBCLASS_HANDLE(VkRenderPass, VkNonDispatchable) -VK_DEFINE_NONDISP_SUBCLASS_HANDLE(VkPipeline, VkNonDispatchable) -VK_DEFINE_NONDISP_SUBCLASS_HANDLE(VkPipelineCache, 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_HANDLE(VkInstance) +VK_DEFINE_HANDLE(VkPhysicalDevice) +VK_DEFINE_HANDLE(VkDevice) +VK_DEFINE_HANDLE(VkQueue) +VK_DEFINE_HANDLE(VkCmdBuffer) +VK_DEFINE_NONDISP_HANDLE(VkFence) +VK_DEFINE_NONDISP_HANDLE(VkDeviceMemory) +VK_DEFINE_NONDISP_HANDLE(VkBuffer) +VK_DEFINE_NONDISP_HANDLE(VkImage) +VK_DEFINE_NONDISP_HANDLE(VkSemaphore) +VK_DEFINE_NONDISP_HANDLE(VkEvent) +VK_DEFINE_NONDISP_HANDLE(VkQueryPool) +VK_DEFINE_NONDISP_HANDLE(VkBufferView) +VK_DEFINE_NONDISP_HANDLE(VkImageView) +VK_DEFINE_NONDISP_HANDLE(VkAttachmentView) +VK_DEFINE_NONDISP_HANDLE(VkShaderModule) +VK_DEFINE_NONDISP_HANDLE(VkShader) +VK_DEFINE_NONDISP_HANDLE(VkPipelineCache) +VK_DEFINE_NONDISP_HANDLE(VkPipelineLayout) +VK_DEFINE_NONDISP_HANDLE(VkPipeline) +VK_DEFINE_NONDISP_HANDLE(VkDescriptorSetLayout) +VK_DEFINE_NONDISP_HANDLE(VkSampler) +VK_DEFINE_NONDISP_HANDLE(VkDescriptorPool) +VK_DEFINE_NONDISP_HANDLE(VkDescriptorSet) +VK_DEFINE_NONDISP_HANDLE(VkDynamicViewportState) +VK_DEFINE_NONDISP_HANDLE(VkDynamicRasterState) +VK_DEFINE_NONDISP_HANDLE(VkDynamicColorBlendState) +VK_DEFINE_NONDISP_HANDLE(VkDynamicDepthStencilState) +VK_DEFINE_NONDISP_HANDLE(VkRenderPass) +VK_DEFINE_NONDISP_HANDLE(VkFramebuffer) #define VK_MAX_PHYSICAL_DEVICE_NAME 256 #define VK_MAX_EXTENSION_NAME 256 @@ -307,16 +315,6 @@ typedef enum VkPipelineBindPoint_ VK_ENUM_RANGE(PIPELINE_BIND_POINT, COMPUTE, GRAPHICS) } VkPipelineBindPoint; -typedef enum VkStateBindPoint_ -{ - 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_ENUM_RANGE(STATE_BIND_POINT, VIEWPORT, DEPTH_STENCIL) -} VkStateBindPoint; - typedef enum VkPrimitiveTopology_ { VK_PRIMITIVE_TOPOLOGY_POINT_LIST = 0x00000000, @@ -754,10 +752,10 @@ typedef enum VkStructureType_ VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO = 8, VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO = 9, VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO = 10, - VK_STRUCTURE_TYPE_DYNAMIC_VP_STATE_CREATE_INFO = 11, - VK_STRUCTURE_TYPE_DYNAMIC_RS_STATE_CREATE_INFO = 12, - VK_STRUCTURE_TYPE_DYNAMIC_CB_STATE_CREATE_INFO = 13, - VK_STRUCTURE_TYPE_DYNAMIC_DS_STATE_CREATE_INFO = 14, + VK_STRUCTURE_TYPE_DYNAMIC_VIEWPORT_STATE_CREATE_INFO = 11, + VK_STRUCTURE_TYPE_DYNAMIC_RASTER_STATE_CREATE_INFO = 12, + VK_STRUCTURE_TYPE_DYNAMIC_COLOR_BLEND_STATE_CREATE_INFO = 13, + VK_STRUCTURE_TYPE_DYNAMIC_DEPTH_STENCIL_STATE_CREATE_INFO = 14, VK_STRUCTURE_TYPE_CMD_BUFFER_CREATE_INFO = 15, VK_STRUCTURE_TYPE_EVENT_CREATE_INFO = 16, VK_STRUCTURE_TYPE_FENCE_CREATE_INFO = 17, @@ -799,48 +797,6 @@ typedef enum VkStructureType_ VK_ENUM_RANGE(STRUCTURE_TYPE, APPLICATION_INFO, RENDER_PASS_BEGIN_INFO) } VkStructureType; -// Object type enumerant -typedef 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_ATTACHMENT_VIEW = 10, - - VK_OBJECT_TYPE_SHADER_MODULE = 12, - VK_OBJECT_TYPE_SHADER = 13, - VK_OBJECT_TYPE_PIPELINE = 14, - VK_OBJECT_TYPE_PIPELINE_LAYOUT = 15, - VK_OBJECT_TYPE_SAMPLER = 16, - VK_OBJECT_TYPE_DESCRIPTOR_SET = 17, - VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT = 18, - VK_OBJECT_TYPE_DESCRIPTOR_POOL = 19, - VK_OBJECT_TYPE_DYNAMIC_VP_STATE = 20, - VK_OBJECT_TYPE_DYNAMIC_RS_STATE = 21, - VK_OBJECT_TYPE_DYNAMIC_CB_STATE = 22, - VK_OBJECT_TYPE_DYNAMIC_DS_STATE = 23, - VK_OBJECT_TYPE_FENCE = 24, - VK_OBJECT_TYPE_SEMAPHORE = 25, - VK_OBJECT_TYPE_EVENT = 26, - VK_OBJECT_TYPE_QUERY_POOL = 27, - VK_OBJECT_TYPE_FRAMEBUFFER = 28, - VK_OBJECT_TYPE_PIPELINE_CACHE = 29, - VK_OBJECT_TYPE_RENDER_PASS = 30, - - // Valid ranges for core Vulkan: - VK_OBJECT_TYPE_BEGIN_RANGE = VK_OBJECT_TYPE_INSTANCE, - VK_OBJECT_TYPE_END_RANGE = VK_OBJECT_TYPE_RENDER_PASS, - VK_NUM_OBJECT_TYPE = (VK_OBJECT_TYPE_END_RANGE - VK_OBJECT_TYPE_BEGIN_RANGE + 1), - VK_MAX_ENUM(VkObjectType) -} VkObjectType; - // ------------------------------------------------------------------------------------------------ // Error and return codes @@ -2071,16 +2027,16 @@ typedef struct VkSamplerCreateInfo_ VkBorderColor borderColor; } VkSamplerCreateInfo; -typedef struct VkDynamicVpStateCreateInfo_ +typedef struct VkDynamicViewportStateCreateInfo_ { VkStructureType sType; // Must be VK_STRUCTURE_TYPE_DYNAMIC_VP_STATE_CREATE_INFO const void* pNext; // Pointer to next structure uint32_t viewportAndScissorCount; // number of entries in pViewports and pScissors const VkViewport* pViewports; const VkRect2D* pScissors; -} VkDynamicVpStateCreateInfo; +} VkDynamicViewportStateCreateInfo; -typedef struct VkDynamicRsStateCreateInfo_ +typedef struct VkDynamicRasterStateCreateInfo_ { VkStructureType sType; // Must be VK_STRUCTURE_TYPE_DYNAMIC_RS_STATE_CREATE_INFO const void* pNext; // Pointer to next structure @@ -2088,16 +2044,16 @@ typedef struct VkDynamicRsStateCreateInfo_ float depthBiasClamp; float slopeScaledDepthBias; float lineWidth; // optional (GL45) - Width of lines -} VkDynamicRsStateCreateInfo; +} VkDynamicRasterStateCreateInfo; -typedef struct VkDynamicCbStateCreateInfo_ +typedef struct VkDynamicColorBlendStateCreateInfo_ { VkStructureType sType; // Must be VK_STRUCTURE_TYPE_DYNAMIC_CB_STATE_CREATE_INFO const void* pNext; // Pointer to next structure float blendConst[4]; -} VkDynamicCbStateCreateInfo; +} VkDynamicColorBlendStateCreateInfo; -typedef struct VkDynamicDsStateCreateInfo_ +typedef struct VkDynamicDepthStencilStateCreateInfo_ { VkStructureType sType; // Must be VK_STRUCTURE_TYPE_DYNAMIC_DS_STATE_CREATE_INFO const void* pNext; // Pointer to next structure @@ -2107,7 +2063,7 @@ typedef struct VkDynamicDsStateCreateInfo_ uint32_t stencilWriteMask; uint32_t stencilFrontRef; uint32_t stencilBackRef; -} VkDynamicDsStateCreateInfo; +} VkDynamicDepthStencilStateCreateInfo; typedef struct VkCmdBufferCreateInfo_ { @@ -2330,35 +2286,47 @@ typedef VkResult (VKAPI *PFN_vkMapMemory)(VkDevice device, VkDeviceMemory mem, V typedef VkResult (VKAPI *PFN_vkUnmapMemory)(VkDevice device, VkDeviceMemory mem); typedef VkResult (VKAPI *PFN_vkFlushMappedMemoryRanges)(VkDevice device, uint32_t memRangeCount, const VkMappedMemoryRange* pMemRanges); typedef VkResult (VKAPI *PFN_vkInvalidateMappedMemoryRanges)(VkDevice device, uint32_t memRangeCount, const VkMappedMemoryRange* pMemRanges); -typedef VkResult (VKAPI *PFN_vkDestroyObject)(VkDevice device, VkObjectType objType, VkObject object); -typedef VkResult (VKAPI *PFN_vkGetObjectMemoryRequirements)(VkDevice device, VkObjectType objType, VkObject object, VkMemoryRequirements* pMemoryRequirements); -typedef VkResult (VKAPI *PFN_vkBindObjectMemory)(VkDevice device, VkObjectType objType, VkObject object, VkDeviceMemory mem, VkDeviceSize offset); +typedef VkResult (VKAPI *PFN_vkBindBufferMemory)(VkDevice device, VkBuffer buffer, VkDeviceMemory mem, VkDeviceSize memOffset); +typedef VkResult (VKAPI *PFN_vkBindImageMemory)(VkDevice device, VkImage image, VkDeviceMemory mem, VkDeviceSize memOffset); +typedef VkResult (VKAPI *PFN_vkGetBufferMemoryRequirements)(VkDevice device, VkBuffer buffer, VkMemoryRequirements* pMemoryRequirements); +typedef VkResult (VKAPI *PFN_vkGetImageMemoryRequirements)(VkDevice device, VkImage image, VkMemoryRequirements* pMemoryRequirements); typedef VkResult (VKAPI *PFN_vkGetImageSparseMemoryRequirements)(VkDevice device, VkImage image, uint32_t* pNumRequirements, VkSparseImageMemoryRequirements* pSparseMemoryRequirements); typedef VkResult (VKAPI *PFN_vkGetPhysicalDeviceSparseImageFormatProperties)(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, uint32_t samples, VkImageUsageFlags usage, VkImageTiling tiling, uint32_t* pNumProperties, VkSparseImageFormatProperties* pProperties); typedef VkResult (VKAPI *PFN_vkQueueBindSparseBufferMemory)(VkQueue queue, VkBuffer buffer, uint32_t numBindings, const VkSparseMemoryBindInfo* pBindInfo); typedef VkResult (VKAPI *PFN_vkQueueBindSparseImageOpaqueMemory)(VkQueue queue, VkImage image, uint32_t numBindings, const VkSparseMemoryBindInfo* pBindInfo); typedef VkResult (VKAPI *PFN_vkQueueBindSparseImageMemory)(VkQueue queue, VkImage image, uint32_t numBindings, const VkSparseImageMemoryBindInfo* pBindInfo); typedef VkResult (VKAPI *PFN_vkCreateFence)(VkDevice device, const VkFenceCreateInfo* pCreateInfo, VkFence* pFence); +typedef VkResult (VKAPI *PFN_vkDestroyFence)(VkDevice device, VkFence fence); typedef VkResult (VKAPI *PFN_vkResetFences)(VkDevice device, uint32_t fenceCount, const VkFence* pFences); typedef VkResult (VKAPI *PFN_vkGetFenceStatus)(VkDevice device, VkFence fence); typedef VkResult (VKAPI *PFN_vkWaitForFences)(VkDevice device, uint32_t fenceCount, const VkFence* pFences, VkBool32 waitAll, uint64_t timeout); typedef VkResult (VKAPI *PFN_vkCreateSemaphore)(VkDevice device, const VkSemaphoreCreateInfo* pCreateInfo, VkSemaphore* pSemaphore); +typedef VkResult (VKAPI *PFN_vkDestroySemaphore)(VkDevice device, VkSemaphore semaphore); typedef VkResult (VKAPI *PFN_vkQueueSignalSemaphore)(VkQueue queue, VkSemaphore semaphore); typedef VkResult (VKAPI *PFN_vkQueueWaitSemaphore)(VkQueue queue, VkSemaphore semaphore); typedef VkResult (VKAPI *PFN_vkCreateEvent)(VkDevice device, const VkEventCreateInfo* pCreateInfo, VkEvent* pEvent); +typedef VkResult (VKAPI *PFN_vkDestroyEvent)(VkDevice device, VkEvent event); typedef VkResult (VKAPI *PFN_vkGetEventStatus)(VkDevice device, VkEvent event); typedef VkResult (VKAPI *PFN_vkSetEvent)(VkDevice device, VkEvent event); typedef VkResult (VKAPI *PFN_vkResetEvent)(VkDevice device, VkEvent event); typedef VkResult (VKAPI *PFN_vkCreateQueryPool)(VkDevice device, const VkQueryPoolCreateInfo* pCreateInfo, VkQueryPool* pQueryPool); +typedef VkResult (VKAPI *PFN_vkDestroyQueryPool)(VkDevice device, VkQueryPool queryPool); typedef VkResult (VKAPI *PFN_vkGetQueryPoolResults)(VkDevice device, VkQueryPool queryPool, uint32_t startQuery, uint32_t queryCount, size_t* pDataSize, void* pData, VkQueryResultFlags flags); typedef VkResult (VKAPI *PFN_vkCreateBuffer)(VkDevice device, const VkBufferCreateInfo* pCreateInfo, VkBuffer* pBuffer); +typedef VkResult (VKAPI *PFN_vkDestroyBuffer)(VkDevice device, VkBuffer buffer); typedef VkResult (VKAPI *PFN_vkCreateBufferView)(VkDevice device, const VkBufferViewCreateInfo* pCreateInfo, VkBufferView* pView); +typedef VkResult (VKAPI *PFN_vkDestroyBufferView)(VkDevice device, VkBufferView bufferView); typedef VkResult (VKAPI *PFN_vkCreateImage)(VkDevice device, const VkImageCreateInfo* pCreateInfo, VkImage* pImage); +typedef VkResult (VKAPI *PFN_vkDestroyImage)(VkDevice device, VkImage image); typedef VkResult (VKAPI *PFN_vkGetImageSubresourceLayout)(VkDevice device, VkImage image, const VkImageSubresource* pSubresource, VkSubresourceLayout* pLayout); typedef VkResult (VKAPI *PFN_vkCreateImageView)(VkDevice device, const VkImageViewCreateInfo* pCreateInfo, VkImageView* pView); +typedef VkResult (VKAPI *PFN_vkDestroyImageView)(VkDevice device, VkImageView imageView); typedef VkResult (VKAPI *PFN_vkCreateAttachmentView)(VkDevice device, const VkAttachmentViewCreateInfo* pCreateInfo, VkAttachmentView* pView); +typedef VkResult (VKAPI *PFN_vkDestroyAttachmentView)(VkDevice device, VkAttachmentView attachmentView); typedef VkResult (VKAPI *PFN_vkCreateShaderModule)(VkDevice device, const VkShaderModuleCreateInfo* pCreateInfo, VkShaderModule* pShaderModule); +typedef VkResult (VKAPI *PFN_vkDestroyShaderModule)(VkDevice device, VkShaderModule shaderModule); typedef VkResult (VKAPI *PFN_vkCreateShader)(VkDevice device, const VkShaderCreateInfo* pCreateInfo, VkShader* pShader); +typedef VkResult (VKAPI *PFN_vkDestroyShader)(VkDevice device, VkShader shader); typedef VkResult (VKAPI *PFN_vkCreatePipelineCache)(VkDevice device, const VkPipelineCacheCreateInfo* pCreateInfo, VkPipelineCache* pPipelineCache); typedef VkResult (VKAPI *PFN_vkDestroyPipelineCache)(VkDevice device, VkPipelineCache pipelineCache); typedef size_t (VKAPI *PFN_vkGetPipelineCacheSize)(VkDevice device, VkPipelineCache pipelineCache); @@ -2366,23 +2334,36 @@ typedef VkResult (VKAPI *PFN_vkGetPipelineCacheData)(VkDevice device, VkPipeline typedef VkResult (VKAPI *PFN_vkMergePipelineCaches)(VkDevice device, VkPipelineCache destCache, uint32_t srcCacheCount, const VkPipelineCache* pSrcCaches); typedef VkResult (VKAPI *PFN_vkCreateGraphicsPipelines)(VkDevice device, VkPipelineCache pipelineCache, uint32_t count, const VkGraphicsPipelineCreateInfo* pCreateInfos, VkPipeline* pPipelines); typedef VkResult (VKAPI *PFN_vkCreateComputePipelines)(VkDevice device, VkPipelineCache pipelineCache, uint32_t count, const VkComputePipelineCreateInfo* pCreateInfos, VkPipeline* pPipelines); +typedef VkResult (VKAPI *PFN_vkDestroyPipeline)(VkDevice device, VkPipeline pipeline); typedef VkResult (VKAPI *PFN_vkCreatePipelineLayout)(VkDevice device, const VkPipelineLayoutCreateInfo* pCreateInfo, VkPipelineLayout* pPipelineLayout); +typedef VkResult (VKAPI *PFN_vkDestroyPipelineLayout)(VkDevice device, VkPipelineLayout pipelineLayout); typedef VkResult (VKAPI *PFN_vkCreateSampler)(VkDevice device, const VkSamplerCreateInfo* pCreateInfo, VkSampler* pSampler); +typedef VkResult (VKAPI *PFN_vkDestroySampler)(VkDevice device, VkSampler sampler); typedef VkResult (VKAPI *PFN_vkCreateDescriptorSetLayout)(VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, VkDescriptorSetLayout* pSetLayout); +typedef VkResult (VKAPI *PFN_vkDestroyDescriptorSetLayout)(VkDevice device, VkDescriptorSetLayout descriptorSetLayout); typedef VkResult (VKAPI *PFN_vkCreateDescriptorPool)(VkDevice device, VkDescriptorPoolUsage poolUsage, uint32_t maxSets, const VkDescriptorPoolCreateInfo* pCreateInfo, VkDescriptorPool* pDescriptorPool); +typedef VkResult (VKAPI *PFN_vkDestroyDescriptorPool)(VkDevice device, VkDescriptorPool descriptorPool); typedef VkResult (VKAPI *PFN_vkResetDescriptorPool)(VkDevice device, VkDescriptorPool descriptorPool); typedef VkResult (VKAPI *PFN_vkAllocDescriptorSets)(VkDevice device, VkDescriptorPool descriptorPool, VkDescriptorSetUsage setUsage, uint32_t count, const VkDescriptorSetLayout* pSetLayouts, VkDescriptorSet* pDescriptorSets, uint32_t* pCount); typedef VkResult (VKAPI *PFN_vkUpdateDescriptorSets)(VkDevice device, uint32_t writeCount, const VkWriteDescriptorSet* pDescriptorWrites, uint32_t copyCount, const VkCopyDescriptorSet* pDescriptorCopies); -typedef VkResult (VKAPI *PFN_vkCreateDynamicViewportState)(VkDevice device, const VkDynamicVpStateCreateInfo* pCreateInfo, VkDynamicVpState* pState); -typedef VkResult (VKAPI *PFN_vkCreateDynamicRasterState)(VkDevice device, const VkDynamicRsStateCreateInfo* pCreateInfo, VkDynamicRsState* pState); -typedef VkResult (VKAPI *PFN_vkCreateDynamicColorBlendState)(VkDevice device, const VkDynamicCbStateCreateInfo* pCreateInfo, VkDynamicCbState* pState); -typedef VkResult (VKAPI *PFN_vkCreateDynamicDepthStencilState)(VkDevice device, const VkDynamicDsStateCreateInfo* pCreateInfo, VkDynamicDsState* pState); +typedef VkResult (VKAPI *PFN_vkCreateDynamicViewportState)(VkDevice device, const VkDynamicViewportStateCreateInfo* pCreateInfo, VkDynamicViewportState* pState); +typedef VkResult (VKAPI *PFN_vkDestroyDynamicViewportState)(VkDevice device, VkDynamicViewportState dynamicViewportState); +typedef VkResult (VKAPI *PFN_vkCreateDynamicRasterState)(VkDevice device, const VkDynamicRasterStateCreateInfo* pCreateInfo, VkDynamicRasterState* pState); +typedef VkResult (VKAPI *PFN_vkDestroyDynamicRasterState)(VkDevice device, VkDynamicRasterState dynamicRasterState); +typedef VkResult (VKAPI *PFN_vkCreateDynamicColorBlendState)(VkDevice device, const VkDynamicColorBlendStateCreateInfo* pCreateInfo, VkDynamicColorBlendState* pState); +typedef VkResult (VKAPI *PFN_vkDestroyDynamicColorBlendState)(VkDevice device, VkDynamicColorBlendState dynamicColorBlendState); +typedef VkResult (VKAPI *PFN_vkCreateDynamicDepthStencilState)(VkDevice device, const VkDynamicDepthStencilStateCreateInfo* pCreateInfo, VkDynamicDepthStencilState* pState); +typedef VkResult (VKAPI *PFN_vkDestroyDynamicDepthStencilState)(VkDevice device, VkDynamicDepthStencilState dynamicDepthStencilState); typedef VkResult (VKAPI *PFN_vkCreateCommandBuffer)(VkDevice device, const VkCmdBufferCreateInfo* pCreateInfo, VkCmdBuffer* pCmdBuffer); +typedef VkResult (VKAPI *PFN_vkDestroyCommandBuffer)(VkDevice device, VkCmdBuffer commandBuffer); typedef VkResult (VKAPI *PFN_vkBeginCommandBuffer)(VkCmdBuffer cmdBuffer, const VkCmdBufferBeginInfo* pBeginInfo); typedef VkResult (VKAPI *PFN_vkEndCommandBuffer)(VkCmdBuffer cmdBuffer); typedef VkResult (VKAPI *PFN_vkResetCommandBuffer)(VkCmdBuffer cmdBuffer); typedef void (VKAPI *PFN_vkCmdBindPipeline)(VkCmdBuffer cmdBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline); -typedef void (VKAPI *PFN_vkCmdBindDynamicStateObject)(VkCmdBuffer cmdBuffer, VkStateBindPoint stateBindPoint, VkDynamicStateObject state); +typedef void (VKAPI *PFN_vkCmdBindDynamicViewportState)(VkCmdBuffer cmdBuffer, VkDynamicViewportState dynamicViewportState); +typedef void (VKAPI *PFN_vkCmdBindDynamicRasterState)(VkCmdBuffer cmdBuffer, VkDynamicRasterState dynamicRasterState); +typedef void (VKAPI *PFN_vkCmdBindDynamicColorBlendState)(VkCmdBuffer cmdBuffer, VkDynamicColorBlendState dynamicColorBlendState); +typedef void (VKAPI *PFN_vkCmdBindDynamicDepthStencilState)(VkCmdBuffer cmdBuffer, VkDynamicDepthStencilState dynamicDepthStencilState); typedef void (VKAPI *PFN_vkCmdBindDescriptorSets)(VkCmdBuffer cmdBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, uint32_t firstSet, uint32_t setCount, const VkDescriptorSet* pDescriptorSets, uint32_t dynamicOffsetCount, const uint32_t* pDynamicOffsets); typedef void (VKAPI *PFN_vkCmdBindIndexBuffer)(VkCmdBuffer cmdBuffer, VkBuffer buffer, VkDeviceSize offset, VkIndexType indexType); typedef void (VKAPI *PFN_vkCmdBindVertexBuffers)(VkCmdBuffer cmdBuffer, uint32_t startBinding, uint32_t bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets); @@ -2414,7 +2395,9 @@ typedef void (VKAPI *PFN_vkCmdResetQueryPool)(VkCmdBuffer cmdBuffer, VkQuery typedef void (VKAPI *PFN_vkCmdWriteTimestamp)(VkCmdBuffer cmdBuffer, VkTimestampType timestampType, VkBuffer destBuffer, VkDeviceSize destOffset); typedef void (VKAPI *PFN_vkCmdCopyQueryPoolResults)(VkCmdBuffer cmdBuffer, VkQueryPool queryPool, uint32_t startQuery, uint32_t queryCount, VkBuffer destBuffer, VkDeviceSize destOffset, VkDeviceSize destStride, VkQueryResultFlags flags); typedef VkResult (VKAPI *PFN_vkCreateFramebuffer)(VkDevice device, const VkFramebufferCreateInfo* pCreateInfo, VkFramebuffer* pFramebuffer); +typedef VkResult (VKAPI *PFN_vkDestroyFramebuffer)(VkDevice device, VkFramebuffer framebuffer); typedef VkResult (VKAPI *PFN_vkCreateRenderPass)(VkDevice device, const VkRenderPassCreateInfo* pCreateInfo, VkRenderPass* pRenderPass); +typedef VkResult (VKAPI *PFN_vkDestroyRenderPass)(VkDevice device, VkRenderPass renderPass); typedef void (VKAPI *PFN_vkCmdBeginRenderPass)(VkCmdBuffer cmdBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, VkRenderPassContents contents); typedef void (VKAPI *PFN_vkCmdNextSubpass)(VkCmdBuffer cmdBuffer, VkRenderPassContents contents); typedef void (VKAPI *PFN_vkCmdEndRenderPass)(VkCmdBuffer cmdBuffer); @@ -2562,26 +2545,28 @@ VkResult VKAPI vkInvalidateMappedMemoryRanges( uint32_t memRangeCount, const VkMappedMemoryRange* pMemRanges); -// Generic API object functions +// Memory management API functions -VkResult VKAPI vkDestroyObject( +VkResult VKAPI vkBindBufferMemory( VkDevice device, - VkObjectType objType, - VkObject object); - -// Memory management API functions + VkBuffer buffer, + VkDeviceMemory mem, + VkDeviceSize memOffset); -VkResult VKAPI vkBindObjectMemory( +VkResult VKAPI vkBindImageMemory( VkDevice device, - VkObjectType objType, - VkObject object, + VkImage image, VkDeviceMemory mem, VkDeviceSize memOffset); -VkResult VKAPI vkGetObjectMemoryRequirements( +VkResult VKAPI vkGetBufferMemoryRequirements( VkDevice device, - VkObjectType objType, - VkObject object, + VkBuffer buffer, + VkMemoryRequirements* pMemoryRequirements); + +VkResult VKAPI vkGetImageMemoryRequirements( + VkDevice device, + VkImage image, VkMemoryRequirements* pMemoryRequirements); VkResult VKAPI vkGetImageSparseMemoryRequirements( @@ -2625,6 +2610,10 @@ VkResult VKAPI vkCreateFence( const VkFenceCreateInfo* pCreateInfo, VkFence* pFence); +VkResult VKAPI vkDestroyFence( + VkDevice device, + VkFence fence); + VkResult VKAPI vkResetFences( VkDevice device, uint32_t fenceCount, @@ -2648,6 +2637,10 @@ VkResult VKAPI vkCreateSemaphore( const VkSemaphoreCreateInfo* pCreateInfo, VkSemaphore* pSemaphore); +VkResult VKAPI vkDestroySemaphore( + VkDevice device, + VkSemaphore semaphore); + VkResult VKAPI vkQueueSignalSemaphore( VkQueue queue, VkSemaphore semaphore); @@ -2663,6 +2656,10 @@ VkResult VKAPI vkCreateEvent( const VkEventCreateInfo* pCreateInfo, VkEvent* pEvent); +VkResult VKAPI vkDestroyEvent( + VkDevice device, + VkEvent event); + VkResult VKAPI vkGetEventStatus( VkDevice device, VkEvent event); @@ -2682,6 +2679,10 @@ VkResult VKAPI vkCreateQueryPool( const VkQueryPoolCreateInfo* pCreateInfo, VkQueryPool* pQueryPool); +VkResult VKAPI vkDestroyQueryPool( + VkDevice device, + VkQueryPool queryPool); + VkResult VKAPI vkGetQueryPoolResults( VkDevice device, VkQueryPool queryPool, @@ -2698,6 +2699,10 @@ VkResult VKAPI vkCreateBuffer( const VkBufferCreateInfo* pCreateInfo, VkBuffer* pBuffer); +VkResult VKAPI vkDestroyBuffer( + VkDevice device, + VkBuffer buffer); + // Buffer view functions VkResult VKAPI vkCreateBufferView( @@ -2705,6 +2710,10 @@ VkResult VKAPI vkCreateBufferView( const VkBufferViewCreateInfo* pCreateInfo, VkBufferView* pView); +VkResult VKAPI vkDestroyBufferView( + VkDevice device, + VkBufferView bufferView); + // Image functions VkResult VKAPI vkCreateImage( @@ -2712,6 +2721,10 @@ VkResult VKAPI vkCreateImage( const VkImageCreateInfo* pCreateInfo, VkImage* pImage); +VkResult VKAPI vkDestroyImage( + VkDevice device, + VkImage image); + VkResult VKAPI vkGetImageSubresourceLayout( VkDevice device, VkImage image, @@ -2725,11 +2738,19 @@ VkResult VKAPI vkCreateImageView( const VkImageViewCreateInfo* pCreateInfo, VkImageView* pView); +VkResult VKAPI vkDestroyImageView( + VkDevice device, + VkImageView imageView); + VkResult VKAPI vkCreateAttachmentView( VkDevice device, const VkAttachmentViewCreateInfo* pCreateInfo, VkAttachmentView* pView); +VkResult VKAPI vkDestroyAttachmentView( + VkDevice device, + VkAttachmentView AttachmentView); + // Shader functions VkResult VKAPI vkCreateShaderModule( @@ -2737,11 +2758,19 @@ VkResult VKAPI vkCreateShaderModule( const VkShaderModuleCreateInfo* pCreateInfo, VkShaderModule* pShaderModule); +VkResult VKAPI vkDestroyShaderModule( + VkDevice device, + VkShaderModule shaderModule); + VkResult VKAPI vkCreateShader( VkDevice device, const VkShaderCreateInfo* pCreateInfo, VkShader* pShader); +VkResult VKAPI vkDestroyShader( + VkDevice device, + VkShader shader); + // Pipeline functions VkResult VKAPI vkCreatePipelineCache( VkDevice device, @@ -2750,7 +2779,7 @@ VkResult VKAPI vkCreatePipelineCache( VkResult VKAPI vkDestroyPipelineCache( VkDevice device, - VkPipelineCache pipelineCache); + VkPipelineCache pipeline); size_t VKAPI vkGetPipelineCacheSize( VkDevice device, @@ -2781,6 +2810,10 @@ VkResult VKAPI vkCreateComputePipelines( const VkComputePipelineCreateInfo* pCreateInfos, VkPipeline* pPipelines); +VkResult VKAPI vkDestroyPipeline( + VkDevice device, + VkPipeline pipeline); + // Pipeline layout functions VkResult VKAPI vkCreatePipelineLayout( @@ -2788,6 +2821,10 @@ VkResult VKAPI vkCreatePipelineLayout( const VkPipelineLayoutCreateInfo* pCreateInfo, VkPipelineLayout* pPipelineLayout); +VkResult VKAPI vkDestroyPipelineLayout( + VkDevice device, + VkPipelineLayout pipelineLayout); + // Sampler functions VkResult VKAPI vkCreateSampler( @@ -2795,6 +2832,10 @@ VkResult VKAPI vkCreateSampler( const VkSamplerCreateInfo* pCreateInfo, VkSampler* pSampler); +VkResult VKAPI vkDestroySampler( + VkDevice device, + VkSampler sampler); + // Descriptor set functions VkResult VKAPI vkCreateDescriptorSetLayout( @@ -2802,6 +2843,10 @@ VkResult VKAPI vkCreateDescriptorSetLayout( const VkDescriptorSetLayoutCreateInfo* pCreateInfo, VkDescriptorSetLayout* pSetLayout); +VkResult VKAPI vkDestroyDescriptorSetLayout( + VkDevice device, + VkDescriptorSetLayout descriptorSetLayout); + VkResult VKAPI vkCreateDescriptorPool( VkDevice device, VkDescriptorPoolUsage poolUsage, @@ -2809,6 +2854,10 @@ VkResult VKAPI vkCreateDescriptorPool( const VkDescriptorPoolCreateInfo* pCreateInfo, VkDescriptorPool* pDescriptorPool); +VkResult VKAPI vkDestroyDescriptorPool( + VkDevice device, + VkDescriptorPool descriptorPool); + VkResult VKAPI vkResetDescriptorPool( VkDevice device, VkDescriptorPool descriptorPool); @@ -2833,23 +2882,39 @@ VkResult VKAPI vkUpdateDescriptorSets( VkResult VKAPI vkCreateDynamicViewportState( VkDevice device, - const VkDynamicVpStateCreateInfo* pCreateInfo, - VkDynamicVpState* pState); + const VkDynamicViewportStateCreateInfo* pCreateInfo, + VkDynamicViewportState* pState); + +VkResult VKAPI vkDestroyDynamicViewportState( + VkDevice device, + VkDynamicViewportState dynamicViewportState); VkResult VKAPI vkCreateDynamicRasterState( VkDevice device, - const VkDynamicRsStateCreateInfo* pCreateInfo, - VkDynamicRsState* pState); + const VkDynamicRasterStateCreateInfo* pCreateInfo, + VkDynamicRasterState* pState); + +VkResult VKAPI vkDestroyDynamicRasterState( + VkDevice device, + VkDynamicRasterState dynamicRasterState); VkResult VKAPI vkCreateDynamicColorBlendState( VkDevice device, - const VkDynamicCbStateCreateInfo* pCreateInfo, - VkDynamicCbState* pState); + const VkDynamicColorBlendStateCreateInfo* pCreateInfo, + VkDynamicColorBlendState* pState); + +VkResult VKAPI vkDestroyDynamicColorBlendState( + VkDevice device, + VkDynamicColorBlendState dynamicColorBlendState); VkResult VKAPI vkCreateDynamicDepthStencilState( VkDevice device, - const VkDynamicDsStateCreateInfo* pCreateInfo, - VkDynamicDsState* pState); + const VkDynamicDepthStencilStateCreateInfo* pCreateInfo, + VkDynamicDepthStencilState* pState); + +VkResult VKAPI vkDestroyDynamicDepthStencilState( + VkDevice device, + VkDynamicDepthStencilState dynamicDepthStencilState); // Command buffer functions @@ -2858,6 +2923,10 @@ VkResult VKAPI vkCreateCommandBuffer( const VkCmdBufferCreateInfo* pCreateInfo, VkCmdBuffer* pCmdBuffer); +VkResult VKAPI vkDestroyCommandBuffer( + VkDevice device, + VkCmdBuffer commandBuffer); + VkResult VKAPI vkBeginCommandBuffer( VkCmdBuffer cmdBuffer, const VkCmdBufferBeginInfo* pBeginInfo); @@ -2875,10 +2944,21 @@ void VKAPI vkCmdBindPipeline( VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline); -void VKAPI vkCmdBindDynamicStateObject( - VkCmdBuffer cmdBuffer, - VkStateBindPoint stateBindPoint, - VkDynamicStateObject dynamicState); +void VKAPI vkCmdBindDynamicViewportState( + VkCmdBuffer cmdBuffer, + VkDynamicViewportState dynamicViewportState); + +void VKAPI vkCmdBindDynamicRasterState( + VkCmdBuffer cmdBuffer, + VkDynamicRasterState dynamicRasterState); + +void VKAPI vkCmdBindDynamicColorBlendState( + VkCmdBuffer cmdBuffer, + VkDynamicColorBlendState dynamicColorBlendState); + +void VKAPI vkCmdBindDynamicDepthStencilState( + VkCmdBuffer cmdBuffer, + VkDynamicDepthStencilState dynamicDepthStencilState); void VKAPI vkCmdBindDescriptorSets( VkCmdBuffer cmdBuffer, @@ -3107,6 +3187,10 @@ VkResult VKAPI vkCreateFramebuffer( const VkFramebufferCreateInfo* pCreateInfo, VkFramebuffer* pFramebuffer); +VkResult VKAPI vkDestroyFramebuffer( + VkDevice device, + VkFramebuffer framebuffer); + VkResult VKAPI vkCreateRenderPass( VkDevice device, const VkRenderPassCreateInfo* pCreateInfo, @@ -3121,6 +3205,10 @@ void VKAPI vkCmdNextSubpass( VkCmdBuffer cmdBuffer, VkRenderPassContents contents); +VkResult VKAPI vkDestroyRenderPass( + VkDevice device, + VkRenderPass renderPass); + void VKAPI vkCmdEndRenderPass( VkCmdBuffer cmdBuffer); diff --git a/layers/vk_layer_logging.h b/layers/vk_layer_logging.h index be0a09ce..765e5d06 100644 --- a/layers/vk_layer_logging.h +++ b/layers/vk_layer_logging.h @@ -223,8 +223,8 @@ static inline void* debug_report_get_instance_proc_addr( static inline void log_msg( debug_report_data *debug_data, VkFlags msgFlags, - VkObjectType objectType, - VkObject srcObject, + VkDbgObjectType objectType, + uint64_t srcObject, size_t location, int32_t msgCode, const char* pLayerPrefix, @@ -248,8 +248,8 @@ static inline void log_msg( static inline void VKAPI log_callback( VkFlags msgFlags, - VkObjectType objType, - VkObject srcObject, + VkDbgObjectType objType, + uint64_t srcObject, size_t location, int32_t msgCode, const char* pLayerPrefix, diff --git a/layers/vk_layer_table.h b/layers/vk_layer_table.h index 24f0bd4e..27784033 100644 --- a/layers/vk_layer_table.h +++ b/layers/vk_layer_table.h @@ -34,18 +34,18 @@ VkLayerInstanceDispatchTable * initInstanceTable(instance_table_map &map, const typedef void *dispatch_key; -static inline dispatch_key get_dispatch_key(VkObject object) +static inline dispatch_key get_dispatch_key(void* object) { return (dispatch_key) *(VkLayerDispatchTable **) object; } -VkLayerDispatchTable *device_dispatch_table(VkObject object); +VkLayerDispatchTable *device_dispatch_table(void* object); -VkLayerInstanceDispatchTable *instance_dispatch_table(VkObject object); +VkLayerInstanceDispatchTable *instance_dispatch_table(void* object); -VkLayerDispatchTable *get_dispatch_table(device_table_map &map, VkObject object); +VkLayerDispatchTable *get_dispatch_table(device_table_map &map, void* object); -VkLayerInstanceDispatchTable *get_dispatch_table(instance_table_map &map, VkObject object); +VkLayerInstanceDispatchTable *get_dispatch_table(instance_table_map &map, void* object); void destroy_device_dispatch_table(dispatch_key key); void destroy_instance_dispatch_table(dispatch_key key); diff --git a/loader/debug_report.c b/loader/debug_report.c index 89340e6b..4d6314a9 100644 --- a/loader/debug_report.c +++ b/loader/debug_report.c @@ -108,7 +108,7 @@ static VkResult debug_report_DbgDestroyMsgCallback( VkResult result = inst->disp->DbgDestroyMsgCallback(instance, msg_callback); while (pTrav) { - if (pTrav->msgCallback == msg_callback) { + if (pTrav->msgCallback.handle == msg_callback.handle) { pPrev->pNext = pTrav->pNext; if (inst->DbgFunctionHead == pTrav) inst->DbgFunctionHead = pTrav->pNext; @@ -128,6 +128,7 @@ static VkResult debug_report_DbgDestroyMsgCallback( * This is the instance chain terminator function * for DbgCreateMsgCallback */ + VkResult loader_DbgCreateMsgCallback( VkInstance instance, VkFlags msgFlags, @@ -180,7 +181,7 @@ VkResult loader_DbgCreateMsgCallback( if (icd) { storage_idx = 0; for (icd = inst->icds; icd; icd = icd->next) { - if (icd_info[storage_idx]) { + if (icd_info[storage_idx].handle) { icd->DbgDestroyMsgCallback( icd->instance, icd_info[storage_idx]); @@ -191,7 +192,7 @@ VkResult loader_DbgCreateMsgCallback( return res; } - *pMsgCallback = (VkDbgMsgCallback) icd_info; + *(VkDbgMsgCallback **)pMsgCallback = icd_info; return VK_SUCCESS; } @@ -221,10 +222,10 @@ VkResult loader_DbgDestroyMsgCallback( if (inst == VK_NULL_HANDLE) return VK_ERROR_INVALID_HANDLE; - icd_info = (VkDbgMsgCallback *) msgCallback; + icd_info = *(VkDbgMsgCallback **) &msgCallback; storage_idx = 0; for (icd = inst->icds; icd; icd = icd->next) { - if (icd_info[storage_idx]) { + if (icd_info[storage_idx].handle) { icd->DbgDestroyMsgCallback( icd->instance, icd_info[storage_idx]); @@ -267,8 +268,8 @@ static void print_msg_flags(VkFlags msgFlags, char *msg_flags) // DebugReport utility callback functions static void VKAPI StringCallback( VkFlags msgFlags, - VkObjectType objType, - VkObject srcObject, + VkDbgObjectType objType, + uint64_t srcObject, size_t location, int32_t msgCode, const char* pLayerPrefix, @@ -302,8 +303,8 @@ static void VKAPI StringCallback( static void VKAPI StdioCallback( VkFlags msgFlags, - VkObjectType objType, - VkObject srcObject, + VkDbgObjectType objType, + uint64_t srcObject, size_t location, int32_t msgCode, const char* pLayerPrefix, @@ -320,8 +321,8 @@ static void VKAPI StdioCallback( static void VKAPI BreakCallback( VkFlags msgFlags, - VkObjectType objType, - VkObject srcObject, + VkDbgObjectType objType, + uint64_t srcObject, size_t location, int32_t msgCode, const char* pLayerPrefix, diff --git a/loader/gpa_helper.h b/loader/gpa_helper.h index 6da2fcc4..04f97dae 100644 --- a/loader/gpa_helper.h +++ b/loader/gpa_helper.h @@ -91,12 +91,14 @@ static inline void* globalGetProcAddr(const char *name) return (void*) vkFlushMappedMemoryRanges; if (!strcmp(name, "InvalidateMappedMemoryRanges")) return (void*) vkInvalidateMappedMemoryRanges; - if (!strcmp(name, "DestroyObject")) - return (void*) vkDestroyObject; - if (!strcmp(name, "GetObjectMemoryRequirements")) - return (void*) vkGetObjectMemoryRequirements; - if (!strcmp(name, "BindObjectMemory")) - return (void*) vkBindObjectMemory; + if (!strcmp(name, "GetImageMemoryRequirements")) + return (void*) vkGetImageMemoryRequirements; + if (!strcmp(name, "GetBufferMemoryRequirements")) + return (void*) vkGetBufferMemoryRequirements; + if (!strcmp(name, "BindImageMemory")) + return (void*) vkBindImageMemory; + if (!strcmp(name, "BindBufferMemory")) + return (void*) vkBindBufferMemory; if (!strcmp(name, "QueueBindSparseBufferMemory")) return (void*) vkQueueBindSparseBufferMemory; if (!strcmp(name, "QueueBindSparseImageMemory")) @@ -107,6 +109,8 @@ static inline void* globalGetProcAddr(const char *name) return (void*) vkGetImageSparseMemoryRequirements; if (!strcmp(name, "CreateFence")) return (void*) vkCreateFence; + if (!strcmp(name, "DestroyFence")) + return (void*) vkDestroyFence; if (!strcmp(name, "ResetFences")) return (void*) vkResetFences; if (!strcmp(name, "GetFenceStatus")) @@ -115,12 +119,16 @@ static inline void* globalGetProcAddr(const char *name) return (void*) vkWaitForFences; if (!strcmp(name, "CreateSemaphore")) return (void*) vkCreateSemaphore; + if (!strcmp(name, "DestroySemaphore")) + return (void*) vkDestroySemaphore; if (!strcmp(name, "QueueSignalSemaphore")) return (void*) vkQueueSignalSemaphore; if (!strcmp(name, "QueueWaitSemaphore")) return (void*) vkQueueWaitSemaphore; if (!strcmp(name, "CreateEvent")) return (void*) vkCreateEvent; + if (!strcmp(name, "DestroyEvent")) + return (void*) vkDestroyEvent; if (!strcmp(name, "GetEventStatus")) return (void*) vkGetEventStatus; if (!strcmp(name, "SetEvent")) @@ -129,24 +137,40 @@ static inline void* globalGetProcAddr(const char *name) return (void*) vkResetEvent; if (!strcmp(name, "CreateQueryPool")) return (void*) vkCreateQueryPool; + if (!strcmp(name, "DestroyQueryPool")) + return (void*) vkDestroyQueryPool; if (!strcmp(name, "GetQueryPoolResults")) return (void*) vkGetQueryPoolResults; if (!strcmp(name, "CreateBuffer")) return (void*) vkCreateBuffer; + if (!strcmp(name, "DestroyBuffer")) + return (void*) vkDestroyBuffer; if (!strcmp(name, "CreateBufferView")) return (void*) vkCreateBufferView; + if (!strcmp(name, "DestroyBufferView")) + return (void*) vkDestroyBufferView; if (!strcmp(name, "CreateImage")) return (void*) vkCreateImage; + if (!strcmp(name, "DestroyImage")) + return (void*) vkDestroyImage; if (!strcmp(name, "GetImageSubresourceLayout")) return (void*) vkGetImageSubresourceLayout; if (!strcmp(name, "CreateImageView")) return (void*) vkCreateImageView; + if (!strcmp(name, "DestroyImageView")) + return (void*) vkDestroyImageView; if (!strcmp(name, "CreateAttachmentView")) return (void*) vkCreateAttachmentView; + if (!strcmp(name, "DestroyAttachmentView")) + return (void*) vkDestroyAttachmentView; if (!strcmp(name, "CreateShaderModule")) return (void*) vkCreateShaderModule; + if (!strcmp(name, "DestroyShaderModule")) + return (void*) vkDestroyShaderModule; if (!strcmp(name, "CreateShader")) return (void*) vkCreateShader; + if (!strcmp(name, "DestroyShader")) + return (void*) vkDestroyShader; if (!strcmp(name, "CreatePipelineCache")) return (void*) vkCreatePipelineCache; if (!strcmp(name, "DestroyPipelineCache")) @@ -161,14 +185,24 @@ static inline void* globalGetProcAddr(const char *name) return (void*) vkCreateGraphicsPipelines; if (!strcmp(name, "CreateComputePipelines")) return (void*) vkCreateComputePipelines; + if (!strcmp(name, "DestroyPipeline")) + return (void*) vkDestroyPipeline; if (!strcmp(name, "CreatePipelineLayout")) return (void*) vkCreatePipelineLayout; + if (!strcmp(name, "DestroyPipelineLayout")) + return (void*) vkDestroyPipelineLayout; if (!strcmp(name, "CreateSampler")) return (void*) vkCreateSampler; + if (!strcmp(name, "DestroySampler")) + return (void*) vkDestroySampler; if (!strcmp(name, "CreateDescriptorSetLayout")) return (void*) vkCreateDescriptorSetLayout; + if (!strcmp(name, "DestroyDescriptorSetLayout")) + return (void*) vkDestroyDescriptorSetLayout; if (!strcmp(name, "CreateDescriptorPool")) return (void*) vkCreateDescriptorPool; + if (!strcmp(name, "DestroyDescriptorPool")) + return (void*) vkDestroyDescriptorPool; if (!strcmp(name, "ResetDescriptorPool")) return (void*) vkResetDescriptorPool; if (!strcmp(name, "AllocDescriptorSets")) @@ -177,14 +211,24 @@ static inline void* globalGetProcAddr(const char *name) return (void*) vkUpdateDescriptorSets; if (!strcmp(name, "CreateDynamicViewportState")) return (void*) vkCreateDynamicViewportState; + if (!strcmp(name, "DestroyDynamicViewportState")) + return (void*) vkDestroyDynamicViewportState; if (!strcmp(name, "CreateDynamicRasterState")) return (void*) vkCreateDynamicRasterState; + if (!strcmp(name, "DestroyDynamicRasterState")) + return (void*) vkDestroyDynamicRasterState; if (!strcmp(name, "CreateDynamicColorBlendState")) return (void*) vkCreateDynamicColorBlendState; + if (!strcmp(name, "DestroyDynamicColorBlendState")) + return (void*) vkDestroyDynamicColorBlendState; if (!strcmp(name, "CreateDynamicDepthStencilState")) return (void*) vkCreateDynamicDepthStencilState; + if (!strcmp(name, "DestroyDynamicDepthStencilState")) + return (void*) vkDestroyDynamicDepthStencilState; if (!strcmp(name, "CreateCommandBuffer")) return (void*) vkCreateCommandBuffer; + if (!strcmp(name, "DestroyCommandBuffer")) + return (void*) vkDestroyCommandBuffer; if (!strcmp(name, "BeginCommandBuffer")) return (void*) vkBeginCommandBuffer; if (!strcmp(name, "EndCommandBuffer")) @@ -193,8 +237,14 @@ static inline void* globalGetProcAddr(const char *name) return (void*) vkResetCommandBuffer; if (!strcmp(name, "CmdBindPipeline")) return (void*) vkCmdBindPipeline; - if (!strcmp(name, "CmdBindDynamicStateObject")) - return (void*) vkCmdBindDynamicStateObject; + if (!strcmp(name, "CmdBindDynamicViewportState")) + return (void*) vkCmdBindDynamicViewportState; + if (!strcmp(name, "CmdBindDynamicRasterState")) + return (void*) vkCmdBindDynamicRasterState; + if (!strcmp(name, "CmdBindDynamicColorBlendState")) + return (void*) vkCmdBindDynamicColorBlendState; + if (!strcmp(name, "CmdBindDynamicDepthStencilState")) + return (void*) vkCmdBindDynamicDepthStencilState; if (!strcmp(name, "CmdBindDescriptorSets")) return (void*) vkCmdBindDescriptorSets; if (!strcmp(name, "CmdBindVertexBuffers")) @@ -257,8 +307,12 @@ static inline void* globalGetProcAddr(const char *name) return (void*) vkCmdCopyQueryPoolResults; if (!strcmp(name, "CreateFramebuffer")) return (void*) vkCreateFramebuffer; + if (!strcmp(name, "DestroyFramebuffer")) + return (void*) vkDestroyFramebuffer; if (!strcmp(name, "CreateRenderPass")) return (void*) vkCreateRenderPass; + if (!strcmp(name, "DestroyRenderPass")) + return (void*) vkDestroyRenderPass; if (!strcmp(name, "CmdBeginRenderPass")) return (void*) vkCmdBeginRenderPass; if (!strcmp(name, "CmdNextSubpass")) diff --git a/loader/loader.c b/loader/loader.c index 06384b64..c9333de3 100644 --- a/loader/loader.c +++ b/loader/loader.c @@ -951,10 +951,10 @@ static struct loader_icd *loader_icd_add( static void loader_scanned_icd_add(const char *filename) { loader_platform_dl_handle handle; - void *fp_create_inst; - void *fp_get_global_ext_props; - void *fp_get_device_ext_props; - PFN_vkGPA fp_get_proc_addr; + PFN_vkCreateInstance fp_create_inst; + PFN_vkGetGlobalExtensionProperties fp_get_global_ext_props; + PFN_vkGetPhysicalDeviceExtensionProperties fp_get_device_ext_props; + PFN_vkGetDeviceProcAddr fp_get_proc_addr; struct loader_scanned_icds *new_node; // Used to call: dlopen(filename, RTLD_LAZY); @@ -2060,8 +2060,8 @@ uint32_t loader_activate_instance_layers(struct loader_instance *inst) } // NOTE inst is unwrapped at this point in time - VkObject baseObj = (VkObject) inst; - VkObject nextObj = (VkObject) inst; + void* baseObj = (void*) inst; + void* nextObj = (void*) inst; VkBaseLayerObject *nextInstObj; PFN_vkGetInstanceProcAddr nextGPA = loader_gpa_instance_internal; @@ -2097,10 +2097,10 @@ uint32_t loader_activate_instance_layers(struct loader_instance *inst) * the given baseObject. */ nextInstObj = (wrappedInstance + layer_idx); - nextInstObj->pGPA = nextGPA; + nextInstObj->pGPA = (PFN_vkGPA) nextGPA; nextInstObj->baseObject = baseObj; nextInstObj->nextObject = nextObj; - nextObj = (VkObject) nextInstObj; + nextObj = (void*) nextInstObj; char funcStr[256]; snprintf(funcStr, 256, "%sGetInstanceProcAddr", layer_prop->info.layerName); @@ -2217,8 +2217,8 @@ static uint32_t loader_activate_device_layers( } /* activate any layer libraries */ - VkObject nextObj = (VkObject) device; - VkObject baseObj = nextObj; + void* nextObj = (void*) device; + void* baseObj = nextObj; VkBaseLayerObject *nextGpuObj; PFN_vkGetDeviceProcAddr nextGPA = loader_GetDeviceChainProcAddr; VkBaseLayerObject *wrappedGpus; @@ -2238,10 +2238,10 @@ static uint32_t loader_activate_device_layers( loader_platform_dl_handle lib_handle; nextGpuObj = (wrappedGpus + i); - nextGpuObj->pGPA = nextGPA; + nextGpuObj->pGPA = (PFN_vkGPA)nextGPA; nextGpuObj->baseObject = baseObj; nextGpuObj->nextObject = nextObj; - nextObj = (VkObject) nextGpuObj; + nextObj = (void*) nextGpuObj; char funcStr[256]; snprintf(funcStr, 256, "%sGetDeviceProcAddr", layer_prop->info.layerName); @@ -2261,7 +2261,7 @@ static uint32_t loader_activate_device_layers( } loader_init_device_dispatch_table(&dev->loader_dispatch, nextGPA, - (VkPhysicalDevice) nextObj, (VkPhysicalDevice) baseObj); + (VkDevice) nextObj, (VkDevice) baseObj); free(wrappedGpus); return dev->activated_layer_list.count; @@ -2824,7 +2824,7 @@ VkResult loader_CreateDevice( } PFN_vkGetDeviceProcAddr get_proc_addr = icd->GetDeviceProcAddr; loader_init_device_dispatch_table(&dev->loader_dispatch, get_proc_addr, - icd->gpus[gpu_index], icd->gpus[gpu_index]); + (VkDevice) icd->gpus[gpu_index], (VkDevice) icd->gpus[gpu_index]); dev->loader_dispatch.CreateDevice = scratch_vkCreateDevice; loader_init_dispatch(*pDevice, &dev->loader_dispatch); diff --git a/loader/loader.h b/loader/loader.h index 24c0d3ba..d5395d6e 100644 --- a/loader/loader.h +++ b/loader/loader.h @@ -298,22 +298,22 @@ static inline struct loader_instance *loader_instance(VkInstance instance) { return (struct loader_instance *) instance; } -static inline void loader_set_dispatch(VkObject obj, const void *data) +static inline void loader_set_dispatch(void* obj, const void *data) { *((const void **) obj) = data; } -static inline VkLayerDispatchTable *loader_get_dispatch(const VkObject obj) +static inline VkLayerDispatchTable *loader_get_dispatch(const void* obj) { return *((VkLayerDispatchTable **) obj); } -static inline VkLayerInstanceDispatchTable *loader_get_instance_dispatch(const VkObject obj) +static inline VkLayerInstanceDispatchTable *loader_get_instance_dispatch(const void* obj) { return *((VkLayerInstanceDispatchTable **) obj); } -static inline void loader_init_dispatch(VkObject obj, const void *data) +static inline void loader_init_dispatch(void* obj, const void *data) { #ifdef DEBUG assert(valid_loader_magic_value(obj) && diff --git a/loader/table_ops.h b/loader/table_ops.h index d6ddbfce..df8c2b4a 100644 --- a/loader/table_ops.h +++ b/loader/table_ops.h @@ -49,34 +49,46 @@ static inline void loader_init_device_dispatch_table(VkLayerDispatchTable *table table->UnmapMemory = (PFN_vkUnmapMemory) gpa(dev, "vkUnmapMemory"); table->FlushMappedMemoryRanges = (PFN_vkFlushMappedMemoryRanges) gpa(dev, "vkFlushMappedMemoryRanges"); table->InvalidateMappedMemoryRanges = (PFN_vkInvalidateMappedMemoryRanges) gpa(dev, "vkInvalidateMappedMemoryRanges"); - table->DestroyObject = (PFN_vkDestroyObject) gpa(dev, "vkDestroyObject"); - table->GetObjectMemoryRequirements = (PFN_vkGetObjectMemoryRequirements) gpa(dev, "vkGetObjectMemoryRequirements"); - table->BindObjectMemory = (PFN_vkBindObjectMemory) gpa(dev, "vkBindObjectMemory"); + table->GetBufferMemoryRequirements = (PFN_vkGetBufferMemoryRequirements) gpa(dev, "vkGetBufferMemoryRequirements"); + table->GetImageMemoryRequirements = (PFN_vkGetImageMemoryRequirements) gpa(dev, "vkGetImageMemoryRequirements"); + table->BindBufferMemory = (PFN_vkBindBufferMemory) gpa(dev, "vkBindBufferMemory"); + table->BindImageMemory = (PFN_vkBindImageMemory) gpa(dev, "vkBindImageMemory"); table->QueueBindSparseBufferMemory = (PFN_vkQueueBindSparseBufferMemory) gpa(dev, "vkQueueBindSparseBufferMemory"); table->QueueBindSparseImageMemory = (PFN_vkQueueBindSparseImageMemory) gpa(dev, "vkQueueBindSparseImageMemory"); table->QueueBindSparseImageOpaqueMemory = (PFN_vkQueueBindSparseImageOpaqueMemory) gpa(dev, "vkQueueBindSparseImageOpaqueMemory"); table->GetImageSparseMemoryRequirements = (PFN_vkGetImageSparseMemoryRequirements) gpa(dev, "vkGetImageSparseMemoryRequirements"); table->CreateFence = (PFN_vkCreateFence) gpa(dev, "vkCreateFence"); + table->DestroyFence = (PFN_vkDestroyFence) gpa(dev, "vkDestroyFence"); table->ResetFences = (PFN_vkResetFences) gpa(dev, "vkResetFences"); table->GetFenceStatus = (PFN_vkGetFenceStatus) gpa(dev, "vkGetFenceStatus"); table->WaitForFences = (PFN_vkWaitForFences) gpa(dev, "vkWaitForFences"); table->CreateSemaphore = (PFN_vkCreateSemaphore) gpa(dev, "vkCreateSemaphore"); + table->DestroySemaphore = (PFN_vkDestroySemaphore) gpa(dev, "vkDestroySemaphore"); table->QueueSignalSemaphore = (PFN_vkQueueSignalSemaphore) gpa(dev, "vkQueueSignalSemaphore"); table->QueueWaitSemaphore = (PFN_vkQueueWaitSemaphore) gpa(dev, "vkQueueWaitSemaphore"); table->CreateEvent = (PFN_vkCreateEvent) gpa(dev, "vkCreateEvent"); + table->DestroyEvent = (PFN_vkDestroyEvent) gpa(dev, "vkDestroyEvent"); table->GetEventStatus = (PFN_vkGetEventStatus) gpa(dev, "vkGetEventStatus"); table->SetEvent = (PFN_vkSetEvent) gpa(dev, "vkSetEvent"); table->ResetEvent = (PFN_vkResetEvent) gpa(dev, "vkResetEvent"); table->CreateQueryPool = (PFN_vkCreateQueryPool) gpa(dev, "vkCreateQueryPool"); + table->DestroyQueryPool = (PFN_vkDestroyQueryPool) gpa(dev, "vkDestroyQueryPool"); table->GetQueryPoolResults = (PFN_vkGetQueryPoolResults) gpa(dev, "vkGetQueryPoolResults"); table->CreateBuffer = (PFN_vkCreateBuffer) gpa(dev, "vkCreateBuffer"); + table->DestroyBuffer = (PFN_vkDestroyBuffer) gpa(dev, "vkDestroyBuffer"); table->CreateBufferView = (PFN_vkCreateBufferView) gpa(dev, "vkCreateBufferView"); + table->DestroyBufferView = (PFN_vkDestroyBufferView) gpa(dev, "vkDestroyBufferView"); table->CreateImage = (PFN_vkCreateImage) gpa(dev, "vkCreateImage"); + table->DestroyImage = (PFN_vkDestroyImage) gpa(dev, "vkDestroyImage"); table->GetImageSubresourceLayout = (PFN_vkGetImageSubresourceLayout) gpa(dev, "vkGetImageSubresourceLayout"); table->CreateImageView = (PFN_vkCreateImageView) gpa(dev, "vkCreateImageView"); + table->DestroyImageView = (PFN_vkDestroyImageView) gpa(dev, "vkDestroyImageView"); table->CreateAttachmentView = (PFN_vkCreateAttachmentView) gpa(dev, "vkCreateAttachmentView"); + table->DestroyAttachmentView = (PFN_vkDestroyAttachmentView) gpa(dev, "vkDestroyAttachmentView"); table->CreateShaderModule = (PFN_vkCreateShaderModule) gpa(dev, "vkCreateShaderModule"); + table->DestroyShaderModule = (PFN_vkDestroyShaderModule) gpa(dev, "vkDestroyShaderModule"); table->CreateShader = (PFN_vkCreateShader) gpa(dev, "vkCreateShader"); + table->DestroyShader = (PFN_vkDestroyShader) gpa(dev, "vkDestroyShader"); table->CreatePipelineCache = (PFN_vkCreatePipelineCache) gpa(dev, "vkCreatePipelineCache"); table->DestroyPipelineCache = (PFN_vkDestroyPipelineCache) gpa(dev, "vkDestroyPipelineCache"); table->GetPipelineCacheSize = (PFN_vkGetPipelineCacheSize) gpa(dev, "vkGetPipelineCacheSize"); @@ -84,23 +96,36 @@ static inline void loader_init_device_dispatch_table(VkLayerDispatchTable *table table->MergePipelineCaches = (PFN_vkMergePipelineCaches) gpa(dev, "vkMergePipelineCaches"); table->CreateGraphicsPipelines = (PFN_vkCreateGraphicsPipelines) gpa(dev, "vkCreateGraphicsPipelines"); table->CreateComputePipelines = (PFN_vkCreateComputePipelines) gpa(dev, "vkCreateComputePipelines"); + table->DestroyPipeline = (PFN_vkDestroyPipeline) gpa(dev, "vkDestroyPipeline"); table->CreatePipelineLayout = (PFN_vkCreatePipelineLayout) gpa(dev, "vkCreatePipelineLayout"); + table->DestroyPipelineLayout = (PFN_vkDestroyPipelineLayout) gpa(dev, "vkDestroyPipelineLayout"); table->CreateSampler = (PFN_vkCreateSampler) gpa(dev, "vkCreateSampler"); + table->DestroySampler = (PFN_vkDestroySampler) gpa(dev, "vkDestroySampler"); table->CreateDescriptorSetLayout = (PFN_vkCreateDescriptorSetLayout) gpa(dev, "vkCreateDescriptorSetLayout"); + table->DestroyDescriptorSetLayout = (PFN_vkDestroyDescriptorSetLayout) gpa(dev, "vkDestroyDescriptorSetLayout"); table->CreateDescriptorPool = (PFN_vkCreateDescriptorPool) gpa(dev, "vkCreateDescriptorPool"); + table->DestroyDescriptorPool = (PFN_vkDestroyDescriptorPool) gpa(dev, "vkDestroyDescriptorPool"); table->ResetDescriptorPool = (PFN_vkResetDescriptorPool) gpa(dev, "vkResetDescriptorPool"); table->AllocDescriptorSets = (PFN_vkAllocDescriptorSets) gpa(dev, "vkAllocDescriptorSets"); table->UpdateDescriptorSets = (PFN_vkUpdateDescriptorSets) gpa(dev, "vkUpdateDescriptorSets"); table->CreateDynamicViewportState = (PFN_vkCreateDynamicViewportState) gpa(dev, "vkCreateDynamicViewportState"); + table->DestroyDynamicViewportState = (PFN_vkDestroyDynamicViewportState) gpa(dev, "vkDestroyDynamicViewportState"); table->CreateDynamicRasterState = (PFN_vkCreateDynamicRasterState) gpa(dev, "vkCreateDynamicRasterState"); + table->DestroyDynamicRasterState = (PFN_vkDestroyDynamicRasterState) gpa(dev, "vkDestroyDynamicRasterState"); table->CreateDynamicColorBlendState = (PFN_vkCreateDynamicColorBlendState) gpa(dev, "vkCreateDynamicColorBlendState"); + table->DestroyDynamicColorBlendState = (PFN_vkDestroyDynamicColorBlendState) gpa(dev, "vkDestroyDynamicColorBlendState"); table->CreateDynamicDepthStencilState = (PFN_vkCreateDynamicDepthStencilState) gpa(dev, "vkCreateDynamicDepthStencilState"); + table->DestroyDynamicDepthStencilState = (PFN_vkDestroyDynamicDepthStencilState) gpa(dev, "vkDestroyDynamicDepthStencilState"); table->CreateCommandBuffer = (PFN_vkCreateCommandBuffer) gpa(dev, "vkCreateCommandBuffer"); + table->DestroyCommandBuffer = (PFN_vkDestroyCommandBuffer) gpa(dev, "vkDestroyCommandBuffer"); table->BeginCommandBuffer = (PFN_vkBeginCommandBuffer) gpa(dev, "vkBeginCommandBuffer"); table->EndCommandBuffer = (PFN_vkEndCommandBuffer) gpa(dev, "vkEndCommandBuffer"); table->ResetCommandBuffer = (PFN_vkResetCommandBuffer) gpa(dev, "vkResetCommandBuffer"); table->CmdBindPipeline = (PFN_vkCmdBindPipeline) gpa(dev, "vkCmdBindPipeline"); - table->CmdBindDynamicStateObject = (PFN_vkCmdBindDynamicStateObject) gpa(dev, "vkCmdBindDynamicStateObject"); + table->CmdBindDynamicViewportState = (PFN_vkCmdBindDynamicViewportState) gpa(dev, "vkCmdBindDynamicViewportState"); + table->CmdBindDynamicRasterState = (PFN_vkCmdBindDynamicRasterState) gpa(dev, "vkCmdBindDynamicRasterState"); + table->CmdBindDynamicColorBlendState = (PFN_vkCmdBindDynamicColorBlendState) gpa(dev, "vkCmdBindDynamicColorBlendState"); + table->CmdBindDynamicDepthStencilState = (PFN_vkCmdBindDynamicDepthStencilState) gpa(dev, "vkCmdBindDynamicDepthStencilState"); table->CmdBindDescriptorSets = (PFN_vkCmdBindDescriptorSets) gpa(dev, "vkCmdBindDescriptorSets"); table->CmdBindVertexBuffers = (PFN_vkCmdBindVertexBuffers) gpa(dev, "vkCmdBindVertexBuffers"); table->CmdBindIndexBuffer = (PFN_vkCmdBindIndexBuffer) gpa(dev, "vkCmdBindIndexBuffer"); @@ -132,7 +157,9 @@ static inline void loader_init_device_dispatch_table(VkLayerDispatchTable *table table->CmdWriteTimestamp = (PFN_vkCmdWriteTimestamp) gpa(dev, "vkCmdWriteTimestamp"); table->CmdCopyQueryPoolResults = (PFN_vkCmdCopyQueryPoolResults) gpa(dev, "vkCmdCopyQueryPoolResults"); table->CreateFramebuffer = (PFN_vkCreateFramebuffer) gpa(dev, "vkCreateFramebuffer"); + table->DestroyFramebuffer = (PFN_vkDestroyFramebuffer) gpa(dev, "vkDestroyFramebuffer"); table->CreateRenderPass = (PFN_vkCreateRenderPass) gpa(dev, "vkCreateRenderPass"); + table->DestroyRenderPass = (PFN_vkDestroyRenderPass) gpa(dev, "vkDestroyRenderPass"); table->CmdBeginRenderPass = (PFN_vkCmdBeginRenderPass) gpa(dev, "vkCmdBeginRenderPass"); table->CmdNextSubpass = (PFN_vkCmdNextSubpass) gpa(dev, "vkCmdNextSubpass"); table->CmdEndRenderPass = (PFN_vkCmdEndRenderPass) gpa(dev, "vkCmdEndRenderPass"); @@ -180,12 +207,14 @@ static inline void *loader_lookup_device_dispatch_table( return (void *) table->FlushMappedMemoryRanges; if (!strcmp(name, "InvalidateMappedMemoryRanges")) return (void *) table->InvalidateMappedMemoryRanges; - if (!strcmp(name, "DestroyObject")) - return (void *) table->DestroyObject; - if (!strcmp(name, "GetObjectMemoryRequirements")) - return (void *) table->GetObjectMemoryRequirements; - if (!strcmp(name, "BindObjectMemory")) - return (void *) table->BindObjectMemory; + if (!strcmp(name, "GetBufferMemoryRequirements")) + return (void *) table->GetBufferMemoryRequirements; + if (!strcmp(name, "GetImageMemoryRequirements")) + return (void *) table->GetImageMemoryRequirements; + if (!strcmp(name, "BindBufferMemory")) + return (void *) table->BindBufferMemory; + if (!strcmp(name, "BindImageMemory")) + return (void *) table->BindImageMemory; if (!strcmp(name, "QueueBindSparseBufferMemory")) return (void *) table->QueueBindSparseBufferMemory; if (!strcmp(name, "QueueBindSparseImageMemory")) @@ -196,6 +225,8 @@ static inline void *loader_lookup_device_dispatch_table( return (void *) table->GetImageSparseMemoryRequirements; if (!strcmp(name, "CreateFence")) return (void *) table->CreateFence; + if (!strcmp(name, "DestroyFence")) + return (void *) table->DestroyFence; if (!strcmp(name, "ResetFences")) return (void *) table->ResetFences; if (!strcmp(name, "GetFenceStatus")) @@ -204,12 +235,16 @@ static inline void *loader_lookup_device_dispatch_table( return (void *) table->WaitForFences; if (!strcmp(name, "CreateSemaphore")) return (void *) table->CreateSemaphore; + if (!strcmp(name, "DestroySemaphore")) + return (void *) table->DestroySemaphore; if (!strcmp(name, "QueueSignalSemaphore")) return (void *) table->QueueSignalSemaphore; if (!strcmp(name, "QueueWaitSemaphore")) return (void *) table->QueueWaitSemaphore; if (!strcmp(name, "CreateEvent")) return (void *) table->CreateEvent; + if (!strcmp(name, "DestroyEvent")) + return (void *) table->DestroyEvent; if (!strcmp(name, "GetEventStatus")) return (void *) table->GetEventStatus; if (!strcmp(name, "SetEvent")) @@ -218,24 +253,40 @@ static inline void *loader_lookup_device_dispatch_table( return (void *) table->ResetEvent; if (!strcmp(name, "CreateQueryPool")) return (void *) table->CreateQueryPool; + if (!strcmp(name, "DestroyQueryPool")) + return (void *) table->DestroyQueryPool; if (!strcmp(name, "GetQueryPoolResults")) return (void *) table->GetQueryPoolResults; if (!strcmp(name, "CreateBuffer")) return (void *) table->CreateBuffer; + if (!strcmp(name, "DestroyBuffer")) + return (void *) table->DestroyBuffer; if (!strcmp(name, "CreateBufferView")) return (void *) table->CreateBufferView; + if (!strcmp(name, "DestroyBufferView")) + return (void *) table->DestroyBufferView; if (!strcmp(name, "CreateImage")) return (void *) table->CreateImage; + if (!strcmp(name, "DestroyImage")) + return (void *) table->DestroyImage; if (!strcmp(name, "GetImageSubresourceLayout")) return (void *) table->GetImageSubresourceLayout; if (!strcmp(name, "CreateImageView")) return (void *) table->CreateImageView; + if (!strcmp(name, "DestroyImageView")) + return (void *) table->DestroyImageView; if (!strcmp(name, "CreateAttachmentView")) return (void *) table->CreateAttachmentView; + if (!strcmp(name, "DestroyAttachmentView")) + return (void *) table->DestroyAttachmentView; if (!strcmp(name, "CreateShaderModule")) return (void *) table->CreateShaderModule; + if (!strcmp(name, "DestroyShaderModule")) + return (void *) table->DestroyShaderModule; if (!strcmp(name, "CreateShader")) return (void *) table->CreateShader; + if (!strcmp(name, "DestroyShader")) + return (void *) table->DestroyShader; if (!strcmp(name, "CreatePipelineCache")) return (void*) vkCreatePipelineCache; if (!strcmp(name, "DestroyPipelineCache")) @@ -250,14 +301,24 @@ static inline void *loader_lookup_device_dispatch_table( return (void*) vkCreateGraphicsPipelines; if (!strcmp(name, "CreateComputePipelines")) return (void*) vkCreateComputePipelines; + if (!strcmp(name, "DestroyPipeline")) + return (void *) table->DestroyPipeline; if (!strcmp(name, "CreatePipelineLayout")) return (void *) table->CreatePipelineLayout; + if (!strcmp(name, "DestroyPipelineLayout")) + return (void *) table->DestroyPipelineLayout; if (!strcmp(name, "CreateSampler")) return (void *) table->CreateSampler; + if (!strcmp(name, "DestroySampler")) + return (void *) table->DestroySampler; if (!strcmp(name, "CreateDescriptorSetLayout")) return (void *) table->CreateDescriptorSetLayout; + if (!strcmp(name, "DestroyDescriptorSetLayout")) + return (void *) table->DestroyDescriptorSetLayout; if (!strcmp(name, "CreateDescriptorPool")) return (void *) table->CreateDescriptorPool; + if (!strcmp(name, "DestroyDescriptorPool")) + return (void *) table->DestroyDescriptorPool; if (!strcmp(name, "ResetDescriptorPool")) return (void *) table->ResetDescriptorPool; if (!strcmp(name, "AllocDescriptorSets")) @@ -266,14 +327,24 @@ static inline void *loader_lookup_device_dispatch_table( return (void *) table->UpdateDescriptorSets; if (!strcmp(name, "CreateDynamicViewportState")) return (void *) table->CreateDynamicViewportState; + if (!strcmp(name, "DestroyDynamicViewportState")) + return (void *) table->DestroyDynamicViewportState; if (!strcmp(name, "CreateDynamicRasterState")) return (void *) table->CreateDynamicRasterState; + if (!strcmp(name, "DestroyDynamicRasterState")) + return (void *) table->DestroyDynamicRasterState; if (!strcmp(name, "CreateDynamicColorBlendState")) return (void *) table->CreateDynamicColorBlendState; + if (!strcmp(name, "DestroyDynamicColorBlendState")) + return (void *) table->DestroyDynamicColorBlendState; if (!strcmp(name, "CreateDynamicDepthStencilState")) return (void *) table->CreateDynamicDepthStencilState; + if (!strcmp(name, "DestroyDynamicDepthStencilState")) + return (void *) table->DestroyDynamicDepthStencilState; if (!strcmp(name, "CreateCommandBuffer")) return (void *) table->CreateCommandBuffer; + if (!strcmp(name, "DestroyCommandBuffer")) + return (void *) table->DestroyCommandBuffer; if (!strcmp(name, "BeginCommandBuffer")) return (void *) table->BeginCommandBuffer; if (!strcmp(name, "EndCommandBuffer")) @@ -282,8 +353,14 @@ static inline void *loader_lookup_device_dispatch_table( return (void *) table->ResetCommandBuffer; if (!strcmp(name, "CmdBindPipeline")) return (void *) table->CmdBindPipeline; - if (!strcmp(name, "CmdBindDynamicStateObject")) - return (void *) table->CmdBindDynamicStateObject; + if (!strcmp(name, "CmdBindDynamicViewportState")) + return (void *) table->CmdBindDynamicViewportState; + if (!strcmp(name, "CmdBindDynamicRasterState")) + return (void *) table->CmdBindDynamicRasterState; + if (!strcmp(name, "CmdBindDynamicColorBlendState")) + return (void *) table->CmdBindDynamicColorBlendState; + if (!strcmp(name, "CmdBindDynamicDepthStencilState")) + return (void *) table->CmdBindDynamicDepthStencilState; if (!strcmp(name, "CmdBindDescriptorSets")) return (void *) table->CmdBindDescriptorSets; if (!strcmp(name, "CmdBindVertexBuffers")) @@ -346,8 +423,12 @@ static inline void *loader_lookup_device_dispatch_table( return (void *) table->CmdCopyQueryPoolResults; if (!strcmp(name, "CreateFramebuffer")) return (void *) table->CreateFramebuffer; + if (!strcmp(name, "DestroyFramebuffer")) + return (void *) table->DestroyFramebuffer; if (!strcmp(name, "CreateRenderPass")) return (void *) table->CreateRenderPass; + if (!strcmp(name, "DestroyRenderPass")) + return (void *) table->DestroyRenderPass; if (!strcmp(name, "CmdBeginRenderPass")) return (void *) table->CmdBeginRenderPass; if (!strcmp(name, "CmdNextSubpass")) diff --git a/loader/trampoline.c b/loader/trampoline.c index baa7bd1f..dbd134fd 100644 --- a/loader/trampoline.c +++ b/loader/trampoline.c @@ -420,31 +420,40 @@ LOADER_EXPORT VkResult VKAPI vkInvalidateMappedMemoryRanges(VkDevice device, uin return disp->InvalidateMappedMemoryRanges(device, memRangeCount, pMemRanges); } -LOADER_EXPORT VkResult VKAPI vkDestroyObject(VkDevice device, VkObjectType objType, VkObject object) +LOADER_EXPORT VkResult VKAPI vkGetBufferMemoryRequirements(VkDevice device, VkBuffer buffer, VkMemoryRequirements* pMemoryRequirements) { const VkLayerDispatchTable *disp; disp = loader_get_dispatch(device); - return disp->DestroyObject(device, objType, object); + return disp->GetBufferMemoryRequirements(device, buffer, pMemoryRequirements); } -LOADER_EXPORT VkResult VKAPI vkGetObjectMemoryRequirements(VkDevice device, VkObjectType objType, VkObject object, VkMemoryRequirements* pMemoryRequirements) +LOADER_EXPORT VkResult VKAPI vkGetImageMemoryRequirements(VkDevice device, VkImage image, VkMemoryRequirements* pMemoryRequirements) { const VkLayerDispatchTable *disp; disp = loader_get_dispatch(device); - return disp->GetObjectMemoryRequirements(device, objType, object, pMemoryRequirements); + return disp->GetImageMemoryRequirements(device, image, pMemoryRequirements); } -LOADER_EXPORT VkResult VKAPI vkBindObjectMemory(VkDevice device, VkObjectType objType, VkObject object, VkDeviceMemory mem, VkDeviceSize offset) +LOADER_EXPORT VkResult VKAPI vkBindBufferMemory(VkDevice device, VkBuffer buffer, VkDeviceMemory mem, VkDeviceSize offset) { const VkLayerDispatchTable *disp; disp = loader_get_dispatch(device); - return disp->BindObjectMemory(device, objType, object, mem, offset); + return disp->BindBufferMemory(device, buffer, mem, offset); +} + +LOADER_EXPORT VkResult VKAPI vkBindImageMemory(VkDevice device, VkImage image, VkDeviceMemory mem, VkDeviceSize offset) +{ + const VkLayerDispatchTable *disp; + + disp = loader_get_dispatch(device); + + return disp->BindImageMemory(device, image, mem, offset); } LOADER_EXPORT VkResult VKAPI vkGetImageSparseMemoryRequirements(VkDevice device, VkImage image, uint32_t* pNumRequirements, VkSparseImageMemoryRequirements* pSparseMemoryRequirements) @@ -501,6 +510,15 @@ LOADER_EXPORT VkResult VKAPI vkCreateFence(VkDevice device, const VkFenceCreateI return disp->CreateFence(device, pCreateInfo, pFence); } +LOADER_EXPORT VkResult VKAPI vkDestroyFence(VkDevice device, VkFence fence) +{ + const VkLayerDispatchTable *disp; + + disp = loader_get_dispatch(device); + + return disp->DestroyFence(device, fence); +} + LOADER_EXPORT VkResult VKAPI vkResetFences(VkDevice device, uint32_t fenceCount, const VkFence* pFences) { const VkLayerDispatchTable *disp; @@ -537,6 +555,15 @@ LOADER_EXPORT VkResult VKAPI vkCreateSemaphore(VkDevice device, const VkSemaphor return disp->CreateSemaphore(device, pCreateInfo, pSemaphore); } +LOADER_EXPORT VkResult VKAPI vkDestroySemaphore(VkDevice device, VkSemaphore semaphore) +{ + const VkLayerDispatchTable *disp; + + disp = loader_get_dispatch(device); + + return disp->DestroySemaphore(device, semaphore); +} + LOADER_EXPORT VkResult VKAPI vkQueueSignalSemaphore(VkQueue queue, VkSemaphore semaphore) { const VkLayerDispatchTable *disp; @@ -564,6 +591,15 @@ LOADER_EXPORT VkResult VKAPI vkCreateEvent(VkDevice device, const VkEventCreateI return disp->CreateEvent(device, pCreateInfo, pEvent); } +LOADER_EXPORT VkResult VKAPI vkDestroyEvent(VkDevice device, VkEvent event) +{ + const VkLayerDispatchTable *disp; + + disp = loader_get_dispatch(device); + + return disp->DestroyEvent(device, event); +} + LOADER_EXPORT VkResult VKAPI vkGetEventStatus(VkDevice device, VkEvent event) { const VkLayerDispatchTable *disp; @@ -600,6 +636,15 @@ LOADER_EXPORT VkResult VKAPI vkCreateQueryPool(VkDevice device, const VkQueryPoo return disp->CreateQueryPool(device, pCreateInfo, pQueryPool); } +LOADER_EXPORT VkResult VKAPI vkDestroyQueryPool(VkDevice device, VkQueryPool queryPool) +{ + const VkLayerDispatchTable *disp; + + disp = loader_get_dispatch(device); + + return disp->DestroyQueryPool(device, queryPool); +} + LOADER_EXPORT VkResult VKAPI vkGetQueryPoolResults(VkDevice device, VkQueryPool queryPool, uint32_t startQuery, uint32_t queryCount, size_t* pDataSize, void* pData, VkQueryResultFlags flags) { const VkLayerDispatchTable *disp; @@ -618,6 +663,15 @@ LOADER_EXPORT VkResult VKAPI vkCreateBuffer(VkDevice device, const VkBufferCreat return disp->CreateBuffer(device, pCreateInfo, pBuffer); } +LOADER_EXPORT VkResult VKAPI vkDestroyBuffer(VkDevice device, VkBuffer buffer) +{ + const VkLayerDispatchTable *disp; + + disp = loader_get_dispatch(device); + + return disp->DestroyBuffer(device, buffer); +} + LOADER_EXPORT VkResult VKAPI vkCreateBufferView(VkDevice device, const VkBufferViewCreateInfo* pCreateInfo, VkBufferView* pView) { const VkLayerDispatchTable *disp; @@ -627,6 +681,15 @@ LOADER_EXPORT VkResult VKAPI vkCreateBufferView(VkDevice device, const VkBufferV return disp->CreateBufferView(device, pCreateInfo, pView); } +LOADER_EXPORT VkResult VKAPI vkDestroyBufferView(VkDevice device, VkBufferView bufferView) +{ + const VkLayerDispatchTable *disp; + + disp = loader_get_dispatch(device); + + return disp->DestroyBufferView(device, bufferView); +} + LOADER_EXPORT VkResult VKAPI vkCreateImage(VkDevice device, const VkImageCreateInfo* pCreateInfo, VkImage* pImage) { const VkLayerDispatchTable *disp; @@ -636,6 +699,15 @@ LOADER_EXPORT VkResult VKAPI vkCreateImage(VkDevice device, const VkImageCreateI return disp->CreateImage(device, pCreateInfo, pImage); } +LOADER_EXPORT VkResult VKAPI vkDestroyImage(VkDevice device, VkImage image) +{ + const VkLayerDispatchTable *disp; + + disp = loader_get_dispatch(device); + + return disp->DestroyImage(device, image); +} + LOADER_EXPORT VkResult VKAPI vkGetImageSubresourceLayout(VkDevice device, VkImage image, const VkImageSubresource* pSubresource, VkSubresourceLayout* pLayout) { const VkLayerDispatchTable *disp; @@ -654,6 +726,15 @@ LOADER_EXPORT VkResult VKAPI vkCreateImageView(VkDevice device, const VkImageVie return disp->CreateImageView(device, pCreateInfo, pView); } +LOADER_EXPORT VkResult VKAPI vkDestroyImageView(VkDevice device, VkImageView imageView) +{ + const VkLayerDispatchTable *disp; + + disp = loader_get_dispatch(device); + + return disp->DestroyImageView(device, imageView); +} + LOADER_EXPORT VkResult VKAPI vkCreateAttachmentView(VkDevice device, const VkAttachmentViewCreateInfo* pCreateInfo, VkAttachmentView* pView) { const VkLayerDispatchTable *disp; @@ -663,6 +744,15 @@ LOADER_EXPORT VkResult VKAPI vkCreateAttachmentView(VkDevice device, const VkAtt return disp->CreateAttachmentView(device, pCreateInfo, pView); } +LOADER_EXPORT VkResult VKAPI vkDestroyAttachmentView(VkDevice device, VkAttachmentView attachmentView) +{ + const VkLayerDispatchTable *disp; + + disp = loader_get_dispatch(device); + + return disp->DestroyAttachmentView(device, attachmentView); +} + LOADER_EXPORT VkResult VKAPI vkCreateShaderModule(VkDevice device, const VkShaderModuleCreateInfo* pCreateInfo, VkShaderModule* pShader) { const VkLayerDispatchTable *disp; @@ -672,6 +762,15 @@ LOADER_EXPORT VkResult VKAPI vkCreateShaderModule(VkDevice device, const VkShade return disp->CreateShaderModule(device, pCreateInfo, pShader); } +LOADER_EXPORT VkResult VKAPI vkDestroyShaderModule(VkDevice device, VkShaderModule shaderModule) +{ + const VkLayerDispatchTable *disp; + + disp = loader_get_dispatch(device); + + return disp->DestroyShaderModule(device, shaderModule); +} + LOADER_EXPORT VkResult VKAPI vkCreateShader(VkDevice device, const VkShaderCreateInfo* pCreateInfo, VkShader* pShader) { const VkLayerDispatchTable *disp; @@ -681,6 +780,15 @@ LOADER_EXPORT VkResult VKAPI vkCreateShader(VkDevice device, const VkShaderCreat return disp->CreateShader(device, pCreateInfo, pShader); } +LOADER_EXPORT VkResult VKAPI vkDestroyShader(VkDevice device, VkShader shader) +{ + const VkLayerDispatchTable *disp; + + disp = loader_get_dispatch(device); + + return disp->DestroyShader(device, shader); +} + LOADER_EXPORT VkResult VKAPI vkCreatePipelineCache(VkDevice device, const VkPipelineCacheCreateInfo* pCreateInfo, VkPipelineCache* pPipelineCache) { const VkLayerDispatchTable *disp; @@ -744,6 +852,15 @@ LOADER_EXPORT VkResult VKAPI vkCreateComputePipelines(VkDevice device, VkPipelin return disp->CreateComputePipelines(device, pipelineCache, count, pCreateInfos, pPipelines); } +LOADER_EXPORT VkResult VKAPI vkDestroyPipeline(VkDevice device, VkPipeline pipeline) +{ + const VkLayerDispatchTable *disp; + + disp = loader_get_dispatch(device); + + return disp->DestroyPipeline(device, pipeline); +} + LOADER_EXPORT VkResult VKAPI vkCreatePipelineLayout(VkDevice device, const VkPipelineLayoutCreateInfo* pCreateInfo, VkPipelineLayout* pPipelineLayout) { const VkLayerDispatchTable *disp; @@ -753,6 +870,15 @@ LOADER_EXPORT VkResult VKAPI vkCreatePipelineLayout(VkDevice device, const VkPip return disp->CreatePipelineLayout(device, pCreateInfo, pPipelineLayout); } +LOADER_EXPORT VkResult VKAPI vkDestroyPipelineLayout(VkDevice device, VkPipelineLayout pipelineLayout) +{ + const VkLayerDispatchTable *disp; + + disp = loader_get_dispatch(device); + + return disp->DestroyPipelineLayout(device, pipelineLayout); +} + LOADER_EXPORT VkResult VKAPI vkCreateSampler(VkDevice device, const VkSamplerCreateInfo* pCreateInfo, VkSampler* pSampler) { const VkLayerDispatchTable *disp; @@ -762,6 +888,16 @@ LOADER_EXPORT VkResult VKAPI vkCreateSampler(VkDevice device, const VkSamplerCre return disp->CreateSampler(device, pCreateInfo, pSampler); } +LOADER_EXPORT VkResult VKAPI vkDestroySampler(VkDevice device, VkSampler sampler) +{ + const VkLayerDispatchTable *disp; + + disp = loader_get_dispatch(device); + + return disp->DestroySampler(device, sampler); +} + + LOADER_EXPORT VkResult VKAPI vkCreateDescriptorSetLayout(VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, VkDescriptorSetLayout* pSetLayout) { const VkLayerDispatchTable *disp; @@ -771,6 +907,15 @@ LOADER_EXPORT VkResult VKAPI vkCreateDescriptorSetLayout(VkDevice device, const return disp->CreateDescriptorSetLayout(device, pCreateInfo, pSetLayout); } +LOADER_EXPORT VkResult VKAPI vkDestroyDescriptorSetLayout(VkDevice device, VkDescriptorSetLayout descriptorSetLayout) +{ + const VkLayerDispatchTable *disp; + + disp = loader_get_dispatch(device); + + return disp->DestroyDescriptorSetLayout(device, descriptorSetLayout); +} + LOADER_EXPORT VkResult VKAPI vkCreateDescriptorPool(VkDevice device, VkDescriptorPoolUsage poolUsage, uint32_t maxSets, const VkDescriptorPoolCreateInfo* pCreateInfo, VkDescriptorPool* pDescriptorPool) { const VkLayerDispatchTable *disp; @@ -780,6 +925,16 @@ LOADER_EXPORT VkResult VKAPI vkCreateDescriptorPool(VkDevice device, VkDescripto return disp->CreateDescriptorPool(device, poolUsage, maxSets, pCreateInfo, pDescriptorPool); } +LOADER_EXPORT VkResult VKAPI vkDestroyDescriptorPool(VkDevice device, VkDescriptorPool descriptorPool) +{ + const VkLayerDispatchTable *disp; + + disp = loader_get_dispatch(device); + + return disp->DestroyDescriptorPool(device, descriptorPool); +} + + LOADER_EXPORT VkResult VKAPI vkResetDescriptorPool(VkDevice device, VkDescriptorPool descriptorPool) { const VkLayerDispatchTable *disp; @@ -807,7 +962,7 @@ LOADER_EXPORT VkResult VKAPI vkUpdateDescriptorSets(VkDevice device, uint32_t wr return disp->UpdateDescriptorSets(device, writeCount, pDescriptorWrites, copyCount, pDescriptorCopies); } -LOADER_EXPORT VkResult VKAPI vkCreateDynamicViewportState(VkDevice device, const VkDynamicVpStateCreateInfo* pCreateInfo, VkDynamicVpState* pState) +LOADER_EXPORT VkResult VKAPI vkCreateDynamicViewportState(VkDevice device, const VkDynamicViewportStateCreateInfo* pCreateInfo, VkDynamicViewportState* pState) { const VkLayerDispatchTable *disp; @@ -816,7 +971,16 @@ LOADER_EXPORT VkResult VKAPI vkCreateDynamicViewportState(VkDevice device, const return disp->CreateDynamicViewportState(device, pCreateInfo, pState); } -LOADER_EXPORT VkResult VKAPI vkCreateDynamicRasterState(VkDevice device, const VkDynamicRsStateCreateInfo* pCreateInfo, VkDynamicRsState* pState) +LOADER_EXPORT VkResult VKAPI vkDestroyDynamicViewportState(VkDevice device, VkDynamicViewportState dynamicViewportState) +{ + const VkLayerDispatchTable *disp; + + disp = loader_get_dispatch(device); + + return disp->DestroyDynamicViewportState(device, dynamicViewportState); +} + +LOADER_EXPORT VkResult VKAPI vkCreateDynamicRasterState(VkDevice device, const VkDynamicRasterStateCreateInfo* pCreateInfo, VkDynamicRasterState* pState) { const VkLayerDispatchTable *disp; @@ -825,7 +989,16 @@ LOADER_EXPORT VkResult VKAPI vkCreateDynamicRasterState(VkDevice device, const V return disp->CreateDynamicRasterState(device, pCreateInfo, pState); } -LOADER_EXPORT VkResult VKAPI vkCreateDynamicColorBlendState(VkDevice device, const VkDynamicCbStateCreateInfo* pCreateInfo, VkDynamicCbState* pState) +LOADER_EXPORT VkResult VKAPI vkDestroyDynamicRasterState(VkDevice device, VkDynamicRasterState dynamicRasterState) +{ + const VkLayerDispatchTable *disp; + + disp = loader_get_dispatch(device); + + return disp->DestroyDynamicRasterState(device, dynamicRasterState); +} + +LOADER_EXPORT VkResult VKAPI vkCreateDynamicColorBlendState(VkDevice device, const VkDynamicColorBlendStateCreateInfo* pCreateInfo, VkDynamicColorBlendState* pState) { const VkLayerDispatchTable *disp; @@ -834,7 +1007,16 @@ LOADER_EXPORT VkResult VKAPI vkCreateDynamicColorBlendState(VkDevice device, con return disp->CreateDynamicColorBlendState(device, pCreateInfo, pState); } -LOADER_EXPORT VkResult VKAPI vkCreateDynamicDepthStencilState(VkDevice device, const VkDynamicDsStateCreateInfo* pCreateInfo, VkDynamicDsState* pState) +LOADER_EXPORT VkResult VKAPI vkDestroyDynamicColorBlendState(VkDevice device, VkDynamicColorBlendState dynamicColorBlendState) +{ + const VkLayerDispatchTable *disp; + + disp = loader_get_dispatch(device); + + return disp->DestroyDynamicColorBlendState(device, dynamicColorBlendState); +} + +LOADER_EXPORT VkResult VKAPI vkCreateDynamicDepthStencilState(VkDevice device, const VkDynamicDepthStencilStateCreateInfo* pCreateInfo, VkDynamicDepthStencilState* pState) { const VkLayerDispatchTable *disp; @@ -843,6 +1025,15 @@ LOADER_EXPORT VkResult VKAPI vkCreateDynamicDepthStencilState(VkDevice device, c return disp->CreateDynamicDepthStencilState(device, pCreateInfo, pState); } +LOADER_EXPORT VkResult VKAPI vkDestroyDynamicDepthStencilState(VkDevice device, VkDynamicDepthStencilState dynamicDepthStencilState) +{ + const VkLayerDispatchTable *disp; + + disp = loader_get_dispatch(device); + + return disp->DestroyDynamicDepthStencilState(device, dynamicDepthStencilState); +} + LOADER_EXPORT VkResult VKAPI vkCreateCommandBuffer(VkDevice device, const VkCmdBufferCreateInfo* pCreateInfo, VkCmdBuffer* pCmdBuffer) { const VkLayerDispatchTable *disp; @@ -858,6 +1049,15 @@ LOADER_EXPORT VkResult VKAPI vkCreateCommandBuffer(VkDevice device, const VkCmdB return res; } +LOADER_EXPORT VkResult VKAPI vkDestroyCommandBuffer(VkDevice device, VkCmdBuffer cmdBuffer) +{ + const VkLayerDispatchTable *disp; + + disp = loader_get_dispatch(device); + + return disp->DestroyCommandBuffer(device, cmdBuffer); +} + LOADER_EXPORT VkResult VKAPI vkBeginCommandBuffer(VkCmdBuffer cmdBuffer, const VkCmdBufferBeginInfo* pBeginInfo) { const VkLayerDispatchTable *disp; @@ -894,13 +1094,40 @@ LOADER_EXPORT void VKAPI vkCmdBindPipeline(VkCmdBuffer cmdBuffer, VkPipelineBind disp->CmdBindPipeline(cmdBuffer, pipelineBindPoint, pipeline); } -LOADER_EXPORT void VKAPI vkCmdBindDynamicStateObject(VkCmdBuffer cmdBuffer, VkStateBindPoint stateBindPoint, VkDynamicStateObject state) +LOADER_EXPORT void VKAPI vkCmdBindDynamicViewportState(VkCmdBuffer cmdBuffer, VkDynamicViewportState state) { const VkLayerDispatchTable *disp; disp = loader_get_dispatch(cmdBuffer); - disp->CmdBindDynamicStateObject(cmdBuffer, stateBindPoint, state); + disp->CmdBindDynamicViewportState(cmdBuffer, state); +} + +LOADER_EXPORT void VKAPI vkCmdBindDynamicRasterState(VkCmdBuffer cmdBuffer, VkDynamicRasterState state) +{ + const VkLayerDispatchTable *disp; + + disp = loader_get_dispatch(cmdBuffer); + + disp->CmdBindDynamicRasterState(cmdBuffer, state); +} + +LOADER_EXPORT void VKAPI vkCmdBindDynamicColorBlendState(VkCmdBuffer cmdBuffer, VkDynamicColorBlendState state) +{ + const VkLayerDispatchTable *disp; + + disp = loader_get_dispatch(cmdBuffer); + + disp->CmdBindDynamicColorBlendState(cmdBuffer, state); +} + +LOADER_EXPORT void VKAPI vkCmdBindDynamicDepthStencilState(VkCmdBuffer cmdBuffer, VkDynamicDepthStencilState state) +{ + const VkLayerDispatchTable *disp; + + disp = loader_get_dispatch(cmdBuffer); + + disp->CmdBindDynamicDepthStencilState(cmdBuffer, state); } LOADER_EXPORT void VKAPI vkCmdBindDescriptorSets(VkCmdBuffer cmdBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, uint32_t firstSet, uint32_t setCount, const VkDescriptorSet* pDescriptorSets, uint32_t dynamicOffsetCount, const uint32_t* pDynamicOffsets) @@ -1182,6 +1409,15 @@ LOADER_EXPORT VkResult VKAPI vkCreateFramebuffer(VkDevice device, const VkFrameb return disp->CreateFramebuffer(device, pCreateInfo, pFramebuffer); } +LOADER_EXPORT VkResult VKAPI vkDestroyFramebuffer(VkDevice device, VkFramebuffer framebuffer) +{ + const VkLayerDispatchTable *disp; + + disp = loader_get_dispatch(device); + + return disp->DestroyFramebuffer(device, framebuffer); +} + LOADER_EXPORT VkResult VKAPI vkCreateRenderPass(VkDevice device, const VkRenderPassCreateInfo* pCreateInfo, VkRenderPass* pRenderPass) { const VkLayerDispatchTable *disp; @@ -1191,6 +1427,15 @@ LOADER_EXPORT VkResult VKAPI vkCreateRenderPass(VkDevice device, const VkRenderP return disp->CreateRenderPass(device, pCreateInfo, pRenderPass); } +LOADER_EXPORT VkResult VKAPI vkDestroyRenderPass(VkDevice device, VkRenderPass renderPass) +{ + const VkLayerDispatchTable *disp; + + disp = loader_get_dispatch(device); + + return disp->DestroyRenderPass(device, renderPass); +} + LOADER_EXPORT void VKAPI vkCmdBeginRenderPass(VkCmdBuffer cmdBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, VkRenderPassContents contents) { const VkLayerDispatchTable *disp; @@ -189,7 +189,6 @@ core = Extension( "VkDevice", "VkQueue", "VkDeviceMemory", - "VkObject", "VkBuffer", "VkBufferView", "VkImage", @@ -203,11 +202,10 @@ core = Extension( "VkDescriptorSetLayout", "VkPipelineLayout", "VkDescriptorPool", - "VkDynamicStateObject", - "VkDynamicVpState", - "VkDynamicRsState", - "VkDynamicCbState", - "VkDynamicDsState", + "VkDynamicViewportState", + "VkDynamicRasterState", + "VkDynamicColorBlendState", + "VkDynamicDepthStencilState", "VkCmdBuffer", "VkFence", "VkSemaphore", @@ -349,21 +347,25 @@ core = Extension( Param("uint32_t", "memRangeCount"), Param("const VkMappedMemoryRange*", "pMemRanges")]), - Proto("VkResult", "DestroyObject", + Proto("VkResult", "GetBufferMemoryRequirements", [Param("VkDevice", "device"), - Param("VkObjectType", "objType"), - Param("VkObject", "object")]), + Param("VkBuffer", "buffer"), + Param("VkMemoryRequirements*", "pMemoryRequirements")]), - Proto("VkResult", "GetObjectMemoryRequirements", + Proto("VkResult", "GetImageMemoryRequirements", [Param("VkDevice", "device"), - Param("VkObjectType", "objType"), - Param("VkObject", "object"), + Param("VkImage", "image"), Param("VkMemoryRequirements*", "pMemoryRequirements")]), - Proto("VkResult", "BindObjectMemory", + Proto("VkResult", "BindBufferMemory", [Param("VkDevice", "device"), - Param("VkObjectType", "objType"), - Param("VkObject", "object"), + Param("VkBuffer", "buffer"), + Param("VkDeviceMemory", "mem"), + Param("VkDeviceSize", "offset")]), + + Proto("VkResult", "BindImageMemory", + [Param("VkDevice", "device"), + Param("VkImage", "image"), Param("VkDeviceMemory", "mem"), Param("VkDeviceSize", "offset")]), @@ -406,6 +408,10 @@ core = Extension( Param("const VkFenceCreateInfo*", "pCreateInfo"), Param("VkFence*", "pFence")]), + Proto("VkResult", "DestroyFence", + [Param("VkDevice", "device"), + Param("VkFence", "fence")]), + Proto("VkResult", "ResetFences", [Param("VkDevice", "device"), Param("uint32_t", "fenceCount"), @@ -427,6 +433,10 @@ core = Extension( Param("const VkSemaphoreCreateInfo*", "pCreateInfo"), Param("VkSemaphore*", "pSemaphore")]), + Proto("VkResult", "DestroySemaphore", + [Param("VkDevice", "device"), + Param("VkSemaphore", "semaphore")]), + Proto("VkResult", "QueueSignalSemaphore", [Param("VkQueue", "queue"), Param("VkSemaphore", "semaphore")]), @@ -440,6 +450,10 @@ core = Extension( Param("const VkEventCreateInfo*", "pCreateInfo"), Param("VkEvent*", "pEvent")]), + Proto("VkResult", "DestroyEvent", + [Param("VkDevice", "device"), + Param("VkEvent", "event")]), + Proto("VkResult", "GetEventStatus", [Param("VkDevice", "device"), Param("VkEvent", "event")]), @@ -457,6 +471,10 @@ core = Extension( Param("const VkQueryPoolCreateInfo*", "pCreateInfo"), Param("VkQueryPool*", "pQueryPool")]), + Proto("VkResult", "DestroyQueryPool", + [Param("VkDevice", "device"), + Param("VkQueryPool", "queryPool")]), + Proto("VkResult", "GetQueryPoolResults", [Param("VkDevice", "device"), Param("VkQueryPool", "queryPool"), @@ -471,16 +489,28 @@ core = Extension( Param("const VkBufferCreateInfo*", "pCreateInfo"), Param("VkBuffer*", "pBuffer")]), + Proto("VkResult", "DestroyBuffer", + [Param("VkDevice", "device"), + Param("VkBuffer", "buffer")]), + Proto("VkResult", "CreateBufferView", [Param("VkDevice", "device"), Param("const VkBufferViewCreateInfo*", "pCreateInfo"), Param("VkBufferView*", "pView")]), + Proto("VkResult", "DestroyBufferView", + [Param("VkDevice", "device"), + Param("VkBufferView", "bufferView")]), + Proto("VkResult", "CreateImage", [Param("VkDevice", "device"), Param("const VkImageCreateInfo*", "pCreateInfo"), Param("VkImage*", "pImage")]), + Proto("VkResult", "DestroyImage", + [Param("VkDevice", "device"), + Param("VkImage", "image")]), + Proto("VkResult", "GetImageSubresourceLayout", [Param("VkDevice", "device"), Param("VkImage", "image"), @@ -492,21 +522,37 @@ core = Extension( Param("const VkImageViewCreateInfo*", "pCreateInfo"), Param("VkImageView*", "pView")]), + Proto("VkResult", "DestroyImageView", + [Param("VkDevice", "device"), + Param("VkImageView", "imageView")]), + Proto("VkResult", "CreateAttachmentView", [Param("VkDevice", "device"), Param("const VkAttachmentViewCreateInfo*", "pCreateInfo"), Param("VkAttachmentView*", "pView")]), + Proto("VkResult", "DestroyAttachmentView", + [Param("VkDevice", "device"), + Param("VkAttachmentView", "attachmentView")]), + Proto("VkResult", "CreateShaderModule", [Param("VkDevice", "device"), Param("const VkShaderModuleCreateInfo*", "pCreateInfo"), Param("VkShaderModule*", "pShaderModule")]), + Proto("VkResult", "DestroyShaderModule", + [Param("VkDevice", "device"), + Param("VkShaderModule", "shaderModule")]), + Proto("VkResult", "CreateShader", [Param("VkDevice", "device"), Param("const VkShaderCreateInfo*", "pCreateInfo"), Param("VkShader*", "pShader")]), + Proto("VkResult", "DestroyShader", + [Param("VkDevice", "device"), + Param("VkShader", "shader")]), + Proto("VkResult", "CreatePipelineCache", [Param("VkDevice", "device"), Param("const VkPipelineCacheCreateInfo*", "pCreateInfo"), @@ -545,21 +591,37 @@ core = Extension( Param("const VkComputePipelineCreateInfo*", "pCreateInfos"), Param("VkPipeline*", "pPipelines")]), + Proto("VkResult", "DestroyPipeline", + [Param("VkDevice", "device"), + Param("VkPipeline", "pipeline")]), + Proto("VkResult", "CreatePipelineLayout", [Param("VkDevice", "device"), Param("const VkPipelineLayoutCreateInfo*", "pCreateInfo"), Param("VkPipelineLayout*", "pPipelineLayout")]), + Proto("VkResult", "DestroyPipelineLayout", + [Param("VkDevice", "device"), + Param("VkPipelineLayout", "pipelineLayout")]), + Proto("VkResult", "CreateSampler", [Param("VkDevice", "device"), Param("const VkSamplerCreateInfo*", "pCreateInfo"), Param("VkSampler*", "pSampler")]), + Proto("VkResult", "DestroySampler", + [Param("VkDevice", "device"), + Param("VkSampler", "sampler")]), + Proto("VkResult", "CreateDescriptorSetLayout", [Param("VkDevice", "device"), Param("const VkDescriptorSetLayoutCreateInfo*", "pCreateInfo"), Param("VkDescriptorSetLayout*", "pSetLayout")]), + Proto("VkResult", "DestroyDescriptorSetLayout", + [Param("VkDevice", "device"), + Param("VkDescriptorSetLayout", "descriptorSetLayout")]), + Proto("VkResult", "CreateDescriptorPool", [Param("VkDevice", "device"), Param("VkDescriptorPoolUsage", "poolUsage"), @@ -567,6 +629,10 @@ core = Extension( Param("const VkDescriptorPoolCreateInfo*", "pCreateInfo"), Param("VkDescriptorPool*", "pDescriptorPool")]), + Proto("VkResult", "DestroyDescriptorPool", + [Param("VkDevice", "device"), + Param("VkDescriptorPool", "descriptorPool")]), + Proto("VkResult", "ResetDescriptorPool", [Param("VkDevice", "device"), Param("VkDescriptorPool", "descriptorPool")]), @@ -589,29 +655,49 @@ core = Extension( Proto("VkResult", "CreateDynamicViewportState", [Param("VkDevice", "device"), - Param("const VkDynamicVpStateCreateInfo*", "pCreateInfo"), - Param("VkDynamicVpState*", "pState")]), + Param("const VkDynamicViewportStateCreateInfo*", "pCreateInfo"), + Param("VkDynamicViewportState*", "pState")]), + + Proto("VkResult", "DestroyDynamicViewportState", + [Param("VkDevice", "device"), + Param("VkDynamicViewportState", "dynamicViewportState")]), Proto("VkResult", "CreateDynamicRasterState", [Param("VkDevice", "device"), - Param("const VkDynamicRsStateCreateInfo*", "pCreateInfo"), - Param("VkDynamicRsState*", "pState")]), + Param("const VkDynamicRasterStateCreateInfo*", "pCreateInfo"), + Param("VkDynamicRasterState*", "pState")]), + + Proto("VkResult", "DestroyDynamicRasterState", + [Param("VkDevice", "device"), + Param("VkDynamicRasterState", "dynamicRasterState")]), Proto("VkResult", "CreateDynamicColorBlendState", [Param("VkDevice", "device"), - Param("const VkDynamicCbStateCreateInfo*", "pCreateInfo"), - Param("VkDynamicCbState*", "pState")]), + Param("const VkDynamicColorBlendStateCreateInfo*", "pCreateInfo"), + Param("VkDynamicColorBlendState*", "pState")]), + + Proto("VkResult", "DestroyDynamicColorBlendState", + [Param("VkDevice", "device"), + Param("VkDynamicColorBlendState", "dynamicColorBlendState")]), Proto("VkResult", "CreateDynamicDepthStencilState", [Param("VkDevice", "device"), - Param("const VkDynamicDsStateCreateInfo*", "pCreateInfo"), - Param("VkDynamicDsState*", "pState")]), + Param("const VkDynamicDepthStencilStateCreateInfo*", "pCreateInfo"), + Param("VkDynamicDepthStencilState*", "pState")]), + + Proto("VkResult", "DestroyDynamicDepthStencilState", + [Param("VkDevice", "device"), + Param("VkDynamicDepthStencilState", "dynamicDepthStencilState")]), Proto("VkResult", "CreateCommandBuffer", [Param("VkDevice", "device"), Param("const VkCmdBufferCreateInfo*", "pCreateInfo"), Param("VkCmdBuffer*", "pCmdBuffer")]), + Proto("VkResult", "DestroyCommandBuffer", + [Param("VkDevice", "device"), + Param("VkCmdBuffer", "cmdBuffer")]), + Proto("VkResult", "BeginCommandBuffer", [Param("VkCmdBuffer", "cmdBuffer"), Param("const VkCmdBufferBeginInfo*", "pBeginInfo")]), @@ -627,10 +713,21 @@ core = Extension( Param("VkPipelineBindPoint", "pipelineBindPoint"), Param("VkPipeline", "pipeline")]), - Proto("void", "CmdBindDynamicStateObject", + Proto("void", "CmdBindDynamicViewportState", + [Param("VkCmdBuffer", "cmdBuffer"), + Param("VkDynamicViewportState", "dynamicViewportState")]), + + Proto("void", "CmdBindDynamicRasterState", + [Param("VkCmdBuffer", "cmdBuffer"), + Param("VkDynamicRasterState", "dynamicRasterState")]), + + Proto("void", "CmdBindDynamicColorBlendState", [Param("VkCmdBuffer", "cmdBuffer"), - Param("VkStateBindPoint", "stateBindPoint"), - Param("VkDynamicStateObject", "state")]), + Param("VkDynamicColorBlendState", "dynamicColorBlendState")]), + + Proto("void", "CmdBindDynamicDepthStencilState", + [Param("VkCmdBuffer", "cmdBuffer"), + Param("VkDynamicDepthStencilState", "dynamicDepthStencilState")]), Proto("void", "CmdBindDescriptorSets", [Param("VkCmdBuffer", "cmdBuffer"), @@ -649,7 +746,6 @@ core = Extension( Param("const VkBuffer*", "pBuffers"), Param("const VkDeviceSize*", "pOffsets")]), - Proto("void", "CmdBindIndexBuffer", [Param("VkCmdBuffer", "cmdBuffer"), Param("VkBuffer", "buffer"), @@ -860,11 +956,19 @@ core = Extension( Param("const VkFramebufferCreateInfo*", "pCreateInfo"), Param("VkFramebuffer*", "pFramebuffer")]), + Proto("VkResult", "DestroyFramebuffer", + [Param("VkDevice", "device"), + Param("VkFramebuffer", "framebuffer")]), + Proto("VkResult", "CreateRenderPass", [Param("VkDevice", "device"), Param("const VkRenderPassCreateInfo*", "pCreateInfo"), Param("VkRenderPass*", "pRenderPass")]), + Proto("VkResult", "DestroyRenderPass", + [Param("VkDevice", "device"), + Param("VkRenderPass", "renderPass")]), + Proto("void", "CmdBeginRenderPass", [Param("VkCmdBuffer", "cmdBuffer"), Param("const VkRenderPassBeginInfo*", "pRenderPassBegin"), @@ -933,7 +1037,6 @@ object_base_list = [ "VkDevice", "VkQueue", "VkDeviceMemory", - "VkObject" ] object_list = [ @@ -961,16 +1064,14 @@ object_list = [ ] object_dynamic_state_list = [ - "VkDynamicVpState", - "VkDynamicRsState", - "VkDynamicCbState", - "VkDynamicDsState" + "VkDynamicViewportState", + "VkDynamicRasterState", + "VkDynamicColorBlendState", + "VkDynamicDepthStencilState" ] object_type_list = object_root_list + object_base_list + object_list + object_dynamic_state_list -object_parent_list = ["VkObject", "VkDynamicStateObject"] - headers = [] objects = [] protos = [] |
