| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2012 Google Inc. | 2 * Copyright 2012 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 #include "../src/image/SkImagePriv.h" | 8 #include "../src/image/SkImagePriv.h" |
| 9 #include "../src/image/SkSurface_Base.h" | 9 #include "../src/image/SkSurface_Base.h" |
| 10 #include "SkBitmap.h" | 10 #include "SkBitmap.h" |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 63 SkSurface* onNewSurface(const SkImageInfo&) SK_OVERRIDE { | 63 SkSurface* onNewSurface(const SkImageInfo&) SK_OVERRIDE { |
| 64 return NULL; | 64 return NULL; |
| 65 } | 65 } |
| 66 | 66 |
| 67 SkImage* onNewImageSnapshot(Budgeted) SK_OVERRIDE { | 67 SkImage* onNewImageSnapshot(Budgeted) SK_OVERRIDE { |
| 68 return SkNewImageFromBitmap(fBitmap, true, &this->props()); | 68 return SkNewImageFromBitmap(fBitmap, true, &this->props()); |
| 69 } | 69 } |
| 70 | 70 |
| 71 void onCopyOnWrite(ContentChangeMode mode) SK_OVERRIDE { | 71 void onCopyOnWrite(ContentChangeMode mode) SK_OVERRIDE { |
| 72 if (mode == SkSurface::kDiscard_ContentChangeMode) { | 72 if (mode == SkSurface::kDiscard_ContentChangeMode) { |
| 73 fDiscardCount++; | 73 fCOWDiscardCount++; |
| 74 } else { | 74 } else { |
| 75 fRetainCount++; | 75 fCOWRetainCount++; |
| 76 } | 76 } |
| 77 } | 77 } |
| 78 | 78 |
| 79 void clearCounts() { | 79 void onDiscard() SK_OVERRIDE { |
| 80 fDiscardCount = 0; | 80 fDiscardCount++; |
| 81 fRetainCount = 0; | |
| 82 } | 81 } |
| 83 | 82 |
| 84 int fDiscardCount, fRetainCount; | 83 void clearCounts() { |
| 84 fCOWDiscardCount = 0; |
| 85 fCOWRetainCount = 0; |
| 86 fDiscardCount = 0; |
| 87 } |
| 88 |
| 89 int fCOWDiscardCount; |
| 90 int fCOWRetainCount; |
| 91 int fDiscardCount; |
| 85 SkBitmap fBitmap; | 92 SkBitmap fBitmap; |
| 86 }; | 93 }; |
| 87 | 94 |
| 88 static void TestDeferredCanvasWritePixelsToSurface(skiatest::Reporter* reporter)
{ | 95 static void TestDeferredCanvasWritePixelsToSurface(skiatest::Reporter* reporter)
{ |
| 89 SkAutoTUnref<MockSurface> surface(SkNEW_ARGS(MockSurface, (10, 10))); | 96 SkAutoTUnref<MockSurface> surface(SkNEW_ARGS(MockSurface, (10, 10))); |
| 90 SkAutoTUnref<SkDeferredCanvas> canvas(SkDeferredCanvas::Create(surface.get()
)); | 97 SkAutoTUnref<SkDeferredCanvas> canvas(SkDeferredCanvas::Create(surface.get()
)); |
| 91 | 98 |
| 92 SkBitmap srcBitmap; | 99 SkBitmap srcBitmap; |
| 93 srcBitmap.allocPixels(SkImageInfo::Make(10, 10, kRGBA_8888_SkColorType, kUnp
remul_SkAlphaType)); | 100 srcBitmap.allocPixels(SkImageInfo::Make(10, 10, kRGBA_8888_SkColorType, kUnp
remul_SkAlphaType)); |
| 94 srcBitmap.eraseColor(SK_ColorGREEN); | 101 srcBitmap.eraseColor(SK_ColorGREEN); |
| 95 // Tests below depend on this bitmap being recognized as opaque | 102 // Tests below depend on this bitmap being recognized as opaque |
| 96 | 103 |
| 97 // Preliminary sanity check: no copy on write if no active snapshot | 104 // Preliminary sanity check: no copy on write if no active snapshot |
| 105 // Discard notification happens on SkSurface::onDiscard, since no |
| 106 // active snapshot. |
| 98 surface->clearCounts(); | 107 surface->clearCounts(); |
| 99 canvas->clear(SK_ColorWHITE); | 108 canvas->clear(SK_ColorWHITE); |
| 109 REPORTER_ASSERT(reporter, 0 == surface->fCOWDiscardCount); |
| 110 REPORTER_ASSERT(reporter, 0 == surface->fCOWRetainCount); |
| 100 REPORTER_ASSERT(reporter, 0 == surface->fDiscardCount); | 111 REPORTER_ASSERT(reporter, 0 == surface->fDiscardCount); |
| 101 REPORTER_ASSERT(reporter, 0 == surface->fRetainCount); | |
| 102 | 112 |
| 103 surface->clearCounts(); | 113 surface->clearCounts(); |
| 104 canvas->flush(); | 114 canvas->flush(); |
| 105 REPORTER_ASSERT(reporter, 0 == surface->fDiscardCount); | 115 REPORTER_ASSERT(reporter, 0 == surface->fCOWDiscardCount); |
| 106 REPORTER_ASSERT(reporter, 0 == surface->fRetainCount); | 116 REPORTER_ASSERT(reporter, 0 == surface->fCOWRetainCount); |
| 117 REPORTER_ASSERT(reporter, 1 == surface->fDiscardCount); |
| 107 | 118 |
| 108 // Case 1: Discard notification happens upon flushing | 119 // Case 1: Discard notification happens upon flushing |
| 109 // with an Image attached. | 120 // with an Image attached. |
| 110 surface->clearCounts(); | 121 surface->clearCounts(); |
| 111 SkAutoTUnref<SkImage> image1(canvas->newImageSnapshot()); | 122 SkAutoTUnref<SkImage> image1(canvas->newImageSnapshot()); |
| 123 REPORTER_ASSERT(reporter, 0 == surface->fCOWDiscardCount); |
| 124 REPORTER_ASSERT(reporter, 0 == surface->fCOWRetainCount); |
| 112 REPORTER_ASSERT(reporter, 0 == surface->fDiscardCount); | 125 REPORTER_ASSERT(reporter, 0 == surface->fDiscardCount); |
| 113 REPORTER_ASSERT(reporter, 0 == surface->fRetainCount); | |
| 114 | 126 |
| 115 surface->clearCounts(); | 127 surface->clearCounts(); |
| 116 canvas->clear(SK_ColorWHITE); | 128 canvas->clear(SK_ColorWHITE); |
| 129 REPORTER_ASSERT(reporter, 0 == surface->fCOWDiscardCount); |
| 130 REPORTER_ASSERT(reporter, 0 == surface->fCOWRetainCount); |
| 117 REPORTER_ASSERT(reporter, 0 == surface->fDiscardCount); | 131 REPORTER_ASSERT(reporter, 0 == surface->fDiscardCount); |
| 118 REPORTER_ASSERT(reporter, 0 == surface->fRetainCount); | |
| 119 | 132 |
| 120 surface->clearCounts(); | 133 surface->clearCounts(); |
| 121 canvas->flush(); | 134 canvas->flush(); |
| 122 REPORTER_ASSERT(reporter, 1 == surface->fDiscardCount); | 135 REPORTER_ASSERT(reporter, 1 == surface->fCOWDiscardCount); |
| 123 REPORTER_ASSERT(reporter, 0 == surface->fRetainCount); | 136 REPORTER_ASSERT(reporter, 0 == surface->fCOWRetainCount); |
| 137 REPORTER_ASSERT(reporter, 0 == surface->fDiscardCount); |
| 124 | 138 |
| 125 // Case 2: Opaque writePixels | 139 // Case 2: Opaque writePixels |
| 126 surface->clearCounts(); | 140 surface->clearCounts(); |
| 127 SkAutoTUnref<SkImage> image2(canvas->newImageSnapshot()); | 141 SkAutoTUnref<SkImage> image2(canvas->newImageSnapshot()); |
| 142 REPORTER_ASSERT(reporter, 0 == surface->fCOWDiscardCount); |
| 143 REPORTER_ASSERT(reporter, 0 == surface->fCOWRetainCount); |
| 128 REPORTER_ASSERT(reporter, 0 == surface->fDiscardCount); | 144 REPORTER_ASSERT(reporter, 0 == surface->fDiscardCount); |
| 129 REPORTER_ASSERT(reporter, 0 == surface->fRetainCount); | |
| 130 | 145 |
| 131 // Case 3: writePixels that partially covers the canvas | 146 // Case 3: writePixels that partially covers the canvas |
| 132 surface->clearCounts(); | 147 surface->clearCounts(); |
| 133 SkAutoTUnref<SkImage> image3(canvas->newImageSnapshot()); | 148 SkAutoTUnref<SkImage> image3(canvas->newImageSnapshot()); |
| 149 REPORTER_ASSERT(reporter, 0 == surface->fCOWDiscardCount); |
| 150 REPORTER_ASSERT(reporter, 0 == surface->fCOWRetainCount); |
| 134 REPORTER_ASSERT(reporter, 0 == surface->fDiscardCount); | 151 REPORTER_ASSERT(reporter, 0 == surface->fDiscardCount); |
| 135 REPORTER_ASSERT(reporter, 0 == surface->fRetainCount); | |
| 136 | 152 |
| 137 // Case 4: unpremultiplied opaque writePixels that entirely | 153 // Case 4: unpremultiplied opaque writePixels that entirely |
| 138 // covers the canvas | 154 // covers the canvas |
| 139 surface->clearCounts(); | 155 surface->clearCounts(); |
| 140 SkAutoTUnref<SkImage> image4(canvas->newImageSnapshot()); | 156 SkAutoTUnref<SkImage> image4(canvas->newImageSnapshot()); |
| 157 REPORTER_ASSERT(reporter, 0 == surface->fCOWDiscardCount); |
| 158 REPORTER_ASSERT(reporter, 0 == surface->fCOWRetainCount); |
| 141 REPORTER_ASSERT(reporter, 0 == surface->fDiscardCount); | 159 REPORTER_ASSERT(reporter, 0 == surface->fDiscardCount); |
| 142 REPORTER_ASSERT(reporter, 0 == surface->fRetainCount); | |
| 143 | 160 |
| 144 surface->clearCounts(); | 161 surface->clearCounts(); |
| 145 canvas->writePixels(srcBitmap, 0, 0); | 162 canvas->writePixels(srcBitmap, 0, 0); |
| 146 REPORTER_ASSERT(reporter, 1 == surface->fDiscardCount); | 163 REPORTER_ASSERT(reporter, 1 == surface->fCOWDiscardCount); |
| 147 REPORTER_ASSERT(reporter, 0 == surface->fRetainCount); | 164 REPORTER_ASSERT(reporter, 0 == surface->fCOWRetainCount); |
| 165 REPORTER_ASSERT(reporter, 0 == surface->fDiscardCount); |
| 148 | 166 |
| 149 surface->clearCounts(); | 167 surface->clearCounts(); |
| 150 canvas->flush(); | 168 canvas->flush(); |
| 169 REPORTER_ASSERT(reporter, 0 == surface->fCOWDiscardCount); |
| 170 REPORTER_ASSERT(reporter, 0 == surface->fCOWRetainCount); |
| 151 REPORTER_ASSERT(reporter, 0 == surface->fDiscardCount); | 171 REPORTER_ASSERT(reporter, 0 == surface->fDiscardCount); |
| 152 REPORTER_ASSERT(reporter, 0 == surface->fRetainCount); | |
| 153 | 172 |
| 154 // Case 5: unpremultiplied opaque writePixels that partially | 173 // Case 5: unpremultiplied opaque writePixels that partially |
| 155 // covers the canvas | 174 // covers the canvas |
| 156 surface->clearCounts(); | 175 surface->clearCounts(); |
| 157 SkAutoTUnref<SkImage> image5(canvas->newImageSnapshot()); | 176 SkAutoTUnref<SkImage> image5(canvas->newImageSnapshot()); |
| 177 REPORTER_ASSERT(reporter, 0 == surface->fCOWDiscardCount); |
| 178 REPORTER_ASSERT(reporter, 0 == surface->fCOWRetainCount); |
| 158 REPORTER_ASSERT(reporter, 0 == surface->fDiscardCount); | 179 REPORTER_ASSERT(reporter, 0 == surface->fDiscardCount); |
| 159 REPORTER_ASSERT(reporter, 0 == surface->fRetainCount); | |
| 160 | 180 |
| 161 surface->clearCounts(); | 181 surface->clearCounts(); |
| 162 canvas->writePixels(srcBitmap, 5, 0); | 182 canvas->writePixels(srcBitmap, 5, 0); |
| 183 REPORTER_ASSERT(reporter, 0 == surface->fCOWDiscardCount); |
| 184 REPORTER_ASSERT(reporter, 1 == surface->fCOWRetainCount); |
| 163 REPORTER_ASSERT(reporter, 0 == surface->fDiscardCount); | 185 REPORTER_ASSERT(reporter, 0 == surface->fDiscardCount); |
| 164 REPORTER_ASSERT(reporter, 1 == surface->fRetainCount); | |
| 165 | 186 |
| 166 surface->clearCounts(); | 187 surface->clearCounts(); |
| 167 canvas->flush(); | 188 canvas->flush(); |
| 189 REPORTER_ASSERT(reporter, 0 == surface->fCOWDiscardCount); |
| 190 REPORTER_ASSERT(reporter, 0 == surface->fCOWRetainCount); |
| 168 REPORTER_ASSERT(reporter, 0 == surface->fDiscardCount); | 191 REPORTER_ASSERT(reporter, 0 == surface->fDiscardCount); |
| 169 REPORTER_ASSERT(reporter, 0 == surface->fRetainCount); | |
| 170 | 192 |
| 171 // Case 6: unpremultiplied opaque writePixels that entirely | 193 // Case 6: unpremultiplied opaque writePixels that entirely |
| 172 // covers the canvas, preceded by clear | 194 // covers the canvas, preceded by clear |
| 173 surface->clearCounts(); | 195 surface->clearCounts(); |
| 174 SkAutoTUnref<SkImage> image6(canvas->newImageSnapshot()); | 196 SkAutoTUnref<SkImage> image6(canvas->newImageSnapshot()); |
| 197 REPORTER_ASSERT(reporter, 0 == surface->fCOWDiscardCount); |
| 198 REPORTER_ASSERT(reporter, 0 == surface->fCOWRetainCount); |
| 175 REPORTER_ASSERT(reporter, 0 == surface->fDiscardCount); | 199 REPORTER_ASSERT(reporter, 0 == surface->fDiscardCount); |
| 176 REPORTER_ASSERT(reporter, 0 == surface->fRetainCount); | |
| 177 | 200 |
| 178 surface->clearCounts(); | 201 surface->clearCounts(); |
| 179 canvas->clear(SK_ColorWHITE); | 202 canvas->clear(SK_ColorWHITE); |
| 203 REPORTER_ASSERT(reporter, 0 == surface->fCOWDiscardCount); |
| 204 REPORTER_ASSERT(reporter, 0 == surface->fCOWRetainCount); |
| 180 REPORTER_ASSERT(reporter, 0 == surface->fDiscardCount); | 205 REPORTER_ASSERT(reporter, 0 == surface->fDiscardCount); |
| 181 REPORTER_ASSERT(reporter, 0 == surface->fRetainCount); | |
| 182 | 206 |
| 183 surface->clearCounts(); | 207 surface->clearCounts(); |
| 184 canvas->writePixels(srcBitmap, 0, 0); | 208 canvas->writePixels(srcBitmap, 0, 0); |
| 185 REPORTER_ASSERT(reporter, 1 == surface->fDiscardCount); | 209 REPORTER_ASSERT(reporter, 1 == surface->fCOWDiscardCount); |
| 186 REPORTER_ASSERT(reporter, 0 == surface->fRetainCount); | 210 REPORTER_ASSERT(reporter, 0 == surface->fCOWRetainCount); |
| 211 REPORTER_ASSERT(reporter, 0 == surface->fDiscardCount); |
| 187 | 212 |
| 188 surface->clearCounts(); | 213 surface->clearCounts(); |
| 189 canvas->flush(); | 214 canvas->flush(); |
| 215 REPORTER_ASSERT(reporter, 0 == surface->fCOWDiscardCount); |
| 216 REPORTER_ASSERT(reporter, 0 == surface->fCOWRetainCount); |
| 190 REPORTER_ASSERT(reporter, 0 == surface->fDiscardCount); | 217 REPORTER_ASSERT(reporter, 0 == surface->fDiscardCount); |
| 191 REPORTER_ASSERT(reporter, 0 == surface->fRetainCount); | |
| 192 | 218 |
| 193 // Case 7: unpremultiplied opaque writePixels that partially | 219 // Case 7: unpremultiplied opaque writePixels that partially |
| 194 // covers the canvas, preceeded by a clear | 220 // covers the canvas, preceeded by a clear |
| 195 surface->clearCounts(); | 221 surface->clearCounts(); |
| 196 SkAutoTUnref<SkImage> image7(canvas->newImageSnapshot()); | 222 SkAutoTUnref<SkImage> image7(canvas->newImageSnapshot()); |
| 223 REPORTER_ASSERT(reporter, 0 == surface->fCOWDiscardCount); |
| 224 REPORTER_ASSERT(reporter, 0 == surface->fCOWRetainCount); |
| 197 REPORTER_ASSERT(reporter, 0 == surface->fDiscardCount); | 225 REPORTER_ASSERT(reporter, 0 == surface->fDiscardCount); |
| 198 REPORTER_ASSERT(reporter, 0 == surface->fRetainCount); | |
| 199 | 226 |
| 200 surface->clearCounts(); | 227 surface->clearCounts(); |
| 201 canvas->clear(SK_ColorWHITE); | 228 canvas->clear(SK_ColorWHITE); |
| 229 REPORTER_ASSERT(reporter, 0 == surface->fCOWDiscardCount); |
| 230 REPORTER_ASSERT(reporter, 0 == surface->fCOWRetainCount); |
| 202 REPORTER_ASSERT(reporter, 0 == surface->fDiscardCount); | 231 REPORTER_ASSERT(reporter, 0 == surface->fDiscardCount); |
| 203 REPORTER_ASSERT(reporter, 0 == surface->fRetainCount); | |
| 204 | 232 |
| 205 surface->clearCounts(); | 233 surface->clearCounts(); |
| 206 canvas->writePixels(srcBitmap, 5, 0); | 234 canvas->writePixels(srcBitmap, 5, 0); |
| 207 REPORTER_ASSERT(reporter, 1 == surface->fDiscardCount); // because of the cl
ear | 235 REPORTER_ASSERT(reporter, 1 == surface->fCOWDiscardCount); // because of the
clear |
| 208 REPORTER_ASSERT(reporter, 0 == surface->fRetainCount); | 236 REPORTER_ASSERT(reporter, 0 == surface->fCOWRetainCount); |
| 237 REPORTER_ASSERT(reporter, 0 == surface->fDiscardCount); |
| 209 | 238 |
| 210 surface->clearCounts(); | 239 surface->clearCounts(); |
| 211 canvas->flush(); | 240 canvas->flush(); |
| 241 REPORTER_ASSERT(reporter, 0 == surface->fCOWDiscardCount); |
| 242 REPORTER_ASSERT(reporter, 0 == surface->fCOWRetainCount); |
| 212 REPORTER_ASSERT(reporter, 0 == surface->fDiscardCount); | 243 REPORTER_ASSERT(reporter, 0 == surface->fDiscardCount); |
| 213 REPORTER_ASSERT(reporter, 0 == surface->fRetainCount); | |
| 214 | 244 |
| 215 // Case 8: unpremultiplied opaque writePixels that partially | 245 // Case 8: unpremultiplied opaque writePixels that partially |
| 216 // covers the canvas, preceeded by a drawREct that partially | 246 // covers the canvas, preceeded by a drawREct that partially |
| 217 // covers the canvas | 247 // covers the canvas |
| 218 surface->clearCounts(); | 248 surface->clearCounts(); |
| 219 SkAutoTUnref<SkImage> image8(canvas->newImageSnapshot()); | 249 SkAutoTUnref<SkImage> image8(canvas->newImageSnapshot()); |
| 250 REPORTER_ASSERT(reporter, 0 == surface->fCOWDiscardCount); |
| 251 REPORTER_ASSERT(reporter, 0 == surface->fCOWRetainCount); |
| 220 REPORTER_ASSERT(reporter, 0 == surface->fDiscardCount); | 252 REPORTER_ASSERT(reporter, 0 == surface->fDiscardCount); |
| 221 REPORTER_ASSERT(reporter, 0 == surface->fRetainCount); | |
| 222 | 253 |
| 223 surface->clearCounts(); | 254 surface->clearCounts(); |
| 224 SkPaint paint; | 255 SkPaint paint; |
| 225 canvas->drawRect(SkRect::MakeLTRB(0, 0, 5, 5), paint); | 256 canvas->drawRect(SkRect::MakeLTRB(0, 0, 5, 5), paint); |
| 257 REPORTER_ASSERT(reporter, 0 == surface->fCOWDiscardCount); |
| 258 REPORTER_ASSERT(reporter, 0 == surface->fCOWRetainCount); |
| 226 REPORTER_ASSERT(reporter, 0 == surface->fDiscardCount); | 259 REPORTER_ASSERT(reporter, 0 == surface->fDiscardCount); |
| 227 REPORTER_ASSERT(reporter, 0 == surface->fRetainCount); | |
| 228 | 260 |
| 229 surface->clearCounts(); | 261 surface->clearCounts(); |
| 230 canvas->writePixels(srcBitmap, 5, 0); | 262 canvas->writePixels(srcBitmap, 5, 0); |
| 263 REPORTER_ASSERT(reporter, 0 == surface->fCOWDiscardCount); |
| 264 REPORTER_ASSERT(reporter, 1 == surface->fCOWRetainCount); |
| 231 REPORTER_ASSERT(reporter, 0 == surface->fDiscardCount); | 265 REPORTER_ASSERT(reporter, 0 == surface->fDiscardCount); |
| 232 REPORTER_ASSERT(reporter, 1 == surface->fRetainCount); | |
| 233 | 266 |
| 234 surface->clearCounts(); | 267 surface->clearCounts(); |
| 235 canvas->flush(); | 268 canvas->flush(); |
| 269 REPORTER_ASSERT(reporter, 0 == surface->fCOWDiscardCount); |
| 270 REPORTER_ASSERT(reporter, 0 == surface->fCOWRetainCount); |
| 236 REPORTER_ASSERT(reporter, 0 == surface->fDiscardCount); | 271 REPORTER_ASSERT(reporter, 0 == surface->fDiscardCount); |
| 237 REPORTER_ASSERT(reporter, 0 == surface->fRetainCount); | |
| 238 } | 272 } |
| 239 | 273 |
| 240 static void TestDeferredCanvasFlush(skiatest::Reporter* reporter) { | 274 static void TestDeferredCanvasFlush(skiatest::Reporter* reporter) { |
| 241 SkAutoTUnref<SkSurface> surface(createSurface(0xFFFFFFFF)); | 275 SkAutoTUnref<SkSurface> surface(createSurface(0xFFFFFFFF)); |
| 242 SkAutoTUnref<SkDeferredCanvas> canvas(SkDeferredCanvas::Create(surface.get()
)); | 276 SkAutoTUnref<SkDeferredCanvas> canvas(SkDeferredCanvas::Create(surface.get()
)); |
| 243 | 277 |
| 244 canvas->clear(0x00000000); | 278 canvas->clear(0x00000000); |
| 245 | 279 |
| 246 // verify that clear was deferred | 280 // verify that clear was deferred |
| 247 REPORTER_ASSERT(reporter, 0xFFFFFFFF == read_pixel(surface, 0, 0)); | 281 REPORTER_ASSERT(reporter, 0xFFFFFFFF == read_pixel(surface, 0, 0)); |
| (...skipping 654 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 902 TestDeferredCanvasSurface(reporter, NULL); | 936 TestDeferredCanvasSurface(reporter, NULL); |
| 903 TestDeferredCanvasSetSurface(reporter, NULL); | 937 TestDeferredCanvasSetSurface(reporter, NULL); |
| 904 } | 938 } |
| 905 | 939 |
| 906 DEF_GPUTEST(DeferredCanvas_GPU, reporter, factory) { | 940 DEF_GPUTEST(DeferredCanvas_GPU, reporter, factory) { |
| 907 if (factory != NULL) { | 941 if (factory != NULL) { |
| 908 TestDeferredCanvasSurface(reporter, factory); | 942 TestDeferredCanvasSurface(reporter, factory); |
| 909 TestDeferredCanvasSetSurface(reporter, factory); | 943 TestDeferredCanvasSetSurface(reporter, factory); |
| 910 } | 944 } |
| 911 } | 945 } |
| OLD | NEW |