/* * Copyright (C) 2009 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #define LOG_TAG "EGLUtils" #include #include #include #include // ---------------------------------------------------------------------------- namespace android { // ---------------------------------------------------------------------------- status_t EGLUtils::selectConfigForPixelFormat( EGLDisplay dpy, EGLint const* attrs, PixelFormat format, EGLConfig* outConfig) { EGLint numConfigs = -1, n=0; if (outConfig == NULL) return BAD_VALUE; int err; PixelFormatInfo fbFormatInfo; if ((err = getPixelFormatInfo(PixelFormat(format), &fbFormatInfo)) < 0) { return err; } // Get all the "potential match" configs... if (eglGetConfigs(dpy, NULL, 0, &numConfigs) == EGL_FALSE) return BAD_VALUE; EGLConfig* const configs = (EGLConfig*)malloc(sizeof(EGLConfig)*numConfigs); if (eglChooseConfig(dpy, attrs, configs, numConfigs, &n) == EGL_FALSE) { free(configs); return BAD_VALUE; } const int fbSzA = fbFormatInfo.getSize(PixelFormatInfo::INDEX_ALPHA); const int fbSzR = fbFormatInfo.getSize(PixelFormatInfo::INDEX_RED); const int fbSzG = fbFormatInfo.getSize(PixelFormatInfo::INDEX_GREEN); const int fbSzB = fbFormatInfo.getSize(PixelFormatInfo::INDEX_BLUE); int i; EGLConfig config = NULL; for (i=0 ; iquery(window, NATIVE_WINDOW_FORMAT, &format)) < 0) { return err; } return selectConfigForPixelFormat(dpy, attrs, format, outConfig); } // ---------------------------------------------------------------------------- }; // namespace android // ----------------------------------------------------------------------------