145580d3e3024c1536e8e1b2017b704805442b634Brian Osman/* 245580d3e3024c1536e8e1b2017b704805442b634Brian Osman * Copyright 2016 Google Inc. 345580d3e3024c1536e8e1b2017b704805442b634Brian Osman * 445580d3e3024c1536e8e1b2017b704805442b634Brian Osman * Use of this source code is governed by a BSD-style license that can be 545580d3e3024c1536e8e1b2017b704805442b634Brian Osman * found in the LICENSE file. 645580d3e3024c1536e8e1b2017b704805442b634Brian Osman */ 745580d3e3024c1536e8e1b2017b704805442b634Brian Osman 845580d3e3024c1536e8e1b2017b704805442b634Brian Osman#ifndef GrTextureContext_DEFINED 945580d3e3024c1536e8e1b2017b704805442b634Brian Osman#define GrTextureContext_DEFINED 1045580d3e3024c1536e8e1b2017b704805442b634Brian Osman 1145580d3e3024c1536e8e1b2017b704805442b634Brian Osman#include "GrSurfaceContext.h" 1245580d3e3024c1536e8e1b2017b704805442b634Brian Osman#include "../private/GrTextureProxy.h" 1345580d3e3024c1536e8e1b2017b704805442b634Brian Osman 1445580d3e3024c1536e8e1b2017b704805442b634Brian Osmanclass GrContext; 1545580d3e3024c1536e8e1b2017b704805442b634Brian Osmanclass GrDrawingManager; 1645580d3e3024c1536e8e1b2017b704805442b634Brian Osmanclass GrSurface; 1745580d3e3024c1536e8e1b2017b704805442b634Brian Osmanclass GrTextureOpList; 1845580d3e3024c1536e8e1b2017b704805442b634Brian Osmanclass GrTextureProxy; 1945580d3e3024c1536e8e1b2017b704805442b634Brian Osmanstruct SkIPoint; 2045580d3e3024c1536e8e1b2017b704805442b634Brian Osmanstruct SkIRect; 2145580d3e3024c1536e8e1b2017b704805442b634Brian Osman 2245580d3e3024c1536e8e1b2017b704805442b634Brian Osman/** 2345580d3e3024c1536e8e1b2017b704805442b634Brian Osman * A helper object to orchestrate commands (currently just copies) for GrSurfaces that are 2445580d3e3024c1536e8e1b2017b704805442b634Brian Osman * GrTextures and not GrRenderTargets. 2545580d3e3024c1536e8e1b2017b704805442b634Brian Osman */ 2645580d3e3024c1536e8e1b2017b704805442b634Brian Osmanclass SK_API GrTextureContext : public GrSurfaceContext { 2745580d3e3024c1536e8e1b2017b704805442b634Brian Osmanpublic: 2845580d3e3024c1536e8e1b2017b704805442b634Brian Osman ~GrTextureContext() override; 2945580d3e3024c1536e8e1b2017b704805442b634Brian Osman 30f200a90f3e58ce20753420cadced850d7d00dca1Robert Phillips GrSurfaceProxy* asSurfaceProxy() override { return fTextureProxy.get(); } 31f200a90f3e58ce20753420cadced850d7d00dca1Robert Phillips const GrSurfaceProxy* asSurfaceProxy() const override { return fTextureProxy.get(); } 32f200a90f3e58ce20753420cadced850d7d00dca1Robert Phillips sk_sp<GrSurfaceProxy> asSurfaceProxyRef() override { return fTextureProxy; } 33f200a90f3e58ce20753420cadced850d7d00dca1Robert Phillips 34f200a90f3e58ce20753420cadced850d7d00dca1Robert Phillips GrTextureProxy* asTextureProxy() override { return fTextureProxy.get(); } 35e252f08982b0c747cd4d34c00ce413ab1005e99aGreg Daniel const GrTextureProxy* asTextureProxy() const override { return fTextureProxy.get(); } 36f200a90f3e58ce20753420cadced850d7d00dca1Robert Phillips sk_sp<GrTextureProxy> asTextureProxyRef() override { return fTextureProxy; } 37f200a90f3e58ce20753420cadced850d7d00dca1Robert Phillips 38f200a90f3e58ce20753420cadced850d7d00dca1Robert Phillips GrRenderTargetProxy* asRenderTargetProxy() override; 39f200a90f3e58ce20753420cadced850d7d00dca1Robert Phillips sk_sp<GrRenderTargetProxy> asRenderTargetProxyRef() override; 402734136b68cfb5fbde5a5929a203d5e26f4afc25Robert Phillips 4145580d3e3024c1536e8e1b2017b704805442b634Brian Osmanprotected: 422c86249465c28a532c8be55b6ba497021e3110ecRobert Phillips GrTextureContext(GrContext*, GrDrawingManager*, sk_sp<GrTextureProxy>, 432c86249465c28a532c8be55b6ba497021e3110ecRobert Phillips sk_sp<SkColorSpace>, GrAuditTrail*, GrSingleOwner*); 4445580d3e3024c1536e8e1b2017b704805442b634Brian Osman 452de8cfadc34cd92a6f99659fa565c137b386fa5fRobert Phillips SkDEBUGCODE(void validate() const override;) 4645580d3e3024c1536e8e1b2017b704805442b634Brian Osman 4745580d3e3024c1536e8e1b2017b704805442b634Brian Osmanprivate: 4845580d3e3024c1536e8e1b2017b704805442b634Brian Osman friend class GrDrawingManager; // for ctor 4945580d3e3024c1536e8e1b2017b704805442b634Brian Osman 502de8cfadc34cd92a6f99659fa565c137b386fa5fRobert Phillips GrOpList* getOpList() override; 5145580d3e3024c1536e8e1b2017b704805442b634Brian Osman 5245580d3e3024c1536e8e1b2017b704805442b634Brian Osman sk_sp<GrTextureProxy> fTextureProxy; 5345580d3e3024c1536e8e1b2017b704805442b634Brian Osman 5445580d3e3024c1536e8e1b2017b704805442b634Brian Osman // In MDB-mode the GrOpList can be closed by some other renderTargetContext that has picked 5545580d3e3024c1536e8e1b2017b704805442b634Brian Osman // it up. For this reason, the GrOpList should only ever be accessed via 'getOpList'. 56dc83b892a0ae431c5fe123a7e6873d63264bd64cRobert Phillips sk_sp<GrTextureOpList> fOpList; 57e2f7d1899d890c2f08571e1bd6c7fa2c5ea1be0bRobert Phillips 58e2f7d1899d890c2f08571e1bd6c7fa2c5ea1be0bRobert Phillips typedef GrSurfaceContext INHERITED; 5945580d3e3024c1536e8e1b2017b704805442b634Brian Osman}; 6045580d3e3024c1536e8e1b2017b704805442b634Brian Osman 6145580d3e3024c1536e8e1b2017b704805442b634Brian Osman#endif 62