mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-28 01:40:08 +01:00
intel/fs: Bail in optimize_extract_to_float if we have modifiers
This fixes a bug in runscape where we were optimizing x >> 16 to an
extract and then negating and converting to float. The NIR to fs pass
was dropping the negate on the floor breaking a geometry shader and
causing it to render nothing.
Fixes: 1f862e923c "i965/fs: Optimize float conversions of byte/word..."
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=109601
Tested-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Matt Turner <mattst88@gmail.com>
This commit is contained in:
parent
8c859367df
commit
367b0ede4d
1 changed files with 9 additions and 0 deletions
|
|
@ -512,6 +512,15 @@ fs_visitor::optimize_extract_to_float(nir_alu_instr *instr,
|
|||
src0->op != nir_op_extract_i8 && src0->op != nir_op_extract_i16)
|
||||
return false;
|
||||
|
||||
/* If either opcode has source modifiers, bail.
|
||||
*
|
||||
* TODO: We can potentially handle source modifiers if both of the opcodes
|
||||
* we're combining are signed integers.
|
||||
*/
|
||||
if (instr->src[0].abs || instr->src[0].negate ||
|
||||
src0->src[0].abs || src0->src[0].negate)
|
||||
return false;
|
||||
|
||||
unsigned element = nir_src_as_uint(src0->src[1].src);
|
||||
|
||||
/* Element type to extract.*/
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue