From 53569e56bb3b73c4c89c70f2abb009a72df6e70f Mon Sep 17 00:00:00 2001 From: baldurk Date: Fri, 22 Nov 2019 11:38:15 +0000 Subject: [PATCH] Allow AllocatedBuffer/AllocatedImage to be copied around in vulkan tests * Instead of tracking their lifetime with that object, we move the lifetime tracking into the parent VulkanGraphicsTest and destroy them all at the end. A single handle can optionally be free'd on its own. --- util/test/demos/vk/vk_adv_cbuffer_zoo.cpp | 8 +-- util/test/demos/vk/vk_buffer_address.cpp | 3 +- util/test/demos/vk/vk_cbuffer_zoo.cpp | 10 +-- util/test/demos/vk/vk_descriptor_index.cpp | 25 ++++--- util/test/demos/vk/vk_discard_rects.cpp | 2 +- util/test/demos/vk/vk_draw_zoo.cpp | 18 ++--- util/test/demos/vk/vk_image_layouts.cpp | 12 ++-- .../demos/vk/vk_imageless_framebuffer.cpp | 4 +- util/test/demos/vk/vk_indirect.cpp | 6 +- util/test/demos/vk/vk_int8_ibuffer.cpp | 7 +- util/test/demos/vk/vk_line_raster.cpp | 4 +- util/test/demos/vk/vk_misaligned_dirty.cpp | 9 ++- .../test/demos/vk/vk_multi_thread_windows.cpp | 4 +- util/test/demos/vk/vk_overlay_test.cpp | 12 ++-- util/test/demos/vk/vk_parameter_zoo.cpp | 8 +-- util/test/demos/vk/vk_resource_lifetimes.cpp | 22 +++---- util/test/demos/vk/vk_sample_locations.cpp | 15 ++--- util/test/demos/vk/vk_secondary_cmdbuf.cpp | 4 +- util/test/demos/vk/vk_shader_editing.cpp | 6 +- util/test/demos/vk/vk_simple_triangle.cpp | 4 +- util/test/demos/vk/vk_spec_constants.cpp | 8 +-- util/test/demos/vk/vk_spirv_13_shaders.cpp | 5 +- .../demos/vk/vk_structured_buffer_nested.cpp | 13 ++-- util/test/demos/vk/vk_test.cpp | 40 ++++++++++- util/test/demos/vk/vk_test.h | 66 ++++++------------- util/test/demos/vk/vk_triangle_fan.cpp | 4 +- util/test/demos/vk/vk_vertex_attr_zoo.cpp | 2 +- util/test/demos/vk/vk_video_textures.cpp | 23 +++---- util/test/demos/vk/vk_vs_max_desc_set.cpp | 16 ++--- 29 files changed, 182 insertions(+), 178 deletions(-) diff --git a/util/test/demos/vk/vk_adv_cbuffer_zoo.cpp b/util/test/demos/vk/vk_adv_cbuffer_zoo.cpp index c4ba75f03..b7dfb8885 100644 --- a/util/test/demos/vk/vk_adv_cbuffer_zoo.cpp +++ b/util/test/demos/vk/vk_adv_cbuffer_zoo.cpp @@ -299,8 +299,8 @@ void main() VkPipeline pipe = createGraphicsPipeline(pipeCreateInfo); AllocatedBuffer vb( - allocator, vkh::BufferCreateInfo(sizeof(DefaultTri), VK_BUFFER_USAGE_VERTEX_BUFFER_BIT | - VK_BUFFER_USAGE_TRANSFER_DST_BIT), + this, vkh::BufferCreateInfo(sizeof(DefaultTri), VK_BUFFER_USAGE_VERTEX_BUFFER_BIT | + VK_BUFFER_USAGE_TRANSFER_DST_BIT), VmaAllocationCreateInfo({0, VMA_MEMORY_USAGE_CPU_TO_GPU})); vb.upload(DefaultTri); @@ -349,8 +349,8 @@ void main() cbufferdata.s = 19472; // 16.25f AllocatedBuffer cb( - allocator, vkh::BufferCreateInfo(sizeof(cbufferdata), VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT | - VK_BUFFER_USAGE_TRANSFER_DST_BIT), + this, vkh::BufferCreateInfo(sizeof(cbufferdata), VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT | + VK_BUFFER_USAGE_TRANSFER_DST_BIT), VmaAllocationCreateInfo({0, VMA_MEMORY_USAGE_CPU_TO_GPU})); cb.upload(&cbufferdata, sizeof(cbufferdata)); diff --git a/util/test/demos/vk/vk_buffer_address.cpp b/util/test/demos/vk/vk_buffer_address.cpp index d3e20e5d9..8027a5f13 100644 --- a/util/test/demos/vk/vk_buffer_address.cpp +++ b/util/test/demos/vk/vk_buffer_address.cpp @@ -159,8 +159,7 @@ void main() vkh::BufferCreateInfo bufinfo(0x100000, VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT); - AllocatedBuffer databuf(allocator, bufinfo, - VmaAllocationCreateInfo({0, VMA_MEMORY_USAGE_CPU_TO_GPU})); + AllocatedBuffer databuf(this, bufinfo, VmaAllocationCreateInfo({0, VMA_MEMORY_USAGE_CPU_TO_GPU})); // north-facing primary colours triangle const DefaultA2V tri1[3] = { diff --git a/util/test/demos/vk/vk_cbuffer_zoo.cpp b/util/test/demos/vk/vk_cbuffer_zoo.cpp index 9c0ff07d6..373521766 100644 --- a/util/test/demos/vk/vk_cbuffer_zoo.cpp +++ b/util/test/demos/vk/vk_cbuffer_zoo.cpp @@ -528,7 +528,7 @@ float4 main() : SV_Target0 VkPipelineLayout layout = createPipelineLayout(vkh::PipelineLayoutCreateInfo({setlayout})); AllocatedImage img( - allocator, + this, vkh::ImageCreateInfo(mainWindow->scissor.extent.width, mainWindow->scissor.extent.height, 0, VK_FORMAT_R32G32B32A32_SFLOAT, VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT | VK_IMAGE_USAGE_TRANSFER_SRC_BIT), @@ -592,8 +592,8 @@ float4 main() : SV_Target0 VkPipeline hlslpipe = createGraphicsPipeline(pipeCreateInfo); AllocatedBuffer vb( - allocator, vkh::BufferCreateInfo(sizeof(DefaultTri), VK_BUFFER_USAGE_VERTEX_BUFFER_BIT | - VK_BUFFER_USAGE_TRANSFER_DST_BIT), + this, vkh::BufferCreateInfo(sizeof(DefaultTri), VK_BUFFER_USAGE_VERTEX_BUFFER_BIT | + VK_BUFFER_USAGE_TRANSFER_DST_BIT), VmaAllocationCreateInfo({0, VMA_MEMORY_USAGE_CPU_TO_GPU})); vb.upload(DefaultTri); @@ -604,8 +604,8 @@ float4 main() : SV_Target0 cbufferdata[i] = Vec4f(float(i * 4 + 0), float(i * 4 + 1), float(i * 4 + 2), float(i * 4 + 3)); AllocatedBuffer cb( - allocator, vkh::BufferCreateInfo(sizeof(cbufferdata), VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT | - VK_BUFFER_USAGE_TRANSFER_DST_BIT), + this, vkh::BufferCreateInfo(sizeof(cbufferdata), VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT | + VK_BUFFER_USAGE_TRANSFER_DST_BIT), VmaAllocationCreateInfo({0, VMA_MEMORY_USAGE_CPU_TO_GPU})); cb.upload(cbufferdata); diff --git a/util/test/demos/vk/vk_descriptor_index.cpp b/util/test/demos/vk/vk_descriptor_index.cpp index bb7ac8a81..97bef5860 100644 --- a/util/test/demos/vk/vk_descriptor_index.cpp +++ b/util/test/demos/vk/vk_descriptor_index.cpp @@ -341,17 +341,16 @@ void main() {Vec3f(0.5f, -0.5f, 0.0f), Vec4f(0.0f, 0.0f, 1.0f, right), Vec2f(1.0f, 0.0f)}, }; - AllocatedBuffer vb(allocator, - vkh::BufferCreateInfo(sizeof(tri), VK_BUFFER_USAGE_VERTEX_BUFFER_BIT | - VK_BUFFER_USAGE_TRANSFER_DST_BIT), + AllocatedBuffer vb(this, vkh::BufferCreateInfo(sizeof(tri), VK_BUFFER_USAGE_VERTEX_BUFFER_BIT | + VK_BUFFER_USAGE_TRANSFER_DST_BIT), VmaAllocationCreateInfo({0, VMA_MEMORY_USAGE_CPU_TO_GPU})); vb.upload(tri); - AllocatedImage img(allocator, vkh::ImageCreateInfo( - 4, 4, 0, VK_FORMAT_R32G32B32A32_SFLOAT, - VK_IMAGE_USAGE_TRANSFER_DST_BIT | VK_IMAGE_USAGE_SAMPLED_BIT), - VmaAllocationCreateInfo({0, VMA_MEMORY_USAGE_GPU_ONLY})); + AllocatedImage img( + this, vkh::ImageCreateInfo(4, 4, 0, VK_FORMAT_R32G32B32A32_SFLOAT, + VK_IMAGE_USAGE_TRANSFER_DST_BIT | VK_IMAGE_USAGE_SAMPLED_BIT), + VmaAllocationCreateInfo({0, VMA_MEMORY_USAGE_GPU_ONLY})); setName(img.image, "Colour Tex"); @@ -363,17 +362,17 @@ void main() pixels[i] = RANDF(0.2f, 1.0f); AllocatedBuffer uploadBuf( - allocator, vkh::BufferCreateInfo(sizeof(pixels), VK_BUFFER_USAGE_TRANSFER_SRC_BIT), + this, vkh::BufferCreateInfo(sizeof(pixels), VK_BUFFER_USAGE_TRANSFER_SRC_BIT), VmaAllocationCreateInfo({0, VMA_MEMORY_USAGE_CPU_TO_GPU})); uploadBuf.upload(pixels); // create an image with black contents for all the indices we aren't using - AllocatedImage badimg(allocator, vkh::ImageCreateInfo(4, 4, 0, VK_FORMAT_R32G32B32A32_SFLOAT, - VK_IMAGE_USAGE_TRANSFER_DST_BIT | - VK_IMAGE_USAGE_SAMPLED_BIT), - VmaAllocationCreateInfo({0, VMA_MEMORY_USAGE_GPU_ONLY})); + AllocatedImage badimg( + this, vkh::ImageCreateInfo(4, 4, 0, VK_FORMAT_R32G32B32A32_SFLOAT, + VK_IMAGE_USAGE_TRANSFER_DST_BIT | VK_IMAGE_USAGE_SAMPLED_BIT), + VmaAllocationCreateInfo({0, VMA_MEMORY_USAGE_GPU_ONLY})); setName(badimg.image, "Black Tex"); @@ -480,7 +479,7 @@ void main() vkh::updateDescriptorSets(device, ups); - AllocatedBuffer ssbo(allocator, + AllocatedBuffer ssbo(this, vkh::BufferCreateInfo(1024 * 1024, VK_BUFFER_USAGE_STORAGE_BUFFER_BIT | VK_BUFFER_USAGE_TRANSFER_DST_BIT), VmaAllocationCreateInfo({0, VMA_MEMORY_USAGE_GPU_ONLY})); diff --git a/util/test/demos/vk/vk_discard_rects.cpp b/util/test/demos/vk/vk_discard_rects.cpp index b7dfda322..8a86860ef 100644 --- a/util/test/demos/vk/vk_discard_rects.cpp +++ b/util/test/demos/vk/vk_discard_rects.cpp @@ -155,7 +155,7 @@ void main() trispam[i].uv = Vec2f(0.0f, 0.0f); } - AllocatedBuffer vb(allocator, + AllocatedBuffer vb(this, vkh::BufferCreateInfo(sizeof(trispam), VK_BUFFER_USAGE_VERTEX_BUFFER_BIT | VK_BUFFER_USAGE_TRANSFER_DST_BIT), VmaAllocationCreateInfo({0, VMA_MEMORY_USAGE_CPU_TO_GPU})); diff --git a/util/test/demos/vk/vk_draw_zoo.cpp b/util/test/demos/vk/vk_draw_zoo.cpp index d02d09094..1bbdc5643 100644 --- a/util/test/demos/vk/vk_draw_zoo.cpp +++ b/util/test/demos/vk/vk_draw_zoo.cpp @@ -156,9 +156,9 @@ void main() {Vec3f(0.5f, 0.0f, 0.0f), Vec4f(1.0f, 0.1f, 1.0f, 1.0f), Vec2f(1.0f, 0.0f)}, }; - AllocatedBuffer vb1(allocator, vkh::BufferCreateInfo(sizeof(DefaultA2V) * 66000, - VK_BUFFER_USAGE_VERTEX_BUFFER_BIT | - VK_BUFFER_USAGE_TRANSFER_DST_BIT), + AllocatedBuffer vb1(this, vkh::BufferCreateInfo(sizeof(DefaultA2V) * 66000, + VK_BUFFER_USAGE_VERTEX_BUFFER_BIT | + VK_BUFFER_USAGE_TRANSFER_DST_BIT), VmaAllocationCreateInfo({0, VMA_MEMORY_USAGE_CPU_TO_GPU})); { @@ -225,8 +225,8 @@ void main() } AllocatedBuffer vb2( - allocator, vkh::BufferCreateInfo(sizeof(Vec4f) * 16, VK_BUFFER_USAGE_VERTEX_BUFFER_BIT | - VK_BUFFER_USAGE_TRANSFER_DST_BIT), + this, vkh::BufferCreateInfo(sizeof(Vec4f) * 16, VK_BUFFER_USAGE_VERTEX_BUFFER_BIT | + VK_BUFFER_USAGE_TRANSFER_DST_BIT), VmaAllocationCreateInfo({0, VMA_MEMORY_USAGE_CPU_TO_GPU})); { @@ -246,10 +246,10 @@ void main() vb2.unmap(); } - AllocatedBuffer ib1(allocator, vkh::BufferCreateInfo(sizeof(uint32_t) * 100, - VK_BUFFER_USAGE_INDEX_BUFFER_BIT | - VK_BUFFER_USAGE_TRANSFER_DST_BIT), - VmaAllocationCreateInfo({0, VMA_MEMORY_USAGE_CPU_TO_GPU})); + AllocatedBuffer ib1( + this, vkh::BufferCreateInfo(sizeof(uint32_t) * 100, VK_BUFFER_USAGE_INDEX_BUFFER_BIT | + VK_BUFFER_USAGE_TRANSFER_DST_BIT), + VmaAllocationCreateInfo({0, VMA_MEMORY_USAGE_CPU_TO_GPU})); { uint16_t *dst = (uint16_t *)ib1.map(); diff --git a/util/test/demos/vk/vk_image_layouts.cpp b/util/test/demos/vk/vk_image_layouts.cpp index 2c3aa8842..64d11fd41 100644 --- a/util/test/demos/vk/vk_image_layouts.cpp +++ b/util/test/demos/vk/vk_image_layouts.cpp @@ -101,8 +101,8 @@ void main() VkPipeline pipe = createGraphicsPipeline(pipeCreateInfo); AllocatedBuffer vb( - allocator, vkh::BufferCreateInfo(sizeof(DefaultTri), VK_BUFFER_USAGE_VERTEX_BUFFER_BIT | - VK_BUFFER_USAGE_TRANSFER_DST_BIT), + this, vkh::BufferCreateInfo(sizeof(DefaultTri), VK_BUFFER_USAGE_VERTEX_BUFFER_BIT | + VK_BUFFER_USAGE_TRANSFER_DST_BIT), VmaAllocationCreateInfo({0, VMA_MEMORY_USAGE_CPU_TO_GPU})); vb.upload(DefaultTri); @@ -128,10 +128,10 @@ void main() setName(preinitImg, "Image:Preinitialised"); - AllocatedImage undefImg(allocator, vkh::ImageCreateInfo(4, 4, 0, VK_FORMAT_R8G8B8A8_UNORM, - VK_IMAGE_USAGE_TRANSFER_DST_BIT | - VK_IMAGE_USAGE_SAMPLED_BIT), - VmaAllocationCreateInfo({0, VMA_MEMORY_USAGE_GPU_ONLY})); + AllocatedImage undefImg( + this, vkh::ImageCreateInfo(4, 4, 0, VK_FORMAT_R8G8B8A8_UNORM, + VK_IMAGE_USAGE_TRANSFER_DST_BIT | VK_IMAGE_USAGE_SAMPLED_BIT), + VmaAllocationCreateInfo({0, VMA_MEMORY_USAGE_GPU_ONLY})); setName(undefImg.image, "Image:Undefined"); diff --git a/util/test/demos/vk/vk_imageless_framebuffer.cpp b/util/test/demos/vk/vk_imageless_framebuffer.cpp index e46789727..42336e903 100644 --- a/util/test/demos/vk/vk_imageless_framebuffer.cpp +++ b/util/test/demos/vk/vk_imageless_framebuffer.cpp @@ -125,8 +125,8 @@ void main() VkPipeline pipe = createGraphicsPipeline(pipeCreateInfo); AllocatedBuffer vb( - allocator, vkh::BufferCreateInfo(sizeof(DefaultTri), VK_BUFFER_USAGE_VERTEX_BUFFER_BIT | - VK_BUFFER_USAGE_TRANSFER_DST_BIT), + this, vkh::BufferCreateInfo(sizeof(DefaultTri), VK_BUFFER_USAGE_VERTEX_BUFFER_BIT | + VK_BUFFER_USAGE_TRANSFER_DST_BIT), VmaAllocationCreateInfo({0, VMA_MEMORY_USAGE_CPU_TO_GPU})); vb.upload(DefaultTri); diff --git a/util/test/demos/vk/vk_indirect.cpp b/util/test/demos/vk/vk_indirect.cpp index 2ae1ed32a..00113181d 100644 --- a/util/test/demos/vk/vk_indirect.cpp +++ b/util/test/demos/vk/vk_indirect.cpp @@ -233,7 +233,7 @@ void main() {Vec3f(0.1f, -0.2f, 0.0f), Vec4f(0.0f, 0.0f, 1.0f, 1.0f), Vec2f(1.0f, 0.0f)}, }; - AllocatedBuffer vb(allocator, + AllocatedBuffer vb(this, vkh::BufferCreateInfo(sizeof(vbdata), VK_BUFFER_USAGE_VERTEX_BUFFER_BIT | VK_BUFFER_USAGE_TRANSFER_DST_BIT), VmaAllocationCreateInfo({0, VMA_MEMORY_USAGE_CPU_TO_GPU})); @@ -241,7 +241,7 @@ void main() vb.upload(vbdata); uint32_t indices[18] = {6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23}; - AllocatedBuffer ib(allocator, + AllocatedBuffer ib(this, vkh::BufferCreateInfo(sizeof(indices), VK_BUFFER_USAGE_INDEX_BUFFER_BIT | VK_BUFFER_USAGE_TRANSFER_DST_BIT), VmaAllocationCreateInfo({0, VMA_MEMORY_USAGE_CPU_TO_GPU})); @@ -250,7 +250,7 @@ void main() VkDeviceSize ssbo_size = 16 * 1024; - AllocatedBuffer ssbo(allocator, + AllocatedBuffer ssbo(this, vkh::BufferCreateInfo(ssbo_size, VK_BUFFER_USAGE_STORAGE_BUFFER_BIT | VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT | VK_BUFFER_USAGE_TRANSFER_DST_BIT), diff --git a/util/test/demos/vk/vk_int8_ibuffer.cpp b/util/test/demos/vk/vk_int8_ibuffer.cpp index 48aa97b4c..a967e2286 100644 --- a/util/test/demos/vk/vk_int8_ibuffer.cpp +++ b/util/test/demos/vk/vk_int8_ibuffer.cpp @@ -128,7 +128,7 @@ void main() {Vec3f(0.4f, -0.2f, 0.0f), Vec4f(1.0f, 1.0f, 0.0f, 1.0f), Vec2f(0.0f, 0.0f)}, }; - AllocatedBuffer vb(allocator, + AllocatedBuffer vb(this, vkh::BufferCreateInfo(sizeof(strip), VK_BUFFER_USAGE_VERTEX_BUFFER_BIT | VK_BUFFER_USAGE_TRANSFER_DST_BIT), VmaAllocationCreateInfo({0, VMA_MEMORY_USAGE_CPU_TO_GPU})); @@ -146,9 +146,8 @@ void main() 8, 9, 10, 11, 12, 13, 14, 15, }; - AllocatedBuffer ib(allocator, - vkh::BufferCreateInfo(sizeof(idx), VK_BUFFER_USAGE_INDEX_BUFFER_BIT | - VK_BUFFER_USAGE_TRANSFER_DST_BIT), + AllocatedBuffer ib(this, vkh::BufferCreateInfo(sizeof(idx), VK_BUFFER_USAGE_INDEX_BUFFER_BIT | + VK_BUFFER_USAGE_TRANSFER_DST_BIT), VmaAllocationCreateInfo({0, VMA_MEMORY_USAGE_CPU_TO_GPU})); ib.upload(idx); diff --git a/util/test/demos/vk/vk_line_raster.cpp b/util/test/demos/vk/vk_line_raster.cpp index 7948c3c2a..15183a100 100644 --- a/util/test/demos/vk/vk_line_raster.cpp +++ b/util/test/demos/vk/vk_line_raster.cpp @@ -115,8 +115,8 @@ void main() }; AllocatedBuffer vb( - allocator, vkh::BufferCreateInfo(sizeof(linePoints), VK_BUFFER_USAGE_VERTEX_BUFFER_BIT | - VK_BUFFER_USAGE_TRANSFER_DST_BIT), + this, vkh::BufferCreateInfo(sizeof(linePoints), VK_BUFFER_USAGE_VERTEX_BUFFER_BIT | + VK_BUFFER_USAGE_TRANSFER_DST_BIT), VmaAllocationCreateInfo({0, VMA_MEMORY_USAGE_CPU_TO_GPU})); vb.upload(linePoints); diff --git a/util/test/demos/vk/vk_misaligned_dirty.cpp b/util/test/demos/vk/vk_misaligned_dirty.cpp index 54a2125df..c18e80f8d 100644 --- a/util/test/demos/vk/vk_misaligned_dirty.cpp +++ b/util/test/demos/vk/vk_misaligned_dirty.cpp @@ -108,16 +108,15 @@ void main() {Vec3f(val, -val, val), Vec4f(0.0f, 1.0f, 0.0f, 1.0f), Vec2f(1.0f, 0.0f)}, }; - AllocatedBuffer vb(allocator, - vkh::BufferCreateInfo(sizeof(tri), VK_BUFFER_USAGE_VERTEX_BUFFER_BIT | - VK_BUFFER_USAGE_TRANSFER_DST_BIT), + AllocatedBuffer vb(this, vkh::BufferCreateInfo(sizeof(tri), VK_BUFFER_USAGE_VERTEX_BUFFER_BIT | + VK_BUFFER_USAGE_TRANSFER_DST_BIT), VmaAllocationCreateInfo({0, VMA_MEMORY_USAGE_CPU_TO_GPU})); vb.upload(tri); AllocatedBuffer copy_src( - allocator, vkh::BufferCreateInfo(sizeof(tri), VK_BUFFER_USAGE_TRANSFER_SRC_BIT | - VK_BUFFER_USAGE_TRANSFER_DST_BIT), + this, vkh::BufferCreateInfo( + sizeof(tri), VK_BUFFER_USAGE_TRANSFER_SRC_BIT | VK_BUFFER_USAGE_TRANSFER_DST_BIT), VmaAllocationCreateInfo({0, VMA_MEMORY_USAGE_CPU_TO_GPU})); copy_src.upload(tri); diff --git a/util/test/demos/vk/vk_multi_thread_windows.cpp b/util/test/demos/vk/vk_multi_thread_windows.cpp index dea8065ed..cf100a344 100644 --- a/util/test/demos/vk/vk_multi_thread_windows.cpp +++ b/util/test/demos/vk/vk_multi_thread_windows.cpp @@ -122,8 +122,8 @@ void main() VkPipeline pipe = createGraphicsPipeline(pipeCreateInfo); AllocatedBuffer vb( - allocator, vkh::BufferCreateInfo(sizeof(DefaultTri), VK_BUFFER_USAGE_VERTEX_BUFFER_BIT | - VK_BUFFER_USAGE_TRANSFER_DST_BIT), + this, vkh::BufferCreateInfo(sizeof(DefaultTri), VK_BUFFER_USAGE_VERTEX_BUFFER_BIT | + VK_BUFFER_USAGE_TRANSFER_DST_BIT), VmaAllocationCreateInfo({0, VMA_MEMORY_USAGE_CPU_TO_GPU})); vb.upload(DefaultTri); diff --git a/util/test/demos/vk/vk_overlay_test.cpp b/util/test/demos/vk/vk_overlay_test.cpp index 45c239e40..8ce1e6bf5 100644 --- a/util/test/demos/vk/vk_overlay_test.cpp +++ b/util/test/demos/vk/vk_overlay_test.cpp @@ -154,7 +154,7 @@ void main() v.pos.y = -v.pos.y; } - AllocatedBuffer vb(allocator, + AllocatedBuffer vb(this, vkh::BufferCreateInfo(sizeof(VBData), VK_BUFFER_USAGE_VERTEX_BUFFER_BIT | VK_BUFFER_USAGE_TRANSFER_DST_BIT), VmaAllocationCreateInfo({0, VMA_MEMORY_USAGE_CPU_TO_GPU})); @@ -162,11 +162,11 @@ void main() vb.upload(VBData); // create depth-stencil image - AllocatedImage depthimg( - allocator, vkh::ImageCreateInfo( - mainWindow->scissor.extent.width, mainWindow->scissor.extent.height, 0, - VK_FORMAT_D32_SFLOAT_S8_UINT, VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT), - VmaAllocationCreateInfo({0, VMA_MEMORY_USAGE_GPU_ONLY})); + AllocatedImage depthimg(this, vkh::ImageCreateInfo(mainWindow->scissor.extent.width, + mainWindow->scissor.extent.height, 0, + VK_FORMAT_D32_SFLOAT_S8_UINT, + VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT), + VmaAllocationCreateInfo({0, VMA_MEMORY_USAGE_GPU_ONLY})); VkImageView dsvview = createImageView(vkh::ImageViewCreateInfo( depthimg.image, VK_IMAGE_VIEW_TYPE_2D, VK_FORMAT_D32_SFLOAT_S8_UINT, {}, diff --git a/util/test/demos/vk/vk_parameter_zoo.cpp b/util/test/demos/vk/vk_parameter_zoo.cpp index c47536e61..0e45ce96a 100644 --- a/util/test/demos/vk/vk_parameter_zoo.cpp +++ b/util/test/demos/vk/vk_parameter_zoo.cpp @@ -214,8 +214,8 @@ void main() } AllocatedBuffer vb( - allocator, vkh::BufferCreateInfo(sizeof(DefaultTri), VK_BUFFER_USAGE_VERTEX_BUFFER_BIT | - VK_BUFFER_USAGE_TRANSFER_DST_BIT), + this, vkh::BufferCreateInfo(sizeof(DefaultTri), VK_BUFFER_USAGE_VERTEX_BUFFER_BIT | + VK_BUFFER_USAGE_TRANSFER_DST_BIT), VmaAllocationCreateInfo({0, VMA_MEMORY_USAGE_CPU_TO_GPU})); vb.upload(DefaultTri); @@ -224,7 +224,7 @@ void main() VkDescriptorSet immutdescset = allocateDescriptorSet(immutsetlayout); - AllocatedBuffer buf(allocator, + AllocatedBuffer buf(this, vkh::BufferCreateInfo(1024, VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT | VK_BUFFER_USAGE_STORAGE_BUFFER_BIT | VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT | @@ -234,7 +234,7 @@ void main() VkBuffer invalidBuffer = (VkBuffer)0x1234; VkBuffer validBuffer = buf.buffer; - AllocatedImage img(allocator, + AllocatedImage img(this, vkh::ImageCreateInfo(4, 4, 0, VK_FORMAT_R32G32B32A32_SFLOAT, VK_IMAGE_USAGE_STORAGE_BIT | VK_IMAGE_USAGE_SAMPLED_BIT), VmaAllocationCreateInfo({0, VMA_MEMORY_USAGE_GPU_ONLY})); diff --git a/util/test/demos/vk/vk_resource_lifetimes.cpp b/util/test/demos/vk/vk_resource_lifetimes.cpp index ac968a608..cdece7cdc 100644 --- a/util/test/demos/vk/vk_resource_lifetimes.cpp +++ b/util/test/demos/vk/vk_resource_lifetimes.cpp @@ -128,8 +128,8 @@ void main() VkPipeline pipe = createGraphicsPipeline(pipeCreateInfo); AllocatedBuffer vb( - allocator, vkh::BufferCreateInfo(sizeof(DefaultTri), VK_BUFFER_USAGE_VERTEX_BUFFER_BIT | - VK_BUFFER_USAGE_TRANSFER_DST_BIT), + this, vkh::BufferCreateInfo(sizeof(DefaultTri), VK_BUFFER_USAGE_VERTEX_BUFFER_BIT | + VK_BUFFER_USAGE_TRANSFER_DST_BIT), VmaAllocationCreateInfo({0, VMA_MEMORY_USAGE_CPU_TO_GPU})); vb.upload(DefaultTri); @@ -138,23 +138,23 @@ void main() LoadXPM(SmileyTexture, rgba8); AllocatedImage smiley( - allocator, vkh::ImageCreateInfo(rgba8.width, rgba8.height, 0, VK_FORMAT_R8G8B8A8_UNORM, - VK_IMAGE_USAGE_TRANSFER_DST_BIT | VK_IMAGE_USAGE_SAMPLED_BIT), + this, vkh::ImageCreateInfo(rgba8.width, rgba8.height, 0, VK_FORMAT_R8G8B8A8_UNORM, + VK_IMAGE_USAGE_TRANSFER_DST_BIT | VK_IMAGE_USAGE_SAMPLED_BIT), VmaAllocationCreateInfo({0, VMA_MEMORY_USAGE_GPU_ONLY})); VkImageView smileyview = createImageView( vkh::ImageViewCreateInfo(smiley.image, VK_IMAGE_VIEW_TYPE_2D, VK_FORMAT_R8G8B8A8_UNORM)); - AllocatedImage badimg(allocator, vkh::ImageCreateInfo(4, 4, 0, VK_FORMAT_R8G8B8A8_UNORM, - VK_IMAGE_USAGE_TRANSFER_DST_BIT | - VK_IMAGE_USAGE_SAMPLED_BIT), - VmaAllocationCreateInfo({0, VMA_MEMORY_USAGE_GPU_ONLY})); + AllocatedImage badimg( + this, vkh::ImageCreateInfo(4, 4, 0, VK_FORMAT_R8G8B8A8_UNORM, + VK_IMAGE_USAGE_TRANSFER_DST_BIT | VK_IMAGE_USAGE_SAMPLED_BIT), + VmaAllocationCreateInfo({0, VMA_MEMORY_USAGE_GPU_ONLY})); VkImageView badview = createImageView( vkh::ImageViewCreateInfo(badimg.image, VK_IMAGE_VIEW_TYPE_2D, VK_FORMAT_R8G8B8A8_UNORM)); - AllocatedBuffer uploadBuf(allocator, vkh::BufferCreateInfo(rgba8.data.size() * sizeof(uint32_t), - VK_BUFFER_USAGE_TRANSFER_SRC_BIT), + AllocatedBuffer uploadBuf(this, vkh::BufferCreateInfo(rgba8.data.size() * sizeof(uint32_t), + VK_BUFFER_USAGE_TRANSFER_SRC_BIT), VmaAllocationCreateInfo({0, VMA_MEMORY_USAGE_CPU_TO_GPU})); uploadBuf.upload(rgba8.data.data(), rgba8.data.size() * sizeof(uint32_t)); @@ -195,7 +195,7 @@ void main() } Vec4f flags = {}; - AllocatedBuffer badcb(allocator, + AllocatedBuffer badcb(this, vkh::BufferCreateInfo(sizeof(flags), VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT | VK_BUFFER_USAGE_TRANSFER_DST_BIT), VmaAllocationCreateInfo({0, VMA_MEMORY_USAGE_CPU_TO_GPU})); diff --git a/util/test/demos/vk/vk_sample_locations.cpp b/util/test/demos/vk/vk_sample_locations.cpp index 939b0b999..bcb60043a 100644 --- a/util/test/demos/vk/vk_sample_locations.cpp +++ b/util/test/demos/vk/vk_sample_locations.cpp @@ -98,12 +98,11 @@ void main() // create multi-sampled image AllocatedImage msaaimg( - allocator, - vkh::ImageCreateInfo(mainWindow->scissor.extent.width, mainWindow->scissor.extent.height, 0, - mainWindow->format, - VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT | VK_IMAGE_USAGE_TRANSFER_DST_BIT | - VK_IMAGE_USAGE_SAMPLED_BIT, - 1, 1, VK_SAMPLE_COUNT_4_BIT), + this, vkh::ImageCreateInfo(mainWindow->scissor.extent.width, + mainWindow->scissor.extent.height, 0, mainWindow->format, + VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT | + VK_IMAGE_USAGE_TRANSFER_DST_BIT | VK_IMAGE_USAGE_SAMPLED_BIT, + 1, 1, VK_SAMPLE_COUNT_4_BIT), VmaAllocationCreateInfo({0, VMA_MEMORY_USAGE_GPU_ONLY})); VkImageView msview = createImageView( @@ -164,8 +163,8 @@ void main() VkPipeline pipe = createGraphicsPipeline(pipeCreateInfo); AllocatedBuffer vb( - allocator, vkh::BufferCreateInfo(sizeof(DefaultTri), VK_BUFFER_USAGE_VERTEX_BUFFER_BIT | - VK_BUFFER_USAGE_TRANSFER_DST_BIT), + this, vkh::BufferCreateInfo(sizeof(DefaultTri), VK_BUFFER_USAGE_VERTEX_BUFFER_BIT | + VK_BUFFER_USAGE_TRANSFER_DST_BIT), VmaAllocationCreateInfo({0, VMA_MEMORY_USAGE_CPU_TO_GPU})); vb.upload(DefaultTri); diff --git a/util/test/demos/vk/vk_secondary_cmdbuf.cpp b/util/test/demos/vk/vk_secondary_cmdbuf.cpp index b13b860af..cda7959d2 100644 --- a/util/test/demos/vk/vk_secondary_cmdbuf.cpp +++ b/util/test/demos/vk/vk_secondary_cmdbuf.cpp @@ -83,7 +83,7 @@ void main() VkRect2D size = mainWindow->scissor; AllocatedImage img( - allocator, + this, vkh::ImageCreateInfo(size.extent.width, size.extent.height, 0, VK_FORMAT_R8G8B8A8_SRGB, VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT | VK_IMAGE_USAGE_TRANSFER_SRC_BIT), VmaAllocationCreateInfo({0, VMA_MEMORY_USAGE_GPU_ONLY})); @@ -146,7 +146,7 @@ void main() {Vec3f(0.75f, -0.5f, 0.0f), Vec4f(0.0f, 0.0f, 1.0f, 1.0f), Vec2f(1.0f, 0.0f)}, }; - AllocatedBuffer vb(allocator, + AllocatedBuffer vb(this, vkh::BufferCreateInfo(sizeof(TwoTris), VK_BUFFER_USAGE_VERTEX_BUFFER_BIT | VK_BUFFER_USAGE_TRANSFER_DST_BIT), VmaAllocationCreateInfo({0, VMA_MEMORY_USAGE_CPU_TO_GPU})); diff --git a/util/test/demos/vk/vk_shader_editing.cpp b/util/test/demos/vk/vk_shader_editing.cpp index eb5e963ea..d89c16f80 100644 --- a/util/test/demos/vk/vk_shader_editing.cpp +++ b/util/test/demos/vk/vk_shader_editing.cpp @@ -66,7 +66,7 @@ void main() VkPipelineLayout layout = createPipelineLayout(vkh::PipelineLayoutCreateInfo()); AllocatedImage img( - allocator, + this, vkh::ImageCreateInfo(mainWindow->scissor.extent.width, mainWindow->scissor.extent.height, 0, VK_FORMAT_R32G32B32A32_SFLOAT, VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT | VK_IMAGE_USAGE_TRANSFER_SRC_BIT), @@ -113,8 +113,8 @@ void main() VkPipeline pipe2 = createGraphicsPipeline(pipeCreateInfo); AllocatedBuffer vb( - allocator, vkh::BufferCreateInfo(sizeof(DefaultTri), VK_BUFFER_USAGE_VERTEX_BUFFER_BIT | - VK_BUFFER_USAGE_TRANSFER_DST_BIT), + this, vkh::BufferCreateInfo(sizeof(DefaultTri), VK_BUFFER_USAGE_VERTEX_BUFFER_BIT | + VK_BUFFER_USAGE_TRANSFER_DST_BIT), VmaAllocationCreateInfo({0, VMA_MEMORY_USAGE_CPU_TO_GPU})); vb.upload(DefaultTri); diff --git a/util/test/demos/vk/vk_simple_triangle.cpp b/util/test/demos/vk/vk_simple_triangle.cpp index 54a7f6caa..73a7cb82c 100644 --- a/util/test/demos/vk/vk_simple_triangle.cpp +++ b/util/test/demos/vk/vk_simple_triangle.cpp @@ -101,8 +101,8 @@ void main() VkPipeline pipe = createGraphicsPipeline(pipeCreateInfo); AllocatedBuffer vb( - allocator, vkh::BufferCreateInfo(sizeof(DefaultTri), VK_BUFFER_USAGE_VERTEX_BUFFER_BIT | - VK_BUFFER_USAGE_TRANSFER_DST_BIT), + this, vkh::BufferCreateInfo(sizeof(DefaultTri), VK_BUFFER_USAGE_VERTEX_BUFFER_BIT | + VK_BUFFER_USAGE_TRANSFER_DST_BIT), VmaAllocationCreateInfo({0, VMA_MEMORY_USAGE_CPU_TO_GPU})); vb.upload(DefaultTri); diff --git a/util/test/demos/vk/vk_spec_constants.cpp b/util/test/demos/vk/vk_spec_constants.cpp index 6123f091b..481ccd9a1 100644 --- a/util/test/demos/vk/vk_spec_constants.cpp +++ b/util/test/demos/vk/vk_spec_constants.cpp @@ -115,8 +115,8 @@ void main() }; AllocatedBuffer cb( - allocator, vkh::BufferCreateInfo(sizeof(cbufferdata), VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT | - VK_BUFFER_USAGE_TRANSFER_DST_BIT), + this, vkh::BufferCreateInfo(sizeof(cbufferdata), VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT | + VK_BUFFER_USAGE_TRANSFER_DST_BIT), VmaAllocationCreateInfo({0, VMA_MEMORY_USAGE_CPU_TO_GPU})); cb.upload(cbufferdata); @@ -130,8 +130,8 @@ void main() }); AllocatedBuffer vb( - allocator, vkh::BufferCreateInfo(sizeof(DefaultTri), VK_BUFFER_USAGE_VERTEX_BUFFER_BIT | - VK_BUFFER_USAGE_TRANSFER_DST_BIT), + this, vkh::BufferCreateInfo(sizeof(DefaultTri), VK_BUFFER_USAGE_VERTEX_BUFFER_BIT | + VK_BUFFER_USAGE_TRANSFER_DST_BIT), VmaAllocationCreateInfo({0, VMA_MEMORY_USAGE_CPU_TO_GPU})); vb.upload(DefaultTri); diff --git a/util/test/demos/vk/vk_spirv_13_shaders.cpp b/util/test/demos/vk/vk_spirv_13_shaders.cpp index 235f235ea..bf6b31afc 100644 --- a/util/test/demos/vk/vk_spirv_13_shaders.cpp +++ b/util/test/demos/vk/vk_spirv_13_shaders.cpp @@ -94,9 +94,8 @@ void fragmain(in float4 incol : COL, out float4 ocol : SV_Target0) {Vec3f(0.5f, -0.5f, 0.0f), Vec4f(0.0f, 1.0f, 0.0f, 1.0f), Vec2f(1.0f, 0.0f)}, }; - AllocatedBuffer vb(allocator, - vkh::BufferCreateInfo(sizeof(tri), VK_BUFFER_USAGE_VERTEX_BUFFER_BIT | - VK_BUFFER_USAGE_TRANSFER_DST_BIT), + AllocatedBuffer vb(this, vkh::BufferCreateInfo(sizeof(tri), VK_BUFFER_USAGE_VERTEX_BUFFER_BIT | + VK_BUFFER_USAGE_TRANSFER_DST_BIT), VmaAllocationCreateInfo({0, VMA_MEMORY_USAGE_CPU_TO_GPU})); vb.upload(tri); diff --git a/util/test/demos/vk/vk_structured_buffer_nested.cpp b/util/test/demos/vk/vk_structured_buffer_nested.cpp index 425fa8425..6e6609f90 100644 --- a/util/test/demos/vk/vk_structured_buffer_nested.cpp +++ b/util/test/demos/vk/vk_structured_buffer_nested.cpp @@ -228,8 +228,8 @@ float4 main() : SV_Target0 VkPipeline hlslpipe = createGraphicsPipeline(pipeCreateInfo); AllocatedBuffer vb( - allocator, vkh::BufferCreateInfo(sizeof(DefaultTri), VK_BUFFER_USAGE_VERTEX_BUFFER_BIT | - VK_BUFFER_USAGE_TRANSFER_DST_BIT), + this, vkh::BufferCreateInfo(sizeof(DefaultTri), VK_BUFFER_USAGE_VERTEX_BUFFER_BIT | + VK_BUFFER_USAGE_TRANSFER_DST_BIT), VmaAllocationCreateInfo({0, VMA_MEMORY_USAGE_CPU_TO_GPU})); vb.upload(DefaultTri); @@ -240,15 +240,14 @@ float4 main() : SV_Target0 data[i] = float(i); AllocatedBuffer ssbo( - allocator, vkh::BufferCreateInfo(sizeof(data), VK_BUFFER_USAGE_STORAGE_BUFFER_BIT | - VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT), + this, vkh::BufferCreateInfo(sizeof(data), VK_BUFFER_USAGE_STORAGE_BUFFER_BIT | + VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT), VmaAllocationCreateInfo({0, VMA_MEMORY_USAGE_CPU_TO_GPU})); ssbo.upload(data); - AllocatedBuffer out_ssbo(allocator, - vkh::BufferCreateInfo(1024, VK_BUFFER_USAGE_STORAGE_BUFFER_BIT | - VK_BUFFER_USAGE_TRANSFER_DST_BIT), + AllocatedBuffer out_ssbo(this, vkh::BufferCreateInfo(1024, VK_BUFFER_USAGE_STORAGE_BUFFER_BIT | + VK_BUFFER_USAGE_TRANSFER_DST_BIT), VmaAllocationCreateInfo({0, VMA_MEMORY_USAGE_GPU_ONLY})); VkDescriptorSet descset = allocateDescriptorSet(setlayout); diff --git a/util/test/demos/vk/vk_test.cpp b/util/test/demos/vk/vk_test.cpp index 01cec5499..77e6ee985 100644 --- a/util/test/demos/vk/vk_test.cpp +++ b/util/test/demos/vk/vk_test.cpp @@ -538,6 +538,12 @@ void VulkanGraphicsTest::Shutdown() for(VkDescriptorSetLayout layout : setlayouts) vkDestroyDescriptorSetLayout(device, layout, NULL); + for(VkImage img : images) + vkDestroyImage(device, img, NULL); + + for(VkBuffer buf : buffers) + vkDestroyBuffer(device, buf, NULL); + delete mainWindow; vkDestroyDevice(device, NULL); @@ -1145,4 +1151,36 @@ template <> VkFormat vkh::_FormatFromObj() { return VK_FORMAT_R32G32_SFLOAT; -} \ No newline at end of file +} + +AllocatedImage::AllocatedImage(VulkanGraphicsTest *test, const VkImageCreateInfo &imgInfo, + const VmaAllocationCreateInfo &allocInfo) +{ + this->test = test; + allocator = test->allocator; + vmaCreateImage(allocator, &imgInfo, &allocInfo, &image, &alloc, NULL); + + test->images.push_back(image); +} + +void AllocatedImage::free() +{ + vmaFreeMemory(allocator, alloc); + test->images.erase(std::find(test->images.begin(), test->images.end(), image)); +} + +AllocatedBuffer::AllocatedBuffer(VulkanGraphicsTest *test, const VkBufferCreateInfo &bufInfo, + const VmaAllocationCreateInfo &allocInfo) +{ + this->test = test; + allocator = test->allocator; + vmaCreateBuffer(allocator, &bufInfo, &allocInfo, &buffer, &alloc, NULL); + + test->buffers.push_back(buffer); +} + +void AllocatedBuffer::free() +{ + vmaFreeMemory(allocator, alloc); + test->buffers.erase(std::find(test->buffers.begin(), test->buffers.end(), buffer)); +} diff --git a/util/test/demos/vk/vk_test.h b/util/test/demos/vk/vk_test.h index ef2883834..141347eba 100644 --- a/util/test/demos/vk/vk_test.h +++ b/util/test/demos/vk/vk_test.h @@ -33,35 +33,21 @@ #include "vk_helpers.h" #include "vk_test.h" +struct VulkanGraphicsTest; + struct AllocatedBuffer { - VmaAllocator allocator; - VkBuffer buffer; - VmaAllocation alloc; + VulkanGraphicsTest *test = NULL; + VmaAllocator allocator = NULL; + VkBuffer buffer = VK_NULL_HANDLE; + VmaAllocation alloc = {}; AllocatedBuffer() {} - AllocatedBuffer(VmaAllocator allocator, const VkBufferCreateInfo &bufInfo, - const VmaAllocationCreateInfo &allocInfo) - { - create(allocator, bufInfo, allocInfo); - } - AllocatedBuffer(const AllocatedBuffer &) = delete; - AllocatedBuffer &operator=(const AllocatedBuffer &) = delete; + AllocatedBuffer(VulkanGraphicsTest *test, const VkBufferCreateInfo &bufInfo, + const VmaAllocationCreateInfo &allocInfo); - void create(VmaAllocator vma, const VkBufferCreateInfo &bufInfo, - const VmaAllocationCreateInfo &allocInfo) - { - allocator = vma; - VkBuffer buf; - vmaCreateBuffer(allocator, &bufInfo, &allocInfo, &buf, &alloc, NULL); - buffer = VkBuffer(buf); - } + void free(); - ~AllocatedBuffer() - { - if(buffer != VK_NULL_HANDLE) - vmaDestroyBuffer(allocator, (VkBuffer)buffer, alloc); - } template void upload(const T (&data)[N]) { @@ -92,33 +78,16 @@ struct AllocatedBuffer struct AllocatedImage { - VmaAllocator allocator; - VkImage image; - VmaAllocation alloc; + VulkanGraphicsTest *test = NULL; + VmaAllocator allocator = NULL; + VkImage image = VK_NULL_HANDLE; + VmaAllocation alloc = {}; AllocatedImage() {} - AllocatedImage(VmaAllocator allocator, const VkImageCreateInfo &imgInfo, - const VmaAllocationCreateInfo &allocInfo) - { - create(allocator, imgInfo, allocInfo); - } - AllocatedImage(const AllocatedImage &) = delete; - AllocatedImage &operator=(const AllocatedImage &) = delete; + AllocatedImage(VulkanGraphicsTest *test, const VkImageCreateInfo &imgInfo, + const VmaAllocationCreateInfo &allocInfo); - void create(VmaAllocator vma, const VkImageCreateInfo &imgInfo, - const VmaAllocationCreateInfo &allocInfo) - { - allocator = vma; - VkImage img; - vmaCreateImage(allocator, &imgInfo, &allocInfo, &img, &alloc, NULL); - image = VkImage(img); - } - - ~AllocatedImage() - { - if(image != VK_NULL_HANDLE) - vmaDestroyImage(allocator, (VkImage)image, alloc); - } + void free(); }; #define CHECK_VKR(cmd) \ @@ -293,6 +262,9 @@ struct VulkanGraphicsTest : public GraphicsTest std::vector pipelayouts; std::vector setlayouts; + std::vector images; + std::vector buffers; + VulkanWindow *mainWindow = NULL; // VMA diff --git a/util/test/demos/vk/vk_triangle_fan.cpp b/util/test/demos/vk/vk_triangle_fan.cpp index ec0292604..1a56e7055 100644 --- a/util/test/demos/vk/vk_triangle_fan.cpp +++ b/util/test/demos/vk/vk_triangle_fan.cpp @@ -128,7 +128,7 @@ void main() {Vec3f(0.8f, 0.0f - 0.75f, 0.0f), Vec4f(0.0f, 0.0f, 1.0f, 1.0f), Vec2f(0.0f, 1.0f)}, }; - AllocatedBuffer vb(allocator, + AllocatedBuffer vb(this, vkh::BufferCreateInfo(sizeof(verts), VK_BUFFER_USAGE_VERTEX_BUFFER_BIT | VK_BUFFER_USAGE_TRANSFER_DST_BIT), VmaAllocationCreateInfo({0, VMA_MEMORY_USAGE_CPU_TO_GPU})); @@ -136,7 +136,7 @@ void main() vb.upload(verts); uint32_t indices[13] = {0, 1, 2, 3, 4, 5, ~0U, 6, 7, 8, 9, 10, 11}; - AllocatedBuffer ib(allocator, + AllocatedBuffer ib(this, vkh::BufferCreateInfo(sizeof(indices), VK_BUFFER_USAGE_INDEX_BUFFER_BIT | VK_BUFFER_USAGE_TRANSFER_DST_BIT), VmaAllocationCreateInfo({0, VMA_MEMORY_USAGE_CPU_TO_GPU})); diff --git a/util/test/demos/vk/vk_vertex_attr_zoo.cpp b/util/test/demos/vk/vk_vertex_attr_zoo.cpp index 15875918d..7d81695c4 100644 --- a/util/test/demos/vk/vk_vertex_attr_zoo.cpp +++ b/util/test/demos/vk/vk_vertex_attr_zoo.cpp @@ -355,7 +355,7 @@ void main() }, }; - AllocatedBuffer vb(allocator, + AllocatedBuffer vb(this, vkh::BufferCreateInfo(sizeof(triangle), VK_BUFFER_USAGE_VERTEX_BUFFER_BIT | VK_BUFFER_USAGE_TRANSFER_DST_BIT), VmaAllocationCreateInfo({0, VMA_MEMORY_USAGE_CPU_TO_GPU})); diff --git a/util/test/demos/vk/vk_video_textures.cpp b/util/test/demos/vk/vk_video_textures.cpp index 8a29bd99d..2af53d9b4 100644 --- a/util/test/demos/vk/vk_video_textures.cpp +++ b/util/test/demos/vk/vk_video_textures.cpp @@ -273,7 +273,7 @@ void main() {Vec3f(1.0f, 1.0f, 0.0f), Vec4f(0.0f, 0.0f, 1.0f, 1.0f), Vec2f(1.0f, 0.0f)}, }; - AllocatedBuffer vb(allocator, + AllocatedBuffer vb(this, vkh::BufferCreateInfo(sizeof(verts), VK_BUFFER_USAGE_VERTEX_BUFFER_BIT | VK_BUFFER_USAGE_TRANSFER_DST_BIT), VmaAllocationCreateInfo({0, VMA_MEMORY_USAGE_CPU_TO_GPU})); @@ -311,8 +311,8 @@ void main() TextureData textures[20] = {}; uint32_t texidx = 0; - AllocatedBuffer uploadBuf(allocator, vkh::BufferCreateInfo(rgba8.width * rgba8.height * 16, - VK_BUFFER_USAGE_TRANSFER_SRC_BIT), + AllocatedBuffer uploadBuf(this, vkh::BufferCreateInfo(rgba8.width * rgba8.height * 16, + VK_BUFFER_USAGE_TRANSFER_SRC_BIT), VmaAllocationCreateInfo({0, VMA_MEMORY_USAGE_CPU_TO_GPU})); auto make_tex = [&](const char *name, uint32_t subsampling, VkFormat texFmt, VkFormat viewFmt, @@ -384,18 +384,19 @@ void main() TextureData &t = textures[texidx]; t.name = name; - t.tex.create(allocator, vkh::ImageCreateInfo( - rgba8.width, rgba8.height, 0, texFmt, - VK_IMAGE_USAGE_SAMPLED_BIT | VK_IMAGE_USAGE_TRANSFER_DST_BIT, 1, - 1, VK_SAMPLE_COUNT_1_BIT, VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT), - VmaAllocationCreateInfo({0, VMA_MEMORY_USAGE_GPU_ONLY})); + t.tex = AllocatedImage( + this, + vkh::ImageCreateInfo(rgba8.width, rgba8.height, 0, texFmt, + VK_IMAGE_USAGE_SAMPLED_BIT | VK_IMAGE_USAGE_TRANSFER_DST_BIT, 1, 1, + VK_SAMPLE_COUNT_1_BIT, VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT), + VmaAllocationCreateInfo({0, VMA_MEMORY_USAGE_GPU_ONLY})); Vec4i cbdata[2] = { Vec4i(rgba8.width, rgba8.height, horizDownsampleFactor, vertDownsampleFactor), config, }; - t.cb.create(allocator, - vkh::BufferCreateInfo(sizeof(cbdata), VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT), - VmaAllocationCreateInfo({0, VMA_MEMORY_USAGE_CPU_TO_GPU})); + t.cb = AllocatedBuffer( + this, vkh::BufferCreateInfo(sizeof(cbdata), VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT), + VmaAllocationCreateInfo({0, VMA_MEMORY_USAGE_CPU_TO_GPU})); t.cb.upload(cbdata); diff --git a/util/test/demos/vk/vk_vs_max_desc_set.cpp b/util/test/demos/vk/vk_vs_max_desc_set.cpp index f4a404811..474b81c4c 100644 --- a/util/test/demos/vk/vk_vs_max_desc_set.cpp +++ b/util/test/demos/vk/vk_vs_max_desc_set.cpp @@ -152,8 +152,8 @@ void main() VkPipeline pipe = createGraphicsPipeline(pipeCreateInfo); AllocatedBuffer vb( - allocator, vkh::BufferCreateInfo(sizeof(DefaultTri), VK_BUFFER_USAGE_VERTEX_BUFFER_BIT | - VK_BUFFER_USAGE_TRANSFER_DST_BIT), + this, vkh::BufferCreateInfo(sizeof(DefaultTri), VK_BUFFER_USAGE_VERTEX_BUFFER_BIT | + VK_BUFFER_USAGE_TRANSFER_DST_BIT), VmaAllocationCreateInfo({0, VMA_MEMORY_USAGE_CPU_TO_GPU})); vb.upload(DefaultTri); @@ -161,16 +161,16 @@ void main() Vec4f cbufferdata = Vec4f(0.0f, 0.2f, 0.75f, 0.8f); AllocatedBuffer cb( - allocator, vkh::BufferCreateInfo(sizeof(cbufferdata), VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT | - VK_BUFFER_USAGE_TRANSFER_DST_BIT), + this, vkh::BufferCreateInfo(sizeof(cbufferdata), VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT | + VK_BUFFER_USAGE_TRANSFER_DST_BIT), VmaAllocationCreateInfo({0, VMA_MEMORY_USAGE_CPU_TO_GPU})); cb.upload(&cbufferdata, sizeof(cbufferdata)); - AllocatedImage img(allocator, vkh::ImageCreateInfo( - 4, 4, 0, VK_FORMAT_R32G32B32A32_SFLOAT, - VK_IMAGE_USAGE_TRANSFER_DST_BIT | VK_IMAGE_USAGE_SAMPLED_BIT), - VmaAllocationCreateInfo({0, VMA_MEMORY_USAGE_GPU_ONLY})); + AllocatedImage img( + this, vkh::ImageCreateInfo(4, 4, 0, VK_FORMAT_R32G32B32A32_SFLOAT, + VK_IMAGE_USAGE_TRANSFER_DST_BIT | VK_IMAGE_USAGE_SAMPLED_BIT), + VmaAllocationCreateInfo({0, VMA_MEMORY_USAGE_GPU_ONLY})); VkImageView imgview = createImageView( vkh::ImageViewCreateInfo(img.image, VK_IMAGE_VIEW_TYPE_2D, VK_FORMAT_R32G32B32A32_SFLOAT));