summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorEmil Velikov <[email protected]>2016-11-24 20:30:38 +0000
committerEmil Velikov <[email protected]>2016-11-28 19:46:05 +0000
commitde138e9cede4b1996fac9256d894c80e7b48a6d7 (patch)
treec8b97b1c50dbbb89363cbee147422b10e44c403c /src
parent3f9397753b9db577ad41ff1e8e72d9ae90401261 (diff)
anv: Store UUID in physical device.
Port of an equivalent commit for radv. v2: Move the call just after MMAP_VERSION (Ken). Signed-off-by: Emil Velikov <[email protected]> Reviewed-by: Jason Ekstrand <[email protected]>
Diffstat (limited to 'src')
-rw-r--r--src/intel/vulkan/anv_device.c17
-rw-r--r--src/intel/vulkan/anv_pipeline_cache.c8
-rw-r--r--src/intel/vulkan/anv_private.h4
3 files changed, 15 insertions, 14 deletions
diff --git a/src/intel/vulkan/anv_device.c b/src/intel/vulkan/anv_device.c
index 51f0dc4185b..d5fbb8c8324 100644
--- a/src/intel/vulkan/anv_device.c
+++ b/src/intel/vulkan/anv_device.c
@@ -53,6 +53,13 @@ compiler_perf_log(void *data, const char *fmt, ...)
va_end(args);
}
+static void
+anv_device_get_cache_uuid(void *uuid)
+{
+ memset(uuid, 0, VK_UUID_SIZE);
+ snprintf(uuid, VK_UUID_SIZE, "anv-%s", ANV_TIMESTAMP);
+}
+
static VkResult
anv_physical_device_init(struct anv_physical_device *device,
struct anv_instance *instance,
@@ -134,6 +141,7 @@ anv_physical_device_init(struct anv_physical_device *device,
goto fail;
}
+ anv_device_get_cache_uuid(device->uuid);
bool swizzled = anv_gem_get_bit6_swizzle(fd, I915_TILING_X);
/* GENs prior to 8 do not support EU/Subslice info */
@@ -454,13 +462,6 @@ void anv_GetPhysicalDeviceFeatures(
pdevice->compiler->scalar_stage[MESA_SHADER_GEOMETRY];
}
-void
-anv_device_get_cache_uuid(void *uuid)
-{
- memset(uuid, 0, VK_UUID_SIZE);
- snprintf(uuid, VK_UUID_SIZE, "anv-%s", ANV_TIMESTAMP);
-}
-
void anv_GetPhysicalDeviceProperties(
VkPhysicalDevice physicalDevice,
VkPhysicalDeviceProperties* pProperties)
@@ -601,7 +602,7 @@ void anv_GetPhysicalDeviceProperties(
};
strcpy(pProperties->deviceName, pdevice->name);
- anv_device_get_cache_uuid(pProperties->pipelineCacheUUID);
+ memcpy(pProperties->pipelineCacheUUID, pdevice->uuid, VK_UUID_SIZE);
}
void anv_GetPhysicalDeviceQueueFamilyProperties(
diff --git a/src/intel/vulkan/anv_pipeline_cache.c b/src/intel/vulkan/anv_pipeline_cache.c
index ddd51dbfd77..a8ea80f51f5 100644
--- a/src/intel/vulkan/anv_pipeline_cache.c
+++ b/src/intel/vulkan/anv_pipeline_cache.c
@@ -333,8 +333,8 @@ anv_pipeline_cache_load(struct anv_pipeline_cache *cache,
const void *data, size_t size)
{
struct anv_device *device = cache->device;
+ struct anv_physical_device *pdevice = &device->instance->physicalDevice;
struct cache_header header;
- uint8_t uuid[VK_UUID_SIZE];
if (cache->cache == NULL)
return;
@@ -350,8 +350,7 @@ anv_pipeline_cache_load(struct anv_pipeline_cache *cache,
return;
if (header.device_id != device->chipset_id)
return;
- anv_device_get_cache_uuid(uuid);
- if (memcmp(header.uuid, uuid, VK_UUID_SIZE) != 0)
+ if (memcmp(header.uuid, pdevice->uuid, VK_UUID_SIZE) != 0)
return;
const void *end = data + size;
@@ -470,6 +469,7 @@ VkResult anv_GetPipelineCacheData(
{
ANV_FROM_HANDLE(anv_device, device, _device);
ANV_FROM_HANDLE(anv_pipeline_cache, cache, _cache);
+ struct anv_physical_device *pdevice = &device->instance->physicalDevice;
struct cache_header *header;
if (pData == NULL) {
@@ -497,7 +497,7 @@ VkResult anv_GetPipelineCacheData(
header->header_version = VK_PIPELINE_CACHE_HEADER_VERSION_ONE;
header->vendor_id = 0x8086;
header->device_id = device->chipset_id;
- anv_device_get_cache_uuid(header->uuid);
+ memcpy(header->uuid, pdevice->uuid, VK_UUID_SIZE);
p += align_u32(header->header_size, 8);
uint32_t *count = p;
diff --git a/src/intel/vulkan/anv_private.h b/src/intel/vulkan/anv_private.h
index edc008db715..4949a8008fa 100644
--- a/src/intel/vulkan/anv_private.h
+++ b/src/intel/vulkan/anv_private.h
@@ -506,6 +506,8 @@ struct anv_physical_device {
uint32_t eu_total;
uint32_t subslice_total;
+ uint8_t uuid[VK_UUID_SIZE];
+
struct wsi_device wsi_device;
};
@@ -597,8 +599,6 @@ struct anv_device {
pthread_cond_t queue_submit;
};
-void anv_device_get_cache_uuid(void *uuid);
-
void anv_device_init_blorp(struct anv_device *device);
void anv_device_finish_blorp(struct anv_device *device);