freedreno/ir3: Don't force RTNE if rounding mode is undefined
Forcing round-to-nearest-even results in loss of opportunities for
conversion folding, causing a regression in gfxbench gl_alu2.
Fixes: de195671bd
("ir3: nir_op_f2f16 should round to even")
Signed-off-by: Rob Clark <robdclark@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10773>
This commit is contained in:
@@ -25,42 +25,42 @@ traces:
|
||||
- device: freedreno-a306
|
||||
checksum: 67f73c60b3ff286b7a4a10f4c14eec8b
|
||||
- device: freedreno-a530
|
||||
checksum: d18bafd41c526c9e40d7f086a8530485
|
||||
checksum: eaee77d5109260a2c91f38e7428a9cb6
|
||||
- device: freedreno-a630
|
||||
checksum: c8361c747a369bb352bb5baf0cd127bf
|
||||
checksum: e79224d7afc13318a3511b3dbdca57c1
|
||||
- path: glmark2/buffer:update-fraction=0.5:update-dispersion=0.9:columns=200:update-method=map:interleave=true.trace
|
||||
expectations:
|
||||
- device: freedreno-a306
|
||||
checksum: ec04315638a814e1bd870f52883a4564
|
||||
- device: freedreno-a530
|
||||
checksum: d8952fa42a7643f986c5ca126cb82494
|
||||
checksum: 52b81ddea38b362105b64847d64b80c9
|
||||
- device: freedreno-a630
|
||||
checksum: cc9aeb01f12b1215abc3f9dbe3882c44
|
||||
checksum: df325d374967a1508675f17d38a16a2c
|
||||
- path: glmark2/buffer:update-fraction=0.5:update-dispersion=0.9:columns=200:update-method=subdata:interleave=false.trace
|
||||
expectations:
|
||||
- device: freedreno-a306
|
||||
checksum: f03b78ff377bacd073b4bc46384c4c06
|
||||
- device: freedreno-a530
|
||||
checksum: 54a53ac0e5bcf9bc5dabca1b52b1a637
|
||||
checksum: 9209aa63fcc0c3608bbb0299437fd54c
|
||||
- device: freedreno-a630
|
||||
checksum: 606c0461198262f49b58d5b9b330ad95
|
||||
checksum: dc0c1f9c167427ee453019f24dddaac4
|
||||
- path: glmark2/bump:bump-render=height.trace
|
||||
expectations:
|
||||
- device: freedreno-a306
|
||||
checksum: e736dba1888f9616f370c5c87b423cc7
|
||||
# a530/a630: grid-like rendering glitches since "ir3: nir_op_f2f16 should round to even"
|
||||
- device: freedreno-a530
|
||||
checksum: 37d7223a7f038254a705bc598ce2609a
|
||||
checksum: ea8b8f0da4e4b91d40952ab11e6f55b4
|
||||
- device: freedreno-a630
|
||||
checksum: 16b0a9bb07e22438068164ffb31551b0
|
||||
checksum: ea8b8f0da4e4b91d40952ab11e6f55b4
|
||||
- path: glmark2/bump:bump-render=high-poly.trace
|
||||
expectations:
|
||||
- device: freedreno-a306
|
||||
checksum: 5513a099b67446a365f9899bb9b226fb
|
||||
- device: freedreno-a530
|
||||
checksum: 69ae1916898ad4c019eb5defda8ec7c8
|
||||
checksum: 5041dd39e55ba0e842a451f3141d6133
|
||||
- device: freedreno-a630
|
||||
checksum: 69ae1916898ad4c019eb5defda8ec7c8
|
||||
checksum: 5041dd39e55ba0e842a451f3141d6133
|
||||
- path: glmark2/bump:bump-render=normals.trace
|
||||
expectations:
|
||||
- device: freedreno-a306
|
||||
@@ -104,9 +104,9 @@ traces:
|
||||
- device: freedreno-a306
|
||||
checksum: e24428dc1f1669e2fa763a14ff81a35e
|
||||
- device: freedreno-a530
|
||||
checksum: 2ea274658de439fca04985d5354d9ad7
|
||||
checksum: 70e18ba06d56fea277cd3fb000729879
|
||||
- device: freedreno-a630
|
||||
checksum: 65f75798325bd227c4f4b3758c17b0f4
|
||||
checksum: 9eb6d261c0c5946d8aeb0f41b2b7c1b1
|
||||
- path: glmark2/desktop:windows=4:effect=shadow.trace
|
||||
expectations:
|
||||
- device: freedreno-a306
|
||||
@@ -120,17 +120,17 @@ traces:
|
||||
- device: freedreno-a306
|
||||
checksum: bfb9695c876a3b9e98757df9e82c9456
|
||||
- device: freedreno-a530
|
||||
checksum: 2e7f2b94ebd91cc5e126c51c4b05c2d4
|
||||
checksum: 239acfe03a5fa53af1a6bc297b456230
|
||||
- device: freedreno-a630
|
||||
checksum: 2e7f2b94ebd91cc5e126c51c4b05c2d4
|
||||
checksum: 239acfe03a5fa53af1a6bc297b456230
|
||||
- path: glmark2/effect2d:kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;.trace
|
||||
expectations:
|
||||
- device: freedreno-a306
|
||||
checksum: b80963dae6ecf40c83bfb16943ef1011
|
||||
- device: freedreno-a530
|
||||
checksum: 6a9e0ece594a5e8c9fbd8ad0cc37a0c1
|
||||
checksum: 50f1841f2bb96905c9fcd1815c4a95c0
|
||||
- device: freedreno-a630
|
||||
checksum: 6a9e0ece594a5e8c9fbd8ad0cc37a0c1
|
||||
checksum: 50f1841f2bb96905c9fcd1815c4a95c0
|
||||
- path: glmark2/function:fragment-steps=5:fragment-complexity=low.trace
|
||||
expectations:
|
||||
- device: freedreno-a306
|
||||
@@ -158,7 +158,7 @@ traces:
|
||||
- device: freedreno-a530
|
||||
checksum: fcf8ef38fa49fecf0bceac8684d280ce
|
||||
- device: freedreno-a630
|
||||
checksum: 3671ebef14200924803eb95a3b8b21b7
|
||||
checksum: eaff1a204f1319c039b3b5cb161294e4
|
||||
- path: glmark2/build:use-vbo=true.trace
|
||||
expectations:
|
||||
- device: freedreno-a306
|
||||
@@ -166,23 +166,23 @@ traces:
|
||||
- device: freedreno-a530
|
||||
checksum: d20d20656fdd25d0b9d456027feeb023
|
||||
- device: freedreno-a630
|
||||
checksum: c62e381b317c7b3cbaa5274a080c5d3f
|
||||
checksum: f5421b11c334937fb7b5aa91d3717586
|
||||
- path: glmark2/ideas:speed=10000.trace
|
||||
expectations:
|
||||
- device: freedreno-a306
|
||||
checksum: c31e4b18d29e87751e4c30760ddfef18
|
||||
- device: freedreno-a530
|
||||
checksum: 396de29cc9a8bb16553b6db7ee4aff58
|
||||
checksum: a68a23264fb802d59c92b3a58753e6a4
|
||||
- device: freedreno-a630
|
||||
checksum: 03cb1a10992db3a9481c644e05b8552a
|
||||
checksum: 2570e22fbb4ad1a68b45e4caf682d77d
|
||||
- path: glmark2/jellyfish.trace
|
||||
expectations:
|
||||
- device: freedreno-a306
|
||||
checksum: 7a8566cfb28e2721443f4c88fa62e515
|
||||
- device: freedreno-a530
|
||||
checksum: c16c8c30ec4c65c9eb8a211aeb88975a
|
||||
checksum: 2cccf4a61c7023ecce668ef9158fdb46
|
||||
- device: freedreno-a630
|
||||
checksum: 3ba21883e613e99c1567051612ac47ee
|
||||
checksum: 2d5dbe1aee68f1966a26f70511ca793c
|
||||
- path: glmark2/loop:vertex-steps=5:fragment-steps=5:fragment-loop=false.trace
|
||||
expectations:
|
||||
- device: freedreno-a306
|
||||
@@ -220,15 +220,15 @@ traces:
|
||||
- device: freedreno-a530
|
||||
checksum: 7dbd6748a00800904b18fe566a32d0af
|
||||
- device: freedreno-a630
|
||||
checksum: 3bc48227c6b8ccf81a22fb5926962899
|
||||
checksum: 749531db9fdfe92b74432fdac2e8b037
|
||||
- path: glmark2/refract.trace
|
||||
expectations:
|
||||
- device: freedreno-a306
|
||||
checksum: 0c57ccc3989b75a940b28ea1cc09cb0d
|
||||
- device: freedreno-a530
|
||||
checksum: 4f51e2f1610cf7ff12ff8726bc75522b
|
||||
checksum: bc19f0f58935fdb348f401396e6845e1
|
||||
- device: freedreno-a630
|
||||
checksum: 9ebed4187e4edeb56538f843417bb79e
|
||||
checksum: 19a71509dca56e09f3883634c755f4ae
|
||||
- path: glmark2/shading:shading=blinn-phong-inf.trace
|
||||
expectations:
|
||||
- device: freedreno-a306
|
||||
@@ -236,17 +236,17 @@ traces:
|
||||
# Some speckling on the main specular highlight on a530/a630 that may just be
|
||||
# mediump artifacts
|
||||
- device: freedreno-a530
|
||||
checksum: 4fe8261a862f1412f20045d8b21c5421
|
||||
checksum: 7fd31a107465acba61c99cedeb48b395
|
||||
- device: freedreno-a630
|
||||
checksum: 2a98b71a307dc1736801394dfabdd405
|
||||
checksum: c44b015f6faa85b7d38f53904e2c1b30
|
||||
- path: glmark2/shading:shading=cel.trace
|
||||
expectations:
|
||||
- device: freedreno-a306
|
||||
checksum: 17e20c8c0f8ecb7fb7f158ab9b80b8ca
|
||||
- device: freedreno-a530
|
||||
checksum: 4f7b98264d8d265ed158ce5856f78ba3
|
||||
checksum: 723b7e42171a4e450eb1e72e861f0fdf
|
||||
- device: freedreno-a630
|
||||
checksum: 4f7b98264d8d265ed158ce5856f78ba3
|
||||
checksum: 723b7e42171a4e450eb1e72e861f0fdf
|
||||
- path: glmark2/shading:shading=gouraud.trace
|
||||
expectations:
|
||||
- device: freedreno-a306
|
||||
@@ -254,7 +254,7 @@ traces:
|
||||
- device: freedreno-a530
|
||||
checksum: 7778e5c30ba3630238557ca2c94b0110
|
||||
- device: freedreno-a630
|
||||
checksum: 2821908f2ccfb8eac83c9574b15834c7
|
||||
checksum: dcc51b8e94844421131ecc76eaa8f2c6
|
||||
- path: glmark2/shading:shading=phong.trace
|
||||
expectations:
|
||||
- device: freedreno-a306
|
||||
@@ -262,42 +262,42 @@ traces:
|
||||
# Some speckling on the main specular highlight on a530/a630 that may just be
|
||||
# mediump artifacts
|
||||
- device: freedreno-a530
|
||||
checksum: dc60ca38b97ce4de39ef58bc0d9de182
|
||||
checksum: 1fddb03346295d4a33e43f8762fc16b4
|
||||
- device: freedreno-a630
|
||||
checksum: dc60ca38b97ce4de39ef58bc0d9de182
|
||||
checksum: 1fddb03346295d4a33e43f8762fc16b4
|
||||
- path: glmark2/shadow.trace
|
||||
expectations:
|
||||
- device: freedreno-a306
|
||||
checksum: b5f5c4321d385292c33426f31f26b352
|
||||
- device: freedreno-a530
|
||||
checksum: ad4260dfae7a04ae1695684d9ff97231
|
||||
checksum: 841719375bac8c4ef19603a6324759df
|
||||
- device: freedreno-a630
|
||||
checksum: 2215fdc1910961d4a266e30360de6b77
|
||||
checksum: 77af823d8465d9a59e1e05bcfccfddb1
|
||||
- path: glmark2/texture:texture-filter=linear.trace
|
||||
expectations:
|
||||
- device: freedreno-a306
|
||||
checksum: 3b6bc226797088d6c7af8cb17a26fc97
|
||||
- device: freedreno-a530
|
||||
checksum: 6163435db8c17764ae21825e78eba63c
|
||||
checksum: 2f9304ddf783e43a28d8d8436e578bb9
|
||||
- device: freedreno-a630
|
||||
checksum: 0e355921717f1837c06ce3eec48048c0
|
||||
checksum: b340dcd56221af71a8e23ba42deb0360
|
||||
- path: glmark2/texture:texture-filter=mipmap.trace
|
||||
expectations:
|
||||
# Crashes on a3xx?
|
||||
# - device: freedreno-a306
|
||||
# checksum: 1ae1036fcaae693b3bf36a1d2d6bbc64
|
||||
- device: freedreno-a530
|
||||
checksum: cc8b401162a7c033c796d1e673a56345
|
||||
checksum: 9a51ef8594c48ea1c76127aad56daa1c
|
||||
- device: freedreno-a630
|
||||
checksum: dec5acdc92d4064c4e3777416d05b3e4
|
||||
checksum: 836509331883c04ef3e63d0e68ce9ad0
|
||||
- path: glmark2/texture:texture-filter=nearest.trace
|
||||
expectations:
|
||||
- device: freedreno-a306
|
||||
checksum: c63fa7e1a1c778d29c52ca90c15d48ca
|
||||
- device: freedreno-a530
|
||||
checksum: d81aad48c6eb2d3769e8bd3533b7f679
|
||||
checksum: 509cfb6ad7b973aaf1ea42ac9328d65f
|
||||
- device: freedreno-a630
|
||||
checksum: 4d9278ea9915fcd6de1a31bc259b3f67
|
||||
checksum: c3ce3ab02fb7416bc57772e729f77f07
|
||||
- path: glxgears/glxgears-2.trace
|
||||
expectations:
|
||||
# inner rings are flat shaded when they should be smooth
|
||||
|
@@ -259,8 +259,15 @@ 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 || op == nir_op_f2f16_rtne)
|
||||
if (op == nir_op_f2f16_rtne) {
|
||||
cov->cat1.round = ROUND_EVEN;
|
||||
} else if (op == nir_op_f2f16) {
|
||||
unsigned execution_mode = ctx->s->info.float_controls_execution_mode;
|
||||
nir_rounding_mode rounding_mode =
|
||||
nir_get_rounding_mode_from_float_controls(execution_mode, nir_type_float16);
|
||||
if (rounding_mode == nir_rounding_mode_rtne)
|
||||
cov->cat1.round = ROUND_EVEN;
|
||||
}
|
||||
|
||||
return cov;
|
||||
}
|
||||
|
Reference in New Issue
Block a user