Mesa (master): ir3: nir_op_f2f16 should round to even

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Thu Apr 1 18:13:36 UTC 2021


Module: Mesa
Branch: master
Commit: de195671bdb4fde7cdebd6cecd28206d08551d15
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=de195671bdb4fde7cdebd6cecd28206d08551d15

Author: Danylo Piliaiev <dpiliaiev at igalia.com>
Date:   Wed Mar 31 22:58:00 2021 +0300

ir3: nir_op_f2f16 should round to even

cat1 instructions round to zero by default.

When fp16 is enabled this will fix:
 dEQP-VK.spirv_assembly.instruction.graphics.float_controls.fp16.input_args.rounding_rte_conv_from_fp32_nostorage_frag
 dEQP-VK.spirv_assembly.instruction.graphics.float_controls.fp16.input_args.rounding_rte_conv_from_fp32_nostorage_vert
 dEQP-VK.spirv_assembly.instruction.compute.float_controls.fp16.input_args.rounding_rte_conv_from_fp32_nostorage

Signed-off-by: Danylo Piliaiev <dpiliaiev at igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9840>

---

 src/freedreno/ci/traces-freedreno.yml | 44 +++++++++++++++++------------------
 src/freedreno/ir3/ir3_compiler_nir.c  |  4 ++--
 2 files changed, 24 insertions(+), 24 deletions(-)

diff --git a/src/freedreno/ci/traces-freedreno.yml b/src/freedreno/ci/traces-freedreno.yml
index a01be6c3464..a3767faba7d 100644
--- a/src/freedreno/ci/traces-freedreno.yml
+++ b/src/freedreno/ci/traces-freedreno.yml
@@ -9,23 +9,23 @@ traces:
   - path: glmark2/buffer-columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map.rdc
     expectations:
       - device: freedreno-a630
-        checksum: 1d04a606014f00663e0d078903d190c8
+        checksum: e0fb7ba5ade1430cd4ca6fc154cc7f10
   - path: glmark2/buffer-columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata.rdc
     expectations:
       - device: freedreno-a630
-        checksum: 6c00e3f05fab4b0df449451803b2749a
+        checksum: 2093474baae398a13fb34964f7030d76
   - path: glmark2/buffer-columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map.rdc
     expectations:
       - device: freedreno-a630
-        checksum: 5706da41ae1877086e7ac2dc9af66e81
+        checksum: 46c816a88d187e943e36386839e92256
   - path: glmark2/bump-bump-render=height.rdc
     expectations:
       - device: freedreno-a630
-        checksum: bfa8557cd352b832e915c3c553b14c1f
+        checksum: 9e7b9cb09460206748b24a1476a7768e
   - path: glmark2/bump-bump-render=high-poly.rdc
     expectations:
       - device: freedreno-a630
-        checksum: 737a729713c894596b7cb4c1726239af
+        checksum: ef671e7a585443e395d566873a8174c0
   - path: glmark2/bump-bump-render=normals.rdc
     expectations:
       - device: freedreno-a630
@@ -51,7 +51,7 @@ traces:
   - path: glmark2/desktop-blur-radius=5:effect=blur:passes=1:separable=true:windows=4.rdc
     expectations:
       - device: freedreno-a630
-        checksum: d750bb0972cf14a4c0bc35896d87da16
+        checksum: 353c40f356495df95c3e5a61c94a726a
   - path: glmark2/desktop-effect=shadow:windows=4.rdc
     expectations:
       - device: freedreno-a630
@@ -59,11 +59,11 @@ traces:
   - path: glmark2/effect2d-kernel=0,1,0;1,-4,1;0,1,0.rdc
     expectations:
       - device: freedreno-a630
-        checksum: b38d1d3ebe30ea3df97713515dab3df0
+        checksum: 14df4ace23bfe591501ed322afcd9dc0
   - path: glmark2/effect2d-kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;.rdc
     expectations:
       - device: freedreno-a630
-        checksum: 2964d37446db126a5fe462b1ba4542cd
+        checksum: 6383e75f0a168d1eeb7516e5f727ddfc
   - path: glmark2/function-fragment-complexity=low:fragment-steps=5.rdc
     expectations:
       # Incorrect rendering, a bunch of the area is uniform gray when it should
@@ -79,19 +79,19 @@ traces:
   - path: glmark2/glmark2-build-use-vbo-false.rdc
     expectations:
       - device: freedreno-a630
-        checksum: ecb647d14dae3876eb2a4282633d84f5
+        checksum: 1612f9c774de1962ee9f4fd3ba73cce3
   - path: glmark2/glmark2-build-use-vbo-true.rdc
     expectations:
       - device: freedreno-a630
-        checksum: b2608bba0f80ef93809e42399fb77124
+        checksum: d093fdee65a24595d5a54297d03001d9
   - path: glmark2/ideas-speed=duration.rdc
     expectations:
       - device: freedreno-a630
-        checksum: e2c3f5163ef85818b85f1af634077f30
+        checksum: 5af85c3501a34a07275548fd390a31a1
   - path: glmark2/jellyfish.rdc
     expectations:
       - device: freedreno-a630
-        checksum: 117212f2d89cbf09f0d81ca0d6b9e3f3
+        checksum: e57fbf07975de65176eb10713b7e4da6
   - path: glmark2/loop-fragment-loop=false:fragment-steps=5:vertex-steps=5.rdc
     expectations:
       # Incorrect rendering, a bunch of the area is uniform gray when it should
@@ -113,45 +113,45 @@ traces:
   - path: glmark2/pulsar-light=false:quads=5:texture=false.rdc
     expectations:
       - device: freedreno-a630
-        checksum: e482fd686d39decbec52ada682d93890
+        checksum: 8c9a18bdfad94d6da823382991f9b843
   - path: glmark2/refract.rdc
     expectations:
       - device: freedreno-a630
-        checksum: 48a9bdb712ad04476ffb397e9a63cd1c
+        checksum: 4302ab80ec105246cf61ba2d720eee18
   - path: glmark2/shading-shading=blinn-phong-inf.rdc
     expectations:
       - device: freedreno-a630
-        checksum: 562772bffd90b5e85375dfe4eff28d81
+        checksum: 9afbe4ea0f8eaa92311754c618e946cc
   - path: glmark2/shading-shading=cel.rdc
     expectations:
       - device: freedreno-a630
-        checksum: 168fd41e4a8c1064d8e37353e2b2a887
+        checksum: 7afbb21948358b00cf6a1c553b6a7980
   - path: glmark2/shading-shading=gouraud.rdc
     expectations:
       - device: freedreno-a630
-        checksum: bd9058f041bd2d59c039cccdb7d50bf7
+        checksum: 49ee0d0703093195b6e692ac907590f6
   - path: glmark2/shading-shading=phong.rdc
     # Some speckling on the main specular highlight that may just be
     # mediump artifacts
     expectations:
       - device: freedreno-a630
-        checksum: f227a5d0471b5bf2de636f519e38f1cb
+        checksum: ca4983b8c4e08de7515630a2ff14276c
   - path: glmark2/shadow.rdc
     expectations:
       - device: freedreno-a630
-        checksum: d8b5931669733240797f1acf5d98db25
+        checksum: b1b0447da2b706f3eddb82c43edbbe7f
   - path: glmark2/texture-texture-filter=linear.rdc
     expectations:
       - device: freedreno-a630
-        checksum: b4beeda82884d2e6de549b16cd9b90e8
+        checksum: 0aa02a7ea3e4a7ada675fb66c54a41f6
   - path: glmark2/texture-texture-filter=mipmap.rdc
     expectations:
       - device: freedreno-a630
-        checksum: 27e1cdb7e8f3f5bb6a61ebf02927d201
+        checksum: 99ad7718220e9cb8e05767e17f4bd690
   - path: glmark2/texture-texture-filter=nearest.rdc
     expectations:
       - device: freedreno-a630
-        checksum: 84409b1b3c75e52ef43fa331f60c549f
+        checksum: b0f6e888784b7018d796aa3e3cd32aa2
   - path: glxgears/glxgears.trace
     expectations:
       - device: freedreno-a630
diff --git a/src/freedreno/ir3/ir3_compiler_nir.c b/src/freedreno/ir3/ir3_compiler_nir.c
index 20029fc8791..ccefcb90f25 100644
--- a/src/freedreno/ir3/ir3_compiler_nir.c
+++ b/src/freedreno/ir3/ir3_compiler_nir.c
@@ -259,7 +259,7 @@ create_cov(struct ir3_context *ctx, struct ir3_instruction *src,
 	struct ir3_instruction *cov =
 		ir3_COV(ctx->block, src, src_type, dst_type);
 
-	if (op == nir_op_f2f16_rtne)
+	if (op == nir_op_f2f16 || op == nir_op_f2f16_rtne)
 		cov->regs[0]->flags |= IR3_REG_EVEN;
 
 	return cov;
@@ -374,7 +374,7 @@ emit_alu(struct ir3_context *ctx, nir_alu_instr *alu)
 
 	case nir_op_fquantize2f16:
 		dst[0] = create_cov(ctx,
-							create_cov(ctx, src[0], 32, nir_op_f2f16),
+							create_cov(ctx, src[0], 32, nir_op_f2f16_rtz),
 							16, nir_op_f2f32);
 		break;
 	case nir_op_f2b1:



More information about the mesa-commit mailing list