<font color='midnightblue' size='4' face='Georgia, Times New Roman, Times, Serif'><font size="4">Dear Developers</font><br>
<br>
<font size="4">I tried to use Cairo with EGL and OpenGLESv2 backend </font><font size="4">after compilation the Cairo and writing an application </font><font size="4"><font size="4">with Cairo </font><font size="4"><font size="4">I can't see anything on screen</font> just display back light turned on and after few second turned off again.<br>
<br>
</font>may be my configuration and my program can help to solve my issue.<br>
<br>
my configuration is :<br>
</font><br>
<font size="4"> ./configure --prefix=/home/super/Desktop/ROOTFS/MY_ROOTFS/usr --host=${CROSS_COMPILE} CFLAGS="-I/home/super/Desktop/ROOTFS/MY_ROOTFS/usr/include/ -DLINUX -DEGL_API_FB" LIBS="-L/home/super/Desktop/ROOTFS/MY_ROOTFS/usr/lib/ -lz" --enable-xlib=no --enable-egl --enable-glesv2<br>
<br>
With above configuration Cairo compiled correctly.<br>
<br>
</font><font size="4">My program is :<br>
<br>
</font><br>
<font size="4"><font size="4">//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br>
<br>
</font>//============================================================================<br>
// Name        : test_app.cpp<br>
// Author      : Ali Sarlak<br>
// Version     :<br>
// Copyright   : GPL<br>
// Description : EGL+Cairo GLIB<br>
//============================================================================<br>
<br>
#include <iostream><br>
#include <stdio.h><br>
#include <cairo.h><br>
#include <egl.h><br>
#include <EGL/eglext.h><br>
#include <eglplatform.h><br>
#include <cairo-gl.h><br>
#include <stdlib.h><br>
<br>
using namespace std;<br>
<br>
int main()<br>
{<br>
    EGLContext eglContext;<br>
    EGLSurface eglSurface;<br>
    EGLBoolean resultB;<br>
<br>
    /* Get a display handle and initalize EGL */<br>
    EGLint major, minor;<br>
    EGLDisplay display = eglGetDisplay(EGL_DEFAULT_DISPLAY);<br>
<br>
    printf("egldisplay = %x\n", eglGetError());<br>
<br>
    resultB = eglInitialize(display, &major, &minor);<br>
<br>
    printf("eglInitialize = %d\n<Major(%d),Minor(%d)>\n", resultB, major,<br>
            minor);<br>
<br>
     EGLint attributes[] =<br>
    {<br>
    EGL_RENDERABLE_TYPE,<br>
    EGL_OPENGL_ES2_BIT,<br>
    EGL_RED_SIZE, 8,<br>
    EGL_GREEN_SIZE, 8,<br>
    EGL_BLUE_SIZE, 8,<br>
    EGL_DEPTH_SIZE, 1,<br>
    EGL_NONE };<br>
<br>
    EGLint numberConfigs = 0;<br>
    EGLConfig* matchingConfigs=NULL;<br>
<br>
   if (EGL_FALSE<br>
            == eglChooseConfig(display, attributes, NULL, 0, &numberConfigs))<br>
    {<br>
        printf("eglChooseConfig EROR\n");<br>
    }<br>
    if (numberConfigs == 0)<br>
    {<br>
        printf("eglChooseConfig EROR\n");<br>
    }<br>
<br>
    printf("numberConfigs = %d\n", numberConfigs);<br>
    /* Allocate some space to store list of matching configs... */<br>
    matchingConfigs = (EGLConfig*) malloc(numberConfigs * sizeof(EGLConfig));<br>
    /* ...and this time actually get the list (notice the 3rd argument is<br>
     * now the buffer to write matching EGLConfig's to)<br>
     */<br>
<br>
    if (EGL_FALSE<br>
            == eglChooseConfig(display, attributes, matchingConfigs,<br>
                    numberConfigs, &numberConfigs))<br>
    {<br>
        printf("eglChooseConfig EROR\n");<br>
    }<br>
<br>
    printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");<br>
<br>
    EGLint attribList[] =<br>
    {<br>
    EGL_WIDTH, 600,<br>
    EGL_HEIGHT, 600,<br>
    EGL_LARGEST_PBUFFER, EGL_TRUE,<br>
    EGL_NONE };<br>
<br>
    eglSurface = eglCreatePbufferSurface(display, matchingConfigs[0],<br>
            attribList);<br>
    if (eglSurface == EGL_NO_SURFACE)<br>
    {<br>
        printf("eglSurface = %x\n", eglGetError());<br>
    }<br>
<br>
    const EGLint attribListCtx[] =<br>
    {<br>
    // EGL_KHR_create_context is required<br>
            EGL_CONTEXT_CLIENT_VERSION, 2,<br>
            EGL_NONE };<br>
<br>
    eglContext = eglCreateContext(display, matchingConfigs[0], EGL_NO_CONTEXT,<br>
            attribListCtx);<br>
<br>
    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br>
    if (eglContext == EGL_NO_CONTEXT)<br>
    {<br>
        printf("eglContext = %x\n", eglGetError());<br>
    }<br>
<br>
    cairo_device_t* cdt = cairo_egl_device_create(display, eglContext);<br>
<br>
    printf("cdt = %x\n", eglGetError());<br>
<br>
    eglMakeCurrent(display, eglSurface, eglSurface, eglContext);<br>
<br>
    cairo_surface_t *surface = cairo_gl_surface_create_for_egl(cdt, eglSurface,<br>
            600, 600);<br>
<br>
//    EGL_SUCCESS<br>
    printf("surface = %x\n", eglGetError());<br>
<br>
    cairo_t *cr = cairo_create(surface);<br>
<br>
    //******************************************************************************************************************<br>
    cairo_set_source_rgb (cr, 0, 0, 0);<br>
<br>
    cairo_move_to (cr, 0, 0);<br>
    cairo_line_to (cr, 200, 200);<br>
    cairo_move_to (cr, 200, 0);<br>
    cairo_line_to (cr, 0, 200);<br>
    cairo_set_line_width (cr, 1);<br>
    cairo_stroke (cr);<br>
<br>
    cairo_rectangle (cr, 0, 0, 100,100);<br>
    cairo_set_source_rgba (cr, 1, 0, 0, 0.8);<br>
    cairo_fill (cr);<br>
<br>
    cairo_rectangle (cr, 0, 100, 100, 100);<br>
    cairo_set_source_rgba (cr, 0, 1, 0, 0.60);<br>
    cairo_fill (cr);<br>
<br>
    cairo_rectangle (cr, 100, 0, 100, 100);<br>
    cairo_set_source_rgba (cr, 0, 0, 1, 0.40);<br>
    cairo_fill (cr);<br>
<br>
    cairo_rectangle (cr, 100, 100, 100, 100);<br>
    cairo_set_source_rgba (cr, 1, 1, 0, 0.20);<br>
    cairo_fill (cr);<br>
    //******************************************************************************************************************<br>
<br>
//    cairo_surface_flush(surface);<br>
<br>
//    if (eglWaitClient() == EGL_TRUE)<br>
//    {<br>
//        printf("EGL GET FINISHED!\n");<br>
//    }<br>
<br>
    //to check that cairo can make the photo from the surface it's OK and png created<br>
    cairo_status_t s = cairo_surface_write_to_png(surface, "surface.png");<br>
    //it is a photo that made by cairo [OK]<br>
<br>
    cairo_destroy(cr);<br>
<br>
    if (CAIRO_STATUS_SUCCESS == s)<br>
    {<br>
        printf("Status = OK \n");<br>
    }<br>
    else<br>
    {<br>
        printf("Status = ERROR <ERROR_CODE->%d>\n", s);<br>
    }<br>
<br>
    if(matchingConfigs!=NULL)<br>
    {<br>
        free(matchingConfigs);<br>
        matchingConfigs=NULL;<br>
    }<br>
<br>
    cairo_surface_destroy(surface);<br>
    printf("END!\n");<br>
    return 0;<br>
}<br>
<br>
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br>
<br>
Compiler prefix is :<br>
</font><font size="4"><font size="4"><font size="4">arm-none-linux-gnueabi<br>
<br>
</font></font>Target Device is :<br>
IMX6Q<br>
<br>
Is it possible that there is a bug here in Cairo?or in my configuration or in my application?<br>
Of course I checked my application and replace the Cairo function with </font><font size="4"><font size="4">OpenGLES to saw that my EGL's settings were true </font>and OpenGLES works, I saw something on my screen; but with Cairo no?<br>
<br>
Best Regards:<br>
Ali</font><br>

<div style="font-family:arial,helvetica;font-size:10pt;color:black">
<div id="AOLMsgPart_1_e130344f-1c38-4614-9bdd-56d0ca306ed7" style="margin: 0px;font-family: Tahoma, Verdana, Arial, Sans-Serif;font-size: 12px;color: #000;background-color: #fff;">
</div>

 <!-- end of AOLMsgPart_1_e130344f-1c38-4614-9bdd-56d0ca306ed7 -->
</div>

</font>