• Home
  • Raw
  • Download

Lines Matching full:job

114 store_general(struct v3d_job *job,  in store_general()  argument
180 (job->clear & pipe_bit))); in store_general()
182 !(job->clear & PIPE_CLEAR_DEPTH); in store_general()
184 !(job->clear & PIPE_CLEAR_STENCIL); in store_general()
213 v3d_rcl_emit_loads(struct v3d_job *job, struct v3d_cl *cl, int layer) in v3d_rcl_emit_loads() argument
215 uint32_t loads_pending = job->load; in v3d_rcl_emit_loads()
222 struct pipe_surface *psurf = job->cbufs[i]; in v3d_rcl_emit_loads()
234 (job->zsbuf && job->zsbuf->texture->nr_samples > 1))) { in v3d_rcl_emit_loads()
235 struct v3d_resource *rsc = v3d_resource(job->zsbuf->texture); in v3d_rcl_emit_loads()
239 load_general(cl, job->zsbuf, in v3d_rcl_emit_loads()
246 load_general(cl, job->zsbuf, in v3d_rcl_emit_loads()
277 v3d_rcl_emit_stores(struct v3d_job *job, struct v3d_cl *cl, int layer) in v3d_rcl_emit_stores() argument
280 UNUSED bool needs_color_clear = job->clear & PIPE_CLEAR_COLOR_BUFFERS; in v3d_rcl_emit_stores()
281 UNUSED bool needs_z_clear = job->clear & PIPE_CLEAR_DEPTH; in v3d_rcl_emit_stores()
282 UNUSED bool needs_s_clear = job->clear & PIPE_CLEAR_STENCIL; in v3d_rcl_emit_stores()
299 (job->clear & PIPE_CLEAR_COLOR_BUFFERS) == in v3d_rcl_emit_stores()
300 (job->store & PIPE_CLEAR_COLOR_BUFFERS)); in v3d_rcl_emit_stores()
305 uint32_t stores_pending = job->store; in v3d_rcl_emit_stores()
318 if (!(job->store & bit)) in v3d_rcl_emit_stores()
321 struct pipe_surface *psurf = job->cbufs[i]; in v3d_rcl_emit_stores()
327 store_general(job, cl, psurf, layer, RENDER_TARGET_0 + i, bit, in v3d_rcl_emit_stores()
331 if (job->store & PIPE_CLEAR_DEPTHSTENCIL && job->zsbuf && in v3d_rcl_emit_stores()
332 !(V3D_VERSION < 40 && job->zsbuf->texture->nr_samples <= 1)) { in v3d_rcl_emit_stores()
333 struct v3d_resource *rsc = v3d_resource(job->zsbuf->texture); in v3d_rcl_emit_stores()
335 if (job->store & PIPE_CLEAR_DEPTH) { in v3d_rcl_emit_stores()
336 store_general(job, cl, job->zsbuf, layer, in v3d_rcl_emit_stores()
342 if (job->store & PIPE_CLEAR_STENCIL) { in v3d_rcl_emit_stores()
343 store_general(job, cl, job->zsbuf, layer, in v3d_rcl_emit_stores()
349 store_general(job, cl, job->zsbuf, layer, in v3d_rcl_emit_stores()
350 zs_buffer_from_pipe_bits(job->store), in v3d_rcl_emit_stores()
351 job->store & PIPE_CLEAR_DEPTHSTENCIL, in v3d_rcl_emit_stores()
388 if (!job->store) { in v3d_rcl_emit_stores()
401 if (job->clear) { in v3d_rcl_emit_stores()
411 v3d_rcl_emit_generic_per_tile_list(struct v3d_job *job, int layer) in v3d_rcl_emit_generic_per_tile_list() argument
416 struct v3d_cl *cl = &job->indirect; in v3d_rcl_emit_generic_per_tile_list()
427 v3d_rcl_emit_loads(job, cl, layer); in v3d_rcl_emit_generic_per_tile_list()
452 v3d_rcl_emit_stores(job, cl, layer); in v3d_rcl_emit_generic_per_tile_list()
460 cl_emit(&job->rcl, START_ADDRESS_OF_GENERIC_TILE_LIST, branch) { in v3d_rcl_emit_generic_per_tile_list()
468 v3d_setup_render_target(struct v3d_job *job, int cbuf, in v3d_setup_render_target() argument
471 if (!job->cbufs[cbuf]) in v3d_setup_render_target()
474 struct v3d_surface *surf = v3d_surface(job->cbufs[cbuf]); in v3d_setup_render_target()
483 v3d_emit_z_stencil_config(struct v3d_job *job, struct v3d_surface *surf, in v3d_emit_z_stencil_config() argument
486 cl_emit(&job->rcl, TILE_RENDERING_MODE_CFG_Z_STENCIL, zs) { in v3d_emit_z_stencil_config()
503 if (job->store & (is_separate_stencil ? in v3d_emit_z_stencil_config()
514 emit_render_layer(struct v3d_job *job, uint32_t layer) in emit_render_layer() argument
522 layer * job->draw_tiles_x * job->draw_tiles_y * 64; in emit_render_layer()
523 cl_emit(&job->rcl, MULTICORE_RENDERING_TILE_LIST_SET_BASE, list) { in emit_render_layer()
524 list.address = cl_address(job->tile_alloc, tile_alloc_offset); in emit_render_layer()
527 cl_emit(&job->rcl, MULTICORE_RENDERING_SUPERTILE_CFG, config) { in emit_render_layer()
533 frame_w_in_supertiles = div_round_up(job->draw_tiles_x, in emit_render_layer()
535 frame_h_in_supertiles = div_round_up(job->draw_tiles_y, in emit_render_layer()
549 config.total_frame_width_in_tiles = job->draw_tiles_x; in emit_render_layer()
550 config.total_frame_height_in_tiles = job->draw_tiles_y; in emit_render_layer()
560 cl_emit(&job->rcl, TILE_COORDINATES, coords) { in emit_render_layer()
579 cl_emit(&job->rcl, STORE_TILE_BUFFER_GENERAL, store) { in emit_render_layer()
585 cl_emit(&job->rcl, TILE_COORDINATES, coords); in emit_render_layer()
586 cl_emit(&job->rcl, END_OF_LOADS, end); in emit_render_layer()
587 cl_emit(&job->rcl, STORE_TILE_BUFFER_GENERAL, store) { in emit_render_layer()
591 cl_emit(&job->rcl, CLEAR_TILE_BUFFERS, clear) { in emit_render_layer()
596 cl_emit(&job->rcl, END_OF_TILE_MARKER, end); in emit_render_layer()
600 cl_emit(&job->rcl, FLUSH_VCD_CACHE, flush); in emit_render_layer()
602 v3d_rcl_emit_generic_per_tile_list(job, layer); in emit_render_layer()
608 uint32_t supertile_w_in_pixels = job->tile_width * supertile_w; in emit_render_layer()
609 uint32_t supertile_h_in_pixels = job->tile_height * supertile_h; in emit_render_layer()
610 uint32_t min_x_supertile = job->draw_min_x / supertile_w_in_pixels; in emit_render_layer()
611 uint32_t min_y_supertile = job->draw_min_y / supertile_h_in_pixels; in emit_render_layer()
615 if (job->draw_max_x != 0 && job->draw_max_y != 0) { in emit_render_layer()
616 max_x_supertile = (job->draw_max_x - 1) / supertile_w_in_pixels; in emit_render_layer()
617 max_y_supertile = (job->draw_max_y - 1) / supertile_h_in_pixels; in emit_render_layer()
622 cl_emit(&job->rcl, SUPERTILE_COORDINATES, coords) { in emit_render_layer()
631 v3dX(emit_rcl)(struct v3d_job *job) in v3dX()
634 assert(!job->rcl.bo); in v3dX()
636 v3d_cl_ensure_space_with_branch(&job->rcl, 200 + in v3dX()
637 MAX2(job->num_layers, 1) * 256 * in v3dX()
639 job->submit.rcl_start = job->rcl.bo->offset; in v3dX()
640 v3d_job_add_bo(job, job->rcl.bo); in v3dX()
644 if (job->cbufs[i]) in v3dX()
652 cl_emit(&job->rcl, TILE_RENDERING_MODE_CFG_COMMON, config) { in v3dX()
654 config.enable_z_store = job->store & PIPE_CLEAR_DEPTH; in v3dX()
655 config.enable_stencil_store = job->store & PIPE_CLEAR_STENCIL; in v3dX()
657 if (job->zsbuf) { in v3dX()
658 struct v3d_surface *surf = v3d_surface(job->zsbuf); in v3dX()
665 switch (job->first_ez_state) { in v3dX()
681 config.image_width_pixels = job->draw_width; in v3dX()
682 config.image_height_pixels = job->draw_height; in v3dX()
686 config.multisample_mode_4x = job->msaa; in v3dX()
688 config.maximum_bpp_of_all_render_targets = job->internal_bpp; in v3dX()
692 struct pipe_surface *psurf = job->cbufs[i]; in v3dX()
705 … uint32_t implicit_padded_height = (align(job->draw_height, uif_block_height) / in v3dX()
718 cl_emit(&job->rcl, TILE_RENDERING_MODE_CFG_COLOR, rt) { in v3dX()
727 if (job->store & PIPE_CLEAR_COLOR0 << i) in v3dX()
732 cl_emit(&job->rcl, TILE_RENDERING_MODE_CFG_CLEAR_COLORS_PART1, in v3dX()
734 clear.clear_color_low_32_bits = job->clear_color[i][0]; in v3dX()
735 clear.clear_color_next_24_bits = job->clear_color[i][1] & 0xffffff; in v3dX()
740 cl_emit(&job->rcl, TILE_RENDERING_MODE_CFG_CLEAR_COLORS_PART2, in v3dX()
743 ((job->clear_color[i][1] >> 24) | in v3dX()
744 (job->clear_color[i][2] << 8)); in v3dX()
746 ((job->clear_color[i][2] >> 24) | in v3dX()
747 ((job->clear_color[i][3] & 0xffff) << 8)); in v3dX()
753 cl_emit(&job->rcl, TILE_RENDERING_MODE_CFG_CLEAR_COLORS_PART3, in v3dX()
756 clear.clear_color_high_16_bits = job->clear_color[i][3] >> 16; in v3dX()
763 cl_emit(&job->rcl, TILE_RENDERING_MODE_CFG_COLOR, rt) { in v3dX()
764 v3d_setup_render_target(job, 0, in v3dX()
768 v3d_setup_render_target(job, 1, in v3dX()
772 v3d_setup_render_target(job, 2, in v3dX()
776 v3d_setup_render_target(job, 3, in v3dX()
785 if (job->zsbuf) { in v3dX()
786 struct pipe_surface *psurf = job->zsbuf; in v3dX()
790 v3d_emit_z_stencil_config(job, surf, rsc, false); in v3dX()
797 v3d_emit_z_stencil_config(job, in v3dX()
805 cl_emit(&job->rcl, TILE_RENDERING_MODE_CFG_ZS_CLEAR_VALUES, in v3dX()
807 clear.z_clear_value = job->clear_z; in v3dX()
808 clear.stencil_clear_value = job->clear_s; in v3dX()
814 cl_emit(&job->rcl, TILE_LIST_INITIAL_BLOCK_SIZE, init) { in v3dX()
826 assert(job->num_layers > 0 || (job->load == 0 && job->store == 0)); in v3dX()
827 for (int layer = 0; layer < MAX2(1, job->num_layers); layer++) in v3dX()
828 emit_render_layer(job, layer); in v3dX()
830 cl_emit(&job->rcl, END_OF_RENDERING, end); in v3dX()