llvmpipe: use new u_ringbuffer for scene queue
[mesa.git] / src / gallium / drivers / llvmpipe / lp_setup.c
index 355c0518372d84c3d2ec35baf64123a6966ba827..d4a4724ad1b9e4c63906c1cfe4bf788ba1a2ffaf 100644 (file)
@@ -57,8 +57,11 @@ struct lp_scene *
 lp_setup_get_current_scene(struct setup_context *setup)
 {
    if (!setup->scene) {
-      /* wait for a free/empty bin */
-      setup->scene = lp_scene_dequeue(setup->empty_scenes);
+
+      /* wait for a free/empty scene
+       */
+      setup->scene = lp_scene_dequeue(setup->empty_scenes, TRUE);
+
       if(0)lp_scene_reset( setup->scene ); /* XXX temporary? */
 
       lp_scene_set_framebuffer_size(setup->scene,
@@ -339,13 +342,15 @@ lp_setup_fence( struct setup_context *setup )
 void 
 lp_setup_set_triangle_state( struct setup_context *setup,
                              unsigned cull_mode,
-                             boolean ccw_is_frontface)
+                             boolean ccw_is_frontface,
+                             boolean scissor )
 {
    LP_DBG(DEBUG_SETUP, "%s\n", __FUNCTION__);
 
    setup->ccw_is_frontface = ccw_is_frontface;
    setup->cullmode = cull_mode;
    setup->triangle = first_triangle;
+   setup->scissor_test = scissor;
 }
 
 
@@ -649,8 +654,8 @@ lp_setup_destroy( struct setup_context *setup )
    pipe_buffer_reference(&setup->constants.current, NULL);
 
    /* free the scenes in the 'empty' queue */
-   while (lp_scene_queue_count(setup->empty_scenes) > 0) {
-      struct lp_scene *scene = lp_scene_dequeue(setup->empty_scenes);
+   while (1) {
+      struct lp_scene *scene = lp_scene_dequeue(setup->empty_scenes, FALSE);
       if (!scene)
          break;
       lp_scene_destroy(scene);