Home | History | Annotate | Download | only in gl_perf
      1 
      2 typedef struct FragmentTestRec {
      3 	const char * name;
      4 	uint32_t texCount;
      5 	const char * txt;
      6 } FragmentTest;
      7 
      8 static FragmentTest fpFill = {
      9 	"Solid color", 0,
     10 
     11     "precision mediump float;\n"
     12     "uniform vec4 u_color;\n"
     13     "void main() {\n"
     14     "  gl_FragColor = u_color;\n"
     15     "}\n"
     16 };
     17 
     18 static FragmentTest fpGradient = {
     19 	"Solid gradient", 0,
     20 
     21     "precision mediump float;\n"
     22     "varying lowp vec4 v_color;\n"
     23     "void main() {\n"
     24     "  gl_FragColor = v_color;\n"
     25     "}\n"
     26 };
     27 
     28 static FragmentTest fpCopyTex = {
     29 	"Texture copy", 1,
     30 
     31     "precision mediump float;\n"
     32     "varying vec2 v_tex0;\n"
     33     "uniform sampler2D u_tex0;\n"
     34     "void main() {\n"
     35     "  gl_FragColor = texture2D(u_tex0, v_tex0);\n"
     36     "}\n"
     37 };
     38 
     39 static FragmentTest fpCopyTexGamma = {
     40 	"Texture copy with gamma", 1,
     41 
     42     "precision mediump float;\n"
     43     "varying vec2 v_tex0;\n"
     44     "uniform sampler2D u_tex0;\n"
     45     "void main() {\n"
     46     "  vec4 t = texture2D(u_tex0, v_tex0);\n"
     47     "  t.rgb = pow(t.rgb, vec3(1.4, 1.4, 1.4));\n"
     48     "  gl_FragColor = t;\n"
     49     "}\n"
     50 };
     51 
     52 static FragmentTest fpTexSpec = {
     53 	"Texture spec", 1,
     54 
     55     "precision mediump float;\n"
     56     "varying vec2 v_tex0;\n"
     57     "uniform sampler2D u_tex0;\n"
     58     "void main() {\n"
     59     "  vec4 t = texture2D(u_tex0, v_tex0);\n"
     60     "  float simSpec = dot(gl_FragCoord.xyz, gl_FragCoord.xyz);\n"
     61     "  simSpec = pow(clamp(simSpec, 0.1, 1.0), 40.0);\n"
     62     "  gl_FragColor = t + vec4(simSpec, simSpec, simSpec, simSpec);\n"
     63     "}\n"
     64 };
     65 
     66 static FragmentTest fpDepTex = {
     67 	"Dependent Lookup", 1,
     68 
     69     "precision mediump float;\n"
     70     "varying vec2 v_tex0;\n"
     71     "uniform sampler2D u_tex0;\n"
     72     "void main() {\n"
     73     "  vec4 t = texture2D(u_tex0, v_tex0);\n"
     74     "  t += texture2D(u_tex0, t.xy);\n"
     75     "  gl_FragColor = t;\n"
     76     "}\n"
     77 };
     78 
     79 static FragmentTest fpModulateConstantTex = {
     80 	"Texture modulate constant", 1,
     81 
     82     "precision mediump float;\n"
     83     "varying vec2 v_tex0;\n"
     84     "uniform sampler2D u_tex0;\n"
     85     "uniform vec4 u_color;\n"
     86 
     87     "void main() {\n"
     88     "  lowp vec4 c = texture2D(u_tex0, v_tex0);\n"
     89 	"  c *= u_color;\n"
     90     "  gl_FragColor = c;\n"
     91     "}\n"
     92 };
     93 
     94 static FragmentTest fpModulateVaryingTex = {
     95 	"Texture modulate gradient", 1,
     96 
     97     "precision mediump float;\n"
     98     "varying vec2 v_tex0;\n"
     99     "varying lowp vec4 v_color;\n"
    100     "uniform sampler2D u_tex0;\n"
    101 
    102     "void main() {\n"
    103     "  lowp vec4 c = texture2D(u_tex0, v_tex0);\n"
    104 	"  c *= v_color;\n"
    105     "  gl_FragColor = c;\n"
    106     "}\n"
    107 };
    108 
    109 static FragmentTest fpModulateVaryingConstantTex = {
    110 	"Texture modulate gradient constant", 1,
    111 
    112     "precision mediump float;\n"
    113     "varying vec2 v_tex0;\n"
    114     "varying lowp vec4 v_color;\n"
    115     "uniform sampler2D u_tex0;\n"
    116     "uniform vec4 u_color;\n"
    117 
    118     "void main() {\n"
    119     "  lowp vec4 c = texture2D(u_tex0, v_tex0);\n"
    120 	"  c *= v_color;\n"
    121 	"  c *= u_color;\n"
    122     "  gl_FragColor = c;\n"
    123     "}\n"
    124 };
    125 
    126 static FragmentTest *gFragmentTests[] = {
    127 	&fpFill,
    128 	&fpGradient,
    129 	&fpCopyTex,
    130 	&fpCopyTexGamma,
    131    &fpTexSpec,
    132    &fpDepTex,
    133 	&fpModulateConstantTex,
    134 	&fpModulateVaryingTex,
    135 	&fpModulateVaryingConstantTex,
    136 
    137 };
    138 
    139 static const size_t gFragmentTestCount = sizeof(gFragmentTests) / sizeof(gFragmentTests[0]);
    140