Avoid using magma_buffer_get_id and magma_buffer_get_size

Convert to using magma_virt_connection_create_image2
magma_connection_create_buffer2, and magma_connection_import_buffer2 to
retrieve this information.

Bug: 121902
Change-Id: Ia042c8ba6bf8f796fd586c235b7b96c671598586
Reviewed-on: https://fuchsia-review.googlesource.com/c/third_party/mesa/+/804707
Reviewed-by: Craig Stout <cstout@google.com>
diff --git a/src/gbm/backends/magma/gbm_magma.c b/src/gbm/backends/magma/gbm_magma.c
index 474e769..5d0c581 100644
--- a/src/gbm/backends/magma/gbm_magma.c
+++ b/src/gbm/backends/magma/gbm_magma.c
@@ -48,6 +48,7 @@
    struct gbm_bo base;
    magma_buffer_t image;
    magma_image_info_t info;
+   uint64_t size;
 };
 
 static struct gbm_magma_device* magma_device(struct gbm_device* device)
@@ -123,8 +124,10 @@
    }
 
    magma_buffer_t image;
-   magma_status_t status =
-       magma_virt_connection_create_image(magma_device(device)->connection, &create_info, &image);
+   uint64_t size;
+   magma_buffer_id_t buffer_id;
+   magma_status_t status = magma_virt_connection_create_image2(
+       magma_device(device)->connection, &create_info, &size, &image, &buffer_id);
    if (status != MAGMA_STATUS_OK) {
       LOG_VERBOSE("magma_virt_create_image failed: %d", status);
       return NULL;
@@ -141,6 +144,7 @@
    struct gbm_magma_bo* bo = malloc(sizeof(struct gbm_magma_bo));
    bo->image = image;
    bo->info = info;
+   bo->size = size;
 
    bo->base.gbm = device;
    bo->base.v0.width = width;
@@ -197,8 +201,10 @@
    }
 
    magma_buffer_t image;
-   magma_status_t status =
-       magma_connection_import_buffer(magma_device(device)->connection, import_data.fds[0], &image);
+   uint64_t size;
+   magma_buffer_id_t buffer_id;
+   magma_status_t status = magma_connection_import_buffer2(
+       magma_device(device)->connection, import_data.fds[0], &size, &image, &buffer_id);
    if (status != MAGMA_STATUS_OK) {
       LOG_VERBOSE("magma_import failed: %d", status);
       return NULL;
@@ -215,6 +221,7 @@
    bo->image = image;
    // don't use the client given modifier
    bo->info = info;
+   bo->size = size;
 
    bo->base.gbm = device;
    bo->base.v0.width = import_data.width;
@@ -348,7 +355,7 @@
 
    if (addr == MAP_FAILED) {
       LOG_VERBOSE("mmap failed: errno %d offset %lu length %lu buffer size %lu\n", errno, offset,
-                  length, magma_buffer_get_size(magma_bo(bo)->image));
+                  length, magma_bo(bo)->size);
       return MAP_FAILED;
    }
 
diff --git a/src/intel/vulkan/anv_magma.c b/src/intel/vulkan/anv_magma.c
index 8a36de7..7b6e640 100644
--- a/src/intel/vulkan/anv_magma.c
+++ b/src/intel/vulkan/anv_magma.c
@@ -110,8 +110,9 @@
 {
    magma_buffer_t buffer;
    uint64_t magma_size = size;
-   magma_status_t status =
-       magma_connection_create_buffer(magma_connection(device), magma_size, &magma_size, &buffer);
+   magma_buffer_id_t buffer_id;
+   magma_status_t status = magma_connection_create_buffer2(magma_connection(device), magma_size,
+                                                           &magma_size, &buffer, &buffer_id);
    if (status != MAGMA_STATUS_OK) {
       mesa_logd("magma_create_buffer failed (%d) size 0x%" PRIx64, status, magma_size);
       return 0;
@@ -119,7 +120,7 @@
 
    struct anv_connection* connection = get_anv_connection(device->vk.magma_connection);
 
-   struct anv_magma_buffer* buffer_object = AnvMagmaCreateBuffer(connection, buffer);
+   struct anv_magma_buffer* buffer_object = AnvMagmaCreateBuffer(connection, buffer, buffer_id);
 
    uint32_t gem_handle = new_buffer_handle(connection->buffer_map, buffer_object);
 
@@ -362,13 +363,15 @@
 {
    uint32_t handle = (uint32_t)fd;
    magma_buffer_t buffer;
-   magma_status_t result = magma_connection_import_buffer(
-      magma_connection(device), handle, &buffer);
+   uint64_t size;
+   magma_buffer_id_t buffer_id;
+   magma_status_t result = magma_connection_import_buffer2(magma_connection(device), handle, &size,
+                                                           &buffer, &buffer_id);
    assert(result == MAGMA_STATUS_OK);
 
    struct anv_connection* connection = get_anv_connection(device->vk.magma_connection);
 
-   struct anv_magma_buffer* buffer_object = AnvMagmaCreateBuffer(connection, buffer);
+   struct anv_magma_buffer* buffer_object = AnvMagmaCreateBuffer(connection, buffer, buffer_id);
 
    uint32_t gem_handle = new_buffer_handle(connection->buffer_map, buffer_object);
 
@@ -387,8 +390,10 @@
                                   uint32_t* gem_handle_out, uint64_t* size_out)
 {
    magma_buffer_t buffer;
-   magma_status_t status = magma_connection_import_buffer(
-      magma_connection(device), handle, &buffer);
+   uint64_t size;
+   magma_buffer_id_t buffer_id;
+   magma_status_t status = magma_connection_import_buffer2(magma_connection(device), handle, &size,
+                                                           &buffer, &buffer_id);
    if (status != MAGMA_STATUS_OK) {
       mesa_logd("magma_import failed: %d", status);
       return -EINVAL;
@@ -396,11 +401,11 @@
 
    struct anv_connection* connection = get_anv_connection(device->vk.magma_connection);
 
-   struct anv_magma_buffer* buffer_object = AnvMagmaCreateBuffer(connection, buffer);
+   struct anv_magma_buffer* buffer_object = AnvMagmaCreateBuffer(connection, buffer, buffer_id);
 
    uint32_t gem_handle = new_buffer_handle(connection->buffer_map, buffer_object);
 
-   *size_out = magma_buffer_get_size(buffer);
+   *size_out = size;
    *gem_handle_out = gem_handle;
 
    return 0;
@@ -516,8 +521,10 @@
    info.drm_format_modifiers[index] = DRM_FORMAT_MOD_INVALID;
 
    magma_buffer_t image;
-   magma_status_t status = magma_virt_connection_create_image(
-      magma_connection(device), &info, &image);
+   uint64_t size;
+   magma_buffer_id_t buffer_id;
+   magma_status_t status = magma_virt_connection_create_image2(magma_connection(device), &info,
+                                                               &size, &image, &buffer_id);
    if (status != MAGMA_STATUS_OK) {
       mesa_logd("magma_virt_create_image failed (%d)", status);
       return 0;
@@ -525,7 +532,7 @@
 
    struct anv_connection* connection = get_anv_connection(device->vk.magma_connection);
 
-   struct anv_magma_buffer* buffer_object = AnvMagmaCreateBuffer(connection, image);
+   struct anv_magma_buffer* buffer_object = AnvMagmaCreateBuffer(connection, image, buffer_id);
 
    uint32_t gem_handle = new_buffer_handle(connection->buffer_map, buffer_object);
 
diff --git a/src/intel/vulkan/anv_magma.h b/src/intel/vulkan/anv_magma.h
index 370b3fd..5257e00 100644
--- a/src/intel/vulkan/anv_magma.h
+++ b/src/intel/vulkan/anv_magma.h
@@ -81,7 +81,7 @@
 
 // Transfers ownership of the |buffer|.
 struct anv_magma_buffer* AnvMagmaCreateBuffer(struct anv_connection* connection,
-                                              magma_buffer_t buffer);
+                                              magma_buffer_t buffer, magma_buffer_id_t buffer_id);
 
 void AnvMagmaReleaseBuffer(struct anv_connection* connection, struct anv_magma_buffer* buffer);
 
diff --git a/src/intel/vulkan/anv_magma_connection.cc b/src/intel/vulkan/anv_magma_connection.cc
index 3d0165f..6c0881d 100644
--- a/src/intel/vulkan/anv_magma_connection.cc
+++ b/src/intel/vulkan/anv_magma_connection.cc
@@ -294,9 +294,10 @@
    return 0;
 }
 
-anv_magma_buffer* AnvMagmaCreateBuffer(anv_connection* connection, magma_buffer_t buffer)
+anv_magma_buffer* AnvMagmaCreateBuffer(anv_connection* connection, magma_buffer_t buffer,
+                                       magma_buffer_id_t buffer_id)
 {
-   return new Buffer(buffer, magma_buffer_get_id(buffer));
+   return new Buffer(buffer, buffer_id);
 }
 
 void AnvMagmaReleaseBuffer(anv_connection* connection, anv_magma_buffer* anv_buffer)