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

Unified Diff: runtime/embedders/openglui/common/graphics_handler.cc

Issue 12212074: Support for non-DOM canvases/contexts (backed by bitaps). (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 7 years, 10 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 side-by-side diff with in-line comments
Download patch
Index: runtime/embedders/openglui/common/graphics_handler.cc
===================================================================
--- runtime/embedders/openglui/common/graphics_handler.cc (revision 18200)
+++ runtime/embedders/openglui/common/graphics_handler.cc (working copy)
@@ -35,8 +35,7 @@
GrGLInterface* fGL = const_cast<GrGLInterface*>(GrGLCreateNativeInterface());
LOGI("Created native interface %s\n", fGL ? "succeeded" : "failed");
fGL->fGetString = myGLGetString;
- grcontext = GrContext::Create(kOpenGL_Shaders_GrEngine,
- (GrPlatform3DContext)fGL);
+ grcontext = GrContext::Create(kOpenGL_GrBackend, (GrBackendContext)fGL);
LOGI("Created GrContext %s\n", grcontext ? "succeeded" : "failed");
return 0;
}
@@ -45,20 +44,36 @@
SkGraphics::Term();
}
-SkCanvas* GraphicsHandler::CreateCanvas() {
- GrPlatformRenderTargetDesc desc;
+SkCanvas* GraphicsHandler::CreateDisplayCanvas() {
+ GrBackendRenderTargetDesc desc;
desc.fWidth = width_;
desc.fHeight = height_;
- desc.fConfig = kSkia8888_PM_GrPixelConfig;
+ desc.fConfig = kSkia8888_GrPixelConfig;
+ desc.fOrigin = kBottomLeft_GrSurfaceOrigin;
glGetIntegerv(GL_SAMPLES, &desc.fSampleCnt);
glGetIntegerv(GL_STENCIL_BITS, &desc.fStencilBits);
+ LOGI("Creating %dx%d display canvas, samples %d, stencil bits %d",
+ width_, height_, desc.fSampleCnt, desc.fStencilBits);
GrGLint buffer;
glGetIntegerv(GL_FRAMEBUFFER_BINDING, &buffer);
desc.fRenderTargetHandle = buffer;
- GrRenderTarget* fGrRenderTarget = grcontext->createPlatformRenderTarget(desc);
- return new SkCanvas(new SkGpuDevice(grcontext, fGrRenderTarget));
+ GrRenderTarget* fGrRenderTarget = grcontext->wrapBackendRenderTarget(desc);
+ SkGpuDevice* device = new SkGpuDevice(grcontext, fGrRenderTarget);
+// fGrRenderTarget->unref(); // TODO(gram): determine if we need this.
+ SkCanvas* canvas = new SkCanvas(device);
+ device->unref();
+ return canvas;
}
+SkCanvas* GraphicsHandler::CreateBitmapCanvas(int width, int height) {
+ LOGI("Creating %dx%d bitmap canvas", width, height);
+ SkDevice* rasterDevice =
+ new SkDevice(SkBitmap::kARGB_8888_Config, width, height);
+ SkCanvas* canvas = new SkCanvas(rasterDevice);
+ rasterDevice->unref();
+ return canvas;
+}
+
void GraphicsHandler::SetViewport(int left, int top, int width, int height) {
width_ = width;
height_ = height;

Powered by Google App Engine
This is Rietveld 408576698