svg->h == obj->cur->geometry.h))
{
evas_cache_svg_entry_del(svg);
- svg = evas_cache_svg_find(svg->file, svg->src_vg, svg->dest_vg,
+ svg = evas_cache_svg_find(svg->file, svg->src_vg, svg->dest_vg,
svg->key_frame, obj->cur->geometry.w, obj->cur->geometry.h);
vd->svg = svg;
}
evas_common_draw_context_set_render_op(ct, _EVAS_RENDER_COPY);
evas_common_draw_context_set_color(ct, 255, 255, 255, 255);
obj->layer->evas->engine.func->ector_begin(output, ct,
- ector, buffer,
+ ector, buffer, EINA_TRUE,
0, 0,
+ obj->cur->geometry.w, obj->cur->geometry.h,
do_async);
_evas_vg_render(obj, vd,
output, ct, buffer,
if (!vd->backing_store)
{
- obj->layer->evas->engine.func->ector_begin(output, context, ector, surface,
+ obj->layer->evas->engine.func->ector_begin(output, context, ector, surface, EINA_FALSE,
obj->cur->geometry.x + x, obj->cur->geometry.y + y,
+ obj->cur->geometry.w, obj->cur->geometry.h,
do_async);
_evas_vg_render(obj, vd, output, context, surface, vd->root, NULL, do_async);
obj->layer->evas->engine.func->ector_end(output, context, ector, surface, do_async);
{
if (vd->content_changed)
{
- obj->layer->evas->engine.func->ector_begin(output, context, ector, vd->backing_store, 0, 0, do_async);
+ obj->layer->evas->engine.func->ector_begin(output, context, ector, vd->backing_store, EINA_TRUE,
+ 0, 0,
+ obj->cur->geometry.w, obj->cur->geometry.h,
+ do_async);
_evas_vg_render(obj, vd, output, context, vd->backing_store, vd->root, NULL,do_async);
obj->layer->evas->engine.func->image_dirty_region(obj->layer->evas->engine.data.output, vd->backing_store,
0, 0, 0, 0);
int depth_bits;
int stencil_bits;
- // Data
+ // Data
void *buffer;
Render_Engine_GL_Context *current_ctx;
EVAS_COLORSPACE_ARGB8888);
}
else
- im2 = evas_cache_image_data(evas_common_image_cache_get(),
- im->w, im->h,
+ im2 = evas_cache_image_data(evas_common_image_cache_get(),
+ im->w, im->h,
NULL, 1,
EVAS_COLORSPACE_ARGB8888);
if (im->references > 1)
return surface;
}
#endif
- surface = evas_cache_image_copied_data(evas_common_image_cache_get(),
- w, h, NULL, alpha,
+ surface = evas_cache_image_copied_data(evas_common_image_cache_get(),
+ w, h, NULL, alpha,
EVAS_COLORSPACE_ARGB8888);
if (!surface) return NULL;
evas_cache_image_pixels(surface);
eng_image_load_error_get(void *data EINA_UNUSED, void *image)
{
RGBA_Image *im;
-
+
if (!image) return EVAS_LOAD_ERROR_NONE;
im = image;
return im->cache_entry.load_error;
sfc->depth_bits = 0;
break;
}
-
+
// Stencil Bits
switch (cfg->stencil_bits)
{
// Call MakeCurrent
- ret = _sym_OSMesaMakeCurrent(ctx->context, sfc->buffer, GL_UNSIGNED_BYTE,
+ ret = _sym_OSMesaMakeCurrent(ctx->context, sfc->buffer, GL_UNSIGNED_BYTE,
sfc->w, sfc->h);
if (ret == GL_FALSE)
ns->type = EVAS_NATIVE_SURFACE_EVASGL;
ns->version = EVAS_NATIVE_SURFACE_VERSION;
ns->data.evasgl.surface = sfc->buffer;
-
+
return 1;
#else
(void) surface;
static Ector_Surface_Cache *surface_cache = NULL;
-static void
+static void
_ector_surface_cache_init(void)
{
if (!surface_cache)
}
}
-static void
+static void
_ector_surface_cache_dump(void)
{
Ector_Surface_Data *data;
_ector_surface_cache_init();
surface_data = eina_hash_find(surface_cache->surface_hash, &key);
- if (surface_data)
+ if (surface_data)
{
EINA_LIST_FOREACH(surface_cache->lru_list, l, lru_data)
{
static void
-eng_ector_begin(void *data EINA_UNUSED, void *context EINA_UNUSED, Ector_Surface *ector, void *surface, int x, int y, Eina_Bool do_async)
+eng_ector_begin(void *data EINA_UNUSED, void *context EINA_UNUSED, Ector_Surface *ector,
+ void *surface, Eina_Bool surface_clear EINA_UNUSED,
+ int x, int y, int width EINA_UNUSED, int height EINA_UNUSED,
+ Eina_Bool do_async EINA_UNUSED)
{
if (do_async)
{
// Wrapped GL APIs to handle desktop compatibility
// Stripping precision code from GLES shader for desktop compatibility
-// Code adopted from Meego GL code. Temporary Fix.
+// Code adopted from Meego GL code. Temporary Fix.
static const char *
opengl_strtok(const char *s, int *n, char **saveptr, char *prevbuf)
{
if (prevbuf) free(prevbuf);
- if (s)
+ if (s)
*saveptr = (char *)s;
- else
+ else
{
if (!(*saveptr) || !(*n))
return NULL;
s = *saveptr;
}
- for (; *n && strchr(delim, *s); s++, (*n)--)
+ for (; *n && strchr(delim, *s); s++, (*n)--)
{
- if (*s == '/' && *n > 1)
+ if (*s == '/' && *n > 1)
{
- if (s[1] == '/')
+ if (s[1] == '/')
{
- do
+ do
{
s++, (*n)--;
- }
+ }
while (*n > 1 && s[1] != '\n' && s[1] != '\r');
- }
- else if (s[1] == '*')
+ }
+ else if (s[1] == '*')
{
- do
+ do
{
s++, (*n)--;
- }
+ }
while (*n > 2 && (s[1] != '*' || s[2] != '/'));
s++, (*n)--;
}
ret = malloc(retlen + 1);
p = ret;
- while (retlen > 0)
+ while (retlen > 0)
{
- if (*start == '/' && retlen > 1)
+ if (*start == '/' && retlen > 1)
{
- if (start[1] == '/')
+ if (start[1] == '/')
{
- do
+ do
{
start++, retlen--;
- }
+ }
while (retlen > 1 && start[1] != '\n' && start[1] != '\r');
start++, retlen--;
continue;
- }
- else if (start[1] == '*')
+ }
+ else if (start[1] == '*')
{
- do
+ do
{
start++, retlen--;
- }
+ }
while (retlen > 2 && (start[1] != '*' || start[2] != '/'));
start += 3, retlen -= 3;
continue;
*p = 0;
return ret;
-}
+}
static char *
patch_gles_shader(const char *source, int length, int *patched_len)
if (!patched) return NULL;
p = (char *)opengl_strtok(source, &length, &saveptr, NULL);
- for (; p; p = (char *)opengl_strtok(0, &length, &saveptr, p))
+ for (; p; p = (char *)opengl_strtok(0, &length, &saveptr, p))
{
- if (!strncmp(p, "lowp", 4) || !strncmp(p, "mediump", 7) || !strncmp(p, "highp", 5))
+ if (!strncmp(p, "lowp", 4) || !strncmp(p, "mediump", 7) || !strncmp(p, "highp", 5))
{
continue;
- }
- else if (!strncmp(p, "precision", 9))
+ }
+ else if (!strncmp(p, "precision", 9))
{
while ((p = (char *)opengl_strtok(0, &length, &saveptr, p)) && !strchr(p, ';'));
- }
- else
+ }
+ else
{
- if (!strncmp(p, "gl_MaxVertexUniformVectors", 26))
+ if (!strncmp(p, "gl_MaxVertexUniformVectors", 26))
{
- free(p);
+ free(p);
p = strdup("(gl_MaxVertexUniformComponents / 4)");
- }
- else if (!strncmp(p, "gl_MaxFragmentUniformVectors", 28))
+ }
+ else if (!strncmp(p, "gl_MaxFragmentUniformVectors", 28))
{
free(p);
p = strdup("(gl_MaxFragmentUniformComponents / 4)");
- }
- else if (!strncmp(p, "gl_MaxVaryingVectors", 20))
+ }
+ else if (!strncmp(p, "gl_MaxVaryingVectors", 20))
{
free(p);
p = strdup("(gl_MaxVaryingFloats / 4)");
}
int new_len = strlen(p);
- if (*patched_len + new_len > patched_size)
+ if (*patched_len + new_len > patched_size)
{
char *tmp;
memcpy(patched + *patched_len, p, new_len);
*patched_len += new_len;
- }
+ }
}
patched[*patched_len] = 0;
/* check that we don't leave dummy preprocessor lines */
- for (sp = patched; *sp;)
+ for (sp = patched; *sp;)
{
for (; *sp == ' ' || *sp == '\t'; sp++);
- if (!strncmp(sp, "#define", 7))
+ if (!strncmp(sp, "#define", 7))
{
for (p = sp + 7; *p == ' ' || *p == '\t'; p++);
- if (*p == '\n' || *p == '\r' || *p == '/')
+ if (*p == '\n' || *p == '\r' || *p == '/')
{
memset(sp, 0x20, 7);
}
memset(s, 0, count * sizeof(char*));
memset(l, 0, count * sizeof(GLint));
- for (i = 0; i < count; ++i)
+ for (i = 0; i < count; ++i)
{
- if (length)
+ if (length)
{
len = length[i];
- if (len < 0)
+ if (len < 0)
len = string[i] ? strlen(string[i]) : 0;
}
else
len = string[i] ? strlen(string[i]) : 0;
- if (string[i])
+ if (string[i])
{
s[i] = patch_gles_shader(string[i], len, &l[i]);
- if (!s[i])
+ if (!s[i])
{
while(i)
free(s[--i]);
DBG("Patching Shader Failed.");
return;
}
- }
- else
+ }
+ else
{
s[i] = NULL;
l[i] = 0;
ORD(glCheckFramebufferStatus);
ORD(glClear);
ORD(glClearColor);
- ORD(glClearDepthf);
+ ORD(glClearDepthf);
ORD(glClearStencil);
ORD(glColorMask);
ORD(glCompileShader);
ORD(glDeleteTextures);
ORD(glDepthFunc);
ORD(glDepthMask);
- ORD(glDepthRangef);
+ ORD(glDepthRangef);
ORD(glDetachShader);
ORD(glDisable);
ORD(glDisableVertexAttribArray);
ORD(glGetRenderbufferParameteriv);
ORD(glGetShaderiv);
ORD(glGetShaderInfoLog);
- ORD(glGetShaderPrecisionFormat);
+ ORD(glGetShaderPrecisionFormat);
ORD(glGetShaderSource);
ORD(glGetTexParameterfv);
ORD(glGetTexParameteriv);
ORD(glPixelStorei);
ORD(glPolygonOffset);
ORD(glReadPixels);
- ORD(glReleaseShaderCompiler);
+ ORD(glReleaseShaderCompiler);
ORD(glRenderbufferStorage);
ORD(glSampleCoverage);
ORD(glScissor);
- ORD(glShaderBinary);
+ ORD(glShaderBinary);
ORD(glShaderSource);
ORD(glStencilFunc);
ORD(glStencilFuncSeparate);
// Current ctx & sfc stuff
if (!_tls_check()) return 0;
- // dlopen OSMesa
+ // dlopen OSMesa
gl_lib_handle = dlopen("libOSMesa.so.9", RTLD_NOW);
if (!gl_lib_handle) gl_lib_handle = dlopen("libOSMesa.so.8", RTLD_NOW);
if (!gl_lib_handle) gl_lib_handle = dlopen("libOSMesa.so.7", RTLD_NOW);