sli is possible- but not optimal.

SVN revision: 27129
This commit is contained in:
Carsten Haitzler 2006-11-15 16:44:34 +00:00
parent 2ecb8da51f
commit ccc60306a0
14 changed files with 978 additions and 740 deletions

View File

@ -36,6 +36,7 @@ evas_common_draw_context_new(void)
RGBA_Draw_Context *dc;
dc = calloc(1, sizeof(RGBA_Draw_Context));
dc->sli.h = 1;
return dc;
}
@ -543,3 +544,10 @@ evas_common_draw_context_set_render_op(RGBA_Draw_Context *dc , int op)
{
dc->render_op = op;
}
EAPI void
evas_common_draw_context_set_sli(RGBA_Draw_Context *dc, int y, int h)
{
dc->sli.y = y;
dc->sli.h = h;
}

View File

@ -259,6 +259,10 @@ evas_common_font_draw(RGBA_Image *dst, RGBA_Draw_Context *dc, RGBA_Font *fn, int
in_w = 0;
dx = chr_x;
dy = y - (chr_y - i - y);
#ifdef EVAS_SLI
if (((dy) % dc->sli.h) == dc->sli.y)
#endif
{
if ((dx < (ext_x + ext_w)) &&
(dy >= (ext_y)) &&
(dy < (ext_y + ext_h)))
@ -279,6 +283,7 @@ evas_common_font_draw(RGBA_Image *dst, RGBA_Draw_Context *dc, RGBA_Font *fn, int
}
}
}
}
else
{
DATA8 *tmpbuf = NULL, *dp, *tp, bits;
@ -295,6 +300,10 @@ evas_common_font_draw(RGBA_Image *dst, RGBA_Draw_Context *dc, RGBA_Font *fn, int
in_w = 0;
dx = chr_x;
dy = y - (chr_y - i - y);
#ifdef EVAS_SLI
if (((dy) % dc->sli.h) == dc->sli.y)
#endif
{
tp = tmpbuf;
dp = data + (i * fg->glyph_out->bitmap.pitch);
for (bi = 0; bi < w; bi += 8)
@ -330,6 +339,7 @@ evas_common_font_draw(RGBA_Image *dst, RGBA_Draw_Context *dc, RGBA_Font *fn, int
}
}
}
}
c++;
}
}

View File

@ -526,10 +526,15 @@ evas_common_gradient_draw(RGBA_Image *dst, RGBA_Draw_Context *dc,
buf = pdst;
while (pdst < dst_end)
{
#ifdef EVAS_SLI
if (((yoff + y) % dc->sli.h) == dc->sli.y)
#endif
{
gfunc(map, len, buf, mask, w, xoff, yoff, axx, axy, ayx, ayy, gdata);
if (!direct_copy)
bfunc(buf, mask, 0, pdst, w);
evas_common_cpu_end_opt();
}
buf += buf_step;
pdst += dst->image->w;
yoff++;

View File

@ -152,6 +152,10 @@ _evas_draw_simple_line(RGBA_Image *dst, RGBA_Draw_Context *dc, int x0, int y0, i
if (dy == 0)
{
#ifdef EVAS_SLI
if (((y0) % dc->sli.h) == dc->sli.y)
#endif
{
if ((y0 >= ty) && (y0 <= by))
{
if (dx < 0)
@ -171,6 +175,7 @@ _evas_draw_simple_line(RGBA_Image *dst, RGBA_Draw_Context *dc, int x0, int y0, i
if (sfunc)
sfunc(NULL, NULL, color, p, len);
}
}
return;
}
@ -188,7 +193,12 @@ _evas_draw_simple_line(RGBA_Image *dst, RGBA_Draw_Context *dc, int x0, int y0, i
p = dst->image->data + (dstw * y0) + x0;
while (len--)
{
#ifdef EVAS_SLI
if (((y1 + 1 - len) % dc->sli.h) == dc->sli.y)
#endif
{
pfunc(0, 255, color, p);
}
p += dstw;
}
}
@ -273,7 +283,12 @@ _evas_draw_simple_line(RGBA_Image *dst, RGBA_Draw_Context *dc, int x0, int y0, i
while (len--)
{
#ifdef EVAS_SLI
if (((y1 + 1 - len) % dc->sli.h) == dc->sli.y)
#endif
{
pfunc(0, 255, color, p);
}
p += dstw;
}
}
@ -486,8 +501,13 @@ _evas_draw_line(RGBA_Image *dst, RGBA_Draw_Context *dc, int x0, int y0, int x1,
if ((py < 0) && (dely < 0)) return;
if ((py > by) && (dely > 0)) return;
}
#ifdef EVAS_SLI
if (((py) % dc->sli.h) == dc->sli.y)
#endif
{
if (IN_RANGE(px, py, clw, clh))
pfunc(0, 255, color, p);
}
yy += dyy;
px++;
p++;
@ -514,8 +534,13 @@ _evas_draw_line(RGBA_Image *dst, RGBA_Draw_Context *dc, int x0, int y0, int x1,
if ((px < 0) && (delx < 0)) return;
if ((px > rx) && (delx > 0)) return;
}
#ifdef EVAS_SLI
if (((py) % dc->sli.h) == dc->sli.y)
#endif
{
if (IN_RANGE(px, py, clw, clh))
pfunc(0, 255, color, p);
}
xx += dxx;
py++;
p += dstw;

View File

@ -62,13 +62,6 @@ evas_common_pipe_op_free(RGBA_Pipe_Op *op)
}
/* main api calls */
EAPI void
evas_common_pipe_begin(RGBA_Image *im)
{
/* FIXME: PTHREAD start any processing threads and lock - otherwise do
* nothing */
}
#ifdef BUILD_PTHREAD
typedef struct _Thinfo
{
@ -118,26 +111,25 @@ evas_common_pipe_thread(void *data)
}
#endif
EAPI void
evas_common_pipe_flush(RGBA_Image *im)
{
RGBA_Pipe *p;
int i, y, h;
if (!im->pipe) return;
#ifdef BUILD_PTHREAD
/* FIXME: PTHREAD join all threads here (if not finished) or begin then join
* otherwise just process pipe */
{
static int thread_num = 0;
static Thinfo thinfo[TH_MAX];
static pthread_barrier_t barrier[2];
static int thread_num = 0;
static Thinfo thinfo[TH_MAX];
static pthread_barrier_t thbarrier[2];
#endif
EAPI void
evas_common_pipe_begin(RGBA_Image *im)
{
#ifdef BUILD_PTHREAD
int i, y, h;
if (thread_num == 0)
{
thread_num = evas_common_cpu_count();
pthread_barrier_init(&(barrier[0]), NULL, thread_num + 1);
int cpunum;
cpunum = evas_common_cpu_count();
thread_num = cpunum;
pthread_barrier_init(&(thbarrier[0]), NULL, thread_num + 1);
for (i = 0; i < thread_num; i++)
{
pthread_attr_t attr;
@ -145,11 +137,11 @@ evas_common_pipe_flush(RGBA_Image *im)
pthread_attr_init(&attr);
CPU_ZERO(&cpu);
CPU_SET(i, &cpu);
CPU_SET(i % cpunum, &cpu);
pthread_attr_setaffinity_np(&attr, sizeof(cpu), &cpu);
thinfo[i].thread_num = i;
thinfo[i].info = NULL;
thinfo[i].barrier = barrier;
thinfo[i].barrier = thbarrier;
/* setup initial locks */
pthread_create(&(thinfo[i].thread_id), &attr,
evas_common_pipe_thread, &(thinfo[i]));
@ -165,6 +157,12 @@ evas_common_pipe_flush(RGBA_Image *im)
// if (y >= im->image->h) break;
info = calloc(1, sizeof(RGBA_Pipe_Thread_Info));
info->im = im;
#ifdef EVAS_SLI
info->x = 0;
info->w = im->image->w;
info->y = i;
info->h = thread_num;
#else
info->x = 0;
info->y = y;
info->w = im->image->w;
@ -173,17 +171,32 @@ evas_common_pipe_flush(RGBA_Image *im)
else
info->h = h;
y += info->h;
#endif
thinfo[i].info = info;
/* send startsignal */
// printf("START %i\n", i);
}
pthread_barrier_init(&(barrier[1]), NULL, thread_num + 1);
pthread_barrier_wait(&(barrier[0]));
pthread_barrier_destroy(&(barrier[0]));
pthread_barrier_init(&(thbarrier[1]), NULL, thread_num + 1);
pthread_barrier_wait(&(thbarrier[0]));
pthread_barrier_destroy(&(thbarrier[0]));
#endif
}
pthread_barrier_init(&(barrier[0]), NULL, thread_num + 1);
pthread_barrier_wait(&(barrier[1]));
pthread_barrier_destroy(&(barrier[1]));
EAPI void
evas_common_pipe_flush(RGBA_Image *im)
{
RGBA_Pipe *p;
int i, y, h;
if (!im->pipe) return;
#ifdef BUILD_PTHREAD
/* FIXME: PTHREAD join all threads here (if not finished) or begin then join
* otherwise just process pipe */
{
pthread_barrier_init(&(thbarrier[0]), NULL, thread_num + 1);
pthread_barrier_wait(&(thbarrier[1]));
pthread_barrier_destroy(&(thbarrier[1]));
// printf("DONE\n");
}
@ -238,7 +251,11 @@ evas_common_pipe_rectangle_draw_do(RGBA_Image *dst, RGBA_Pipe_Op *op, RGBA_Pipe_
RGBA_Draw_Context context;
memcpy(&(context), &(op->context), sizeof(RGBA_Draw_Context));
#ifdef EVAS_SLI
evas_common_draw_context_set_sli(&(context), info->y, info->h);
#else
evas_common_draw_context_clip_clip(&(context), info->x, info->y, info->w, info->h);
#endif
evas_common_rectangle_draw(dst, &(context),
op->op.rect.x, op->op.rect.y,
op->op.rect.w, op->op.rect.h);
@ -276,7 +293,11 @@ evas_common_pipe_line_draw_do(RGBA_Image *dst, RGBA_Pipe_Op *op, RGBA_Pipe_Threa
RGBA_Draw_Context context;
memcpy(&(context), &(op->context), sizeof(RGBA_Draw_Context));
#ifdef EVAS_SLI
evas_common_draw_context_set_sli(&(context), info->y, info->h);
#else
evas_common_draw_context_clip_clip(&(context), info->x, info->y, info->w, info->h);
#endif
evas_common_line_draw(dst, &(context),
op->op.line.x0, op->op.line.y0,
op->op.line.x1, op->op.line.y1);
@ -327,7 +348,11 @@ evas_common_pipe_poly_draw_do(RGBA_Image *dst, RGBA_Pipe_Op *op, RGBA_Pipe_Threa
RGBA_Draw_Context context;
memcpy(&(context), &(op->context), sizeof(RGBA_Draw_Context));
#ifdef EVAS_SLI
evas_common_draw_context_set_sli(&(context), info->y, info->h);
#else
evas_common_draw_context_clip_clip(&(context), info->x, info->y, info->w, info->h);
#endif
evas_common_polygon_draw(dst, &(context),
op->op.poly.points);
}
@ -379,7 +404,11 @@ evas_common_pipe_grad_draw_do(RGBA_Image *dst, RGBA_Pipe_Op *op, RGBA_Pipe_Threa
RGBA_Draw_Context context;
memcpy(&(context), &(op->context), sizeof(RGBA_Draw_Context));
#ifdef EVAS_SLI
evas_common_draw_context_set_sli(&(context), info->y, info->h);
#else
evas_common_draw_context_clip_clip(&(context), info->x, info->y, info->w, info->h);
#endif
evas_common_gradient_draw(dst, &(context),
op->op.grad.x, op->op.grad.y,
op->op.grad.w, op->op.grad.h,
@ -429,7 +458,11 @@ evas_common_pipe_text_draw_do(RGBA_Image *dst, RGBA_Pipe_Op *op, RGBA_Pipe_Threa
RGBA_Draw_Context context;
memcpy(&(context), &(op->context), sizeof(RGBA_Draw_Context));
#ifdef EVAS_SLI
evas_common_draw_context_set_sli(&(context), info->y, info->h);
#else
evas_common_draw_context_clip_clip(&(context), info->x, info->y, info->w, info->h);
#endif
evas_common_font_draw(dst, &(context),
op->op.text.font, op->op.text.x, op->op.text.y,
op->op.text.text);
@ -476,7 +509,11 @@ evas_common_pipe_image_draw_do(RGBA_Image *dst, RGBA_Pipe_Op *op, RGBA_Pipe_Thre
RGBA_Draw_Context context;
memcpy(&(context), &(op->context), sizeof(RGBA_Draw_Context));
#ifdef EVAS_SLI
evas_common_draw_context_set_sli(&(context), info->y, info->h);
#else
evas_common_draw_context_clip_clip(&(context), info->x, info->y, info->w, info->h);
#endif
if (op->op.image.smooth)
evas_common_scale_rgba_in_to_out_clip_smooth(op->op.image.src,
dst, &(context),

View File

@ -276,9 +276,14 @@ evas_common_polygon_draw(RGBA_Image *dst, RGBA_Draw_Context *dc, RGBA_Polygon_Po
DATA32 *ptr;
span = (RGBA_Span *)l;
#ifdef EVAS_SLI
if (((span->y) % dc->sli.h) == dc->sli.y)
#endif
{
ptr = dst->image->data + (span->y * (dst->image->w)) + span->x;
func(NULL, NULL, dc->col.col, ptr, span->w);
}
}
while (spans)
{
RGBA_Span *span;

View File

@ -67,7 +67,12 @@ rectangle_draw_internal(RGBA_Image *dst, RGBA_Draw_Context *dc, int x, int y, in
ptr = dst->image->data + (y * dst->image->w) + x;
for (yy = 0; yy < h; yy++)
{
#ifdef EVAS_SLI
if (((yy + y) % dc->sli.h) == dc->sli.y)
#endif
{
func(NULL, NULL, dc->col.col, ptr, w);
}
ptr += dst->image->w;
}
}

View File

@ -247,7 +247,12 @@ scale_rgba_in_to_out_clip_sample_internal(RGBA_Image *src, RGBA_Image *dst,
for (y = 0; y < dst_clip_h; y++)
{
/* * blend here [clip_w *] ptr -> dst_ptr * */
#ifdef EVAS_SLI
if (((y + dst_clip_y) % dc->sli.h) == dc->sli.y)
#endif
{
func(ptr, NULL, dc->mul.col, dst_ptr, dst_clip_w);
}
ptr += src_w;
dst_ptr += dst_w;
}
@ -269,6 +274,10 @@ scale_rgba_in_to_out_clip_sample_internal(RGBA_Image *src, RGBA_Image *dst,
{
for (y = 0; y < dst_clip_h; y++)
{
#ifdef EVAS_SLI
if (((y + dst_clip_y) % dc->sli.h) == dc->sli.y)
#endif
{
dst_ptr = dptr;
for (x = 0; x < dst_clip_w; x++)
{
@ -276,6 +285,7 @@ scale_rgba_in_to_out_clip_sample_internal(RGBA_Image *src, RGBA_Image *dst,
*dst_ptr = *ptr;
dst_ptr++;
}
}
dptr += dst_w;
}
}
@ -288,6 +298,10 @@ scale_rgba_in_to_out_clip_sample_internal(RGBA_Image *src, RGBA_Image *dst,
for (y = 0; y < dst_clip_h; y++)
{
#ifdef EVAS_SLI
if (((y + dst_clip_y) % dc->sli.h) == dc->sli.y)
#endif
{
dst_ptr = buf;
for (x = 0; x < dst_clip_w; x++)
{
@ -297,6 +311,7 @@ scale_rgba_in_to_out_clip_sample_internal(RGBA_Image *src, RGBA_Image *dst,
}
/* * blend here [clip_w *] buf -> dptr * */
func(buf, NULL, dc->mul.col, dptr, dst_clip_w);
}
dptr += dst_w;
}
}

View File

@ -5,6 +5,9 @@
int *xp, xap, yap, pos;
int dyy, dxx;
int w = dst_clip_w;
#ifdef EVAS_SLI
int ysli = dst_clip_y;
#endif
dptr = dst_ptr;
pos = (src_region_y * src_w) + src_region_x;
@ -21,6 +24,10 @@
{
while (dst_clip_h--)
{
#ifdef EVAS_SLI
if (((ysli) % dc->sli.h) == dc->sli.y)
#endif
{
while (dst_clip_w--)
{
Cx = *xapp >> 16;
@ -80,7 +87,10 @@
}
func(buf, NULL, dc->mul.col, dptr, w);
}
#ifdef EVAS_SLI
ysli++;
#endif
pbuf = buf;
dptr += dst_w; dst_clip_w = w;
yp++; yapp++;
@ -98,6 +108,10 @@
while (dst_clip_h--)
{
pbuf = dptr;
#ifdef EVAS_SLI
if (((ysli) % dc->sli.h) == dc->sli.y)
#endif
{
while (dst_clip_w--)
{
Cx = *xapp >> 16;
@ -148,6 +162,10 @@
*pbuf++ = ARGB_JOIN(0xff, r >> 4, g >> 4, b >> 4);
xp++; xapp++;
}
}
#ifdef EVAS_SLI
ysli++;
#endif
dptr += dst_w; dst_clip_w = w;
yp++; yapp++;
@ -160,6 +178,10 @@
{
while (dst_clip_h--)
{
#ifdef EVAS_SLI
if (((ysli) % dc->sli.h) == dc->sli.y)
#endif
{
while (dst_clip_w--)
{
Cx = *xapp >> 16;
@ -212,6 +234,10 @@
}
func(buf, NULL, dc->mul.col, dptr, w);
}
#ifdef EVAS_SLI
ysli++;
#endif
pbuf = buf;
dptr += dst_w; dst_clip_w = w;

View File

@ -4,6 +4,9 @@
int a, r, g, b, rx, gx, bx, ax;
int xap, yap, pos;
int dyy, dxx;
#ifdef EVAS_SLI
int ysli = dst_clip_y;
#endif
DATA32 **yp;
int *xp;
@ -26,6 +29,10 @@
{
while (dst_clip_h--)
{
#ifdef EVAS_SLI
if (((ysli) % dc->sli.h) == dc->sli.y)
#endif
{
Cy = *yapp >> 16;
yap = *yapp & 0xffff;
@ -129,7 +136,10 @@
}
func(buf, NULL, dc->mul.col, dptr, w);
}
#ifdef EVAS_SLI
ysli++;
#endif
pbuf = buf;
dptr += dst_w; dst_clip_w = w;
xp = xpoints + dxx;
@ -146,6 +156,10 @@
{
while (dst_clip_h--)
{
#ifdef EVAS_SLI
if (((ysli) % dc->sli.h) == dc->sli.y)
#endif
{
Cy = *yapp >> 16;
yap = *yapp & 0xffff;
@ -236,6 +250,10 @@
*pbuf++ = ARGB_JOIN(0xff, r >> 5, g >> 5, b >> 5);
xp++; xapp++;
}
}
#ifdef EVAS_SLI
ysli++;
#endif
dptr += dst_w; dst_clip_w = w;
xp = xpoints + dxx;
xapp = xapoints + dxx;
@ -247,6 +265,10 @@
{
while (dst_clip_h--)
{
#ifdef EVAS_SLI
if (((ysli) % dc->sli.h) == dc->sli.y)
#endif
{
Cy = *yapp >> 16;
yap = *yapp & 0xffff;
@ -338,7 +360,10 @@
}
func(buf, NULL, dc->mul.col, dptr, w);
}
#ifdef EVAS_SLI
ysli++;
#endif
pbuf = buf;
dptr += dst_w; dst_clip_w = w;
xp = xpoints + dxx;

View File

@ -5,6 +5,9 @@
int *xp, xap, yap, pos;
int dyy, dxx;
int w = dst_clip_w;
#ifdef EVAS_SLI
int ysli = dst_clip_y;
#endif
dptr = dst_ptr;
pos = (src_region_y * src_w) + src_region_x;
@ -21,6 +24,10 @@
{
while (dst_clip_h--)
{
#ifdef EVAS_SLI
if (((ysli) % dc->sli.h) == dc->sli.y)
#endif
{
Cy = *yapp >> 16;
yap = *yapp & 0xffff;
@ -81,7 +88,10 @@
}
func(buf, NULL, dc->mul.col, dptr, w);
}
#ifdef EVAS_SLI
ysli++;
#endif
pbuf = buf;
dptr += dst_w; dst_clip_w = w;
yp++; yapp++;
@ -98,6 +108,10 @@
{
while (dst_clip_h--)
{
#ifdef EVAS_SLI
if (((ysli) % dc->sli.h) == dc->sli.y)
#endif
{
Cy = *yapp >> 16;
yap = *yapp & 0xffff;
@ -150,6 +164,10 @@
*pbuf++ = ARGB_JOIN(0xff, r >> 4, g >> 4, b >> 4);
xp++; xapp++;
}
}
#ifdef EVAS_SLI
ysli++;
#endif
dptr += dst_w; dst_clip_w = w;
yp++; yapp++;
xp = xpoints + dxx;
@ -161,6 +179,10 @@
{
while (dst_clip_h--)
{
#ifdef EVAS_SLI
if (((ysli) % dc->sli.h) == dc->sli.y)
#endif
{
Cy = *yapp >> 16;
yap = *yapp & 0xffff;
@ -214,7 +236,10 @@
}
func(buf, NULL, dc->mul.col, dptr, w);
}
#ifdef EVAS_SLI
ysli++;
#endif
pbuf = buf;
dptr += dst_w; dst_clip_w = w;
yp++; yapp++;

View File

@ -1,6 +1,9 @@
{
DATA32 *ptr;
RGBA_Gfx_Func func;
#ifdef EVAS_SLI
int ysli = dst_clip_y;
#endif
ptr = src->image->data + ((dst_clip_y - dst_region_y + src_region_y) * src_w) + (dst_clip_x - dst_region_x) + src_region_x;
if (dc->mul.use)
@ -9,7 +12,15 @@
func = evas_common_gfx_func_composite_pixel_span_get(src, dst, dst_clip_w, dc->render_op);
while (dst_clip_h--)
{
#ifdef EVAS_SLI
if (((ysli) % dc->sli.h) == dc->sli.y)
#endif
{
func(ptr, NULL, dc->mul.col, dst_ptr, dst_clip_w);
}
#ifdef EVAS_SLI
ysli++;
#endif
ptr += src_w;
dst_ptr += dst_w;
}

View File

@ -59,10 +59,16 @@
if (drh == srh)
{
int sxx0 = sxx;
#ifdef EVAS_SLI
int ysli = dst_clip_y;
#endif
psrc = src->image->data + (src_w * (sry + cy)) + srx;
while (pdst < pdst_end)
{
#ifdef EVAS_SLI
if (((ysli) % dc->sli.h) == dc->sli.y)
#endif
{
pbuf = buf; pbuf_end = buf + dst_clip_w;
sxx = sxx0;
#ifdef SCALE_USING_MMX
@ -99,6 +105,10 @@
/* * blend here [clip_w *] buf -> dptr * */
if (!direct_scale)
func(buf, NULL, dc->mul.col, pdst, dst_clip_w);
}
#ifdef EVAS_SLI
ysli++;
#endif
pdst += dst_w;
psrc += src_w;
buf += buf_step;
@ -109,9 +119,16 @@
else if (drw == srw)
{
DATA32 *ps = src->image->data + (src_w * sry) + srx + cx;
#ifdef EVAS_SLI
int ysli = dst_clip_y;
#endif
while (pdst < pdst_end)
{
#ifdef EVAS_SLI
if (((ysli) % dc->sli.h) == dc->sli.y)
#endif
{
int ay;
sy = syy >> 16;
@ -148,6 +165,10 @@
/* * blend here [clip_w *] buf -> dptr * */
if (!direct_scale)
func(buf, NULL, dc->mul.col, pdst, dst_clip_w);
}
#ifdef EVAS_SLI
ysli++;
#endif
pdst += dst_w;
syy += dsyy;
buf += buf_step;
@ -158,9 +179,16 @@
{
DATA32 *ps = src->image->data + (src_w * sry) + srx;
int sxx0 = sxx;
#ifdef EVAS_SLI
int ysli = dst_clip_y;
#endif
while (pdst < pdst_end)
{
#ifdef EVAS_SLI
if (((ysli) % dc->sli.h) == dc->sli.y)
#endif
{
int ay;
sy = syy >> 16;
@ -222,6 +250,10 @@
/* * blend here [clip_w *] buf -> dptr * */
if (!direct_scale)
func(buf, NULL, dc->mul.col, pdst, dst_clip_w);
}
#ifdef EVAS_SLI
ysli++;
#endif
pdst += dst_w;
syy += dsyy;
buf += buf_step;

View File

@ -22,7 +22,12 @@
# define LKU(x) pthread_mutex_unlock(&(x));
# define TH(x) pthread_t x
# define THI(x) int x
# define TH_MAX 4
# define TH_MAX 8
// even though in theory having every Nth rendered line done by a different
// thread might even out load across threads - it actually slows things down.
//#define EVAS_SLI 1
#else
# define LK(x)
# define LKI(x)
@ -255,8 +260,11 @@ struct _RGBA_Draw_Context
struct {
int color_space;
} interpolation;
unsigned char anti_alias : 1;
struct {
int y, h;
} sli;
int render_op;
unsigned char anti_alias : 1;
};
struct _RGBA_Surface
@ -978,8 +986,9 @@ EAPI Cutout_Rect *evas_common_draw_context_cutouts_split (Cutout_Rect
EAPI Cutout_Rect *evas_common_draw_context_cutout_split (Cutout_Rect *in, Cutout_Rect *split);
EAPI Cutout_Rect *evas_common_draw_context_cutout_merge (Cutout_Rect *in, Cutout_Rect *merge);
EAPI void evas_common_draw_context_set_anti_alias (RGBA_Draw_Context *dc, unsigned char aa);
EAPI void evas_common_draw_context_set_color_interpolation (RGBA_Draw_Context *dc, int color_space);
EAPI void evas_common_draw_context_set_color_interpolation(RGBA_Draw_Context *dc, int color_space);
EAPI void evas_common_draw_context_set_render_op (RGBA_Draw_Context *dc, int op);
EAPI void evas_common_draw_context_set_sli (RGBA_Draw_Context *dc, int y, int h);
/****/
/* image rendering pipelines... new optional system - non-immediate and