radv: always create an fallback pipeline cache

This will be used as an in-memory cache when a pipeline cache is
not provided by the app.

Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
This commit is contained in:
Timothy Arceri 2017-03-15 14:14:24 +11:00
parent 4ffdab78b9
commit 315e8a9321
2 changed files with 20 additions and 0 deletions

View file

@ -1009,6 +1009,20 @@ VkResult radv_CreateDevice(
if (device->physical_device->rad_info.chip_class >= CIK)
cik_create_gfx_config(device);
VkPipelineCacheCreateInfo ci;
ci.sType = VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO;
ci.pNext = NULL;
ci.flags = 0;
ci.pInitialData = NULL;
ci.initialDataSize = 0;
VkPipelineCache pc;
result = radv_CreatePipelineCache(radv_device_to_handle(device),
&ci, NULL, &pc);
if (result != VK_SUCCESS)
goto fail;
device->mem_cache = radv_pipeline_cache_from_handle(pc);
*pDevice = radv_device_to_handle(device);
return VK_SUCCESS;
@ -1057,6 +1071,9 @@ void radv_DestroyDevice(
}
radv_device_finish_meta(device);
VkPipelineCache pc = radv_pipeline_cache_to_handle(device->mem_cache);
radv_DestroyPipelineCache(radv_device_to_handle(device), pc, NULL);
vk_free(&device->alloc, device);
}

View file

@ -508,6 +508,9 @@ struct radv_device {
uint32_t *trace_id_ptr;
struct radv_physical_device *physical_device;
/* Backup in-memory cache to be used if the app doesn't provide one */
struct radv_pipeline_cache * mem_cache;
};
struct radv_device_memory {