/* Some legacy (non-modifiers) consumers need the tiling to be set on
* the BO. In this case, we have a dedicated allocation.
*/
- if (image->needs_set_tiling) {
+ if (image->vk.wsi_legacy_scanout) {
const uint32_t i915_tiling =
isl_tiling_to_i915_tiling(image->planes[0].primary_surface.isl.tiling);
int ret = anv_gem_set_tiling(device, mem->bo->gem_handle,
image->vk.stencil_usage =
anv_image_create_usage(pCreateInfo, image->vk.stencil_usage);
- const struct wsi_image_create_info *wsi_info =
- vk_find_struct_const(pCreateInfo->pNext, WSI_IMAGE_CREATE_INFO_MESA);
-
if (pCreateInfo->tiling == VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT) {
mod_explicit_info =
vk_find_struct_const(pCreateInfo->pNext,
image->vk.drm_format_mod = isl_mod_info->modifier;
}
- image->needs_set_tiling = wsi_info && wsi_info->scanout;
-
for (int i = 0; i < ANV_IMAGE_MEMORY_BINDING_END; ++i) {
image->bindings[i] = (struct anv_image_binding) {
.memory_range = { .binding = i },
const isl_tiling_flags_t isl_tiling_flags =
choose_isl_tiling_flags(&device->info, create_info, isl_mod_info,
- image->needs_set_tiling);
+ image->vk.wsi_legacy_scanout);
const VkImageFormatListCreateInfoKHR *fmt_list =
vk_find_struct_const(pCreateInfo->pNext,
switch (ext->sType) {
case VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS: {
VkMemoryDedicatedRequirements *requirements = (void *)ext;
- if (image->needs_set_tiling || image->from_ahb) {
+ if (image->vk.wsi_legacy_scanout || image->from_ahb) {
/* If we need to set the tiling for external consumers, we need a
* dedicated allocation.
*
uint32_t n_planes;
- /** True if this is needs to be bound to an appropriately tiled BO.
- *
- * When not using modifiers, consumers such as X11, Wayland, and KMS need
- * the tiling passed via I915_GEM_SET_TILING. When exporting these buffers
- * we require a dedicated allocation so that we can know to allocate a
- * tiled buffer.
- */
- bool needs_set_tiling;
-
/**
* Image has multi-planar format and was created with
* VK_IMAGE_CREATE_DISJOINT_BIT.
#include "vk_device.h"
#include "vk_format.h"
#include "vk_util.h"
+#include "vulkan/wsi/wsi_common.h"
static VkExtent3D
sanitize_image_extent(const VkImageType imageType,
else
image->external_handle_types = 0;
+ const struct wsi_image_create_info *wsi_info =
+ vk_find_struct_const(pCreateInfo->pNext, WSI_IMAGE_CREATE_INFO_MESA);
+ image->wsi_legacy_scanout = wsi_info && wsi_info->scanout;
+
#ifndef _WIN32
image->drm_format_mod = ((1ULL << 56) - 1) /* DRM_FORMAT_MOD_INVALID */;
#endif
/* VK_KHR_external_memory */
VkExternalMemoryHandleTypeFlags external_handle_types;
+ /* wsi_image_create_info::scanout */
+ bool wsi_legacy_scanout;
+
#ifndef _WIN32
/* VK_EXT_drm_format_modifier
*