Index: tests/DeferredCanvasTest.cpp |
diff --git a/tests/DeferredCanvasTest.cpp b/tests/DeferredCanvasTest.cpp |
index 8aaeaed5f3be9639f93da21b9965aa600bd770ab..cc8a1f2c53b4f0ce0ec81a5ff9f1bac4c7a43fb7 100644 |
--- a/tests/DeferredCanvasTest.cpp |
+++ b/tests/DeferredCanvasTest.cpp |
@@ -49,23 +49,6 @@ static SkPMColor read_pixel(SkSurface* surface, int x, int y) { |
return pixel; |
} |
-static void TestDeferredCanvasBitmapAccess(skiatest::Reporter* reporter) { |
- SkBitmap store; |
- |
- SkAutoTUnref<SkSurface> surface(createSurface(0xFFFFFFFF)); |
- SkAutoTUnref<SkDeferredCanvas> canvas(SkDeferredCanvas::Create(surface.get())); |
- |
- canvas->clear(0x00000000); |
- |
- // verify that the clear() was deferred |
- REPORTER_ASSERT(reporter, 0xFFFFFFFF == read_pixel(surface, 0, 0)); |
- |
- SkBitmap accessed = canvas->getDevice()->accessBitmap(false); |
- |
- // verify that clear was executed |
- REPORTER_ASSERT(reporter, 0 == read_pixel(surface, 0, 0)); |
-} |
- |
class MockSurface : public SkSurface_Base { |
public: |
MockSurface(int width, int height) : SkSurface_Base(width, height) { |
@@ -681,13 +664,19 @@ static void TestDeferredCanvasBitmapSizeThreshold(skiatest::Reporter* reporter) |
} |
-typedef void* PixelPtr; |
+typedef const void* PixelPtr; |
// Returns an opaque pointer which, either points to a GrTexture or RAM pixel |
// buffer. Used to test pointer equality do determine whether a surface points |
// to the same pixel data storage as before. |
-static PixelPtr getSurfacePixelPtr(SkSurface* surface, bool useGpu) { |
- return useGpu ? surface->getCanvas()->getDevice()->accessBitmap(false).getTexture() : |
- surface->getCanvas()->getDevice()->accessBitmap(false).getPixels(); |
+static PixelPtr get_surface_ptr(SkSurface* surface, bool useGpu) { |
+#if SK_SUPPORT_GPU |
+ if (useGpu) { |
+ return surface->getCanvas()->internal_private_accessTopLayerRenderTarget()->asTexture(); |
+ } else |
+#endif |
+ { |
+ return surface->peekPixels(NULL, NULL); |
+ } |
} |
static void TestDeferredCanvasSurface(skiatest::Reporter* reporter, GrContextFactory* factory) { |
@@ -715,7 +704,7 @@ static void TestDeferredCanvasSurface(skiatest::Reporter* reporter, GrContextFac |
SkImage* image1 = canvas->newImageSnapshot(); |
SkAutoTUnref<SkImage> aur_i1(image1); |
- PixelPtr pixels1 = getSurfacePixelPtr(surface, useGpu); |
+ PixelPtr pixels1 = get_surface_ptr(surface, useGpu); |
// The following clear would normally trigger a copy on write, but |
// it won't because rendering is deferred. |
canvas->clear(SK_ColorBLACK); |
@@ -733,7 +722,7 @@ static void TestDeferredCanvasSurface(skiatest::Reporter* reporter, GrContextFac |
REPORTER_ASSERT(reporter, image1->uniqueID() != image3->uniqueID()); |
// Verify that backing store is now a different buffer because of copy on |
// write |
- PixelPtr pixels2 = getSurfacePixelPtr(surface, useGpu); |
+ PixelPtr pixels2 = get_surface_ptr(surface, useGpu); |
REPORTER_ASSERT(reporter, pixels1 != pixels2); |
// Verify copy-on write with a draw operation that gets deferred by |
// the in order draw buffer. |
@@ -742,17 +731,17 @@ static void TestDeferredCanvasSurface(skiatest::Reporter* reporter, GrContextFac |
SkImage* image4 = canvas->newImageSnapshot(); // implicit flush |
SkAutoTUnref<SkImage> aur_i4(image4); |
REPORTER_ASSERT(reporter, image4->uniqueID() != image3->uniqueID()); |
- PixelPtr pixels3 = getSurfacePixelPtr(surface, useGpu); |
+ PixelPtr pixels3 = get_surface_ptr(surface, useGpu); |
REPORTER_ASSERT(reporter, pixels2 != pixels3); |
// Verify that a direct canvas flush with a pending draw does not trigger |
// a copy on write when the surface is not sharing its buffer with an |
// SkImage. |
canvas->clear(SK_ColorWHITE); |
canvas->flush(); |
- PixelPtr pixels4 = getSurfacePixelPtr(surface, useGpu); |
+ PixelPtr pixels4 = get_surface_ptr(surface, useGpu); |
canvas->drawPaint(paint); |
canvas->flush(); |
- PixelPtr pixels5 = getSurfacePixelPtr(surface, useGpu); |
+ PixelPtr pixels5 = get_surface_ptr(surface, useGpu); |
REPORTER_ASSERT(reporter, pixels4 == pixels5); |
} |
@@ -782,21 +771,21 @@ static void TestDeferredCanvasSetSurface(skiatest::Reporter* reporter, GrContext |
SkASSERT(NULL != alternateSurface); |
SkAutoTUnref<SkSurface> aur1(surface); |
SkAutoTUnref<SkSurface> aur2(alternateSurface); |
- PixelPtr pixels1 = getSurfacePixelPtr(surface, useGpu); |
- PixelPtr pixels2 = getSurfacePixelPtr(alternateSurface, useGpu); |
+ PixelPtr pixels1 = get_surface_ptr(surface, useGpu); |
+ PixelPtr pixels2 = get_surface_ptr(alternateSurface, useGpu); |
SkAutoTUnref<SkDeferredCanvas> canvas(SkDeferredCanvas::Create(surface)); |
SkAutoTUnref<SkImage> image1(canvas->newImageSnapshot()); |
canvas->setSurface(alternateSurface); |
SkAutoTUnref<SkImage> image2(canvas->newImageSnapshot()); |
REPORTER_ASSERT(reporter, image1->uniqueID() != image2->uniqueID()); |
// Verify that none of the above operations triggered a surface copy on write. |
- REPORTER_ASSERT(reporter, getSurfacePixelPtr(surface, useGpu) == pixels1); |
- REPORTER_ASSERT(reporter, getSurfacePixelPtr(alternateSurface, useGpu) == pixels2); |
+ REPORTER_ASSERT(reporter, get_surface_ptr(surface, useGpu) == pixels1); |
+ REPORTER_ASSERT(reporter, get_surface_ptr(alternateSurface, useGpu) == pixels2); |
// Verify that a flushed draw command will trigger a copy on write on alternateSurface. |
canvas->clear(SK_ColorWHITE); |
canvas->flush(); |
- REPORTER_ASSERT(reporter, getSurfacePixelPtr(surface, useGpu) == pixels1); |
- REPORTER_ASSERT(reporter, getSurfacePixelPtr(alternateSurface, useGpu) != pixels2); |
+ REPORTER_ASSERT(reporter, get_surface_ptr(surface, useGpu) == pixels1); |
+ REPORTER_ASSERT(reporter, get_surface_ptr(alternateSurface, useGpu) != pixels2); |
} |
static void TestDeferredCanvasCreateCompatibleDevice(skiatest::Reporter* reporter) { |
@@ -821,7 +810,6 @@ static void TestDeferredCanvasCreateCompatibleDevice(skiatest::Reporter* reporte |
} |
DEF_TEST(DeferredCanvas_CPU, reporter) { |
- TestDeferredCanvasBitmapAccess(reporter); |
TestDeferredCanvasFlush(reporter); |
TestDeferredCanvasSilentFlush(reporter); |
TestDeferredCanvasFreshFrame(reporter); |