Bug 59875 - fbo-blending-formats regression
Summary: fbo-blending-formats regression
Status: RESOLVED NOTABUG
Alias: None
Product: piglit
Classification: Unclassified
Component: tests (show other bugs)
Version: unspecified
Hardware: x86-64 (AMD64) Linux (All)
: medium normal
Assignee: Eric Anholt
QA Contact: Eric Anholt
URL:
Whiteboard:
Keywords: regression
Depends on:
Blocks:
 
Reported: 2013-01-26 01:02 UTC by Vinson Lee
Modified: 2014-05-19 00:26 UTC (History)
3 users (show)

See Also:
i915 platform:
i915 features:


Attachments

Description Vinson Lee 2013-01-26 01:02:41 UTC
fbo-blending-formats regressed on swrast, softpipe, and llvmpipe.

$ ./bin/fbo-blending-formats -auto
[...]
Testing GL_RGB10
Probe at (96,0)
  Expected: 0.800000 0.300000 0.500000 1.000000
  Observed: 0.833822 0.333333 0.566960 1.000000
  when testing FBO result, blending with DST_ALPHA.
PIGLIT:subtest {'GL_RGB10' : 'fail'}
Testing GL_RGB12
Probe at (96,0)
  Expected: 0.800000 0.300000 0.500000 1.000000
  Observed: 0.850004 0.349996 0.600000 1.000000
  when testing FBO result, blending with DST_ALPHA.
PIGLIT:subtest {'GL_RGB12' : 'fail'}
Testing GL_RGB16
Probe at (96,0)
  Expected: 0.800000 0.300000 0.500000 1.000000
  Observed: 0.850004 0.349996 0.600000 1.000000
  when testing FBO result, blending with DST_ALPHA.
PIGLIT:subtest {'GL_RGB16' : 'fail'}


306a3a4d6d933ab16ca40fab9dc7e177cf110f78 is the first bad commit
commit 306a3a4d6d933ab16ca40fab9dc7e177cf110f78
Author: Carl Worth <cworth@cworth.org>
Date:   Mon Jan 14 14:17:16 2013 -0800

    fbo-blending-formats: Enable testing for channels with 0 bits of data.
    
    The existing code is intentionally disabling testing for channels with
    1 bit of data, (since the ambiguity in rounding makes it infeasible to
    test). But the disabling of testing for 0-bit channels was
    unintentional collateral damage.
    
    In particular, for RGB-only formats it's important to test that
    results always provide a value of 1.0 for alpha.
    
    So we change the condition to disable tests only when the number of
    bits is equal to 1, (as opposed to less then 2). We also just fudge in
    a tolerance value corresponding to 8 bits for channels with 0 bits of
    storage. (The tolerance probably doesn't matter at all here since we
    should really only be doing exact comparisons of values of 0.0 or
    1.0).
    
    Reviewed-by: Marek Olšák <maraeo@gmail.com>

:040000 040000 6f7f8ed73d818bcba747340ef629777161e7b687 0b7d5d44312ac71df116c221ee331c8b1c392a2e M	tests
bisect run success
Comment 1 David Heidelberg (okias) 2014-05-18 23:57:07 UTC
I can confirm this on r600g (HD 6550D, mesa git, kernel 3.15-git)

$ fbo-blending-formats -fbo -auto 
Using test set: Core formats
Testing 3
Probe color at (120,0)
  Expected: 0.800000 0.300000 0.500000 1.000000
  Observed: 0.847059 0.349020 0.600000 1.000000
  when testing FBO result, blending with DST_ALPHA.
PIGLIT:subtest {'3' : 'fail'}
Testing 4
PIGLIT:subtest {'4' : 'pass'}
Testing GL_RGB
Probe color at (120,0)
  Expected: 0.800000 0.300000 0.500000 1.000000
  Observed: 0.847059 0.349020 0.600000 1.000000
  when testing FBO result, blending with DST_ALPHA.
PIGLIT:subtest {'GL_RGB' : 'fail'}
...
Testing GL_RGB8
Probe color at (120,0)
  Expected: 0.800000 0.300000 0.500000 1.000000
  Observed: 0.847059 0.349020 0.600000 1.000000
  when testing FBO result, blending with DST_ALPHA.
PIGLIT:subtest {'GL_RGB8' : 'fail'}
Testing GL_RGB10
Probe color at (120,0)
  Expected: 0.800000 0.300000 0.500000 1.000000
  Observed: 0.832845 0.333333 0.566960 1.000000
  when testing FBO result, blending with DST_ALPHA.
PIGLIT:subtest {'GL_RGB10' : 'fail'}
Testing GL_RGB12
Probe color at (120,0)
  Expected: 0.800000 0.300000 0.500000 1.000000
  Observed: 0.850004 0.349996 0.600000 1.000000
  when testing FBO result, blending with DST_ALPHA.
PIGLIT:subtest {'GL_RGB12' : 'fail'}
Testing GL_RGB16
Probe color at (120,0)
  Expected: 0.800000 0.300000 0.500000 1.000000
  Observed: 0.850004 0.349996 0.600000 1.000000
  when testing FBO result, blending with DST_ALPHA.
PIGLIT:subtest {'GL_RGB16' : 'fail'}
Testing GL_RGBA2
PIGLIT:subtest {'GL_RGBA2' : 'pass'}
Testing GL_RGBA4
PIGLIT:subtest {'GL_RGBA4' : 'pass'}
Testing GL_RGB5_A1
PIGLIT:subtest {'GL_RGB5_A1' : 'pass'}
Testing GL_RGBA8
PIGLIT:subtest {'GL_RGBA8' : 'pass'}
Testing GL_RGB10_A2
PIGLIT:subtest {'GL_RGB10_A2' : 'pass'}
Testing GL_RGBA12
PIGLIT:subtest {'GL_RGBA12' : 'pass'}
Testing GL_RGBA16
PIGLIT:subtest {'GL_RGBA16' : 'pass'}
PIGLIT: {'result': 'fail' }

Should it be fixed in gallium or in piglit?
Comment 2 Marek Olšák 2014-05-19 00:24:07 UTC
This is not easy to fix on Evergreen and older hardware. The test passes on Cayman and later hardware.
Comment 3 Marek Olšák 2014-05-19 00:26:11 UTC
Closing as NOTABUG. This is not an issue with piglit, it's actually an issue with the drivers.


Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.