diff options
author | rodri <rgl@antares-labs.eu> | 2024-09-17 15:32:32 +0000 |
---|---|---|
committer | rodri <rgl@antares-labs.eu> | 2024-09-17 15:32:32 +0000 |
commit | beca6100b73428b4b72973275d2989a4c6581f51 (patch) | |
tree | fa92bd9fcc11848614519c062ee1ccc4a7ec1364 | |
parent | 4e3927d643a352bb65665cfbb5547355aa1aaa82 (diff) | |
download | libgraphics-beca6100b73428b4b72973275d2989a4c6581f51.tar.gz libgraphics-beca6100b73428b4b72973275d2989a4c6581f51.tar.bz2 libgraphics-beca6100b73428b4b72973275d2989a4c6581f51.zip |
a better turbopool.
-rw-r--r-- | fb.c | 7 | ||||
-rw-r--r-- | internal.h | 23 | ||||
-rw-r--r-- | mkfile | 2 | ||||
-rw-r--r-- | render.c | 4 |
4 files changed, 17 insertions, 19 deletions
@@ -212,6 +212,7 @@ upscaledraw(Raster *fb, Image *dst, Point off, Point scale, uint filter) // Rectangle dr; // uchar *src; // ulong len; +// Channel *done; /* task completion signal */ //}; //static void //ldimgtask(void *arg) @@ -220,6 +221,7 @@ upscaledraw(Raster *fb, Image *dst, Point off, Point scale, uint filter) // // t = arg; // loadimage(t->dst, t->dr, t->src, t->len); +// nbsend(t->done, nil); //} static void @@ -306,9 +308,10 @@ framebufctl_draw(Framebufctl *ctl, Image *dst, char *name, Point off, Point scal // tasks[i].dr.max.y = dr.max.y; // tasks[i].len = len - i*stride; // } -// procpoolexec(turbodrawingpool, ldimgtask, &tasks[i]); +// turbopoolexec(turbodrawingpool, ldimgtask, &tasks[i]); // } -// procpoolwait(turbodrawingpool); +// for(i = 0; i < turbodrawingpool->nprocs; i++) +// recvp(tasks[i].done); // free(tasks); tmp = allocimage(display, sr, RGBA32, 0, DNofill); @@ -39,26 +39,22 @@ struct Rastertask Primitive p; }; -typedef struct Proctask Proctask; -typedef struct Procpool Procpool; +typedef struct Turbotask Turbotask; +typedef struct Turbopool Turbopool; -struct Proctask +struct Turbotask { void (*fn)(void*); void *arg; }; -struct Procpool +struct Turbopool { ulong nprocs; - Ref issued; - Ref complete; - Channel *subq; /* task submission queue */ - Channel *done; /* task completion signal */ }; -extern Procpool *turbodrawingpool; +extern Turbopool *turbopool; /* alloc */ void *emalloc(ulong); @@ -100,11 +96,10 @@ void memsetl(void*, ulong, usize); /* nanosec */ uvlong nanosec(void); -/* procpool */ -Procpool *mkprocpool(ulong); -void procpoolexec(Procpool*, void(*)(void*), void*); -void procpoolwait(Procpool*); -void rmprocpool(Procpool*); +/* turbopool */ +Turbopool *mkturbopool(ulong); +void turbopoolexec(Turbopool*, void(*)(void*), void*); +void rmturbopool(Turbopool*); #define getpixel(fb, p) rastergetcolor(fb, p) #define putpixel(fb, p, c) rasterputcolor(fb, p, c) @@ -17,7 +17,7 @@ OFILES=\ color.$O\ util.$O\ nanosec.$O\ - procpool.$O\ + turbopool.$O\ HFILES=\ graphics.h\ @@ -9,7 +9,7 @@ #include "internal.h" Rectangle UR = {0,0,1,1}; -//Procpool *turbodrawingpool; +//Turbopool *turbopool; static Vertexattr * sparams_getuniform(Shaderparams *sp, char *id) @@ -732,7 +732,7 @@ initgraphics(void) nproc = 1; free(nprocs); -// turbodrawingpool = mkprocpool(nproc); +// turbopool = mkturbopool(nproc); r = emalloc(sizeof *r); memset(r, 0, sizeof *r); |