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