xref: /aosp_15_r20/external/angle/src/libANGLE/renderer/RenderbufferImpl.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 // RenderbufferImpl.h: Defines the abstract class gl::RenderbufferImpl
8*8975f5c5SAndroid Build Coastguard Worker 
9*8975f5c5SAndroid Build Coastguard Worker #ifndef LIBANGLE_RENDERER_RENDERBUFFERIMPL_H_
10*8975f5c5SAndroid Build Coastguard Worker #define LIBANGLE_RENDERER_RENDERBUFFERIMPL_H_
11*8975f5c5SAndroid Build Coastguard Worker 
12*8975f5c5SAndroid Build Coastguard Worker #include "angle_gl.h"
13*8975f5c5SAndroid Build Coastguard Worker #include "common/angleutils.h"
14*8975f5c5SAndroid Build Coastguard Worker #include "libANGLE/Error.h"
15*8975f5c5SAndroid Build Coastguard Worker #include "libANGLE/angletypes.h"
16*8975f5c5SAndroid Build Coastguard Worker #include "libANGLE/renderer/FramebufferAttachmentObjectImpl.h"
17*8975f5c5SAndroid Build Coastguard Worker 
18*8975f5c5SAndroid Build Coastguard Worker namespace gl
19*8975f5c5SAndroid Build Coastguard Worker {
20*8975f5c5SAndroid Build Coastguard Worker struct PixelPackState;
21*8975f5c5SAndroid Build Coastguard Worker class RenderbufferState;
22*8975f5c5SAndroid Build Coastguard Worker }  // namespace gl
23*8975f5c5SAndroid Build Coastguard Worker 
24*8975f5c5SAndroid Build Coastguard Worker namespace egl
25*8975f5c5SAndroid Build Coastguard Worker {
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 rx
30*8975f5c5SAndroid Build Coastguard Worker {
31*8975f5c5SAndroid Build Coastguard Worker 
32*8975f5c5SAndroid Build Coastguard Worker class RenderbufferImpl : public FramebufferAttachmentObjectImpl
33*8975f5c5SAndroid Build Coastguard Worker {
34*8975f5c5SAndroid Build Coastguard Worker   public:
RenderbufferImpl(const gl::RenderbufferState & state)35*8975f5c5SAndroid Build Coastguard Worker     RenderbufferImpl(const gl::RenderbufferState &state) : mState(state) {}
~RenderbufferImpl()36*8975f5c5SAndroid Build Coastguard Worker     ~RenderbufferImpl() override {}
onDestroy(const gl::Context * context)37*8975f5c5SAndroid Build Coastguard Worker     virtual void onDestroy(const gl::Context *context) {}
38*8975f5c5SAndroid Build Coastguard Worker 
39*8975f5c5SAndroid Build Coastguard Worker     virtual angle::Result setStorage(const gl::Context *context,
40*8975f5c5SAndroid Build Coastguard Worker                                      GLenum internalformat,
41*8975f5c5SAndroid Build Coastguard Worker                                      GLsizei width,
42*8975f5c5SAndroid Build Coastguard Worker                                      GLsizei height)                        = 0;
43*8975f5c5SAndroid Build Coastguard Worker     virtual angle::Result setStorageMultisample(const gl::Context *context,
44*8975f5c5SAndroid Build Coastguard Worker                                                 GLsizei samples,
45*8975f5c5SAndroid Build Coastguard Worker                                                 GLenum internalformat,
46*8975f5c5SAndroid Build Coastguard Worker                                                 GLsizei width,
47*8975f5c5SAndroid Build Coastguard Worker                                                 GLsizei height,
48*8975f5c5SAndroid Build Coastguard Worker                                                 gl::MultisamplingMode mode) = 0;
49*8975f5c5SAndroid Build Coastguard Worker     virtual angle::Result setStorageEGLImageTarget(const gl::Context *context,
50*8975f5c5SAndroid Build Coastguard Worker                                                    egl::Image *image)       = 0;
51*8975f5c5SAndroid Build Coastguard Worker 
52*8975f5c5SAndroid Build Coastguard Worker     virtual angle::Result copyRenderbufferSubData(const gl::Context *context,
53*8975f5c5SAndroid Build Coastguard Worker                                                   const gl::Renderbuffer *srcBuffer,
54*8975f5c5SAndroid Build Coastguard Worker                                                   GLint srcLevel,
55*8975f5c5SAndroid Build Coastguard Worker                                                   GLint srcX,
56*8975f5c5SAndroid Build Coastguard Worker                                                   GLint srcY,
57*8975f5c5SAndroid Build Coastguard Worker                                                   GLint srcZ,
58*8975f5c5SAndroid Build Coastguard Worker                                                   GLint dstLevel,
59*8975f5c5SAndroid Build Coastguard Worker                                                   GLint dstX,
60*8975f5c5SAndroid Build Coastguard Worker                                                   GLint dstY,
61*8975f5c5SAndroid Build Coastguard Worker                                                   GLint dstZ,
62*8975f5c5SAndroid Build Coastguard Worker                                                   GLsizei srcWidth,
63*8975f5c5SAndroid Build Coastguard Worker                                                   GLsizei srcHeight,
64*8975f5c5SAndroid Build Coastguard Worker                                                   GLsizei srcDepth);
65*8975f5c5SAndroid Build Coastguard Worker 
66*8975f5c5SAndroid Build Coastguard Worker     virtual angle::Result copyTextureSubData(const gl::Context *context,
67*8975f5c5SAndroid Build Coastguard Worker                                              const gl::Texture *srcTexture,
68*8975f5c5SAndroid Build Coastguard Worker                                              GLint srcLevel,
69*8975f5c5SAndroid Build Coastguard Worker                                              GLint srcX,
70*8975f5c5SAndroid Build Coastguard Worker                                              GLint srcY,
71*8975f5c5SAndroid Build Coastguard Worker                                              GLint srcZ,
72*8975f5c5SAndroid Build Coastguard Worker                                              GLint dstLevel,
73*8975f5c5SAndroid Build Coastguard Worker                                              GLint dstX,
74*8975f5c5SAndroid Build Coastguard Worker                                              GLint dstY,
75*8975f5c5SAndroid Build Coastguard Worker                                              GLint dstZ,
76*8975f5c5SAndroid Build Coastguard Worker                                              GLsizei srcWidth,
77*8975f5c5SAndroid Build Coastguard Worker                                              GLsizei srcHeight,
78*8975f5c5SAndroid Build Coastguard Worker                                              GLsizei srcDepth);
79*8975f5c5SAndroid Build Coastguard Worker 
80*8975f5c5SAndroid Build Coastguard Worker     virtual GLenum getColorReadFormat(const gl::Context *context);
81*8975f5c5SAndroid Build Coastguard Worker     virtual GLenum getColorReadType(const gl::Context *context);
82*8975f5c5SAndroid Build Coastguard Worker 
83*8975f5c5SAndroid Build Coastguard Worker     virtual angle::Result getRenderbufferImage(const gl::Context *context,
84*8975f5c5SAndroid Build Coastguard Worker                                                const gl::PixelPackState &packState,
85*8975f5c5SAndroid Build Coastguard Worker                                                gl::Buffer *packBuffer,
86*8975f5c5SAndroid Build Coastguard Worker                                                GLenum format,
87*8975f5c5SAndroid Build Coastguard Worker                                                GLenum type,
88*8975f5c5SAndroid Build Coastguard Worker                                                void *pixels);
89*8975f5c5SAndroid Build Coastguard Worker 
90*8975f5c5SAndroid Build Coastguard Worker     // Override if accurate native memory size information is available
91*8975f5c5SAndroid Build Coastguard Worker     virtual GLint getMemorySize() const;
92*8975f5c5SAndroid Build Coastguard Worker 
93*8975f5c5SAndroid Build Coastguard Worker     virtual angle::Result onLabelUpdate(const gl::Context *context);
94*8975f5c5SAndroid Build Coastguard Worker 
95*8975f5c5SAndroid Build Coastguard Worker   protected:
96*8975f5c5SAndroid Build Coastguard Worker     const gl::RenderbufferState &mState;
97*8975f5c5SAndroid Build Coastguard Worker };
98*8975f5c5SAndroid Build Coastguard Worker 
copyRenderbufferSubData(const gl::Context * context,const gl::Renderbuffer * srcBuffer,GLint srcLevel,GLint srcX,GLint srcY,GLint srcZ,GLint dstLevel,GLint dstX,GLint dstY,GLint dstZ,GLsizei srcWidth,GLsizei srcHeight,GLsizei srcDepth)99*8975f5c5SAndroid Build Coastguard Worker inline angle::Result RenderbufferImpl::copyRenderbufferSubData(const gl::Context *context,
100*8975f5c5SAndroid Build Coastguard Worker                                                                const gl::Renderbuffer *srcBuffer,
101*8975f5c5SAndroid Build Coastguard Worker                                                                GLint srcLevel,
102*8975f5c5SAndroid Build Coastguard Worker                                                                GLint srcX,
103*8975f5c5SAndroid Build Coastguard Worker                                                                GLint srcY,
104*8975f5c5SAndroid Build Coastguard Worker                                                                GLint srcZ,
105*8975f5c5SAndroid Build Coastguard Worker                                                                GLint dstLevel,
106*8975f5c5SAndroid Build Coastguard Worker                                                                GLint dstX,
107*8975f5c5SAndroid Build Coastguard Worker                                                                GLint dstY,
108*8975f5c5SAndroid Build Coastguard Worker                                                                GLint dstZ,
109*8975f5c5SAndroid Build Coastguard Worker                                                                GLsizei srcWidth,
110*8975f5c5SAndroid Build Coastguard Worker                                                                GLsizei srcHeight,
111*8975f5c5SAndroid Build Coastguard Worker                                                                GLsizei srcDepth)
112*8975f5c5SAndroid Build Coastguard Worker {
113*8975f5c5SAndroid Build Coastguard Worker     UNREACHABLE();
114*8975f5c5SAndroid Build Coastguard Worker     return angle::Result::Stop;
115*8975f5c5SAndroid Build Coastguard Worker }
116*8975f5c5SAndroid Build Coastguard Worker 
copyTextureSubData(const gl::Context * context,const gl::Texture * srcTexture,GLint srcLevel,GLint srcX,GLint srcY,GLint srcZ,GLint dstLevel,GLint dstX,GLint dstY,GLint dstZ,GLsizei srcWidth,GLsizei srcHeight,GLsizei srcDepth)117*8975f5c5SAndroid Build Coastguard Worker inline angle::Result RenderbufferImpl::copyTextureSubData(const gl::Context *context,
118*8975f5c5SAndroid Build Coastguard Worker                                                           const gl::Texture *srcTexture,
119*8975f5c5SAndroid Build Coastguard Worker                                                           GLint srcLevel,
120*8975f5c5SAndroid Build Coastguard Worker                                                           GLint srcX,
121*8975f5c5SAndroid Build Coastguard Worker                                                           GLint srcY,
122*8975f5c5SAndroid Build Coastguard Worker                                                           GLint srcZ,
123*8975f5c5SAndroid Build Coastguard Worker                                                           GLint dstLevel,
124*8975f5c5SAndroid Build Coastguard Worker                                                           GLint dstX,
125*8975f5c5SAndroid Build Coastguard Worker                                                           GLint dstY,
126*8975f5c5SAndroid Build Coastguard Worker                                                           GLint dstZ,
127*8975f5c5SAndroid Build Coastguard Worker                                                           GLsizei srcWidth,
128*8975f5c5SAndroid Build Coastguard Worker                                                           GLsizei srcHeight,
129*8975f5c5SAndroid Build Coastguard Worker                                                           GLsizei srcDepth)
130*8975f5c5SAndroid Build Coastguard Worker {
131*8975f5c5SAndroid Build Coastguard Worker     UNREACHABLE();
132*8975f5c5SAndroid Build Coastguard Worker     return angle::Result::Stop;
133*8975f5c5SAndroid Build Coastguard Worker }
134*8975f5c5SAndroid Build Coastguard Worker 
getMemorySize()135*8975f5c5SAndroid Build Coastguard Worker inline GLint RenderbufferImpl::getMemorySize() const
136*8975f5c5SAndroid Build Coastguard Worker {
137*8975f5c5SAndroid Build Coastguard Worker     return 0;
138*8975f5c5SAndroid Build Coastguard Worker }
139*8975f5c5SAndroid Build Coastguard Worker 
getColorReadFormat(const gl::Context * context)140*8975f5c5SAndroid Build Coastguard Worker inline GLenum RenderbufferImpl::getColorReadFormat(const gl::Context *context)
141*8975f5c5SAndroid Build Coastguard Worker {
142*8975f5c5SAndroid Build Coastguard Worker     UNREACHABLE();
143*8975f5c5SAndroid Build Coastguard Worker     return GL_NONE;
144*8975f5c5SAndroid Build Coastguard Worker }
145*8975f5c5SAndroid Build Coastguard Worker 
getColorReadType(const gl::Context * context)146*8975f5c5SAndroid Build Coastguard Worker inline GLenum RenderbufferImpl::getColorReadType(const gl::Context *context)
147*8975f5c5SAndroid Build Coastguard Worker {
148*8975f5c5SAndroid Build Coastguard Worker     UNREACHABLE();
149*8975f5c5SAndroid Build Coastguard Worker     return GL_NONE;
150*8975f5c5SAndroid Build Coastguard Worker }
151*8975f5c5SAndroid Build Coastguard Worker 
getRenderbufferImage(const gl::Context * context,const gl::PixelPackState & packState,gl::Buffer * packBuffer,GLenum format,GLenum type,void * pixels)152*8975f5c5SAndroid Build Coastguard Worker inline angle::Result RenderbufferImpl::getRenderbufferImage(const gl::Context *context,
153*8975f5c5SAndroid Build Coastguard Worker                                                             const gl::PixelPackState &packState,
154*8975f5c5SAndroid Build Coastguard Worker                                                             gl::Buffer *packBuffer,
155*8975f5c5SAndroid Build Coastguard Worker                                                             GLenum format,
156*8975f5c5SAndroid Build Coastguard Worker                                                             GLenum type,
157*8975f5c5SAndroid Build Coastguard Worker                                                             void *pixels)
158*8975f5c5SAndroid Build Coastguard Worker {
159*8975f5c5SAndroid Build Coastguard Worker     UNREACHABLE();
160*8975f5c5SAndroid Build Coastguard Worker     return angle::Result::Stop;
161*8975f5c5SAndroid Build Coastguard Worker }
162*8975f5c5SAndroid Build Coastguard Worker }  // namespace rx
163*8975f5c5SAndroid Build Coastguard Worker 
164*8975f5c5SAndroid Build Coastguard Worker #endif  // LIBANGLE_RENDERER_RENDERBUFFERIMPL_H_
165