aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSung Park <sungwoo@gmail.com>2012-12-07 08:28:42 +0000
committerSung Park <sungwoo@gmail.com>2012-12-07 08:28:42 +0000
commitdbcdaa6b68a06468f2e32699f593aeb7a7a09f44 (patch)
tree7a34289effc9b088e5fc3d1dd9449618015ab7e5
parent21bb5db3e258f8964902e2d251dd813a2699836e (diff)
downloadefl-dbcdaa6b68a06468f2e32699f593aeb7a7a09f44.tar.gz
efl-dbcdaa6b68a06468f2e32699f593aeb7a7a09f44.tar.xz
efl-dbcdaa6b68a06468f2e32699f593aeb7a7a09f44.zip
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
-rw-r--r--ChangeLog6
-rw-r--r--src/modules/evas/engines/gl_common/evas_gl_line.c34
2 files changed, 29 insertions, 11 deletions
diff --git a/ChangeLog b/ChangeLog
index b2a72a0d3..814f1e2c3 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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).
diff --git a/src/modules/evas/engines/gl_common/evas_gl_line.c b/src/modules/evas/engines/gl_common/evas_gl_line.c
index c13fa255a..5848da6ee 100644
--- a/src/modules/evas/engines/gl_common/evas_gl_line.c
+++ b/src/modules/evas/engines/gl_common/evas_gl_line.c
@@ -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,