diff options
author | rodri <rgl@antares-labs.eu> | 2024-03-26 10:42:23 +0000 |
---|---|---|
committer | rodri <rgl@antares-labs.eu> | 2024-03-26 10:42:23 +0000 |
commit | 02c06cfbc711c01d22bb0c52f8440f7060c10916 (patch) | |
tree | f5272530117eb133813c05949ebc8919544eb4f2 /render.c | |
parent | 0874435504c0816c0e5f11a2e852507626fe185e (diff) | |
download | libgraphics-02c06cfbc711c01d22bb0c52f8440f7060c10916.tar.gz libgraphics-02c06cfbc711c01d22bb0c52f8440f7060c10916.tar.bz2 libgraphics-02c06cfbc711c01d22bb0c52f8440f7060c10916.zip |
pass a Viewport in the Renderjob instead of a fb.
do the frame buffer clearing and swapping as part
of the rendering process, not within shootcamera.
Diffstat (limited to 'render.c')
-rw-r--r-- | render.c | 7 |
1 files changed, 5 insertions, 2 deletions
@@ -509,6 +509,7 @@ renderer(void *arg) job->nrem = sc->nents; job->lastid = 0; job->time0 = nanosec(); + job->v->fbctl->reset(job->v->fbctl); if(jobq.tl == nil){ jobq.tl = jobq.hd = job; @@ -526,7 +527,7 @@ sendparams: if(ent != nil && ent != &sc->ents){ params = emalloc(sizeof *params); memset(params, 0, sizeof *params); - params->fb = job->fb; + params->fb = job->v->getfb(job->v); params->id = job->lastid++; params->frag = rgb(DBlack); params->donec = donec; @@ -548,8 +549,10 @@ sendparams: } break; case DONE: - if(--params2->job->nrem < 1) + if(--params2->job->nrem < 1){ + params2->job->v->fbctl->swap(params2->job->v->fbctl); send(params2->job->donec, nil); + } freememimage(params2->frag); free(params2); |