]> source.dussan.org Git - tigervnc.git/commitdiff
Fix calculation of conversion test target values
authorPierre Ossman <ossman@cendio.se>
Thu, 1 Mar 2018 13:00:06 +0000 (14:00 +0100)
committerPierre Ossman <ossman@cendio.se>
Thu, 1 Mar 2018 13:00:06 +0000 (14:00 +0100)
Bit shifting gives an approximate, but not properly accurate value
when upconverting. Do a proper calculation.

tests/conv.cxx

index 840f18dc993c8a4305d849f2cbe770ab1b7b11f6..3901b9d17cb14eecb284e678e97d8e26e605e908 100644 (file)
@@ -72,9 +72,9 @@ bool verifyPixel(const rfb::PixelFormat &dstpf,
   g = (p >> dstpf.greenShift) & dstpf.greenMax;
   b = (p >> dstpf.blueShift) & dstpf.blueMax;
 
-  r <<= 8 - dstpf.redBits;
-  g <<= 8 - dstpf.greenBits;
-  b <<= 8 - dstpf.blueBits;
+  r = (r * 255 + dstpf.redMax/2) / dstpf.redMax;
+  g = (g * 255 + dstpf.greenMax/2) / dstpf.greenMax;
+  b = (b * 255 + dstpf.blueMax/2) / dstpf.blueMax;
 
   // The allowed error depends on:
   //