diff options
| author | José Fonseca <jfonseca@vmware.com> | 2010-02-14 11:15:19 +0000 | 
|---|---|---|
| committer | José Fonseca <jfonseca@vmware.com> | 2010-02-14 11:16:41 +0000 | 
| commit | 50812e633fa433937c7ba885fa334f44ec0bad58 (patch) | |
| tree | fae5850bae8bdb6ab0ebd466f8f61b1a51d73d93 /progs/gallium/python/tests/regress/vertex-shader | |
| parent | 0a3e3621752be5b054739ce606cad4f77cb65049 (diff) | |
progs/gallium/python: New home for python statetracker scripts.
Diffstat (limited to 'progs/gallium/python/tests/regress/vertex-shader')
32 files changed, 742 insertions, 0 deletions
| diff --git a/progs/gallium/python/tests/regress/vertex-shader/.gitignore b/progs/gallium/python/tests/regress/vertex-shader/.gitignore new file mode 100644 index 0000000000..e33609d251 --- /dev/null +++ b/progs/gallium/python/tests/regress/vertex-shader/.gitignore @@ -0,0 +1 @@ +*.png diff --git a/progs/gallium/python/tests/regress/vertex-shader/vert-abs.sh b/progs/gallium/python/tests/regress/vertex-shader/vert-abs.sh new file mode 100644 index 0000000000..79c9ca69fb --- /dev/null +++ b/progs/gallium/python/tests/regress/vertex-shader/vert-abs.sh @@ -0,0 +1,15 @@ +VERT + +DCL IN[0], POSITION +DCL IN[1], COLOR +DCL OUT[0], POSITION +DCL OUT[1], COLOR +DCL TEMP[0] + +IMM FLT32 { 0.2, 0.2, 0.0, 0.0 } + +ADD TEMP[0], IN[0], IMM[0] +ABS OUT[0], TEMP[0] +MOV OUT[1], IN[1] + +END diff --git a/progs/gallium/python/tests/regress/vertex-shader/vert-add.sh b/progs/gallium/python/tests/regress/vertex-shader/vert-add.sh new file mode 100644 index 0000000000..ca97ad05df --- /dev/null +++ b/progs/gallium/python/tests/regress/vertex-shader/vert-add.sh @@ -0,0 +1,13 @@ +VERT + +DCL IN[0], POSITION +DCL IN[1], COLOR +DCL OUT[0], POSITION +DCL OUT[1], COLOR + +IMM FLT32 { 0.2, -0.1, 0.0, 0.0 } + +ADD OUT[0], IN[0], IMM[0] +MOV OUT[1], IN[1] + +END diff --git a/progs/gallium/python/tests/regress/vertex-shader/vert-arl.sh b/progs/gallium/python/tests/regress/vertex-shader/vert-arl.sh new file mode 100644 index 0000000000..321140e89e --- /dev/null +++ b/progs/gallium/python/tests/regress/vertex-shader/vert-arl.sh @@ -0,0 +1,23 @@ +VERT + +DCL IN[0], POSITION +DCL OUT[0], POSITION +DCL OUT[1], COLOR + +DCL TEMP[0] + +DCL ADDR[0] + +IMM FLT32 { 3.0, 1.0, 1.0, 1.0 } +IMM FLT32 { 1.0, 0.0, 0.0, 1.0 } +IMM FLT32 { 0.0, 1.0, 0.0, 1.0 } +IMM FLT32 { 0.0, 0.0, 1.0, 1.0 } +IMM FLT32 { 1.0, 1.0, 0.0, 1.0 } +IMM FLT32 { 0.0, 1.0, 1.0, 1.0 } + +MOV OUT[0], IN[0] +MUL TEMP[0], IN[0], IMM[0] +ARL ADDR[0].x, TEMP[0] +MOV OUT[1], IMM[ADDR[0].x + 3] + +END diff --git a/progs/gallium/python/tests/regress/vertex-shader/vert-arr.sh b/progs/gallium/python/tests/regress/vertex-shader/vert-arr.sh new file mode 100644 index 0000000000..d60ea46b36 --- /dev/null +++ b/progs/gallium/python/tests/regress/vertex-shader/vert-arr.sh @@ -0,0 +1,23 @@ +VERT + +DCL IN[0], POSITION +DCL OUT[0], POSITION +DCL OUT[1], COLOR + +DCL TEMP[0] + +DCL ADDR[0] + +IMM FLT32 { 3.0, 1.0, 1.0, 1.0 } +IMM FLT32 { 1.0, 0.0, 0.0, 1.0 } +IMM FLT32 { 0.0, 1.0, 0.0, 1.0 } +IMM FLT32 { 0.0, 0.0, 1.0, 1.0 } +IMM FLT32 { 1.0, 1.0, 0.0, 1.0 } +IMM FLT32 { 0.0, 1.0, 1.0, 1.0 } + +MOV OUT[0], IN[0] +MUL TEMP[0], IN[0], IMM[0] +ARR ADDR[0].x, TEMP[0] +MOV OUT[1], IMM[ADDR[0].x + 3] + +END diff --git a/progs/gallium/python/tests/regress/vertex-shader/vert-cb-1d.sh b/progs/gallium/python/tests/regress/vertex-shader/vert-cb-1d.sh new file mode 100644 index 0000000000..b41fe5dd38 --- /dev/null +++ b/progs/gallium/python/tests/regress/vertex-shader/vert-cb-1d.sh @@ -0,0 +1,16 @@ +VERT + +DCL IN[0], POSITION +DCL IN[1], COLOR +DCL OUT[0], POSITION +DCL OUT[1], COLOR +DCL CONST[1] +DCL CONST[3] +DCL TEMP[0..1] + +MOV OUT[0], IN[0] +ADD TEMP[0], IN[1], CONST[1] +RCP TEMP[1], CONST[3].xxxx +MUL OUT[1], TEMP[0], TEMP[1] + +END diff --git a/progs/gallium/python/tests/regress/vertex-shader/vert-cb-2d.sh b/progs/gallium/python/tests/regress/vertex-shader/vert-cb-2d.sh new file mode 100644 index 0000000000..45f5e6b729 --- /dev/null +++ b/progs/gallium/python/tests/regress/vertex-shader/vert-cb-2d.sh @@ -0,0 +1,12 @@ +VERT + +DCL IN[0], POSITION +DCL IN[1], COLOR +DCL OUT[0], POSITION +DCL OUT[1], COLOR +DCL CONST[1][1..2] + +MOV OUT[0], IN[0] +MAD OUT[1], IN[1], CONST[1][2], CONST[1][1] + +END diff --git a/progs/gallium/python/tests/regress/vertex-shader/vert-dp3.sh b/progs/gallium/python/tests/regress/vertex-shader/vert-dp3.sh new file mode 100644 index 0000000000..caff622fe6 --- /dev/null +++ b/progs/gallium/python/tests/regress/vertex-shader/vert-dp3.sh @@ -0,0 +1,16 @@ +VERT + +DCL IN[0], POSITION +DCL IN[1], COLOR +DCL OUT[0], POSITION +DCL OUT[1], COLOR +DCL TEMP[0] + +IMM FLT32 { 0.0, 0.0, 1.0, 1.0 } + +DP3 TEMP[0].xy, IN[0], IN[0] +MOV TEMP[0].zw, IMM[0] +MUL OUT[0], IN[0], TEMP[0] +MOV OUT[1], IN[1] + +END diff --git a/progs/gallium/python/tests/regress/vertex-shader/vert-dp4.sh b/progs/gallium/python/tests/regress/vertex-shader/vert-dp4.sh new file mode 100644 index 0000000000..3dd2fd1c2f --- /dev/null +++ b/progs/gallium/python/tests/regress/vertex-shader/vert-dp4.sh @@ -0,0 +1,16 @@ +VERT + +DCL IN[0], POSITION +DCL IN[1], COLOR +DCL OUT[0], POSITION +DCL OUT[1], COLOR +DCL TEMP[0] + +IMM FLT32 { 0.0, 0.0, 1.0, 1.0 } + +DP4 TEMP[0].xy, IN[0], IN[0] +MOV TEMP[0].zw, IMM[0] +MUL OUT[0], IN[0], TEMP[0] +MOV OUT[1], IN[1] + +END diff --git a/progs/gallium/python/tests/regress/vertex-shader/vert-dst.sh b/progs/gallium/python/tests/regress/vertex-shader/vert-dst.sh new file mode 100644 index 0000000000..da9cc18dfc --- /dev/null +++ b/progs/gallium/python/tests/regress/vertex-shader/vert-dst.sh @@ -0,0 +1,11 @@ +VERT + +DCL IN[0], POSITION +DCL IN[1], COLOR +DCL OUT[0], POSITION +DCL OUT[1], COLOR + +MOV OUT[0], IN[0] +DST OUT[1], IN[1], IN[0] + +END diff --git a/progs/gallium/python/tests/regress/vertex-shader/vert-ex2.sh b/progs/gallium/python/tests/regress/vertex-shader/vert-ex2.sh new file mode 100644 index 0000000000..4637227e5c --- /dev/null +++ b/progs/gallium/python/tests/regress/vertex-shader/vert-ex2.sh @@ -0,0 +1,18 @@ +VERT + +DCL IN[0], POSITION +DCL IN[1], COLOR +DCL OUT[0], POSITION +DCL OUT[1], COLOR + +DCL TEMP[0..1] + +IMM FLT32 { 0.3, 0.3, 0.3, 1.0 } + +EX2 TEMP[0], IN[0] +EX2 TEMP[1], IN[1].yyyy +MUL TEMP[0], TEMP[0], IMM[0] +MOV OUT[0], IN[0] +MUL OUT[1], TEMP[0], TEMP[1] + +END diff --git a/progs/gallium/python/tests/regress/vertex-shader/vert-flr.sh b/progs/gallium/python/tests/regress/vertex-shader/vert-flr.sh new file mode 100644 index 0000000000..aa80d6e394 --- /dev/null +++ b/progs/gallium/python/tests/regress/vertex-shader/vert-flr.sh @@ -0,0 +1,23 @@ +VERT + +DCL IN[0], POSITION +DCL OUT[0], POSITION +DCL OUT[1], COLOR + +DCL TEMP[0] + +DCL ADDR[0] + +IMM FLT32 { 3.0, 1.0, 1.0, 1.0 } +IMM FLT32 { 1.0, 0.0, 0.0, 1.0 } +IMM FLT32 { 0.0, 1.0, 0.0, 1.0 } +IMM FLT32 { 0.0, 0.0, 1.0, 1.0 } +IMM FLT32 { 1.0, 1.0, 0.0, 1.0 } +IMM FLT32 { 0.0, 1.0, 1.0, 1.0 } + +MOV OUT[0], IN[0] +MUL TEMP[0], IN[0], IMM[0] +FLR ADDR[0].x, TEMP[0] +MOV OUT[1], IMM[ADDR[0].x + 3] + +END diff --git a/progs/gallium/python/tests/regress/vertex-shader/vert-frc.sh b/progs/gallium/python/tests/regress/vertex-shader/vert-frc.sh new file mode 100644 index 0000000000..64d1a494e1 --- /dev/null +++ b/progs/gallium/python/tests/regress/vertex-shader/vert-frc.sh @@ -0,0 +1,15 @@ +VERT + +DCL IN[0], POSITION +DCL OUT[0], POSITION +DCL OUT[1], COLOR + +DCL TEMP[0] + +IMM FLT32 { 2.7, 3.1, 4.5, 1.0 } + +MUL TEMP[0], IN[0].xyxw, IMM[0] +MOV OUT[0], IN[0] +FRC OUT[1], TEMP[0] + +END diff --git a/progs/gallium/python/tests/regress/vertex-shader/vert-lg2.sh b/progs/gallium/python/tests/regress/vertex-shader/vert-lg2.sh new file mode 100644 index 0000000000..5cf16fd1aa --- /dev/null +++ b/progs/gallium/python/tests/regress/vertex-shader/vert-lg2.sh @@ -0,0 +1,18 @@ +VERT + +DCL IN[0], POSITION +DCL IN[1], COLOR +DCL OUT[0], POSITION +DCL OUT[1], COLOR + +DCL TEMP[0] + +IMM FLT32 { 1.0, 0.0, 0.0, 0.0 } +IMM FLT32 { 0.5, 0.0, 0.0, 0.0 } + +ADD TEMP[0], IN[0], IMM[0] +LG2 TEMP[0].x, TEMP[0].xxxx +ADD OUT[0], TEMP[0], IMM[1] +MOV OUT[1], IN[1] + +END diff --git a/progs/gallium/python/tests/regress/vertex-shader/vert-lit.sh b/progs/gallium/python/tests/regress/vertex-shader/vert-lit.sh new file mode 100644 index 0000000000..a4a752d4d2 --- /dev/null +++ b/progs/gallium/python/tests/regress/vertex-shader/vert-lit.sh @@ -0,0 +1,11 @@ +VERT + +DCL IN[0], POSITION +DCL IN[1], COLOR +DCL OUT[0], POSITION +DCL OUT[1], COLOR + +MOV OUT[0], IN[0] +LIT OUT[1], IN[1] + +END diff --git a/progs/gallium/python/tests/regress/vertex-shader/vert-lrp.sh b/progs/gallium/python/tests/regress/vertex-shader/vert-lrp.sh new file mode 100644 index 0000000000..4bb5f3ec3f --- /dev/null +++ b/progs/gallium/python/tests/regress/vertex-shader/vert-lrp.sh @@ -0,0 +1,14 @@ +VERT + +DCL IN[0], POSITION +DCL IN[1], COLOR +DCL OUT[0], POSITION +DCL OUT[1], COLOR + +DCL TEMP[0] + +ABS TEMP[0], IN[0] +MOV OUT[0], IN[0] +LRP OUT[1], TEMP[0], IN[1].xxxx, IN[1].yyyy + +END diff --git a/progs/gallium/python/tests/regress/vertex-shader/vert-mad.sh b/progs/gallium/python/tests/regress/vertex-shader/vert-mad.sh new file mode 100644 index 0000000000..daaa941f15 --- /dev/null +++ b/progs/gallium/python/tests/regress/vertex-shader/vert-mad.sh @@ -0,0 +1,14 @@ +VERT + +DCL IN[0], POSITION +DCL IN[1], COLOR +DCL OUT[0], POSITION +DCL OUT[1], COLOR + +IMM FLT32 { 0.5, 1.0, 1.0, 1.0 } +IMM FLT32 { 0.5, 0.0, 0.0, 0.0 } + +MAD OUT[0], IN[0], IMM[0], IMM[1] +MOV OUT[1], IN[1] + +END diff --git a/progs/gallium/python/tests/regress/vertex-shader/vert-max.sh b/progs/gallium/python/tests/regress/vertex-shader/vert-max.sh new file mode 100644 index 0000000000..af279ec7f4 --- /dev/null +++ b/progs/gallium/python/tests/regress/vertex-shader/vert-max.sh @@ -0,0 +1,13 @@ +VERT + +DCL IN[0], POSITION +DCL IN[1], COLOR +DCL OUT[0], POSITION +DCL OUT[1], COLOR + +IMM FLT32 { 0.5, 0.5, 0.5, 0.0 } + +MOV OUT[0], IN[0] +MAX OUT[1], IN[1], IMM[0] + +END diff --git a/progs/gallium/python/tests/regress/vertex-shader/vert-min.sh b/progs/gallium/python/tests/regress/vertex-shader/vert-min.sh new file mode 100644 index 0000000000..46d886c55b --- /dev/null +++ b/progs/gallium/python/tests/regress/vertex-shader/vert-min.sh @@ -0,0 +1,13 @@ +VERT + +DCL IN[0], POSITION +DCL IN[1], COLOR +DCL OUT[0], POSITION +DCL OUT[1], COLOR + +IMM FLT32 { 0.5, 0.5, 0.5, 0.0 } + +MOV OUT[0], IN[0] +MIN OUT[1], IN[1], IMM[0] + +END diff --git a/progs/gallium/python/tests/regress/vertex-shader/vert-mov.sh b/progs/gallium/python/tests/regress/vertex-shader/vert-mov.sh new file mode 100644 index 0000000000..0ef91637e0 --- /dev/null +++ b/progs/gallium/python/tests/regress/vertex-shader/vert-mov.sh @@ -0,0 +1,11 @@ +VERT + +DCL IN[0], POSITION +DCL IN[1], COLOR +DCL OUT[0], POSITION +DCL OUT[1], COLOR + +MOV OUT[0], IN[0] +MOV OUT[1], IN[1] + +END diff --git a/progs/gallium/python/tests/regress/vertex-shader/vert-mul.sh b/progs/gallium/python/tests/regress/vertex-shader/vert-mul.sh new file mode 100644 index 0000000000..d34f6cd6e3 --- /dev/null +++ b/progs/gallium/python/tests/regress/vertex-shader/vert-mul.sh @@ -0,0 +1,13 @@ +VERT + +DCL IN[0], POSITION +DCL IN[1], COLOR +DCL OUT[0], POSITION +DCL OUT[1], COLOR + +IMM FLT32 { 0.6, 0.6, 1.0, 1.0 } + +MUL OUT[0], IN[0], IMM[0] +MOV OUT[1], IN[1] + +END diff --git a/progs/gallium/python/tests/regress/vertex-shader/vert-rcp.sh b/progs/gallium/python/tests/regress/vertex-shader/vert-rcp.sh new file mode 100644 index 0000000000..cfb3ec37dc --- /dev/null +++ b/progs/gallium/python/tests/regress/vertex-shader/vert-rcp.sh @@ -0,0 +1,18 @@ +VERT + +DCL IN[0], POSITION +DCL IN[1], COLOR +DCL OUT[0], POSITION +DCL OUT[1], COLOR + +DCL TEMP[0] + +IMM FLT32 { 1.0, 0.0, 0.0, 0.0 } +IMM FLT32 { 1.5, 0.0, 0.0, 0.0 } + +ADD TEMP[0], IN[0], IMM[0] +RCP TEMP[0].x, TEMP[0].xxxx +SUB OUT[0], TEMP[0], IMM[1] +MOV OUT[1], IN[1] + +END diff --git a/progs/gallium/python/tests/regress/vertex-shader/vert-rsq.sh b/progs/gallium/python/tests/regress/vertex-shader/vert-rsq.sh new file mode 100644 index 0000000000..faf1e6e7d4 --- /dev/null +++ b/progs/gallium/python/tests/regress/vertex-shader/vert-rsq.sh @@ -0,0 +1,18 @@ +VERT + +DCL IN[0], POSITION +DCL IN[1], COLOR +DCL OUT[0], POSITION +DCL OUT[1], COLOR + +DCL TEMP[0] + +IMM FLT32 { 1.0, 0.0, 0.0, 0.0 } +IMM FLT32 { 1.5, 0.0, 0.0, 0.0 } + +ADD TEMP[0], IN[0], IMM[0] +RSQ TEMP[0].x, TEMP[0].xxxx +SUB OUT[0], TEMP[0], IMM[1] +MOV OUT[1], IN[1] + +END diff --git a/progs/gallium/python/tests/regress/vertex-shader/vert-sge.sh b/progs/gallium/python/tests/regress/vertex-shader/vert-sge.sh new file mode 100644 index 0000000000..6de1d071ef --- /dev/null +++ b/progs/gallium/python/tests/regress/vertex-shader/vert-sge.sh @@ -0,0 +1,16 @@ +VERT + +DCL IN[0], POSITION +DCL IN[1], COLOR +DCL OUT[0], POSITION +DCL OUT[1], COLOR + +DCL TEMP[0] + +IMM FLT32 { -0.1, -0.1, 1.0, 0.0 } + +SGE TEMP[0], IN[0], IMM[0] +MOV OUT[0], IN[0] +MUL OUT[1], IN[1], TEMP[0] + +END diff --git a/progs/gallium/python/tests/regress/vertex-shader/vert-slt.sh b/progs/gallium/python/tests/regress/vertex-shader/vert-slt.sh new file mode 100644 index 0000000000..9a52422984 --- /dev/null +++ b/progs/gallium/python/tests/regress/vertex-shader/vert-slt.sh @@ -0,0 +1,16 @@ +VERT + +DCL IN[0], POSITION +DCL IN[1], COLOR +DCL OUT[0], POSITION +DCL OUT[1], COLOR + +DCL TEMP[0] + +IMM FLT32 { 0.6, 0.6, 0.0, 0.0 } + +SLT TEMP[0], IN[0], IMM[0] +MOV OUT[0], IN[0] +MUL OUT[1], IN[1], TEMP[0] + +END diff --git a/progs/gallium/python/tests/regress/vertex-shader/vert-srcmod-abs.sh b/progs/gallium/python/tests/regress/vertex-shader/vert-srcmod-abs.sh new file mode 100644 index 0000000000..dc87ce4ae7 --- /dev/null +++ b/progs/gallium/python/tests/regress/vertex-shader/vert-srcmod-abs.sh @@ -0,0 +1,15 @@ +VERT + +DCL IN[0], POSITION +DCL IN[1], COLOR +DCL OUT[0], POSITION +DCL OUT[1], COLOR +DCL TEMP[0] + +IMM FLT32 { 0.1, 0.1, 0.0, 0.0 } + +ADD TEMP[0], IN[0], IMM[0] +MOV OUT[0], |TEMP[0]| +MOV OUT[1], IN[1] + +END diff --git a/progs/gallium/python/tests/regress/vertex-shader/vert-srcmod-absneg.sh b/progs/gallium/python/tests/regress/vertex-shader/vert-srcmod-absneg.sh new file mode 100644 index 0000000000..d82eb08fd3 --- /dev/null +++ b/progs/gallium/python/tests/regress/vertex-shader/vert-srcmod-absneg.sh @@ -0,0 +1,16 @@ +VERT + +DCL IN[0], POSITION +DCL IN[1], COLOR +DCL OUT[0], POSITION +DCL OUT[1], COLOR +DCL TEMP[0] + +IMM FLT32 { -0.2, -0.2, 0.0, 0.0 } + +ADD TEMP[0], IN[0], IMM[0] +MOV OUT[0].xy, -|TEMP[0]| +MOV OUT[0].zw, IN[0] +MOV OUT[1], IN[1] + +END diff --git a/progs/gallium/python/tests/regress/vertex-shader/vert-srcmod-neg.sh b/progs/gallium/python/tests/regress/vertex-shader/vert-srcmod-neg.sh new file mode 100644 index 0000000000..e39bebcd9f --- /dev/null +++ b/progs/gallium/python/tests/regress/vertex-shader/vert-srcmod-neg.sh @@ -0,0 +1,12 @@ +VERT + +DCL IN[0], POSITION +DCL IN[1], COLOR +DCL OUT[0], POSITION +DCL OUT[1], COLOR + +MOV OUT[0].xy, -IN[0] +MOV OUT[0].zw, IN[0] +MOV OUT[1], IN[1] + +END diff --git a/progs/gallium/python/tests/regress/vertex-shader/vert-srcmod-swz.sh b/progs/gallium/python/tests/regress/vertex-shader/vert-srcmod-swz.sh new file mode 100644 index 0000000000..6f20552f21 --- /dev/null +++ b/progs/gallium/python/tests/regress/vertex-shader/vert-srcmod-swz.sh @@ -0,0 +1,11 @@ +VERT + +DCL IN[0], POSITION +DCL IN[1], COLOR +DCL OUT[0], POSITION +DCL OUT[1], COLOR + +MOV OUT[0], IN[0].yxzw +MOV OUT[1], IN[1] + +END diff --git a/progs/gallium/python/tests/regress/vertex-shader/vert-sub.sh b/progs/gallium/python/tests/regress/vertex-shader/vert-sub.sh new file mode 100644 index 0000000000..0f9678b8a3 --- /dev/null +++ b/progs/gallium/python/tests/regress/vertex-shader/vert-sub.sh @@ -0,0 +1,13 @@ +VERT + +DCL IN[0], POSITION +DCL IN[1], COLOR +DCL OUT[0], POSITION +DCL OUT[1], COLOR + +IMM FLT32 { 0.1, 0.1, 0.0, 0.0 } + +SUB OUT[0], IN[0], IMM[0] +MOV OUT[1], IN[1] + +END diff --git a/progs/gallium/python/tests/regress/vertex-shader/vert-xpd.sh b/progs/gallium/python/tests/regress/vertex-shader/vert-xpd.sh new file mode 100644 index 0000000000..39d42ae2a0 --- /dev/null +++ b/progs/gallium/python/tests/regress/vertex-shader/vert-xpd.sh @@ -0,0 +1,11 @@ +VERT + +DCL IN[0], POSITION +DCL IN[1], COLOR +DCL OUT[0], POSITION +DCL OUT[1], COLOR + +MOV OUT[0], IN[0] +XPD OUT[1], IN[0], IN[1] + +END diff --git a/progs/gallium/python/tests/regress/vertex-shader/vertex-shader.py b/progs/gallium/python/tests/regress/vertex-shader/vertex-shader.py new file mode 100644 index 0000000000..2c44f872e1 --- /dev/null +++ b/progs/gallium/python/tests/regress/vertex-shader/vertex-shader.py @@ -0,0 +1,287 @@ +#!/usr/bin/env python +########################################################################## +#  +# Copyright 2009 VMware, Inc. +# All Rights Reserved. +#  +# Permission is hereby granted, free of charge, to any person obtaining a +# copy of this software and associated documentation files (the +# "Software"), to deal in the Software without restriction, including +# without limitation the rights to use, copy, modify, merge, publish, +# distribute, sub license, and/or sell copies of the Software, and to +# permit persons to whom the Software is furnished to do so, subject to +# the following conditions: +#  +# The above copyright notice and this permission notice (including the +# next paragraph) shall be included in all copies or substantial portions +# of the Software. +#  +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. +# IN NO EVENT SHALL VMWARE AND/OR ITS SUPPLIERS BE LIABLE FOR +# ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +#  +########################################################################## + + +import struct + +from gallium import * + +def make_image(surface): +    data = surface.get_tile_rgba8(0, 0, surface.width, surface.height) + +    import Image +    outimage = Image.fromstring('RGBA', (surface.width, surface.height), data, "raw", 'RGBA', 0, 1) +    return outimage + +def save_image(filename, surface): +    outimage = make_image(surface) +    outimage.save(filename, "PNG") + +def test(dev, name): +    ctx = dev.context_create() + +    width = 320 +    height = 320 +    minz = 0.0 +    maxz = 1.0 + +    # disabled blending/masking +    blend = Blend() +    blend.rt[0].rgb_src_factor = PIPE_BLENDFACTOR_ONE +    blend.rt[0].alpha_src_factor = PIPE_BLENDFACTOR_ONE +    blend.rt[0].rgb_dst_factor = PIPE_BLENDFACTOR_ZERO +    blend.rt[0].alpha_dst_factor = PIPE_BLENDFACTOR_ZERO +    blend.rt[0].colormask = PIPE_MASK_RGBA +    ctx.set_blend(blend) + +    # depth/stencil/alpha +    depth_stencil_alpha = DepthStencilAlpha() +    depth_stencil_alpha.depth.enabled = 0 +    depth_stencil_alpha.depth.writemask = 1 +    depth_stencil_alpha.depth.func = PIPE_FUNC_LESS +    ctx.set_depth_stencil_alpha(depth_stencil_alpha) + +    # rasterizer +    rasterizer = Rasterizer() +    rasterizer.front_winding = PIPE_WINDING_CW +    rasterizer.cull_mode = PIPE_WINDING_NONE +    rasterizer.scissor = 1 +    ctx.set_rasterizer(rasterizer) + +    # viewport +    viewport = Viewport() +    scale = FloatArray(4) +    scale[0] = width / 2.0 +    scale[1] = -height / 2.0 +    scale[2] = (maxz - minz) / 2.0 +    scale[3] = 1.0 +    viewport.scale = scale +    translate = FloatArray(4) +    translate[0] = width / 2.0 +    translate[1] = height / 2.0 +    translate[2] = (maxz - minz) / 2.0 +    translate[3] = 0.0 +    viewport.translate = translate +    ctx.set_viewport(viewport) + +    # samplers +    sampler = Sampler() +    sampler.wrap_s = PIPE_TEX_WRAP_CLAMP_TO_EDGE +    sampler.wrap_t = PIPE_TEX_WRAP_CLAMP_TO_EDGE +    sampler.wrap_r = PIPE_TEX_WRAP_CLAMP_TO_EDGE +    sampler.min_mip_filter = PIPE_TEX_MIPFILTER_NONE +    sampler.min_img_filter = PIPE_TEX_MIPFILTER_NEAREST +    sampler.mag_img_filter = PIPE_TEX_MIPFILTER_NEAREST +    sampler.normalized_coords = 1 +    ctx.set_fragment_sampler(0, sampler) + +    # scissor +    scissor = Scissor() +    scissor.minx = 0 +    scissor.miny = 0 +    scissor.maxx = width +    scissor.maxy = height +    ctx.set_scissor(scissor) + +    clip = Clip() +    clip.nr = 0 +    ctx.set_clip(clip) + +    # framebuffer +    cbuf = dev.texture_create( +        PIPE_FORMAT_X8R8G8B8_UNORM, +        width, height, +        tex_usage=PIPE_TEXTURE_USAGE_RENDER_TARGET, +    ).get_surface() +    fb = Framebuffer() +    fb.width = width +    fb.height = height +    fb.nr_cbufs = 1 +    fb.set_cbuf(0, cbuf) +    ctx.set_framebuffer(fb) +    rgba = FloatArray(4); +    rgba[0] = 0.5 +    rgba[1] = 0.5 +    rgba[2] = 0.5 +    rgba[3] = 0.5 +    ctx.clear(PIPE_CLEAR_COLOR, rgba, 0.0, 0) + +    # vertex shader +    vs = Shader(file('vert-' + name + '.sh', 'rt').read()) +    ctx.set_vertex_shader(vs) + +    # fragment shader +    fs = Shader(''' +        FRAG +        DCL IN[0], COLOR, LINEAR +        DCL OUT[0], COLOR, CONSTANT +        0:MOV OUT[0], IN[0] +        1:END +    ''') +    ctx.set_fragment_shader(fs) + +    constbuf0 = dev.buffer_create(64, +                                  (PIPE_BUFFER_USAGE_CONSTANT | +                                   PIPE_BUFFER_USAGE_GPU_READ | +                                   PIPE_BUFFER_USAGE_CPU_WRITE), +                                  4 * 4 * 4) + +    cbdata = '' +    cbdata += struct.pack('4f', 0.4, 0.0, 0.0, 1.0) +    cbdata += struct.pack('4f', 1.0, 1.0, 1.0, 1.0) +    cbdata += struct.pack('4f', 2.0, 2.0, 2.0, 2.0) +    cbdata += struct.pack('4f', 4.0, 8.0, 16.0, 32.0) + +    constbuf0.write(cbdata, 0) + +    ctx.set_constant_buffer(PIPE_SHADER_VERTEX, +                            0, +                            constbuf0) + +    constbuf1 = dev.buffer_create(64, +                                  (PIPE_BUFFER_USAGE_CONSTANT | +                                   PIPE_BUFFER_USAGE_GPU_READ | +                                   PIPE_BUFFER_USAGE_CPU_WRITE), +                                  4 * 4 * 4) + +    cbdata = '' +    cbdata += struct.pack('4f', 0.1, 0.1, 0.1, 0.1) +    cbdata += struct.pack('4f', 0.25, 0.25, 0.25, 0.25) +    cbdata += struct.pack('4f', 0.5, 0.5, 0.5, 0.5) +    cbdata += struct.pack('4f', 0.75, 0.75, 0.75, 0.75) + +    constbuf1.write(cbdata, 0) + +    ctx.set_constant_buffer(PIPE_SHADER_VERTEX, +                            1, +                            constbuf1) + +    xy = [ +         0.0,  0.8, +        -0.2,  0.4, +         0.2,  0.4, +        -0.4,  0.0, +         0.0,  0.0, +         0.4,  0.0, +        -0.6, -0.4, +        -0.2, -0.4, +         0.2, -0.4, +         0.6, -0.4, +        -0.8, -0.8, +        -0.4, -0.8, +         0.0, -0.8, +         0.4, -0.8, +         0.8, -0.8, +    ] +    color = [ +        1.0, 0.0, 0.0, +        0.0, 1.0, 0.0, +        0.0, 0.0, 1.0, +    ] +    tri = [ +         1,  2,  0, +         3,  4,  1, +         4,  2,  1, +         4,  5,  2, +         6,  7,  3, +         7,  4,  3, +         7,  8,  4, +         8,  5,  4, +         8,  9,  5, +        10, 11,  6, +        11,  7,  6, +        11, 12,  7, +        12,  8,  7, +        12, 13,  8, +        13,  9,  8, +        13, 14,  9, +    ] + +    nverts = 16 * 3 +    nattrs = 2 +    verts = FloatArray(nverts * nattrs * 4) + +    for i in range(0, nverts): +        verts[i * nattrs * 4 + 0] = xy[tri[i] * 2 + 0] # x +        verts[i * nattrs * 4 + 1] = xy[tri[i] * 2 + 1] # y +        verts[i * nattrs * 4 + 2] = 0.5 # z +        verts[i * nattrs * 4 + 3] = 1.0 # w +        verts[i * nattrs * 4 + 4] = color[(i % 3) * 3 + 0] # r +        verts[i * nattrs * 4 + 5] = color[(i % 3) * 3 + 1] # g +        verts[i * nattrs * 4 + 6] = color[(i % 3) * 3 + 2] # b +        verts[i * nattrs * 4 + 7] = 1.0 # a + +    ctx.draw_vertices(PIPE_PRIM_TRIANGLES, +                      nverts, +                      nattrs, +                      verts) + +    ctx.flush() + +    save_image('vert-' + name + '.png', cbuf) + +def main(): +    tests = [ +        'abs', +        'add', +        'arl', +        'arr', +        'cb-1d', +        'cb-2d', +        'dp3', +        'dp4', +        'dst', +        'ex2', +        'flr', +        'frc', +        'lg2', +        'lit', +        'lrp', +        'mad', +        'max', +        'min', +        'mov', +        'mul', +        'rcp', +        'rsq', +        'sge', +        'slt', +        'srcmod-abs', +        'srcmod-absneg', +        'srcmod-neg', +        'srcmod-swz', +        'sub', +        'xpd', +    ] + +    dev = Device() +    for t in tests: +        test(dev, t) + +if __name__ == '__main__': +    main() | 
