diff options
author | Ben Widawsky <[email protected]> | 2015-04-10 10:04:55 -0700 |
---|---|---|
committer | Ben Widawsky <[email protected]> | 2015-04-14 15:22:47 -0700 |
commit | 6866378cf42c86d03f38616804e6714a932ab70b (patch) | |
tree | f09667a46f5dabe4b7b5fff0d1ea1cec6e1dab95 /src/mapi/Makefile.am | |
parent | 38707e1478a4b6f4687c583d06fbd68e22900735 (diff) |
i965/fs: Only emit FS_OPCODE_PLACEHOLDER_HALT if there are discards
Based originally on a patch from Ken in May 2014 of the same title. Things
changed enough that I didn't feel comfortable leaving his authorship.
v2: Replace fp->UsesKill with wm_prog_data->uses_kill. Since Ken took the time
to also explain the difference to me, here is his explanation for posterity:
"fp->UsesKill indicates that a ARB_fragment_program shader uses the KIL
instruction, or that a GLSL shader uses the "discard" insntruction
(which are analogous).
On Gen4-5, we sometimes have to simulate OpenGL's "Alpha Test" feature
by emitting shader code that implicitly does a "discard" instruction.
In the key setup, we do:
/* key->alpha_test_func means simulating alpha testing via discards,
* so the shader definitely kills pixels.
*/
prog_data.uses_kill = fp->program.UsesKill || key->alpha_test_func;
Even though the shader may not technically contain a "discard", we need
to act as if it does.
I've also been trying to move the i965 state setup code to use
brw_wm_prog_key for everything, rather than poking at core Mesa's
gl_program/gl_fragment_program/gl_shader/gl_shader_program structures.
--Ken"
Signed-off-by: Ben Widawsky <[email protected]>
Reviewed-by: Matt Turner <[email protected]>
Reviewed-by: Kenneth Graunke <[email protected]>
Diffstat (limited to 'src/mapi/Makefile.am')
0 files changed, 0 insertions, 0 deletions