diff options
Diffstat (limited to 'src/gpu')
-rw-r--r-- | src/gpu/GrOpFlushState.h | 6 | ||||
-rw-r--r-- | src/gpu/GrPipeline.cpp | 16 | ||||
-rw-r--r-- | src/gpu/GrPipeline.h | 14 | ||||
-rw-r--r-- | src/gpu/GrProcessor.cpp | 12 | ||||
-rw-r--r-- | src/gpu/GrProcessor.h | 6 | ||||
-rw-r--r-- | src/gpu/GrProgramDesc.cpp | 4 | ||||
-rw-r--r-- | src/gpu/GrRenderTargetContext.cpp | 36 | ||||
-rw-r--r-- | src/gpu/GrRenderTargetContext.h | 8 | ||||
-rw-r--r-- | src/gpu/GrRenderTargetOpList.cpp | 20 | ||||
-rw-r--r-- | src/gpu/GrRenderTargetOpList.h | 18 | ||||
-rw-r--r-- | src/gpu/GrXferProcessor.h | 44 | ||||
-rw-r--r-- | src/gpu/gl/GrGLProgram.cpp | 7 | ||||
-rw-r--r-- | src/gpu/glsl/GrGLSLProgramBuilder.cpp | 5 | ||||
-rw-r--r-- | src/gpu/instanced/InstancedOp.cpp | 3 | ||||
-rw-r--r-- | src/gpu/ops/GrDrawPathOp.cpp | 3 | ||||
-rw-r--r-- | src/gpu/ops/GrSimpleMeshDrawOpHelper.h | 3 | ||||
-rw-r--r-- | src/gpu/vk/GrVkGpuCommandBuffer.cpp | 3 | ||||
-rw-r--r-- | src/gpu/vk/GrVkPipelineState.cpp | 12 |
18 files changed, 109 insertions, 111 deletions
diff --git a/src/gpu/GrOpFlushState.h b/src/gpu/GrOpFlushState.h index 438a7bdf5a..0fc7b7f834 100644 --- a/src/gpu/GrOpFlushState.h +++ b/src/gpu/GrOpFlushState.h @@ -102,7 +102,7 @@ public: struct DrawOpArgs { GrRenderTarget* fRenderTarget; const GrAppliedClip* fAppliedClip; - GrXferProcessor::DstProxy fDstProxy; + GrXferProcessor::DstTexture fDstTexture; }; void setDrawOpArgs(DrawOpArgs* opArgs) { fOpArgs = opArgs; } @@ -224,8 +224,8 @@ public: const GrAppliedClip* clip() const { return this->state()->drawOpArgs().fAppliedClip; } - const GrXferProcessor::DstProxy& dstProxy() const { - return this->state()->drawOpArgs().fDstProxy; + const GrXferProcessor::DstTexture& dstTexture() const { + return this->state()->drawOpArgs().fDstTexture; } template <typename... Args> diff --git a/src/gpu/GrPipeline.cpp b/src/gpu/GrPipeline.cpp index 73ae9c659a..7c0338c77c 100644 --- a/src/gpu/GrPipeline.cpp +++ b/src/gpu/GrPipeline.cpp @@ -44,13 +44,9 @@ void GrPipeline::init(const InitArgs& args) { fXferProcessor = args.fProcessors->refXferProcessor(); - if (args.fDstProxy.proxy()) { - if (!args.fDstProxy.proxy()->instantiate(args.fResourceProvider)) { - this->markAsBad(); - } - - fDstTextureProxy.reset(args.fDstProxy.proxy()); - fDstTextureOffset = args.fDstProxy.offset(); + if (args.fDstTexture.texture()) { + fDstTexture.reset(args.fDstTexture.texture()); + fDstTextureOffset = args.fDstTexture.offset(); } // Copy GrFragmentProcessors from GrPipelineBuilder to Pipeline, possibly removing some of the @@ -95,7 +91,7 @@ static void add_dependencies_for_processor(const GrFragmentProcessor* proc, GrFragmentProcessor::TextureAccessIter iter(proc); while (const GrResourceIOProcessor::TextureSampler* sampler = iter.next()) { SkASSERT(rtp->getLastOpList()); - rtp->getLastOpList()->addDependency(sampler->proxy()); + rtp->getLastOpList()->addDependency(sampler->texture()); } } #endif @@ -108,8 +104,8 @@ void GrPipeline::addDependenciesTo(GrRenderTargetProxy* rtp) const { } #endif - if (fDstTextureProxy) { - SkASSERT(rtp->getLastOpList()); + if (fDstTexture) { + //SkASSERT(rtp->getLastOpList()); // MDB TODO: re-enable when TextureSamplers store texture proxies //rtp->getLastOpList()->addDependency(fDstTexture.get()); } diff --git a/src/gpu/GrPipeline.h b/src/gpu/GrPipeline.h index fa78f34629..67e137c82a 100644 --- a/src/gpu/GrPipeline.h +++ b/src/gpu/GrPipeline.h @@ -75,8 +75,7 @@ public: const GrAppliedClip* fAppliedClip = nullptr; GrRenderTarget* fRenderTarget = nullptr; const GrCaps* fCaps = nullptr; - GrResourceProvider* fResourceProvider = nullptr; - GrXferProcessor::DstProxy fDstProxy; + GrXferProcessor::DstTexture fDstTexture; }; /** @@ -158,11 +157,11 @@ public: * If the GrXferProcessor uses a texture to access the dst color, then this returns that * texture and the offset to the dst contents within that texture. */ - GrTextureProxy* dstTextureProxy(SkIPoint* offset = nullptr) const { + GrTexture* dstTexture(SkIPoint* offset = nullptr) const { if (offset) { *offset = fDstTextureOffset; } - return fDstTextureProxy.get(); + return fDstTexture.get(); } const GrFragmentProcessor& getColorFragmentProcessor(int idx) const { @@ -216,8 +215,7 @@ public: bool isBad() const { return SkToBool(fFlags & kIsBad_Flag); } GrXferBarrierType xferBarrierType(const GrCaps& caps) const { - if (fDstTextureProxy.get() && - fDstTextureProxy.get()->priv().peekTexture() == fRenderTarget.get()->asTexture()) { + if (fDstTexture.get() && fDstTexture.get() == fRenderTarget.get()->asTexture()) { return kTexture_GrXferBarrierType; } return this->getXferProcessor().xferBarrierType(caps); @@ -235,11 +233,11 @@ private: }; using RenderTarget = GrPendingIOResource<GrRenderTarget, kWrite_GrIOType>; - using DstTextureProxy = GrPendingIOResource<GrTextureProxy, kRead_GrIOType>; + using DstTexture = GrPendingIOResource<GrTexture, kRead_GrIOType>; using PendingFragmentProcessor = GrPendingProgramElement<const GrFragmentProcessor>; using FragmentProcessorArray = SkAutoSTArray<8, PendingFragmentProcessor>; - DstTextureProxy fDstTextureProxy; + DstTexture fDstTexture; SkIPoint fDstTextureOffset; RenderTarget fRenderTarget; GrScissorState fScissorState; diff --git a/src/gpu/GrProcessor.cpp b/src/gpu/GrProcessor.cpp index 4789e3ec4a..1533257bad 100644 --- a/src/gpu/GrProcessor.cpp +++ b/src/gpu/GrProcessor.cpp @@ -230,6 +230,18 @@ GrResourceIOProcessor::TextureSampler::TextureSampler(GrResourceProvider* resour this->reset(resourceProvider, std::move(proxy), filterMode, tileXAndY, visibility); } +// MDB TODO: remove this! +void GrResourceIOProcessor::TextureSampler::reset(GrTexture* texture, + GrSamplerParams::FilterMode filterMode, + SkShader::TileMode tileXAndY, + GrShaderFlags visibility) { + SkASSERT(texture); + fTexture.set(SkRef(texture), kRead_GrIOType); + filterMode = SkTMin(filterMode, texture->texturePriv().highestFilterMode()); + fParams.reset(tileXAndY, filterMode); + fVisibility = visibility; +} + void GrResourceIOProcessor::TextureSampler::reset(GrResourceProvider* resourceProvider, sk_sp<GrTextureProxy> proxy, const GrSamplerParams& params, diff --git a/src/gpu/GrProcessor.h b/src/gpu/GrProcessor.h index c1669ef753..027a34e334 100644 --- a/src/gpu/GrProcessor.h +++ b/src/gpu/GrProcessor.h @@ -222,6 +222,12 @@ public: */ TextureSampler(); + // MDB TODO: this is the last GrTexture-based reset call! + void reset(GrTexture*, + GrSamplerParams::FilterMode = GrSamplerParams::kNone_FilterMode, + SkShader::TileMode tileXAndY = SkShader::kClamp_TileMode, + GrShaderFlags visibility = kFragment_GrShaderFlag); + // MDB TODO: ultimately we shouldn't need the resource provider parameter TextureSampler(GrResourceProvider*, sk_sp<GrTextureProxy>, const GrSamplerParams&); explicit TextureSampler(GrResourceProvider*, sk_sp<GrTextureProxy>, diff --git a/src/gpu/GrProgramDesc.cpp b/src/gpu/GrProgramDesc.cpp index 8362e110c6..41993e190d 100644 --- a/src/gpu/GrProgramDesc.cpp +++ b/src/gpu/GrProgramDesc.cpp @@ -198,8 +198,8 @@ bool GrProgramDesc::Build(GrProgramDesc* desc, const GrXferProcessor& xp = pipeline.getXferProcessor(); const GrSurfaceOrigin* originIfDstTexture = nullptr; GrSurfaceOrigin origin; - if (pipeline.dstTextureProxy()) { - origin = pipeline.dstTextureProxy()->origin(); + if (pipeline.dstTexture()) { + origin = pipeline.dstTexture()->origin(); originIfDstTexture = &origin; } xp.getGLSLProcessorKey(shaderCaps, &b, originIfDstTexture); diff --git a/src/gpu/GrRenderTargetContext.cpp b/src/gpu/GrRenderTargetContext.cpp index 1c92d37316..0076812845 100644 --- a/src/gpu/GrRenderTargetContext.cpp +++ b/src/gpu/GrRenderTargetContext.cpp @@ -1598,15 +1598,15 @@ uint32_t GrRenderTargetContext::addDrawOp(const GrClip& clip, std::unique_ptr<Gr } } - GrXferProcessor::DstProxy dstProxy; + GrXferProcessor::DstTexture dstTexture; if (op->xpRequiresDstTexture(*this->caps(), &appliedClip)) { - if (!this->setupDstProxy(this->asRenderTargetProxy(), clip, op->bounds(), &dstProxy)) { + if (!this->setupDstTexture(fRenderTargetProxy.get(), clip, op->bounds(), &dstTexture)) { return SK_InvalidUniqueID; } } op->setClippedBounds(bounds); - return this->getOpList()->addOp(std::move(op), this, std::move(appliedClip), dstProxy); + return this->getOpList()->addOp(std::move(op), this, std::move(appliedClip), dstTexture); } uint32_t GrRenderTargetContext::addLegacyMeshDrawOp(GrPipelineBuilder&& pipelineBuilder, @@ -1656,10 +1656,9 @@ uint32_t GrRenderTargetContext::addLegacyMeshDrawOp(GrPipelineBuilder&& pipeline args.fAppliedClip = &appliedClip; args.fRenderTarget = rt; args.fCaps = this->caps(); - args.fResourceProvider = fContext->resourceProvider(); if (analysis.requiresDstTexture()) { - if (!this->setupDstProxy(this->asRenderTargetProxy(), clip, bounds, &args.fDstProxy)) { + if (!this->setupDstTexture(fRenderTargetProxy.get(), clip, bounds, &args.fDstTexture)) { return SK_InvalidUniqueID; } } @@ -1672,15 +1671,22 @@ uint32_t GrRenderTargetContext::addLegacyMeshDrawOp(GrPipelineBuilder&& pipeline return this->getOpList()->addOp(std::move(op), this); } -bool GrRenderTargetContext::setupDstProxy(GrRenderTargetProxy* rtProxy, const GrClip& clip, +bool GrRenderTargetContext::setupDstTexture(GrRenderTargetProxy* rtProxy, const GrClip& clip, const SkRect& opBounds, - GrXferProcessor::DstProxy* dstProxy) { + GrXferProcessor::DstTexture* dstTexture) { if (this->caps()->textureBarrierSupport()) { if (GrTextureProxy* texProxy = rtProxy->asTextureProxy()) { + // MDB TODO: remove this instantiation. Blocked on making DstTexture be proxy-based + sk_sp<GrTexture> tex(sk_ref_sp(texProxy->instantiate(fContext->resourceProvider()))); + if (!tex) { + SkDebugf("setupDstTexture: instantiation of src texture failed.\n"); + return false; // We have bigger problems now + } + // The render target is a texture, so we can read from it directly in the shader. The XP // will be responsible to detect this situation and request a texture barrier. - dstProxy->setProxy(sk_ref_sp(texProxy)); - dstProxy->setOffset(0, 0); + dstTexture->setTexture(std::move(tex)); + dstTexture->setOffset(0, 0); return true; } } @@ -1746,7 +1752,15 @@ bool GrRenderTargetContext::setupDstProxy(GrRenderTargetProxy* rtProxy, const Gr return false; } - dstProxy->setProxy(sContext->asTextureProxyRef()); - dstProxy->setOffset(dstOffset); + GrTextureProxy* copyProxy = sContext->asTextureProxy(); + // MDB TODO: remove this instantiation once DstTexture is proxy-backed + sk_sp<GrTexture> copy(sk_ref_sp(copyProxy->instantiate(fContext->resourceProvider()))); + if (!copy) { + SkDebugf("setupDstTexture: instantiation of copied texture failed.\n"); + return false; + } + + dstTexture->setTexture(std::move(copy)); + dstTexture->setOffset(dstOffset); return true; } diff --git a/src/gpu/GrRenderTargetContext.h b/src/gpu/GrRenderTargetContext.h index 2666d5c370..a749046d24 100644 --- a/src/gpu/GrRenderTargetContext.h +++ b/src/gpu/GrRenderTargetContext.h @@ -458,10 +458,10 @@ private: // Makes a copy of the proxy if it is necessary for the draw and places the texture that should // be used by GrXferProcessor to access the destination color in 'result'. If the return // value is false then a texture copy could not be made. - bool SK_WARN_UNUSED_RESULT setupDstProxy(GrRenderTargetProxy*, - const GrClip&, - const SkRect& opBounds, - GrXferProcessor::DstProxy* result); + bool SK_WARN_UNUSED_RESULT setupDstTexture(GrRenderTargetProxy*, + const GrClip&, + const SkRect& opBounds, + GrXferProcessor::DstTexture* result); GrRenderTargetOpList* getOpList(); diff --git a/src/gpu/GrRenderTargetOpList.cpp b/src/gpu/GrRenderTargetOpList.cpp index acd79b864e..fe87bdeef0 100644 --- a/src/gpu/GrRenderTargetOpList.cpp +++ b/src/gpu/GrRenderTargetOpList.cpp @@ -88,7 +88,7 @@ void GrRenderTargetOpList::prepareOps(GrOpFlushState* flushState) { opArgs = { fRecordedOps[i].fRenderTarget.get(), fRecordedOps[i].fAppliedClip, - fRecordedOps[i].fDstProxy + fRecordedOps[i].fDstTexture }; } flushState->setDrawOpArgs(&opArgs); @@ -167,7 +167,7 @@ bool GrRenderTargetOpList::executeOps(GrOpFlushState* flushState) { GrOpFlushState::DrawOpArgs opArgs { fRecordedOps[i].fRenderTarget.get(), fRecordedOps[i].fAppliedClip, - fRecordedOps[i].fDstProxy + fRecordedOps[i].fDstTexture }; flushState->setDrawOpArgs(&opArgs); @@ -273,7 +273,7 @@ static inline bool can_reorder(const SkRect& a, const SkRect& b) { return !GrRec bool GrRenderTargetOpList::combineIfPossible(const RecordedOp& a, GrOp* b, const GrAppliedClip* bClip, - const DstProxy* bDstProxy, + const DstTexture* bDstTexture, const GrCaps& caps) { if (a.fAppliedClip) { if (!bClip) { @@ -285,11 +285,11 @@ bool GrRenderTargetOpList::combineIfPossible(const RecordedOp& a, GrOp* b, } else if (bClip) { return false; } - if (bDstProxy) { - if (a.fDstProxy != *bDstProxy) { + if (bDstTexture) { + if (a.fDstTexture != *bDstTexture) { return false; } - } else if (a.fDstProxy.proxy()) { + } else if (a.fDstTexture.texture()) { return false; } return a.fOp->combineIfPossible(b, caps); @@ -298,7 +298,7 @@ bool GrRenderTargetOpList::combineIfPossible(const RecordedOp& a, GrOp* b, GrOp* GrRenderTargetOpList::recordOp(std::unique_ptr<GrOp> op, GrRenderTargetContext* renderTargetContext, GrAppliedClip* clip, - const DstProxy* dstProxy) { + const DstTexture* dstTexture) { GrRenderTarget* renderTarget = renderTargetContext->accessRenderTarget(); if (!renderTarget) { SkASSERT(false); @@ -345,7 +345,7 @@ GrOp* GrRenderTargetOpList::recordOp(std::unique_ptr<GrOp> op, candidate.fOp->uniqueID()); break; } - if (this->combineIfPossible(candidate, op.get(), clip, dstProxy, *caps)) { + if (this->combineIfPossible(candidate, op.get(), clip, dstTexture, *caps)) { GrOP_INFO("\t\tBackward: Combining with (%s, opID: %u)\n", candidate.fOp->name(), candidate.fOp->uniqueID()); GrOP_INFO("\t\t\tBackward: Combined op info:\n"); @@ -373,7 +373,7 @@ GrOp* GrRenderTargetOpList::recordOp(std::unique_ptr<GrOp> op, clip = fClipAllocator.make<GrAppliedClip>(std::move(*clip)); SkDEBUGCODE(fNumClips++;) } - fRecordedOps.emplace_back(std::move(op), renderTarget, clip, dstProxy); + fRecordedOps.emplace_back(std::move(op), renderTarget, clip, dstTexture); fRecordedOps.back().fOp->wasRecorded(this); fLastFullClearOp = nullptr; fLastFullClearResourceID.makeInvalid(); @@ -404,7 +404,7 @@ void GrRenderTargetOpList::forwardCombine(const GrCaps& caps) { break; } if (this->combineIfPossible(fRecordedOps[i], candidate.fOp.get(), - candidate.fAppliedClip, &candidate.fDstProxy, caps)) { + candidate.fAppliedClip, &candidate.fDstTexture, caps)) { GrOP_INFO("\t\tForward: Combining with (%s, opID: %u)\n", candidate.fOp->name(), candidate.fOp->uniqueID()); GR_AUDIT_TRAIL_OPS_RESULT_COMBINED(fAuditTrail, op, candidate.fOp.get()); diff --git a/src/gpu/GrRenderTargetOpList.h b/src/gpu/GrRenderTargetOpList.h index 9556bfb237..aa8c6c69f8 100644 --- a/src/gpu/GrRenderTargetOpList.h +++ b/src/gpu/GrRenderTargetOpList.h @@ -30,7 +30,7 @@ class GrRenderTargetProxy; class GrRenderTargetOpList final : public GrOpList { private: - using DstProxy = GrXferProcessor::DstProxy; + using DstTexture = GrXferProcessor::DstTexture; public: GrRenderTargetOpList(GrRenderTargetProxy*, GrGpu*, GrAuditTrail*); @@ -70,9 +70,9 @@ public: return this->uniqueID(); } uint32_t addOp(std::unique_ptr<GrOp> op, GrRenderTargetContext* renderTargetContext, - GrAppliedClip&& clip, const DstProxy& dstProxy) { + GrAppliedClip&& clip, const DstTexture& dstTexture) { this->recordOp(std::move(op), renderTargetContext, clip.doesClip() ? &clip : nullptr, - &dstProxy); + &dstTexture); return this->uniqueID(); } @@ -116,31 +116,31 @@ private: RecordedOp(std::unique_ptr<GrOp> op, GrRenderTarget* rt, const GrAppliedClip* appliedClip, - const DstProxy* dstProxy) + const DstTexture* dstTexture) : fOp(std::move(op)) , fRenderTarget(rt) , fAppliedClip(appliedClip) { - if (dstProxy) { - fDstProxy = *dstProxy; + if (dstTexture) { + fDstTexture = *dstTexture; } } std::unique_ptr<GrOp> fOp; // TODO: These ops will all to target the same render target and this won't be needed. GrPendingIOResource<GrRenderTarget, kWrite_GrIOType> fRenderTarget; - DstProxy fDstProxy; + DstTexture fDstTexture; const GrAppliedClip* fAppliedClip; }; // If the input op is combined with an earlier op, this returns the combined op. Otherwise, it // returns the input op. GrOp* recordOp(std::unique_ptr<GrOp>, GrRenderTargetContext*, GrAppliedClip* = nullptr, - const DstProxy* = nullptr); + const DstTexture* = nullptr); void forwardCombine(const GrCaps&); // If this returns true then b has been merged into a's op. bool combineIfPossible(const RecordedOp& a, GrOp* b, const GrAppliedClip* bClip, - const DstProxy* bDstTexture, const GrCaps&); + const DstTexture* bDstTexture, const GrCaps&); GrClearOp* fLastFullClearOp = nullptr; GrGpuResource::UniqueID fLastFullClearResourceID = GrGpuResource::UniqueID::InvalidID(); diff --git a/src/gpu/GrXferProcessor.h b/src/gpu/GrXferProcessor.h index a848a96d0a..a739c8b29e 100644 --- a/src/gpu/GrXferProcessor.h +++ b/src/gpu/GrXferProcessor.h @@ -55,55 +55,45 @@ public: * to the space of the texture. Depending on GPU capabilities a DstTexture may be used by a * GrXferProcessor for blending in the fragment shader. */ - class DstProxy { + class DstTexture { public: - DstProxy() { fOffset.set(0, 0); } + DstTexture() { fOffset.set(0, 0); } - DstProxy(const DstProxy& other) { + DstTexture(const DstTexture& other) { *this = other; } - DstProxy(sk_sp<GrTextureProxy> proxy, const SkIPoint& offset) - : fProxy(std::move(proxy)) { - if (fProxy) { - fOffset = offset; - } else { - fOffset.set(0, 0); - } - } + DstTexture(GrTexture* texture, const SkIPoint& offset) + : fTexture(SkSafeRef(texture)), fOffset(texture ? offset : SkIPoint{0, 0}) {} - DstProxy& operator=(const DstProxy& other) { - fProxy = other.fProxy; + DstTexture& operator=(const DstTexture& other) { + fTexture = other.fTexture; fOffset = other.fOffset; return *this; } - bool operator==(const DstProxy& that) const { - return fProxy == that.fProxy && fOffset == that.fOffset; + bool operator==(const DstTexture& that) const { + return fTexture == that.fTexture && fOffset == that.fOffset; } - bool operator!=(const DstProxy& that) const { return !(*this == that); } + bool operator!=(const DstTexture& that) const { return !(*this == that); } const SkIPoint& offset() const { return fOffset; } void setOffset(const SkIPoint& offset) { fOffset = offset; } void setOffset(int ox, int oy) { fOffset.set(ox, oy); } - GrTextureProxy* proxy() const { return fProxy.get(); } + GrTexture* texture() const { return fTexture.get(); } - void setProxy(sk_sp<GrTextureProxy> proxy) { - fProxy = std::move(proxy); - if (!fProxy) { + void setTexture(sk_sp<GrTexture> texture) { + fTexture = std::move(texture); + if (!fTexture) { fOffset = {0, 0}; } } - bool instantiate(GrResourceProvider* resourceProvider) { - return SkToBool(fProxy->instantiate(resourceProvider)); - } - private: - sk_sp<GrTextureProxy> fProxy; - SkIPoint fOffset; + sk_sp<GrTexture> fTexture; + SkIPoint fOffset; }; /** @@ -244,7 +234,7 @@ private: #endif class GrXPFactory { public: - typedef GrXferProcessor::DstProxy DstProxy; + typedef GrXferProcessor::DstTexture DstTexture; enum class AnalysisProperties : unsigned { kNone = 0x0, diff --git a/src/gpu/gl/GrGLProgram.cpp b/src/gpu/gl/GrGLProgram.cpp index 8277d6eb4e..ec08bf4634 100644 --- a/src/gpu/gl/GrGLProgram.cpp +++ b/src/gpu/gl/GrGLProgram.cpp @@ -92,12 +92,7 @@ void GrGLProgram::setData(const GrPrimitiveProcessor& primProc, const GrPipeline const GrXferProcessor& xp = pipeline.getXferProcessor(); SkIPoint offset; - GrTextureProxy* dstProxy = pipeline.dstTextureProxy(&offset); - GrTexture* dstTexture = nullptr; - if (dstProxy) { - dstTexture = dstProxy->priv().peekTexture(); - } - + GrTexture* dstTexture = pipeline.dstTexture(&offset); fXferProcessor->setData(fProgramDataManager, xp, dstTexture, offset); if (dstTexture) { fGpu->bindTexture(nextTexSamplerIdx++, GrSamplerParams::ClampNoFilter(), true, diff --git a/src/gpu/glsl/GrGLSLProgramBuilder.cpp b/src/gpu/glsl/GrGLSLProgramBuilder.cpp index 2a895125e8..96b3359d4e 100644 --- a/src/gpu/glsl/GrGLSLProgramBuilder.cpp +++ b/src/gpu/glsl/GrGLSLProgramBuilder.cpp @@ -237,10 +237,7 @@ void GrGLSLProgramBuilder::emitAndInstallXferProc(const SkString& colorIn, SamplerHandle dstTextureSamplerHandle; GrSurfaceOrigin dstTextureOrigin = kTopLeft_GrSurfaceOrigin; - - if (GrTextureProxy* dstTextureProxy = fPipeline.dstTextureProxy()) { - GrTexture* dstTexture = dstTextureProxy->priv().peekTexture(); - + if (GrTexture* dstTexture = fPipeline.dstTexture()) { // GrProcessor::TextureSampler sampler(dstTexture); SkString name("DstTextureSampler"); dstTextureSamplerHandle = diff --git a/src/gpu/instanced/InstancedOp.cpp b/src/gpu/instanced/InstancedOp.cpp index f0f1cc0d2d..83a10da410 100644 --- a/src/gpu/instanced/InstancedOp.cpp +++ b/src/gpu/instanced/InstancedOp.cpp @@ -229,7 +229,6 @@ void InstancedOp::onExecute(GrOpFlushState* state) { GrPipeline::InitArgs args; args.fAppliedClip = state->drawOpArgs().fAppliedClip; args.fCaps = &state->caps(); - args.fResourceProvider = state->resourceProvider(); args.fProcessors = &fProcessors; args.fFlags = GrAATypeIsHW(fInfo.aaType()) ? GrPipeline::kHWAntialias_Flag : 0; if (fAllowsSRGBInputs) { @@ -239,7 +238,7 @@ void InstancedOp::onExecute(GrOpFlushState* state) { args.fFlags |= GrPipeline::kDisableOutputConversionToSRGB_Flag; } args.fRenderTarget = state->drawOpArgs().fRenderTarget; - args.fDstProxy = state->drawOpArgs().fDstProxy; + args.fDstTexture = state->drawOpArgs().fDstTexture; pipeline.init(args); if (GrXferBarrierType barrierType = pipeline.xferBarrierType(*state->gpu()->caps())) { diff --git a/src/gpu/ops/GrDrawPathOp.cpp b/src/gpu/ops/GrDrawPathOp.cpp index c33af39365..ccb12bfe9c 100644 --- a/src/gpu/ops/GrDrawPathOp.cpp +++ b/src/gpu/ops/GrDrawPathOp.cpp @@ -48,8 +48,7 @@ void GrDrawPathOpBase::initPipeline(const GrOpFlushState& state, GrPipeline* pip args.fAppliedClip = state.drawOpArgs().fAppliedClip; args.fRenderTarget = state.drawOpArgs().fRenderTarget; args.fCaps = &state.caps(); - args.fResourceProvider = state.resourceProvider(); - args.fDstProxy = state.drawOpArgs().fDstProxy; + args.fDstTexture = state.drawOpArgs().fDstTexture; return pipeline->init(args); } diff --git a/src/gpu/ops/GrSimpleMeshDrawOpHelper.h b/src/gpu/ops/GrSimpleMeshDrawOpHelper.h index c230257c1c..427543bc98 100644 --- a/src/gpu/ops/GrSimpleMeshDrawOpHelper.h +++ b/src/gpu/ops/GrSimpleMeshDrawOpHelper.h @@ -137,9 +137,8 @@ protected: args.fProcessors = &this->processors(); args.fRenderTarget = target->renderTarget(); args.fAppliedClip = target->clip(); - args.fDstProxy = target->dstProxy(); + args.fDstTexture = target->dstTexture(); args.fCaps = &target->caps(); - args.fResourceProvider = target->resourceProvider(); return args; } diff --git a/src/gpu/vk/GrVkGpuCommandBuffer.cpp b/src/gpu/vk/GrVkGpuCommandBuffer.cpp index b3aa7c001a..124802d3b2 100644 --- a/src/gpu/vk/GrVkGpuCommandBuffer.cpp +++ b/src/gpu/vk/GrVkGpuCommandBuffer.cpp @@ -533,8 +533,7 @@ void GrVkGpuCommandBuffer::onDraw(const GrPipeline& pipeline, while (const GrFragmentProcessor* fp = iter.next()) { prepare_sampled_images(*fp, fGpu); } - if (GrTextureProxy* dstTextureProxy = pipeline.dstTextureProxy()) { - GrVkTexture* dstTexture = static_cast<GrVkTexture*>(dstTextureProxy->priv().peekTexture()); + if (GrVkTexture* dstTexture = static_cast<GrVkTexture*>(pipeline.dstTexture())) { set_texture_layout(dstTexture, fGpu); } diff --git a/src/gpu/vk/GrVkPipelineState.cpp b/src/gpu/vk/GrVkPipelineState.cpp index 3948fa87d2..c4d723f9c2 100644 --- a/src/gpu/vk/GrVkPipelineState.cpp +++ b/src/gpu/vk/GrVkPipelineState.cpp @@ -7,7 +7,6 @@ #include "GrVkPipelineState.h" -#include "GrContext.h" #include "GrPipeline.h" #include "GrTexturePriv.h" #include "GrVkBufferView.h" @@ -259,17 +258,12 @@ void GrVkPipelineState::setData(GrVkGpu* gpu, SkASSERT(!fp && !glslFP); SkIPoint offset; - GrTextureProxy* dstTextureProxy = nullptr; - GrTexture* dstTexture = nullptr; - if (dstTextureProxy = pipeline.dstTextureProxy(&offset)) { - dstTexture = dstTextureProxy->priv().peekTexture(); - } - + GrTexture* dstTexture = pipeline.dstTexture(&offset); fXferProcessor->setData(fDataManager, pipeline.getXferProcessor(), dstTexture, offset); GrResourceIOProcessor::TextureSampler dstTextureSampler; - if (dstTextureProxy) { + if (dstTexture) { // MDB TODO: this is the last usage of a GrTexture-based TextureSampler reset method - dstTextureSampler.reset(gpu->getContext()->resourceProvider(), sk_ref_sp(dstTextureProxy)); + dstTextureSampler.reset(dstTexture); textureBindings.push_back(&dstTextureSampler); } |