ilo: simplify ilo_flush()
authorChia-I Wu <olvaffe@gmail.com>
Fri, 25 Jul 2014 02:53:05 +0000 (10:53 +0800)
committerChia-I Wu <olvaffe@gmail.com>
Sat, 26 Jul 2014 04:30:39 +0000 (12:30 +0800)
Move fence creation to the new ilo_fence_create().

src/gallium/drivers/ilo/ilo_context.c
src/gallium/drivers/ilo/ilo_screen.c
src/gallium/drivers/ilo/ilo_screen.h

index 2de0ed7b04c459a9b96dc8b794bcb934c4e2984b..ab750acd24c65cebf168994399d763055f065b75 100644 (file)
@@ -63,28 +63,13 @@ ilo_flush(struct pipe_context *pipe,
 {
    struct ilo_context *ilo = ilo_context(pipe);
 
-   if (f) {
-      struct ilo_fence *fence;
-
-      fence = CALLOC_STRUCT(ilo_fence);
-      if (fence) {
-         pipe_reference_init(&fence->reference, 1);
-
-         /* reference the batch bo that we want to wait on */
-         if (ilo_cp_empty(ilo->cp))
-            fence->bo = ilo->last_cp_bo;
-         else
-            fence->bo = ilo->cp->bo;
-
-         if (fence->bo)
-            intel_bo_reference(fence->bo);
-      }
-
-      *f = (struct pipe_fence_handle *) fence;
-   }
-
    ilo_cp_flush(ilo->cp,
          (flags & PIPE_FLUSH_END_OF_FRAME) ? "frame end" : "user request");
+
+   if (f) {
+      *f = (struct pipe_fence_handle *)
+         ilo_fence_create(pipe->screen, ilo->last_cp_bo);
+   }
 }
 
 static void
index e2a0e23960094981a4cf9c9dfeedec84ffbe4c99..f4968f9bc3cd78ff82eb4ee12c84aae6020c5117 100644 (file)
@@ -575,6 +575,28 @@ ilo_fence_finish(struct pipe_screen *screen,
    return true;
 }
 
+/**
+ * Create a fence for \p bo.  When \p bo is not NULL, it must be submitted
+ * before waited on or checked.
+ */
+struct ilo_fence *
+ilo_fence_create(struct pipe_screen *screen, struct intel_bo *bo)
+{
+   struct ilo_fence *fence;
+
+   fence = CALLOC_STRUCT(ilo_fence);
+   if (!fence)
+      return NULL;
+
+   pipe_reference_init(&fence->reference, 1);
+
+   if (bo)
+      intel_bo_reference(bo);
+   fence->bo = bo;
+
+   return fence;
+}
+
 static void
 ilo_screen_destroy(struct pipe_screen *screen)
 {
index 4c403f042f2d1e8be215d604869553f2dfbb4034..7e1ce72052e7a69b06fe365ab036c790131a3e8c 100644 (file)
@@ -60,4 +60,7 @@ ilo_fence(struct pipe_fence_handle *fence)
    return (struct ilo_fence *) fence;
 }
 
+struct ilo_fence *
+ilo_fence_create(struct pipe_screen *screen, struct intel_bo *bo);
+
 #endif /* ILO_SCREEN_H */