diff --git a/src/intel/vulkan/anv_android.c b/src/intel/vulkan/anv_android.c index c241a0e4624..c3446985333 100644 --- a/src/intel/vulkan/anv_android.c +++ b/src/intel/vulkan/anv_android.c @@ -532,6 +532,8 @@ anv_image_init_from_gralloc(struct anv_device *device, base_info->tiling); assert(format != ISL_FORMAT_UNSUPPORTED); + anv_info.stride = gralloc_info->stride * (isl_format_get_layout(format)->bpb / 8); + result = anv_image_init(device, image, &anv_info); if (result != VK_SUCCESS) goto fail_init; diff --git a/src/intel/vulkan/anv_image.c b/src/intel/vulkan/anv_image.c index 6ea5088b084..1219c8348da 100644 --- a/src/intel/vulkan/anv_image.c +++ b/src/intel/vulkan/anv_image.c @@ -1399,7 +1399,7 @@ anv_image_init(struct anv_device *device, struct anv_image *image, mod_explicit_info, isl_tiling_flags, create_info->isl_extra_usage_flags); } else { - r = add_all_surfaces_implicit_layout(device, image, fmt_list, 0, + r = add_all_surfaces_implicit_layout(device, image, fmt_list, create_info->stride, isl_tiling_flags, create_info->isl_extra_usage_flags); } diff --git a/src/intel/vulkan/anv_private.h b/src/intel/vulkan/anv_private.h index d32c8e69cfd..02b9806befd 100644 --- a/src/intel/vulkan/anv_private.h +++ b/src/intel/vulkan/anv_private.h @@ -3985,6 +3985,9 @@ struct anv_image_create_info { /** These flags will be added to any derived from VkImageCreateInfo. */ isl_surf_usage_flags_t isl_extra_usage_flags; + + /** An opt-in stride, should be 0 for implicit layouts */ + uint32_t stride; }; VkResult anv_image_init(struct anv_device *device, struct anv_image *image,