Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2cdd8cf7 authored by Android (Google) Code Review's avatar Android (Google) Code Review
Browse files

Merge changes I82c78b83,I54f72d9d into eclair

* changes:
  Don't ask for pbuffer support, because we don't use any pbuffers.
  Print out EGL configuration info for the config we've chosen.
parents 73e23fff 38d3c2a8
Loading
Loading
Loading
Loading
+57 −53
Original line number Original line Diff line number Diff line
@@ -175,24 +175,58 @@ void renderFrame() {
    checkGlError("glDrawArrays");
    checkGlError("glDrawArrays");
}
}


#if 0
void printEGLConfiguration(EGLDisplay dpy, EGLConfig config) {


void PrintEGLConfig(EGLDisplay dpy, EGLConfig config) {
#define X(VAL) {VAL, #VAL}
    int attrib[] = {EGL_RED_SIZE, EGL_GREEN_SIZE, EGL_BLUE_SIZE, EGL_ALPHA_SIZE,
    struct {EGLint attribute; const char* name;} names[] = {
            EGL_DEPTH_SIZE, EGL_SURFACE_TYPE, EGL_RENDERABLE_TYPE
    X(EGL_BUFFER_SIZE),
    X(EGL_ALPHA_SIZE),
    X(EGL_BLUE_SIZE),
    X(EGL_GREEN_SIZE),
    X(EGL_RED_SIZE),
    X(EGL_DEPTH_SIZE),
    X(EGL_STENCIL_SIZE),
    X(EGL_CONFIG_CAVEAT),
    X(EGL_CONFIG_ID),
    X(EGL_LEVEL),
    X(EGL_MAX_PBUFFER_HEIGHT),
    X(EGL_MAX_PBUFFER_PIXELS),
    X(EGL_MAX_PBUFFER_WIDTH),
    X(EGL_NATIVE_RENDERABLE),
    X(EGL_NATIVE_VISUAL_ID),
    X(EGL_NATIVE_VISUAL_TYPE),
    X(EGL_PRESERVED_RESOURCES),
    X(EGL_SAMPLES),
    X(EGL_SAMPLE_BUFFERS),
    X(EGL_SURFACE_TYPE),
    X(EGL_TRANSPARENT_TYPE),
    X(EGL_TRANSPARENT_RED_VALUE),
    X(EGL_TRANSPARENT_GREEN_VALUE),
    X(EGL_TRANSPARENT_BLUE_VALUE),
    X(EGL_BIND_TO_TEXTURE_RGB),
    X(EGL_BIND_TO_TEXTURE_RGBA),
    X(EGL_MIN_SWAP_INTERVAL),
    X(EGL_MAX_SWAP_INTERVAL),
    X(EGL_LUMINANCE_SIZE),
    X(EGL_ALPHA_MASK_SIZE),
    X(EGL_COLOR_BUFFER_TYPE),
    X(EGL_RENDERABLE_TYPE),
    X(EGL_CONFORMANT),
   };
   };
    for(size_t i = 0; i < sizeof(attrib)/sizeof(attrib[0]); i++) {
#undef X
        int value = 0;

        int a = attrib[i];
    for (size_t j = 0; j < sizeof(names) / sizeof(names[0]); j++) {
        if (eglGetConfigAttrib(dpy, config, a, &value)) {
        EGLint value = -1;
            printf(" 0x%04x: %d", a, value);
        EGLint returnVal = eglGetConfigAttrib(dpy, config, names[j].attribute, &value);
        EGLint error = eglGetError();
        if (returnVal && error == EGL_SUCCESS) {
            printf(" %s: ", names[j].name);
            printf("%d (0x%x)", value, value);
        }
        }
    }
    }
    printf("\n");
    printf("\n");
}
}


#endif

int printEGLConfigurations(EGLDisplay dpy) {
int printEGLConfigurations(EGLDisplay dpy) {
    EGLint numConfig = 0;
    EGLint numConfig = 0;
    EGLint returnVal = eglGetConfigs(dpy, NULL, 0, &numConfig);
    EGLint returnVal = eglGetConfigs(dpy, NULL, 0, &numConfig);
@@ -209,53 +243,16 @@ int printEGLConfigurations(EGLDisplay dpy) {
        return false;
        return false;
    }
    }


    returnVal = eglGetConfigs(dpy, NULL, 0, &numConfig);
    returnVal = eglGetConfigs(dpy, configs, numConfig, &numConfig);
    checkEglError("eglGetConfigs", returnVal);
    checkEglError("eglGetConfigs", returnVal);
    if (!returnVal) {
    if (!returnVal) {
        free(configs);
        free(configs);
        return false;
        return false;
    }
    }


#define X(VAL) {VAL, #VAL}
    struct {EGLint attribute; const char* name;} names[] = {
    X(EGL_BUFFER_SIZE),
    X(EGL_RED_SIZE),
    X(EGL_GREEN_SIZE),
    X(EGL_BLUE_SIZE),
    X(EGL_ALPHA_SIZE),
    X(EGL_CONFIG_CAVEAT),
    X(EGL_CONFIG_ID),
    X(EGL_DEPTH_SIZE),
    X(EGL_LEVEL),
    X(EGL_MAX_PBUFFER_WIDTH),
    X(EGL_MAX_PBUFFER_HEIGHT),
    X(EGL_MAX_PBUFFER_PIXELS),
    X(EGL_NATIVE_RENDERABLE),
    X(EGL_NATIVE_VISUAL_ID),
    X(EGL_NATIVE_VISUAL_TYPE),
    X(EGL_PRESERVED_RESOURCES),
    X(EGL_SAMPLE_BUFFERS),
    X(EGL_SAMPLES),
    // X(EGL_STENCIL_BITS),
    X(EGL_SURFACE_TYPE),
    X(EGL_TRANSPARENT_TYPE),
    // X(EGL_TRANSPARENT_RED),
    // X(EGL_TRANSPARENT_GREEN),
    // X(EGL_TRANSPARENT_BLUE)
    };
#undef X

    for(int i = 0; i < numConfig; i++) {
    for(int i = 0; i < numConfig; i++) {
        printf("Configuration %d\n", i);
        printf("Configuration %d\n", i);
        EGLConfig config = configs[i];
        printEGLConfiguration(dpy, configs[i]);
        for (int j = 0; j < sizeof(names) / sizeof(names[0]); j++) {
            EGLint value = -1;
            returnVal = eglGetConfigAttrib(dpy, config, names[j].attribute, &value); 
            if (returnVal) {
                printf(" %s: %d (0x%x)", names[j].name, value, value);
            }
        }
        printf("\n");
    }
    }


    free(configs);
    free(configs);
@@ -268,7 +265,7 @@ int main(int argc, char** argv) {


    EGLint context_attribs[] = { EGL_CONTEXT_CLIENT_VERSION, 2, EGL_NONE };
    EGLint context_attribs[] = { EGL_CONTEXT_CLIENT_VERSION, 2, EGL_NONE };
    EGLint s_configAttribs[] = {
    EGLint s_configAttribs[] = {
            EGL_SURFACE_TYPE, EGL_PBUFFER_BIT|EGL_WINDOW_BIT,
            EGL_SURFACE_TYPE, EGL_WINDOW_BIT,
            EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT,
            EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT,
            EGL_NONE };
            EGL_NONE };
    EGLint majorVersion;
    EGLint majorVersion;
@@ -300,6 +297,8 @@ int main(int argc, char** argv) {
        return 0;
        return 0;
    }
    }


    checkEglError("printEGLConfigurations");

    EGLNativeWindowType window = android_createDisplaySurface();
    EGLNativeWindowType window = android_createDisplaySurface();
    returnValue = EGLUtils::selectConfigForNativeWindow(dpy, s_configAttribs, window, &myConfig);
    returnValue = EGLUtils::selectConfigForNativeWindow(dpy, s_configAttribs, window, &myConfig);
    if (returnValue) {
    if (returnValue) {
@@ -307,6 +306,11 @@ int main(int argc, char** argv) {
        return 0;
        return 0;
    }
    }


    checkEglError("EGLUtils::selectConfigForNativeWindow");

    printf("Chose this configuration:\n");
    printEGLConfiguration(dpy, myConfig);

    surface = eglCreateWindowSurface(dpy, myConfig, window, NULL);
    surface = eglCreateWindowSurface(dpy, myConfig, window, NULL);
    checkEglError("eglCreateWindowSurface");
    checkEglError("eglCreateWindowSurface");
    if (surface == EGL_NO_SURFACE) {
    if (surface == EGL_NO_SURFACE) {
+1 −1
Original line number Original line Diff line number Diff line
@@ -123,7 +123,7 @@ int init_gl_surface(void)
    EGLConfig myConfig = {0};
    EGLConfig myConfig = {0};
    EGLint attrib[] =
    EGLint attrib[] =
    {
    {
            EGL_SURFACE_TYPE, EGL_PBUFFER_BIT|EGL_WINDOW_BIT,
            EGL_SURFACE_TYPE, EGL_WINDOW_BIT,
            EGL_DEPTH_SIZE,     16,
            EGL_DEPTH_SIZE,     16,
            EGL_NONE
            EGL_NONE
    };
    };