blob: 205dfdd313530282a3465eefff808a8816722083 [file] [log] [blame]
robertphillips76948d42016-05-04 12:47:41 -07001/*
2 * Copyright 2016 Google Inc.
3 *
4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file.
6 */
7
8#include "GrTextureProxy.h"
9
10#include "GrTextureProvider.h"
11#include "GrGpuResourcePriv.h"
12
robertphillips8abb3702016-08-31 14:04:06 -070013GrTextureProxy::GrTextureProxy(const GrSurfaceDesc& srcDesc, SkBackingFit fit, SkBudgeted budgeted,
14 const void* /*srcData*/, size_t /*rowBytes*/)
15 : INHERITED(srcDesc, fit, budgeted) {
16 // TODO: Handle 'srcData' here
17}
18
robertphillips76948d42016-05-04 12:47:41 -070019GrTextureProxy::GrTextureProxy(sk_sp<GrTexture> tex)
robertphillips8abb3702016-08-31 14:04:06 -070020 : INHERITED(tex->desc(), SkBackingFit::kExact,
21 tex->resourcePriv().isBudgeted(), tex->uniqueID())
robertphillips76948d42016-05-04 12:47:41 -070022 , fTexture(std::move(tex)) {
23}
24
25GrTexture* GrTextureProxy::instantiate(GrTextureProvider* texProvider) {
26 if (fTexture) {
27 return fTexture.get();
28 }
29
30 if (SkBackingFit::kApprox == fFit) {
31 fTexture.reset(texProvider->createApproxTexture(fDesc));
32 } else {
33 fTexture.reset(texProvider->createTexture(fDesc, fBudgeted));
34 }
35
36 return fTexture.get();
37}
38
39sk_sp<GrTextureProxy> GrTextureProxy::Make(const GrSurfaceDesc& desc,
40 SkBackingFit fit,
41 SkBudgeted budgeted,
42 const void* srcData,
43 size_t rowBytes) {
44 // TODO: handle 'srcData' (we could use the wrapped version if there is data)
45 SkASSERT(!srcData && !rowBytes);
46 return sk_sp<GrTextureProxy>(new GrTextureProxy(desc, fit, budgeted, srcData, rowBytes));
47}
48
49sk_sp<GrTextureProxy> GrTextureProxy::Make(sk_sp<GrTexture> tex) {
50 return sk_sp<GrTextureProxy>(new GrTextureProxy(std::move(tex)));
51}