Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1077)

Side by Side Diff: gm/gmmain.cpp

Issue 14437012: Fixes for piping bitmaps with encoded data. (Closed) Base URL: https://skia.googlecode.com/svn/trunk
Patch Set: Do not use bitmap storage when adding bitmaps to SkGPipeState. Created 7 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | include/pipe/SkGPipe.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright 2011 Google Inc. 2 * Copyright 2011 Google Inc.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license that can be 4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file. 5 * found in the LICENSE file.
6 */ 6 */
7 7
8 /* 8 /*
9 * Code for the "gm" (Golden Master) rendering comparison tool. 9 * Code for the "gm" (Golden Master) rendering comparison tool.
10 * 10 *
(...skipping 933 matching lines...) Expand 10 before | Expand all | Expand 10 after
944 SkDynamicMemoryWStream storage; 944 SkDynamicMemoryWStream storage;
945 src.serialize(&storage); 945 src.serialize(&storage);
946 946
947 size_t streamSize = storage.getOffset(); 947 size_t streamSize = storage.getOffset();
948 SkAutoMalloc dstStorage(streamSize); 948 SkAutoMalloc dstStorage(streamSize);
949 void* dst = dstStorage.get(); 949 void* dst = dstStorage.get();
950 //char* dst = new char [streamSize]; 950 //char* dst = new char [streamSize];
951 //@todo thudson 22 April 2011 when can we safely delete [] dst? 951 //@todo thudson 22 April 2011 when can we safely delete [] dst?
952 storage.copyTo(dst); 952 storage.copyTo(dst);
953 SkMemoryStream pictReadback(dst, streamSize); 953 SkMemoryStream pictReadback(dst, streamSize);
954 SkPicture* retval = new SkPicture (&pictReadback); 954 bool success;
955 // Pass a decoding bitmap function so that the factory GM (which has an SkBitmap with
956 // encoded data) does not fail.
957 SkPicture* retval = new SkPicture (&pictReadback, &success, &SkImageDeco der::DecodeMemory);
955 return retval; 958 return retval;
956 } 959 }
957 960
958 // Test: draw into a bitmap or pdf. 961 // Test: draw into a bitmap or pdf.
959 // Depending on flags, possibly compare to an expected image. 962 // Depending on flags, possibly compare to an expected image.
960 ErrorCombination test_drawing(GM* gm, 963 ErrorCombination test_drawing(GM* gm,
961 const ConfigData& gRec, 964 const ConfigData& gRec,
962 const char writePath [], 965 const char writePath [],
963 GrSurface* gpuTarget, 966 GrSurface* gpuTarget,
964 SkBitmap* bitmap) { 967 SkBitmap* bitmap) {
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
1035 if (gm->getFlags() & GM::kSkipPipe_Flag) { 1038 if (gm->getFlags() & GM::kSkipPipe_Flag) {
1036 RecordTestResults(kIntentionallySkipped_ErrorType, name, 1039 RecordTestResults(kIntentionallySkipped_ErrorType, name,
1037 renderModeDescriptor.c_str()); 1040 renderModeDescriptor.c_str());
1038 errors.add(kIntentionallySkipped_ErrorType); 1041 errors.add(kIntentionallySkipped_ErrorType);
1039 } else { 1042 } else {
1040 SkBitmap bitmap; 1043 SkBitmap bitmap;
1041 SkISize size = gm->getISize(); 1044 SkISize size = gm->getISize();
1042 setup_bitmap(gRec, size, &bitmap); 1045 setup_bitmap(gRec, size, &bitmap);
1043 SkCanvas canvas(bitmap); 1046 SkCanvas canvas(bitmap);
1044 installFilter(&canvas); 1047 installFilter(&canvas);
1045 PipeController pipeController(&canvas); 1048 // Pass a decoding function so the factory GM (which has an SkBi tmap
1049 // with encoded data) will not fail playback.
1050 PipeController pipeController(&canvas, &SkImageDecoder::DecodeMe mory);
1046 SkGPipeWriter writer; 1051 SkGPipeWriter writer;
1047 SkCanvas* pipeCanvas = writer.startRecording(&pipeController, 1052 SkCanvas* pipeCanvas = writer.startRecording(&pipeController,
1048 gPipeWritingFlagCom bos[i].flags, 1053 gPipeWritingFlagCom bos[i].flags,
1049 size.width(), size. height()); 1054 size.width(), size. height());
1050 if (!simulateFailure) { 1055 if (!simulateFailure) {
1051 invokeGM(gm, pipeCanvas, false, false); 1056 invokeGM(gm, pipeCanvas, false, false);
1052 } 1057 }
1053 complete_bitmap(&bitmap); 1058 complete_bitmap(&bitmap);
1054 writer.endRecording(); 1059 writer.endRecording();
1055 errors.add(compare_test_results_to_reference_bitmap( 1060 errors.add(compare_test_results_to_reference_bitmap(
(...skipping 18 matching lines...) Expand all
1074 (gm->getFlags() & GM::kSkipTiled_Flag)) { 1079 (gm->getFlags() & GM::kSkipTiled_Flag)) {
1075 RecordTestResults(kIntentionallySkipped_ErrorType, name, 1080 RecordTestResults(kIntentionallySkipped_ErrorType, name,
1076 renderModeDescriptor.c_str()); 1081 renderModeDescriptor.c_str());
1077 errors.add(kIntentionallySkipped_ErrorType); 1082 errors.add(kIntentionallySkipped_ErrorType);
1078 } else { 1083 } else {
1079 SkBitmap bitmap; 1084 SkBitmap bitmap;
1080 SkISize size = gm->getISize(); 1085 SkISize size = gm->getISize();
1081 setup_bitmap(gRec, size, &bitmap); 1086 setup_bitmap(gRec, size, &bitmap);
1082 SkCanvas canvas(bitmap); 1087 SkCanvas canvas(bitmap);
1083 installFilter(&canvas); 1088 installFilter(&canvas);
1084 TiledPipeController pipeController(bitmap); 1089 TiledPipeController pipeController(bitmap, &SkImageDecoder::Deco deMemory);
1085 SkGPipeWriter writer; 1090 SkGPipeWriter writer;
1086 SkCanvas* pipeCanvas = writer.startRecording(&pipeController, 1091 SkCanvas* pipeCanvas = writer.startRecording(&pipeController,
1087 gPipeWritingFlagCom bos[i].flags, 1092 gPipeWritingFlagCom bos[i].flags,
1088 size.width(), size. height()); 1093 size.width(), size. height());
1089 invokeGM(gm, pipeCanvas, false, false); 1094 invokeGM(gm, pipeCanvas, false, false);
1090 complete_bitmap(&bitmap); 1095 complete_bitmap(&bitmap);
1091 writer.endRecording(); 1096 writer.endRecording();
1092 errors.add(compare_test_results_to_reference_bitmap(name, 1097 errors.add(compare_test_results_to_reference_bitmap(name,
1093 renderModeDe scriptor.c_str(), 1098 renderModeDe scriptor.c_str(),
1094 bitmap, &ref erenceBitmap)); 1099 bitmap, &ref erenceBitmap));
(...skipping 816 matching lines...) Expand 10 before | Expand all | Expand 10 after
1911 if (FLAGS_forceBWtext) { 1916 if (FLAGS_forceBWtext) {
1912 canvas->setDrawFilter(SkNEW(BWTextDrawFilter))->unref(); 1917 canvas->setDrawFilter(SkNEW(BWTextDrawFilter))->unref();
1913 } 1918 }
1914 } 1919 }
1915 1920
1916 #if !defined(SK_BUILD_FOR_IOS) && !defined(SK_BUILD_FOR_NACL) 1921 #if !defined(SK_BUILD_FOR_IOS) && !defined(SK_BUILD_FOR_NACL)
1917 int main(int argc, char * const argv[]) { 1922 int main(int argc, char * const argv[]) {
1918 return tool_main(argc, (char**) argv); 1923 return tool_main(argc, (char**) argv);
1919 } 1924 }
1920 #endif 1925 #endif
OLDNEW
« no previous file with comments | « no previous file | include/pipe/SkGPipe.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698