summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/glsl/nir/spirv/vtn_glsl450.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/glsl/nir/spirv/vtn_glsl450.c b/src/glsl/nir/spirv/vtn_glsl450.c
index afcf8e2a7da..a675aa4c7f3 100644
--- a/src/glsl/nir/spirv/vtn_glsl450.c
+++ b/src/glsl/nir/spirv/vtn_glsl450.c
@@ -424,6 +424,13 @@ handle_glsl450_alu(struct vtn_builder *b, enum GLSLstd450 entrypoint,
return;
}
+ case GLSLstd450ModfStruct: {
+ assert(glsl_type_is_struct(val->ssa->type));
+ val->ssa->elems[0]->def = nir_ffract(nb, src[0]);
+ val->ssa->elems[1]->def = nir_ffloor(nb, src[0]);
+ return;
+ }
+
case GLSLstd450FMin: op = nir_op_fmin; break;
case GLSLstd450UMin: op = nir_op_umin; break;
case GLSLstd450SMin: op = nir_op_imin; break;
@@ -618,7 +625,6 @@ handle_glsl450_alu(struct vtn_builder *b, enum GLSLstd450 entrypoint,
return;
}
- case GLSLstd450ModfStruct:
case GLSLstd450PackDouble2x32:
case GLSLstd450UnpackDouble2x32:
case GLSLstd450IMix: