diff options
author | Bas Nieuwenhuizen <[email protected]> | 2016-12-17 21:25:32 +0100 |
---|---|---|
committer | Bas Nieuwenhuizen <[email protected]> | 2016-12-18 20:52:41 +0100 |
commit | accc5fc026ec45171c458334bdee16747fbe7824 (patch) | |
tree | ccd0b4da28d02b75fd4d71cb8cfd1747f01e1927 /src/amd/vulkan/radv_image.c | |
parent | bfee9866ea87fb0a81b3165f968ac45a4f5a25c3 (diff) |
radv: Don't enable CMASK on compute queues.
We can't fast clear on compute queues.
Signed-off-by: Bas Nieuwenhuizen <[email protected]>
Reviewed-by: Dave Airlie <[email protected]>
Diffstat (limited to 'src/amd/vulkan/radv_image.c')
-rw-r--r-- | src/amd/vulkan/radv_image.c | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/src/amd/vulkan/radv_image.c b/src/amd/vulkan/radv_image.c index fee98ba94c6..a0287fcb3eb 100644 --- a/src/amd/vulkan/radv_image.c +++ b/src/amd/vulkan/radv_image.c @@ -698,6 +698,11 @@ radv_image_create(VkDevice _device, image->samples = pCreateInfo->samples; image->tiling = pCreateInfo->tiling; image->usage = pCreateInfo->usage; + + image->exclusive = pCreateInfo->sharingMode == VK_SHARING_MODE_EXCLUSIVE; + for (uint32_t i = 0; i < pCreateInfo->queueFamilyIndexCount; ++i) + image->queue_family_mask |= 1u << pCreateInfo->pQueueFamilyIndices[i]; + radv_init_surface(device, &image->surface, create_info); device->ws->surface_init(device->ws, &image->surface); @@ -887,10 +892,19 @@ bool radv_layout_can_expclear(const struct radv_image *image, } bool radv_layout_has_cmask(const struct radv_image *image, - VkImageLayout layout) + VkImageLayout layout, + unsigned queue_mask) { return (layout == VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL || - layout == VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL); + layout == VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL) && + queue_mask == (1u << RADV_QUEUE_GENERAL); +} + + +unsigned radv_image_queue_family_mask(const struct radv_image *image, int family) { + if (image->exclusive) + return 1u <<family; + return image->queue_family_mask; } VkResult |