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 GrGLBackendSurface_DEFINED 9*c8dee2aaSAndroid Build Coastguard Worker #define GrGLBackendSurface_DEFINED 10*c8dee2aaSAndroid Build Coastguard Worker 11*c8dee2aaSAndroid Build Coastguard Worker #include "include/gpu/ganesh/gl/GrGLTypes.h" 12*c8dee2aaSAndroid Build Coastguard Worker #include "include/private/base/SkAPI.h" 13*c8dee2aaSAndroid Build Coastguard Worker 14*c8dee2aaSAndroid Build Coastguard Worker #include <string_view> 15*c8dee2aaSAndroid Build Coastguard Worker 16*c8dee2aaSAndroid Build Coastguard Worker class GrBackendFormat; 17*c8dee2aaSAndroid Build Coastguard Worker class GrBackendTexture; 18*c8dee2aaSAndroid Build Coastguard Worker class GrBackendRenderTarget; 19*c8dee2aaSAndroid Build Coastguard Worker 20*c8dee2aaSAndroid Build Coastguard Worker namespace skgpu { enum class Mipmapped : bool; } 21*c8dee2aaSAndroid Build Coastguard Worker 22*c8dee2aaSAndroid Build Coastguard Worker namespace GrBackendFormats { 23*c8dee2aaSAndroid Build Coastguard Worker SK_API GrBackendFormat MakeGL(GrGLenum format, GrGLenum target); 24*c8dee2aaSAndroid Build Coastguard Worker 25*c8dee2aaSAndroid Build Coastguard Worker SK_API GrGLFormat AsGLFormat(const GrBackendFormat&); 26*c8dee2aaSAndroid Build Coastguard Worker SK_API GrGLenum AsGLFormatEnum(const GrBackendFormat&); 27*c8dee2aaSAndroid Build Coastguard Worker } // namespace GrBackendFormats 28*c8dee2aaSAndroid Build Coastguard Worker 29*c8dee2aaSAndroid Build Coastguard Worker namespace GrBackendTextures { 30*c8dee2aaSAndroid Build Coastguard Worker // The GrGLTextureInfo must have a valid fFormat. 31*c8dee2aaSAndroid Build Coastguard Worker SK_API GrBackendTexture MakeGL(int width, 32*c8dee2aaSAndroid Build Coastguard Worker int height, 33*c8dee2aaSAndroid Build Coastguard Worker skgpu::Mipmapped, 34*c8dee2aaSAndroid Build Coastguard Worker const GrGLTextureInfo& glInfo, 35*c8dee2aaSAndroid Build Coastguard Worker std::string_view label = {}); 36*c8dee2aaSAndroid Build Coastguard Worker 37*c8dee2aaSAndroid Build Coastguard Worker // If the backend API is GL, copies a snapshot of the GrGLTextureInfo struct into the passed in 38*c8dee2aaSAndroid Build Coastguard Worker // pointer and returns true. Otherwise returns false if the backend API is not GL. 39*c8dee2aaSAndroid Build Coastguard Worker SK_API bool GetGLTextureInfo(const GrBackendTexture&, GrGLTextureInfo*); 40*c8dee2aaSAndroid Build Coastguard Worker 41*c8dee2aaSAndroid Build Coastguard Worker // Call this to indicate that the texture parameters have been modified in the GL context 42*c8dee2aaSAndroid Build Coastguard Worker // externally to GrContext. 43*c8dee2aaSAndroid Build Coastguard Worker SK_API void GLTextureParametersModified(GrBackendTexture*); 44*c8dee2aaSAndroid Build Coastguard Worker } // namespace GrBackendTextures 45*c8dee2aaSAndroid Build Coastguard Worker 46*c8dee2aaSAndroid Build Coastguard Worker namespace GrBackendRenderTargets { 47*c8dee2aaSAndroid Build Coastguard Worker // The GrGLTextureInfo must have a valid fFormat. If wrapping in an SkSurface we require the 48*c8dee2aaSAndroid Build Coastguard Worker // stencil bits to be either 0, 8 or 16. 49*c8dee2aaSAndroid Build Coastguard Worker SK_API GrBackendRenderTarget MakeGL(int width, 50*c8dee2aaSAndroid Build Coastguard Worker int height, 51*c8dee2aaSAndroid Build Coastguard Worker int sampleCnt, 52*c8dee2aaSAndroid Build Coastguard Worker int stencilBits, 53*c8dee2aaSAndroid Build Coastguard Worker const GrGLFramebufferInfo& glInfo); 54*c8dee2aaSAndroid Build Coastguard Worker 55*c8dee2aaSAndroid Build Coastguard Worker SK_API bool GetGLFramebufferInfo(const GrBackendRenderTarget&, GrGLFramebufferInfo*); 56*c8dee2aaSAndroid Build Coastguard Worker } // namespace GrBackendRenderTargets 57*c8dee2aaSAndroid Build Coastguard Worker 58*c8dee2aaSAndroid Build Coastguard Worker #endif 59