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

Side by Side Diff: src/gpu/GrRenderTargetProxy.cpp

Issue 2225303002: Add flag for window rectangles to GrRenderTarget (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Created 4 years, 4 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
OLDNEW
1 /* 1 /*
2 * Copyright 2016 Google Inc. 2 * Copyright 2016 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 "GrRenderTargetProxy.h" 8 #include "GrRenderTargetProxy.h"
9 9
10 #include "GrCaps.h"
10 #include "GrDrawTarget.h" 11 #include "GrDrawTarget.h"
11 #include "GrGpuResourcePriv.h" 12 #include "GrGpuResourcePriv.h"
12 #include "GrRenderTargetPriv.h"
13 13
14 GrRenderTargetProxy::GrRenderTargetProxy(sk_sp<GrRenderTarget> rt) 14 // Deferred version
15 // TODO: we can probably munge the 'desc' in both the wrapped and deferred
16 // cases to make the sampleConfig/numSamples stuff more rational.
17 GrRenderTargetProxy::GrRenderTargetProxy(const GrCaps& caps, const GrSurfaceDesc & desc,
18 SkBackingFit fit, SkBudgeted budgeted)
19 : INHERITED(desc, fit, budgeted)
20 , fTarget(nullptr)
21 , fFlags(GrRenderTargetPriv::Flags::kOffscreen)
22 , fLastDrawTarget(nullptr) {
23 if (fDesc.fSampleCnt > 0 && caps.usesMixedSamples()) {
24 fFlags |= GrRenderTargetPriv::Flags::kMixedSampled;
25 }
26 }
27
28 // Wrapped version
29 GrRenderTargetProxy::GrRenderTargetProxy(const GrCaps& caps, sk_sp<GrRenderTarge t> rt)
15 : INHERITED(rt->desc(), SkBackingFit::kExact, rt->resourcePriv().isBudgeted( )) 30 : INHERITED(rt->desc(), SkBackingFit::kExact, rt->resourcePriv().isBudgeted( ))
16 , fTarget(std::move(rt)) 31 , fTarget(std::move(rt))
17 , fSampleConfig(fTarget->renderTargetPriv().sampleConfig()) 32 , fFlags(fTarget->renderTargetPriv().flags())
18 , fLastDrawTarget(nullptr) { 33 , fLastDrawTarget(nullptr) {
19 } 34 }
20 35
21 GrRenderTargetProxy::~GrRenderTargetProxy() { 36 GrRenderTargetProxy::~GrRenderTargetProxy() {
22 if (fLastDrawTarget) { 37 if (fLastDrawTarget) {
23 fLastDrawTarget->clearRT(); 38 fLastDrawTarget->clearRT();
24 } 39 }
25 SkSafeUnref(fLastDrawTarget); 40 SkSafeUnref(fLastDrawTarget);
26 } 41 }
27 42
(...skipping 12 matching lines...) Expand all
40 } else { 55 } else {
41 tex.reset(texProvider->createTexture(desc, fBudgeted)); 56 tex.reset(texProvider->createTexture(desc, fBudgeted));
42 } 57 }
43 if (!tex || !tex->asRenderTarget()) { 58 if (!tex || !tex->asRenderTarget()) {
44 return nullptr; 59 return nullptr;
45 } 60 }
46 61
47 fTarget = sk_ref_sp(tex->asRenderTarget()); 62 fTarget = sk_ref_sp(tex->asRenderTarget());
48 63
49 // Check that our a priori computation matched the ultimate reality 64 // Check that our a priori computation matched the ultimate reality
50 SkASSERT(fSampleConfig == fTarget->renderTargetPriv().sampleConfig()); 65 SkASSERT(fFlags == fTarget->renderTargetPriv().flags());
51 66
52 return fTarget.get(); 67 return fTarget.get();
53 } 68 }
54 69
55 void GrRenderTargetProxy::setLastDrawTarget(GrDrawTarget* dt) { 70 void GrRenderTargetProxy::setLastDrawTarget(GrDrawTarget* dt) {
56 if (fLastDrawTarget) { 71 if (fLastDrawTarget) {
57 // The non-MDB world never closes so we can't check this condition 72 // The non-MDB world never closes so we can't check this condition
58 #ifdef ENABLE_MDB 73 #ifdef ENABLE_MDB
59 SkASSERT(fLastDrawTarget->isClosed()); 74 SkASSERT(fLastDrawTarget->isClosed());
60 #endif 75 #endif
61 fLastDrawTarget->clearRT(); 76 fLastDrawTarget->clearRT();
62 } 77 }
63 78
64 SkRefCnt_SafeAssign(fLastDrawTarget, dt); 79 SkRefCnt_SafeAssign(fLastDrawTarget, dt);
65 } 80 }
66 81
67 sk_sp<GrRenderTargetProxy> GrRenderTargetProxy::Make(const GrCaps& caps, 82 sk_sp<GrRenderTargetProxy> GrRenderTargetProxy::Make(const GrCaps& caps,
68 const GrSurfaceDesc& desc, 83 const GrSurfaceDesc& desc,
69 SkBackingFit fit, 84 SkBackingFit fit,
70 SkBudgeted budgeted) { 85 SkBudgeted budgeted) {
71 return sk_sp<GrRenderTargetProxy>(new GrRenderTargetProxy(caps, desc, fit, b udgeted)); 86 return sk_sp<GrRenderTargetProxy>(new GrRenderTargetProxy(caps, desc, fit, b udgeted));
72 } 87 }
73 88
74 sk_sp<GrRenderTargetProxy> GrRenderTargetProxy::Make(sk_sp<GrRenderTarget> rt) { 89 sk_sp<GrRenderTargetProxy> GrRenderTargetProxy::Make(const GrCaps& caps, sk_sp<G rRenderTarget> rt) {
75 return sk_sp<GrRenderTargetProxy>(new GrRenderTargetProxy(rt)); 90 return sk_sp<GrRenderTargetProxy>(new GrRenderTargetProxy(caps, rt));
76 } 91 }
77 92
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698