[Piglit] [PATCH 03/37] glean/tfragprog1: port ADD tests to shader_runner

Pohjolainen, Topi topi.pohjolainen at intel.com
Wed May 4 17:25:31 UTC 2016


On Tue, May 03, 2016 at 08:58:15AM -0700, Dylan Baker wrote:
> 
> 
> On May 3, 2016 4:11:43 AM PDT, "Pohjolainen, Topi" <topi.pohjolainen at intel.com> wrote:
> >On Mon, May 02, 2016 at 02:59:05PM -0700, Dylan Baker wrote:
> >> This ports the following tests:
> >> - ADD test
> >> - ADD with saturation
> >> - ADD an immediate
> >> - ADD negative immediate
> >> 
> >> It does not port ADD negative "immediate (2)", which adds MOV, MUL,
> >and
> >> swizzling. It might be a useful test but it's not really testing ADD
> >> other than that it tests that ADD can be used with a swizzle.
> >> 
> >> Signed-off-by: Dylan Baker <dylanx.c.baker at intel.com>
> >> ---
> >>  tests/all.py                                       |  5 --
> >>  tests/glean/tfragprog1.cpp                         | 75
> >----------------------
> >>  .../built-in-functions/add-immediate.shader_test   | 16 +++++
> >>  .../add-negative-immediate.shader_test             | 16 +++++
> >>  .../built-in-functions/add.shader_test             | 18 ++++++
> >>  .../built-in-functions/add_sat.shader_test         | 22 +++++++
> >>  6 files changed, 72 insertions(+), 80 deletions(-)
> >>  create mode 100644
> >tests/spec/arb_fragment_program/built-in-functions/add-immediate.shader_test
> >>  create mode 100644
> >tests/spec/arb_fragment_program/built-in-functions/add-negative-immediate.shader_test
> >>  create mode 100644
> >tests/spec/arb_fragment_program/built-in-functions/add.shader_test
> >>  create mode 100644
> >tests/spec/arb_fragment_program/built-in-functions/add_sat.shader_test
> >> 
> >> diff --git a/tests/all.py b/tests/all.py
> >> index 217216e..70be904 100644
> >> --- a/tests/all.py
> >> +++ b/tests/all.py
> >> @@ -376,11 +376,6 @@ glean_glsl_tests = ['Primary plus secondary
> >color',
> >>                      'texcoord varying']
> >>  
> >>  glean_fp_tests = [
> >> -                  'ADD test',
> >> -                  'ADD with saturation',
> >> -                  'ADD an immediate',
> >> -                  'ADD negative immediate',
> >> -                  'ADD negative immediate (2)',
> >>                    'CMP test',
> >>                    'COS test',
> >>                    'COS test 2',
> >> diff --git a/tests/glean/tfragprog1.cpp b/tests/glean/tfragprog1.cpp
> >> index bc340ed..1cbe243 100644
> >> --- a/tests/glean/tfragprog1.cpp
> >> +++ b/tests/glean/tfragprog1.cpp
> >> @@ -82,81 +82,6 @@ static GLfloat FogCoord = 50.0;  /* Between
> >FogStart and FogEnd */
> >>  // Alphabetical order, please
> >>  static const FragmentProgram Programs[] = {
> >>  	{
> >> -		"ADD test",
> >> -		"!!ARBfp1.0\n"
> >> -		"PARAM p = program.local[1]; \n"
> >> -		"ADD result.color, fragment.color, p; \n"
> >> -		"END \n",
> >> -		{ CLAMP01(FragColor[0] + Param1[0]),
> >> -		  CLAMP01(FragColor[1] + Param1[1]),
> >> -		  CLAMP01(FragColor[2] + Param1[2]),
> >> -		  CLAMP01(FragColor[3] + Param1[3])
> >> -		},
> >> -		DONT_CARE_Z
> >> -	},
> >> -	{
> >> -		"ADD with saturation",
> >> -		"!!ARBfp1.0\n"
> >> -		"PARAM p = program.local[1]; \n"
> >> -                "TEMP t; \n"
> >> -                "ADD t, p, p; \n"
> >> -		"ADD_SAT result.color, t, p; \n"
> >> -		"END \n",
> >> -		{ CLAMP01(Param1[0] + Param1[0] + Param1[0]),
> >> -		  CLAMP01(Param1[1] + Param1[1] + Param1[1]),
> >> -		  CLAMP01(Param1[2] + Param1[2] + Param1[2]),
> >> -		  CLAMP01(Param1[3] + Param1[3] + Param1[3]),
> >> -		},
> >> -		DONT_CARE_Z
> >> -	},
> >> -
> >> -	{
> >> -		"ADD an immediate",
> >> -		"!!ARBfp1.0\n"
> >> -		"PARAM p = program.local[1]; \n"
> >> -		"ADD result.color, p, {0.25, 0.0, 0.5, 0.25}; \n"
> >> -		"END \n",
> >> -		{ CLAMP01(Param1[0] + 0.25),
> >> -		  CLAMP01(Param1[1] + 0.0),
> >> -		  CLAMP01(Param1[2] + 0.5),
> >> -		  CLAMP01(Param1[3] + 0.25),
> >> -		},
> >> -		DONT_CARE_Z
> >> -	},
> >> -
> >> -	{
> >> -		"ADD negative immediate",
> >> -		"!!ARBfp1.0\n"
> >> -		"PARAM p = program.local[1]; \n"
> >> -		"ADD result.color, p, {-0.25, -0.2, 0.0, -0.25}; \n"
> >> -		"END \n",
> >> -		{ CLAMP01(Param1[0] - 0.25),
> >> -		  CLAMP01(Param1[1] - 0.2),
> >> -		  CLAMP01(Param1[2] - 0.0),
> >> -		  CLAMP01(Param1[3] - 0.25),
> >> -		},
> >> -		DONT_CARE_Z
> >> -	},
> >> -
> >> -	{
> >> -		"ADD negative immediate (2)",
> >> -		"!!ARBfp1.0\n"
> >> -		"PARAM p = program.local[1]; \n"
> >> -		"TEMP t; \n"
> >> -		"MOV t, p; \n"
> >> -		"MUL t.xyz, t, 2.0; \n"
> >> -		"ADD t.xyz, t, -1.0; \n"
> >> -		"MOV result.color, t; \n"
> >> -		"END \n",
> >> -		{ CLAMP01(Param1[0] * 2.0 - 1.0),
> >> -		  CLAMP01(Param1[1] * 2.0 - 1.0),
> >> -		  CLAMP01(Param1[2] * 2.0 - 1.0),
> >> -		  CLAMP01(Param1[3] ),
> >> -		},
> >> -		DONT_CARE_Z
> >> -	},
> >> -
> >> -	{
> >>  		"CMP test",
> >>  		"!!ARBfp1.0\n"
> >>  		"PARAM zero = program.local[0]; \n"
> >> diff --git
> >a/tests/spec/arb_fragment_program/built-in-functions/add-immediate.shader_test
> >b/tests/spec/arb_fragment_program/built-in-functions/add-immediate.shader_test
> >> new file mode 100644
> >> index 0000000..8a1cc7c
> >> --- /dev/null
> >> +++
> >b/tests/spec/arb_fragment_program/built-in-functions/add-immediate.shader_test
> >> @@ -0,0 +1,16 @@
> >> +[require]
> >> +GL_ARB_fragment_program
> >> +
> >> +[fragment program]
> >> +!!ARBfp1.0
> >> +PARAM p = program.local[0];
> >> +ADD result.color, p, {0.0, 0.5, 0.0, 0.0};
> >> +END
> >> +
> >> +[test]
> >> +clear color 0.5 0.5 0.5 0.5
> >> +clear
> >> +
> >> +parameter local_fp 0 (0.0, 0.5, 0.0, 0.0)
> >> +draw rect -1 -1 2 2
> >> +probe all rgba 0.0 1.0 0.0 0.0
> >> diff --git
> >a/tests/spec/arb_fragment_program/built-in-functions/add-negative-immediate.shader_test
> >b/tests/spec/arb_fragment_program/built-in-functions/add-negative-immediate.shader_test
> >> new file mode 100644
> >> index 0000000..67c6e75
> >> --- /dev/null
> >> +++
> >b/tests/spec/arb_fragment_program/built-in-functions/add-negative-immediate.shader_test
> >> @@ -0,0 +1,16 @@
> >> +[require]
> >> +GL_ARB_fragment_program
> >> +
> >> +[fragment program]
> >> +!!ARBfp1.0
> >> +PARAM p = program.local[0];
> >> +ADD result.color, p, {-1.0, 0.0, 0.0, 0.0};
> >> +END
> >> +
> >> +[test]
> >> +clear color 0.5 0.5 0.5 0.5
> >> +clear
> >> +
> >> +parameter local_fp 0 (1.0, 1.0, 0.0, 0.0)
> >> +draw rect -1 -1 2 2
> >> +probe all rgba 0.0 1.0 0.0 0.0
> >> diff --git
> >a/tests/spec/arb_fragment_program/built-in-functions/add.shader_test
> >b/tests/spec/arb_fragment_program/built-in-functions/add.shader_test
> >> new file mode 100644
> >> index 0000000..0312d29
> >> --- /dev/null
> >> +++
> >b/tests/spec/arb_fragment_program/built-in-functions/add.shader_test
> >> @@ -0,0 +1,18 @@
> >> +[require]
> >> +GL_ARB_fragment_program
> >> +
> >> +[fragment program]
> >> +!!ARBfp1.0
> >> +PARAM p = program.local[0];
> >> +PARAM q = program.local[1];
> >> +ADD result.color, p, q;
> >> +END
> >> +
> >> +[test]
> >> +clear color 0.5 0.5 0.5 0.5
> >> +clear
> >> +
> >> +parameter local_fp 1 ( 1.0, 0.0, 0.0, 0.0)
> >> +parameter local_fp 0 (-2.0, 1.0, 0.0, 0.0)
> >
> >Just checking that you intented this to produce in red channel
> >1.0 + (-2.0) = -1.0 which gets clamped to zero?
> >
> >> +draw rect -1 -1 2 2
> >> +probe all rgba 0.0 1.0 0.0 0.0
> >> diff --git
> >a/tests/spec/arb_fragment_program/built-in-functions/add_sat.shader_test
> >b/tests/spec/arb_fragment_program/built-in-functions/add_sat.shader_test
> >> new file mode 100644
> >> index 0000000..4bebccc
> >> --- /dev/null
> >> +++
> >b/tests/spec/arb_fragment_program/built-in-functions/add_sat.shader_test
> >> @@ -0,0 +1,22 @@
> >> +[require]
> >> +GL_ARB_fragment_program
> >> +
> >> +[fragment program]
> >> +!!ARBfp1.0
> >> +PARAM p = program.local[0];
> >> +PARAM q = program.local[1];
> >> +PARAM r = program.local[2];
> >> +TEMP s;
> >> +ADD s, p, q;
> >> +ADD_SAT result.color, r, s;
> >> +END
> >> +
> >> +[test]
> >> +clear color 0.5 0.5 0.5 0.5
> >> +clear
> >> +
> >> +parameter local_fp 0 ( 0.0, 0.5, 0.0, 0.0)
> >> +parameter local_fp 1 ( 0.0, 0.2, 0.0, 0.0)
> >> +parameter local_fp 2 ( 0.0, 0.3, 0.0, 0.0)
> >
> >Here in turn the test is named to sat (saturate) but 0.5 + 0.2 + 0.3 =
> >1.0
> >doesn't need any. I'm probably missing something - even with the
> >original
> >glean tests. They clamp (all components are wrapped in CLAMP01()) the
> >values
> >before passing them out from the shader.
> 
> You're right. I don't have the code in front of me, but it may have been a defect if the original test. My understanding is that the sat variants clamp 0 to 1, is that correct?
> 
> If it is I'll fix the test

Okay, I don't how I mis-read the original tests so badly - CLAMP01 is the part
that defines the expected value. Anyway, if we want ADD_SAT to kick in, we need
to change the input so that the result > 1.
You have tried to define the inputs in such a way that yields all green in
succees case. This is how most tests are setup. However, there are also tests
that use other combinations and it might be justified here - otherwise we have
just easy values of zero in all other channels other than green. If we
wanted to keep strictly to the original, we would write:

fragment program]
ARBfp1.0
PARAM p = program.local[0];
TEMP s;
ADD s, p, p;
ADD_SAT result.color, p, s;
END

[test]
clear color 0.5 0.5 0.5 0.5
clear

parameter local_fp 0 (0.5, 0.25, 1.0, 0.5)
draw rect -1 -1 2 2
probe all rgba 1.0 0.75 1.0 1.0


------------
Original had:

#define PARAM1 { 0.5, 0.25, 1.0, 0.5 }
static const GLfloat Param1[4] = PARAM1;

> >> -		"ADD with saturation",
> >> -		"!!ARBfp1.0\n"
> >> -		"PARAM p = program.local[1]; \n"
> >> -                "TEMP t; \n"
> >> -                "ADD t, p, p; \n"
> >> -		"ADD_SAT result.color, t, p; \n"
> >> -		"END \n",
> >> -		{ CLAMP01(Param1[0] + Param1[0] + Param1[0]),
> >> -		  CLAMP01(Param1[1] + Param1[1] + Param1[1]),
> >> -		  CLAMP01(Param1[2] + Param1[2] + Param1[2]),
> >> -		  CLAMP01(Param1[3] + Param1[3] + Param1[3]),
> >> -		},
> >> -		DONT_CARE_Z
> >> -	},



More information about the Piglit mailing list