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