mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-08 02:38:04 +02:00
i965: Don't calculate masks of used FS inputs
This previously enabled some optimizations in the fragment shader (interpolation, etc.) if some input components were always 0.0 or 1.0. However, this data was generated by analyzing Mesa IR. The next patch in this series removes generation of Mesa IR for GLSL paths. When we detect that case, just set the used mask to ~0 and circumvent the optimizations. Signed-off-by: Ian Romanick <ian.d.romanick@intel.com> Reviewed-by: Eric Anholt <eric@anholt.net> Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
This commit is contained in:
parent
6c0df75803
commit
efdc8bf189
1 changed files with 15 additions and 0 deletions
|
|
@ -195,6 +195,21 @@ static void calc_wm_input_sizes( struct brw_context *brw )
|
|||
GLuint insn;
|
||||
GLuint i;
|
||||
|
||||
/* Mesa IR is not generated for GLSL vertex shaders. If there's no Mesa
|
||||
* IR, the code below cannot determine which output components are
|
||||
* written. So, skip it and assume everything is written. This
|
||||
* circumvents some optimizations in the fragment shader, but it guarantees
|
||||
* that correct code is generated.
|
||||
*/
|
||||
if (vp->program.Base.NumInstructions == 0) {
|
||||
brw->wm.input_size_masks[0] = ~0;
|
||||
brw->wm.input_size_masks[1] = ~0;
|
||||
brw->wm.input_size_masks[2] = ~0;
|
||||
brw->wm.input_size_masks[3] = ~0;
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
memset(&t, 0, sizeof(t));
|
||||
|
||||
/* _NEW_LIGHT | _NEW_PROGRAM */
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue