turnip: add wrappers around DRM_MSM_SUBMITQUEUE_*
authorChia-I Wu <olvaffe@gmail.com>
Thu, 10 Jan 2019 23:34:44 +0000 (15:34 -0800)
committerChia-I Wu <olvaffe@gmail.com>
Mon, 11 Mar 2019 17:01:41 +0000 (10:01 -0700)
Add tu_drm_submitqueue_new and tu_drm_submitqueue_close.

src/freedreno/vulkan/tu_device.c
src/freedreno/vulkan/tu_drm.c
src/freedreno/vulkan/tu_private.h

index e321f4ad39f1ede6e45c6afab6d6759de7ccafd1..d5a65aadf535f58920227e1cccb485ea3e135ed6 100644 (file)
@@ -949,27 +949,17 @@ tu_queue_init(struct tu_device *device,
    queue->queue_idx = idx;
    queue->flags = flags;
 
-   struct drm_msm_submitqueue req = {
-      .flags = 0,
-      .prio = 0,
-   };
-
-   int ret = drmCommandWriteRead(device->physical_device->local_fd,
-                                 DRM_MSM_SUBMITQUEUE_NEW,
-                                 &req, sizeof(req));
+   int ret = tu_drm_submitqueue_new(device, 0, &queue->msm_queue_id);
    if (ret)
       return VK_ERROR_INITIALIZATION_FAILED;
 
-   queue->msm_queue_id = req.id;
    return VK_SUCCESS;
 }
 
 static void
 tu_queue_finish(struct tu_queue *queue)
 {
-   drmCommandWrite(queue->device->physical_device->local_fd,
-                   DRM_MSM_SUBMITQUEUE_CLOSE,
-                   &queue->msm_queue_id, sizeof(uint32_t));
+   tu_drm_submitqueue_close(queue->device, queue->msm_queue_id);
 }
 
 static int
index b28de8f2c0660068ddc8a50475196c60809743c7..b86520b0f37893b97079bcafc9b2c21a01ec98fd 100644 (file)
@@ -78,6 +78,32 @@ tu_drm_get_gmem_size(const struct tu_physical_device *dev, uint32_t *size)
    return 0;
 }
 
+int
+tu_drm_submitqueue_new(const struct tu_device *dev,
+                       int priority,
+                       uint32_t *queue_id)
+{
+   struct drm_msm_submitqueue req = {
+      .flags = 0,
+      .prio = priority,
+   };
+
+   int ret = drmCommandWriteRead(dev->physical_device->local_fd,
+                                 DRM_MSM_SUBMITQUEUE_NEW, &req, sizeof(req));
+   if (ret)
+      return ret;
+
+   *queue_id = req.id;
+   return 0;
+}
+
+void
+tu_drm_submitqueue_close(const struct tu_device *dev, uint32_t queue_id)
+{
+   drmCommandWrite(dev->physical_device->local_fd, DRM_MSM_SUBMITQUEUE_CLOSE,
+                   &queue_id, sizeof(uint32_t));
+}
+
 /**
  * Return gem handle on success. Return 0 on failure.
  */
index a2deb98abf8185908ebb6d3c14285d64cba906dc..c37920c57799263595619e89ae76fea014160bfa 100644 (file)
@@ -1195,6 +1195,14 @@ tu_drm_get_gpu_id(const struct tu_physical_device *dev, uint32_t *id);
 int
 tu_drm_get_gmem_size(const struct tu_physical_device *dev, uint32_t *size);
 
+int
+tu_drm_submitqueue_new(const struct tu_device *dev,
+                       int priority,
+                       uint32_t *queue_id);
+
+void
+tu_drm_submitqueue_close(const struct tu_device *dev, uint32_t queue_id);
+
 uint32_t
 tu_gem_new(struct tu_device *dev, uint64_t size, uint32_t flags);
 void