Vulkan: improve etc to bc grident texture precison.

ETC has gradient modes. Two endpoints in BC are RGB565;
the color depth is lower than ETC. Two endpoints in
RGB888 space may be quite different, but after conversion to
RGB565 they may be projected to the same point.
This conversion loses quite a lot of details.

This change tries to change one endpoint to an adjacent one
(not optimal) in RGB565, so that all the colors are interpolated
 from these two endpoints. With this change,
the arknight image in b/259327729 improved PSNR from 39 to 49.

This change includes some of work by @gregschlom

1) Use look up table instead of bit operation.
2) Use more vector operations. This may not improve the performance
but makes the code short and neat.

bug: b/259327729
Change-Id: Ic0720aff17af5d466e5598dc38ba953dc084a3cc
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4368021
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Hailin Zhang <hailinzhang@google.com>
This commit is contained in:
Hailin Zhang
2023-03-23 21:56:45 -07:00
committed by Angle LUCI CQ
parent 249b03aca7
commit 1301402c53
4 changed files with 862 additions and 785 deletions

View File

@@ -90,9 +90,9 @@
"src/libANGLE/renderer/vulkan/shaders/gen/ConvertVertex.comp.00000007.inc":
"105331ec6b8d657fc30ff93f73258baa",
"src/libANGLE/renderer/vulkan/shaders/gen/EtcToBc.comp.00000000.inc":
"122d01d1628da2071d835c55095911b1",
"435329724f5ff414203f06cc8512d232",
"src/libANGLE/renderer/vulkan/shaders/gen/EtcToBc.comp.00000001.inc":
"515531e181b5b92ebe2bbc6cba39367f",
"8fb53423a3f2feecacfc0d170a33ff3a",
"src/libANGLE/renderer/vulkan/shaders/gen/ExportStencil.frag.00000000.inc":
"4a68fcf26f60d54745325f79d3eaf219",
"src/libANGLE/renderer/vulkan/shaders/gen/FullScreenTri.vert.00000000.inc":
@@ -296,7 +296,7 @@
"src/libANGLE/renderer/vulkan/shaders/src/ConvertVertex.comp.json":
"5186e223d98092a54dc3ce23677039c1",
"src/libANGLE/renderer/vulkan/shaders/src/EtcToBc.comp":
"808257085591ef68f2f64d29ecf813d9",
"03acbcc8abd31c280fd1b9781a765f47",
"src/libANGLE/renderer/vulkan/shaders/src/EtcToBc.comp.json":
"59e43d52460e98e6f9992ec8c93e2eb5",
"src/libANGLE/renderer/vulkan/shaders/src/ExportStencil.frag":