diff options
author | Kenneth Graunke <[email protected]> | 2014-03-07 00:49:45 -0800 |
---|---|---|
committer | Kenneth Graunke <[email protected]> | 2014-03-18 10:11:38 -0700 |
commit | de7ad2c88f4ec243c95eaed22c41d0e537912e01 (patch) | |
tree | 58a89164eab249a503f0ee9d2562222710807c56 /src/glx/indirect_vertex_array.c | |
parent | b207e88b25e526d0f1ada7b19605b880a27866dc (diff) |
i965: Accurately bail on SIMD16 compiles.
Ideally, we'd like to never even attempt the SIMD16 compile if we could
know ahead of time that it won't succeed---it's purely a waste of time.
This is especially important for state-based recompiles, which happen at
draw time.
The fragment shader compiler has a number of checks like:
if (dispatch_width == 16)
fail("...some reason...");
This patch introduces a new no16() function which replaces the above
pattern. In the SIMD8 compile, it sets a "SIMD16 will never work" flag.
Then, brw_wm_fs_emit can check that flag, skip the SIMD16 compile, and
issue a helpful performance warning if INTEL_DEBUG=perf is set. (In
SIMD16 mode, no16() calls fail(), for safety's sake.)
The great part is that this is not a heuristic---if the flag is set, we
know with 100% certainty that the SIMD16 compile would fail. (It might
fail anyway if we run out of registers, but it's always worth trying.)
v2: Fix missing va_end in early-return case (caught by Ilia Mirkin).
Signed-off-by: Kenneth Graunke <[email protected]>
Reviewed-by: Chris Forbes <[email protected]> [v1]
Reviewed-by: Ian Romanick <[email protected]> [v1]
Reviewed-by: Eric Anholt <[email protected]>
Diffstat (limited to 'src/glx/indirect_vertex_array.c')
0 files changed, 0 insertions, 0 deletions