1*c8dee2aaSAndroid Build Coastguard Worker/*#pragma settings DebugTrace*/ 2*c8dee2aaSAndroid Build Coastguard Worker 3*c8dee2aaSAndroid Build Coastguard Workeruniform half4 colorGreen, colorRed; 4*c8dee2aaSAndroid Build Coastguard Worker 5*c8dee2aaSAndroid Build Coastguard Workerbool test_scalar() { 6*c8dee2aaSAndroid Build Coastguard Worker mediump float mp = 0.5; 7*c8dee2aaSAndroid Build Coastguard Worker highp float hp = mp; 8*c8dee2aaSAndroid Build Coastguard Worker highp int ihp = 2; 9*c8dee2aaSAndroid Build Coastguard Worker mediump int imp = ihp; 10*c8dee2aaSAndroid Build Coastguard Worker 11*c8dee2aaSAndroid Build Coastguard Worker return mp == hp && ihp == imp; 12*c8dee2aaSAndroid Build Coastguard Worker} 13*c8dee2aaSAndroid Build Coastguard Worker 14*c8dee2aaSAndroid Build Coastguard Workerbool test_vector() { 15*c8dee2aaSAndroid Build Coastguard Worker mediump vec2 mp2 = vec2(2); 16*c8dee2aaSAndroid Build Coastguard Worker highp vec2 hp2 = mp2; 17*c8dee2aaSAndroid Build Coastguard Worker mediump vec3 mp3 = vec3(3); 18*c8dee2aaSAndroid Build Coastguard Worker highp vec3 hp3 = mp3; 19*c8dee2aaSAndroid Build Coastguard Worker mediump vec4 mp4 = vec4(4); 20*c8dee2aaSAndroid Build Coastguard Worker highp vec4 hp4 = mp4; 21*c8dee2aaSAndroid Build Coastguard Worker 22*c8dee2aaSAndroid Build Coastguard Worker highp ivec2 ihp2 = ivec2(2); 23*c8dee2aaSAndroid Build Coastguard Worker mediump ivec2 imp2 = ihp2; 24*c8dee2aaSAndroid Build Coastguard Worker highp ivec3 ihp3 = ivec3(3); 25*c8dee2aaSAndroid Build Coastguard Worker mediump ivec3 imp3 = ihp3; 26*c8dee2aaSAndroid Build Coastguard Worker highp ivec4 ihp4 = ivec4(4); 27*c8dee2aaSAndroid Build Coastguard Worker mediump ivec4 imp4 = ihp4; 28*c8dee2aaSAndroid Build Coastguard Worker 29*c8dee2aaSAndroid Build Coastguard Worker return mp2 == hp2 && hp3 == mp3 && mp4 == hp4 && 30*c8dee2aaSAndroid Build Coastguard Worker imp2 == ihp2 && ihp3 == imp3 && imp4 == ihp4; 31*c8dee2aaSAndroid Build Coastguard Worker} 32*c8dee2aaSAndroid Build Coastguard Worker 33*c8dee2aaSAndroid Build Coastguard Workerbool test_matrix() { 34*c8dee2aaSAndroid Build Coastguard Worker mediump mat2 mp2 = mat2(2); 35*c8dee2aaSAndroid Build Coastguard Worker highp mat2 hp2 = mp2; 36*c8dee2aaSAndroid Build Coastguard Worker mediump mat3 mp3 = mat3(3); 37*c8dee2aaSAndroid Build Coastguard Worker highp mat3 hp3 = mp3; 38*c8dee2aaSAndroid Build Coastguard Worker mediump mat4 mp4 = mat4(4); 39*c8dee2aaSAndroid Build Coastguard Worker highp mat4 hp4 = mp4; 40*c8dee2aaSAndroid Build Coastguard Worker 41*c8dee2aaSAndroid Build Coastguard Worker return mp2 == hp2 && hp3 == mp3 && mp4 == hp4; 42*c8dee2aaSAndroid Build Coastguard Worker} 43*c8dee2aaSAndroid Build Coastguard Worker 44*c8dee2aaSAndroid Build Coastguard Workerbool test_array() { 45*c8dee2aaSAndroid Build Coastguard Worker mediump float mf[1]; mf[0] = 1; 46*c8dee2aaSAndroid Build Coastguard Worker highp float hf[1]; hf[0] = 1; 47*c8dee2aaSAndroid Build Coastguard Worker mediump vec2 mv[2]; mv[0] = vec2(0, 1); mv[1] = vec2(2, 3); 48*c8dee2aaSAndroid Build Coastguard Worker highp vec2 hv[2]; hv[0] = vec2(0, 1); hv[1] = vec2(2, 3); 49*c8dee2aaSAndroid Build Coastguard Worker 50*c8dee2aaSAndroid Build Coastguard Worker return mf[0] == hf[0] && hv[0] == mv[0] && mv[1] == hv[1]; 51*c8dee2aaSAndroid Build Coastguard Worker} 52*c8dee2aaSAndroid Build Coastguard Worker 53*c8dee2aaSAndroid Build Coastguard Workerbool highp_param (highp float value) { return value == 1; } 54*c8dee2aaSAndroid Build Coastguard Workerbool mediump_param(mediump float value) { return value == 2; } 55*c8dee2aaSAndroid Build Coastguard Workerbool lowp_param (lowp float value) { return value == 3; } 56*c8dee2aaSAndroid Build Coastguard Worker 57*c8dee2aaSAndroid Build Coastguard Workervec4 main(vec2 coords) { 58*c8dee2aaSAndroid Build Coastguard Worker highp vec4 zero = vec4(0); 59*c8dee2aaSAndroid Build Coastguard Worker mediump vec4 one = vec4(1); 60*c8dee2aaSAndroid Build Coastguard Worker lowp vec4 green = colorGreen; 61*c8dee2aaSAndroid Build Coastguard Worker green = green * one + zero; 62*c8dee2aaSAndroid Build Coastguard Worker 63*c8dee2aaSAndroid Build Coastguard Worker highp vec4 red = colorRed; 64*c8dee2aaSAndroid Build Coastguard Worker red = (red + zero) * one; 65*c8dee2aaSAndroid Build Coastguard Worker 66*c8dee2aaSAndroid Build Coastguard Worker return (test_scalar() && test_vector() && test_matrix() && test_array() && 67*c8dee2aaSAndroid Build Coastguard Worker highp_param(1) && mediump_param(2) && lowp_param(3)) ? green : red; 68*c8dee2aaSAndroid Build Coastguard Worker} 69