From bb7632128b7a06bb460d997b06910553591ae5c0 Mon Sep 17 00:00:00 2001 From: Yiwei Zhang Date: Fri, 19 Jul 2024 21:00:01 -0700 Subject: [PATCH] venus: only request ring thread prio for TLS ring Mainly to leave main ring thread prio to default. Signed-off-by: Yiwei Zhang Part-of: --- src/virtio/vulkan/vn_common.c | 3 ++- src/virtio/vulkan/vn_instance.c | 3 ++- src/virtio/vulkan/vn_ring.c | 5 +++-- src/virtio/vulkan/vn_ring.h | 3 ++- 4 files changed, 9 insertions(+), 5 deletions(-) diff --git a/src/virtio/vulkan/vn_common.c b/src/virtio/vulkan/vn_common.c index 0fb0312cf15..7b7a1f16f35 100644 --- a/src/virtio/vulkan/vn_common.c +++ b/src/virtio/vulkan/vn_common.c @@ -333,7 +333,8 @@ vn_tls_get_ring(struct vn_instance *instance) struct vn_ring_layout layout; vn_ring_get_layout(buf_size, extra_size, &layout); - tls_ring->ring = vn_ring_create(instance, &layout, direct_order); + tls_ring->ring = + vn_ring_create(instance, &layout, direct_order, true /* is_tls_ring */); if (!tls_ring->ring) { free(tls_ring); return NULL; diff --git a/src/virtio/vulkan/vn_instance.c b/src/virtio/vulkan/vn_instance.c index 07bf3ae2d47..43f46cfaa28 100644 --- a/src/virtio/vulkan/vn_instance.c +++ b/src/virtio/vulkan/vn_instance.c @@ -139,7 +139,8 @@ vn_instance_init_ring(struct vn_instance *instance) struct vn_ring_layout layout; vn_ring_get_layout(buf_size, extra_size, &layout); - instance->ring.ring = vn_ring_create(instance, &layout, direct_order); + instance->ring.ring = vn_ring_create(instance, &layout, direct_order, + false /* is_tls_ring */); if (!instance->ring.ring) return VK_ERROR_OUT_OF_HOST_MEMORY; diff --git a/src/virtio/vulkan/vn_ring.c b/src/virtio/vulkan/vn_ring.c index 9b5a293779b..4e0cff9e9cd 100644 --- a/src/virtio/vulkan/vn_ring.c +++ b/src/virtio/vulkan/vn_ring.c @@ -270,7 +270,8 @@ vn_ring_get_layout(size_t buf_size, struct vn_ring * vn_ring_create(struct vn_instance *instance, const struct vn_ring_layout *layout, - uint8_t direct_order) + uint8_t direct_order, + bool is_tls_ring) { VN_TRACE_FUNC(); @@ -327,7 +328,7 @@ vn_ring_create(struct vn_instance *instance, if (instance->renderer->info.vk_mesa_venus_protocol_spec_version >= 2) { errno = 0; prio = getpriority(PRIO_PROCESS, 0); - ring_priority = !(prio == -1 && errno); + ring_priority = is_tls_ring && !(prio == -1 && errno); } const struct VkRingPriorityInfoMESA priority_info = { .sType = VK_STRUCTURE_TYPE_RING_PRIORITY_INFO_MESA, diff --git a/src/virtio/vulkan/vn_ring.h b/src/virtio/vulkan/vn_ring.h index df911f44e73..5035099225b 100644 --- a/src/virtio/vulkan/vn_ring.h +++ b/src/virtio/vulkan/vn_ring.h @@ -47,7 +47,8 @@ vn_ring_get_layout(size_t buf_size, struct vn_ring * vn_ring_create(struct vn_instance *instance, const struct vn_ring_layout *layout, - uint8_t direct_order); + uint8_t direct_order, + bool is_tls_ring); void vn_ring_destroy(struct vn_ring *ring);