diff options
Diffstat (limited to 'camera.c')
-rw-r--r-- | camera.c | 16 |
1 files changed, 14 insertions, 2 deletions
@@ -79,15 +79,27 @@ reloadcamera(Camera *c) } void -shootcamera(Camera *c, Shader *s) +shootcamera(Camera *c, Shadertab *s) { + Renderjob *job; uvlong t0, t1; + job = emalloc(sizeof *job); + memset(job, 0, sizeof *job); + job->fb = c->vp->fbctl->fb[c->vp->fbctl->idx^1]; /* address the back buffer */ + job->scene = c->s; + job->shaders = s; + job->donec = chancreate(sizeof(void*), 0); + c->vp->fbctl->reset(c->vp->fbctl); t0 = nanosec(); - shade(c->vp->fbctl->fb[c->vp->fbctl->idx^1], c->s, s); /* address the back buffer */ + sendp(c->rctl->c, job); + recvp(job->donec); t1 = nanosec(); c->vp->fbctl->swap(c->vp->fbctl); + chanfree(job->donec); + free(job); + updatestats(c, t1-t0); } |