zink: stop using vk lazy allocations / transient attachments

this doesn't actually work since it uses multiple renderpasses to do
the replicate operation

cc: mesa-stable

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/37743>
This commit is contained in:
Mike Blumenkrantz 2025-10-07 11:47:08 -04:00 committed by Marge Bot
parent f16d3bf042
commit efe1926cf0

View file

@ -414,28 +414,27 @@ get_image_usage_for_feats(struct zink_screen *screen, VkFormatFeatureFlags2 feat
*need_extended = false;
if (bind & ZINK_BIND_TRANSIENT)
usage |= VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT;
else {
/* sadly, gallium doesn't let us know if it'll ever need this, so we have to assume */
if (is_planar || (feats & VK_FORMAT_FEATURE_TRANSFER_SRC_BIT))
usage |= VK_IMAGE_USAGE_TRANSFER_SRC_BIT;
if (is_planar || (feats & VK_FORMAT_FEATURE_TRANSFER_DST_BIT))
usage |= VK_IMAGE_USAGE_TRANSFER_DST_BIT;
if (feats & VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT)
usage |= VK_IMAGE_USAGE_SAMPLED_BIT;
return util_format_is_depth_or_stencil(templ->format) ? VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT : VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT;
if ((is_planar || (feats & VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT)) && (bind & PIPE_BIND_SHADER_IMAGE)) {
assert(templ->nr_samples <= 1 || screen->info.feats.features.shaderStorageImageMultisample);
usage |= VK_IMAGE_USAGE_STORAGE_BIT;
}
/* sadly, gallium doesn't let us know if it'll ever need this, so we have to assume */
if (is_planar || (feats & VK_FORMAT_FEATURE_TRANSFER_SRC_BIT))
usage |= VK_IMAGE_USAGE_TRANSFER_SRC_BIT;
if (is_planar || (feats & VK_FORMAT_FEATURE_TRANSFER_DST_BIT))
usage |= VK_IMAGE_USAGE_TRANSFER_DST_BIT;
if (feats & VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT)
usage |= VK_IMAGE_USAGE_SAMPLED_BIT;
if ((is_planar || (feats & VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT)) && (bind & PIPE_BIND_SHADER_IMAGE)) {
assert(templ->nr_samples <= 1 || screen->info.feats.features.shaderStorageImageMultisample);
usage |= VK_IMAGE_USAGE_STORAGE_BIT;
}
if (bind & PIPE_BIND_RENDER_TARGET) {
if (feats & VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT) {
usage |= VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT;
if (!(bind & ZINK_BIND_TRANSIENT) && (bind & (PIPE_BIND_LINEAR | PIPE_BIND_SHARED)) != (PIPE_BIND_LINEAR | PIPE_BIND_SHARED))
if ((bind & (PIPE_BIND_LINEAR | PIPE_BIND_SHARED)) != (PIPE_BIND_LINEAR | PIPE_BIND_SHARED))
usage |= VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT;
if (!(bind & ZINK_BIND_TRANSIENT) && screen->info.have_EXT_attachment_feedback_loop_layout)
if (screen->info.have_EXT_attachment_feedback_loop_layout)
usage |= VK_IMAGE_USAGE_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT;
} else {
/* trust that gallium isn't going to give us anything wild */
@ -1096,9 +1095,6 @@ update_alloc_info_flags(struct zink_screen *screen, const struct pipe_resource *
templ->usage == PIPE_USAGE_STAGING)
alloc_info->flags |= VK_MEMORY_PROPERTY_HOST_COHERENT_BIT | VK_MEMORY_PROPERTY_HOST_CACHED_BIT;
if (templ->bind & ZINK_BIND_TRANSIENT)
alloc_info->flags |= VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT;
if (alloc_info->user_mem) {
VkExternalMemoryHandleTypeFlagBits handle_type = VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT;
VkMemoryHostPointerPropertiesEXT memory_host_pointer_properties = {0};