Index: src/gpu/GrTextureProxy.cpp |
diff --git a/src/gpu/GrTextureProxy.cpp b/src/gpu/GrTextureProxy.cpp |
new file mode 100644 |
index 0000000000000000000000000000000000000000..f28b29eee027d46b7911718bc05c09a2c1779c15 |
--- /dev/null |
+++ b/src/gpu/GrTextureProxy.cpp |
@@ -0,0 +1,44 @@ |
+/* |
+ * Copyright 2016 Google Inc. |
+ * |
+ * Use of this source code is governed by a BSD-style license that can be |
+ * found in the LICENSE file. |
+ */ |
+ |
+#include "GrTextureProxy.h" |
+ |
+#include "GrTextureProvider.h" |
+#include "GrGpuResourcePriv.h" |
+ |
+GrTextureProxy::GrTextureProxy(sk_sp<GrTexture> tex) |
+ : INHERITED(tex->desc(), SkBackingFit::kExact, tex->resourcePriv().isBudgeted()) |
+ , fTexture(std::move(tex)) { |
+} |
+ |
+GrTexture* GrTextureProxy::instantiate(GrTextureProvider* texProvider) { |
+ if (fTexture) { |
+ return fTexture.get(); |
+ } |
+ |
+ if (SkBackingFit::kApprox == fFit) { |
+ fTexture.reset(texProvider->createApproxTexture(fDesc)); |
+ } else { |
+ fTexture.reset(texProvider->createTexture(fDesc, fBudgeted)); |
+ } |
+ |
+ return fTexture.get(); |
+} |
+ |
+sk_sp<GrTextureProxy> GrTextureProxy::Make(const GrSurfaceDesc& desc, |
+ SkBackingFit fit, |
+ SkBudgeted budgeted, |
+ const void* srcData, |
+ size_t rowBytes) { |
+ // TODO: handle 'srcData' (we could use the wrapped version if there is data) |
+ SkASSERT(!srcData && !rowBytes); |
+ return sk_sp<GrTextureProxy>(new GrTextureProxy(desc, fit, budgeted, srcData, rowBytes)); |
+} |
+ |
+sk_sp<GrTextureProxy> GrTextureProxy::Make(sk_sp<GrTexture> tex) { |
+ return sk_sp<GrTextureProxy>(new GrTextureProxy(std::move(tex))); |
+} |