#include "util/u_inlines.h"
#include "util/u_memory.h"
#include "util/u_pack_color.h"
+#include "util/u_viewport.h"
#include "draw/draw_pipe.h"
#include "os/os_time.h"
#include "lp_context.h"
if (setup->last_fence)
setup->last_fence->issued = TRUE;
- pipe_mutex_lock(screen->rast_mutex);
+ mtx_lock(&screen->rast_mutex);
/* FIXME: We enqueue the scene then wait on the rasterizer to finish.
* This means we never actually run any vertex stuff in parallel to
*/
lp_rast_queue_scene(screen->rast, scene);
lp_rast_finish(screen->rast);
- pipe_mutex_unlock(screen->rast_mutex);
+ mtx_unlock(&screen->rast_mutex);
lp_scene_end_rasterization(setup->scene);
lp_setup_reset( setup );
for (i = 0; i < num_viewports; i++) {
float min_depth;
float max_depth;
-
- if (lp->rasterizer->clip_halfz == 0) {
- float half_depth = viewports[i].scale[2];
- min_depth = viewports[i].translate[2] - half_depth;
- max_depth = min_depth + half_depth * 2.0f;
- } else {
- min_depth = viewports[i].translate[2];
- max_depth = min_depth + viewports[i].scale[2];
- }
+ util_viewport_zmin_zmax(&viewports[i], lp->rasterizer->clip_halfz,
+ &min_depth, &max_depth);
if (setup->viewports[i].min_depth != min_depth ||
setup->viewports[i].max_depth != max_depth) {
setup->dirty = ~0;
+ /* Initialize empty default fb correctly, so the rect is empty */
+ setup->framebuffer.x1 = -1;
+ setup->framebuffer.y1 = -1;
+
return setup;
no_scenes: