diff --git a/src/gbm/backends/magma/gbm_magma.c b/src/gbm/backends/magma/gbm_magma.c
index 8ac9618..b163b0e 100644
--- a/src/gbm/backends/magma/gbm_magma.c
+++ b/src/gbm/backends/magma/gbm_magma.c
@@ -26,8 +26,8 @@
 #include <assert.h>
 #include <errno.h>
 #include <magma.h>
-#include <stdio.h>
 #include <stdbool.h>
+#include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
 #include <sys/mman.h>
@@ -47,8 +47,7 @@
 struct gbm_magma_bo {
    struct gbm_bo base;
    magma_buffer_t image;
-   uint64_t modifier;
-   uint32_t coherency_domain;
+   magma_image_info_t info;
 };
 
 static struct gbm_magma_device* magma_device(struct gbm_device* device)
@@ -82,7 +81,13 @@
 static int magma_get_format_modifier_plane_count(struct gbm_device* device, uint32_t format,
                                                  uint64_t modifier)
 {
-   return 1;
+   switch (modifier) {
+   case I915_FORMAT_MOD_Y_TILED_CCS:
+   case I915_FORMAT_MOD_Yf_TILED_CCS:
+      return 2;
+   default:
+      return 1;
+   }
 }
 
 static struct gbm_bo* magma_bo_create(struct gbm_device* device, uint32_t width, uint32_t height,
@@ -135,8 +140,7 @@
 
    struct gbm_magma_bo* bo = malloc(sizeof(struct gbm_magma_bo));
    bo->image = image;
-   bo->modifier = info.drm_format_modifier;
-   bo->coherency_domain = info.coherency_domain;
+   bo->info = info;
 
    bo->base.gbm = device;
    bo->base.width = width;
@@ -209,17 +213,15 @@
 
    struct gbm_magma_bo* bo = malloc(sizeof(struct gbm_magma_bo));
    bo->image = image;
-   // if no modifier is provided, provide the actual modifier
-   bo->modifier = import_data.modifier != DRM_FORMAT_MOD_INVALID ? import_data.modifier
-                                                                 : info.drm_format_modifier;
-   bo->coherency_domain = info.coherency_domain;
+   // don't use the client given modifier
+   bo->info = info;
 
    bo->base.gbm = device;
    bo->base.width = import_data.width;
    bo->base.height = import_data.height;
    bo->base.format = import_data.format;
-   // if no stride is provided, provide the actual stride
-   bo->base.stride = import_data.strides[0] ? import_data.strides[0] : info.plane_strides[0];
+   // don't use the given stride
+   bo->base.stride = info.plane_strides[0];
    bo->base.handle.u64 = image;
    bo->base.user_data = NULL;
    bo->base.destroy_user_data = NULL;
@@ -227,35 +229,69 @@
    return &bo->base;
 }
 
-static int magma_bo_get_planes(struct gbm_bo* bo) { return 1; }
+static int magma_bo_get_planes(struct gbm_bo* bo)
+{
+   return magma_get_format_modifier_plane_count(bo->gbm, magma_bo(bo)->base.format,
+                                                magma_bo(bo)->info.drm_format_modifier);
+}
 
 static union gbm_bo_handle magma_bo_get_handle_for_plane(struct gbm_bo* bo, int plane)
 {
+   // We don't support more than one memory plane
    if (plane != 0) {
-      LOG_VERBOSE("Unhandled plane: %d\n", plane);
-      union gbm_bo_handle handle = {0};
+      LOG_VERBOSE("Only one memory plane supported");
+      union gbm_bo_handle handle;
+      handle.s32 = -1;
       return handle;
    }
+
    return magma_bo(bo)->base.handle;
 }
 
-static uint64_t magma_bo_get_modifier(struct gbm_bo* bo) { return magma_bo(bo)->modifier; }
-
-static uint32_t magma_bo_get_offset(struct gbm_bo* bo, int plane) { return 0; }
-
-static uint32_t magma_bo_get_stride(struct gbm_bo* bo, int plane)
+static uint64_t magma_bo_get_modifier(struct gbm_bo* bo)
 {
-   if (plane != 0) {
+   return magma_bo(bo)->info.drm_format_modifier;
+}
+
+static int find_plane(struct gbm_bo* bo, int plane)
+{
+   int found_plane = -1;
+
+   for (int i = 0; i < MAGMA_MAX_IMAGE_PLANES; i++) {
+      if (i == 0 || magma_bo(bo)->info.plane_offsets[i]) {
+         if (++found_plane == plane)
+            return i;
+      }
+   }
+
+   return -1;
+}
+
+static uint32_t magma_bo_get_offset(struct gbm_bo* bo, int plane)
+{
+   int plane_index = find_plane(bo, plane);
+   if (plane_index < 0) {
       LOG_VERBOSE("Unhandled plane: %d\n", plane);
       return 0;
    }
-   return magma_bo(bo)->base.stride;
+   return magma_bo(bo)->info.plane_offsets[plane_index];
+}
+
+static uint32_t magma_bo_get_stride(struct gbm_bo* bo, int plane)
+{
+   int plane_index = find_plane(bo, plane);
+   if (plane_index < 0) {
+      LOG_VERBOSE("Unhandled plane: %d\n", plane);
+      return 0;
+   }
+   return magma_bo(bo)->info.plane_strides[plane_index];
 }
 
 static int magma_bo_get_plane_fd(struct gbm_bo* bo, int plane)
 {
+   // We don't support more than one memory plane
    if (plane != 0) {
-      LOG_VERBOSE("Unhandled plane: %d\n", plane);
+      LOG_VERBOSE("Only one memory plane supported");
       return -1;
    }
 
@@ -323,7 +359,7 @@
    vma->flags = flags;
 
    if ((flags & GBM_BO_TRANSFER_READ) &&
-       magma_bo(bo)->coherency_domain == MAGMA_COHERENCY_DOMAIN_RAM) {
+       magma_bo(bo)->info.coherency_domain == MAGMA_COHERENCY_DOMAIN_RAM) {
       magma_status_t status = magma_clean_cache(magma_bo(bo)->image, vma->offset, vma->length,
                                                 MAGMA_CACHE_OPERATION_CLEAN_INVALIDATE);
       if (status != MAGMA_STATUS_OK) {
@@ -342,7 +378,7 @@
    struct Vma* vma = map_data;
 
    if ((vma->flags & GBM_BO_TRANSFER_WRITE) &&
-       magma_bo(bo)->coherency_domain == MAGMA_COHERENCY_DOMAIN_RAM) {
+       magma_bo(bo)->info.coherency_domain == MAGMA_COHERENCY_DOMAIN_RAM) {
       magma_status_t status = magma_clean_cache(magma_bo(bo)->image, vma->offset, vma->length,
                                                 MAGMA_CACHE_OPERATION_CLEAN);
       if (status != MAGMA_STATUS_OK) {
diff --git a/src/intel/vulkan/anv_image.c b/src/intel/vulkan/anv_image.c
index 893d0aa..800e455 100644
--- a/src/intel/vulkan/anv_image.c
+++ b/src/intel/vulkan/anv_image.c
@@ -1607,9 +1607,6 @@
        }
        assert(drm_format_modifier != DRM_FORMAT_MOD_INVALID);
 
-       /* TODO(fxbug.dev/73404) - CCS disabled bc sysmem doesn't support it. */
-       const uint32_t kExtraUsageFlags = ISL_SURF_USAGE_DISABLE_AUX_BIT;
-
        /* If there is no explicit info, create a list-of-one to convey the modifier.
         * Insert at the beginning of the chain to hide any existing list.
         */
@@ -1628,7 +1625,7 @@
        VkResult result = anv_image_create(device,
                                &(struct anv_image_create_info){
                                    .vk_info = &local_create_info,
-                                   .isl_extra_usage_flags = kExtraUsageFlags,
+                                   .isl_extra_usage_flags = 0,
                                },
                                pAllocator, pImage);
        if (result != VK_SUCCESS) {
