OSDN Git Service

nir: implement GLSL.std.450 NMax, NMIn and NClamp operations
authorJuan A. Suarez Romero <jasuarez@igalia.com>
Thu, 8 Jun 2017 11:50:55 +0000 (11:50 +0000)
committerJuan A. Suarez Romero <jasuarez@igalia.com>
Tue, 27 Jun 2017 10:01:11 +0000 (12:01 +0200)
v2: NIR fmax/fmin already handles NaN (Connor).

Reviewed by: Elie Tournier <elie.tournier@collabora.com>

src/compiler/spirv/vtn_glsl450.c

index 96e3407..1d7e2b8 100644 (file)
@@ -433,9 +433,11 @@ vtn_nir_alu_op_for_spirv_glsl_opcode(enum GLSLstd450 opcode)
    case GLSLstd450Log2:          return nir_op_flog2;
    case GLSLstd450Sqrt:          return nir_op_fsqrt;
    case GLSLstd450InverseSqrt:   return nir_op_frsq;
+   case GLSLstd450NMin:          return nir_op_fmin;
    case GLSLstd450FMin:          return nir_op_fmin;
    case GLSLstd450UMin:          return nir_op_umin;
    case GLSLstd450SMin:          return nir_op_imin;
+   case GLSLstd450NMax:          return nir_op_fmax;
    case GLSLstd450FMax:          return nir_op_fmax;
    case GLSLstd450UMax:          return nir_op_umax;
    case GLSLstd450SMax:          return nir_op_imax;
@@ -537,6 +539,7 @@ handle_glsl450_alu(struct vtn_builder *b, enum GLSLstd450 entrypoint,
       return;
 
    case GLSLstd450FClamp:
+   case GLSLstd450NClamp:
       val->ssa->def = build_fclamp(nb, src[0], src[1], src[2]);
       return;
    case GLSLstd450UClamp: