When user specifies an output path with -w, only output files from main

render (don't output -replay and -serialize files into separate
directories).
If main render fails, don't test -replay or -serialize.

Also fix misnamed variable, line-wrap.


git-svn-id: http://skia.googlecode.com/svn/trunk@1560 2bbb7eff-a529-9590-31e7-b0007b416f81
This commit is contained in:
tomhudson@google.com 2011-06-09 20:30:03 +00:00
Родитель 125002a94c
Коммит ea325437bd
1 изменённых файлов: 28 добавлений и 26 удалений

Просмотреть файл

@ -120,7 +120,7 @@ static void compute_diff(const SkBitmap& target, const SkBitmap& base,
}
static bool compare(const SkBitmap& target, const SkBitmap& base,
const SkString& name, const char* modeDescriptor,
const SkString& name, const char* renderModeDescriptor,
SkBitmap* diff) {
SkBitmap copy;
const SkBitmap* bm = ⌖
@ -134,8 +134,9 @@ static bool compare(const SkBitmap& target, const SkBitmap& base,
const int w = bm->width();
const int h = bm->height();
if (w != base.width() || h != base.height()) {
SkDebugf("---- %s dimensions mismatch for %s base [%d %d] current [%d %d]\n",
modeDescriptor, name.c_str(),
SkDebugf(
"---- %s dimensions mismatch for %s base [%d %d] current [%d %d]\n",
renderModeDescriptor, name.c_str(),
base.width(), base.height(), w, h);
return false;
}
@ -148,8 +149,9 @@ static bool compare(const SkBitmap& target, const SkBitmap& base,
SkPMColor c0 = *base.getAddr32(x, y);
SkPMColor c1 = *bm->getAddr32(x, y);
if (c0 != c1) {
SkDebugf("----- %s pixel mismatch for %s at [%d %d] base 0x%08X current 0x%08X\n",
modeDescriptor, name.c_str(), x, y, c0, c1);
SkDebugf(
"----- %s pixel mismatch for %s at [%d %d] base 0x%08X current 0x%08X\n",
renderModeDescriptor, name.c_str(), x, y, c0, c1);
if (diff) {
diff->setConfig(SkBitmap::kARGB_8888_Config, w, h);
@ -250,17 +252,17 @@ static void generate_pdf(GM* gm, SkDynamicMemoryWStream& pdf) {
static bool write_reference_image(const ConfigData& gRec,
const char writePath [],
const char writePathSuffix [],
const char renderModeDescriptor [],
const SkString& name,
SkBitmap& bitmap,
SkDynamicMemoryWStream* pdf) {
SkString path;
bool success = false;
if (gRec.fBackend != kPDF_Backend) {
path = make_filename(writePath, writePathSuffix, name, "png");
path = make_filename(writePath, renderModeDescriptor, name, "png");
success = write_bitmap(path, bitmap);
} else if (pdf) {
path = make_filename(writePath, writePathSuffix, name, "pdf");
path = make_filename(writePath, renderModeDescriptor, name, "pdf");
success = write_pdf(path, *pdf);
}
if (!success) {
@ -273,7 +275,7 @@ static bool compare_to_reference_image(const char readPath [],
const SkString& name,
SkBitmap &bitmap,
const char diffPath [],
const char modeDescriptor []) {
const char renderModeDescriptor []) {
SkString path = make_filename(readPath, "", name, "png");
SkBitmap orig;
bool success = SkImageDecoder::DecodeFile(path.c_str(), &orig,
@ -281,7 +283,7 @@ static bool compare_to_reference_image(const char readPath [],
SkImageDecoder::kDecodePixels_Mode, NULL);
if (success) {
SkBitmap diffBitmap;
success = compare(bitmap, orig, name, modeDescriptor,
success = compare(bitmap, orig, name, renderModeDescriptor,
diffPath ? &diffBitmap : NULL);
if (!success && diffPath) {
SkString diffName = make_filename(diffPath, "", name, ".diff.png");
@ -299,18 +301,18 @@ static bool handle_test_results(GM* gm,
const char writePath [],
const char readPath [],
const char diffPath [],
const char writePathSuffix [],
const char renderModeDescriptor [],
SkBitmap& bitmap,
SkDynamicMemoryWStream* pdf) {
SkString name = make_name(gm->shortName(), gRec.fName);
if (writePath) {
write_reference_image(gRec, writePath, writePathSuffix,
write_reference_image(gRec, writePath, renderModeDescriptor,
name, bitmap, pdf);
// TODO: Figure out a way to compare PDFs.
} else if (readPath && gRec.fBackend != kPDF_Backend) {
return compare_to_reference_image(readPath, name, bitmap,
diffPath, writePathSuffix);
diffPath, renderModeDescriptor);
}
return true;
}
@ -377,7 +379,6 @@ static bool test_drawing(GM* gm,
static bool test_picture_playback(GM* gm,
const ConfigData& gRec,
const char writePath [],
const char readPath [],
const char diffPath []) {
SkPicture* pict = generate_new_picture(gm);
@ -386,7 +387,7 @@ static bool test_picture_playback(GM* gm,
if (kRaster_Backend == gRec.fBackend) {
SkBitmap bitmap;
generate_image_from_picture(gm, gRec, pict, &bitmap);
return handle_test_results(gm, gRec, writePath, readPath, diffPath,
return handle_test_results(gm, gRec, NULL, readPath, diffPath,
"-replay", bitmap, NULL);
}
return true;
@ -394,7 +395,6 @@ static bool test_picture_playback(GM* gm,
static bool test_picture_serialization(GM* gm,
const ConfigData& gRec,
const char writePath [],
const char readPath [],
const char diffPath []) {
SkPicture* pict = generate_new_picture(gm);
@ -405,7 +405,7 @@ static bool test_picture_serialization(GM* gm,
if (kRaster_Backend == gRec.fBackend) {
SkBitmap bitmap;
generate_image_from_picture(gm, gRec, repict, &bitmap);
return handle_test_results(gm, gRec, writePath, readPath, diffPath,
return handle_test_results(gm, gRec, NULL, readPath, diffPath,
"-serialize", bitmap, NULL);
}
return true;
@ -493,29 +493,31 @@ int main(int argc, char * const argv[]) {
// Accumulate success of all tests so we can flag error in any
// one with the return value.
bool testSuccess = true;
bool overallSuccess = true;
while ((gm = iter.next()) != NULL) {
SkISize size = gm->getISize();
SkDebugf("drawing... %s [%d %d]\n", gm->shortName(),
size.width(), size.height());
for (size_t i = 0; i < SK_ARRAY_COUNT(gRec); i++) {
testSuccess &= test_drawing(gm, gRec[i],
bool testSuccess = test_drawing(gm, gRec[i],
writePath, readPath, diffPath, context);
overallSuccess &= testSuccess;
if (doReplay) {
testSuccess &= test_picture_playback(gm, gRec[i],
writePath, readPath, diffPath);
if (doReplay && testSuccess) {
testSuccess = test_picture_playback(gm, gRec[i],
readPath, diffPath);
overallSuccess &= testSuccess;
}
if (doSerialize) {
testSuccess &= test_picture_serialization(gm, gRec[i],
writePath, readPath, diffPath);
if (doSerialize && testSuccess) {
overallSuccess &= test_picture_serialization(gm, gRec[i],
readPath, diffPath);
}
}
SkDELETE(gm);
}
if (false == testSuccess) {
if (false == overallSuccess) {
return -1;
}
return 0;