xref: /aosp_15_r20/external/angle/src/libANGLE/renderer/TextureImpl.h (revision 8975f5c5ed3d1c378011245431ada316dfb6f244)
1*8975f5c5SAndroid Build Coastguard Worker //
2*8975f5c5SAndroid Build Coastguard Worker // Copyright 2014 The ANGLE Project Authors. All rights reserved.
3*8975f5c5SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be
4*8975f5c5SAndroid Build Coastguard Worker // found in the LICENSE file.
5*8975f5c5SAndroid Build Coastguard Worker //
6*8975f5c5SAndroid Build Coastguard Worker 
7*8975f5c5SAndroid Build Coastguard Worker // TextureImpl.h: Defines the abstract rx::TextureImpl classes.
8*8975f5c5SAndroid Build Coastguard Worker 
9*8975f5c5SAndroid Build Coastguard Worker #ifndef LIBANGLE_RENDERER_TEXTUREIMPL_H_
10*8975f5c5SAndroid Build Coastguard Worker #define LIBANGLE_RENDERER_TEXTUREIMPL_H_
11*8975f5c5SAndroid Build Coastguard Worker 
12*8975f5c5SAndroid Build Coastguard Worker #include <stdint.h>
13*8975f5c5SAndroid Build Coastguard Worker 
14*8975f5c5SAndroid Build Coastguard Worker #include "angle_gl.h"
15*8975f5c5SAndroid Build Coastguard Worker #include "common/angleutils.h"
16*8975f5c5SAndroid Build Coastguard Worker #include "libANGLE/Error.h"
17*8975f5c5SAndroid Build Coastguard Worker #include "libANGLE/ImageIndex.h"
18*8975f5c5SAndroid Build Coastguard Worker #include "libANGLE/Stream.h"
19*8975f5c5SAndroid Build Coastguard Worker #include "libANGLE/Texture.h"
20*8975f5c5SAndroid Build Coastguard Worker #include "libANGLE/angletypes.h"
21*8975f5c5SAndroid Build Coastguard Worker #include "libANGLE/renderer/FramebufferAttachmentObjectImpl.h"
22*8975f5c5SAndroid Build Coastguard Worker 
23*8975f5c5SAndroid Build Coastguard Worker namespace egl
24*8975f5c5SAndroid Build Coastguard Worker {
25*8975f5c5SAndroid Build Coastguard Worker class Surface;
26*8975f5c5SAndroid Build Coastguard Worker class Image;
27*8975f5c5SAndroid Build Coastguard Worker }  // namespace egl
28*8975f5c5SAndroid Build Coastguard Worker 
29*8975f5c5SAndroid Build Coastguard Worker namespace gl
30*8975f5c5SAndroid Build Coastguard Worker {
31*8975f5c5SAndroid Build Coastguard Worker class Framebuffer;
32*8975f5c5SAndroid Build Coastguard Worker class MemoryObject;
33*8975f5c5SAndroid Build Coastguard Worker struct PixelUnpackState;
34*8975f5c5SAndroid Build Coastguard Worker class TextureState;
35*8975f5c5SAndroid Build Coastguard Worker }  // namespace gl
36*8975f5c5SAndroid Build Coastguard Worker 
37*8975f5c5SAndroid Build Coastguard Worker namespace rx
38*8975f5c5SAndroid Build Coastguard Worker {
39*8975f5c5SAndroid Build Coastguard Worker class ContextImpl;
40*8975f5c5SAndroid Build Coastguard Worker 
41*8975f5c5SAndroid Build Coastguard Worker class TextureImpl : public FramebufferAttachmentObjectImpl
42*8975f5c5SAndroid Build Coastguard Worker {
43*8975f5c5SAndroid Build Coastguard Worker   public:
44*8975f5c5SAndroid Build Coastguard Worker     TextureImpl(const gl::TextureState &state);
45*8975f5c5SAndroid Build Coastguard Worker     ~TextureImpl() override;
46*8975f5c5SAndroid Build Coastguard Worker 
47*8975f5c5SAndroid Build Coastguard Worker     virtual void onDestroy(const gl::Context *context);
48*8975f5c5SAndroid Build Coastguard Worker 
49*8975f5c5SAndroid Build Coastguard Worker     virtual angle::Result setImage(const gl::Context *context,
50*8975f5c5SAndroid Build Coastguard Worker                                    const gl::ImageIndex &index,
51*8975f5c5SAndroid Build Coastguard Worker                                    GLenum internalFormat,
52*8975f5c5SAndroid Build Coastguard Worker                                    const gl::Extents &size,
53*8975f5c5SAndroid Build Coastguard Worker                                    GLenum format,
54*8975f5c5SAndroid Build Coastguard Worker                                    GLenum type,
55*8975f5c5SAndroid Build Coastguard Worker                                    const gl::PixelUnpackState &unpack,
56*8975f5c5SAndroid Build Coastguard Worker                                    gl::Buffer *unpackBuffer,
57*8975f5c5SAndroid Build Coastguard Worker                                    const uint8_t *pixels)    = 0;
58*8975f5c5SAndroid Build Coastguard Worker     virtual angle::Result setSubImage(const gl::Context *context,
59*8975f5c5SAndroid Build Coastguard Worker                                       const gl::ImageIndex &index,
60*8975f5c5SAndroid Build Coastguard Worker                                       const gl::Box &area,
61*8975f5c5SAndroid Build Coastguard Worker                                       GLenum format,
62*8975f5c5SAndroid Build Coastguard Worker                                       GLenum type,
63*8975f5c5SAndroid Build Coastguard Worker                                       const gl::PixelUnpackState &unpack,
64*8975f5c5SAndroid Build Coastguard Worker                                       gl::Buffer *unpackBuffer,
65*8975f5c5SAndroid Build Coastguard Worker                                       const uint8_t *pixels) = 0;
66*8975f5c5SAndroid Build Coastguard Worker 
67*8975f5c5SAndroid Build Coastguard Worker     virtual angle::Result setCompressedImage(const gl::Context *context,
68*8975f5c5SAndroid Build Coastguard Worker                                              const gl::ImageIndex &index,
69*8975f5c5SAndroid Build Coastguard Worker                                              GLenum internalFormat,
70*8975f5c5SAndroid Build Coastguard Worker                                              const gl::Extents &size,
71*8975f5c5SAndroid Build Coastguard Worker                                              const gl::PixelUnpackState &unpack,
72*8975f5c5SAndroid Build Coastguard Worker                                              size_t imageSize,
73*8975f5c5SAndroid Build Coastguard Worker                                              const uint8_t *pixels)    = 0;
74*8975f5c5SAndroid Build Coastguard Worker     virtual angle::Result setCompressedSubImage(const gl::Context *context,
75*8975f5c5SAndroid Build Coastguard Worker                                                 const gl::ImageIndex &index,
76*8975f5c5SAndroid Build Coastguard Worker                                                 const gl::Box &area,
77*8975f5c5SAndroid Build Coastguard Worker                                                 GLenum format,
78*8975f5c5SAndroid Build Coastguard Worker                                                 const gl::PixelUnpackState &unpack,
79*8975f5c5SAndroid Build Coastguard Worker                                                 size_t imageSize,
80*8975f5c5SAndroid Build Coastguard Worker                                                 const uint8_t *pixels) = 0;
81*8975f5c5SAndroid Build Coastguard Worker 
82*8975f5c5SAndroid Build Coastguard Worker     virtual angle::Result copyImage(const gl::Context *context,
83*8975f5c5SAndroid Build Coastguard Worker                                     const gl::ImageIndex &index,
84*8975f5c5SAndroid Build Coastguard Worker                                     const gl::Rectangle &sourceArea,
85*8975f5c5SAndroid Build Coastguard Worker                                     GLenum internalFormat,
86*8975f5c5SAndroid Build Coastguard Worker                                     gl::Framebuffer *source)    = 0;
87*8975f5c5SAndroid Build Coastguard Worker     virtual angle::Result copySubImage(const gl::Context *context,
88*8975f5c5SAndroid Build Coastguard Worker                                        const gl::ImageIndex &index,
89*8975f5c5SAndroid Build Coastguard Worker                                        const gl::Offset &destOffset,
90*8975f5c5SAndroid Build Coastguard Worker                                        const gl::Rectangle &sourceArea,
91*8975f5c5SAndroid Build Coastguard Worker                                        gl::Framebuffer *source) = 0;
92*8975f5c5SAndroid Build Coastguard Worker 
93*8975f5c5SAndroid Build Coastguard Worker     virtual angle::Result copyTexture(const gl::Context *context,
94*8975f5c5SAndroid Build Coastguard Worker                                       const gl::ImageIndex &index,
95*8975f5c5SAndroid Build Coastguard Worker                                       GLenum internalFormat,
96*8975f5c5SAndroid Build Coastguard Worker                                       GLenum type,
97*8975f5c5SAndroid Build Coastguard Worker                                       GLint sourceLevel,
98*8975f5c5SAndroid Build Coastguard Worker                                       bool unpackFlipY,
99*8975f5c5SAndroid Build Coastguard Worker                                       bool unpackPremultiplyAlpha,
100*8975f5c5SAndroid Build Coastguard Worker                                       bool unpackUnmultiplyAlpha,
101*8975f5c5SAndroid Build Coastguard Worker                                       const gl::Texture *source);
102*8975f5c5SAndroid Build Coastguard Worker     virtual angle::Result copySubTexture(const gl::Context *context,
103*8975f5c5SAndroid Build Coastguard Worker                                          const gl::ImageIndex &index,
104*8975f5c5SAndroid Build Coastguard Worker                                          const gl::Offset &destOffset,
105*8975f5c5SAndroid Build Coastguard Worker                                          GLint sourceLevel,
106*8975f5c5SAndroid Build Coastguard Worker                                          const gl::Box &sourceBox,
107*8975f5c5SAndroid Build Coastguard Worker                                          bool unpackFlipY,
108*8975f5c5SAndroid Build Coastguard Worker                                          bool unpackPremultiplyAlpha,
109*8975f5c5SAndroid Build Coastguard Worker                                          bool unpackUnmultiplyAlpha,
110*8975f5c5SAndroid Build Coastguard Worker                                          const gl::Texture *source);
111*8975f5c5SAndroid Build Coastguard Worker 
112*8975f5c5SAndroid Build Coastguard Worker     virtual angle::Result copyRenderbufferSubData(const gl::Context *context,
113*8975f5c5SAndroid Build Coastguard Worker                                                   const gl::Renderbuffer *srcBuffer,
114*8975f5c5SAndroid Build Coastguard Worker                                                   GLint srcLevel,
115*8975f5c5SAndroid Build Coastguard Worker                                                   GLint srcX,
116*8975f5c5SAndroid Build Coastguard Worker                                                   GLint srcY,
117*8975f5c5SAndroid Build Coastguard Worker                                                   GLint srcZ,
118*8975f5c5SAndroid Build Coastguard Worker                                                   GLint dstLevel,
119*8975f5c5SAndroid Build Coastguard Worker                                                   GLint dstX,
120*8975f5c5SAndroid Build Coastguard Worker                                                   GLint dstY,
121*8975f5c5SAndroid Build Coastguard Worker                                                   GLint dstZ,
122*8975f5c5SAndroid Build Coastguard Worker                                                   GLsizei srcWidth,
123*8975f5c5SAndroid Build Coastguard Worker                                                   GLsizei srcHeight,
124*8975f5c5SAndroid Build Coastguard Worker                                                   GLsizei srcDepth);
125*8975f5c5SAndroid Build Coastguard Worker 
126*8975f5c5SAndroid Build Coastguard Worker     virtual angle::Result copyTextureSubData(const gl::Context *context,
127*8975f5c5SAndroid Build Coastguard Worker                                              const gl::Texture *srcTexture,
128*8975f5c5SAndroid Build Coastguard Worker                                              GLint srcLevel,
129*8975f5c5SAndroid Build Coastguard Worker                                              GLint srcX,
130*8975f5c5SAndroid Build Coastguard Worker                                              GLint srcY,
131*8975f5c5SAndroid Build Coastguard Worker                                              GLint srcZ,
132*8975f5c5SAndroid Build Coastguard Worker                                              GLint dstLevel,
133*8975f5c5SAndroid Build Coastguard Worker                                              GLint dstX,
134*8975f5c5SAndroid Build Coastguard Worker                                              GLint dstY,
135*8975f5c5SAndroid Build Coastguard Worker                                              GLint dstZ,
136*8975f5c5SAndroid Build Coastguard Worker                                              GLsizei srcWidth,
137*8975f5c5SAndroid Build Coastguard Worker                                              GLsizei srcHeight,
138*8975f5c5SAndroid Build Coastguard Worker                                              GLsizei srcDepth);
139*8975f5c5SAndroid Build Coastguard Worker 
140*8975f5c5SAndroid Build Coastguard Worker     virtual angle::Result copyCompressedTexture(const gl::Context *context,
141*8975f5c5SAndroid Build Coastguard Worker                                                 const gl::Texture *source);
142*8975f5c5SAndroid Build Coastguard Worker 
143*8975f5c5SAndroid Build Coastguard Worker     virtual angle::Result copy3DTexture(const gl::Context *context,
144*8975f5c5SAndroid Build Coastguard Worker                                         gl::TextureTarget target,
145*8975f5c5SAndroid Build Coastguard Worker                                         GLenum internalFormat,
146*8975f5c5SAndroid Build Coastguard Worker                                         GLenum type,
147*8975f5c5SAndroid Build Coastguard Worker                                         GLint sourceLevel,
148*8975f5c5SAndroid Build Coastguard Worker                                         GLint destLevel,
149*8975f5c5SAndroid Build Coastguard Worker                                         bool unpackFlipY,
150*8975f5c5SAndroid Build Coastguard Worker                                         bool unpackPremultiplyAlpha,
151*8975f5c5SAndroid Build Coastguard Worker                                         bool unpackUnmultiplyAlpha,
152*8975f5c5SAndroid Build Coastguard Worker                                         const gl::Texture *source);
153*8975f5c5SAndroid Build Coastguard Worker     virtual angle::Result copy3DSubTexture(const gl::Context *context,
154*8975f5c5SAndroid Build Coastguard Worker                                            const gl::TextureTarget target,
155*8975f5c5SAndroid Build Coastguard Worker                                            const gl::Offset &destOffset,
156*8975f5c5SAndroid Build Coastguard Worker                                            GLint sourceLevel,
157*8975f5c5SAndroid Build Coastguard Worker                                            GLint destLevel,
158*8975f5c5SAndroid Build Coastguard Worker                                            const gl::Box &srcBox,
159*8975f5c5SAndroid Build Coastguard Worker                                            bool unpackFlipY,
160*8975f5c5SAndroid Build Coastguard Worker                                            bool unpackPremultiplyAlpha,
161*8975f5c5SAndroid Build Coastguard Worker                                            bool unpackUnmultiplyAlpha,
162*8975f5c5SAndroid Build Coastguard Worker                                            const gl::Texture *source);
163*8975f5c5SAndroid Build Coastguard Worker 
164*8975f5c5SAndroid Build Coastguard Worker     virtual angle::Result setStorage(const gl::Context *context,
165*8975f5c5SAndroid Build Coastguard Worker                                      gl::TextureType type,
166*8975f5c5SAndroid Build Coastguard Worker                                      size_t levels,
167*8975f5c5SAndroid Build Coastguard Worker                                      GLenum internalFormat,
168*8975f5c5SAndroid Build Coastguard Worker                                      const gl::Extents &size) = 0;
169*8975f5c5SAndroid Build Coastguard Worker 
170*8975f5c5SAndroid Build Coastguard Worker     virtual angle::Result setStorageMultisample(const gl::Context *context,
171*8975f5c5SAndroid Build Coastguard Worker                                                 gl::TextureType type,
172*8975f5c5SAndroid Build Coastguard Worker                                                 GLsizei samples,
173*8975f5c5SAndroid Build Coastguard Worker                                                 GLint internalformat,
174*8975f5c5SAndroid Build Coastguard Worker                                                 const gl::Extents &size,
175*8975f5c5SAndroid Build Coastguard Worker                                                 bool fixedSampleLocations) = 0;
176*8975f5c5SAndroid Build Coastguard Worker 
177*8975f5c5SAndroid Build Coastguard Worker     virtual angle::Result setStorageAttribs(const gl::Context *context,
178*8975f5c5SAndroid Build Coastguard Worker                                             gl::TextureType type,
179*8975f5c5SAndroid Build Coastguard Worker                                             size_t levels,
180*8975f5c5SAndroid Build Coastguard Worker                                             GLint internalformat,
181*8975f5c5SAndroid Build Coastguard Worker                                             const gl::Extents &size,
182*8975f5c5SAndroid Build Coastguard Worker                                             const GLint *attribList);
183*8975f5c5SAndroid Build Coastguard Worker 
184*8975f5c5SAndroid Build Coastguard Worker     virtual angle::Result setStorageExternalMemory(const gl::Context *context,
185*8975f5c5SAndroid Build Coastguard Worker                                                    gl::TextureType type,
186*8975f5c5SAndroid Build Coastguard Worker                                                    size_t levels,
187*8975f5c5SAndroid Build Coastguard Worker                                                    GLenum internalFormat,
188*8975f5c5SAndroid Build Coastguard Worker                                                    const gl::Extents &size,
189*8975f5c5SAndroid Build Coastguard Worker                                                    gl::MemoryObject *memoryObject,
190*8975f5c5SAndroid Build Coastguard Worker                                                    GLuint64 offset,
191*8975f5c5SAndroid Build Coastguard Worker                                                    GLbitfield createFlags,
192*8975f5c5SAndroid Build Coastguard Worker                                                    GLbitfield usageFlags,
193*8975f5c5SAndroid Build Coastguard Worker                                                    const void *imageCreateInfoPNext) = 0;
194*8975f5c5SAndroid Build Coastguard Worker 
195*8975f5c5SAndroid Build Coastguard Worker     virtual angle::Result setImageExternal(const gl::Context *context,
196*8975f5c5SAndroid Build Coastguard Worker                                            const gl::ImageIndex &index,
197*8975f5c5SAndroid Build Coastguard Worker                                            GLenum internalFormat,
198*8975f5c5SAndroid Build Coastguard Worker                                            const gl::Extents &size,
199*8975f5c5SAndroid Build Coastguard Worker                                            GLenum format,
200*8975f5c5SAndroid Build Coastguard Worker                                            GLenum type);
201*8975f5c5SAndroid Build Coastguard Worker 
202*8975f5c5SAndroid Build Coastguard Worker     virtual angle::Result setEGLImageTarget(const gl::Context *context,
203*8975f5c5SAndroid Build Coastguard Worker                                             gl::TextureType type,
204*8975f5c5SAndroid Build Coastguard Worker                                             egl::Image *image) = 0;
205*8975f5c5SAndroid Build Coastguard Worker 
206*8975f5c5SAndroid Build Coastguard Worker     virtual angle::Result setImageExternal(const gl::Context *context,
207*8975f5c5SAndroid Build Coastguard Worker                                            gl::TextureType type,
208*8975f5c5SAndroid Build Coastguard Worker                                            egl::Stream *stream,
209*8975f5c5SAndroid Build Coastguard Worker                                            const egl::Stream::GLTextureDescription &desc) = 0;
210*8975f5c5SAndroid Build Coastguard Worker 
211*8975f5c5SAndroid Build Coastguard Worker     virtual angle::Result setBuffer(const gl::Context *context, GLenum internalFormat);
212*8975f5c5SAndroid Build Coastguard Worker 
213*8975f5c5SAndroid Build Coastguard Worker     virtual angle::Result generateMipmap(const gl::Context *context) = 0;
214*8975f5c5SAndroid Build Coastguard Worker 
215*8975f5c5SAndroid Build Coastguard Worker     virtual angle::Result clearImage(const gl::Context *context,
216*8975f5c5SAndroid Build Coastguard Worker                                      GLint level,
217*8975f5c5SAndroid Build Coastguard Worker                                      GLenum format,
218*8975f5c5SAndroid Build Coastguard Worker                                      GLenum type,
219*8975f5c5SAndroid Build Coastguard Worker                                      const uint8_t *data);
220*8975f5c5SAndroid Build Coastguard Worker     virtual angle::Result clearSubImage(const gl::Context *context,
221*8975f5c5SAndroid Build Coastguard Worker                                         GLint level,
222*8975f5c5SAndroid Build Coastguard Worker                                         const gl::Box &area,
223*8975f5c5SAndroid Build Coastguard Worker                                         GLenum format,
224*8975f5c5SAndroid Build Coastguard Worker                                         GLenum type,
225*8975f5c5SAndroid Build Coastguard Worker                                         const uint8_t *data);
226*8975f5c5SAndroid Build Coastguard Worker 
227*8975f5c5SAndroid Build Coastguard Worker     virtual angle::Result setBaseLevel(const gl::Context *context, GLuint baseLevel) = 0;
228*8975f5c5SAndroid Build Coastguard Worker 
229*8975f5c5SAndroid Build Coastguard Worker     virtual angle::Result bindTexImage(const gl::Context *context, egl::Surface *surface) = 0;
230*8975f5c5SAndroid Build Coastguard Worker     virtual angle::Result releaseTexImage(const gl::Context *context)                     = 0;
231*8975f5c5SAndroid Build Coastguard Worker 
232*8975f5c5SAndroid Build Coastguard Worker     virtual angle::Result onLabelUpdate(const gl::Context *context);
233*8975f5c5SAndroid Build Coastguard Worker 
234*8975f5c5SAndroid Build Coastguard Worker     // Override if accurate native memory size information is available
235*8975f5c5SAndroid Build Coastguard Worker     virtual GLint getMemorySize() const;
236*8975f5c5SAndroid Build Coastguard Worker     virtual GLint getLevelMemorySize(gl::TextureTarget target, GLint level);
237*8975f5c5SAndroid Build Coastguard Worker 
238*8975f5c5SAndroid Build Coastguard Worker     virtual GLint getNativeID() const;
239*8975f5c5SAndroid Build Coastguard Worker 
240*8975f5c5SAndroid Build Coastguard Worker     virtual GLint getImageCompressionRate(const gl::Context *context);
241*8975f5c5SAndroid Build Coastguard Worker     virtual GLint getFormatSupportedCompressionRates(const gl::Context *context,
242*8975f5c5SAndroid Build Coastguard Worker                                                      GLenum internalformat,
243*8975f5c5SAndroid Build Coastguard Worker                                                      GLsizei bufSize,
244*8975f5c5SAndroid Build Coastguard Worker                                                      GLint *rates);
245*8975f5c5SAndroid Build Coastguard Worker 
246*8975f5c5SAndroid Build Coastguard Worker     virtual angle::Result syncState(const gl::Context *context,
247*8975f5c5SAndroid Build Coastguard Worker                                     const gl::Texture::DirtyBits &dirtyBits,
248*8975f5c5SAndroid Build Coastguard Worker                                     gl::Command source) = 0;
249*8975f5c5SAndroid Build Coastguard Worker 
250*8975f5c5SAndroid Build Coastguard Worker     virtual GLenum getColorReadFormat(const gl::Context *context);
251*8975f5c5SAndroid Build Coastguard Worker     virtual GLenum getColorReadType(const gl::Context *context);
252*8975f5c5SAndroid Build Coastguard Worker 
253*8975f5c5SAndroid Build Coastguard Worker     virtual angle::Result getTexImage(const gl::Context *context,
254*8975f5c5SAndroid Build Coastguard Worker                                       const gl::PixelPackState &packState,
255*8975f5c5SAndroid Build Coastguard Worker                                       gl::Buffer *packBuffer,
256*8975f5c5SAndroid Build Coastguard Worker                                       gl::TextureTarget target,
257*8975f5c5SAndroid Build Coastguard Worker                                       GLint level,
258*8975f5c5SAndroid Build Coastguard Worker                                       GLenum format,
259*8975f5c5SAndroid Build Coastguard Worker                                       GLenum type,
260*8975f5c5SAndroid Build Coastguard Worker                                       void *pixels);
261*8975f5c5SAndroid Build Coastguard Worker 
262*8975f5c5SAndroid Build Coastguard Worker     virtual angle::Result getCompressedTexImage(const gl::Context *context,
263*8975f5c5SAndroid Build Coastguard Worker                                                 const gl::PixelPackState &packState,
264*8975f5c5SAndroid Build Coastguard Worker                                                 gl::Buffer *packBuffer,
265*8975f5c5SAndroid Build Coastguard Worker                                                 gl::TextureTarget target,
266*8975f5c5SAndroid Build Coastguard Worker                                                 GLint level,
267*8975f5c5SAndroid Build Coastguard Worker                                                 void *pixels);
268*8975f5c5SAndroid Build Coastguard Worker 
269*8975f5c5SAndroid Build Coastguard Worker     virtual GLint getRequiredExternalTextureImageUnits(const gl::Context *context);
270*8975f5c5SAndroid Build Coastguard Worker 
getState()271*8975f5c5SAndroid Build Coastguard Worker     const gl::TextureState &getState() const { return mState; }
272*8975f5c5SAndroid Build Coastguard Worker 
setContentsObservers(gl::TextureBufferContentsObservers * observers)273*8975f5c5SAndroid Build Coastguard Worker     void setContentsObservers(gl::TextureBufferContentsObservers *observers)
274*8975f5c5SAndroid Build Coastguard Worker     {
275*8975f5c5SAndroid Build Coastguard Worker         mBufferContentsObservers = observers;
276*8975f5c5SAndroid Build Coastguard Worker     }
277*8975f5c5SAndroid Build Coastguard Worker 
278*8975f5c5SAndroid Build Coastguard Worker   protected:
279*8975f5c5SAndroid Build Coastguard Worker     const gl::TextureState &mState;
280*8975f5c5SAndroid Build Coastguard Worker     gl::TextureBufferContentsObservers *mBufferContentsObservers = nullptr;
281*8975f5c5SAndroid Build Coastguard Worker };
282*8975f5c5SAndroid Build Coastguard Worker 
283*8975f5c5SAndroid Build Coastguard Worker }  // namespace rx
284*8975f5c5SAndroid Build Coastguard Worker 
285*8975f5c5SAndroid Build Coastguard Worker #endif  // LIBANGLE_RENDERER_TEXTUREIMPL_H_
286