zink: check actual mem props to determine if resource object is coherent
authorMike Blumenkrantz <michael.blumenkrantz@gmail.com>
Thu, 6 May 2021 16:55:07 +0000 (12:55 -0400)
committerMarge Bot <eric+marge@anholt.net>
Thu, 17 Jun 2021 01:07:35 +0000 (01:07 +0000)
this was correct for what it has been used for until now, but it will no
longer be correct going forward

Reviewed-by: Adam Jackson <ajax@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11397>

src/gallium/drivers/zink/zink_resource.c

index 6b23520..800d7e2 100644 (file)
@@ -494,9 +494,8 @@ resource_object_create(struct zink_screen *screen, const struct pipe_resource *t
    mai.allocationSize = reqs.size;
    mai.memoryTypeIndex = get_memory_type_index(screen, &reqs, flags);
 
-   obj->coherent = flags & VK_MEMORY_PROPERTY_HOST_COHERENT_BIT;
-
    VkMemoryType mem_type = screen->info.mem_props.memoryTypes[mai.memoryTypeIndex];
+   obj->coherent = mem_type.propertyFlags & VK_MEMORY_PROPERTY_HOST_COHERENT_BIT;
    obj->host_visible = mem_type.propertyFlags & VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT;
    if (templ->target == PIPE_BUFFER && !obj->coherent) {
       mai.allocationSize = reqs.size = align(reqs.size, screen->info.props.limits.nonCoherentAtomSize);