Simple tests to make sure the packing is correct, along with constant tests.
They are based on 04d7b02a. v2: Removed vs-const* patches. Signed-off-by: Samuel Iglesias Gonsálvez <sigles...@igalia.com> --- .../vs-packDouble2x32.shader_test | 59 ++++++++++++++++++++++ .../vs-unpackDouble2x32-2.shader_test | 57 +++++++++++++++++++++ .../vs-unpackDouble2x32.shader_test | 54 ++++++++++++++++++++ 3 files changed, 170 insertions(+) create mode 100644 tests/spec/arb_gpu_shader_fp64/execution/built-in-functions/vs-packDouble2x32.shader_test create mode 100644 tests/spec/arb_gpu_shader_fp64/execution/built-in-functions/vs-unpackDouble2x32-2.shader_test create mode 100644 tests/spec/arb_gpu_shader_fp64/execution/built-in-functions/vs-unpackDouble2x32.shader_test diff --git a/tests/spec/arb_gpu_shader_fp64/execution/built-in-functions/vs-packDouble2x32.shader_test b/tests/spec/arb_gpu_shader_fp64/execution/built-in-functions/vs-packDouble2x32.shader_test new file mode 100644 index 0000000..c888773 --- /dev/null +++ b/tests/spec/arb_gpu_shader_fp64/execution/built-in-functions/vs-packDouble2x32.shader_test @@ -0,0 +1,59 @@ +[require] +GLSL >= 1.50 +GL_ARB_gpu_shader_fp64 + +[vertex shader] +#extension GL_ARB_gpu_shader_fp64 : enable + +in vec4 vertex; +out vec4 color; + +uniform double expected_doub; +uniform uvec2 given_uval; + +void main() { + gl_Position = vertex; + /* Green if both pass. */ + color = vec4(0.0, 1.0, 0.0, 1.0); + + double packval; + + packval = packDouble2x32(given_uval); + + if (packval != expected_doub) { + color.r = 1.0; + } +} + +[fragment shader] + +in vec4 color; +out vec4 fs_color; + +void main() +{ + fs_color = color; +} + +[vertex data] +vertex/float/2 +-1.0 -1.0 + 1.0 -1.0 + 1.0 1.0 +-1.0 1.0 + +[test] +uniform double expected_doub 0.0 +uniform uvec2 given_uval 0 0 +draw arrays GL_TRIANGLE_FAN 0 4 +probe rgba 0 0 0.0 1.0 0.0 1.0 + +uniform double expected_doub 1.5 +uniform uvec2 given_uval 0 1073217536 +draw arrays GL_TRIANGLE_FAN 0 4 +probe rgba 1 0 0.0 1.0 0.0 1.0 + +uniform double expected_doub 2.122e-311 +uniform uvec2 given_uval 8519181 1000 +draw arrays GL_TRIANGLE_FAN 0 4 +probe rgba 2 0 0.0 1.0 0.0 1.0 diff --git a/tests/spec/arb_gpu_shader_fp64/execution/built-in-functions/vs-unpackDouble2x32-2.shader_test b/tests/spec/arb_gpu_shader_fp64/execution/built-in-functions/vs-unpackDouble2x32-2.shader_test new file mode 100644 index 0000000..aa2a565 --- /dev/null +++ b/tests/spec/arb_gpu_shader_fp64/execution/built-in-functions/vs-unpackDouble2x32-2.shader_test @@ -0,0 +1,57 @@ +# test unpack with a single channel specified +# to demonstrate a bug in glsl->tgsi dead-code elimination +[require] +GLSL >= 1.50 +GL_ARB_gpu_shader_fp64 + +[vertex shader] +#extension GL_ARB_gpu_shader_fp64 : enable + +in vec4 vertex; +out vec4 color; + +uniform double given_doub; +uniform uint expected_uval; + +void main() +{ + gl_Position = vertex; + /* Green if both pass. */ + color = vec4(0.0, 1.0, 0.0, 1.0); + + uint packval; + + packval = unpackDouble2x32(abs(given_doub)).y; + + if (packval != expected_uval) { + color.r = 1.0; + } +} + +[fragment shader] + +in vec4 color; +out vec4 fs_color; + +void main() +{ + fs_color = color; +} + +[vertex data] +vertex/float/2 +-1.0 -1.0 + 1.0 -1.0 + 1.0 1.0 +-1.0 1.0 + +[test] +uniform double given_doub 0.0 +uniform uint expected_uval 0 +draw arrays GL_TRIANGLE_FAN 0 4 +probe rgba 0 0 0.0 1.0 0.0 1.0 + +uniform double given_doub 1.5 +uniform uint expected_uval 1073217536 +draw arrays GL_TRIANGLE_FAN 0 4 +probe rgba 1 0 0.0 1.0 0.0 1.0 diff --git a/tests/spec/arb_gpu_shader_fp64/execution/built-in-functions/vs-unpackDouble2x32.shader_test b/tests/spec/arb_gpu_shader_fp64/execution/built-in-functions/vs-unpackDouble2x32.shader_test new file mode 100644 index 0000000..f6156cf --- /dev/null +++ b/tests/spec/arb_gpu_shader_fp64/execution/built-in-functions/vs-unpackDouble2x32.shader_test @@ -0,0 +1,54 @@ +[require] +GLSL >= 1.50 +GL_ARB_gpu_shader_fp64 + +[vertex shader] +#extension GL_ARB_gpu_shader_fp64 : enable +in vec4 vertex; + +uniform double given_doub; +uniform uvec2 expected_uval; + +out vec4 color; + +void main() { + gl_Position = vertex; + /* Green if both pass. */ + color = vec4(0.0, 1.0, 0.0, 1.0); + + uvec2 packval; + + packval = unpackDouble2x32(given_doub); + + if (packval != expected_uval) { + color.r = 1.0; + } +} + +[fragment shader] + +in vec4 color; +out vec4 fs_color; + +void main() +{ + fs_color = color; +} + +[vertex data] +vertex/float/2 +-1.0 -1.0 + 1.0 -1.0 + 1.0 1.0 +-1.0 1.0 + +[test] +uniform double given_doub 0.0 +uniform uvec2 expected_uval 0 0 +draw arrays GL_TRIANGLE_FAN 0 4 +probe rgba 0 0 0.0 1.0 0.0 1.0 + +uniform double given_doub 1.5 +uniform uvec2 expected_uval 0 1073217536 +draw arrays GL_TRIANGLE_FAN 0 4 +probe rgba 1 0 0.0 1.0 0.0 1.0 -- 2.7.4 _______________________________________________ Piglit mailing list Piglit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/piglit