[Piglit] [PATCH 0/4] calculation of tolerance for complex GLSL built-ins

Ilia Mirkin imirkin at alum.mit.edu
Wed Feb 18 22:54:53 PST 2015


Do you have a git tree for this? Unfortunately you sent the patches
with Content-type: ... format="flowed", which makes it annoying to
read the patches in a conformant email client.

On Thu, Feb 19, 2015 at 1:06 AM, Micah Fedke
<micah.fedke at collabora.co.uk> wrote:
> This series upgrades the ARB_shader_precision test generator with support
> for complex function tolerances.
>
> The ARB_shader_precision spec does not give specific guidance in regard to
> acceptable error ranges for complex functions, supplying only the murky
> "Built-in functions defined in the specification with an equation built from
> the above operations inherit the above errors."  Currently, the
> shader_precision tests allow zero tolerance for complex functions, but this
> is causing many false negatives and needs to be improved.
>
> This series is my best attempt at due diligence - any discussion/input is
> certainly welcomed :)
>
> The theory behind this is probably worth a blog post and I won't belabor the
> point here, but this series basically implements a filter for the test_suite
> dict that will drop any test vectors that would push a function's output
> into regions of greatly multiplied error - the "badlands".  If the output
> does not trespass on the badlands, then the error estimate in ulps is
> calculated and attached to the current test vector for the shader_test to
> use as the allowable error range when analyzing the output generated on the
> GPU during test run-time.
>
> The bigfloat package is a necessary dependency for this filter, as it
> provides both arbitrary-size floating point operations and it allows all
> floating point values and operations in a code block to be forced into a
> particular precision, leaving no question as to what precision was employed
> for an intermediate calculation.  This comes in handy when running the
> reference versions of the complex built-ins.  Performance impact is small
> (~6s for the entire gen_shader_precision_tests.py script on IvyBridge i7 @
> 2.9GHz) and is localized to build-time.
>
> The technique described above actually takes very little python code to
> construct - most of the complexity is in dealing with the polymorphic nature
> of the GLSL built-ins - componentwise vs. non-componentwise parameters, etc.
>
>
> Micah Fedke (4):
> arb_shader_precision: support scalar values in shader_runner_format
> arb_shader_precision: add framework for calculating tolerances for complex
> functions
> arb_shader_precision: add reference implementations of complex functions
> arb_shader_precision: enable calculation of complex function tolerances  -
> update mako templates to support vectors of tolerances
>
>  generated_tests/gen_shader_precision_tests.py                | 376
> +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---------
>  generated_tests/templates/gen_shader_precision_tests/fs.mako |  51
> +++++++++++------
>  generated_tests/templates/gen_shader_precision_tests/gs.mako |  51
> +++++++++++------
>  generated_tests/templates/gen_shader_precision_tests/vs.mako |  51
> +++++++++++------
>  4 files changed, 451 insertions(+), 78 deletions(-)
>
> --
>
> Micah Fedke
> Collabora Ltd.
> +44 1223 362967
> https://www.collabora.com/
> https://twitter.com/collaboraltd
> _______________________________________________
> Piglit mailing list
> Piglit at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/piglit


More information about the Piglit mailing list