aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTony Barbour <tony@LunarG.com>2015-07-03 10:33:54 -0600
committerCourtney Goeltzenleuchter <courtney@LunarG.com>2015-07-17 10:05:18 -0600
commit155cce8cc60c92f57aeba7e6289e5738983c6e22 (patch)
tree0b374ecffd0bba71632353dd4a3a8329608b6d15
parentd167258bcd8116a044eb829a0ce5a471af0c69e4 (diff)
downloadusermoji-155cce8cc60c92f57aeba7e6289e5738983c6e22.tar.xz
Bug 14084 - Improve type safety and remove polymorphism
-rw-r--r--CMakeLists.txt14
-rw-r--r--demos/cube.c120
-rw-r--r--demos/tri.c131
-rw-r--r--demos/vulkaninfo.c1
-rw-r--r--icd/common/icd-instance.c9
-rw-r--r--icd/common/icd-instance.h4
-rw-r--r--icd/nulldrv/nulldrv.c339
-rw-r--r--include/vk_debug_marker_lunarg.h16
-rw-r--r--include/vk_debug_report_lunarg.h63
-rw-r--r--include/vk_icd.h4
-rw-r--r--include/vk_layer.h42
-rw-r--r--include/vk_wsi_lunarg.h12
-rw-r--r--include/vulkan.h380
-rw-r--r--layers/vk_layer_logging.h8
-rw-r--r--layers/vk_layer_table.h10
-rw-r--r--loader/debug_report.c23
-rw-r--r--loader/gpa_helper.h70
-rw-r--r--loader/loader.c28
-rw-r--r--loader/loader.h8
-rw-r--r--loader/table_ops.h105
-rw-r--r--loader/trampoline.c269
-rwxr-xr-xvulkan.py169
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 **) &image;
}
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;
diff --git a/vulkan.py b/vulkan.py
index 123fccf4..dd816313 100755
--- a/vulkan.py
+++ b/vulkan.py
@@ -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 = []