iris: plumb device/driver UUID generators
authorJuan A. Suarez Romero <jasuarez@igalia.com>
Thu, 26 Mar 2020 16:04:19 +0000 (17:04 +0100)
committerEleni Maria Stea <estea@igalia.com>
Wed, 7 Oct 2020 08:11:28 +0000 (11:11 +0300)
Use the same generators as used in anv driver so both Vulkan and OpenGL
drivers can share the same external memory objects.

v2: removed extra parameter from function gen_uuid_compute_device_id

Signed-off-by: Juan A. Suarez Romero <jasuarez@igalia.com>
Signed-off-by: Eleni Maria Stea <estea@igalia.com>
Reviewed-by: Eric Engestrom <eric@engestrom.ch>
Reviewed-by: Rohan Garg <rohan.garg@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7025>

src/gallium/drivers/iris/iris_screen.c
src/intel/common/gen_uuid.c
src/intel/common/gen_uuid.h
src/intel/vulkan/anv_device.c

index 8c060d3..6b5eb7e 100644 (file)
@@ -55,6 +55,7 @@
 #include "intel/compiler/brw_compiler.h"
 #include "intel/common/gen_gem.h"
 #include "intel/common/gen_l3_config.h"
+#include "intel/common/gen_uuid.h"
 #include "iris_monitor.h"
 
 static void
@@ -77,6 +78,24 @@ iris_get_device_vendor(struct pipe_screen *pscreen)
    return "Intel";
 }
 
+static void
+iris_get_device_uuid(struct pipe_screen *pscreen, char *uuid)
+{
+   struct iris_screen *screen = (struct iris_screen *)pscreen;
+   const struct isl_device *isldev = &screen->isl_dev;
+
+   gen_uuid_compute_device_id((uint8_t *)uuid, isldev, PIPE_UUID_SIZE);
+}
+
+static void
+iris_get_driver_uuid(struct pipe_screen *pscreen, char *uuid)
+{
+   struct iris_screen *screen = (struct iris_screen *)pscreen;
+   const struct gen_device_info *devinfo = &screen->devinfo;
+
+   gen_uuid_compute_driver_id((uint8_t *)uuid, devinfo, PIPE_UUID_SIZE);
+}
+
 static const char *
 iris_get_name(struct pipe_screen *pscreen)
 {
@@ -768,6 +787,8 @@ iris_screen_create(int fd, const struct pipe_screen_config *config)
    pscreen->get_compute_param = iris_get_compute_param;
    pscreen->get_paramf = iris_get_paramf;
    pscreen->get_compiler_options = iris_get_compiler_options;
+   pscreen->get_device_uuid = iris_get_device_uuid;
+   pscreen->get_driver_uuid = iris_get_driver_uuid;
    pscreen->get_disk_shader_cache = iris_get_disk_shader_cache;
    pscreen->is_format_supported = iris_is_format_supported;
    pscreen->context_create = iris_create_context;
index d429af2..02dfb54 100644 (file)
 
 void
 gen_uuid_compute_device_id(uint8_t *uuid,
-                           const struct gen_device_info *devinfo,
                            const struct isl_device *isldev,
                            size_t size)
 {
    struct mesa_sha1 sha1_ctx;
    uint8_t sha1[20];
+   const struct gen_device_info *devinfo = isldev->info;
 
    assert(size <= sizeof(sha1));
 
index 577bff1..507e10b 100644 (file)
@@ -33,7 +33,6 @@ extern "C" {
 #endif
 
 void gen_uuid_compute_device_id(uint8_t *uuid,
-                                const struct gen_device_info *devinfo,
                                 const struct isl_device *isldev,
                                 size_t size);
 
index 8b743a0..5519a7d 100644 (file)
@@ -255,8 +255,7 @@ anv_physical_device_init_uuids(struct anv_physical_device *device)
    memcpy(device->pipeline_cache_uuid, sha1, VK_UUID_SIZE);
 
    gen_uuid_compute_driver_id(device->driver_uuid, &device->info, VK_UUID_SIZE);
-   gen_uuid_compute_device_id(device->device_uuid, &device->info,
-                              &device->isl_dev, VK_UUID_SIZE);
+   gen_uuid_compute_device_id(device->device_uuid, &device->isl_dev, VK_UUID_SIZE);
 
    return VK_SUCCESS;
 }