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

Unified Diff: src/gpu/SkGpuDevice.cpp

Issue 2163323002: Add desired width & height to drawContext (as opposed to using the width & height of the RT) (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: More Clean up Created 4 years, 5 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
« no previous file with comments | « src/gpu/SkGpuDevice.h ('k') | src/image/SkSurface_Gpu.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/gpu/SkGpuDevice.cpp
diff --git a/src/gpu/SkGpuDevice.cpp b/src/gpu/SkGpuDevice.cpp
index 9357568117bebfcc6ed5900a110e6ad0dc13f0f3..19981e773257f45f1c3b96f9037c2c8d411b068d 100644
--- a/src/gpu/SkGpuDevice.cpp
+++ b/src/gpu/SkGpuDevice.cpp
@@ -127,7 +127,8 @@ bool SkGpuDevice::CheckAlphaTypeAndGetFlags(
return true;
}
-sk_sp<SkGpuDevice> SkGpuDevice::Make(sk_sp<GrRenderTarget> rt, const SkSurfaceProps* props,
+sk_sp<SkGpuDevice> SkGpuDevice::Make(int width, int height,
+ sk_sp<GrRenderTarget> rt, const SkSurfaceProps* props,
InitContents init) {
if (!rt || rt->wasDestroyed() || !rt->getContext()) {
return nullptr;
@@ -137,17 +138,13 @@ sk_sp<SkGpuDevice> SkGpuDevice::Make(sk_sp<GrRenderTarget> rt, const SkSurfacePr
return nullptr;
}
- const int width = rt->width();
- const int height = rt->height();
-
GrContext* context = rt->getContext();
- sk_sp<GrDrawContext> drawContext(context->drawContext(std::move(rt), props));
- return sk_sp<SkGpuDevice>(new SkGpuDevice(std::move(drawContext), width, height, flags));
+ sk_sp<GrDrawContext> drawContext(context->drawContext(width, height, std::move(rt), props));
+ return sk_sp<SkGpuDevice>(new SkGpuDevice(std::move(drawContext), flags));
}
sk_sp<SkBaseDevice> SkGpuDevice::Make(sk_sp<GrDrawContext> drawContext,
- int width, int height,
InitContents init) {
if (!drawContext || drawContext->wasAbandoned()) {
return nullptr;
@@ -156,7 +153,7 @@ sk_sp<SkBaseDevice> SkGpuDevice::Make(sk_sp<GrDrawContext> drawContext,
if (!CheckAlphaTypeAndGetFlags(nullptr, init, &flags)) {
return nullptr;
}
- return sk_sp<SkBaseDevice>(new SkGpuDevice(std::move(drawContext), width, height, flags));
+ return sk_sp<SkBaseDevice>(new SkGpuDevice(std::move(drawContext), flags));
}
sk_sp<SkGpuDevice> SkGpuDevice::Make(GrContext* context, SkBudgeted budgeted,
@@ -173,11 +170,10 @@ sk_sp<SkGpuDevice> SkGpuDevice::Make(GrContext* context, SkBudgeted budgeted,
return nullptr;
}
- return sk_sp<SkGpuDevice>(new SkGpuDevice(std::move(drawContext),
- info.width(), info.height(), flags));
+ return sk_sp<SkGpuDevice>(new SkGpuDevice(std::move(drawContext), flags));
}
-SkGpuDevice::SkGpuDevice(sk_sp<GrDrawContext> drawContext, int width, int height, unsigned flags)
+SkGpuDevice::SkGpuDevice(sk_sp<GrDrawContext> drawContext, unsigned flags)
: INHERITED(drawContext->surfaceProps())
, fContext(SkRef(drawContext->accessRenderTarget()->getContext()))
, fRenderTarget(drawContext->renderTarget())
@@ -185,11 +181,12 @@ SkGpuDevice::SkGpuDevice(sk_sp<GrDrawContext> drawContext, int width, int height
fOpaque = SkToBool(flags & kIsOpaque_Flag);
SkAlphaType at = fOpaque ? kOpaque_SkAlphaType : kPremul_SkAlphaType;
- SkImageInfo info = fRenderTarget->surfacePriv().info(at).makeWH(width, height);
+ SkImageInfo info = fRenderTarget->surfacePriv().info(at).makeWH(fDrawContext->width(),
+ fDrawContext->height());
SkPixelRef* pr = new SkGrPixelRef(info, fRenderTarget.get());
fLegacyBitmap.setInfo(info);
fLegacyBitmap.setPixelRef(pr)->unref();
-
+
if (flags & kNeedClear_Flag) {
this->clearAll();
}
@@ -1886,9 +1883,7 @@ SkBaseDevice* SkGpuDevice::onCreateDevice(const CreateInfo& cinfo, const SkPaint
// Skia's convention is to only clear a device if it is non-opaque.
InitContents init = cinfo.fInfo.isOpaque() ? kUninit_InitContents : kClear_InitContents;
- return SkGpuDevice::Make(std::move(dc),
- cinfo.fInfo.width(), cinfo.fInfo.height(),
- init).release();
+ return SkGpuDevice::Make(std::move(dc), init).release();
}
sk_sp<SkSurface> SkGpuDevice::makeSurface(const SkImageInfo& info, const SkSurfaceProps& props) {
« no previous file with comments | « src/gpu/SkGpuDevice.h ('k') | src/image/SkSurface_Gpu.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698