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

Commit 579c90b3 authored by Mathias Agopian's avatar Mathias Agopian Committed by Android (Google) Code Review
Browse files

Merge changes I4d4580e8,I47b21293,I0767ac2a

* changes:
  fix test-opengl-swapinterval
  revert last change to EGLUtils::selectConfigForPixelFormat
  boot animation doesn't use EGLUtils anymore
parents 97f8767e 7dddeac9
Loading
Loading
Loading
Loading
+19 −39
Original line number Diff line number Diff line
@@ -24,8 +24,6 @@

#include <EGL/egl.h>

#include <system/graphics.h>

#include <private/ui/android_natives_priv.h>

// ----------------------------------------------------------------------------
@@ -69,50 +67,32 @@ status_t EGLUtils::selectConfigForPixelFormat(
        return BAD_VALUE;
    
    // Get all the "potential match" configs...
    if (eglChooseConfig(dpy, attrs, 0, 0, &numConfigs) == EGL_FALSE)
    if (eglGetConfigs(dpy, NULL, 0, &numConfigs) == EGL_FALSE)
        return BAD_VALUE;

    if (numConfigs) {
        EGLConfig* const configs = new EGLConfig[numConfigs];
    EGLConfig* const configs = (EGLConfig*)malloc(sizeof(EGLConfig)*numConfigs);
    if (eglChooseConfig(dpy, attrs, configs, numConfigs, &n) == EGL_FALSE) {
            delete [] configs;
        free(configs);
        return BAD_VALUE;
    }
    
        bool hasAlpha = false;
        switch (format) {
            case HAL_PIXEL_FORMAT_RGBA_8888:
            case HAL_PIXEL_FORMAT_BGRA_8888:
            case HAL_PIXEL_FORMAT_RGBA_5551:
            case HAL_PIXEL_FORMAT_RGBA_4444:
                hasAlpha = true;
                break;
        }

        // The first config is guaranteed to over-satisfy the constraints
        EGLConfig config = configs[0];

        // go through the list and skip configs that over-satisfy our needs
    int i;
    EGLConfig config = NULL;
    for (i=0 ; i<n ; i++) {
            if (!hasAlpha) {
                EGLint alphaSize;
                eglGetConfigAttrib(dpy, configs[i], EGL_ALPHA_SIZE, &alphaSize);
                if (alphaSize > 0) {
                    continue;
                }
            }
        EGLint nativeVisualId = 0;
        eglGetConfigAttrib(dpy, configs[i], EGL_NATIVE_VISUAL_ID, &nativeVisualId);
        if (nativeVisualId>0 && format == nativeVisualId) {
            config = configs[i];
            break;
        }
    }

        delete [] configs;
    free(configs);
    
    if (i<n) {
        *outConfig = config;
        return NO_ERROR;
    }
    }

    return NAME_NOT_FOUND;
}
+10 −6
Original line number Diff line number Diff line
@@ -48,31 +48,35 @@ int main(int argc, char** argv)
    EGLNativeWindowType window = android_createDisplaySurface();

    dpy = eglGetDisplay(EGL_DEFAULT_DISPLAY);
    eglInitialize(dpy, 0 ,0) ;//&majorVersion, &minorVersion);
    eglInitialize(dpy, &majorVersion, &minorVersion);
    eglGetConfigs(dpy, NULL, 0, &numConfigs);
    printf("# configs = %d\n", numConfigs);

    status_t err = EGLUtils::selectConfigForNativeWindow(
            dpy, configAttribs, window, &config);
    if (err) {
        fprintf(stderr, "couldn't find an EGLConfig matching the screen format\n");
        fprintf(stderr, "error: %s", EGLUtils::strerror(eglGetError()));
        eglTerminate(dpy);
        return 0;
    }

    EGLint r,g,b,a;
    EGLint r,g,b,a, vid;
    eglGetConfigAttrib(dpy, config, EGL_RED_SIZE,   &r);
    eglGetConfigAttrib(dpy, config, EGL_GREEN_SIZE, &g);
    eglGetConfigAttrib(dpy, config, EGL_BLUE_SIZE,  &b);
    eglGetConfigAttrib(dpy, config, EGL_ALPHA_SIZE, &a);
    eglGetConfigAttrib(dpy, config, EGL_NATIVE_VISUAL_ID, &vid);

    surface = eglCreateWindowSurface(dpy, config, window, NULL);
    if (surface == EGL_NO_SURFACE) {
        EGLint err = eglGetError();
        fprintf(stderr, "%s, config=%p, format = %d-%d-%d-%d\n",
                EGLUtils::strerror(err), config, r,g,b,a);
        fprintf(stderr, "error: %s, config=%p, format = %d-%d-%d-%d, visual-id = %d\n",
                EGLUtils::strerror(err), config, r,g,b,a, vid);
        eglTerminate(dpy);
        return 0;
    } else {
        printf("config=%p, format = %d-%d-%d-%d\n", config, r,g,b,a);
        printf("config=%p, format = %d-%d-%d-%d, visual-id = %d\n",
                config, r,g,b,a, vid);
    }

    context = eglCreateContext(dpy, config, NULL, NULL);