On 12 October 2015 at 13:05, Ilia Mirkin <[email protected]> wrote: > On Sun, Oct 11, 2015 at 11:02 PM, Dave Airlie <[email protected]> wrote: >> From: Dave Airlie <[email protected]> >> >> 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 <[email protected]> >> --- >> .../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?
No we want to read the dvec4 at loc_v1 into floats here. So loc_v1 is correct. Dave. _______________________________________________ Piglit mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/piglit
