mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-28 19:00:13 +01:00
anv: Refactor device_get_cache_uuid into physical_device_init_uuids
Reviewed-by: Chad Versace <chadversary@chromium.org>
This commit is contained in:
parent
35e626bd0e
commit
02767cb4ff
1 changed files with 17 additions and 13 deletions
|
|
@ -97,16 +97,20 @@ anv_compute_heap_size(int fd, uint64_t *heap_size)
|
|||
return VK_SUCCESS;
|
||||
}
|
||||
|
||||
static bool
|
||||
anv_device_get_cache_uuid(void *uuid, uint16_t pci_id)
|
||||
static VkResult
|
||||
anv_physical_device_init_uuids(struct anv_physical_device *device)
|
||||
{
|
||||
const struct build_id_note *note = build_id_find_nhdr("libvulkan_intel.so");
|
||||
if (!note)
|
||||
return false;
|
||||
if (!note) {
|
||||
return vk_errorf(VK_ERROR_INITIALIZATION_FAILED,
|
||||
"Failed to find build-id");
|
||||
}
|
||||
|
||||
unsigned build_id_len = build_id_length(note);
|
||||
if (build_id_len < 20) /* It should be a SHA-1 */
|
||||
return false;
|
||||
if (build_id_len < 20) {
|
||||
return vk_errorf(VK_ERROR_INITIALIZATION_FAILED,
|
||||
"build-id too short. It needs to be a SHA");
|
||||
}
|
||||
|
||||
struct mesa_sha1 sha1_ctx;
|
||||
uint8_t sha1[20];
|
||||
|
|
@ -114,11 +118,12 @@ anv_device_get_cache_uuid(void *uuid, uint16_t pci_id)
|
|||
|
||||
_mesa_sha1_init(&sha1_ctx);
|
||||
_mesa_sha1_update(&sha1_ctx, build_id_data(note), build_id_len);
|
||||
_mesa_sha1_update(&sha1_ctx, &pci_id, sizeof(pci_id));
|
||||
_mesa_sha1_update(&sha1_ctx, &device->chipset_id,
|
||||
sizeof(device->chipset_id));
|
||||
_mesa_sha1_final(&sha1_ctx, sha1);
|
||||
memcpy(device->uuid, sha1, VK_UUID_SIZE);
|
||||
|
||||
memcpy(uuid, sha1, VK_UUID_SIZE);
|
||||
return true;
|
||||
return VK_SUCCESS;
|
||||
}
|
||||
|
||||
static VkResult
|
||||
|
|
@ -204,11 +209,10 @@ anv_physical_device_init(struct anv_physical_device *device,
|
|||
|
||||
device->has_exec_async = anv_gem_get_param(fd, I915_PARAM_HAS_EXEC_ASYNC);
|
||||
|
||||
if (!anv_device_get_cache_uuid(device->uuid, device->chipset_id)) {
|
||||
result = vk_errorf(VK_ERROR_INITIALIZATION_FAILED,
|
||||
"cannot generate UUID");
|
||||
result = anv_physical_device_init_uuids(device);
|
||||
if (result != VK_SUCCESS)
|
||||
goto fail;
|
||||
}
|
||||
|
||||
bool swizzled = anv_gem_get_bit6_swizzle(fd, I915_TILING_X);
|
||||
|
||||
/* GENs prior to 8 do not support EU/Subslice info */
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue