1*c8dee2aaSAndroid Build Coastguard Worker /* 2*c8dee2aaSAndroid Build Coastguard Worker * Copyright 2023 Google LLC 3*c8dee2aaSAndroid Build Coastguard Worker * 4*c8dee2aaSAndroid Build Coastguard Worker * Use of this source code is governed by a BSD-style license that can be 5*c8dee2aaSAndroid Build Coastguard Worker * found in the LICENSE file. 6*c8dee2aaSAndroid Build Coastguard Worker */ 7*c8dee2aaSAndroid Build Coastguard Worker 8*c8dee2aaSAndroid Build Coastguard Worker #ifndef GrPromiseImageTexture_DEFINED 9*c8dee2aaSAndroid Build Coastguard Worker #define GrPromiseImageTexture_DEFINED 10*c8dee2aaSAndroid Build Coastguard Worker 11*c8dee2aaSAndroid Build Coastguard Worker #include "include/core/SkRefCnt.h" 12*c8dee2aaSAndroid Build Coastguard Worker #include "include/core/SkTypes.h" 13*c8dee2aaSAndroid Build Coastguard Worker #include "include/gpu/ganesh/GrBackendSurface.h" 14*c8dee2aaSAndroid Build Coastguard Worker /** 15*c8dee2aaSAndroid Build Coastguard Worker * This type is used to fulfill textures for PromiseImages. Once an instance is returned from a 16*c8dee2aaSAndroid Build Coastguard Worker * PromiseImageTextureFulfillProc the GrBackendTexture it wraps must remain valid until the 17*c8dee2aaSAndroid Build Coastguard Worker * corresponding PromiseImageTextureReleaseProc is called. 18*c8dee2aaSAndroid Build Coastguard Worker */ 19*c8dee2aaSAndroid Build Coastguard Worker class SK_API GrPromiseImageTexture : public SkNVRefCnt<GrPromiseImageTexture> { 20*c8dee2aaSAndroid Build Coastguard Worker public: 21*c8dee2aaSAndroid Build Coastguard Worker GrPromiseImageTexture() = delete; 22*c8dee2aaSAndroid Build Coastguard Worker GrPromiseImageTexture(const GrPromiseImageTexture&) = delete; 23*c8dee2aaSAndroid Build Coastguard Worker GrPromiseImageTexture(GrPromiseImageTexture&&) = delete; 24*c8dee2aaSAndroid Build Coastguard Worker ~GrPromiseImageTexture(); 25*c8dee2aaSAndroid Build Coastguard Worker GrPromiseImageTexture& operator=(const GrPromiseImageTexture&) = delete; 26*c8dee2aaSAndroid Build Coastguard Worker GrPromiseImageTexture& operator=(GrPromiseImageTexture&&) = delete; 27*c8dee2aaSAndroid Build Coastguard Worker Make(const GrBackendTexture & backendTexture)28*c8dee2aaSAndroid Build Coastguard Worker static sk_sp<GrPromiseImageTexture> Make(const GrBackendTexture& backendTexture) { 29*c8dee2aaSAndroid Build Coastguard Worker if (!backendTexture.isValid()) { 30*c8dee2aaSAndroid Build Coastguard Worker return nullptr; 31*c8dee2aaSAndroid Build Coastguard Worker } 32*c8dee2aaSAndroid Build Coastguard Worker return sk_sp<GrPromiseImageTexture>(new GrPromiseImageTexture(backendTexture)); 33*c8dee2aaSAndroid Build Coastguard Worker } 34*c8dee2aaSAndroid Build Coastguard Worker backendTexture()35*c8dee2aaSAndroid Build Coastguard Worker GrBackendTexture backendTexture() const { return fBackendTexture; } 36*c8dee2aaSAndroid Build Coastguard Worker 37*c8dee2aaSAndroid Build Coastguard Worker private: 38*c8dee2aaSAndroid Build Coastguard Worker explicit GrPromiseImageTexture(const GrBackendTexture& backendTexture); 39*c8dee2aaSAndroid Build Coastguard Worker 40*c8dee2aaSAndroid Build Coastguard Worker GrBackendTexture fBackendTexture; 41*c8dee2aaSAndroid Build Coastguard Worker }; 42*c8dee2aaSAndroid Build Coastguard Worker 43*c8dee2aaSAndroid Build Coastguard Worker #endif // GrPromiseImageTexture_DEFINED 44