radv: Fix vk_queue_to_radv for radv_image_queue_family_mask.
radv_image_queue_family_mask was still using queue family index values
for the special cases, while being passes a radv_queue_family enum.
This adds the bits to the enum and vk_queue_to_radv so we can implement
radv_image_queue_family_mask completely in terms of the enum.
Fixes: 1ec4e568 ("radv: abstract queue family away from queue family index.")
Reviewed-by: Dave Airlie <airlied@redhat.com>
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15423>
This commit is contained in:
committed by
Marge Bot
parent
d43e6a9a49
commit
9632e6eefa
@@ -2308,9 +2308,9 @@ radv_image_queue_family_mask(const struct radv_image *image,
|
||||
{
|
||||
if (!image->exclusive)
|
||||
return image->queue_family_mask;
|
||||
if (family == VK_QUEUE_FAMILY_EXTERNAL || family == VK_QUEUE_FAMILY_FOREIGN_EXT)
|
||||
if (family == RADV_QUEUE_FOREIGN)
|
||||
return ((1u << RADV_MAX_QUEUE_FAMILIES) - 1u) | (1u << RADV_QUEUE_FOREIGN);
|
||||
if (family == VK_QUEUE_FAMILY_IGNORED)
|
||||
if (family == RADV_QUEUE_IGNORED)
|
||||
return 1u << queue_family;
|
||||
return 1u << family;
|
||||
}
|
||||
|
||||
@@ -258,6 +258,7 @@ enum radv_queue_family {
|
||||
RADV_QUEUE_TRANSFER,
|
||||
RADV_MAX_QUEUE_FAMILIES,
|
||||
RADV_QUEUE_FOREIGN = RADV_MAX_QUEUE_FAMILIES,
|
||||
RADV_QUEUE_IGNORED,
|
||||
};
|
||||
|
||||
struct radv_physical_device {
|
||||
@@ -699,9 +700,14 @@ struct radv_meta_state {
|
||||
struct radv_deferred_queue_submission;
|
||||
|
||||
static inline enum radv_queue_family
|
||||
vk_queue_to_radv(struct radv_physical_device *phys_dev,
|
||||
int queue_family_index)
|
||||
vk_queue_to_radv(const struct radv_physical_device *phys_dev, int queue_family_index)
|
||||
{
|
||||
if (queue_family_index == VK_QUEUE_FAMILY_EXTERNAL ||
|
||||
queue_family_index == VK_QUEUE_FAMILY_FOREIGN_EXT)
|
||||
return RADV_QUEUE_FOREIGN;
|
||||
if (queue_family_index == VK_QUEUE_FAMILY_IGNORED)
|
||||
return RADV_QUEUE_IGNORED;
|
||||
|
||||
assert(queue_family_index < RADV_MAX_QUEUE_FAMILIES);
|
||||
return phys_dev->vk_queue_to_radv[queue_family_index];
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user