• Home
  • Raw
  • Download

Lines Matching full:vc4

26  * Functions for submitting VC4 render jobs to the kernel.
35 vc4_job_free(struct vc4_context *vc4, struct vc4_job *job) in vc4_job_free() argument
42 _mesa_hash_table_remove_key(vc4->jobs, &job->key); in vc4_job_free()
45 _mesa_hash_table_remove_key(vc4->write_jobs, in vc4_job_free()
50 _mesa_hash_table_remove_key(vc4->write_jobs, in vc4_job_free()
55 _mesa_hash_table_remove_key(vc4->write_jobs, in vc4_job_free()
60 _mesa_hash_table_remove_key(vc4->write_jobs, in vc4_job_free()
68 if (vc4->job == job) in vc4_job_free()
69 vc4->job = NULL; in vc4_job_free()
75 vc4_job_create(struct vc4_context *vc4) in vc4_job_create() argument
77 struct vc4_job *job = rzalloc(vc4, struct vc4_job); in vc4_job_create()
92 if (vc4->perfmon) in vc4_job_create()
93 job->perfmon = vc4->perfmon; in vc4_job_create()
99 vc4_flush_jobs_writing_resource(struct vc4_context *vc4, in vc4_flush_jobs_writing_resource() argument
102 struct hash_entry *entry = _mesa_hash_table_search(vc4->write_jobs, in vc4_flush_jobs_writing_resource()
106 vc4_job_submit(vc4, job); in vc4_flush_jobs_writing_resource()
111 vc4_flush_jobs_reading_resource(struct vc4_context *vc4, in vc4_flush_jobs_reading_resource() argument
116 vc4_flush_jobs_writing_resource(vc4, prsc); in vc4_flush_jobs_reading_resource()
118 hash_table_foreach(vc4->jobs, entry) { in vc4_flush_jobs_reading_resource()
130 vc4_job_submit(vc4, job); in vc4_flush_jobs_reading_resource()
141 vc4_job_submit(vc4, job); in vc4_flush_jobs_reading_resource()
151 vc4_job_submit(vc4, job); in vc4_flush_jobs_reading_resource()
167 vc4_get_job(struct vc4_context *vc4, in vc4_get_job() argument
172 struct hash_entry *entry = _mesa_hash_table_search(vc4->jobs, in vc4_get_job()
181 vc4_flush_jobs_reading_resource(vc4, cbuf->texture); in vc4_get_job()
183 vc4_flush_jobs_reading_resource(vc4, zsbuf->texture); in vc4_get_job()
185 struct vc4_job *job = vc4_job_create(vc4); in vc4_get_job()
214 _mesa_hash_table_insert(vc4->write_jobs, cbuf->texture, job); in vc4_get_job()
216 _mesa_hash_table_insert(vc4->write_jobs, zsbuf->texture, job); in vc4_get_job()
220 _mesa_hash_table_insert(vc4->jobs, &job->key, job); in vc4_get_job()
226 vc4_get_job_for_fbo(struct vc4_context *vc4) in vc4_get_job_for_fbo() argument
228 if (vc4->job) in vc4_get_job_for_fbo()
229 return vc4->job; in vc4_get_job_for_fbo()
231 struct pipe_surface *cbuf = vc4->framebuffer.cbufs[0]; in vc4_get_job_for_fbo()
232 struct pipe_surface *zsbuf = vc4->framebuffer.zsbuf; in vc4_get_job_for_fbo()
233 struct vc4_job *job = vc4_get_job(vc4, cbuf, zsbuf); in vc4_get_job_for_fbo()
235 /* The dirty flags are tracking what's been updated while vc4->job has in vc4_get_job_for_fbo()
239 vc4->dirty = ~0; in vc4_get_job_for_fbo()
263 job->draw_tiles_x = DIV_ROUND_UP(vc4->framebuffer.width, in vc4_get_job_for_fbo()
265 job->draw_tiles_y = DIV_ROUND_UP(vc4->framebuffer.height, in vc4_get_job_for_fbo()
272 if (vc4->rasterizer) in vc4_get_job_for_fbo()
273 job->flags = vc4->rasterizer->tile_raster_order_flags; in vc4_get_job_for_fbo()
275 vc4->job = job; in vc4_get_job_for_fbo()
370 vc4_job_submit(struct vc4_context *vc4, struct vc4_job *job) in vc4_job_submit() argument
476 if (vc4->screen->has_syncobj) { in vc4_job_submit()
477 submit.out_sync = vc4->job_syncobj; in vc4_job_submit()
479 if (vc4->in_fence_fd >= 0) { in vc4_job_submit()
481 drmSyncobjImportSyncFile(vc4->fd, vc4->in_syncobj, in vc4_job_submit()
482 vc4->in_fence_fd); in vc4_job_submit()
483 submit.in_sync = vc4->in_syncobj; in vc4_job_submit()
484 close(vc4->in_fence_fd); in vc4_job_submit()
485 vc4->in_fence_fd = -1; in vc4_job_submit()
492 ret = vc4_ioctl(vc4->fd, DRM_IOCTL_VC4_SUBMIT_CL, &submit); in vc4_job_submit()
499 vc4->last_emit_seqno = submit.seqno; in vc4_job_submit()
505 if (vc4->last_emit_seqno - vc4->screen->finished_seqno > 5) { in vc4_job_submit()
506 if (!vc4_wait_seqno(vc4->screen, in vc4_job_submit()
507 vc4->last_emit_seqno - 5, in vc4_job_submit()
515 if (!vc4_wait_seqno(vc4->screen, vc4->last_emit_seqno, in vc4_job_submit()
523 vc4_job_free(vc4, job); in vc4_job_submit()
539 vc4_job_init(struct vc4_context *vc4) in vc4_job_init() argument
541 vc4->jobs = _mesa_hash_table_create(vc4, in vc4_job_init()
544 vc4->write_jobs = _mesa_hash_table_create(vc4, in vc4_job_init()
548 if (vc4->screen->has_syncobj) { in vc4_job_init()
552 int ret = drmSyncobjCreate(vc4->fd, in vc4_job_init()
554 &vc4->job_syncobj); in vc4_job_init()