gl2_basic.cpp revision 493220dcb8d2f5d9633c157b41e1e27c6613b21d
1493220dcb8d2f5d9633c157b41e1e27c6613b21dJason Sams/* 2493220dcb8d2f5d9633c157b41e1e27c6613b21dJason Sams * Copyright (C) 2007 The Android Open Source Project 3493220dcb8d2f5d9633c157b41e1e27c6613b21dJason Sams * 4493220dcb8d2f5d9633c157b41e1e27c6613b21dJason Sams * Licensed under the Apache License, Version 2.0 (the "License"); 5493220dcb8d2f5d9633c157b41e1e27c6613b21dJason Sams * you may not use this file except in compliance with the License. 6493220dcb8d2f5d9633c157b41e1e27c6613b21dJason Sams * You may obtain a copy of the License at 7493220dcb8d2f5d9633c157b41e1e27c6613b21dJason Sams * 8493220dcb8d2f5d9633c157b41e1e27c6613b21dJason Sams * http://www.apache.org/licenses/LICENSE-2.0 9493220dcb8d2f5d9633c157b41e1e27c6613b21dJason Sams * 10493220dcb8d2f5d9633c157b41e1e27c6613b21dJason Sams * Unless required by applicable law or agreed to in writing, software 11493220dcb8d2f5d9633c157b41e1e27c6613b21dJason Sams * distributed under the License is distributed on an "AS IS" BASIS, 12493220dcb8d2f5d9633c157b41e1e27c6613b21dJason Sams * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13493220dcb8d2f5d9633c157b41e1e27c6613b21dJason Sams * See the License for the specific language governing permissions and 14493220dcb8d2f5d9633c157b41e1e27c6613b21dJason Sams * limitations under the License. 15493220dcb8d2f5d9633c157b41e1e27c6613b21dJason Sams */ 16493220dcb8d2f5d9633c157b41e1e27c6613b21dJason Sams 17493220dcb8d2f5d9633c157b41e1e27c6613b21dJason Sams#include <stdlib.h> 18493220dcb8d2f5d9633c157b41e1e27c6613b21dJason Sams#include <stdio.h> 19493220dcb8d2f5d9633c157b41e1e27c6613b21dJason Sams#include <time.h> 20493220dcb8d2f5d9633c157b41e1e27c6613b21dJason Sams#include <sched.h> 21493220dcb8d2f5d9633c157b41e1e27c6613b21dJason Sams#include <sys/resource.h> 22493220dcb8d2f5d9633c157b41e1e27c6613b21dJason Sams 23493220dcb8d2f5d9633c157b41e1e27c6613b21dJason Sams#include <EGL/egl.h> 24493220dcb8d2f5d9633c157b41e1e27c6613b21dJason Sams#include <GLES/gl.h> 25493220dcb8d2f5d9633c157b41e1e27c6613b21dJason Sams#include <GLES/glext.h> 26493220dcb8d2f5d9633c157b41e1e27c6613b21dJason Sams 27493220dcb8d2f5d9633c157b41e1e27c6613b21dJason Sams#include <utils/Timers.h> 28493220dcb8d2f5d9633c157b41e1e27c6613b21dJason Sams 29493220dcb8d2f5d9633c157b41e1e27c6613b21dJason Sams#include <ui/FramebufferNativeWindow.h> 30493220dcb8d2f5d9633c157b41e1e27c6613b21dJason Sams#include <ui/EGLUtils.h> 31493220dcb8d2f5d9633c157b41e1e27c6613b21dJason Sams 32493220dcb8d2f5d9633c157b41e1e27c6613b21dJason Samsusing namespace android; 33493220dcb8d2f5d9633c157b41e1e27c6613b21dJason Sams 34493220dcb8d2f5d9633c157b41e1e27c6613b21dJason Samsstatic void printGLString(const char *name, GLenum s) 35493220dcb8d2f5d9633c157b41e1e27c6613b21dJason Sams{ 36493220dcb8d2f5d9633c157b41e1e27c6613b21dJason Sams const char *v = (const char *)glGetString(s); 37493220dcb8d2f5d9633c157b41e1e27c6613b21dJason Sams if (v) 38493220dcb8d2f5d9633c157b41e1e27c6613b21dJason Sams printf("GL %s = %s\n", name, v); 39493220dcb8d2f5d9633c157b41e1e27c6613b21dJason Sams else 40493220dcb8d2f5d9633c157b41e1e27c6613b21dJason Sams printf("GL %s = (null)\n", name); 41493220dcb8d2f5d9633c157b41e1e27c6613b21dJason Sams} 42493220dcb8d2f5d9633c157b41e1e27c6613b21dJason Sams 43493220dcb8d2f5d9633c157b41e1e27c6613b21dJason Samsint main(int argc, char** argv) 44493220dcb8d2f5d9633c157b41e1e27c6613b21dJason Sams{ 45493220dcb8d2f5d9633c157b41e1e27c6613b21dJason Sams EGLint s_configAttribs[] = { 46493220dcb8d2f5d9633c157b41e1e27c6613b21dJason Sams EGL_SURFACE_TYPE, EGL_WINDOW_BIT, 47493220dcb8d2f5d9633c157b41e1e27c6613b21dJason Sams EGL_RED_SIZE, 5, 48493220dcb8d2f5d9633c157b41e1e27c6613b21dJason Sams EGL_GREEN_SIZE, 6, 49493220dcb8d2f5d9633c157b41e1e27c6613b21dJason Sams EGL_BLUE_SIZE, 5, 50493220dcb8d2f5d9633c157b41e1e27c6613b21dJason Sams EGL_NONE 51493220dcb8d2f5d9633c157b41e1e27c6613b21dJason Sams }; 52493220dcb8d2f5d9633c157b41e1e27c6613b21dJason Sams 53493220dcb8d2f5d9633c157b41e1e27c6613b21dJason Sams EGLint numConfigs = -1; 54493220dcb8d2f5d9633c157b41e1e27c6613b21dJason Sams EGLint majorVersion; 55493220dcb8d2f5d9633c157b41e1e27c6613b21dJason Sams EGLint minorVersion; 56493220dcb8d2f5d9633c157b41e1e27c6613b21dJason Sams EGLConfig config; 57493220dcb8d2f5d9633c157b41e1e27c6613b21dJason Sams EGLContext context; 58493220dcb8d2f5d9633c157b41e1e27c6613b21dJason Sams EGLSurface surface; 59493220dcb8d2f5d9633c157b41e1e27c6613b21dJason Sams EGLint w, h; 60493220dcb8d2f5d9633c157b41e1e27c6613b21dJason Sams 61493220dcb8d2f5d9633c157b41e1e27c6613b21dJason Sams EGLDisplay dpy; 62493220dcb8d2f5d9633c157b41e1e27c6613b21dJason Sams 63493220dcb8d2f5d9633c157b41e1e27c6613b21dJason Sams EGLNativeWindowType window = 0; 64493220dcb8d2f5d9633c157b41e1e27c6613b21dJason Sams window = android_createDisplaySurface(); 65493220dcb8d2f5d9633c157b41e1e27c6613b21dJason Sams 66493220dcb8d2f5d9633c157b41e1e27c6613b21dJason Sams dpy = eglGetDisplay(EGL_DEFAULT_DISPLAY); 67493220dcb8d2f5d9633c157b41e1e27c6613b21dJason Sams eglInitialize(dpy, &majorVersion, &minorVersion); 68493220dcb8d2f5d9633c157b41e1e27c6613b21dJason Sams EGLUtils::selectConfigForNativeWindow(dpy, s_configAttribs, window, &config); 69493220dcb8d2f5d9633c157b41e1e27c6613b21dJason Sams surface = eglCreateWindowSurface(dpy, config, window, NULL); 70493220dcb8d2f5d9633c157b41e1e27c6613b21dJason Sams 71493220dcb8d2f5d9633c157b41e1e27c6613b21dJason Sams EGLint gl2_0Attribs[] = {EGL_CONTEXT_CLIENT_VERSION, 2, EGL_NONE}; 72493220dcb8d2f5d9633c157b41e1e27c6613b21dJason Sams 73493220dcb8d2f5d9633c157b41e1e27c6613b21dJason Sams context = eglCreateContext(dpy, config, NULL, gl2_0Attribs); 74493220dcb8d2f5d9633c157b41e1e27c6613b21dJason Sams eglMakeCurrent(dpy, surface, surface, context); 75493220dcb8d2f5d9633c157b41e1e27c6613b21dJason Sams eglQuerySurface(dpy, surface, EGL_WIDTH, &w); 76493220dcb8d2f5d9633c157b41e1e27c6613b21dJason Sams eglQuerySurface(dpy, surface, EGL_HEIGHT, &h); 77493220dcb8d2f5d9633c157b41e1e27c6613b21dJason Sams GLint dim = w<h ? w : h; 78493220dcb8d2f5d9633c157b41e1e27c6613b21dJason Sams 79493220dcb8d2f5d9633c157b41e1e27c6613b21dJason Sams printGLString("Version", GL_VERSION); 80493220dcb8d2f5d9633c157b41e1e27c6613b21dJason Sams printGLString("Vendor", GL_VENDOR); 81493220dcb8d2f5d9633c157b41e1e27c6613b21dJason Sams printGLString("Renderer", GL_RENDERER); 82493220dcb8d2f5d9633c157b41e1e27c6613b21dJason Sams printGLString("Extensions", GL_EXTENSIONS); 83493220dcb8d2f5d9633c157b41e1e27c6613b21dJason Sams 84493220dcb8d2f5d9633c157b41e1e27c6613b21dJason Sams return 0; 85493220dcb8d2f5d9633c157b41e1e27c6613b21dJason Sams} 86