Just so I'm not all negative, my suggestions after consulting with Tony: 1) Make Linux behavior match Windows, ignoring the recommendation in the comments below. 2) Rebaseline everything on Linux. :( 3) Now converting from a PNG file to expected output is easy on all three platforms: convert input.png rgba:- | swizzle_rgba_to_bgra | md5sum
(Not certain if Mac uses BGRA images, though.) On Mon, Jun 22, 2009 at 10:24 AM, Evan Martin<e...@chromium.org> wrote: > Since I'm waiting for a build I sat down to implement this. > > But our image checksums are not checksums of the image files :(, but > rather checksums of the pixels stored in the image. > > And Tony points out that our image checksumming is completely insane: > > ===== > // Fix the alpha. The expected PNGs on Mac have an alpha channel, so we want > // to keep it. On Windows, the alpha channel is wrong since text/form control > // drawing may have erased it in a few places. So on Windows we force it to > // opaque and also don't write the alpha channel for the reference. Linux > // doesn't have the wrong alpha like Windows, but we ignore it anyway. > #if defined(OS_WIN) > bool discard_transparency = true; > device->makeOpaque(0, 0, src_bmp.width(), src_bmp.height()); > #elif defined(OS_LINUX) > bool discard_transparency = true; > #elif defined(OS_MACOSX) > bool discard_transparency = false; > #endif > > // Compute MD5 sum. We should have done this before calling > // device->makeOpaque on Windows. Because we do it after the call, there are > // some images that are the pixel identical on windows and other platforms > // but have different MD5 sums. At this point, rebaselining all the windows > // tests is too much of a pain, so we just check in different baselines. > ==== > > To be more clear, here's a table of the platforms and their behaviors. > O=opaque, T=transparent. > (Sorry for my ghetto proportionally-spaced table here.) > > Win Mac Lin > cksum O T T > png O T O > > I conclude that on Linux, you cannot go from the PNG file back to the > checksum in the presence of alpha. > > > Just for fun I played around a bit with commands like: > convert path/to/pngfile rgba:- | md5sum > and wasn't able to repro the checksums I'm seeing. > > It looks ok from > convert path/to/pngfile rgba:- | xxd -g4 > (the RGBA<->BGRA problem doesn't apply for this black and while png file...). > > In summary: tears. > > On Mon, Jun 22, 2009 at 3:20 AM, Dean McNamee<de...@chromium.org> wrote: >> >> Last week I updated our DEPS to pull in a newer version of Skia. I >> was stumped at a few cases where the checked in PNG looked completely >> wrong, but yet it was passing on the buildbots. There was no way that >> image could have been the output. >> >> It just dawned on me today, but I haven't verified it. I can dig up >> my commit to verify it, but I'd say 99% sure this was the case. >> >> If the checksum is valid, we don't even go to the PNG. Therefor I >> believe we have a bunch of layout tests where the checked in PNG is >> completely wrong, but the checksum is right. >> >> I don't have the time right now, but it would be great if someone >> could write a script and clean this up. >> >> Thanks >> -- dean >> >> >> >> > --~--~---------~--~----~------------~-------~--~----~ Chromium Developers mailing list: chromium-dev@googlegroups.com View archives, change email options, or unsubscribe: http://groups.google.com/group/chromium-dev -~----------~----~----~----~------~----~------~--~---