<div dir="ltr">Would it be possible to have a cache for each family? I imagine this might cause issues when someone has multiple cards in their system</div><br><div class="gmail_quote"><div dir="ltr">On Tue, 22 Nov 2016 at 01:20 Bas Nieuwenhuizen <<a href="mailto:bas@basnieuwenhuizen.nl">bas@basnieuwenhuizen.nl</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Invalidates the cache when someone switches cards.<br class="gmail_msg">
<br class="gmail_msg">
Signed-off-by: Bas Nieuwenhuizen <<a href="mailto:basni@google.com" class="gmail_msg" target="_blank">basni@google.com</a>><br class="gmail_msg">
---<br class="gmail_msg">
 src/amd/vulkan/radv_device.c | 8 +++++---<br class="gmail_msg">
 1 file changed, 5 insertions(+), 3 deletions(-)<br class="gmail_msg">
<br class="gmail_msg">
diff --git a/src/amd/vulkan/radv_device.c b/src/amd/vulkan/radv_device.c<br class="gmail_msg">
index 04c0bdc..8595973 100644<br class="gmail_msg">
--- a/src/amd/vulkan/radv_device.c<br class="gmail_msg">
+++ b/src/amd/vulkan/radv_device.c<br class="gmail_msg">
@@ -61,9 +61,10 @@ radv_get_function_timestamp(void *ptr, uint32_t* timestamp)<br class="gmail_msg">
 }<br class="gmail_msg">
<br class="gmail_msg">
 static int<br class="gmail_msg">
-radv_device_get_cache_uuid(void *uuid)<br class="gmail_msg">
+radv_device_get_cache_uuid(enum radeon_family family, void *uuid)<br class="gmail_msg">
 {<br class="gmail_msg">
        uint32_t mesa_timestamp, llvm_timestamp;<br class="gmail_msg">
+       uint16_t f = family;<br class="gmail_msg">
        memset(uuid, 0, VK_UUID_SIZE);<br class="gmail_msg">
        if (radv_get_function_timestamp(radv_device_get_cache_uuid, &mesa_timestamp) ||<br class="gmail_msg">
            radv_get_function_timestamp(LLVMInitializeAMDGPUTargetInfo, &llvm_timestamp))<br class="gmail_msg">
@@ -71,7 +72,8 @@ radv_device_get_cache_uuid(void *uuid)<br class="gmail_msg">
<br class="gmail_msg">
        memcpy(uuid, &mesa_timestamp, 4);<br class="gmail_msg">
        memcpy((char*)uuid + 4, &llvm_timestamp, 4);<br class="gmail_msg">
-       snprintf((char*)uuid + 8, VK_UUID_SIZE - 8, "radv");<br class="gmail_msg">
+       memcpy((char*)uuid + 8, &f, 2);<br class="gmail_msg">
+       snprintf((char*)uuid + 10, VK_UUID_SIZE - 10, "radv");<br class="gmail_msg">
        return 0;<br class="gmail_msg">
 }<br class="gmail_msg">
<br class="gmail_msg">
@@ -120,7 +122,7 @@ radv_physical_device_init(struct radv_physical_device *device,<br class="gmail_msg">
                goto fail;<br class="gmail_msg">
        }<br class="gmail_msg">
<br class="gmail_msg">
-       if (radv_device_get_cache_uuid(device->uuid)) {<br class="gmail_msg">
+       if (radv_device_get_cache_uuid(device->rad_info.family, device->uuid)) {<br class="gmail_msg">
                radv_finish_wsi(device);<br class="gmail_msg">
                device->ws->destroy(device->ws);<br class="gmail_msg">
                goto fail;<br class="gmail_msg">
--<br class="gmail_msg">
2.10.2<br class="gmail_msg">
<br class="gmail_msg">
_______________________________________________<br class="gmail_msg">
mesa-dev mailing list<br class="gmail_msg">
<a href="mailto:mesa-dev@lists.freedesktop.org" class="gmail_msg" target="_blank">mesa-dev@lists.freedesktop.org</a><br class="gmail_msg">
<a href="https://lists.freedesktop.org/mailman/listinfo/mesa-dev" rel="noreferrer" class="gmail_msg" target="_blank">https://lists.freedesktop.org/mailman/listinfo/mesa-dev</a><br class="gmail_msg">
</blockquote></div>