{
g_warning_once ("Failed to create pipeline cache directory");
g_free (path);
+ g_free (data);
return FALSE;
}
g_free (path);
}
g_clear_error (&error);
g_object_unref (file);
+ g_free (data);
/* try again */
return gdk_vulkan_save_pipeline_cache (display);
g_warning ("Failed to save pipeline cache: %s", error->message);
g_clear_error (&error);
g_object_unref (file);
+ g_free (data);
return FALSE;
}
g_object_unref (file);
+ g_free (data);
g_free (display->vk_pipeline_cache_etag);
display->vk_pipeline_cache_etag = etag;
{
display->vk_pipeline_cache = gdk_display_load_pipeline_cache (display);
- GDK_VK_CHECK (vkCreatePipelineCache, display->vk_device,
- &(VkPipelineCacheCreateInfo) {
- .sType = VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO,
- },
- NULL,
- &display->vk_pipeline_cache);
+ if (display->vk_pipeline_cache == VK_NULL_HANDLE)
+ {
+ GDK_VK_CHECK (vkCreatePipelineCache, display->vk_device,
+ &(VkPipelineCacheCreateInfo) {
+ .sType = VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO,
+ },
+ NULL,
+ &display->vk_pipeline_cache);
+ }
}
VkPipelineCache
g_assert (display->vk_save_pipeline_cache_source == 0);
}
vkDestroyPipelineCache (display->vk_device, display->vk_pipeline_cache, NULL);
- display->vk_device = VK_NULL_HANDLE;
+ display->vk_pipeline_cache = VK_NULL_HANDLE;
g_clear_pointer (&display->vk_pipeline_cache_etag, g_free);
display->vk_pipeline_cache_size = 0;