llvmpipe: Don't use fences when not using threads.
authorJosé Fonseca <jfonseca@vmware.com>
Sat, 24 Apr 2010 15:13:04 +0000 (16:13 +0100)
committerJosé Fonseca <jfonseca@vmware.com>
Sat, 24 Apr 2010 15:13:04 +0000 (16:13 +0100)
lp_setup_flush has effect immediately.

src/gallium/drivers/llvmpipe/lp_setup.c

index 0dad4c259ecdb616b2604e2fd2c897805b2492cb..194f628bef5207717ab0cf68019c7c905fab59c0 100644 (file)
@@ -343,20 +343,25 @@ lp_setup_clear( struct lp_setup_context *setup,
 struct pipe_fence_handle *
 lp_setup_fence( struct lp_setup_context *setup )
 {
-   struct lp_scene *scene = lp_setup_get_current_scene(setup);
-   const unsigned rank = lp_scene_get_num_bins( scene ); /* xxx */
-   struct lp_fence *fence = lp_fence_create(rank);
+   if (setup->num_threads == 0) {
+      return NULL;
+   }
+   else {
+      struct lp_scene *scene = lp_setup_get_current_scene(setup);
+      const unsigned rank = lp_scene_get_num_bins( scene ); /* xxx */
+      struct lp_fence *fence = lp_fence_create(rank);
 
-   LP_DBG(DEBUG_SETUP, "%s rank %u\n", __FUNCTION__, rank);
+      LP_DBG(DEBUG_SETUP, "%s rank %u\n", __FUNCTION__, rank);
 
-   set_scene_state( setup, SETUP_ACTIVE );
+      set_scene_state( setup, SETUP_ACTIVE );
 
-   /* insert the fence into all command bins */
-   lp_scene_bin_everywhere( scene,
-                           lp_rast_fence,
-                           lp_rast_arg_fence(fence) );
+      /* insert the fence into all command bins */
+      lp_scene_bin_everywhere( scene,
+                               lp_rast_fence,
+                               lp_rast_arg_fence(fence) );
 
-   return (struct pipe_fence_handle *) fence;
+      return (struct pipe_fence_handle *) fence;
+   }
 }