iris: Move some field setting after we drop the lock.
authorKenneth Graunke <kenneth@whitecape.org>
Sun, 26 May 2019 23:11:46 +0000 (16:11 -0700)
committerKenneth Graunke <kenneth@whitecape.org>
Thu, 30 May 2019 02:42:04 +0000 (19:42 -0700)
It's not much, but we may as well hold the lock for a bit less time.

Reviewed-by: Caio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
src/gallium/drivers/iris/iris_bufmgr.c

index c0e6e4efa841456274191d88c0cbffcaf5b5748e..43ac0a144f5db380e70bc368ab00d88515727f8c 100644 (file)
@@ -488,19 +488,6 @@ bo_alloc_internal(struct iris_bufmgr *bufmgr,
          goto err;
    }
 
-   bo->name = name;
-   p_atomic_set(&bo->refcount, 1);
-   bo->reusable = bucket && bufmgr->bo_reuse;
-   bo->cache_coherent = bufmgr->has_llc;
-   bo->index = -1;
-   bo->kflags = EXEC_OBJECT_SUPPORTS_48B_ADDRESS | EXEC_OBJECT_PINNED;
-
-   /* By default, capture all driver-internal buffers like shader kernels,
-    * surface states, dynamic states, border colors, and so on.
-    */
-   if (memzone < IRIS_MEMZONE_OTHER)
-      bo->kflags |= EXEC_OBJECT_CAPTURE;
-
    if (bo->gtt_offset == 0ull) {
       bo->gtt_offset = vma_alloc(bufmgr, memzone, bo->size, 1);
 
@@ -528,6 +515,19 @@ bo_alloc_internal(struct iris_bufmgr *bufmgr,
 
    mtx_unlock(&bufmgr->lock);
 
+   bo->name = name;
+   p_atomic_set(&bo->refcount, 1);
+   bo->reusable = bucket && bufmgr->bo_reuse;
+   bo->cache_coherent = bufmgr->has_llc;
+   bo->index = -1;
+   bo->kflags = EXEC_OBJECT_SUPPORTS_48B_ADDRESS | EXEC_OBJECT_PINNED;
+
+   /* By default, capture all driver-internal buffers like shader kernels,
+    * surface states, dynamic states, border colors, and so on.
+    */
+   if (memzone < IRIS_MEMZONE_OTHER)
+      bo->kflags |= EXEC_OBJECT_CAPTURE;
+
    if ((flags & BO_ALLOC_COHERENT) && !bo->cache_coherent) {
       struct drm_i915_gem_caching arg = {
          .handle = bo->gem_handle,