Mesa (main): spirv: Workaround for RelaxedPrecision on OpLogical* in 3DMark
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Fri Jun 3 08:28:42 UTC 2022
Module: Mesa
Branch: main
Commit: eb5f4c2f6b0d41073e33481a70ce8facf8a607ef
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=eb5f4c2f6b0d41073e33481a70ce8facf8a607ef
Author: Danylo Piliaiev <dpiliaiev at igalia.com>
Date: Fri May 27 15:11:52 2022 +0300
spirv: Workaround for RelaxedPrecision on OpLogical* in 3DMark
Per spec RelaxedPrecision cannot be applied to bool types, however
3DMark Wild Life does it:
OpDecorate %171 RelaxedPrecision
...
%171 = OpLogicalAnd %bool %169 %170
Fixes crash in 3DMark Wild Life on Android.
Signed-off-by: Danylo Piliaiev <dpiliaiev at igalia.com>
Reviewed-by: Emma Anholt <emma at anholt.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16746>
---
src/compiler/spirv/vtn_alu.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/src/compiler/spirv/vtn_alu.c b/src/compiler/spirv/vtn_alu.c
index b35f38bffc5..f794b1b134c 100644
--- a/src/compiler/spirv/vtn_alu.c
+++ b/src/compiler/spirv/vtn_alu.c
@@ -165,6 +165,11 @@ vtn_mediump_downconvert(struct vtn_builder *b, enum glsl_base_type base_type, ni
case GLSL_TYPE_INT:
case GLSL_TYPE_UINT:
return nir_i2imp(&b->nb, def);
+ /* Workaround for 3DMark Wild Life which has RelaxedPrecision on
+ * OpLogical* operations (which is forbidden by spec).
+ */
+ case GLSL_TYPE_BOOL:
+ return def;
default:
unreachable("bad relaxed precision input type");
}
More information about the mesa-commit
mailing list