Migrate SkImage::flush methods to GrDirectContext
Flag landed in Chrome CL 2310889. Bug: skia:104662 Change-Id: I616c7e6cd16104132bb0764c6d786a5cbeb4dd47 Reviewed-on: https://skia-review.googlesource.com/c/skia/+/304797 Commit-Queue: Adlai Holler <adlai@google.com> Commit-Queue: Brian Salomon <bsalomon@google.com> Auto-Submit: Adlai Holler <adlai@google.com> Reviewed-by: Brian Salomon <bsalomon@google.com> Reviewed-by: Robert Phillips <robertphillips@google.com>
This commit is contained in:
parent
e40ced7d9a
commit
40ad5fd50a
@ -860,24 +860,30 @@ public:
|
|||||||
bool isValid(GrRecordingContext* context) const;
|
bool isValid(GrRecordingContext* context) const;
|
||||||
|
|
||||||
/** Flushes any pending uses of texture-backed images in the GPU backend. If the image is not
|
/** Flushes any pending uses of texture-backed images in the GPU backend. If the image is not
|
||||||
texture-backed (including promise texture images) or if the the GrContext does not
|
texture-backed (including promise texture images) or if the GrDirectContext does not
|
||||||
have the same context ID as the context backing the image then this is a no-op.
|
have the same context ID as the context backing the image then this is a no-op.
|
||||||
|
|
||||||
If the image was not used in any non-culled draws recorded on the passed GrContext then
|
If the image was not used in any non-culled draws in the current queue of work for the
|
||||||
this is a no-op unless the GrFlushInfo contains semaphores or a finish proc. Those are
|
passed GrDirectContext then this is a no-op unless the GrFlushInfo contains semaphores or
|
||||||
respected even when the image has not been used.
|
a finish proc. Those are respected even when the image has not been used.
|
||||||
|
|
||||||
@param context the context on which to flush pending usages of the image.
|
@param context the context on which to flush pending usages of the image.
|
||||||
@param info flush options
|
@param info flush options
|
||||||
*/
|
*/
|
||||||
GrSemaphoresSubmitted flush(GrContext* context, const GrFlushInfo& flushInfo);
|
GrSemaphoresSubmitted flush(GrDirectContext* context, const GrFlushInfo& flushInfo);
|
||||||
|
|
||||||
void flush(GrContext* context) { this->flush(context, {}); }
|
void flush(GrDirectContext* context) { this->flush(context, {}); }
|
||||||
|
|
||||||
/** Version of flush() that uses a default GrFlushInfo. Also submits the flushed work to the
|
/** Version of flush() that uses a default GrFlushInfo. Also submits the flushed work to the
|
||||||
GPU.
|
GPU.
|
||||||
*/
|
*/
|
||||||
|
void flushAndSubmit(GrDirectContext*);
|
||||||
|
|
||||||
|
#ifdef SK_IMAGE_FLUSH_LEGACY_API
|
||||||
|
GrSemaphoresSubmitted flush(GrContext* context, const GrFlushInfo& flushInfo);
|
||||||
|
void flush(GrContext* context) { this->flush(context, {}); }
|
||||||
void flushAndSubmit(GrContext*);
|
void flushAndSubmit(GrContext*);
|
||||||
|
#endif
|
||||||
|
|
||||||
/** Retrieves the back-end texture. If SkImage has no back-end texture, an invalid
|
/** Retrieves the back-end texture. If SkImage has no back-end texture, an invalid
|
||||||
object is returned. Call GrBackendTexture::isValid to determine if the result
|
object is returned. Call GrBackendTexture::isValid to determine if the result
|
||||||
|
@ -214,14 +214,24 @@ bool SkImage::isValid(GrRecordingContext* rContext) const {
|
|||||||
return as_IB(this)->onIsValid(rContext);
|
return as_IB(this)->onIsValid(rContext);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
GrSemaphoresSubmitted SkImage::flush(GrDirectContext* dContext, const GrFlushInfo& flushInfo) {
|
||||||
|
return as_IB(this)->onFlush(dContext, flushInfo);
|
||||||
|
}
|
||||||
|
|
||||||
|
void SkImage::flushAndSubmit(GrDirectContext* dContext) {
|
||||||
|
this->flush(dContext, {});
|
||||||
|
dContext->submit();
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef SK_IMAGE_FLUSH_LEGACY_API
|
||||||
GrSemaphoresSubmitted SkImage::flush(GrContext* context, const GrFlushInfo& flushInfo) {
|
GrSemaphoresSubmitted SkImage::flush(GrContext* context, const GrFlushInfo& flushInfo) {
|
||||||
return as_IB(this)->onFlush(context, flushInfo);
|
return this->flush(GrAsDirectContext(context), flushInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SkImage::flushAndSubmit(GrContext* context) {
|
void SkImage::flushAndSubmit(GrContext* context) {
|
||||||
this->flush(context, {});
|
this->flushAndSubmit(GrAsDirectContext(context));
|
||||||
context->submit();
|
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
@ -239,11 +249,19 @@ bool SkImage::isValid(GrRecordingContext* rContext) const {
|
|||||||
return as_IB(this)->onIsValid(nullptr);
|
return as_IB(this)->onIsValid(nullptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
GrSemaphoresSubmitted SkImage::flush(GrDirectContext*, const GrFlushInfo&) {
|
||||||
|
return GrSemaphoresSubmitted::kNo;
|
||||||
|
}
|
||||||
|
|
||||||
|
void SkImage::flushAndSubmit(GrDirectContext*) {}
|
||||||
|
|
||||||
|
#ifdef SK_IMAGE_FLUSH_LEGACY_API
|
||||||
GrSemaphoresSubmitted SkImage::flush(GrContext*, const GrFlushInfo&) {
|
GrSemaphoresSubmitted SkImage::flush(GrContext*, const GrFlushInfo&) {
|
||||||
return GrSemaphoresSubmitted::kNo;
|
return GrSemaphoresSubmitted::kNo;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SkImage::flushAndSubmit(GrContext*) {}
|
void SkImage::flushAndSubmit(GrContext*) {}
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -77,7 +77,7 @@ public:
|
|||||||
virtual GrContext* context() const { return nullptr; }
|
virtual GrContext* context() const { return nullptr; }
|
||||||
|
|
||||||
#if SK_SUPPORT_GPU
|
#if SK_SUPPORT_GPU
|
||||||
virtual GrSemaphoresSubmitted onFlush(GrContext* context, const GrFlushInfo&) {
|
virtual GrSemaphoresSubmitted onFlush(GrDirectContext*, const GrFlushInfo&) {
|
||||||
return GrSemaphoresSubmitted::kNo;
|
return GrSemaphoresSubmitted::kNo;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -65,8 +65,8 @@ SkImage_Gpu::SkImage_Gpu(sk_sp<GrContext> context, uint32_t uniqueID, GrSurfaceP
|
|||||||
|
|
||||||
SkImage_Gpu::~SkImage_Gpu() {}
|
SkImage_Gpu::~SkImage_Gpu() {}
|
||||||
|
|
||||||
GrSemaphoresSubmitted SkImage_Gpu::onFlush(GrContext* context, const GrFlushInfo& info) {
|
GrSemaphoresSubmitted SkImage_Gpu::onFlush(GrDirectContext* dContext, const GrFlushInfo& info) {
|
||||||
if (!context || !fContext->priv().matches(context) || fContext->abandoned()) {
|
if (!fContext->priv().matches(dContext) || dContext->abandoned()) {
|
||||||
if (info.fSubmittedProc) {
|
if (info.fSubmittedProc) {
|
||||||
info.fSubmittedProc(info.fSubmittedContext, false);
|
info.fSubmittedProc(info.fSubmittedContext, false);
|
||||||
}
|
}
|
||||||
@ -77,7 +77,7 @@ GrSemaphoresSubmitted SkImage_Gpu::onFlush(GrContext* context, const GrFlushInfo
|
|||||||
}
|
}
|
||||||
|
|
||||||
GrSurfaceProxy* p[1] = {fView.proxy()};
|
GrSurfaceProxy* p[1] = {fView.proxy()};
|
||||||
return context->priv().flushSurfaces(p, 1, info);
|
return dContext->priv().flushSurfaces(p, 1, info);
|
||||||
}
|
}
|
||||||
|
|
||||||
sk_sp<SkImage> SkImage_Gpu::onMakeColorTypeAndColorSpace(SkColorType targetCT,
|
sk_sp<SkImage> SkImage_Gpu::onMakeColorTypeAndColorSpace(SkColorType targetCT,
|
||||||
|
@ -27,7 +27,7 @@ public:
|
|||||||
sk_sp<SkColorSpace>);
|
sk_sp<SkColorSpace>);
|
||||||
~SkImage_Gpu() override;
|
~SkImage_Gpu() override;
|
||||||
|
|
||||||
GrSemaphoresSubmitted onFlush(GrContext*, const GrFlushInfo&) override;
|
GrSemaphoresSubmitted onFlush(GrDirectContext*, const GrFlushInfo&) override;
|
||||||
|
|
||||||
GrTextureProxy* peekProxy() const override {
|
GrTextureProxy* peekProxy() const override {
|
||||||
return fView.asTextureProxy();
|
return fView.asTextureProxy();
|
||||||
|
@ -122,8 +122,8 @@ bool SkImage_GpuYUVA::setupMipmapsForPlanes(GrRecordingContext* context) const {
|
|||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
GrSemaphoresSubmitted SkImage_GpuYUVA::onFlush(GrContext* context, const GrFlushInfo& info) {
|
GrSemaphoresSubmitted SkImage_GpuYUVA::onFlush(GrDirectContext* dContext, const GrFlushInfo& info) {
|
||||||
if (!context || !fContext->priv().matches(context) || fContext->abandoned()) {
|
if (!fContext->priv().matches(dContext) || dContext->abandoned()) {
|
||||||
if (info.fSubmittedProc) {
|
if (info.fSubmittedProc) {
|
||||||
info.fSubmittedProc(info.fSubmittedContext, false);
|
info.fSubmittedProc(info.fSubmittedContext, false);
|
||||||
}
|
}
|
||||||
@ -143,7 +143,7 @@ GrSemaphoresSubmitted SkImage_GpuYUVA::onFlush(GrContext* context, const GrFlush
|
|||||||
proxies[0] = fRGBView.proxy();
|
proxies[0] = fRGBView.proxy();
|
||||||
numProxies = 1;
|
numProxies = 1;
|
||||||
}
|
}
|
||||||
return context->priv().flushSurfaces(proxies, numProxies, info);
|
return dContext->priv().flushSurfaces(proxies, numProxies, info);
|
||||||
}
|
}
|
||||||
|
|
||||||
GrTextureProxy* SkImage_GpuYUVA::peekProxy() const { return fRGBView.asTextureProxy(); }
|
GrTextureProxy* SkImage_GpuYUVA::peekProxy() const { return fRGBView.asTextureProxy(); }
|
||||||
|
@ -34,7 +34,7 @@ public:
|
|||||||
GrSurfaceOrigin,
|
GrSurfaceOrigin,
|
||||||
sk_sp<SkColorSpace>);
|
sk_sp<SkColorSpace>);
|
||||||
|
|
||||||
GrSemaphoresSubmitted onFlush(GrContext*, const GrFlushInfo&) override;
|
GrSemaphoresSubmitted onFlush(GrDirectContext*, const GrFlushInfo&) override;
|
||||||
|
|
||||||
// This returns the single backing proxy if the YUV channels have already been flattened but
|
// This returns the single backing proxy if the YUV channels have already been flattened but
|
||||||
// nullptr if they have not.
|
// nullptr if they have not.
|
||||||
|
Loading…
Reference in New Issue
Block a user