// OpenGL ES 2.0 code #include #define LOG_TAG "GLPerf gl_code.cpp" #include #include #include #include #include #include #include #include #include "../../gl_perf/fill_common.cpp" ////////////////////////// // Width and height of the screen uint32_t w; uint32_t h; // 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. int stateClock; const int doLoopStates = 2; const int doSingleTestStates = 2; bool done; // Saves the parameters of the test (so we can print them out when we finish the timing.) int pgm; void ptSwap() { } void doTest() { uint32_t testNum = stateClock >> 2; int texSize = ((stateClock >> 1) & 0x1) + 1; if (testNum >= gFragmentTestCount) { ALOGI("done\n"); if (fOut) { fclose(fOut); fOut = NULL; } done = true; return; } // ALOGI("doTest %d %d %d\n", texCount, extraMath, testSubState); // for (uint32_t num = 0; num < gFragmentTestCount; num++) { doSingleTest(testNum, texSize); } extern "C" { JNIEXPORT void JNICALL Java_com_android_glperf_GLPerfLib_init(JNIEnv * env, jobject obj, jint width, jint height); JNIEXPORT void JNICALL Java_com_android_glperf_GLPerfLib_step(JNIEnv * env, jobject obj); }; JNIEXPORT void JNICALL Java_com_android_glperf_GLPerfLib_init(JNIEnv * env, jobject obj, jint width, jint height) { gWidth = width; gHeight = height; if (!done) { stateClock = 0; done = false; setupVA(); genTextures(); const char* fileName = "/sdcard/glperf.csv"; if (fOut != NULL) { ALOGI("Closing partially written output.n"); fclose(fOut); fOut = NULL; } ALOGI("Writing to: %s\n",fileName); fOut = fopen(fileName, "w"); if (fOut == NULL) { ALOGE("Could not open: %s\n", fileName); } ALOGI("\nvarColor, texCount, modulate, extraMath, texSize, blend, Mpps, DC60\n"); if (fOut) fprintf(fOut,"varColor, texCount, modulate, extraMath, texSize, blend, Mpps, DC60\r\n"); } } JNIEXPORT void JNICALL Java_com_android_glperf_GLPerfLib_step(JNIEnv * env, jobject obj) { if (! done) { if (stateClock > 0 && ((stateClock & 1) == 0)) { //endTimer(100); } doTest(); stateClock++; } else { glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT); } }