123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- /*
- * 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 "src/gpu/GrTextureContext.h"
- #include "src/gpu/GrAuditTrail.h"
- #include "src/gpu/GrContextPriv.h"
- #include "src/gpu/GrDrawingManager.h"
- #include "src/gpu/GrTextureOpList.h"
- #define ASSERT_SINGLE_OWNER \
- SkDEBUGCODE(GrSingleOwner::AutoEnforce debug_SingleOwner(this->singleOwner());)
- #define RETURN_FALSE_IF_ABANDONED if (this->drawingManager()->wasAbandoned()) { return false; }
- GrTextureContext::GrTextureContext(GrRecordingContext* context,
- sk_sp<GrTextureProxy> textureProxy,
- GrColorType colorType,
- SkAlphaType alphaType,
- sk_sp<SkColorSpace> colorSpace)
- : GrSurfaceContext(context, colorType, alphaType, std::move(colorSpace))
- , fTextureProxy(std::move(textureProxy))
- , fOpList(sk_ref_sp(fTextureProxy->getLastTextureOpList())) {
- SkDEBUGCODE(this->validate();)
- }
- #ifdef SK_DEBUG
- void GrTextureContext::validate() const {
- SkASSERT(fTextureProxy);
- fTextureProxy->validate(fContext);
- if (fOpList && !fOpList->isClosed()) {
- SkASSERT(fTextureProxy->getLastOpList() == fOpList.get());
- }
- }
- #endif
- GrTextureContext::~GrTextureContext() {
- ASSERT_SINGLE_OWNER
- }
- GrRenderTargetProxy* GrTextureContext::asRenderTargetProxy() {
- // If the proxy can return an RTProxy it should've been wrapped in a RTContext
- SkASSERT(!fTextureProxy->asRenderTargetProxy());
- return nullptr;
- }
- sk_sp<GrRenderTargetProxy> GrTextureContext::asRenderTargetProxyRef() {
- // If the proxy can return an RTProxy it should've been wrapped in a RTContext
- SkASSERT(!fTextureProxy->asRenderTargetProxy());
- return nullptr;
- }
- GrOpList* GrTextureContext::getOpList() {
- ASSERT_SINGLE_OWNER
- SkDEBUGCODE(this->validate();)
- if (!fOpList || fOpList->isClosed()) {
- fOpList = this->drawingManager()->newTextureOpList(fTextureProxy);
- }
- return fOpList.get();
- }
|