Bug 87661 - Move some literal constants to push constants
Summary: Move some literal constants to push constants
Status: NEW
Alias: None
Product: Mesa
Classification: Unclassified
Component: Drivers/DRI/i965 (show other bugs)
Version: git
Hardware: All All
: medium normal
Assignee: Ian Romanick
QA Contact: Intel 3D Bugs Mailing List
Depends on:
Blocks: i965-perf
  Show dependency treegraph
Reported: 2014-12-24 02:28 UTC by Ian Romanick
Modified: 2016-07-12 10:57 UTC (History)
0 users

See Also:
i915 platform:
i915 features:


Note You need to log in before you can comment on or make changes to this bug.
Description Ian Romanick 2014-12-24 02:28:10 UTC
I have observed a shader that generates code like this:

mov(16)         g17<1>F         0.321569F                       { align1 1H };
cmp.ge.f0(16)   g15<1>D         -g10<8,8,1>F    0F              { align1 1H };
and.nz.f0(16)   null            g15<8,8,1>D     1D              { align1 1H compacted };
mov(16)         g19<1>F         0.498039F                       { align1 1H };
mov(16)         g21<1>F         0.223529F                       { align1 1H };
mov(16)         g23<1>F         1F                              { align1 1H };
(-f0) sel(16)   g120<1>F        g17<8,8,1>F     0.12549F        { align1 1H };
(-f0) sel(16)   g122<1>F        g19<8,8,1>F     0.27451F        { align1 1H };
(-f0) sel(16)   g124<1>F        g21<8,8,1>F     0.192157F       { align1 1H };
(-f0) sel(16)   g126<1>F        g23<8,8,1>F     0F              { align1 1H };

If one set of literal constants were moved to push constants, we could save 4 instructions.  The entire shader in question was only 15 instructions, so that would be worthwhile for that case.  In other cases it may be more problematic.
Comment 1 Eero Tamminen 2016-07-12 10:57:29 UTC
Ian, is this still an issue, and if yes, could you attach an example shader?

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.