• Home
  • Raw
  • Download

Lines Matching refs:job

41 vc4_job_free(struct vc4_context *vc4, struct vc4_job *job)  in vc4_job_free()  argument
43 struct vc4_bo **referenced_bos = job->bo_pointers.base; in vc4_job_free()
44 for (int i = 0; i < cl_offset(&job->bo_handles) / 4; i++) { in vc4_job_free()
48 remove_from_ht(vc4->jobs, &job->key); in vc4_job_free()
50 if (job->color_write) { in vc4_job_free()
51 remove_from_ht(vc4->write_jobs, job->color_write->texture); in vc4_job_free()
52 pipe_surface_reference(&job->color_write, NULL); in vc4_job_free()
54 if (job->msaa_color_write) { in vc4_job_free()
55 remove_from_ht(vc4->write_jobs, job->msaa_color_write->texture); in vc4_job_free()
56 pipe_surface_reference(&job->msaa_color_write, NULL); in vc4_job_free()
58 if (job->zs_write) { in vc4_job_free()
59 remove_from_ht(vc4->write_jobs, job->zs_write->texture); in vc4_job_free()
60 pipe_surface_reference(&job->zs_write, NULL); in vc4_job_free()
62 if (job->msaa_zs_write) { in vc4_job_free()
63 remove_from_ht(vc4->write_jobs, job->msaa_zs_write->texture); in vc4_job_free()
64 pipe_surface_reference(&job->msaa_zs_write, NULL); in vc4_job_free()
67 pipe_surface_reference(&job->color_read, NULL); in vc4_job_free()
68 pipe_surface_reference(&job->zs_read, NULL); in vc4_job_free()
70 if (vc4->job == job) in vc4_job_free()
71 vc4->job = NULL; in vc4_job_free()
73 ralloc_free(job); in vc4_job_free()
79 struct vc4_job *job = rzalloc(vc4, struct vc4_job); in vc4_job_create() local
81 vc4_init_cl(job, &job->bcl); in vc4_job_create()
82 vc4_init_cl(job, &job->shader_rec); in vc4_job_create()
83 vc4_init_cl(job, &job->uniforms); in vc4_job_create()
84 vc4_init_cl(job, &job->bo_handles); in vc4_job_create()
85 vc4_init_cl(job, &job->bo_pointers); in vc4_job_create()
87 job->draw_min_x = ~0; in vc4_job_create()
88 job->draw_min_y = ~0; in vc4_job_create()
89 job->draw_max_x = 0; in vc4_job_create()
90 job->draw_max_y = 0; in vc4_job_create()
92 return job; in vc4_job_create()
102 struct vc4_job *job = entry->data; in vc4_flush_jobs_writing_resource() local
103 vc4_job_submit(vc4, job); in vc4_flush_jobs_writing_resource()
117 struct vc4_job *job = entry->data; in vc4_flush_jobs_reading_resource() local
119 struct vc4_bo **referenced_bos = job->bo_pointers.base; in vc4_flush_jobs_reading_resource()
120 for (int i = 0; i < cl_offset(&job->bo_handles) / 4; i++) { in vc4_flush_jobs_reading_resource()
122 vc4_job_submit(vc4, job); in vc4_flush_jobs_reading_resource()
130 if (job->color_read && !(job->cleared & PIPE_CLEAR_COLOR)) { in vc4_flush_jobs_reading_resource()
132 vc4_resource(job->color_read->texture); in vc4_flush_jobs_reading_resource()
134 vc4_job_submit(vc4, job); in vc4_flush_jobs_reading_resource()
139 if (job->zs_read && !(job->cleared & in vc4_flush_jobs_reading_resource()
142 vc4_resource(job->zs_read->texture); in vc4_flush_jobs_reading_resource()
144 vc4_job_submit(vc4, job); in vc4_flush_jobs_reading_resource()
178 struct vc4_job *job = vc4_job_create(vc4); in vc4_get_job() local
182 job->msaa = true; in vc4_get_job()
183 pipe_surface_reference(&job->msaa_color_write, cbuf); in vc4_get_job()
185 pipe_surface_reference(&job->color_write, cbuf); in vc4_get_job()
191 job->msaa = true; in vc4_get_job()
192 pipe_surface_reference(&job->msaa_zs_write, zsbuf); in vc4_get_job()
194 pipe_surface_reference(&job->zs_write, zsbuf); in vc4_get_job()
198 if (job->msaa) { in vc4_get_job()
199 job->tile_width = 32; in vc4_get_job()
200 job->tile_height = 32; in vc4_get_job()
202 job->tile_width = 64; in vc4_get_job()
203 job->tile_height = 64; in vc4_get_job()
207 _mesa_hash_table_insert(vc4->write_jobs, cbuf->texture, job); in vc4_get_job()
209 _mesa_hash_table_insert(vc4->write_jobs, zsbuf->texture, job); in vc4_get_job()
211 job->key.cbuf = cbuf; in vc4_get_job()
212 job->key.zsbuf = zsbuf; in vc4_get_job()
213 _mesa_hash_table_insert(vc4->jobs, &job->key, job); in vc4_get_job()
215 return job; in vc4_get_job()
221 if (vc4->job) in vc4_get_job_for_fbo()
222 return vc4->job; in vc4_get_job_for_fbo()
226 struct vc4_job *job = vc4_get_job(vc4, cbuf, zsbuf); in vc4_get_job_for_fbo() local
238 pipe_surface_reference(&job->color_read, cbuf); in vc4_get_job_for_fbo()
239 pipe_surface_reference(&job->zs_read, zsbuf); in vc4_get_job_for_fbo()
247 job->cleared |= PIPE_CLEAR_COLOR0; in vc4_get_job_for_fbo()
253 job->cleared |= PIPE_CLEAR_DEPTH | PIPE_CLEAR_STENCIL; in vc4_get_job_for_fbo()
256 job->draw_tiles_x = DIV_ROUND_UP(vc4->framebuffer.width, in vc4_get_job_for_fbo()
257 job->tile_width); in vc4_get_job_for_fbo()
258 job->draw_tiles_y = DIV_ROUND_UP(vc4->framebuffer.height, in vc4_get_job_for_fbo()
259 job->tile_height); in vc4_get_job_for_fbo()
261 vc4->job = job; in vc4_get_job_for_fbo()
263 return job; in vc4_get_job_for_fbo()
267 vc4_submit_setup_rcl_surface(struct vc4_job *job, in vc4_submit_setup_rcl_surface() argument
278 submit_surf->hindex = vc4_gem_hindex(job, rsc->bo); in vc4_submit_setup_rcl_surface()
309 vc4_submit_setup_rcl_render_config_surface(struct vc4_job *job, in vc4_submit_setup_rcl_render_config_surface() argument
319 submit_surf->hindex = vc4_gem_hindex(job, rsc->bo); in vc4_submit_setup_rcl_render_config_surface()
336 vc4_submit_setup_rcl_msaa_surface(struct vc4_job *job, in vc4_submit_setup_rcl_msaa_surface() argument
346 submit_surf->hindex = vc4_gem_hindex(job, rsc->bo); in vc4_submit_setup_rcl_msaa_surface()
356 vc4_job_submit(struct vc4_context *vc4, struct vc4_job *job) in vc4_job_submit() argument
358 if (!job->needs_flush) in vc4_job_submit()
364 if (job->draw_max_x <= job->draw_min_x || in vc4_job_submit()
365 job->draw_max_y <= job->draw_min_y) { in vc4_job_submit()
371 vc4_dump_cl(job->bcl.base, cl_offset(&job->bcl), false); in vc4_job_submit()
374 if (cl_offset(&job->bcl) > 0) { in vc4_job_submit()
379 cl_ensure_space(&job->bcl, 8); in vc4_job_submit()
380 struct vc4_cl_out *bcl = cl_start(&job->bcl); in vc4_job_submit()
386 cl_end(&job->bcl, bcl); in vc4_job_submit()
397 cl_ensure_space(&job->bo_handles, 6 * sizeof(uint32_t)); in vc4_job_submit()
398 cl_ensure_space(&job->bo_pointers, 6 * sizeof(struct vc4_bo *)); in vc4_job_submit()
400 if (job->resolve & PIPE_CLEAR_COLOR) { in vc4_job_submit()
401 if (!(job->cleared & PIPE_CLEAR_COLOR)) { in vc4_job_submit()
402 vc4_submit_setup_rcl_surface(job, &submit.color_read, in vc4_job_submit()
403 job->color_read, in vc4_job_submit()
406 vc4_submit_setup_rcl_render_config_surface(job, in vc4_job_submit()
408 job->color_write); in vc4_job_submit()
409 vc4_submit_setup_rcl_msaa_surface(job, in vc4_job_submit()
411 job->msaa_color_write); in vc4_job_submit()
413 if (job->resolve & (PIPE_CLEAR_DEPTH | PIPE_CLEAR_STENCIL)) { in vc4_job_submit()
414 if (!(job->cleared & (PIPE_CLEAR_DEPTH | PIPE_CLEAR_STENCIL))) { in vc4_job_submit()
415 vc4_submit_setup_rcl_surface(job, &submit.zs_read, in vc4_job_submit()
416 job->zs_read, true, false); in vc4_job_submit()
418 vc4_submit_setup_rcl_surface(job, &submit.zs_write, in vc4_job_submit()
419 job->zs_write, true, true); in vc4_job_submit()
420 vc4_submit_setup_rcl_msaa_surface(job, &submit.msaa_zs_write, in vc4_job_submit()
421 job->msaa_zs_write); in vc4_job_submit()
424 if (job->msaa) { in vc4_job_submit()
436 submit.bo_handles = (uintptr_t)job->bo_handles.base; in vc4_job_submit()
437 submit.bo_handle_count = cl_offset(&job->bo_handles) / 4; in vc4_job_submit()
438 submit.bin_cl = (uintptr_t)job->bcl.base; in vc4_job_submit()
439 submit.bin_cl_size = cl_offset(&job->bcl); in vc4_job_submit()
440 submit.shader_rec = (uintptr_t)job->shader_rec.base; in vc4_job_submit()
441 submit.shader_rec_size = cl_offset(&job->shader_rec); in vc4_job_submit()
442 submit.shader_rec_count = job->shader_rec_count; in vc4_job_submit()
443 submit.uniforms = (uintptr_t)job->uniforms.base; in vc4_job_submit()
444 submit.uniforms_size = cl_offset(&job->uniforms); in vc4_job_submit()
446 assert(job->draw_min_x != ~0 && job->draw_min_y != ~0); in vc4_job_submit()
447 submit.min_x_tile = job->draw_min_x / job->tile_width; in vc4_job_submit()
448 submit.min_y_tile = job->draw_min_y / job->tile_height; in vc4_job_submit()
449 submit.max_x_tile = (job->draw_max_x - 1) / job->tile_width; in vc4_job_submit()
450 submit.max_y_tile = (job->draw_max_y - 1) / job->tile_height; in vc4_job_submit()
451 submit.width = job->draw_width; in vc4_job_submit()
452 submit.height = job->draw_height; in vc4_job_submit()
453 if (job->cleared) { in vc4_job_submit()
455 submit.clear_color[0] = job->clear_color[0]; in vc4_job_submit()
456 submit.clear_color[1] = job->clear_color[1]; in vc4_job_submit()
457 submit.clear_z = job->clear_depth; in vc4_job_submit()
458 submit.clear_s = job->clear_stencil; in vc4_job_submit()
467 ret = vc4_simulator_flush(vc4, &submit, job); in vc4_job_submit()
497 vc4_job_free(vc4, job); in vc4_job_submit()