Home | History | Annotate | Download | only in jni
      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