diff options
author | Jack Palevich <jackpal@google.com> | 2009-09-25 16:25:19 -0700 |
---|---|---|
committer | Jack Palevich <jackpal@google.com> | 2009-09-25 16:25:19 -0700 |
commit | 18e24f952506beebe1eea5672a7dbf60c1040556 (patch) | |
tree | c85b7e2035a34a2242364e34b11883bbd0460d8c /opengl/tests | |
parent | 1be815147f806366c13a11d1d6d9f5fb9cc04387 (diff) | |
download | frameworks_native-18e24f952506beebe1eea5672a7dbf60c1040556.zip frameworks_native-18e24f952506beebe1eea5672a7dbf60c1040556.tar.gz frameworks_native-18e24f952506beebe1eea5672a7dbf60c1040556.tar.bz2 |
Use EGLUtils to simplify choosing a configuration.
Doesn't actually select anything, possibly due to device driver errors.
Diffstat (limited to 'opengl/tests')
-rw-r--r-- | opengl/tests/gl2_basic/gl2_basic.cpp | 91 |
1 files changed, 36 insertions, 55 deletions
diff --git a/opengl/tests/gl2_basic/gl2_basic.cpp b/opengl/tests/gl2_basic/gl2_basic.cpp index ba9a717..9345de5 100644 --- a/opengl/tests/gl2_basic/gl2_basic.cpp +++ b/opengl/tests/gl2_basic/gl2_basic.cpp @@ -44,17 +44,6 @@ static void printGLString(const char *name, GLenum s) { fprintf(stderr, "GL %s = %s\n", name, v); } -static const char* eglErrorToString[] = { - "EGL_SUCCESS", // 0x3000 12288 - "EGL_NOT_INITIALIZED", - "EGL_BAD_ACCESS", // 0x3002 12290 - "EGL_BAD_ALLOC", "EGL_BAD_ATTRIBUTE", - "EGL_BAD_CONFIG", - "EGL_BAD_CONTEXT", // 0x3006 12294 - "EGL_BAD_CURRENT_SURFACE", "EGL_BAD_DISPLAY", "EGL_BAD_MATCH", - "EGL_BAD_NATIVE_PIXMAP", "EGL_BAD_NATIVE_WINDOW", "EGL_BAD_PARAMETER", // 0x300c 12300 - "EGL_BAD_SURFACE" }; - static void checkEglError(const char* op, EGLBoolean returnVal = EGL_TRUE) { if (returnVal != EGL_TRUE) { fprintf(stderr, "%s() returned %d\n", op, returnVal); @@ -62,11 +51,7 @@ static void checkEglError(const char* op, EGLBoolean returnVal = EGL_TRUE) { for (EGLint error = eglGetError(); error != EGL_SUCCESS; error = eglGetError()) { - const char* errorString = "unknown"; - if (error >= EGL_SUCCESS && error <= EGL_BAD_SURFACE) { - errorString = eglErrorToString[error - EGL_SUCCESS]; - } - fprintf(stderr, "after %s() eglError %s (0x%x)\n", op, errorString, + fprintf(stderr, "after %s() eglError %s (0x%x)\n", op, EGLUtils::strerror(error), error); } } @@ -190,22 +175,33 @@ void renderFrame() { checkGlError("glDrawArrays"); } +#if 0 + +void PrintEGLConfig(EGLDisplay dpy, EGLConfig config) { + int attrib[] = {EGL_RED_SIZE, EGL_GREEN_SIZE, EGL_BLUE_SIZE, EGL_ALPHA_SIZE, + EGL_DEPTH_SIZE, EGL_SURFACE_TYPE, EGL_RENDERABLE_TYPE + }; + for(size_t i = 0; i < sizeof(attrib)/sizeof(attrib[0]); i++) { + int value = 0; + int a = attrib[i]; + if (eglGetConfigAttrib(dpy, config, a, &value)) { + printf(" 0x%04x: %d", a, value); + } + } + printf("\n"); +} + +#endif + int main(int argc, char** argv) { EGLBoolean returnValue; - EGLConfig configs[2]; - EGLint config_count; + EGLConfig myConfig = {0}; EGLint context_attribs[] = { EGL_CONTEXT_CLIENT_VERSION, 2, EGL_NONE }; - EGLint s_configAttribs[] = { EGL_BUFFER_SIZE, EGL_DONT_CARE, EGL_RED_SIZE, - 5, EGL_GREEN_SIZE, 6, EGL_BLUE_SIZE, 5, EGL_DEPTH_SIZE, 8, - EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT, EGL_NONE }; - - EGLint s_configAttribs2[] = - { - EGL_DEPTH_SIZE, 16, - EGL_NONE - }; - + EGLint s_configAttribs[] = { + EGL_SURFACE_TYPE, EGL_PBUFFER_BIT|EGL_WINDOW_BIT, + EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT, + EGL_NONE }; EGLint majorVersion; EGLint minorVersion; EGLContext context; @@ -214,9 +210,6 @@ int main(int argc, char** argv) { EGLDisplay dpy; - EGLNativeWindowType window = 0; - window = android_createDisplaySurface(); - checkEglError("<init>"); dpy = eglGetDisplay(EGL_DEFAULT_DISPLAY); checkEglError("eglGetDisplay"); @@ -233,43 +226,31 @@ int main(int argc, char** argv) { return 0; } - returnValue = eglGetConfigs(dpy, configs, 2, &config_count); - checkEglError("eglGetConfigs", returnValue); - fprintf(stderr, "Config count: %d\n", config_count); - for (int i = 0; i < config_count; i++) { - fprintf(stderr, "%d: 0x%08x\n", i, (unsigned int) configs[i]); - } - -#if 0 - EGLConfig config; - EGLUtils::selectConfigForNativeWindow(dpy, s_configAttribs, window, &config); - checkEglError("EGLUtils::selectConfigForNativeWindow"); -#else - int chooseConfigResult = eglChooseConfig(dpy, s_configAttribs2, configs, 2, - &config_count); - checkEglError("eglChooseConfig", chooseConfigResult); - if (chooseConfigResult != EGL_TRUE) { - printf("eglChooseConfig failed\n"); - return 0; + EGLNativeWindowType window = android_createDisplaySurface();
+ returnValue = EGLUtils::selectConfigForNativeWindow(dpy, s_configAttribs, window, &myConfig); + if (returnValue) { + printf("EGLUtils::selectConfigForNativeWindow() returned %d", returnValue); + return 0; } -#endif - surface = eglCreateWindowSurface(dpy, configs[0], window, NULL); + surface = eglCreateWindowSurface(dpy, myConfig, window, NULL); checkEglError("eglCreateWindowSurface"); if (surface == EGL_NO_SURFACE) { printf("gelCreateWindowSurface failed.\n"); return 0; } - EGLint gl2_0Attribs[] = { EGL_CONTEXT_CLIENT_VERSION, 2, EGL_NONE }; - context = eglCreateContext(dpy, configs[0], EGL_NO_CONTEXT, context_attribs); + context = eglCreateContext(dpy, myConfig, EGL_NO_CONTEXT, context_attribs); checkEglError("eglCreateContext"); if (context == EGL_NO_CONTEXT) { printf("eglCreateContext failed\n"); return 0; } - eglMakeCurrent(dpy, surface, surface, context); - checkEglError("eglMakeCurrent"); + returnValue = eglMakeCurrent(dpy, surface, surface, context); + checkEglError("eglMakeCurrent", returnValue); + if (returnValue != EGL_TRUE) { + return 0; + } eglQuerySurface(dpy, surface, EGL_WIDTH, &w); checkEglError("eglQuerySurface"); eglQuerySurface(dpy, surface, EGL_HEIGHT, &h); |