ref: beca6100b73428b4b72973275d2989a4c6581f51
parent: 4e3927d643a352bb65665cfbb5547355aa1aaa82
author: rodri <rgl@antares-labs.eu>
date: Tue Sep 17 11:32:32 EDT 2024
a better turbopool.
--- a/fb.c
+++ b/fb.c
@@ -212,6 +212,7 @@
// Rectangle dr;
// uchar *src;
// ulong len;
+// Channel *done; /* task completion signal */
//};
//static void
//ldimgtask(void *arg)
@@ -220,6 +221,7 @@
//
// t = arg;
// loadimage(t->dst, t->dr, t->src, t->len);
+// nbsend(t->done, nil);
//}
static void
@@ -306,9 +308,10 @@
// 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);
--- a/internal.h
+++ b/internal.h
@@ -39,26 +39,22 @@
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 @@
/* 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)
--- a/mkfile
+++ b/mkfile
@@ -17,7 +17,7 @@
color.$O\
util.$O\
nanosec.$O\
- procpool.$O\
+ turbopool.$O\
HFILES=\
graphics.h\
--- a/render.c
+++ b/render.c
@@ -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 @@
nproc = 1;
free(nprocs);
-// turbodrawingpool = mkprocpool(nproc);
+// turbopool = mkturbopool(nproc);
r = emalloc(sizeof *r);
memset(r, 0, sizeof *r);