On Mon, Jun 23, 2014 at 10:27 PM, Abdiel Janulgue <abdiel.janul...@linux.intel.com> wrote: > This patch series add the plumbing to support the GLSL IR instruction > saturate(). > Previously, saturate is implemented as min/max instructions. Most GPUs, > however, > can probably perform saturate for free. With these changes, we can allow > saturate > to be optimized as a single instruction. > > In addition, the optimization try_emit_saturate was previously used to > optimize > min/max operations to a saturate operation. It didn't work for code such as > min(max(a, b), c) where (b == 0.0 and c < 1.0) and related cases. > With this infrastructure in place, we can optimize those operations easily in > the > do_algebraic pass. This is done in the next patch set. > > Abdiel Janulgue (11): > glsl: Add ir_unop_saturate > glsl: Add constant evaluation of ir_unop_saturate > glsl: Add a pass to lower ir_unop_saturate to clamp(x, 0, 1) > ir_to_mesa, glsl_to_tgsi: lower ir_unop_saturate > ir_to_mesa, glsl_to_tgsi: Add support for ir_unop_saturate > ir_to_mesa, glsl_to_tgsi: Remove try_emit_saturate > i965/fs: Add support for ir_unop_saturate > i965/vec4: Add support for ir_unop_saturate > i965/fs: Remove try_emit_saturate > i965/vec4: Remove try_emit_saturate > glsl: Implement saturate as ir_binop_saturate
I think we'll want to reorder the series slightly, so that we don't remove the try_emit_sat functions until after we've started emitting ir_unop_saturate from ir_builder and until the opt_algebraic pass is in place. _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev