Module: Mesa
Branch: main
Commit: 3b3882d4c5ff60346c09a324133321978c9accb6
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=3b3882d4c5ff60346c09a324133321978c9accb6

Author: Rob Clark <[email protected]>
Date:   Fri Feb 17 10:13:41 2023 -0800

turnip: Handle kgsl vs drm specifics at runtime

Signed-off-by: Rob Clark <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21394>

---

 src/freedreno/vulkan/tu_device.c | 25 +++++++++++++------------
 1 file changed, 13 insertions(+), 12 deletions(-)

diff --git a/src/freedreno/vulkan/tu_device.c b/src/freedreno/vulkan/tu_device.c
index a165468acbc..abc99259b65 100644
--- a/src/freedreno/vulkan/tu_device.c
+++ b/src/freedreno/vulkan/tu_device.c
@@ -115,6 +115,12 @@ static const struct vk_instance_extension_table 
tu_instance_extensions_supported
 #endif
 };
 
+static bool
+is_kgsl(struct tu_instance *instance)
+{
+   return strcmp(instance->knl->name, "kgsl") == 0;
+}
+
 static void
 get_device_extensions(const struct tu_physical_device *device,
                       struct vk_device_extension_table *ext)
@@ -187,9 +193,7 @@ get_device_extensions(const struct tu_physical_device 
*device,
                                             "vk_khr_present_wait") ||
                             wsi_common_vk_instance_supports_present_wait(
                                &device->instance->vk)),
-#ifndef TU_USE_KGSL
-      .KHR_timeline_semaphore = true,
-#endif
+      .KHR_timeline_semaphore = !is_kgsl(device->instance),
 #ifdef VK_USE_PLATFORM_DISPLAY_KHR
       .EXT_display_control = true,
 #endif
@@ -238,9 +242,7 @@ get_device_extensions(const struct tu_physical_device 
*device,
       .EXT_attachment_feedback_loop_layout = true,
       .EXT_rasterization_order_attachment_access = true,
       .EXT_multi_draw = true,
-#ifndef TU_USE_KGSL
-      .EXT_physical_device_drm = true,
-#endif
+      .EXT_physical_device_drm = !is_kgsl(device->instance),
       /* For Graphics Flight Recorder (GFR) */
       .AMD_buffer_marker = true,
       .ARM_rasterization_order_attachment_access = true,
@@ -1683,9 +1685,8 @@ tu_queue_init(struct tu_device *device,
       return result;
 
    queue->device = device;
-#ifndef TU_USE_KGSL
-   queue->vk.driver_submit = tu_queue_submit;
-#endif
+   if (!is_kgsl(device->instance))
+      queue->vk.driver_submit = tu_queue_submit;
 
    int ret = tu_drm_submitqueue_new(device, priority, &queue->msm_queue_id);
    if (ret)
@@ -2137,9 +2138,9 @@ tu_CreateDevice(VkPhysicalDevice physicalDevice,
    if (TU_DEBUG(BOS))
       device->bo_sizes = _mesa_hash_table_create(NULL, _mesa_hash_string, 
_mesa_key_string_equal);
 
-#ifndef TU_USE_KGSL
-   vk_device_set_drm_fd(&device->vk, device->fd);
-#endif
+   /* kgsl is not a drm device: */
+   if (!is_kgsl(physical_device->instance))
+      vk_device_set_drm_fd(&device->vk, device->fd);
 
    for (unsigned i = 0; i < pCreateInfo->queueCreateInfoCount; i++) {
       const VkDeviceQueueCreateInfo *queue_create =

Reply via email to