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

Commit b0f9e355 authored by android-build-team Robot's avatar android-build-team Robot Committed by android-build-merger
Browse files

Merge "Work around CTS failure in eglCreateImageKHR." into pi-dev

am: 6318d31d

Change-Id: Ibd0cf6bb6c1aae9ae84ecca71c8b45056ed94233
parents de5854ba 6318d31d
Loading
Loading
Loading
Loading
+19 −1
Original line number Diff line number Diff line
@@ -1733,13 +1733,31 @@ EGLImageKHR eglCreateImageKHR(EGLDisplay dpy, EGLContext ctx, EGLenum target,
    ContextRef _c(dp.get(), ctx);
    egl_context_t * const c = _c.get();

    // Temporary hack: eglImageCreateKHR should accept EGL_GL_COLORSPACE_LINEAR_KHR,
    // EGL_GL_COLORSPACE_SRGB_KHR and EGL_GL_COLORSPACE_DEFAULT_EXT if
    // EGL_EXT_image_gl_colorspace is supported, but some drivers don't like
    // the DEFAULT value and generate an error.
    std::vector<EGLint> strippedAttribList;
    for (const EGLint *attr = attrib_list; attr && attr[0] != EGL_NONE; attr += 2) {
        if (attr[0] == EGL_GL_COLORSPACE_KHR &&
            dp->haveExtension("EGL_EXT_image_gl_colorspace")) {
            if (attr[1] != EGL_GL_COLORSPACE_LINEAR_KHR &&
                attr[1] != EGL_GL_COLORSPACE_SRGB_KHR) {
                continue;
            }
        }
        strippedAttribList.push_back(attr[0]);
        strippedAttribList.push_back(attr[1]);
    }
    strippedAttribList.push_back(EGL_NONE);

    EGLImageKHR result = EGL_NO_IMAGE_KHR;
    egl_connection_t* const cnx = &gEGLImpl;
    if (cnx->dso && cnx->egl.eglCreateImageKHR) {
        result = cnx->egl.eglCreateImageKHR(
                dp->disp.dpy,
                c ? c->context : EGL_NO_CONTEXT,
                target, buffer, attrib_list);
                target, buffer, strippedAttribList.data());
    }
    return result;
}