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

Micah Fedke micah.fedke at collabora.co.uk
Thu Feb 19 06:35:52 PST 2015

Ack!  Really sorry about that.  Thunderbird crashed as I was about to 
send, and while it did me the favor of saving drafts I neglected to 
check word wrapping before sending them.

This is what you're looking for:


On 02/19/2015 12:54 AM, Ilia Mirkin wrote:
> 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


Micah Fedke
Collabora Ltd.
+44 1223 362967

More information about the Piglit mailing list