diff --git a/.pick_status.json b/.pick_status.json index a3d90bdc72f..206da389451 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -220,7 +220,7 @@ "description": "zink: add COHERENT requirement for CACHED memory", "nominated": true, "nomination_type": 0, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null }, diff --git a/src/gallium/drivers/zink/zink_bo.h b/src/gallium/drivers/zink/zink_bo.h index d48bea52cc1..ffe933ccca6 100644 --- a/src/gallium/drivers/zink/zink_bo.h +++ b/src/gallium/drivers/zink/zink_bo.h @@ -67,7 +67,7 @@ vk_domain_from_heap(enum zink_heap heap) domains = VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | VK_MEMORY_PROPERTY_HOST_COHERENT_BIT; break; case ZINK_HEAP_HOST_VISIBLE_CACHED: - domains = VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | VK_MEMORY_PROPERTY_HOST_CACHED_BIT; + domains = VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | VK_MEMORY_PROPERTY_HOST_COHERENT_BIT | VK_MEMORY_PROPERTY_HOST_CACHED_BIT; break; default: break; diff --git a/src/gallium/drivers/zink/zink_resource.c b/src/gallium/drivers/zink/zink_resource.c index c91ac048736..c093e9a100f 100644 --- a/src/gallium/drivers/zink/zink_resource.c +++ b/src/gallium/drivers/zink/zink_resource.c @@ -707,7 +707,7 @@ resource_object_create(struct zink_screen *screen, const struct pipe_resource *t VKSCR(GetBufferMemoryRequirements)(screen->dev, obj->buffer, &reqs); if (templ->usage == PIPE_USAGE_STAGING) - flags = VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | VK_MEMORY_PROPERTY_HOST_CACHED_BIT; + flags = VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | VK_MEMORY_PROPERTY_HOST_COHERENT_BIT | VK_MEMORY_PROPERTY_HOST_CACHED_BIT; else if (templ->usage == PIPE_USAGE_STREAM) flags = VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT; else if (templ->usage == PIPE_USAGE_IMMUTABLE) @@ -995,7 +995,7 @@ resource_object_create(struct zink_screen *screen, const struct pipe_resource *t flags |= VK_MEMORY_PROPERTY_HOST_COHERENT_BIT; else if (!(flags & VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT) && templ->usage == PIPE_USAGE_STAGING) - flags |= VK_MEMORY_PROPERTY_HOST_CACHED_BIT; + flags |= VK_MEMORY_PROPERTY_HOST_COHERENT_BIT | VK_MEMORY_PROPERTY_HOST_CACHED_BIT; if (templ->bind & ZINK_BIND_TRANSIENT) flags |= VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT;