Added EVAS_GL_LINE_NO_OFFSET_HACK evn var control to handle

line coordinate fiddling in gl line drawing code.  This fiddling
caused issues on some GPU drivers on ARM target.



SVN revision: 80417
This commit is contained in:
Sung Park 2012-12-07 08:28:42 +00:00
parent 21bb5db3e2
commit dbcdaa6b68
2 changed files with 29 additions and 11 deletions

View File

@ -1,3 +1,9 @@
2012-12-07 Sung W. Park (sung_)
* Added EVAS_GL_LINE_NO_OFFSET_HACK to turn off the line coordinate
fiddling that was originally in the gl backend code. The offset
fiddling caused issues with some ARM target GPU drivers.
2012-12-05 Gustavo Sverzut Barbieri (k-s)
* Removed DirectFB support (both ecore_directfb, evas and ecore_evas).

View File

@ -1,11 +1,18 @@
#include "evas_gl_private.h"
void
evas_gl_common_line_draw(Evas_Engine_GL_Context *gc, int x1, int y1, int x2, int y2)
{
RGBA_Draw_Context *dc;
int r, g, b, a;
int c, cx, cy, cw, ch;
static int offset_hack = -1;
if (offset_hack == -1) {
if (getenv("EVAS_GL_LINE_NO_OFFSET_HACK")) offset_hack = 0;
else offset_hack = 1;
}
dc = gc->dc;
if (dc->mul.use)
@ -27,20 +34,25 @@ evas_gl_common_line_draw(Evas_Engine_GL_Context *gc, int x1, int y1, int x2, int
cx = gc->dc->clip.x; cy = gc->dc->clip.y;
cw = gc->dc->clip.w; ch = gc->dc->clip.h;
//Increment pixels since the gl line origin position is slightly different
if (x1 == x2)
if (offset_hack)
{
if (gc->rot == 0)
x1++;
}
/* Increment pixels since the gl line origin position is slightly different
on some platform. Carsten did this hack.. doesn't remember exactly why but
it works most drivers. */
if (x1 == x2)
{
if (gc->rot == 0)
x1++;
}
if (y1 == y2)
{
if ((gc->rot == 90) || (gc->rot == 180))
y1++;
}
if (y1 == y2)
{
if ((gc->rot == 90) || (gc->rot == 180))
y1++;
}
x2++; y2++;
x2++; y2++;
}
evas_gl_common_context_line_push(gc, x1, y1, x2, y2,
c, cx, cy, cw, ch,