nir: add a pass to clamp gl_PointSize to a range
authorIago Toral Quiroga <itoral@igalia.com>
Wed, 31 Jul 2019 07:47:08 +0000 (09:47 +0200)
committerIago Toral Quiroga <itoral@igalia.com>
Tue, 13 Aug 2019 07:44:12 +0000 (09:44 +0200)
commit48f5c34301e9f03a18b928251180c82b8c7571d1
tree4f2b2381711609d9207e509765ca8b9def83ebe2
parent62e0ca3064ba2500f97025599d5ca7210cb4dc04
nir: add a pass to clamp gl_PointSize to a range

The OpenGL and OpenGL ES specs require that implementations clamp the
value of gl_PointSize to an implementation-depedent range. This pass
is useful for any GPU hardware that doesn't do this automatically
for either one or both sides of the range, such as V3D.

v2:
 - Turn into a generic NIR pass (Eric).
 - Make the pass work before lower I/O so we can use the deref variable
   to inspect if we are writing to gl_PointSize (Eric).
 - Make the pass take the range to clamp as parameter and allow it
   to clamp to both sides of the range or just one side.
 - Make the pass report progress.

v3:
 - Fix copyright header (Eric)
 - use fmin/fmax instead of bcsel to clamp (Eric)

Reviewed-by: Eric Anholt <eric@anholt.net>
src/compiler/nir/meson.build
src/compiler/nir/nir.h
src/compiler/nir/nir_lower_point_size.c [new file with mode: 0644]