summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--tests/hlsl-intrinsic/active-mask/for-break.slang4
-rw-r--r--tests/hlsl-intrinsic/active-mask/for-continue-ext.slang4
-rw-r--r--tests/hlsl-intrinsic/active-mask/for-continue.slang4
-rw-r--r--tests/hlsl-intrinsic/active-mask/for.slang4
-rw-r--r--tests/hlsl-intrinsic/active-mask/if-conditional-exit.slang4
-rw-r--r--tests/hlsl-intrinsic/active-mask/if-early-exit.slang4
-rw-r--r--tests/hlsl-intrinsic/active-mask/if-one-sided.slang4
-rw-r--r--tests/hlsl-intrinsic/active-mask/if.slang4
-rw-r--r--tests/hlsl-intrinsic/active-mask/switch-no-default.slang4
-rw-r--r--tests/hlsl-intrinsic/active-mask/switch-trivial-fallthrough.slang4
-rw-r--r--tests/hlsl-intrinsic/active-mask/switch.slang4
-rw-r--r--tools/gfx/vulkan/render-vk.cpp73
-rw-r--r--tools/gfx/vulkan/vk-api.h1
-rw-r--r--tools/gfx/vulkan/vk-device-queue.cpp12
-rw-r--r--tools/gfx/vulkan/vk-device-queue.h6
-rw-r--r--tools/gfx/vulkan/vk-swap-chain.cpp8
-rw-r--r--tools/gfx/vulkan/vk-swap-chain.h2
17 files changed, 75 insertions, 71 deletions
diff --git a/tests/hlsl-intrinsic/active-mask/for-break.slang b/tests/hlsl-intrinsic/active-mask/for-break.slang
index 440e7481c..e65f68e9d 100644
--- a/tests/hlsl-intrinsic/active-mask/for-break.slang
+++ b/tests/hlsl-intrinsic/active-mask/for-break.slang
@@ -6,8 +6,8 @@
//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute
//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0 -xslang -DHACK
-//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -xslang -DHACK
+//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0 -xslang -DHACK
+//DISABLE_TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -xslang -DHACK
//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-cuda -compute -render-features cuda_sm_7_0
//TEST_INPUT:ubuffer(data=[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0], stride=4):out,name buffer
diff --git a/tests/hlsl-intrinsic/active-mask/for-continue-ext.slang b/tests/hlsl-intrinsic/active-mask/for-continue-ext.slang
index 881c0389e..dc76d6de9 100644
--- a/tests/hlsl-intrinsic/active-mask/for-continue-ext.slang
+++ b/tests/hlsl-intrinsic/active-mask/for-continue-ext.slang
@@ -7,8 +7,8 @@
//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute
//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0 -xslang -DHACK
-//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -xslang -DHACK
+//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0 -xslang -DHACK
+//DISABLE_TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -xslang -DHACK
//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-cuda -compute -render-features cuda_sm_7_0
//TEST_INPUT:ubuffer(data=[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0], stride=4):out,name buffer
diff --git a/tests/hlsl-intrinsic/active-mask/for-continue.slang b/tests/hlsl-intrinsic/active-mask/for-continue.slang
index 7700a937a..a06c4613b 100644
--- a/tests/hlsl-intrinsic/active-mask/for-continue.slang
+++ b/tests/hlsl-intrinsic/active-mask/for-continue.slang
@@ -7,8 +7,8 @@
//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute
//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0 -xslang -DHACK
-//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -xslang -DHACK
+//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0 -xslang -DHACK
+//DISABLE_TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -xslang -DHACK
//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-cuda -compute -render-features cuda_sm_7_0
//TEST_INPUT:ubuffer(data=[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0], stride=4):out,name buffer
diff --git a/tests/hlsl-intrinsic/active-mask/for.slang b/tests/hlsl-intrinsic/active-mask/for.slang
index c6fef5e58..e072db4f4 100644
--- a/tests/hlsl-intrinsic/active-mask/for.slang
+++ b/tests/hlsl-intrinsic/active-mask/for.slang
@@ -6,8 +6,8 @@
//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute
//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0
-//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute
+//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0
+//DISABLE_TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute
//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-cuda -compute -render-features cuda_sm_7_0
//TEST_INPUT:ubuffer(data=[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0], stride=4):out,name buffer
diff --git a/tests/hlsl-intrinsic/active-mask/if-conditional-exit.slang b/tests/hlsl-intrinsic/active-mask/if-conditional-exit.slang
index 9f90b9380..9a0ab4bc8 100644
--- a/tests/hlsl-intrinsic/active-mask/if-conditional-exit.slang
+++ b/tests/hlsl-intrinsic/active-mask/if-conditional-exit.slang
@@ -7,8 +7,8 @@
//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute
//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0
-//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute
+//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0
+//DISABLE_TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute
//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-cuda -compute -render-features cuda_sm_7_0
diff --git a/tests/hlsl-intrinsic/active-mask/if-early-exit.slang b/tests/hlsl-intrinsic/active-mask/if-early-exit.slang
index 35efb9a6d..864c2f92c 100644
--- a/tests/hlsl-intrinsic/active-mask/if-early-exit.slang
+++ b/tests/hlsl-intrinsic/active-mask/if-early-exit.slang
@@ -6,8 +6,8 @@
//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute
//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0
-//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute
+//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0
+//DISABLE_TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute
//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-cuda -compute -render-features cuda_sm_7_0
//TEST_INPUT:ubuffer(data=[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0], stride=4):out,name buffer
diff --git a/tests/hlsl-intrinsic/active-mask/if-one-sided.slang b/tests/hlsl-intrinsic/active-mask/if-one-sided.slang
index 9b3259f3b..346d313b0 100644
--- a/tests/hlsl-intrinsic/active-mask/if-one-sided.slang
+++ b/tests/hlsl-intrinsic/active-mask/if-one-sided.slang
@@ -4,8 +4,8 @@
//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute
//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0
-//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute
+//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0
+//DISABLE_TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute
//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-cuda -compute -render-features cuda_sm_7_0
//TEST_INPUT:ubuffer(data=[0 0 0 0 0 0 0 0 0 0 0 0], stride=4):out,name buffer
diff --git a/tests/hlsl-intrinsic/active-mask/if.slang b/tests/hlsl-intrinsic/active-mask/if.slang
index 077bb4b40..32d207ae4 100644
--- a/tests/hlsl-intrinsic/active-mask/if.slang
+++ b/tests/hlsl-intrinsic/active-mask/if.slang
@@ -4,8 +4,8 @@
//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute
//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0
-//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute
+//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0
+//DISABLE_TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute
//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-cuda -compute -render-features cuda_sm_7_0
//TEST_INPUT:ubuffer(data=[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0], stride=4):out,name buffer
diff --git a/tests/hlsl-intrinsic/active-mask/switch-no-default.slang b/tests/hlsl-intrinsic/active-mask/switch-no-default.slang
index f3060631b..8d60fc371 100644
--- a/tests/hlsl-intrinsic/active-mask/switch-no-default.slang
+++ b/tests/hlsl-intrinsic/active-mask/switch-no-default.slang
@@ -7,8 +7,8 @@
//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute
//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0 -xslang -DHACK
-//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -xslang -DHACK
+//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0 -xslang -DHACK
+//DISABLE_TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -xslang -DHACK
//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-cuda -compute -render-features cuda_sm_7_0
//TEST_INPUT:ubuffer(data=[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0], stride=4):out,name buffer
diff --git a/tests/hlsl-intrinsic/active-mask/switch-trivial-fallthrough.slang b/tests/hlsl-intrinsic/active-mask/switch-trivial-fallthrough.slang
index b5674c8d1..1d91d694b 100644
--- a/tests/hlsl-intrinsic/active-mask/switch-trivial-fallthrough.slang
+++ b/tests/hlsl-intrinsic/active-mask/switch-trivial-fallthrough.slang
@@ -6,8 +6,8 @@
//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute
//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0 -xslang -DHACK
-//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -xslang -DHACK
+//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0 -xslang -DHACK
+//DISABLE_TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -xslang -DHACK
// Note: this test is currently disabled on the CUDA
// target because we do not synthesize the active
diff --git a/tests/hlsl-intrinsic/active-mask/switch.slang b/tests/hlsl-intrinsic/active-mask/switch.slang
index 0ab0c7173..004080f2e 100644
--- a/tests/hlsl-intrinsic/active-mask/switch.slang
+++ b/tests/hlsl-intrinsic/active-mask/switch.slang
@@ -4,8 +4,8 @@
//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute
//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute
-//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0 -xslang -DHACK
-//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -xslang -DHACK
+//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil -profile cs_6_0 -xslang -DHACK
+//DISABLE_TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -xslang -DHACK
// Note: this test is currently disabled on the CUDA
// target because we do not synthesize the active
diff --git a/tools/gfx/vulkan/render-vk.cpp b/tools/gfx/vulkan/render-vk.cpp
index 2221187ed..53c210a20 100644
--- a/tools/gfx/vulkan/render-vk.cpp
+++ b/tools/gfx/vulkan/render-vk.cpp
@@ -356,49 +356,6 @@ public:
List<Binding> m_bindings; ///< Records entities are bound to this descriptor set, and keeps the associated resources/views/state in scope
};
-#if 0
- struct BindingDetail
- {
- VkImageView m_srv = VK_NULL_HANDLE;
- VkBufferView m_uav = VK_NULL_HANDLE;
- VkSampler m_sampler = VK_NULL_HANDLE;
- };
-
- class BindingStateImpl: public BindingState
- {
- public:
- typedef BindingState Parent;
-
- BindingStateImpl(const Desc& desc, const VulkanApi* api):
- Parent(desc),
- m_api(api)
- {
- }
- ~BindingStateImpl()
- {
- for (int i = 0; i < int(m_bindingDetails.Count()); ++i)
- {
- BindingDetail& detail = m_bindingDetails[i];
- if (detail.m_sampler != VK_NULL_HANDLE)
- {
- m_api->vkDestroySampler(m_api->m_device, detail.m_sampler, nullptr);
- }
- if (detail.m_srv != VK_NULL_HANDLE)
- {
- m_api->vkDestroyImageView(m_api->m_device, detail.m_srv, nullptr);
- }
- if (detail.m_uav != VK_NULL_HANDLE)
- {
- m_api->vkDestroyBufferView(m_api->m_device, detail.m_uav, nullptr);
- }
- }
- }
-
- const VulkanApi* m_api;
- List<BindingDetail> m_bindingDetails;
- };
-#endif
-
struct BoundVertexBuffer
{
RefPtr<BufferResourceImpl> m_buffer;
@@ -423,11 +380,8 @@ public:
const VulkanApi* m_api;
-// VkPrimitiveTopology m_primitiveTopology;
-
RefPtr<PipelineLayoutImpl> m_pipelineLayout;
-// RefPtr<InputLayoutImpl> m_inputLayout;
RefPtr<ShaderProgramImpl> m_shaderProgram;
VkPipeline m_pipeline = VK_NULL_HANDLE;
@@ -804,11 +758,38 @@ Renderer* createVKRenderer()
VKRenderer::~VKRenderer()
{
+ // Check the device queue is valid else, we can't wait on it..
+ if (m_deviceQueue.isValid())
+ {
+ waitForGpu();
+ }
+
+ m_currentPipeline.setNull();
+
+ // Same as clear but, also dtors all elements, which clear does not
+ m_boundVertexBuffers = List<BoundVertexBuffer>();
+
+ m_currentPipelineLayout.setNull();
+ for (auto& impl : m_currentDescriptorSetImpls)
+ {
+ impl.setNull();
+ }
+
if (m_renderPass != VK_NULL_HANDLE)
{
m_api.vkDestroyRenderPass(m_device, m_renderPass, nullptr);
m_renderPass = VK_NULL_HANDLE;
}
+
+ m_swapChain.destroy();
+
+ m_deviceQueue.destroy();
+
+ if (m_device != VK_NULL_HANDLE)
+ {
+ m_api.vkDestroyDevice(m_device, nullptr);
+ m_device = VK_NULL_HANDLE;
+ }
}
diff --git a/tools/gfx/vulkan/vk-api.h b/tools/gfx/vulkan/vk-api.h
index 001f44d19..6f12d5ddb 100644
--- a/tools/gfx/vulkan/vk-api.h
+++ b/tools/gfx/vulkan/vk-api.h
@@ -17,6 +17,7 @@ namespace gfx {
#define VK_API_INSTANCE_PROCS(x) \
x(vkCreateDevice) \
+ x(vkDestroyDevice) \
x(vkCreateDebugReportCallbackEXT) \
x(vkDestroyDebugReportCallbackEXT) \
x(vkDebugReportMessageEXT) \
diff --git a/tools/gfx/vulkan/vk-device-queue.cpp b/tools/gfx/vulkan/vk-device-queue.cpp
index 3b9e6cbcd..0cc9a0a0d 100644
--- a/tools/gfx/vulkan/vk-device-queue.cpp
+++ b/tools/gfx/vulkan/vk-device-queue.cpp
@@ -10,6 +10,11 @@ using namespace Slang;
VulkanDeviceQueue::~VulkanDeviceQueue()
{
+ destroy();
+}
+
+void VulkanDeviceQueue::destroy()
+{
if (m_api)
{
for (int i = 0; i < int(EventType::CountOf); ++i)
@@ -23,14 +28,14 @@ VulkanDeviceQueue::~VulkanDeviceQueue()
m_api->vkDestroyFence(m_api->m_device, m_fences[i].fence, nullptr);
}
m_api->vkDestroyCommandPool(m_api->m_device, m_commandPool, nullptr);
+ m_api = nullptr;
}
}
SlangResult VulkanDeviceQueue::init(const VulkanApi& api, VkQueue queue, int queueIndex)
{
assert(m_api == nullptr);
- m_api = &api;
-
+
for (int i = 0; i < int(EventType::CountOf); ++i)
{
m_semaphores[i] = VK_NULL_HANDLE;
@@ -79,6 +84,9 @@ SlangResult VulkanDeviceQueue::init(const VulkanApi& api, VkQueue queue, int que
api.vkCreateSemaphore(api.m_device, &semaphoreCreateInfo, nullptr, &m_semaphores[i]);
}
+ // Set the api - also marks that the queue appears to be valid
+ m_api = &api;
+
// Second step of flush to prime command buffer
flushStepB();
diff --git a/tools/gfx/vulkan/vk-device-queue.h b/tools/gfx/vulkan/vk-device-queue.h
index d57483ec0..cd53b6b9d 100644
--- a/tools/gfx/vulkan/vk-device-queue.h
+++ b/tools/gfx/vulkan/vk-device-queue.h
@@ -54,6 +54,12 @@ struct VulkanDeviceQueue
/// Steps to next command buffer and opens. May block if command buffer is still in use
void flushStepB();
+ /// Destroy the device queue
+ void destroy();
+
+ /// True if the queue appears to be valid and has been initialized
+ bool isValid() const { return m_api != nullptr; }
+
/// Dtor
~VulkanDeviceQueue();
diff --git a/tools/gfx/vulkan/vk-swap-chain.cpp b/tools/gfx/vulkan/vk-swap-chain.cpp
index 5cf2e96ae..d9b3a495d 100644
--- a/tools/gfx/vulkan/vk-swap-chain.cpp
+++ b/tools/gfx/vulkan/vk-swap-chain.cpp
@@ -348,7 +348,7 @@ void VulkanSwapChain::_destroySwapChain()
m_images.clear();
}
-VulkanSwapChain::~VulkanSwapChain()
+void VulkanSwapChain::destroy()
{
_destroySwapChain();
@@ -359,6 +359,12 @@ VulkanSwapChain::~VulkanSwapChain()
}
}
+
+VulkanSwapChain::~VulkanSwapChain()
+{
+ destroy();
+}
+
int VulkanSwapChain::nextFrontImageIndex()
{
if (!hasValidSwapChain())
diff --git a/tools/gfx/vulkan/vk-swap-chain.h b/tools/gfx/vulkan/vk-swap-chain.h
index 57d1173b8..9b4dfc2c1 100644
--- a/tools/gfx/vulkan/vk-swap-chain.h
+++ b/tools/gfx/vulkan/vk-swap-chain.h
@@ -94,6 +94,8 @@ struct VulkanSwapChain
/// Get the next front render image index. Returns -1, if image couldn't be found
int nextFrontImageIndex();
+ void destroy();
+
/// Dtor
~VulkanSwapChain();