st/mesa: enable GLSLOptimizeConservatively for drivers that want it
authorMarek Olšák <marek.olsak@amd.com>
Sat, 31 Dec 2016 12:50:38 +0000 (13:50 +0100)
committerMarek Olšák <marek.olsak@amd.com>
Thu, 5 Jan 2017 12:07:12 +0000 (13:07 +0100)
commitc7affbf6875622a2326dafafaed8c3987aaa3483
treebdd03f31d965314aa7c7aa963f1a2d7b63c65421
parent96fe8834f5391f8e6f308569ef8774bb274312fa
st/mesa: enable GLSLOptimizeConservatively for drivers that want it

GLSL compilation now takes 24% less time with the Gallium noop driver.
I used my shader-db for the measurement. The difference for the whole
radeonsi driver can be ~10%.

The generated TGSI is mostly the same. For example, the compilation success
rate with a TGSI->GCN bytecode converter without any optimizations is
the same. Note that glsl_to_tgsi does its own copy propagation and simple
register allocation.

shader-db GCN report:
- Talos spills fewer SGPRs.
- DOTA 2 spills more SGPRs.
- The average shader-db score is better, but it's just due to randomness.

29045 shaders in 17564 tests
Totals:
SGPRS: 1325929 -> 1325017 (-0.07 %)
VGPRS: 1010808 -> 1010172 (-0.06 %)
Spilled SGPRs: 1432 -> 1399 (-2.30 %)
Spilled VGPRs: 93 -> 92 (-1.08 %)
Private memory VGPRs: 688 -> 688 (0.00 %)
Scratch size: 2540 -> 2484 (-2.20 %) dwords per thread
Code Size: 39336732 -> 39342936 (0.02 %) bytes
Max Waves: 217937 -> 217969 (0.01 %)

Reviewed-by: Eric Anholt <eric@anholt.net>
src/mesa/state_tracker/st_extensions.c