Lines Matching refs:batch
107 calculate_tiles(struct fd_batch *batch) in calculate_tiles() argument
109 struct fd_context *ctx = batch->ctx; in calculate_tiles()
111 struct pipe_scissor_state *scissor = &batch->max_scissor; in calculate_tiles()
112 struct pipe_framebuffer_state *pfb = &batch->framebuffer; in calculate_tiles()
124 bool has_zs = !!(batch->resolve & (FD_BUFFER_DEPTH | FD_BUFFER_STENCIL)); in calculate_tiles()
314 render_tiles(struct fd_batch *batch) in render_tiles() argument
316 struct fd_context *ctx = batch->ctx; in render_tiles()
320 ctx->emit_tile_init(batch); in render_tiles()
322 if (batch->restore) in render_tiles()
331 ctx->emit_tile_prep(batch, tile); in render_tiles()
333 if (batch->restore) { in render_tiles()
334 ctx->emit_tile_mem2gmem(batch, tile); in render_tiles()
337 ctx->emit_tile_renderprep(batch, tile); in render_tiles()
340 ctx->query_prepare_tile(batch, i, batch->gmem); in render_tiles()
343 ctx->emit_ib(batch->gmem, batch->draw); in render_tiles()
344 fd_reset_wfi(batch); in render_tiles()
347 ctx->emit_tile_gmem2mem(batch, tile); in render_tiles()
351 ctx->emit_tile_fini(batch); in render_tiles()
355 render_sysmem(struct fd_batch *batch) in render_sysmem() argument
357 struct fd_context *ctx = batch->ctx; in render_sysmem()
359 ctx->emit_sysmem_prep(batch); in render_sysmem()
362 ctx->query_prepare_tile(batch, 0, batch->gmem); in render_sysmem()
365 ctx->emit_ib(batch->gmem, batch->draw); in render_sysmem()
366 fd_reset_wfi(batch); in render_sysmem()
369 ctx->emit_sysmem_fini(batch); in render_sysmem()
373 flush_ring(struct fd_batch *batch) in flush_ring() argument
376 struct fd_ringbuffer *ring = batch->nondraw ? batch->draw : batch->gmem; in flush_ring()
380 fd_ringbuffer_flush2(ring, batch->in_fence_fd, in flush_ring()
381 batch->needs_out_fence_fd ? &out_fence_fd : NULL); in flush_ring()
384 fd_fence_populate(batch->fence, timestamp, out_fence_fd); in flush_ring()
388 fd_gmem_render_tiles(struct fd_batch *batch) in fd_gmem_render_tiles() argument
390 struct fd_context *ctx = batch->ctx; in fd_gmem_render_tiles()
391 struct pipe_framebuffer_state *pfb = &batch->framebuffer; in fd_gmem_render_tiles()
394 if (ctx->emit_sysmem_prep && !batch->nondraw) { in fd_gmem_render_tiles()
395 if (batch->cleared || batch->gmem_reason || in fd_gmem_render_tiles()
396 ((batch->num_draws > 5) && !batch->blit)) { in fd_gmem_render_tiles()
398 batch->cleared, batch->gmem_reason, batch->num_draws); in fd_gmem_render_tiles()
409 fd_reset_wfi(batch); in fd_gmem_render_tiles()
413 if (batch->nondraw) { in fd_gmem_render_tiles()
414 DBG("%p: rendering non-draw", batch); in fd_gmem_render_tiles()
418 batch, pfb->width, pfb->height, in fd_gmem_render_tiles()
422 ctx->query_prepare(batch, 1); in fd_gmem_render_tiles()
423 render_sysmem(batch); in fd_gmem_render_tiles()
427 calculate_tiles(batch); in fd_gmem_render_tiles()
429 batch, pfb->width, pfb->height, gmem->nbins_x, gmem->nbins_y, in fd_gmem_render_tiles()
433 ctx->query_prepare(batch, gmem->nbins_x * gmem->nbins_y); in fd_gmem_render_tiles()
434 render_tiles(batch); in fd_gmem_render_tiles()
438 flush_ring(batch); in fd_gmem_render_tiles()
445 fd_gmem_render_noop(struct fd_batch *batch) in fd_gmem_render_noop() argument
447 struct fd_context *ctx = batch->ctx; in fd_gmem_render_noop()
452 ctx->emit_ib(batch->gmem, batch->draw); in fd_gmem_render_noop()
453 flush_ring(batch); in fd_gmem_render_noop()
476 fd_gmem_needs_restore(struct fd_batch *batch, struct fd_tile *tile, in fd_gmem_needs_restore() argument
479 if (!(batch->restore & buffers)) in fd_gmem_needs_restore()
486 (batch->partial_cleared & FD_BUFFER_COLOR) && in fd_gmem_needs_restore()
487 skip_restore(&batch->cleared_scissor.color, tile)) in fd_gmem_needs_restore()
490 (batch->partial_cleared & FD_BUFFER_DEPTH) && in fd_gmem_needs_restore()
491 skip_restore(&batch->cleared_scissor.depth, tile)) in fd_gmem_needs_restore()
494 (batch->partial_cleared & FD_BUFFER_STENCIL) && in fd_gmem_needs_restore()
495 skip_restore(&batch->cleared_scissor.stencil, tile)) in fd_gmem_needs_restore()