[Mesa-dev] [PATCH 2/3] glsl/nir: ftrunc for native_integers=false float to int cast
Jonathan Marek
jonathan at marek.ca
Mon Nov 19 20:00:49 UTC 2018
out_type is always GLSL_TYPE_FLOAT, so we don't get the ftrunc otherwise
since there are no other conversions needed, use fmov for the other cases
(there is the f2b case, but the 1-bit bool patches should fix that)
Signed-off-by: Jonathan Marek <jonathan at marek.ca>
---
src/compiler/glsl/glsl_to_nir.cpp | 13 +++++++++++++
1 file changed, 13 insertions(+)
diff --git a/src/compiler/glsl/glsl_to_nir.cpp b/src/compiler/glsl/glsl_to_nir.cpp
index 22863c072f..5d1ae85924 100644
--- a/src/compiler/glsl/glsl_to_nir.cpp
+++ b/src/compiler/glsl/glsl_to_nir.cpp
@@ -1560,6 +1560,19 @@ nir_visitor::visit(ir_expression *ir)
case ir_unop_u2i:
case ir_unop_i642u64:
case ir_unop_u642i64: {
+ if (!supports_ints) {
+ switch (ir->operation) {
+ case ir_unop_f2i:
+ case ir_unop_f2u:
+ result = nir_ftrunc(&b, srcs[0]);
+ break;
+ default:
+ result = nir_fmov(&b, srcs[0]);
+ break;
+ }
+ break;
+ }
+
nir_alu_type src_type = nir_get_nir_type_for_glsl_base_type(types[0]);
nir_alu_type dst_type = nir_get_nir_type_for_glsl_base_type(out_type);
result = nir_build_alu(&b, nir_type_conversion_op(src_type, dst_type,
--
2.17.1
More information about the mesa-dev
mailing list