Lines Matching refs:batch
472 gmem_key_init(struct fd_batch *batch, bool assume_zs, bool no_scis_opt)
474 struct fd_screen *screen = batch->ctx->screen;
475 struct pipe_framebuffer_state *pfb = &batch->framebuffer;
477 !!(batch->gmem_reason & (FD_GMEM_DEPTH_ENABLED | FD_GMEM_STENCIL_ENABLED |
488 batch->restore &= ~(FD_BUFFER_DEPTH | FD_BUFFER_STENCIL);
489 batch->resolve &= ~(FD_BUFFER_DEPTH | FD_BUFFER_STENCIL);
511 struct pipe_scissor_state *scissor = &batch->max_scissor;
527 if (is_a20x(screen) && batch->cleared) {
544 lookup_gmem_state(struct fd_batch *batch, bool assume_zs, bool no_scis_opt)
546 struct fd_screen *screen = batch->ctx->screen;
555 struct gmem_key *key = gmem_key_init(batch, assume_zs, no_scis_opt);
593 render_tiles(struct fd_batch *batch, struct fd_gmem_stateobj *gmem) assert_dt
595 struct fd_context *ctx = batch->ctx;
600 ctx->emit_tile_init(batch);
602 if (batch->restore)
608 trace_start_tile(&batch->trace, batch->gmem, tile->bin_h, tile->yoff, tile->bin_w,
611 ctx->emit_tile_prep(batch, tile);
613 if (batch->restore) {
614 ctx->emit_tile_mem2gmem(batch, tile);
617 ctx->emit_tile_renderprep(batch, tile);
620 ctx->query_prepare_tile(batch, i, batch->gmem);
623 trace_start_draw_ib(&batch->trace, batch->gmem);
625 ctx->emit_tile(batch, tile);
627 ctx->screen->emit_ib(batch->gmem, batch->draw);
629 trace_end_draw_ib(&batch->trace, batch->gmem);
630 fd_reset_wfi(batch);
633 ctx->emit_tile_gmem2mem(batch, tile);
637 ctx->emit_tile_fini(batch);
643 render_sysmem(struct fd_batch *batch) assert_dt
645 struct fd_context *ctx = batch->ctx;
647 ctx->emit_sysmem_prep(batch);
650 ctx->query_prepare_tile(batch, 0, batch->gmem);
652 if (!batch->nondraw) {
653 trace_start_draw_ib(&batch->trace, batch->gmem);
656 ctx->screen->emit_ib(batch->gmem, batch->draw);
658 if (!batch->nondraw) {
659 trace_end_draw_ib(&batch->trace, batch->gmem);
662 fd_reset_wfi(batch);
665 ctx->emit_sysmem_fini(batch);
669 flush_ring(struct fd_batch *batch)
674 fd_submit_flush(batch->submit, batch->in_fence_fd,
675 batch->fence ? &batch->fence->submit_fence : NULL);
677 if (batch->fence)
678 fd_fence_set_batch(batch->fence, NULL);
682 fd_gmem_render_tiles(struct fd_batch *batch)
684 struct fd_context *ctx = batch->ctx;
685 struct pipe_framebuffer_state *pfb = &batch->framebuffer;
690 if (!batch->nondraw) {
698 trace_flush_batch(&batch->trace, batch->gmem, batch, batch->cleared,
699 batch->gmem_reason, batch->num_draws);
700 trace_framebuffer_state(&batch->trace, batch->gmem, pfb);
703 if (ctx->emit_sysmem_prep && !batch->nondraw) {
704 if (fd_autotune_use_bypass(&ctx->autotune, batch) && !FD_DBG(GMEM)) {
731 if (batch->tessellation) {
736 fd_reset_wfi(batch);
740 if (batch->nondraw) {
741 DBG("%p: rendering non-draw", batch);
742 if (!fd_ringbuffer_empty(batch->draw))
743 render_sysmem(batch);
746 trace_render_sysmem(&batch->trace, batch->gmem);
747 trace_start_render_pass(&batch->trace, batch->gmem,
752 ctx->query_prepare(batch, 1);
753 render_sysmem(batch);
754 trace_end_render_pass(&batch->trace, batch->gmem);
757 struct fd_gmem_stateobj *gmem = lookup_gmem_state(batch, false, false);
758 batch->gmem_state = gmem;
759 trace_render_gmem(&batch->trace, batch->gmem, gmem->nbins_x, gmem->nbins_y,
761 trace_start_render_pass(&batch->trace, batch->gmem,
767 ctx->query_prepare(batch, gmem->nbins_x * gmem->nbins_y);
768 render_tiles(batch, gmem);
769 trace_end_render_pass(&batch->trace, batch->gmem);
770 batch->gmem_state = NULL;
779 flush_ring(batch);
781 u_trace_flush(&batch->trace, NULL, false);
788 fd_gmem_estimate_bins_per_pipe(struct fd_batch *batch)
790 struct pipe_framebuffer_state *pfb = &batch->framebuffer;
791 struct fd_screen *screen = batch->ctx->screen;
792 struct fd_gmem_stateobj *gmem = lookup_gmem_state(batch, !!pfb->zsbuf, true);
808 fd_gmem_needs_restore(struct fd_batch *batch, const struct fd_tile *tile,
811 if (!(batch->restore & buffers))