summaryrefslogtreecommitdiffstats
path: root/src/amd
diff options
context:
space:
mode:
authorTimothy Arceri <[email protected]>2017-10-11 12:00:27 +1100
committerTimothy Arceri <[email protected]>2017-10-12 08:52:38 +1100
commit142162529233680631a246c8920e66d02ee4e94b (patch)
tree358f7ff5a49cbc36bea3a5ba2e919d4ef122c5e9 /src/amd
parent7664aaf331220f39bf306b4c8afd62966df1391a (diff)
radv: create on-disk shader cache
This is the drivers on-disk cache intended to be used as a fallback as opposed to the pipeline cache provided by apps. Reviewed-by: Bas Nieuwenhuizen <[email protected]>
Diffstat (limited to 'src/amd')
-rw-r--r--src/amd/vulkan/radv_device.c13
-rw-r--r--src/amd/vulkan/radv_private.h6
2 files changed, 19 insertions, 0 deletions
diff --git a/src/amd/vulkan/radv_device.c b/src/amd/vulkan/radv_device.c
index d414d8ca85b..23f5e70321d 100644
--- a/src/amd/vulkan/radv_device.c
+++ b/src/amd/vulkan/radv_device.c
@@ -352,6 +352,18 @@ radv_physical_device_init(struct radv_physical_device *device,
goto fail;
}
+ /* These flags affect shader compilation. */
+ uint64_t shader_env_flags =
+ (device->instance->perftest_flags & RADV_PERFTEST_SISCHED ? 0x1 : 0) |
+ (device->instance->debug_flags & RADV_DEBUG_UNSAFE_MATH ? 0x2 : 0);
+
+ /* The gpu id is already embeded in the uuid so we just pass "radv"
+ * when creating the cache.
+ */
+ char buf[VK_UUID_SIZE + 1];
+ disk_cache_format_hex_id(buf, device->cache_uuid, VK_UUID_SIZE);
+ device->disk_cache = disk_cache_create("radv", buf, shader_env_flags);
+
result = radv_extensions_register(instance,
&device->extensions,
common_device_extensions,
@@ -402,6 +414,7 @@ radv_physical_device_finish(struct radv_physical_device *device)
radv_extensions_finish(device->instance, &device->extensions);
radv_finish_wsi(device);
device->ws->destroy(device->ws);
+ disk_cache_destroy(device->disk_cache);
close(device->local_fd);
}
diff --git a/src/amd/vulkan/radv_private.h b/src/amd/vulkan/radv_private.h
index 548952faa97..e673527811f 100644
--- a/src/amd/vulkan/radv_private.h
+++ b/src/amd/vulkan/radv_private.h
@@ -277,6 +277,12 @@ struct radv_physical_device {
bool has_rbplus; /* if RB+ register exist */
bool rbplus_allowed; /* if RB+ is allowed */
+
+
+ /* This is the drivers on-disk cache used as a fallback as opposed to
+ * the pipeline cache defined by apps.
+ */
+ struct disk_cache * disk_cache;
};
struct radv_instance {