1 // OpenGL ES 2.0 code 2 3 #include <nativehelper/jni.h> 4 #define LOG_TAG "GLPerf gl_code.cpp" 5 #include <utils/Log.h> 6 7 #include <EGL/egl.h> 8 #include <GLES2/gl2.h> 9 #include <GLES2/gl2ext.h> 10 #include <utils/Timers.h> 11 12 #include <stdio.h> 13 #include <stdlib.h> 14 #include <math.h> 15 16 #include "../../gl_perf/fill_common.cpp" 17 18 19 ////////////////////////// 20 21 // Width and height of the screen 22 23 uint32_t w; 24 uint32_t h; 25 26 // The stateClock starts at zero and increments by 1 every time we draw a frame. It is used to control which phase of the test we are in. 27 28 int stateClock; 29 const int doLoopStates = 2; 30 const int doSingleTestStates = 2; 31 bool done; 32 33 // Saves the parameters of the test (so we can print them out when we finish the timing.) 34 35 36 int pgm; 37 38 void ptSwap() { 39 } 40 41 void doTest() { 42 uint32_t testNum = stateClock >> 2; 43 int texSize = ((stateClock >> 1) & 0x1) + 1; 44 45 if (testNum >= gFragmentTestCount) { 46 ALOGI("done\n"); 47 if (fOut) { 48 fclose(fOut); 49 fOut = NULL; 50 } 51 done = true; 52 return; 53 } 54 55 // ALOGI("doTest %d %d %d\n", texCount, extraMath, testSubState); 56 57 // for (uint32_t num = 0; num < gFragmentTestCount; num++) { 58 doSingleTest(testNum, texSize); 59 } 60 61 extern "C" { 62 JNIEXPORT void JNICALL Java_com_android_glperf_GLPerfLib_init(JNIEnv * env, jobject obj, jint width, jint height); 63 JNIEXPORT void JNICALL Java_com_android_glperf_GLPerfLib_step(JNIEnv * env, jobject obj); 64 }; 65 66 JNIEXPORT void JNICALL Java_com_android_glperf_GLPerfLib_init(JNIEnv * env, jobject obj, jint width, jint height) 67 { 68 gWidth = width; 69 gHeight = height; 70 if (!done) { 71 stateClock = 0; 72 done = false; 73 setupVA(); 74 genTextures(); 75 const char* fileName = "/sdcard/glperf.csv"; 76 if (fOut != NULL) { 77 ALOGI("Closing partially written output.n"); 78 fclose(fOut); 79 fOut = NULL; 80 } 81 ALOGI("Writing to: %s\n",fileName); 82 fOut = fopen(fileName, "w"); 83 if (fOut == NULL) { 84 ALOGE("Could not open: %s\n", fileName); 85 } 86 87 ALOGI("\nvarColor, texCount, modulate, extraMath, texSize, blend, Mpps, DC60\n"); 88 if (fOut) fprintf(fOut,"varColor, texCount, modulate, extraMath, texSize, blend, Mpps, DC60\r\n"); 89 } 90 } 91 92 JNIEXPORT void JNICALL Java_com_android_glperf_GLPerfLib_step(JNIEnv * env, jobject obj) 93 { 94 if (! done) { 95 if (stateClock > 0 && ((stateClock & 1) == 0)) { 96 //endTimer(100); 97 } 98 doTest(); 99 stateClock++; 100 } else { 101 glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT); 102 } 103 } 104