[Piglit] [PATCH] glsl-1.20: Add a bunch of outerProduct execution tests for constant data

Chad Versace chad at chad-versace.us
Mon May 2 09:52:11 PDT 2011


Good idea to test the constant-folding execution path.


On 05/01/2011 04:58 PM, Ian Romanick wrote:
> =======================================
> 
> diff --git a/tests/spec/glsl-1.20/execution/outerProduct-const.sh b/tests/spec/glsl-1.20/execution/outerProduct-const.sh
> new file mode 100755
> index 0000000..d0474a4
> 
> --- /dev/null
> 
> +++ b/tests/spec/glsl-1.20/execution/outerProduct-const.sh
> 
> @@ -0,0 +1,138 @@
> 
> +#!/bin/sh
> +
> +function emit_outerProduct_const_data
> +{
> + c=$1
> + r=$2
> + mtype=$3
> +
> + cbase=$4
> + cvec=""
> + for i in $(seq $c); do
> + v=$(($i + $cbase))
> + if [ "x$cvec" == "x" ]; then
> + cvec="${v}"
> + else
> + cvec="${cvec}, ${v}"
> + fi
> + done
> +
> + rbase=$(($3 + $c))
> + rvec=""
> + for i in $(seq $r); do
> + v=$(($i + $rbase))
> + if [ "x$rvec" == "x" ]; then
> + rvec="${v}"
> + else
> + rvec="${rvec}, ${v}"
> + fi
> + done
> +
> + expected=""
> + for i in $(seq $r); do
> + for j in $(seq $c); do
> + m=$((($i + $rbase) * ($j + $cbase)))
> + if [ "x$expected" == "x" ]; then
> + expected="${m}"
> + else
> + expected="${expected}, ${m}"
> + fi
> + done
> + done
> +
> + echo
> + echo "const vec${c} c = vec${c}(${cvec});"
> + echo "const vec${r} r = vec${r}(${rvec});"
> + echo "uniform ${mtype} expected = ${mtype}(${expected});"
> +
> +}
> +
> +function emit_vs_test
> +{
> + c=$1
> + r=$2
> + mat=$3
> +
> + name="vs-outerProduct-const-${mat}.shader_test"
> + cat > $name <<EOF
> +[require]
> +GLSL >= 1.20
> +
> +[vertex shader]
> +#version 120
> +EOF
> +
> + emit_outerProduct_const_data $c $r $mat 1 >> $name
> +
> + cat >> $name <<EOF
> +varying vec4 color;
> +
> +void main() {
> + gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
> + ${mat} result = outerProduct(c, r);
> + color = (result == expected) ? vec4(0, 1, 0, 1) : vec4(1, 0, 0, 1);
> +}
> +
> +[fragment shader]
> +#version 120
> +varying vec4 color;
> +void main() { gl_FragColor = color; }
> +
> +[test]
> +clear color 0.5 0.5 0.5 0.0
> +clear
> +ortho
> +
> +draw rect 10 10 10 10"
> +probe rgb 15 15 0.0 1.0 0.0"

The draw and probe lines have a trailing '"'. Ditto for emit_fs_test().

> +EOF
> +}
> +
> +function emit_fs_test
> +{
> + c=$1
> + r=$2
> + mat=$3
> +
> + name="fs-outerProduct-const-${mat}.shader_test"
> + cat > $name <<EOF
> +[require]
> +GLSL >= 1.20
> +
> +[vertex shader]
> +#version 120
> +void main() { gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex; }
> +
> +[fragment shader]
> +#version 120
> +EOF
> +
> + emit_outerProduct_const_data $c $r $mat 1 >> $name
> +
> + cat >> $name <<EOF
> +
> +void main() {
> + ${mat} result = outerProduct(c, r);
> + gl_FragColor = (result == expected) ? vec4(0, 1, 0, 1) : vec4(1, 0, 0,
> 1);
> +}
> +
> +[test]
> +clear color 0.5 0.5 0.5 0.0
> +clear
> +ortho
> +
> +draw rect 10 10 10 10"
> +probe rgb 15 15 0.0 1.0 0.0"
> +EOF
> +}
> +
> +for c in 2 3 4; do
> + for r in 2 3 4; do
> + emit_vs_test $c $r "mat${r}x${c}"
> + emit_fs_test $c $r "mat${r}x${c}"
> + if [ $c -eq $r ]; then
> + emit_vs_test $c $r "mat${r}"
> + emit_fs_test $c $r "mat${r}"
> + fi
> + done
> +done
> 

-- 
Chad Versace
chad at chad-versace.us


More information about the Piglit mailing list