Loading libs/surfaceflinger/DisplayHardware/DisplayHardware.cpp +15 −36 Original line number Original line Diff line number Diff line Loading @@ -42,28 +42,6 @@ using namespace android; using namespace android; static __attribute__((noinline)) const char *egl_strerror(EGLint err) { switch (err){ case EGL_SUCCESS: return "EGL_SUCCESS"; case EGL_NOT_INITIALIZED: return "EGL_NOT_INITIALIZED"; case EGL_BAD_ACCESS: return "EGL_BAD_ACCESS"; case EGL_BAD_ALLOC: return "EGL_BAD_ALLOC"; case EGL_BAD_ATTRIBUTE: return "EGL_BAD_ATTRIBUTE"; case EGL_BAD_CONFIG: return "EGL_BAD_CONFIG"; case EGL_BAD_CONTEXT: return "EGL_BAD_CONTEXT"; case EGL_BAD_CURRENT_SURFACE: return "EGL_BAD_CURRENT_SURFACE"; case EGL_BAD_DISPLAY: return "EGL_BAD_DISPLAY"; case EGL_BAD_MATCH: return "EGL_BAD_MATCH"; case EGL_BAD_NATIVE_PIXMAP: return "EGL_BAD_NATIVE_PIXMAP"; case EGL_BAD_NATIVE_WINDOW: return "EGL_BAD_NATIVE_WINDOW"; case EGL_BAD_PARAMETER: return "EGL_BAD_PARAMETER"; case EGL_BAD_SURFACE: return "EGL_BAD_SURFACE"; case EGL_CONTEXT_LOST: return "EGL_CONTEXT_LOST"; default: return "UNKNOWN"; } } static __attribute__((noinline)) static __attribute__((noinline)) void checkGLErrors() void checkGLErrors() Loading @@ -80,7 +58,7 @@ void checkEGLErrors(const char* token) // GLESonGL seems to be returning 0 when there is no errors? // GLESonGL seems to be returning 0 when there is no errors? if (error && error != EGL_SUCCESS) if (error && error != EGL_SUCCESS) LOGE("%s error 0x%04x (%s)", LOGE("%s error 0x%04x (%s)", token, int(error), egl_strerror(error)); token, int(error), EGLUtils::strerror(error)); } } Loading Loading @@ -112,28 +90,22 @@ PixelFormat DisplayHardware::getFormat() const { return mFormat; } void DisplayHardware::init(uint32_t dpy) void DisplayHardware::init(uint32_t dpy) { { hw_module_t const* module; mNativeWindow = new FramebufferNativeWindow(); mNativeWindow = new FramebufferNativeWindow(); framebuffer_device_t const * fbDev = mNativeWindow->getDevice(); mOverlayEngine = NULL; mOverlayEngine = NULL; hw_module_t const* module; if (hw_get_module(OVERLAY_HARDWARE_MODULE_ID, &module) == 0) { if (hw_get_module(OVERLAY_HARDWARE_MODULE_ID, &module) == 0) { overlay_control_open(module, &mOverlayEngine); overlay_control_open(module, &mOverlayEngine); } } framebuffer_device_t const * fbDev = mNativeWindow->getDevice(); PixelFormatInfo fbFormatInfo; getPixelFormatInfo(PixelFormat(fbDev->format), &fbFormatInfo); // initialize EGL // initialize EGL const EGLint attribs[] = { const EGLint attribs[] = { EGL_BUFFER_SIZE, fbFormatInfo.bitsPerPixel, EGL_SURFACE_TYPE, EGL_WINDOW_BIT, EGL_DEPTH_SIZE, 0, EGL_NONE EGL_NONE }; }; EGLint w, h, dummy; EGLint w, h, dummy; EGLint numConfigs=0, n=0; EGLint numConfigs=0; EGLSurface surface; EGLSurface surface; EGLContext context; EGLContext context; mFlags = 0; mFlags = 0; Loading @@ -146,10 +118,16 @@ void DisplayHardware::init(uint32_t dpy) eglGetConfigs(display, NULL, 0, &numConfigs); eglGetConfigs(display, NULL, 0, &numConfigs); EGLConfig config; EGLConfig config; status_t err = EGLUtils::selectConfigForPixelFormat( status_t err = EGLUtils::selectConfigForNativeWindow( display, attribs, fbDev->format, &config); display, attribs, mNativeWindow.get(), &config); LOGE_IF(err, "couldn't find an EGLConfig matching the screen format"); LOGE_IF(err, "couldn't find an EGLConfig matching the screen format"); EGLint r,g,b,a; eglGetConfigAttrib(display, config, EGL_RED_SIZE, &r); eglGetConfigAttrib(display, config, EGL_GREEN_SIZE, &g); eglGetConfigAttrib(display, config, EGL_BLUE_SIZE, &b); eglGetConfigAttrib(display, config, EGL_ALPHA_SIZE, &a); /* /* * Gather EGL extensions * Gather EGL extensions */ */ Loading @@ -163,6 +141,7 @@ void DisplayHardware::init(uint32_t dpy) LOGI("version : %s", eglQueryString(display, EGL_VERSION)); LOGI("version : %s", eglQueryString(display, EGL_VERSION)); LOGI("extensions: %s", egl_extensions); LOGI("extensions: %s", egl_extensions); LOGI("Client API: %s", eglQueryString(display, EGL_CLIENT_APIS)?:"Not Supported"); LOGI("Client API: %s", eglQueryString(display, EGL_CLIENT_APIS)?:"Not Supported"); LOGI("EGLSurface: %d-%d-%d-%d, config=%p", r, g, b, a, config); if (mNativeWindow->isUpdateOnDemand()) { if (mNativeWindow->isUpdateOnDemand()) { Loading opengl/tests/swapinterval/swapinterval.cpp +101 −85 Original line number Original line Diff line number Diff line Loading @@ -15,8 +15,6 @@ ** limitations under the License. ** limitations under the License. */ */ #define LOG_TAG "fillrate" #include <stdlib.h> #include <stdlib.h> #include <stdio.h> #include <stdio.h> Loading @@ -33,7 +31,7 @@ using namespace android; int main(int argc, char** argv) int main(int argc, char** argv) { { EGLint configAttribs[] = { EGLint configAttribs[] = { EGL_DEPTH_SIZE, 0, EGL_SURFACE_TYPE, EGL_WINDOW_BIT, EGL_NONE EGL_NONE }; }; Loading @@ -41,12 +39,15 @@ int main(int argc, char** argv) EGLint minorVersion; EGLint minorVersion; EGLContext context; EGLContext context; EGLConfig config; EGLConfig config; EGLint numConfigs=0; EGLSurface surface; EGLSurface surface; EGLint w, h; EGLint w, h; EGLDisplay dpy; EGLDisplay dpy; dpy = eglGetDisplay(EGL_DEFAULT_DISPLAY); dpy = eglGetDisplay(EGL_DEFAULT_DISPLAY); eglInitialize(dpy, &majorVersion, &minorVersion); eglInitialize(dpy, 0 ,0) ;//&majorVersion, &minorVersion); eglGetConfigs(dpy, NULL, 0, &numConfigs); printf("# configs = %d\n", numConfigs); EGLNativeWindowType window = android_createDisplaySurface(); EGLNativeWindowType window = android_createDisplaySurface(); Loading @@ -57,7 +58,22 @@ int main(int argc, char** argv) return 0; return 0; } } EGLint r,g,b,a; 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); surface = eglCreateWindowSurface(dpy, config, window, NULL); 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); return 0; } else { printf("config=%p, format = %d-%d-%d-%d\n", config, r,g,b,a); } context = eglCreateContext(dpy, config, NULL, NULL); context = eglCreateContext(dpy, config, NULL, NULL); eglMakeCurrent(dpy, surface, surface, context); eglMakeCurrent(dpy, surface, surface, context); eglQuerySurface(dpy, surface, EGL_WIDTH, &w); eglQuerySurface(dpy, surface, EGL_WIDTH, &w); Loading Loading
libs/surfaceflinger/DisplayHardware/DisplayHardware.cpp +15 −36 Original line number Original line Diff line number Diff line Loading @@ -42,28 +42,6 @@ using namespace android; using namespace android; static __attribute__((noinline)) const char *egl_strerror(EGLint err) { switch (err){ case EGL_SUCCESS: return "EGL_SUCCESS"; case EGL_NOT_INITIALIZED: return "EGL_NOT_INITIALIZED"; case EGL_BAD_ACCESS: return "EGL_BAD_ACCESS"; case EGL_BAD_ALLOC: return "EGL_BAD_ALLOC"; case EGL_BAD_ATTRIBUTE: return "EGL_BAD_ATTRIBUTE"; case EGL_BAD_CONFIG: return "EGL_BAD_CONFIG"; case EGL_BAD_CONTEXT: return "EGL_BAD_CONTEXT"; case EGL_BAD_CURRENT_SURFACE: return "EGL_BAD_CURRENT_SURFACE"; case EGL_BAD_DISPLAY: return "EGL_BAD_DISPLAY"; case EGL_BAD_MATCH: return "EGL_BAD_MATCH"; case EGL_BAD_NATIVE_PIXMAP: return "EGL_BAD_NATIVE_PIXMAP"; case EGL_BAD_NATIVE_WINDOW: return "EGL_BAD_NATIVE_WINDOW"; case EGL_BAD_PARAMETER: return "EGL_BAD_PARAMETER"; case EGL_BAD_SURFACE: return "EGL_BAD_SURFACE"; case EGL_CONTEXT_LOST: return "EGL_CONTEXT_LOST"; default: return "UNKNOWN"; } } static __attribute__((noinline)) static __attribute__((noinline)) void checkGLErrors() void checkGLErrors() Loading @@ -80,7 +58,7 @@ void checkEGLErrors(const char* token) // GLESonGL seems to be returning 0 when there is no errors? // GLESonGL seems to be returning 0 when there is no errors? if (error && error != EGL_SUCCESS) if (error && error != EGL_SUCCESS) LOGE("%s error 0x%04x (%s)", LOGE("%s error 0x%04x (%s)", token, int(error), egl_strerror(error)); token, int(error), EGLUtils::strerror(error)); } } Loading Loading @@ -112,28 +90,22 @@ PixelFormat DisplayHardware::getFormat() const { return mFormat; } void DisplayHardware::init(uint32_t dpy) void DisplayHardware::init(uint32_t dpy) { { hw_module_t const* module; mNativeWindow = new FramebufferNativeWindow(); mNativeWindow = new FramebufferNativeWindow(); framebuffer_device_t const * fbDev = mNativeWindow->getDevice(); mOverlayEngine = NULL; mOverlayEngine = NULL; hw_module_t const* module; if (hw_get_module(OVERLAY_HARDWARE_MODULE_ID, &module) == 0) { if (hw_get_module(OVERLAY_HARDWARE_MODULE_ID, &module) == 0) { overlay_control_open(module, &mOverlayEngine); overlay_control_open(module, &mOverlayEngine); } } framebuffer_device_t const * fbDev = mNativeWindow->getDevice(); PixelFormatInfo fbFormatInfo; getPixelFormatInfo(PixelFormat(fbDev->format), &fbFormatInfo); // initialize EGL // initialize EGL const EGLint attribs[] = { const EGLint attribs[] = { EGL_BUFFER_SIZE, fbFormatInfo.bitsPerPixel, EGL_SURFACE_TYPE, EGL_WINDOW_BIT, EGL_DEPTH_SIZE, 0, EGL_NONE EGL_NONE }; }; EGLint w, h, dummy; EGLint w, h, dummy; EGLint numConfigs=0, n=0; EGLint numConfigs=0; EGLSurface surface; EGLSurface surface; EGLContext context; EGLContext context; mFlags = 0; mFlags = 0; Loading @@ -146,10 +118,16 @@ void DisplayHardware::init(uint32_t dpy) eglGetConfigs(display, NULL, 0, &numConfigs); eglGetConfigs(display, NULL, 0, &numConfigs); EGLConfig config; EGLConfig config; status_t err = EGLUtils::selectConfigForPixelFormat( status_t err = EGLUtils::selectConfigForNativeWindow( display, attribs, fbDev->format, &config); display, attribs, mNativeWindow.get(), &config); LOGE_IF(err, "couldn't find an EGLConfig matching the screen format"); LOGE_IF(err, "couldn't find an EGLConfig matching the screen format"); EGLint r,g,b,a; eglGetConfigAttrib(display, config, EGL_RED_SIZE, &r); eglGetConfigAttrib(display, config, EGL_GREEN_SIZE, &g); eglGetConfigAttrib(display, config, EGL_BLUE_SIZE, &b); eglGetConfigAttrib(display, config, EGL_ALPHA_SIZE, &a); /* /* * Gather EGL extensions * Gather EGL extensions */ */ Loading @@ -163,6 +141,7 @@ void DisplayHardware::init(uint32_t dpy) LOGI("version : %s", eglQueryString(display, EGL_VERSION)); LOGI("version : %s", eglQueryString(display, EGL_VERSION)); LOGI("extensions: %s", egl_extensions); LOGI("extensions: %s", egl_extensions); LOGI("Client API: %s", eglQueryString(display, EGL_CLIENT_APIS)?:"Not Supported"); LOGI("Client API: %s", eglQueryString(display, EGL_CLIENT_APIS)?:"Not Supported"); LOGI("EGLSurface: %d-%d-%d-%d, config=%p", r, g, b, a, config); if (mNativeWindow->isUpdateOnDemand()) { if (mNativeWindow->isUpdateOnDemand()) { Loading
opengl/tests/swapinterval/swapinterval.cpp +101 −85 Original line number Original line Diff line number Diff line Loading @@ -15,8 +15,6 @@ ** limitations under the License. ** limitations under the License. */ */ #define LOG_TAG "fillrate" #include <stdlib.h> #include <stdlib.h> #include <stdio.h> #include <stdio.h> Loading @@ -33,7 +31,7 @@ using namespace android; int main(int argc, char** argv) int main(int argc, char** argv) { { EGLint configAttribs[] = { EGLint configAttribs[] = { EGL_DEPTH_SIZE, 0, EGL_SURFACE_TYPE, EGL_WINDOW_BIT, EGL_NONE EGL_NONE }; }; Loading @@ -41,12 +39,15 @@ int main(int argc, char** argv) EGLint minorVersion; EGLint minorVersion; EGLContext context; EGLContext context; EGLConfig config; EGLConfig config; EGLint numConfigs=0; EGLSurface surface; EGLSurface surface; EGLint w, h; EGLint w, h; EGLDisplay dpy; EGLDisplay dpy; dpy = eglGetDisplay(EGL_DEFAULT_DISPLAY); dpy = eglGetDisplay(EGL_DEFAULT_DISPLAY); eglInitialize(dpy, &majorVersion, &minorVersion); eglInitialize(dpy, 0 ,0) ;//&majorVersion, &minorVersion); eglGetConfigs(dpy, NULL, 0, &numConfigs); printf("# configs = %d\n", numConfigs); EGLNativeWindowType window = android_createDisplaySurface(); EGLNativeWindowType window = android_createDisplaySurface(); Loading @@ -57,7 +58,22 @@ int main(int argc, char** argv) return 0; return 0; } } EGLint r,g,b,a; 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); surface = eglCreateWindowSurface(dpy, config, window, NULL); 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); return 0; } else { printf("config=%p, format = %d-%d-%d-%d\n", config, r,g,b,a); } context = eglCreateContext(dpy, config, NULL, NULL); context = eglCreateContext(dpy, config, NULL, NULL); eglMakeCurrent(dpy, surface, surface, context); eglMakeCurrent(dpy, surface, surface, context); eglQuerySurface(dpy, surface, EGL_WIDTH, &w); eglQuerySurface(dpy, surface, EGL_WIDTH, &w); Loading