diff --git a/src/nouveau/nil/nil_image.c b/src/nouveau/nil/nil_image.c index 7caeaa238fa..0863edad2f0 100644 --- a/src/nouveau/nil/nil_image.c +++ b/src/nouveau/nil/nil_image.c @@ -94,6 +94,9 @@ static struct nil_tiling choose_tiling(struct nil_extent4d extent_B, enum nil_image_usage_flags usage) { + if (usage & NIL_IMAGE_USAGE_LINEAR_BIT) + return (struct nil_tiling) { .is_tiled = false }; + struct nil_tiling tiling = { .is_tiled = true, .gob_height_8 = true, diff --git a/src/nouveau/nil/nil_image.h b/src/nouveau/nil/nil_image.h index 6acb8fc3d7a..7f876184003 100644 --- a/src/nouveau/nil/nil_image.h +++ b/src/nouveau/nil/nil_image.h @@ -24,6 +24,7 @@ enum nil_image_usage_flags { NIL_IMAGE_USAGE_STORAGE_BIT = BITFIELD_BIT(4), NIL_IMAGE_USAGE_CUBE_BIT = BITFIELD_BIT(5), NIL_IMAGE_USAGE_2D_VIEW_BIT = BITFIELD_BIT(6), + NIL_IMAGE_USAGE_LINEAR_BIT = BITFIELD_BIT(7), }; enum PACKED nil_view_type { diff --git a/src/nouveau/vulkan/nvk_image.c b/src/nouveau/vulkan/nvk_image.c index 5f6a4d0ebbe..b6d868991d1 100644 --- a/src/nouveau/vulkan/nvk_image.c +++ b/src/nouveau/vulkan/nvk_image.c @@ -195,6 +195,10 @@ static VkResult nvk_image_init(struct nvk_device *device, { vk_image_init(&device->vk, &image->vk, pCreateInfo); + enum nil_image_usage_flags usage = 0; /* TODO */ + if (pCreateInfo->tiling == VK_IMAGE_TILING_LINEAR) + usage |= NIL_IMAGE_USAGE_LINEAR_BIT; + struct nil_image_init_info nil_info = { .dim = vk_image_type_to_nil_dim(pCreateInfo->imageType), .format = vk_format_to_pipe_format(pCreateInfo->format), @@ -206,6 +210,7 @@ static VkResult nvk_image_init(struct nvk_device *device, }, .levels = pCreateInfo->mipLevels, .samples = pCreateInfo->samples, + .usage = usage, }; ASSERTED bool ok = nil_image_init(nvk_device_physical(device)->dev,