blob: d60a32ffd98c8279fe2d2b2db655c200aefd56a9 [file] [log] [blame]
Stephen White985741a2019-07-18 11:43:45 -04001/*
2 * Copyright 2019 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 "GrDawnRenderTarget.h"
9
10#include "include/gpu/GrBackendSurface.h"
11#include "src/gpu/dawn/GrDawnGpu.h"
12#include "src/gpu/dawn/GrDawnUtil.h"
13
14GrDawnRenderTarget::GrDawnRenderTarget(GrDawnGpu* gpu,
15 const GrSurfaceDesc& desc,
Brian Salomon27b4d8d2019-07-22 14:23:45 -040016 int sampleCnt,
Stephen White985741a2019-07-18 11:43:45 -040017 const GrDawnImageInfo& info,
18 GrBackendObjectOwnership ownership)
Brian Salomon27b4d8d2019-07-22 14:23:45 -040019 : GrSurface(gpu, desc, GrProtected::kNo)
20 , GrRenderTarget(gpu, desc, sampleCnt, GrProtected::kNo)
21 , fInfo(info) {
Stephen White985741a2019-07-18 11:43:45 -040022 this->registerWithCacheWrapped(GrWrapCacheable::kNo);
23}
24
25GrDawnRenderTarget*
26GrDawnRenderTarget::Create(GrDawnGpu* gpu,
27 const GrSurfaceDesc& desc,
Brian Salomon27b4d8d2019-07-22 14:23:45 -040028 int sampleCnt,
Stephen White985741a2019-07-18 11:43:45 -040029 const GrDawnImageInfo& info,
30 GrBackendObjectOwnership ownership) {
31 SkASSERT(1 == info.fLevelCount);
Brian Salomon27b4d8d2019-07-22 14:23:45 -040032 return new GrDawnRenderTarget(gpu, desc, sampleCnt, info, ownership);
Stephen White985741a2019-07-18 11:43:45 -040033}
34
35sk_sp<GrDawnRenderTarget>
36GrDawnRenderTarget::MakeWrapped(GrDawnGpu* gpu,
37 const GrSurfaceDesc& desc,
Brian Salomon27b4d8d2019-07-22 14:23:45 -040038 int sampleCnt,
Stephen White985741a2019-07-18 11:43:45 -040039 const GrDawnImageInfo& info) {
40 return sk_sp<GrDawnRenderTarget>(
Brian Salomon27b4d8d2019-07-22 14:23:45 -040041 GrDawnRenderTarget::Create(gpu, desc, sampleCnt, info,
Stephen White985741a2019-07-18 11:43:45 -040042 GrBackendObjectOwnership::kBorrowed));
43}
44
45bool GrDawnRenderTarget::completeStencilAttachment() {
46 return true;
47}
48
49GrDawnRenderTarget::~GrDawnRenderTarget() {
50}
51
52void GrDawnRenderTarget::onRelease() {
53 INHERITED::onRelease();
54}
55
56void GrDawnRenderTarget::onAbandon() {
57 INHERITED::onAbandon();
58}
59
60GrBackendRenderTarget GrDawnRenderTarget::getBackendRenderTarget() const {
61 return GrBackendRenderTarget(this->width(), this->height(), this->numSamples(),
62 this->numSamples(), fInfo);
63}
64
65GrBackendFormat GrDawnRenderTarget::backendFormat() const {
66 return GrBackendFormat::MakeDawn(fInfo.fFormat);
67}