aboutsummaryrefslogtreecommitdiff
path: root/demos/tri.c
diff options
context:
space:
mode:
Diffstat (limited to 'demos/tri.c')
-rw-r--r--demos/tri.c119
1 files changed, 67 insertions, 52 deletions
diff --git a/demos/tri.c b/demos/tri.c
index f7217779..0621e3b3 100644
--- a/demos/tri.c
+++ b/demos/tri.c
@@ -129,7 +129,7 @@ static void demo_flush_init_cmd(struct demo *demo)
err = vkQueueWaitIdle(demo->queue);
assert(!err);
- vkDestroyObject(demo->cmd);
+ vkDestroyObject(demo->device, VK_OBJECT_TYPE_COMMAND_BUFFER, demo->cmd);
demo->cmd = VK_NULL_HANDLE;
}
@@ -305,8 +305,8 @@ static void demo_draw_build_cmd(struct demo *demo)
err = vkEndCommandBuffer(demo->cmd);
assert(!err);
- vkDestroyObject(rp_begin.renderPass);
- vkDestroyObject(rp_begin.framebuffer);
+ vkDestroyObject(demo->device, VK_OBJECT_TYPE_RENDER_PASS, rp_begin.renderPass);
+ vkDestroyObject(demo->device, VK_OBJECT_TYPE_FRAMEBUFFER, rp_begin.framebuffer);
}
static void demo_draw(struct demo *demo)
@@ -436,12 +436,16 @@ static void demo_prepare_depth(struct demo *demo)
&demo->depth.image);
assert(!err);
- err = vkGetObjectInfo(demo->depth.image, VK_OBJECT_INFO_TYPE_MEMORY_ALLOCATION_COUNT, &num_alloc_size, &num_allocations);
+ err = vkGetObjectInfo(demo->device,
+ VK_OBJECT_TYPE_IMAGE, demo->depth.image,
+ VK_OBJECT_INFO_TYPE_MEMORY_ALLOCATION_COUNT,
+ &num_alloc_size, &num_allocations);
assert(!err && num_alloc_size == sizeof(num_allocations));
mem_reqs = malloc(num_allocations * sizeof(VkMemoryRequirements));
demo->depth.mem = malloc(num_allocations * sizeof(VkDeviceMemory));
demo->depth.num_mem = num_allocations;
- err = vkGetObjectInfo(demo->depth.image,
+ err = vkGetObjectInfo(demo->device,
+ VK_OBJECT_TYPE_IMAGE, demo->depth.image,
VK_OBJECT_INFO_TYPE_MEMORY_REQUIREMENTS,
&mem_reqs_size, mem_reqs);
assert(!err && mem_reqs_size == num_allocations * sizeof(VkMemoryRequirements));
@@ -454,8 +458,9 @@ static void demo_prepare_depth(struct demo *demo)
assert(!err);
/* bind memory */
- err = vkQueueBindObjectMemory(demo->queue, demo->depth.image, i,
- demo->depth.mem[i], 0);
+ err = vkQueueBindObjectMemory(demo->queue,
+ VK_OBJECT_TYPE_IMAGE, demo->depth.image,
+ i, demo->depth.mem[i], 0);
assert(!err);
}
@@ -516,13 +521,15 @@ static void demo_prepare_texture_image(struct demo *demo,
&tex_obj->image);
assert(!err);
- err = vkGetObjectInfo(tex_obj->image,
+ err = vkGetObjectInfo(demo->device,
+ VK_OBJECT_TYPE_IMAGE, tex_obj->image,
VK_OBJECT_INFO_TYPE_MEMORY_ALLOCATION_COUNT,
&num_alloc_size, &num_allocations);
assert(!err && num_alloc_size == sizeof(num_allocations));
mem_reqs = malloc(num_allocations * sizeof(VkMemoryRequirements));
tex_obj->mem = malloc(num_allocations * sizeof(VkDeviceMemory));
- err = vkGetObjectInfo(tex_obj->image,
+ err = vkGetObjectInfo(demo->device,
+ VK_OBJECT_TYPE_IMAGE, tex_obj->image,
VK_OBJECT_INFO_TYPE_MEMORY_REQUIREMENTS,
&mem_reqs_size, mem_reqs);
assert(!err && mem_reqs_size == num_allocations * sizeof(VkMemoryRequirements));
@@ -536,7 +543,9 @@ static void demo_prepare_texture_image(struct demo *demo,
assert(!err);
/* bind memory */
- err = vkQueueBindObjectMemory(demo->queue, tex_obj->image, j, tex_obj->mem[j], 0);
+ err = vkQueueBindObjectMemory(demo->queue,
+ VK_OBJECT_TYPE_IMAGE, tex_obj->image,
+ j, tex_obj->mem[j], 0);
assert(!err);
}
free(mem_reqs);
@@ -555,14 +564,14 @@ static void demo_prepare_texture_image(struct demo *demo,
void *data;
int32_t x, y;
- err = vkGetImageSubresourceInfo(tex_obj->image, &subres,
+ err = vkGetImageSubresourceInfo(demo->device, tex_obj->image, &subres,
VK_SUBRESOURCE_INFO_TYPE_LAYOUT,
&layout_size, &layout);
assert(!err && layout_size == sizeof(layout));
/* Linear texture must be within a single memory object */
assert(num_allocations == 1);
- err = vkMapMemory(tex_obj->mem[0], 0, 0, 0, &data);
+ err = vkMapMemory(demo->device, tex_obj->mem[0], 0, 0, 0, &data);
assert(!err);
for (y = 0; y < tex_height; y++) {
@@ -571,7 +580,7 @@ static void demo_prepare_texture_image(struct demo *demo,
row[x] = tex_colors[(x & 1) ^ (y & 1)];
}
- err = vkUnmapMemory(tex_obj->mem[0]);
+ err = vkUnmapMemory(demo->device, tex_obj->mem[0]);
assert(!err);
}
@@ -586,12 +595,13 @@ static void demo_destroy_texture_image(struct demo *demo, struct texture_object
{
/* clean up staging resources */
for (uint32_t j = 0; j < tex_obj->num_mem; j ++) {
- vkQueueBindObjectMemory(demo->queue, tex_obj->image, j, VK_NULL_HANDLE, 0);
- vkFreeMemory(tex_obj->mem[j]);
+ vkQueueBindObjectMemory(demo->queue,
+ VK_OBJECT_TYPE_IMAGE, tex_obj->image, j, VK_NULL_HANDLE, 0);
+ vkFreeMemory(demo->device, tex_obj->mem[j]);
}
free(tex_obj->mem);
- vkDestroyObject(tex_obj->image);
+ vkDestroyObject(demo->device, VK_OBJECT_TYPE_IMAGE, tex_obj->image);
}
static void demo_prepare_textures(struct demo *demo)
@@ -739,14 +749,16 @@ static void demo_prepare_vertices(struct demo *demo)
err = vkCreateBuffer(demo->device, &buf_info, &demo->vertices.buf);
assert(!err);
- err = vkGetObjectInfo(demo->vertices.buf,
+ err = vkGetObjectInfo(demo->device,
+ VK_OBJECT_TYPE_BUFFER, demo->vertices.buf,
VK_OBJECT_INFO_TYPE_MEMORY_ALLOCATION_COUNT,
&num_alloc_size, &num_allocations);
assert(!err && num_alloc_size == sizeof(num_allocations));
mem_reqs = malloc(num_allocations * sizeof(VkMemoryRequirements));
demo->vertices.mem = malloc(num_allocations * sizeof(VkDeviceMemory));
demo->vertices.num_mem = num_allocations;
- err = vkGetObjectInfo(demo->vertices.buf,
+ err = vkGetObjectInfo(demo->device,
+ VK_OBJECT_TYPE_BUFFER, demo->vertices.buf,
VK_OBJECT_INFO_TYPE_MEMORY_REQUIREMENTS,
&mem_reqs_size, mem_reqs);
assert(!err && mem_reqs_size == sizeof(*mem_reqs));
@@ -756,15 +768,17 @@ static void demo_prepare_vertices(struct demo *demo)
err = vkAllocMemory(demo->device, &mem_alloc, &demo->vertices.mem[i]);
assert(!err);
- err = vkMapMemory(demo->vertices.mem[i], 0, 0, 0, &data);
+ err = vkMapMemory(demo->device, demo->vertices.mem[i], 0, 0, 0, &data);
assert(!err);
memcpy(data, vb, sizeof(vb));
- err = vkUnmapMemory(demo->vertices.mem[i]);
+ err = vkUnmapMemory(demo->device, demo->vertices.mem[i]);
assert(!err);
- err = vkQueueBindObjectMemory(demo->queue, demo->vertices.buf, i, demo->vertices.mem[i], 0);
+ err = vkQueueBindObjectMemory(demo->queue,
+ VK_OBJECT_TYPE_BUFFER, demo->vertices.buf,
+ i, demo->vertices.mem[i], 0);
assert(!err);
}
@@ -852,7 +866,7 @@ static VkShader demo_prepare_shader(struct demo *demo,
err = vkCreateShader(demo->device, &createInfo, &shader);
if (err) {
free((void *) createInfo.pCode);
- return NULL;
+ return VK_NULL_HANDLE;
}
return shader;
@@ -983,8 +997,8 @@ static void demo_prepare_pipeline(struct demo *demo)
err = vkCreateGraphicsPipeline(demo->device, &pipeline, &demo->pipeline);
assert(!err);
- vkDestroyObject(vs.shader.shader);
- vkDestroyObject(fs.shader.shader);
+ vkDestroyObject(demo->device, VK_OBJECT_TYPE_SHADER, vs.shader.shader);
+ vkDestroyObject(demo->device, VK_OBJECT_TYPE_SHADER, fs.shader.shader);
}
static void demo_prepare_dynamic_states(struct demo *demo)
@@ -1094,7 +1108,7 @@ static void demo_prepare_descriptor_set(struct demo *demo)
update.count = DEMO_TEXTURE_COUNT;
update.pSamplerImageViews = combined_info;
- err = vkAllocDescriptorSets(demo->desc_pool,
+ err = vkAllocDescriptorSets(demo->device, demo->desc_pool,
VK_DESCRIPTOR_SET_USAGE_STATIC,
1, &demo->desc_layout,
&demo->desc_set, &count);
@@ -1103,8 +1117,8 @@ static void demo_prepare_descriptor_set(struct demo *demo)
vkBeginDescriptorPoolUpdate(demo->device,
VK_DESCRIPTOR_UPDATE_MODE_FASTEST);
- vkClearDescriptorSets(demo->desc_pool, 1, &demo->desc_set);
- vkUpdateDescriptors(demo->desc_set, 1, update_array);
+ vkClearDescriptorSets(demo->device, demo->desc_pool, 1, &demo->desc_set);
+ vkUpdateDescriptors(demo->device, demo->desc_set, 1, update_array);
vkEndDescriptorPoolUpdate(demo->device, demo->cmd);
}
@@ -1391,7 +1405,7 @@ static void demo_init_vk(struct demo *demo)
err = vkGetPhysicalDeviceInfo(demo->gpu, VK_PHYSICAL_DEVICE_INFO_TYPE_QUEUE_PROPERTIES,
&data_size, demo->queue_props);
assert(!err);
- queue_count = (uint32_t) (data_size / sizeof(VkPhysicalDeviceQueueProperties));
+ queue_count = (uint32_t) (data_size / sizeof(VkPhysicalDeviceQueueProperties));
assert(queue_count >= 1);
for (i = 0; i < queue_count; i++) {
@@ -1476,46 +1490,47 @@ static void demo_cleanup(struct demo *demo)
{
uint32_t i, j;
- vkDestroyObject(demo->desc_set);
- vkDestroyObject(demo->desc_pool);
+ vkDestroyObject(demo->device, VK_OBJECT_TYPE_DESCRIPTOR_SET, demo->desc_set);
+ vkDestroyObject(demo->device, VK_OBJECT_TYPE_DESCRIPTOR_POOL, demo->desc_pool);
- vkDestroyObject(demo->cmd);
+ vkDestroyObject(demo->device, VK_OBJECT_TYPE_COMMAND_BUFFER, demo->cmd);
- vkDestroyObject(demo->viewport);
- vkDestroyObject(demo->raster);
- vkDestroyObject(demo->color_blend);
- vkDestroyObject(demo->depth_stencil);
+ 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);
- vkDestroyObject(demo->pipeline);
- vkDestroyObject(demo->pipeline_layout);
- vkDestroyObject(demo->desc_layout);
+ vkDestroyObject(demo->device, VK_OBJECT_TYPE_PIPELINE, demo->pipeline);
+ vkDestroyObject(demo->device, VK_OBJECT_TYPE_PIPELINE_LAYOUT, demo->pipeline_layout);
+ vkDestroyObject(demo->device, VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT, demo->desc_layout);
- vkQueueBindObjectMemory(demo->queue, demo->vertices.buf, 0, VK_NULL_HANDLE, 0);
- vkDestroyObject(demo->vertices.buf);
+ vkQueueBindObjectMemory(demo->queue, VK_OBJECT_TYPE_BUFFER, demo->vertices.buf, 0, VK_NULL_HANDLE, 0);
+ vkDestroyObject(demo->device, VK_OBJECT_TYPE_BUFFER, demo->vertices.buf);
demo_remove_mem_refs(demo, demo->vertices.num_mem, demo->vertices.mem);
for (j = 0; j < demo->vertices.num_mem; j++)
- vkFreeMemory(demo->vertices.mem[j]);
+ vkFreeMemory(demo->device, demo->vertices.mem[j]);
for (i = 0; i < DEMO_TEXTURE_COUNT; i++) {
- vkDestroyObject(demo->textures[i].view);
- vkQueueBindObjectMemory(demo->queue, demo->textures[i].image, 0, VK_NULL_HANDLE, 0);
- vkDestroyObject(demo->textures[i].image);
+ vkDestroyObject(demo->device, VK_OBJECT_TYPE_IMAGE_VIEW, demo->textures[i].view);
+ vkQueueBindObjectMemory(demo->queue, VK_OBJECT_TYPE_IMAGE, demo->textures[i].image, 0, VK_NULL_HANDLE, 0);
+ vkDestroyObject(demo->device, VK_OBJECT_TYPE_IMAGE, demo->textures[i].image);
demo_remove_mem_refs(demo, demo->textures[i].num_mem, demo->textures[i].mem);
for (j = 0; j < demo->textures[i].num_mem; j++)
- vkFreeMemory(demo->textures[i].mem[j]);
+ vkFreeMemory(demo->device, demo->textures[i].mem[j]);
free(demo->textures[i].mem);
- vkDestroyObject(demo->textures[i].sampler);
+ vkDestroyObject(demo->device, VK_OBJECT_TYPE_SAMPLER, demo->textures[i].sampler);
}
- vkDestroyObject(demo->depth.view);
- vkQueueBindObjectMemory(demo->queue, demo->depth.image, 0, VK_NULL_HANDLE, 0);
+ vkDestroyObject(demo->device, VK_OBJECT_TYPE_DEPTH_STENCIL_VIEW, demo->depth.view);
+ vkQueueBindObjectMemory(demo->queue, VK_OBJECT_TYPE_IMAGE, demo->depth.image, 0, VK_NULL_HANDLE, 0);
demo_remove_mem_refs(demo, demo->depth.num_mem, demo->depth.mem);
- vkDestroyObject(demo->depth.image);
- for (j = 0; j < demo->depth.num_mem; j++)
- vkFreeMemory(demo->depth.mem[j]);
+ vkDestroyObject(demo->device, VK_OBJECT_TYPE_IMAGE, demo->depth.image);
+ for (j = 0; j < demo->depth.num_mem; j++) {
+ vkFreeMemory(demo->device, demo->depth.mem[j]);
+ }
for (i = 0; i < DEMO_BUFFER_COUNT; i++) {
- vkDestroyObject(demo->buffers[i].view);
+ vkDestroyObject(demo->device, VK_OBJECT_TYPE_COLOR_ATTACHMENT_VIEW, demo->buffers[i].view);
demo_remove_mem_refs(demo, 1, &demo->buffers[i].mem);
}
vkDestroySwapChainWSI(demo->swap_chain);