Revert "Reuse GrTexture instances when the same GrBackendTexture is used to"
This reverts commit 559c617137517ece202d0f7cdb6b1cd0a715cf2e.
Reason for revert: breaking things
Original change's description:
> Reuse GrTexture instances when the same GrBackendTexture is used to
> repeatedly fulfill a promise SkImage.
>
> Bug: skia:8613
>
> Change-Id: I35c76435d630d2daa034e0c3efb59666bfd6882a
> Reviewed-on: https://skia-review.googlesource.com/c/175820
> Commit-Queue: Brian Salomon <bsalomon@google.com>
> Reviewed-by: Robert Phillips <robertphillips@google.com>
TBR=bsalomon@google.com,robertphillips@google.com
Change-Id: I7548809945d0a875fdb9387398bbc45e733c0846
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: skia:8613
Reviewed-on: https://skia-review.googlesource.com/c/182960
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
diff --git a/tools/DDLPromiseImageHelper.h b/tools/DDLPromiseImageHelper.h
index f8627aa..7a636ce 100644
--- a/tools/DDLPromiseImageHelper.h
+++ b/tools/DDLPromiseImageHelper.h
@@ -8,17 +8,16 @@
#ifndef PromiseImageHelper_DEFINED
#define PromiseImageHelper_DEFINED
-#include "GrBackendSurface.h"
#include "SkBitmap.h"
-#include "SkCachedData.h"
-#include "SkDeferredDisplayListRecorder.h"
-#include "SkPromiseImageTexture.h"
#include "SkTArray.h"
-#include "SkTLazy.h"
+
+#include "GrBackendSurface.h"
+#include "SkCachedData.h"
#include "SkYUVAIndex.h"
#include "SkYUVASizeInfo.h"
class GrContext;
+class SkDeferredDisplayListRecorder;
class SkImage;
class SkPicture;
struct SkYUVAIndex;
@@ -55,10 +54,6 @@
void uploadAllToGPU(GrContext* context);
- // Change the backing store texture for half the images. (Must ensure all fulfilled images are
- // released before calling this.).
- void replaceEveryOtherPromiseTexture(GrContext*);
-
// reinflate a deflated SKP, replacing all the indices with promise images.
sk_sp<SkPicture> reinflateSKP(SkDeferredDisplayListRecorder*,
SkData* compressedPicture,
@@ -81,37 +76,16 @@
~PromiseImageCallbackContext();
- void setBackendTexture(const GrBackendTexture& backendTexture);
-
- void fulfill() {
- SkASSERT(fUnreleasedFulfills >= 0);
- ++fUnreleasedFulfills;
- ++fTotalFulfills;
+ void setBackendTexture(const GrBackendTexture& backendTexture) {
+ SkASSERT(!fBackendTexture.isValid());
+ fBackendTexture = backendTexture;
}
- void release() {
- SkASSERT(fUnreleasedFulfills > 0);
- --fUnreleasedFulfills;
- ++fTotalReleases;
- }
-
- void done() {
- ++fDoneCnt;
- SkASSERT(fDoneCnt <= fNumImages);
- }
-
- void wasAddedToImage() { fNumImages++; }
-
- SkPromiseImageTexture* promiseImageTexture() { return &fPromiseImageTexture; }
+ const GrBackendTexture& backendTexture() const { return fBackendTexture; }
private:
- GrContext* fContext;
- SkPromiseImageTexture fPromiseImageTexture;
- int fNumImages = 0;
- int fTotalFulfills = 0;
- int fTotalReleases = 0;
- int fUnreleasedFulfills = 0;
- int fDoneCnt = 0;
+ GrContext* fContext;
+ GrBackendTexture fBackendTexture;
typedef SkRefCnt INHERITED;
};
@@ -160,7 +134,7 @@
SkASSERT(index >= 0 && index < (this->isYUV() ? SkYUVASizeInfo::kMaxCount : 1));
fCallbackContexts[index] = callbackContext;
}
- PromiseImageCallbackContext* callbackContext(int index) const {
+ PromiseImageCallbackContext* callbackContext(int index) {
SkASSERT(index >= 0 && index < (this->isYUV() ? SkYUVASizeInfo::kMaxCount : 1));
return fCallbackContexts[index].get();
}
@@ -171,7 +145,7 @@
const GrBackendTexture& backendTexture(int index) const {
SkASSERT(index >= 0 && index < (this->isYUV() ? SkYUVASizeInfo::kMaxCount : 1));
- return fCallbackContexts[index]->promiseImageTexture()->backendTexture();
+ return fCallbackContexts[index]->backendTexture();
}
void setNormalBitmap(const SkBitmap& bm) { fBitmap = bm; }
@@ -216,24 +190,21 @@
SkTArray<sk_sp<SkImage>>* fPromiseImages;
};
- static SkPromiseImageTexture* PromiseImageFulfillProc(void* textureContext) {
+ static void PromiseImageFulfillProc(void* textureContext, GrBackendTexture* outTexture) {
auto callbackContext = static_cast<PromiseImageCallbackContext*>(textureContext);
- SkASSERT(callbackContext->promiseImageTexture()->isValid());
- callbackContext->fulfill();
- return callbackContext->promiseImageTexture();
+ SkASSERT(callbackContext->backendTexture().isValid());
+ *outTexture = callbackContext->backendTexture();
}
- static void PromiseImageReleaseProc(void* textureContext,
- const SkPromiseImageTexture* texture) {
+ static void PromiseImageReleaseProc(void* textureContext) {
+#ifdef SK_DEBUG
auto callbackContext = static_cast<PromiseImageCallbackContext*>(textureContext);
- callbackContext->release();
- SkASSERT(texture == callbackContext->promiseImageTexture());
- SkASSERT(callbackContext->promiseImageTexture()->isValid());
+ SkASSERT(callbackContext->backendTexture().isValid());
+#endif
}
static void PromiseImageDoneProc(void* textureContext) {
auto callbackContext = static_cast<PromiseImageCallbackContext*>(textureContext);
- callbackContext->done();
callbackContext->unref();
}
@@ -241,7 +212,6 @@
bool isValidID(int id) const { return id >= 0 && id < fImageInfo.count(); }
const PromiseImageInfo& getInfo(int id) const { return fImageInfo[id]; }
- void uploadImage(GrContext*, PromiseImageInfo*);
// returns -1 if not found
int findImage(SkImage* image) const;