#include "nir/nir_serialize.h"
#include "anv_private.h"
#include "nir/nir_xfb_info.h"
+#include "vulkan/util/vk_util.h"
struct anv_shader_bin *
anv_shader_bin_create(struct anv_device *device,
void
anv_pipeline_cache_init(struct anv_pipeline_cache *cache,
struct anv_device *device,
- bool cache_enabled)
+ bool cache_enabled,
+ bool external_sync)
{
vk_object_base_init(&device->vk, &cache->base,
VK_OBJECT_TYPE_PIPELINE_CACHE);
cache->device = device;
+ cache->external_sync = external_sync;
pthread_mutex_init(&cache->mutex, NULL);
if (cache_enabled) {
}
}
-struct cache_header {
- uint32_t header_size;
- uint32_t header_version;
- uint32_t vendor_id;
- uint32_t device_id;
- uint8_t uuid[VK_UUID_SIZE];
-};
-
static void
anv_pipeline_cache_load(struct anv_pipeline_cache *cache,
const void *data, size_t size)
struct blob_reader blob;
blob_reader_init(&blob, data, size);
- struct cache_header header;
+ struct vk_pipeline_cache_header header;
blob_copy_bytes(&blob, &header, sizeof(header));
uint32_t count = blob_read_uint32(&blob);
if (blob.overrun)
if (cache == NULL)
return vk_error(VK_ERROR_OUT_OF_HOST_MEMORY);
- cache->external_sync =
- (pCreateInfo->flags & VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT);
-
anv_pipeline_cache_init(cache, device,
- device->physical->instance->pipeline_cache_enabled);
+ device->physical->instance->pipeline_cache_enabled,
+ pCreateInfo->flags & VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT);
if (pCreateInfo->initialDataSize > 0)
anv_pipeline_cache_load(cache,
blob_init_fixed(&blob, NULL, SIZE_MAX);
}
- struct cache_header header = {
- .header_size = sizeof(struct cache_header),
+ struct vk_pipeline_cache_header header = {
+ .header_size = sizeof(struct vk_pipeline_cache_header),
.header_version = VK_PIPELINE_CACHE_HEADER_VERSION_ONE,
.vendor_id = 0x8086,
.device_id = device->info.chipset_id,