aboutsummaryrefslogtreecommitdiff
path: root/camera.c
diff options
context:
space:
mode:
Diffstat (limited to 'camera.c')
-rw-r--r--camera.c16
1 files changed, 14 insertions, 2 deletions
diff --git a/camera.c b/camera.c
index eb6f181..67bca08 100644
--- a/camera.c
+++ b/camera.c
@@ -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);
}