From 07970bb1e3ae93413c3ea999f11193664b9f95b1 Mon Sep 17 00:00:00 2001 From: Sascha Willems Date: Sat, 12 Sep 2020 13:06:39 +0200 Subject: [PATCH] Proper cleanup --- .../variablerateshading/variablerateshading.cpp | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/examples/variablerateshading/variablerateshading.cpp b/examples/variablerateshading/variablerateshading.cpp index 6e745f1e..70f26773 100644 --- a/examples/variablerateshading/variablerateshading.cpp +++ b/examples/variablerateshading/variablerateshading.cpp @@ -25,7 +25,15 @@ VulkanExample::VulkanExample() : VulkanExampleBase(ENABLE_VALIDATION) VulkanExample::~VulkanExample() { + vkDestroyPipeline(device, basePipelines.masked, nullptr); + vkDestroyPipeline(device, basePipelines.opaque, nullptr); + vkDestroyPipeline(device, shadingRatePipelines.masked, nullptr); + vkDestroyPipeline(device, shadingRatePipelines.opaque, nullptr); vkDestroyPipelineLayout(device, pipelineLayout, nullptr); + vkDestroyDescriptorSetLayout(device, descriptorSetLayout, nullptr); + vkDestroyImageView(device, shadingRateImage.view, nullptr); + vkDestroyImage(device, shadingRateImage.image, nullptr); + vkFreeMemory(device, shadingRateImage.memory, nullptr); shaderData.buffer.destroy(); } @@ -36,7 +44,6 @@ void VulkanExample::getEnabledFeatures() enabledPhysicalDeviceShadingRateImageFeaturesNV = {}; enabledPhysicalDeviceShadingRateImageFeaturesNV.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV; enabledPhysicalDeviceShadingRateImageFeaturesNV.shadingRateImage = VK_TRUE; - // @todo deviceCreatepNextChain = &enabledPhysicalDeviceShadingRateImageFeaturesNV; } @@ -211,10 +218,10 @@ void VulkanExample::prepareShadingRateImage() for (uint32_t y = 0; y < imageExtent.height; y++) { for (uint32_t x = 0; x < imageExtent.width; x++) { const float deltaX = (float)imageExtent.width / 2.0f - (float)x; - const float deltaY = (float)imageExtent.height / 2.0f - (float)y; + const float deltaY = ((float)imageExtent.height / 2.0f - (float)y) * ((float)width / (float)height); const float dist = std::sqrt(deltaX * deltaX + deltaY * deltaY); for (auto pattern : patternLookup) { - if (dist <= pattern.first) { + if (dist < pattern.first) { *ptrData = pattern.second; break; }