[Piglit] [PATCH] arb_gpu_shader_fp64: expand get uniform even further.
Ilia Mirkin
imirkin at alum.mit.edu
Sun Oct 11 20:05:25 PDT 2015
On Sun, Oct 11, 2015 at 11:02 PM, Dave Airlie <airlied at gmail.com> wrote:
> From: Dave Airlie <airlied at redhat.com>
>
> Ilia pointed out the fix patch didn't go far enough, so add
> some tests to cover more cases, specifically:
>
> a) reading from a dvec4 into a float
> b) reading from a vec4 into doubles.
>
> Signed-off-by: Dave Airlie <airlied at redhat.com>
> ---
> .../arb_gpu_shader_fp64/execution/getuniformdv.c | 31 +++++++++++++++++++---
> 1 file changed, 27 insertions(+), 4 deletions(-)
>
> diff --git a/tests/spec/arb_gpu_shader_fp64/execution/getuniformdv.c b/tests/spec/arb_gpu_shader_fp64/execution/getuniformdv.c
> index 8cda7f4..5f7d85e 100644
> --- a/tests/spec/arb_gpu_shader_fp64/execution/getuniformdv.c
> +++ b/tests/spec/arb_gpu_shader_fp64/execution/getuniformdv.c
> @@ -50,6 +50,7 @@ static const char vs_text[] =
> "uniform s1 s;\n"
> "uniform double d2; \n"
> "uniform float f1; \n"
> + "uniform vec4 fv1; \n"
> "uniform uint ui1; \n"
> "uniform int i1; \n"
> "uniform bool b1; \n"
> @@ -59,6 +60,7 @@ static const char vs_text[] =
> "{\n"
> " gl_Position = vec4(0.0, 0.0, 0.0, 1.0);\n"
> " dvec4 t = dvec4(s.a, s.b, s.c, s.d) * d1 + d2 + double(f1) + double(ui1) + double(i1) + double(b1);\n"
> + " t += fv1.x + fv1.y + fv1.z + fv1.w;\n"
> " t += v[0] + v[1] + v[2]; \n"
> " color = vec4(t); \n"
> "}\n";
> @@ -81,8 +83,8 @@ piglit_init(int argc, char **argv)
> {
> GLuint vs, fs, prog;
> GLint numUniforms, i;
> - GLint expectedNum = 11;
> - GLint loc_d1, loc_d2, loc_sa, loc_sd, loc_v1, loc_f1, loc_ui1, loc_i1, loc_b1;
> + GLint expectedNum = 12;
> + GLint loc_d1, loc_d2, loc_sa, loc_sd, loc_v1, loc_f1, loc_fv1, loc_ui1, loc_i1, loc_b1;
> GLdouble v[4];
> GLfloat f[4];
> GLuint ui[4];
> @@ -136,8 +138,11 @@ piglit_init(int argc, char **argv)
> expectedType = GL_DOUBLE;
> expectedSize = 1;
> } else if (name[0] == 'f') {
> - expectedType = GL_FLOAT;
> - expectedSize = 1;
> + if (name[1] == 'v')
> + expectedType = GL_FLOAT_VEC4;
> + else
> + expectedType = GL_FLOAT;
> + expectedSize = 1;
> } else if (name[0] == 'i') {
> expectedType = GL_INT;
> expectedSize = 1;
> @@ -170,6 +175,7 @@ piglit_init(int argc, char **argv)
> loc_sd = glGetUniformLocation(prog, "s.d");
> loc_v1 = glGetUniformLocation(prog, "v[1]");
> loc_f1 = glGetUniformLocation(prog, "f1");
> + loc_fv1 = glGetUniformLocation(prog, "fv1");
> loc_ui1 = glGetUniformLocation(prog, "ui1");
> loc_i1 = glGetUniformLocation(prog, "i1");
> loc_b1 = glGetUniformLocation(prog, "b1");
> @@ -179,6 +185,7 @@ piglit_init(int argc, char **argv)
> glUniform1d(loc_sd, 20.0);
> glUniform4dv(loc_v1, 1, vVals);
> glUniform1f(loc_f1, 40.0);
> + glUniform4f(loc_fv1, 40.0, 30.0, 20.0, 10.0);
> glUniform1ui(loc_ui1, 100);
> glUniform1i(loc_i1, -100);
>
> @@ -249,6 +256,15 @@ piglit_init(int argc, char **argv)
> piglit_report_result(PIGLIT_FAIL);
> }
>
> + glGetUniformfv(prog, loc_v1, f);
loc_fv1 right?
> + if (f[0] != 30.0 ||
> + f[1] != 31.0 ||
> + f[2] != 32.0 ||
> + f[3] != 33.0) {
> + printf("%s: wrong value for v[1] (found %g,%g,%g,%g, expected %g,%g,%g,%g)\n",
> + TestName, f[0], f[1], f[2], f[3], 30.0, 31.0, 32.0, 33.0);
> + piglit_report_result(PIGLIT_FAIL);
> + }
> /* use double getters on non-doubles */
> glGetUniformdv(prog, loc_f1, v);
> if (v[0] != 40.0) {
> @@ -256,6 +272,13 @@ piglit_init(int argc, char **argv)
> TestName, v[0], 40.0);
> piglit_report_result(PIGLIT_FAIL);
> }
> + glGetUniformdv(prog, loc_fv1, v);
> + if (v[0] != 40.0 || v[1] != 30.0 || v[2] != 20.0 || v[3] != 10.0) {
> + printf("%s: wrong value for fv1 (found %f,%f,%f,%f, expected %f,%f,%f,%f)\n",
> + TestName, v[0], v[1], v[2], v[3], 40.0, 30.0, 20.0, 10.0);
> + piglit_report_result(PIGLIT_FAIL);
> + }
> +
> glGetUniformdv(prog, loc_ui1, v);
> if (v[0] != 100.0) {
> printf("%s: wrong value for ui1 (found %f, expected %f)\n",
> --
> 2.4.3
>
> _______________________________________________
> Piglit mailing list
> Piglit at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/piglit
More information about the Piglit
mailing list