Fix compile warning and crash in SSAO test.

emptyTexture was not initialized, so when destroying it the
destroy Vulkan functions were called with bogus pointers.
This commit is contained in:
Per Inge Mathisen 2020-11-24 13:17:54 +01:00
parent 0d732cc4a4
commit 5042f46388
2 changed files with 11 additions and 8 deletions

View file

@ -53,10 +53,13 @@ void vkglTF::Texture::updateDescriptor()
void vkglTF::Texture::destroy() void vkglTF::Texture::destroy()
{ {
if (device)
{
vkDestroyImageView(device->logicalDevice, view, nullptr); vkDestroyImageView(device->logicalDevice, view, nullptr);
vkDestroyImage(device->logicalDevice, image, nullptr); vkDestroyImage(device->logicalDevice, image, nullptr);
vkFreeMemory(device->logicalDevice, deviceMemory, nullptr); vkFreeMemory(device->logicalDevice, deviceMemory, nullptr);
vkDestroySampler(device->logicalDevice, sampler, nullptr); vkDestroySampler(device->logicalDevice, sampler, nullptr);
}
} }
void vkglTF::Texture::fromglTfImage(tinygltf::Image &gltfimage, std::string path, vks::VulkanDevice *device, VkQueue copyQueue) void vkglTF::Texture::fromglTfImage(tinygltf::Image &gltfimage, std::string path, vks::VulkanDevice *device, VkQueue copyQueue)

View file

@ -53,7 +53,7 @@ namespace vkglTF
glTF texture loading class glTF texture loading class
*/ */
struct Texture { struct Texture {
vks::VulkanDevice* device; vks::VulkanDevice* device = nullptr;
VkImage image; VkImage image;
VkImageLayout imageLayout; VkImageLayout imageLayout;
VkDeviceMemory deviceMemory; VkDeviceMemory deviceMemory;
@ -72,7 +72,7 @@ namespace vkglTF
glTF material class glTF material class
*/ */
struct Material { struct Material {
vks::VulkanDevice* device; vks::VulkanDevice* device = nullptr;
enum AlphaMode { ALPHAMODE_OPAQUE, ALPHAMODE_MASK, ALPHAMODE_BLEND }; enum AlphaMode { ALPHAMODE_OPAQUE, ALPHAMODE_MASK, ALPHAMODE_BLEND };
AlphaMode alphaMode = ALPHAMODE_OPAQUE; AlphaMode alphaMode = ALPHAMODE_OPAQUE;
float alphaCutoff = 1.0f; float alphaCutoff = 1.0f;