132001f49Smrg$ /* 232001f49Smrg$ Shader test script. 332001f49Smrg$ 432001f49Smrg$ Author: Michal Krol 532001f49Smrg$ 632001f49Smrg$ Comment line starts with dollar sign and white space. 732001f49Smrg$ 832001f49Smrg$ $program <name> starts a new test program section called <name>. Contains all other sections. 932001f49Smrg$ 1032001f49Smrg$ $attrib <name> starts vertex data input section for attrib called <name>. Each line consists of 1132001f49Smrg$ four values that form single vertex attrib. 1232001f49Smrg$ 1332001f49Smrg$ $vertex starts vertex shader section. Contains $code and &output sections. 1432001f49Smrg$ 1532001f49Smrg$ $code starts source code section. All text in this section gets compiled into appropriate 1632001f49Smrg$ shader object. 1732001f49Smrg$ 1832001f49Smrg$ $output starts shader execution results section. These are compared, value-by-value, 1932001f49Smrg$ with results of executing printMESA() functions within a shader. 2032001f49Smrg$ */ 2132001f49Smrg 2232001f49Smrg 2332001f49Smrg$ /* 2432001f49Smrg$ -------------------------------------------------------------------------------------------------- 2532001f49Smrg$ Test printMESA() function. 2632001f49Smrg$ */ 2732001f49Smrg 2832001f49Smrg$program PRINT TEST 2932001f49Smrg 3032001f49Smrg$vertex 3132001f49Smrg 3232001f49Smrg$code 3332001f49Smrg 3432001f49Smrg#version 110 3532001f49Smrg 3632001f49Smrg#extension MESA_shader_debug: require 3732001f49Smrg 3832001f49Smrgvoid main () { 3932001f49Smrg gl_Position = gl_ModelViewMatrix * gl_Vertex; 4032001f49Smrg gl_FrontColor = vec4 (1.0); 4132001f49Smrg 4232001f49Smrg printMESA (11.1); 4332001f49Smrg printMESA (111); 4432001f49Smrg printMESA (true); 4532001f49Smrg 4632001f49Smrg printMESA (vec2 (22.1, 22.2)); 4732001f49Smrg printMESA (vec3 (33.1, 33.2, 33.3)); 4832001f49Smrg printMESA (vec4 (44.1, 44.2, 44.3, 44.4)); 4932001f49Smrg 5032001f49Smrg printMESA (ivec2 (221, 222)); 5132001f49Smrg printMESA (ivec3 (331, 332, 333)); 5232001f49Smrg printMESA (ivec4 (441, 442, 443, 444)); 5332001f49Smrg 5432001f49Smrg printMESA (bvec2 (false, true)); 5532001f49Smrg printMESA (bvec3 (true, true, false)); 5632001f49Smrg printMESA (bvec4 (true, false, true, false)); 5732001f49Smrg 5832001f49Smrg printMESA (mat2 (55.11, 55.12, 55.21, 55.22)); 5932001f49Smrg printMESA (mat3 (66.11, 66.12, 66.13, 6032001f49Smrg 66.21, 66.22, 66.23, 6132001f49Smrg 66.31, 66.32, 66.33)); 6232001f49Smrg printMESA (mat4 (77.11, 77.12, 77.13, 77.14, 6332001f49Smrg 77.21, 77.22, 77.23, 77.24, 6432001f49Smrg 77.31, 77.32, 77.33, 77.34, 6532001f49Smrg 77.41, 77.42, 77.43, 77.44)); 6632001f49Smrg} 6732001f49Smrg 6832001f49Smrg$output 6932001f49Smrg 7032001f49Smrg11.1 7132001f49Smrg111 7232001f49Smrgtrue 7332001f49Smrg 7432001f49Smrg22.1 7532001f49Smrg22.2 7632001f49Smrg33.1 7732001f49Smrg33.2 7832001f49Smrg33.3 7932001f49Smrg44.1 8032001f49Smrg44.2 8132001f49Smrg44.3 8232001f49Smrg44.4 8332001f49Smrg 8432001f49Smrg221 8532001f49Smrg222 8632001f49Smrg331 8732001f49Smrg332 8832001f49Smrg333 8932001f49Smrg441 9032001f49Smrg442 9132001f49Smrg443 9232001f49Smrg444 9332001f49Smrg 9432001f49Smrgfalse 9532001f49Smrgtrue 9632001f49Smrgtrue 9732001f49Smrgtrue 9832001f49Smrgfalse 9932001f49Smrgtrue 10032001f49Smrgfalse 10132001f49Smrgtrue 10232001f49Smrgfalse 10332001f49Smrg 10432001f49Smrg55.11 10532001f49Smrg55.12 10632001f49Smrg55.21 10732001f49Smrg55.22 10832001f49Smrg 10932001f49Smrg66.11 11032001f49Smrg66.12 11132001f49Smrg66.13 11232001f49Smrg66.21 11332001f49Smrg66.22 11432001f49Smrg66.23 11532001f49Smrg66.31 11632001f49Smrg66.32 11732001f49Smrg66.33 11832001f49Smrg 11932001f49Smrg77.11 12032001f49Smrg77.12 12132001f49Smrg77.13 12232001f49Smrg77.14 12332001f49Smrg77.21 12432001f49Smrg77.22 12532001f49Smrg77.23 12632001f49Smrg77.24 12732001f49Smrg77.31 12832001f49Smrg77.32 12932001f49Smrg77.33 13032001f49Smrg77.34 13132001f49Smrg77.41 13232001f49Smrg77.42 13332001f49Smrg77.43 13432001f49Smrg77.44 13532001f49Smrg 13632001f49Smrg 13732001f49Smrg$ /* 13832001f49Smrg$ -------------------------------------------------------------------------------------------------- 13932001f49Smrg$ Test type casting. 14032001f49Smrg$ */ 14132001f49Smrg 14232001f49Smrg$program TYPE CAST TEST 14332001f49Smrg 14432001f49Smrg$attrib gl_Vertex 14532001f49Smrg0.0 0.0 0.0 1.0 14632001f49Smrg 14732001f49Smrg$attrib _Zero 14832001f49Smrg0.0 0.0 0.0 0.0 14932001f49Smrg 15032001f49Smrg$attrib _One 15132001f49Smrg1.1 0.0 0.0 0.0 15232001f49Smrg 15332001f49Smrg$attrib _Two 15432001f49Smrg2.2 0.0 0.0 0.0 15532001f49Smrg 15632001f49Smrg$attrib _MinusThree 15732001f49Smrg-3.3 0.0 0.0 0.0 15832001f49Smrg 15932001f49Smrg$vertex 16032001f49Smrg 16132001f49Smrg$code 16232001f49Smrg 16332001f49Smrg#version 110 16432001f49Smrg 16532001f49Smrg#extension MESA_shader_debug: require 16632001f49Smrg 16732001f49Smrgattribute float _Zero; 16832001f49Smrgattribute float _One; 16932001f49Smrgattribute float _Two; 17032001f49Smrgattribute float _MinusThree; 17132001f49Smrg 17232001f49Smrgvoid main () { 17332001f49Smrg gl_Position = gl_ModelViewMatrix * gl_Vertex; 17432001f49Smrg gl_FrontColor = vec4 (1.0); 17532001f49Smrg 17632001f49Smrg printMESA (_Zero); 17732001f49Smrg printMESA (_One); 17832001f49Smrg printMESA (_Two); 17932001f49Smrg printMESA (_MinusThree); 18032001f49Smrg 18132001f49Smrg printMESA (float (_Zero)); 18232001f49Smrg printMESA (float (_One)); 18332001f49Smrg printMESA (float (_Two)); 18432001f49Smrg printMESA (float (_MinusThree)); 18532001f49Smrg printMESA (float (45.99)); 18632001f49Smrg printMESA (float (-6.17)); 18732001f49Smrg 18832001f49Smrg printMESA (bool (_Zero)); 18932001f49Smrg printMESA (bool (_One)); 19032001f49Smrg printMESA (bool (_Two)); 19132001f49Smrg printMESA (bool (_MinusThree)); 19232001f49Smrg printMESA (bool (45.99)); 19332001f49Smrg printMESA (bool (-6.17)); 19432001f49Smrg printMESA (bool (0.0001)); 19532001f49Smrg printMESA (bool (0.0)); 19632001f49Smrg 19732001f49Smrg printMESA (int (_Zero)); 19832001f49Smrg printMESA (int (_One)); 19932001f49Smrg printMESA (int (_Two)); 20032001f49Smrg printMESA (int (_MinusThree)); 20132001f49Smrg printMESA (int (45.99)); 20232001f49Smrg printMESA (int (45.22)); 20332001f49Smrg printMESA (int (-6.17)); 20432001f49Smrg printMESA (int (-6.87)); 20532001f49Smrg} 20632001f49Smrg 20732001f49Smrg$output 20832001f49Smrg 20932001f49Smrg0.0 21032001f49Smrg1.1 21132001f49Smrg2.2 21232001f49Smrg-3.3 21332001f49Smrg 21432001f49Smrg0.0 21532001f49Smrg1.1 21632001f49Smrg2.2 21732001f49Smrg-3.3 21832001f49Smrg45.99 21932001f49Smrg-6.17 22032001f49Smrg 22132001f49Smrgfalse 22232001f49Smrgtrue 22332001f49Smrgtrue 22432001f49Smrgtrue 22532001f49Smrgtrue 22632001f49Smrgtrue 22732001f49Smrgtrue 22832001f49Smrgfalse 22932001f49Smrg 23032001f49Smrg0 23132001f49Smrg1 23232001f49Smrg2 23332001f49Smrg-3 23432001f49Smrg45 23532001f49Smrg45 23632001f49Smrg-6 23732001f49Smrg-6 23832001f49Smrg 23932001f49Smrg$ /* 24032001f49Smrg$ -------------------------------------------------------------------------------------------------- 24132001f49Smrg$ Test vector swizzles. 24232001f49Smrg$ */ 24332001f49Smrg 24432001f49Smrg$program SWIZZLE TEST 24532001f49Smrg 24632001f49Smrg$attrib gl_Vertex 24732001f49Smrg0.0 0.0 0.0 1.0 24832001f49Smrg 24932001f49Smrg$attrib _One 25032001f49Smrg1.1 1.2 1.3 1.4 25132001f49Smrg 25232001f49Smrg$attrib _Two 25332001f49Smrg2.1 2.2 2.3 2.4 25432001f49Smrg 25532001f49Smrg$vertex 25632001f49Smrg 25732001f49Smrg$code 25832001f49Smrg 25932001f49Smrg#version 110 26032001f49Smrg 26132001f49Smrg#extension MESA_shader_debug: require 26232001f49Smrg 26332001f49Smrgattribute vec4 _One; 26432001f49Smrgattribute vec4 _Two; 26532001f49Smrg 26632001f49Smrgvoid assign5678 (out vec4 v) 26732001f49Smrg{ 26832001f49Smrg v.x = 5.5; 26932001f49Smrg v.y = 6.6; 27032001f49Smrg v.z = 7.7; 27132001f49Smrg v.w = 8.8; 27232001f49Smrg} 27332001f49Smrg 27432001f49Smrgvoid main () { 27532001f49Smrg gl_Position = gl_ModelViewMatrix * gl_Vertex; 27632001f49Smrg gl_FrontColor = vec4 (1.0); 27732001f49Smrg 27832001f49Smrg printMESA (_One); 27932001f49Smrg printMESA (_Two); 28032001f49Smrg 28132001f49Smrg printMESA (_One.x); 28232001f49Smrg printMESA (_One.y); 28332001f49Smrg printMESA (_One.z); 28432001f49Smrg printMESA (_One.w); 28532001f49Smrg 28632001f49Smrg printMESA (_Two.xy); 28732001f49Smrg printMESA (_Two.yx); 28832001f49Smrg printMESA (_Two.xw); 28932001f49Smrg printMESA (_Two.wx); 29032001f49Smrg printMESA (_Two.yz); 29132001f49Smrg printMESA (_Two.zy); 29232001f49Smrg printMESA (_Two.xz); 29332001f49Smrg printMESA (_Two.zx); 29432001f49Smrg printMESA (_Two.zw); 29532001f49Smrg printMESA (_Two.wz); 29632001f49Smrg 29732001f49Smrg printMESA (_One.xyz); 29832001f49Smrg printMESA (_One.yzx); 29932001f49Smrg printMESA (_One.zxy); 30032001f49Smrg printMESA (_One.xzy); 30132001f49Smrg printMESA (_One.yzw); 30232001f49Smrg printMESA (_One.zwx); 30332001f49Smrg 30432001f49Smrg printMESA (_Two.xyzw); 30532001f49Smrg printMESA (_Two.yzwx); 30632001f49Smrg printMESA (_Two.wzyx); 30732001f49Smrg printMESA (_Two.zwyx); 30832001f49Smrg 30932001f49Smrg printMESA (_One.xx); 31032001f49Smrg printMESA (_One.zz); 31132001f49Smrg printMESA (_One.ww); 31232001f49Smrg 31332001f49Smrg printMESA (_Two.xxx); 31432001f49Smrg printMESA (_Two.yyy); 31532001f49Smrg printMESA (_Two.www); 31632001f49Smrg 31732001f49Smrg printMESA (_One.xxxx); 31832001f49Smrg printMESA (_One.zzzz); 31932001f49Smrg 32032001f49Smrg printMESA (_Two.xxyy); 32132001f49Smrg printMESA (_Two.wwxx); 32232001f49Smrg printMESA (_Two.zxxw); 32332001f49Smrg 32432001f49Smrg vec4 v; 32532001f49Smrg 32632001f49Smrg v.zxwy = vec4 (5.5, 6.6, 7.7, 8.8); 32732001f49Smrg printMESA (v); 32832001f49Smrg 32932001f49Smrg assign5678 (v.ywxz); 33032001f49Smrg printMESA (v); 33132001f49Smrg} 33232001f49Smrg 33332001f49Smrg$output 33432001f49Smrg 33532001f49Smrg1.1 33632001f49Smrg1.2 33732001f49Smrg1.3 33832001f49Smrg1.4 33932001f49Smrg2.1 34032001f49Smrg2.2 34132001f49Smrg2.3 34232001f49Smrg2.4 34332001f49Smrg 34432001f49Smrg1.1 34532001f49Smrg1.2 34632001f49Smrg1.3 34732001f49Smrg1.4 34832001f49Smrg 34932001f49Smrg2.1 35032001f49Smrg2.2 35132001f49Smrg2.2 35232001f49Smrg2.1 35332001f49Smrg2.1 35432001f49Smrg2.4 35532001f49Smrg2.4 35632001f49Smrg2.1 35732001f49Smrg2.2 35832001f49Smrg2.3 35932001f49Smrg2.3 36032001f49Smrg2.2 36132001f49Smrg2.1 36232001f49Smrg2.3 36332001f49Smrg2.3 36432001f49Smrg2.1 36532001f49Smrg2.3 36632001f49Smrg2.4 36732001f49Smrg2.4 36832001f49Smrg2.3 36932001f49Smrg 37032001f49Smrg1.1 37132001f49Smrg1.2 37232001f49Smrg1.3 37332001f49Smrg1.2 37432001f49Smrg1.3 37532001f49Smrg1.1 37632001f49Smrg1.3 37732001f49Smrg1.1 37832001f49Smrg1.2 37932001f49Smrg1.1 38032001f49Smrg1.3 38132001f49Smrg1.2 38232001f49Smrg1.2 38332001f49Smrg1.3 38432001f49Smrg1.4 38532001f49Smrg1.3 38632001f49Smrg1.4 38732001f49Smrg1.1 38832001f49Smrg 38932001f49Smrg2.1 39032001f49Smrg2.2 39132001f49Smrg2.3 39232001f49Smrg2.4 39332001f49Smrg2.2 39432001f49Smrg2.3 39532001f49Smrg2.4 39632001f49Smrg2.1 39732001f49Smrg2.4 39832001f49Smrg2.3 39932001f49Smrg2.2 40032001f49Smrg2.1 40132001f49Smrg2.3 40232001f49Smrg2.4 40332001f49Smrg2.2 40432001f49Smrg2.1 40532001f49Smrg 40632001f49Smrg1.1 40732001f49Smrg1.1 40832001f49Smrg1.3 40932001f49Smrg1.3 41032001f49Smrg1.4 41132001f49Smrg1.4 41232001f49Smrg 41332001f49Smrg2.1 41432001f49Smrg2.1 41532001f49Smrg2.1 41632001f49Smrg2.2 41732001f49Smrg2.2 41832001f49Smrg2.2 41932001f49Smrg2.4 42032001f49Smrg2.4 42132001f49Smrg2.4 42232001f49Smrg 42332001f49Smrg1.1 42432001f49Smrg1.1 42532001f49Smrg1.1 42632001f49Smrg1.1 42732001f49Smrg1.3 42832001f49Smrg1.3 42932001f49Smrg1.3 43032001f49Smrg1.3 43132001f49Smrg 43232001f49Smrg2.1 43332001f49Smrg2.1 43432001f49Smrg2.2 43532001f49Smrg2.2 43632001f49Smrg2.4 43732001f49Smrg2.4 43832001f49Smrg2.1 43932001f49Smrg2.1 44032001f49Smrg2.3 44132001f49Smrg2.1 44232001f49Smrg2.1 44332001f49Smrg2.4 44432001f49Smrg 44532001f49Smrg6.6 44632001f49Smrg8.8 44732001f49Smrg5.5 44832001f49Smrg7.7 44932001f49Smrg 45032001f49Smrg7.7 45132001f49Smrg5.5 45232001f49Smrg8.8 45332001f49Smrg6.6 45432001f49Smrg 45532001f49Smrg 45632001f49Smrg$ /* 45732001f49Smrg$ -------------------------------------------------------------------------------------------------- 45832001f49Smrg$ Test relational operators. 45932001f49Smrg$ */ 46032001f49Smrg 46132001f49Smrg$program RELATIONAL OPERATOR TEST 46232001f49Smrg 46332001f49Smrg$attrib gl_Vertex 46432001f49Smrg0.0 0.0 0.0 1.0 46532001f49Smrg 46632001f49Smrg$attrib _Two 46732001f49Smrg2.0 0.0 0.0 0.0 46832001f49Smrg 46932001f49Smrg$attrib _Two2 47032001f49Smrg2.0 0.0 0.0 0.0 47132001f49Smrg 47232001f49Smrg$attrib _MinusThree 47332001f49Smrg-3.0 0.0 0.0 0.0 47432001f49Smrg 47532001f49Smrg$vertex 47632001f49Smrg 47732001f49Smrg$code 47832001f49Smrg 47932001f49Smrg#version 110 48032001f49Smrg 48132001f49Smrg#extension MESA_shader_debug: require 48232001f49Smrg 48332001f49Smrgattribute float _Two; 48432001f49Smrgattribute float _Two2; 48532001f49Smrgattribute float _MinusThree; 48632001f49Smrg 48732001f49Smrgstruct foo 48832001f49Smrg{ 48932001f49Smrg float f; 49032001f49Smrg vec4 v4; 49132001f49Smrg vec3 v3; 49232001f49Smrg mat4 m4; 49332001f49Smrg int i; 49432001f49Smrg bool b; 49532001f49Smrg}; 49632001f49Smrg 49732001f49Smrgvoid printMESA (const in foo bar) 49832001f49Smrg{ 49932001f49Smrg printMESA (bar.f); 50032001f49Smrg printMESA (bar.v4); 50132001f49Smrg printMESA (bar.v3); 50232001f49Smrg printMESA (bar.m4); 50332001f49Smrg printMESA (bar.i); 50432001f49Smrg printMESA (bar.b); 50532001f49Smrg} 50632001f49Smrg 50732001f49Smrgvoid main () { 50832001f49Smrg gl_Position = gl_ModelViewMatrix * gl_Vertex; 50932001f49Smrg gl_FrontColor = vec4 (1.0); 51032001f49Smrg 51132001f49Smrg int iTwo = int (_Two); 51232001f49Smrg int iTwo2 = int (_Two2); 51332001f49Smrg int iMinusThree = int (_MinusThree); 51432001f49Smrg 51532001f49Smrg printMESA (_Two <= _Two); 51632001f49Smrg printMESA (_Two <= _Two2); 51732001f49Smrg printMESA (_Two <= _MinusThree); 51832001f49Smrg printMESA (_MinusThree <= _Two); 51932001f49Smrg printMESA (iTwo <= iTwo); 52032001f49Smrg printMESA (iTwo <= iTwo2); 52132001f49Smrg printMESA (iTwo <= iMinusThree); 52232001f49Smrg printMESA (iMinusThree <= iTwo); 52332001f49Smrg 52432001f49Smrg printMESA (_Two >= _Two); 52532001f49Smrg printMESA (_Two >= _Two2); 52632001f49Smrg printMESA (_Two >= _MinusThree); 52732001f49Smrg printMESA (_MinusThree >= _Two); 52832001f49Smrg printMESA (iTwo >= iTwo); 52932001f49Smrg printMESA (iTwo >= iTwo2); 53032001f49Smrg printMESA (iTwo >= iMinusThree); 53132001f49Smrg printMESA (iMinusThree >= iTwo); 53232001f49Smrg 53332001f49Smrg printMESA (_Two < _Two); 53432001f49Smrg printMESA (_Two < _Two2); 53532001f49Smrg printMESA (_Two < _MinusThree); 53632001f49Smrg printMESA (_MinusThree < _Two); 53732001f49Smrg printMESA (iTwo < iTwo); 53832001f49Smrg printMESA (iTwo < iTwo2); 53932001f49Smrg printMESA (iTwo < iMinusThree); 54032001f49Smrg printMESA (iMinusThree < iTwo); 54132001f49Smrg 54232001f49Smrg printMESA (_Two > _Two); 54332001f49Smrg printMESA (_Two > _Two2); 54432001f49Smrg printMESA (_Two > _MinusThree); 54532001f49Smrg printMESA (_MinusThree > _Two); 54632001f49Smrg printMESA (iTwo > iTwo); 54732001f49Smrg printMESA (iTwo > iTwo2); 54832001f49Smrg printMESA (iTwo > iMinusThree); 54932001f49Smrg printMESA (iMinusThree > iTwo); 55032001f49Smrg 55132001f49Smrg printMESA (_Two == _Two); 55232001f49Smrg printMESA (_Two == _Two2); 55332001f49Smrg printMESA (_Two == _MinusThree); 55432001f49Smrg printMESA (_MinusThree == _MinusThree); 55532001f49Smrg printMESA (iTwo == iTwo); 55632001f49Smrg printMESA (iTwo == iTwo2); 55732001f49Smrg printMESA (iTwo == iMinusThree); 55832001f49Smrg printMESA (iMinusThree == iMinusThree); 55932001f49Smrg 56032001f49Smrg printMESA (_Two != _Two); 56132001f49Smrg printMESA (_Two != _Two2); 56232001f49Smrg printMESA (_Two != _MinusThree); 56332001f49Smrg printMESA (_MinusThree != _MinusThree); 56432001f49Smrg printMESA (iTwo != iTwo); 56532001f49Smrg printMESA (iTwo != iTwo2); 56632001f49Smrg printMESA (iTwo != iMinusThree); 56732001f49Smrg printMESA (iMinusThree != iMinusThree); 56832001f49Smrg 56932001f49Smrg foo foo1; 57032001f49Smrg foo1.f = 13.31; 57132001f49Smrg foo1.v4 = vec4 (44.11, 44.22, 44.33, 44.44); 57232001f49Smrg foo1.v3 = vec3 (33.11, 33.22, 33.33); 57332001f49Smrg foo1.m4 = mat4 (17.88); 57432001f49Smrg foo1.i = 666; 57532001f49Smrg foo1.b = true; 57632001f49Smrg printMESA (foo1); 57732001f49Smrg 57832001f49Smrg // make foo2 the same as foo1 57932001f49Smrg foo foo2; 58032001f49Smrg foo2.f = 13.31; 58132001f49Smrg foo2.v4 = vec4 (44.11, 44.22, 44.33, 44.44); 58232001f49Smrg foo2.v3 = vec3 (33.11, 33.22, 33.33); 58332001f49Smrg foo2.m4 = mat4 (17.88); 58432001f49Smrg foo2.i = 666; 58532001f49Smrg foo2.b = true; 58632001f49Smrg 58732001f49Smrg printMESA (foo1 == foo2); 58832001f49Smrg printMESA (foo1 != foo2); 58932001f49Smrg 59032001f49Smrg // make them a little bit different 59132001f49Smrg foo2.m4[2].y = 333.333; 59232001f49Smrg printMESA (foo2); 59332001f49Smrg 59432001f49Smrg printMESA (foo1 == foo2); 59532001f49Smrg printMESA (foo1 != foo2); 59632001f49Smrg} 59732001f49Smrg 59832001f49Smrg$output 59932001f49Smrg 60032001f49Smrgtrue 60132001f49Smrgtrue 60232001f49Smrgfalse 60332001f49Smrgtrue 60432001f49Smrgtrue 60532001f49Smrgtrue 60632001f49Smrgfalse 60732001f49Smrgtrue 60832001f49Smrg 60932001f49Smrgtrue 61032001f49Smrgtrue 61132001f49Smrgtrue 61232001f49Smrgfalse 61332001f49Smrgtrue 61432001f49Smrgtrue 61532001f49Smrgtrue 61632001f49Smrgfalse 61732001f49Smrg 61832001f49Smrgfalse 61932001f49Smrgfalse 62032001f49Smrgfalse 62132001f49Smrgtrue 62232001f49Smrgfalse 62332001f49Smrgfalse 62432001f49Smrgfalse 62532001f49Smrgtrue 62632001f49Smrg 62732001f49Smrgfalse 62832001f49Smrgfalse 62932001f49Smrgtrue 63032001f49Smrgfalse 63132001f49Smrgfalse 63232001f49Smrgfalse 63332001f49Smrgtrue 63432001f49Smrgfalse 63532001f49Smrg 63632001f49Smrgtrue 63732001f49Smrgtrue 63832001f49Smrgfalse 63932001f49Smrgtrue 64032001f49Smrgtrue 64132001f49Smrgtrue 64232001f49Smrgfalse 64332001f49Smrgtrue 64432001f49Smrg 64532001f49Smrgfalse 64632001f49Smrgfalse 64732001f49Smrgtrue 64832001f49Smrgfalse 64932001f49Smrgfalse 65032001f49Smrgfalse 65132001f49Smrgtrue 65232001f49Smrgfalse 65332001f49Smrg 65432001f49Smrg13.31 65532001f49Smrg44.11 65632001f49Smrg44.22 65732001f49Smrg44.33 65832001f49Smrg44.44 65932001f49Smrg33.11 66032001f49Smrg33.22 66132001f49Smrg33.33 66232001f49Smrg17.88 66332001f49Smrg0.0 66432001f49Smrg0.0 66532001f49Smrg0.0 66632001f49Smrg0.0 66732001f49Smrg17.88 66832001f49Smrg0.0 66932001f49Smrg0.0 67032001f49Smrg0.0 67132001f49Smrg0.0 67232001f49Smrg17.88 67332001f49Smrg0.0 67432001f49Smrg0.0 67532001f49Smrg0.0 67632001f49Smrg0.0 67732001f49Smrg17.88 67832001f49Smrg666 67932001f49Smrgtrue 68032001f49Smrg 68132001f49Smrgtrue 68232001f49Smrgfalse 68332001f49Smrg 68432001f49Smrg13.31 68532001f49Smrg44.11 68632001f49Smrg44.22 68732001f49Smrg44.33 68832001f49Smrg44.44 68932001f49Smrg33.11 69032001f49Smrg33.22 69132001f49Smrg33.33 69232001f49Smrg17.88 69332001f49Smrg0.0 69432001f49Smrg0.0 69532001f49Smrg0.0 69632001f49Smrg0.0 69732001f49Smrg17.88 69832001f49Smrg0.0 69932001f49Smrg0.0 70032001f49Smrg0.0 70132001f49Smrg333.333 70232001f49Smrg17.88 70332001f49Smrg0.0 70432001f49Smrg0.0 70532001f49Smrg0.0 70632001f49Smrg0.0 70732001f49Smrg17.88 70832001f49Smrg666 70932001f49Smrgtrue 71032001f49Smrg 71132001f49Smrgfalse 71232001f49Smrgtrue 71332001f49Smrg 71432001f49Smrg 71532001f49Smrg$ /* 71632001f49Smrg$ -------------------------------------------------------------------------------------------------- 71732001f49Smrg$ Test logical operators. 71832001f49Smrg$ */ 71932001f49Smrg 72032001f49Smrg$program LOGICAL OPERATOR TEST 72132001f49Smrg 72232001f49Smrg$attrib gl_Vertex 72332001f49Smrg0.0 0.0 0.0 1.0 72432001f49Smrg 72532001f49Smrg$attrib _False 72632001f49Smrg0.0 0.0 0.0 0.0 72732001f49Smrg 72832001f49Smrg$attrib _True 72932001f49Smrg1.0 0.0 0.0 0.0 73032001f49Smrg 73132001f49Smrg$attrib _False2 73232001f49Smrg0.0 0.0 0.0 0.0 73332001f49Smrg 73432001f49Smrg$attrib _True2 73532001f49Smrg1.0 0.0 0.0 0.0 73632001f49Smrg 73732001f49Smrg$vertex 73832001f49Smrg 73932001f49Smrg$code 74032001f49Smrg 74132001f49Smrg#version 110 74232001f49Smrg 74332001f49Smrg#extension MESA_shader_debug: require 74432001f49Smrg 74532001f49Smrgattribute float _False; 74632001f49Smrgattribute float _True; 74732001f49Smrgattribute float _False2; 74832001f49Smrgattribute float _True2; 74932001f49Smrg 75032001f49Smrgvoid main () { 75132001f49Smrg gl_Position = gl_ModelViewMatrix * gl_Vertex; 75232001f49Smrg gl_FrontColor = vec4 (1.0); 75332001f49Smrg 75432001f49Smrg printMESA (_False); 75532001f49Smrg printMESA (_True); 75632001f49Smrg printMESA (_False2); 75732001f49Smrg printMESA (_True2); 75832001f49Smrg 75932001f49Smrg bool False = bool (_False); 76032001f49Smrg bool True = bool (_True); 76132001f49Smrg bool False2 = bool (_False2); 76232001f49Smrg bool True2 = bool (_True2); 76332001f49Smrg 76432001f49Smrg // 76532001f49Smrg // It is important to test each operator with the following argument types: 76632001f49Smrg // * Both arguments are different variables, even if they have the same values. 76732001f49Smrg // False and False2 are distinct attributes, but are the same in value. 76832001f49Smrg // * Both arguments may be the same variables. This case tests possible 76932001f49Smrg // optimizations, e.g. X && X --> X. 77032001f49Smrg // * Both arguments are constant. This tests constant folding. 77132001f49Smrg // 77232001f49Smrg 77332001f49Smrg printMESA (!False); 77432001f49Smrg printMESA (!True); 77532001f49Smrg printMESA (!false); 77632001f49Smrg printMESA (!true); 77732001f49Smrg 77832001f49Smrg printMESA (False ^^ False2); 77932001f49Smrg printMESA (False ^^ True2); 78032001f49Smrg printMESA (True ^^ False2); 78132001f49Smrg printMESA (True ^^ True2); 78232001f49Smrg printMESA (False ^^ False); 78332001f49Smrg printMESA (False ^^ True); 78432001f49Smrg printMESA (True ^^ False); 78532001f49Smrg printMESA (True ^^ True); 78632001f49Smrg printMESA (false ^^ false); 78732001f49Smrg printMESA (false ^^ true); 78832001f49Smrg printMESA (true ^^ false); 78932001f49Smrg printMESA (true ^^ true); 79032001f49Smrg 79132001f49Smrg printMESA (False && False2); 79232001f49Smrg printMESA (False && True2); 79332001f49Smrg printMESA (True && False2); 79432001f49Smrg printMESA (True && True2); 79532001f49Smrg printMESA (False && False); 79632001f49Smrg printMESA (False && True); 79732001f49Smrg printMESA (True && False); 79832001f49Smrg printMESA (True && True); 79932001f49Smrg printMESA (false && false); 80032001f49Smrg printMESA (false && true); 80132001f49Smrg printMESA (true && false); 80232001f49Smrg printMESA (true && true); 80332001f49Smrg 80432001f49Smrg printMESA (False || False2); 80532001f49Smrg printMESA (False || True2); 80632001f49Smrg printMESA (True || False2); 80732001f49Smrg printMESA (True || True2); 80832001f49Smrg printMESA (False || False); 80932001f49Smrg printMESA (False || True); 81032001f49Smrg printMESA (True || False); 81132001f49Smrg printMESA (True || True); 81232001f49Smrg printMESA (false || false); 81332001f49Smrg printMESA (false || true); 81432001f49Smrg printMESA (true || false); 81532001f49Smrg printMESA (true || true); 81632001f49Smrg 81732001f49Smrg // 81832001f49Smrg // Test short-circuit evaluation of && and ||. The right expression evaluation depends 81932001f49Smrg // on the value of the left expression. If the right expression has side effects, we 82032001f49Smrg // can easily test if it happened. 82132001f49Smrg // 82232001f49Smrg 82332001f49Smrg bool x; 82432001f49Smrg 82532001f49Smrg x = false; 82632001f49Smrg printMESA (x); 82732001f49Smrg printMESA (False && (x = true)); 82832001f49Smrg printMESA (x); 82932001f49Smrg 83032001f49Smrg x = false; 83132001f49Smrg printMESA (x); 83232001f49Smrg printMESA (false && (x = true)); 83332001f49Smrg printMESA (x); 83432001f49Smrg 83532001f49Smrg x = true; 83632001f49Smrg printMESA (x); 83732001f49Smrg printMESA (True || (x = false)); 83832001f49Smrg printMESA (x); 83932001f49Smrg 84032001f49Smrg x = true; 84132001f49Smrg printMESA (x); 84232001f49Smrg printMESA (true || (x = false)); 84332001f49Smrg printMESA (x); 84432001f49Smrg} 84532001f49Smrg 84632001f49Smrg$output 84732001f49Smrg 84832001f49Smrg0.0 84932001f49Smrg1.0 85032001f49Smrg0.0 85132001f49Smrg1.0 85232001f49Smrg 85332001f49Smrgtrue 85432001f49Smrgfalse 85532001f49Smrgtrue 85632001f49Smrgfalse 85732001f49Smrg 85832001f49Smrgfalse 85932001f49Smrgtrue 86032001f49Smrgtrue 86132001f49Smrgfalse 86232001f49Smrgfalse 86332001f49Smrgtrue 86432001f49Smrgtrue 86532001f49Smrgfalse 86632001f49Smrgfalse 86732001f49Smrgtrue 86832001f49Smrgtrue 86932001f49Smrgfalse 87032001f49Smrg 87132001f49Smrgfalse 87232001f49Smrgfalse 87332001f49Smrgfalse 87432001f49Smrgtrue 87532001f49Smrgfalse 87632001f49Smrgfalse 87732001f49Smrgfalse 87832001f49Smrgtrue 87932001f49Smrgfalse 88032001f49Smrgfalse 88132001f49Smrgfalse 88232001f49Smrgtrue 88332001f49Smrg 88432001f49Smrgfalse 88532001f49Smrgtrue 88632001f49Smrgtrue 88732001f49Smrgtrue 88832001f49Smrgfalse 88932001f49Smrgtrue 89032001f49Smrgtrue 89132001f49Smrgtrue 89232001f49Smrgfalse 89332001f49Smrgtrue 89432001f49Smrgtrue 89532001f49Smrgtrue 89632001f49Smrg 89732001f49Smrgfalse 89832001f49Smrgfalse 89932001f49Smrgfalse 90032001f49Smrg 90132001f49Smrgfalse 90232001f49Smrgfalse 90332001f49Smrgfalse 90432001f49Smrg 90532001f49Smrgtrue 90632001f49Smrgtrue 90732001f49Smrgtrue 90832001f49Smrg 90932001f49Smrgtrue 91032001f49Smrgtrue 91132001f49Smrgtrue 91232001f49Smrg 91332001f49Smrg 91432001f49Smrg$ /* 91532001f49Smrg$ -------------------------------------------------------------------------------------------------- 91632001f49Smrg$ Test subscript operator/array access. 91732001f49Smrg$ */ 91832001f49Smrg 91932001f49Smrg$program ARRAY ACCESS TEST 92032001f49Smrg 92132001f49Smrg$attrib gl_Vertex 92232001f49Smrg0.0 0.0 0.0 1.0 92332001f49Smrg 92432001f49Smrg$attrib _Zero 92532001f49Smrg0.0 0.0 0.0 0.0 92632001f49Smrg 92732001f49Smrg$attrib _One 92832001f49Smrg1.1 0.0 0.0 0.0 92932001f49Smrg 93032001f49Smrg$attrib _Two 93132001f49Smrg2.9 0.0 0.0 0.0 93232001f49Smrg 93332001f49Smrg$attrib _Vec 93432001f49Smrg11.11 22.22 33.33 44.44 93532001f49Smrg 93632001f49Smrg$vertex 93732001f49Smrg 93832001f49Smrg$code 93932001f49Smrg 94032001f49Smrg#version 110 94132001f49Smrg 94232001f49Smrg#extension MESA_shader_debug: require 94332001f49Smrg 94432001f49Smrgattribute float _Zero; 94532001f49Smrgattribute float _One; 94632001f49Smrgattribute float _Two; 94732001f49Smrgattribute vec4 _Vec; 94832001f49Smrg 94932001f49Smrgvoid main () { 95032001f49Smrg gl_Position = gl_ModelViewMatrix * gl_Vertex; 95132001f49Smrg gl_FrontColor = vec4 (1.0); 95232001f49Smrg 95332001f49Smrg printMESA (_Zero); 95432001f49Smrg printMESA (_One); 95532001f49Smrg printMESA (_Two); 95632001f49Smrg printMESA (_Vec); 95732001f49Smrg 95832001f49Smrg printMESA (_Vec[0]); 95932001f49Smrg printMESA (_Vec[1]); 96032001f49Smrg printMESA (_Vec[2]); 96132001f49Smrg printMESA (_Vec[3]); 96232001f49Smrg 96332001f49Smrg printMESA (_Vec[int (_Zero)]); 96432001f49Smrg printMESA (_Vec[int (_One)]); 96532001f49Smrg printMESA (_Vec[int (_Two)]); 96632001f49Smrg} 96732001f49Smrg 96832001f49Smrg$output 96932001f49Smrg 97032001f49Smrg0.0 97132001f49Smrg1.1 97232001f49Smrg2.9 97332001f49Smrg11.11 97432001f49Smrg22.22 97532001f49Smrg33.33 97632001f49Smrg44.44 97732001f49Smrg 97832001f49Smrg11.11 97932001f49Smrg22.22 98032001f49Smrg33.33 98132001f49Smrg44.44 98232001f49Smrg 98332001f49Smrg11.11 98432001f49Smrg22.22 98532001f49Smrg33.33 98632001f49Smrg 98732001f49Smrg 98832001f49Smrg$ /* 98932001f49Smrg$ -------------------------------------------------------------------------------------------------- 99032001f49Smrg$ Test pre/post-increment/decrement operators. 99132001f49Smrg$ Note: assumes relational operators being correct. 99232001f49Smrg$ */ 99332001f49Smrg 99432001f49Smrg$program PRE/POST-INC/DEC OPERATOR TEST 99532001f49Smrg 99632001f49Smrg$attrib gl_Vertex 99732001f49Smrg0.0 0.0 0.0 1.0 99832001f49Smrg 99932001f49Smrg$attrib _Zero 100032001f49Smrg0.0 0.0 0.0 0.0 100132001f49Smrg 100232001f49Smrg$attrib _One 100332001f49Smrg1.1 0.0 0.0 0.0 100432001f49Smrg 100532001f49Smrg$attrib _Two4 100632001f49Smrg2.1 2.2 2.3 2.4 100732001f49Smrg 100832001f49Smrg$vertex 100932001f49Smrg 101032001f49Smrg$code 101132001f49Smrg 101232001f49Smrg#version 110 101332001f49Smrg 101432001f49Smrg#extension MESA_shader_debug: require 101532001f49Smrg 101632001f49Smrgattribute float _Zero; 101732001f49Smrgattribute float _One; 101832001f49Smrgattribute vec4 _Two4; 101932001f49Smrg 102032001f49Smrgfloat fZero, fOne; 102132001f49Smrgvec4 fTwo4; 102232001f49Smrgint iZero, iOne; 102332001f49Smrgivec4 iTwo4; 102432001f49Smrg 102532001f49Smrgvoid reset () { 102632001f49Smrg fZero = _Zero; 102732001f49Smrg fOne = _One; 102832001f49Smrg fTwo4 = _Two4; 102932001f49Smrg iZero = int (_Zero); 103032001f49Smrg iOne = int (_One); 103132001f49Smrg iTwo4 = ivec4 (_Two4); 103232001f49Smrg} 103332001f49Smrg 103432001f49Smrgvoid main () { 103532001f49Smrg gl_Position = gl_ModelViewMatrix * gl_Vertex; 103632001f49Smrg gl_FrontColor = vec4 (1.0); 103732001f49Smrg 103832001f49Smrg printMESA (_Zero); 103932001f49Smrg printMESA (_One); 104032001f49Smrg printMESA (_Two4); 104132001f49Smrg 104232001f49Smrg // pre-increment 104332001f49Smrg reset (); 104432001f49Smrg printMESA (++fZero); 104532001f49Smrg printMESA (++fOne); 104632001f49Smrg printMESA (++iZero); 104732001f49Smrg printMESA (++iOne); 104832001f49Smrg printMESA (fZero); 104932001f49Smrg printMESA (fOne); 105032001f49Smrg printMESA (iZero); 105132001f49Smrg printMESA (iOne); 105232001f49Smrg printMESA (++fTwo4 == _Two4 + 1.0); 105332001f49Smrg printMESA (++iTwo4 == ivec4 (_Two4) + 1); 105432001f49Smrg 105532001f49Smrg // pre-decrement 105632001f49Smrg reset (); 105732001f49Smrg printMESA (--fZero); 105832001f49Smrg printMESA (--fOne); 105932001f49Smrg printMESA (--iZero); 106032001f49Smrg printMESA (--iOne); 106132001f49Smrg printMESA (fZero); 106232001f49Smrg printMESA (fOne); 106332001f49Smrg printMESA (iZero); 106432001f49Smrg printMESA (iOne); 106532001f49Smrg printMESA (--fTwo4 == _Two4 - 1.0); 106632001f49Smrg printMESA (--iTwo4 == ivec4 (_Two4) - 1); 106732001f49Smrg 106832001f49Smrg // post-increment 106932001f49Smrg reset (); 107032001f49Smrg printMESA (fZero++); 107132001f49Smrg printMESA (fOne++); 107232001f49Smrg printMESA (iZero++); 107332001f49Smrg printMESA (iOne++); 107432001f49Smrg printMESA (fZero); 107532001f49Smrg printMESA (fOne); 107632001f49Smrg printMESA (iZero); 107732001f49Smrg printMESA (iOne); 107832001f49Smrg printMESA (fTwo4++ == _Two4); 107932001f49Smrg printMESA (iTwo4++ == ivec4 (_Two4)); 108032001f49Smrg 108132001f49Smrg // post-decrement 108232001f49Smrg reset (); 108332001f49Smrg printMESA (fZero--); 108432001f49Smrg printMESA (fOne--); 108532001f49Smrg printMESA (iZero--); 108632001f49Smrg printMESA (iOne--); 108732001f49Smrg printMESA (fZero); 108832001f49Smrg printMESA (fOne); 108932001f49Smrg printMESA (iZero); 109032001f49Smrg printMESA (iOne); 109132001f49Smrg printMESA (fTwo4-- == _Two4); 109232001f49Smrg printMESA (iTwo4-- == ivec4 (_Two4)); 109332001f49Smrg} 109432001f49Smrg 109532001f49Smrg$output 109632001f49Smrg 109732001f49Smrg0.0 109832001f49Smrg1.1 109932001f49Smrg2.1 110032001f49Smrg2.2 110132001f49Smrg2.3 110232001f49Smrg2.4 110332001f49Smrg 110432001f49Smrg1.0 110532001f49Smrg2.1 110632001f49Smrg1 110732001f49Smrg2 110832001f49Smrg1.0 110932001f49Smrg2.1 111032001f49Smrg1 111132001f49Smrg2 111232001f49Smrgtrue 111332001f49Smrgtrue 111432001f49Smrg 111532001f49Smrg-1.0 111632001f49Smrg0.1 111732001f49Smrg-1 111832001f49Smrg0 111932001f49Smrg-1.0 112032001f49Smrg0.1 112132001f49Smrg-1 112232001f49Smrg0 112332001f49Smrgtrue 112432001f49Smrgtrue 112532001f49Smrg 112632001f49Smrg0.0 112732001f49Smrg1.1 112832001f49Smrg0 112932001f49Smrg1 113032001f49Smrg1.0 113132001f49Smrg2.1 113232001f49Smrg1 113332001f49Smrg2 113432001f49Smrgtrue 113532001f49Smrgtrue 113632001f49Smrg 113732001f49Smrg0.0 113832001f49Smrg1.1 113932001f49Smrg0 114032001f49Smrg1 114132001f49Smrg-1.0 114232001f49Smrg0.1 114332001f49Smrg-1 114432001f49Smrg0 114532001f49Smrgtrue 114632001f49Smrgtrue 114732001f49Smrg 114832001f49Smrg 114932001f49Smrg$ /* 115032001f49Smrg$ -------------------------------------------------------------------------------------------------- 115132001f49Smrg$ Test arithmetical operators. 115232001f49Smrg$ */ 115332001f49Smrg 115432001f49Smrg$program ARITHMETICAL OPERATOR TEST 115532001f49Smrg 115632001f49Smrg$attrib gl_Vertex 115732001f49Smrg0.0 0.0 0.0 1.0 115832001f49Smrg 115932001f49Smrg$attrib _Zero 116032001f49Smrg0.0 0.0 0.0 0.0 116132001f49Smrg 116232001f49Smrg$attrib _One 116332001f49Smrg1.1 0.0 0.0 0.0 116432001f49Smrg 116532001f49Smrg$attrib _Two4 116632001f49Smrg2.1 2.2 2.3 2.4 116732001f49Smrg 116832001f49Smrg$vertex 116932001f49Smrg 117032001f49Smrg$code 117132001f49Smrg 117232001f49Smrg#version 110 117332001f49Smrg 117432001f49Smrg#extension MESA_shader_debug: require 117532001f49Smrg 117632001f49Smrgattribute float _Zero; 117732001f49Smrgattribute float _One; 117832001f49Smrgattribute vec4 _Two4; 117932001f49Smrg 118032001f49Smrgvoid main () { 118132001f49Smrg gl_Position = gl_ModelViewMatrix * gl_Vertex; 118232001f49Smrg gl_FrontColor = vec4 (1.0); 118332001f49Smrg 118432001f49Smrg printMESA (_Zero); 118532001f49Smrg printMESA (_One); 118632001f49Smrg printMESA (_Two4); 118732001f49Smrg 118832001f49Smrg int iZero = int (_Zero); 118932001f49Smrg int iOne = int (_One); 119032001f49Smrg ivec4 iTwo4 = ivec4 (_Two4); 119132001f49Smrg 119232001f49Smrg printMESA (-_Zero); 119332001f49Smrg printMESA (-_One); 119432001f49Smrg printMESA (-_Two4); 119532001f49Smrg printMESA (-_Two4.z); 119632001f49Smrg 119732001f49Smrg printMESA (_Zero + 0.0); 119832001f49Smrg printMESA (_One + 0.0); 119932001f49Smrg printMESA (_Two4 + 0.0); 120032001f49Smrg printMESA (_Two4.y + 0.0); 120132001f49Smrg 120232001f49Smrg printMESA (_Zero + _Zero); 120332001f49Smrg printMESA (_Zero + _One); 120432001f49Smrg printMESA (_Zero + _Two4); 120532001f49Smrg printMESA (_One + _Zero); 120632001f49Smrg printMESA (_One + _Two4); 120732001f49Smrg printMESA (_Two4 + _Two4); 120832001f49Smrg 120932001f49Smrg printMESA (_Zero - 0.0); 121032001f49Smrg printMESA (_One - 0.0); 121132001f49Smrg printMESA (_Two4 - 0.0); 121232001f49Smrg printMESA (_Two4.y - 0.0); 121332001f49Smrg 121432001f49Smrg printMESA (_Zero - _Zero); 121532001f49Smrg printMESA (_Zero - _One); 121632001f49Smrg printMESA (_Zero - _Two4); 121732001f49Smrg printMESA (_One - _Zero); 121832001f49Smrg printMESA (_One - _Two4); 121932001f49Smrg printMESA (_Two4 - _Two4); 122032001f49Smrg 122132001f49Smrg printMESA (_Zero * 1.0); 122232001f49Smrg printMESA (_One * 1.0); 122332001f49Smrg printMESA (_Two4 * 1.0); 122432001f49Smrg printMESA (_Two4.x * 1.0); 122532001f49Smrg 122632001f49Smrg printMESA (_Zero * _Zero); 122732001f49Smrg printMESA (_Zero * _One); 122832001f49Smrg printMESA (_Zero * _Two4); 122932001f49Smrg printMESA (_One * _Zero); 123032001f49Smrg printMESA (_One * _One); 123132001f49Smrg printMESA (_One * _Two4); 123232001f49Smrg printMESA (_Two4 * _Two4); 123332001f49Smrg 123432001f49Smrg printMESA (_Zero / 1.0); 123532001f49Smrg printMESA (_One / 1.0); 123632001f49Smrg printMESA (_Two4 / 1.0); 123732001f49Smrg printMESA (_Two4.x / 1.0); 123832001f49Smrg 123932001f49Smrg printMESA (_Zero / _One); 124032001f49Smrg printMESA (_Zero / _Two4); 124132001f49Smrg printMESA (_One / _One); 124232001f49Smrg printMESA (_One / _Two4); 124332001f49Smrg printMESA (_Two4 / _Two4); 124432001f49Smrg} 124532001f49Smrg 124632001f49Smrg$output 124732001f49Smrg 124832001f49Smrg0.0 124932001f49Smrg1.1 125032001f49Smrg2.1 125132001f49Smrg2.2 125232001f49Smrg2.3 125332001f49Smrg2.4 125432001f49Smrg 125532001f49Smrg0.0 125632001f49Smrg-1.1 125732001f49Smrg-2.1 125832001f49Smrg-2.2 125932001f49Smrg-2.3 126032001f49Smrg-2.4 126132001f49Smrg-2.3 126232001f49Smrg 126332001f49Smrg0.0 126432001f49Smrg1.1 126532001f49Smrg2.1 126632001f49Smrg2.2 126732001f49Smrg2.3 126832001f49Smrg2.4 126932001f49Smrg2.2 127032001f49Smrg 127132001f49Smrg0.0 127232001f49Smrg1.1 127332001f49Smrg2.1 127432001f49Smrg2.2 127532001f49Smrg2.3 127632001f49Smrg2.4 127732001f49Smrg1.1 127832001f49Smrg3.2 127932001f49Smrg3.3 128032001f49Smrg3.4 128132001f49Smrg3.5 128232001f49Smrg4.2 128332001f49Smrg4.4 128432001f49Smrg4.6 128532001f49Smrg4.8 128632001f49Smrg 128732001f49Smrg0.0 128832001f49Smrg1.1 128932001f49Smrg2.1 129032001f49Smrg2.2 129132001f49Smrg2.3 129232001f49Smrg2.4 129332001f49Smrg2.2 129432001f49Smrg 129532001f49Smrg0.0 129632001f49Smrg-1.1 129732001f49Smrg-2.1 129832001f49Smrg-2.2 129932001f49Smrg-2.3 130032001f49Smrg-2.4 130132001f49Smrg1.1 130232001f49Smrg-1.0 130332001f49Smrg-1.1 130432001f49Smrg-1.2 130532001f49Smrg-1.3 130632001f49Smrg0.0 130732001f49Smrg0.0 130832001f49Smrg0.0 130932001f49Smrg0.0 131032001f49Smrg 131132001f49Smrg0.0 131232001f49Smrg1.1 131332001f49Smrg2.1 131432001f49Smrg2.2 131532001f49Smrg2.3 131632001f49Smrg2.4 131732001f49Smrg2.1 131832001f49Smrg 131932001f49Smrg0.0 132032001f49Smrg0.0 132132001f49Smrg0.0 132232001f49Smrg0.0 132332001f49Smrg0.0 132432001f49Smrg0.0 132532001f49Smrg0.0 132632001f49Smrg1.21 132732001f49Smrg2.31 132832001f49Smrg2.42 132932001f49Smrg2.53 133032001f49Smrg2.64 133132001f49Smrg4.41 133232001f49Smrg4.84 133332001f49Smrg5.29 133432001f49Smrg5.76 133532001f49Smrg 133632001f49Smrg0.0 133732001f49Smrg1.1 133832001f49Smrg2.1 133932001f49Smrg2.2 134032001f49Smrg2.3 134132001f49Smrg2.4 134232001f49Smrg2.1 134332001f49Smrg 134432001f49Smrg0.0 134532001f49Smrg0.0 134632001f49Smrg0.0 134732001f49Smrg0.0 134832001f49Smrg0.0 134932001f49Smrg1.0 135032001f49Smrg0.52381 135132001f49Smrg0.5 135232001f49Smrg0.47826 135332001f49Smrg0.45833 135432001f49Smrg1.0 135532001f49Smrg1.0 135632001f49Smrg1.0 135732001f49Smrg1.0 135832001f49Smrg 135932001f49Smrg 136032001f49Smrg$ /* 136132001f49Smrg$ -------------------------------------------------------------------------------------------------- 136232001f49Smrg$ Test matrix operations. 136332001f49Smrg$ Note: assumes relational operators being correct. 136432001f49Smrg$ */ 136532001f49Smrg 136632001f49Smrg$program MATRIX TEST 136732001f49Smrg 136832001f49Smrg$attrib gl_Vertex 136932001f49Smrg0.0 0.0 0.0 1.0 137032001f49Smrg 137132001f49Smrg$attrib _Zero 137232001f49Smrg0.0 0.0 0.0 0.0 137332001f49Smrg 137432001f49Smrg$attrib _One 137532001f49Smrg1.0 1.0 1.0 1.0 137632001f49Smrg 137732001f49Smrg$attrib _Two 137832001f49Smrg2.0 2.0 2.0 2.0 137932001f49Smrg 138032001f49Smrg$vertex 138132001f49Smrg 138232001f49Smrg$code 138332001f49Smrg 138432001f49Smrg#version 110 138532001f49Smrg 138632001f49Smrg#extension MESA_shader_debug: require 138732001f49Smrg 138832001f49Smrgattribute vec4 _Zero; 138932001f49Smrgattribute vec4 _One; 139032001f49Smrgattribute vec4 _Two; 139132001f49Smrg 139232001f49Smrgvoid main () { 139332001f49Smrg gl_Position = gl_ModelViewMatrix * gl_Vertex; 139432001f49Smrg gl_FrontColor = vec4 (1.0); 139532001f49Smrg 139632001f49Smrg printMESA (_Zero); 139732001f49Smrg printMESA (_One); 139832001f49Smrg printMESA (_Two); 139932001f49Smrg 140032001f49Smrg mat4 Identity = mat4 (_One.x); 140132001f49Smrg 140232001f49Smrg printMESA (Identity == mat4 (1.0, 0.0, 0.0, 0.0, 140332001f49Smrg 0.0, 1.0, 0.0, 0.0, 140432001f49Smrg 0.0, 0.0, 1.0, 0.0, 140532001f49Smrg 0.0, 0.0, 0.0, 1.0)); 140632001f49Smrg printMESA (Identity * _Two == _Two); 140732001f49Smrg 140832001f49Smrg mat4 Matrix = mat4 (1.1, 1.2, 1.3, 1.4, 140932001f49Smrg 2.1, 2.2, 2.3, 2.4, 141032001f49Smrg 3.1, 3.2, 3.3, 3.4, 141132001f49Smrg 4.1, 4.2, 4.3, 4.4); 141232001f49Smrg 141332001f49Smrg printMESA (Matrix[2].y); 141432001f49Smrg printMESA (Matrix[1]); 141532001f49Smrg} 141632001f49Smrg 141732001f49Smrg$output 141832001f49Smrg 141932001f49Smrg0.0 142032001f49Smrg0.0 142132001f49Smrg0.0 142232001f49Smrg0.0 142332001f49Smrg1.0 142432001f49Smrg1.0 142532001f49Smrg1.0 142632001f49Smrg1.0 142732001f49Smrg2.0 142832001f49Smrg2.0 142932001f49Smrg2.0 143032001f49Smrg2.0 143132001f49Smrgtrue 143232001f49Smrgtrue 143332001f49Smrg3.2 143432001f49Smrg2.1 143532001f49Smrg2.2 143632001f49Smrg2.3 143732001f49Smrg2.4 143832001f49Smrg 143932001f49Smrg 144032001f49Smrg$ /* 144132001f49Smrg$ -------------------------------------------------------------------------------------------------- 144232001f49Smrg$ Test vec4 extension operations. 144332001f49Smrg$ */ 144432001f49Smrg 144532001f49Smrg$program VEC4 EXTENSION OPERATIONS 144632001f49Smrg 144732001f49Smrg$attrib gl_Vertex 144832001f49Smrg0.0 0.0 0.0 1.0 144932001f49Smrg 145032001f49Smrg$attrib _One 145132001f49Smrg1.1 0.0 0.0 0.0 145232001f49Smrg 145332001f49Smrg$attrib _Two4 145432001f49Smrg2.1 2.2 2.3 2.4 145532001f49Smrg 145632001f49Smrg$attrib _Three4 145732001f49Smrg3.1 3.2 3.3 3.4 145832001f49Smrg 145932001f49Smrg$vertex 146032001f49Smrg 146132001f49Smrg$code 146232001f49Smrg 146332001f49Smrg#version 110 146432001f49Smrg 146532001f49Smrg#extension MESA_shader_debug: require 146632001f49Smrg 146732001f49Smrgattribute float _One; 146832001f49Smrgattribute vec4 _Two4; 146932001f49Smrgattribute vec4 _Three4; 147032001f49Smrg 147132001f49Smrgvoid main () { 147232001f49Smrg gl_Position = gl_ModelViewMatrix * gl_Vertex; 147332001f49Smrg gl_FrontColor = vec4 (1.0); 147432001f49Smrg 147532001f49Smrg printMESA (_One); 147632001f49Smrg printMESA (_Two4); 147732001f49Smrg printMESA (_Three4); 147832001f49Smrg 147932001f49Smrg printMESA (vec4 (_One)); 148032001f49Smrg 148132001f49Smrg printMESA (_Two4 + _Three4); 148232001f49Smrg printMESA (_Two4 - _Three4); 148332001f49Smrg printMESA (_Two4 * _Three4); 148432001f49Smrg printMESA (_Two4 / _Three4); 148532001f49Smrg 148632001f49Smrg printMESA (_Two4 + _One); 148732001f49Smrg printMESA (_Two4 - _One); 148832001f49Smrg printMESA (_Two4 * _One); 148932001f49Smrg printMESA (_Two4 / _One); 149032001f49Smrg 149132001f49Smrg printMESA (_One + _Two4); 149232001f49Smrg printMESA (_One - _Two4); 149332001f49Smrg printMESA (_One * _Two4); 149432001f49Smrg printMESA (_One / _Two4); 149532001f49Smrg 149632001f49Smrg printMESA (-_Three4); 149732001f49Smrg 149832001f49Smrg printMESA (dot (_Two4.xyz, _Three4.xyz)); 149932001f49Smrg printMESA (dot (_Two4, _Three4)); 150032001f49Smrg 150132001f49Smrg printMESA (length (_Two4.xyz)); 150232001f49Smrg printMESA (length (_Three4)); 150332001f49Smrg 150432001f49Smrg printMESA (normalize (_Two4.xyz)); 150532001f49Smrg printMESA (normalize (_Three4)); 150632001f49Smrg 150732001f49Smrg vec4 tmp = _Two4; 150832001f49Smrg printMESA (tmp); 150932001f49Smrg 151032001f49Smrg printMESA (_Two4 == _Three4); 151132001f49Smrg printMESA (_Two4 != _Three4); 151232001f49Smrg printMESA (_Two4 == _Two4); 151332001f49Smrg printMESA (_Three4 != _Three4); 151432001f49Smrg printMESA (_Two4 != vec4 (_Two4.xyz, 999.0)); 151532001f49Smrg printMESA (_Two4 != vec4 (999.0, _Two4.yzw)); 151632001f49Smrg} 151732001f49Smrg 151832001f49Smrg$output 151932001f49Smrg 152032001f49Smrg1.1 152132001f49Smrg2.1 152232001f49Smrg2.2 152332001f49Smrg2.3 152432001f49Smrg2.4 152532001f49Smrg3.1 152632001f49Smrg3.2 152732001f49Smrg3.3 152832001f49Smrg3.4 152932001f49Smrg 153032001f49Smrg1.1 153132001f49Smrg1.1 153232001f49Smrg1.1 153332001f49Smrg1.1 153432001f49Smrg 153532001f49Smrg5.2 153632001f49Smrg5.4 153732001f49Smrg5.6 153832001f49Smrg5.8 153932001f49Smrg-1.0 154032001f49Smrg-1.0 154132001f49Smrg-1.0 154232001f49Smrg-1.0 154332001f49Smrg6.51 154432001f49Smrg7.04 154532001f49Smrg7.59 154632001f49Smrg8.16 154732001f49Smrg0.677419 154832001f49Smrg0.6875 154932001f49Smrg0.69697 155032001f49Smrg0.705882 155132001f49Smrg 155232001f49Smrg3.2 155332001f49Smrg3.3 155432001f49Smrg3.4 155532001f49Smrg3.5 155632001f49Smrg1.0 155732001f49Smrg1.1 155832001f49Smrg1.2 155932001f49Smrg1.3 156032001f49Smrg2.31 156132001f49Smrg2.42 156232001f49Smrg2.53 156332001f49Smrg2.64 156432001f49Smrg1.909091 156532001f49Smrg2.0 156632001f49Smrg2.090909 156732001f49Smrg2.181818 156832001f49Smrg 156932001f49Smrg3.2 157032001f49Smrg3.3 157132001f49Smrg3.4 157232001f49Smrg3.5 157332001f49Smrg-1.0 157432001f49Smrg-1.1 157532001f49Smrg-1.2 157632001f49Smrg-1.3 157732001f49Smrg2.31 157832001f49Smrg2.42 157932001f49Smrg2.53 158032001f49Smrg2.64 158132001f49Smrg0.52381 158232001f49Smrg0.5 158332001f49Smrg0.478261 158432001f49Smrg0.458333 158532001f49Smrg 158632001f49Smrg-3.1 158732001f49Smrg-3.2 158832001f49Smrg-3.3 158932001f49Smrg-3.4 159032001f49Smrg 159132001f49Smrg21.14 159232001f49Smrg29.3 159332001f49Smrg 159432001f49Smrg3.813135 159532001f49Smrg6.503845 159632001f49Smrg 159732001f49Smrg0.550728 159832001f49Smrg0.576953 159932001f49Smrg0.603178 160032001f49Smrg0.476641 160132001f49Smrg0.492017 160232001f49Smrg0.507392 160332001f49Smrg0.522768 160432001f49Smrg 160532001f49Smrg2.1 160632001f49Smrg2.2 160732001f49Smrg2.3 160832001f49Smrg2.4 160932001f49Smrg 161032001f49Smrgfalse 161132001f49Smrgtrue 161232001f49Smrgtrue 161332001f49Smrgfalse 161432001f49Smrgtrue 161532001f49Smrgtrue 1616