xref: /aosp_15_r20/external/angle/src/libANGLE/renderer/gl/ContextGL.h (revision 8975f5c5ed3d1c378011245431ada316dfb6f244)
1*8975f5c5SAndroid Build Coastguard Worker //
2*8975f5c5SAndroid Build Coastguard Worker // Copyright 2016 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 // ContextGL:
7*8975f5c5SAndroid Build Coastguard Worker //   OpenGL-specific functionality associated with a GL Context.
8*8975f5c5SAndroid Build Coastguard Worker //
9*8975f5c5SAndroid Build Coastguard Worker 
10*8975f5c5SAndroid Build Coastguard Worker #ifndef LIBANGLE_RENDERER_GL_CONTEXTGL_H_
11*8975f5c5SAndroid Build Coastguard Worker #define LIBANGLE_RENDERER_GL_CONTEXTGL_H_
12*8975f5c5SAndroid Build Coastguard Worker 
13*8975f5c5SAndroid Build Coastguard Worker #include "libANGLE/renderer/ContextImpl.h"
14*8975f5c5SAndroid Build Coastguard Worker #include "libANGLE/renderer/gl/RendererGL.h"
15*8975f5c5SAndroid Build Coastguard Worker 
16*8975f5c5SAndroid Build Coastguard Worker namespace angle
17*8975f5c5SAndroid Build Coastguard Worker {
18*8975f5c5SAndroid Build Coastguard Worker struct FeaturesGL;
19*8975f5c5SAndroid Build Coastguard Worker }  // namespace angle
20*8975f5c5SAndroid Build Coastguard Worker 
21*8975f5c5SAndroid Build Coastguard Worker namespace sh
22*8975f5c5SAndroid Build Coastguard Worker {
23*8975f5c5SAndroid Build Coastguard Worker struct BlockMemberInfo;
24*8975f5c5SAndroid Build Coastguard Worker }  // namespace sh
25*8975f5c5SAndroid Build Coastguard Worker 
26*8975f5c5SAndroid Build Coastguard Worker namespace rx
27*8975f5c5SAndroid Build Coastguard Worker {
28*8975f5c5SAndroid Build Coastguard Worker class BlitGL;
29*8975f5c5SAndroid Build Coastguard Worker class ClearMultiviewGL;
30*8975f5c5SAndroid Build Coastguard Worker class FunctionsGL;
31*8975f5c5SAndroid Build Coastguard Worker class RendererGL;
32*8975f5c5SAndroid Build Coastguard Worker class StateManagerGL;
33*8975f5c5SAndroid Build Coastguard Worker 
34*8975f5c5SAndroid Build Coastguard Worker enum class RobustnessVideoMemoryPurgeStatus
35*8975f5c5SAndroid Build Coastguard Worker {
36*8975f5c5SAndroid Build Coastguard Worker     NOT_REQUESTED = 0,
37*8975f5c5SAndroid Build Coastguard Worker     REQUESTED     = 1,
38*8975f5c5SAndroid Build Coastguard Worker };
39*8975f5c5SAndroid Build Coastguard Worker 
40*8975f5c5SAndroid Build Coastguard Worker class ContextGL : public ContextImpl
41*8975f5c5SAndroid Build Coastguard Worker {
42*8975f5c5SAndroid Build Coastguard Worker   public:
43*8975f5c5SAndroid Build Coastguard Worker     ContextGL(const gl::State &state,
44*8975f5c5SAndroid Build Coastguard Worker               gl::ErrorSet *errorSet,
45*8975f5c5SAndroid Build Coastguard Worker               const std::shared_ptr<RendererGL> &renderer,
46*8975f5c5SAndroid Build Coastguard Worker               RobustnessVideoMemoryPurgeStatus robustnessVideoMemoryPurgeStatus);
47*8975f5c5SAndroid Build Coastguard Worker     ~ContextGL() override;
48*8975f5c5SAndroid Build Coastguard Worker 
49*8975f5c5SAndroid Build Coastguard Worker     angle::Result initialize(const angle::ImageLoadContext &imageLoadContext) override;
50*8975f5c5SAndroid Build Coastguard Worker 
51*8975f5c5SAndroid Build Coastguard Worker     // Shader creation
52*8975f5c5SAndroid Build Coastguard Worker     CompilerImpl *createCompiler() override;
53*8975f5c5SAndroid Build Coastguard Worker     ShaderImpl *createShader(const gl::ShaderState &data) override;
54*8975f5c5SAndroid Build Coastguard Worker     ProgramImpl *createProgram(const gl::ProgramState &data) override;
55*8975f5c5SAndroid Build Coastguard Worker     ProgramExecutableImpl *createProgramExecutable(
56*8975f5c5SAndroid Build Coastguard Worker         const gl::ProgramExecutable *executable) override;
57*8975f5c5SAndroid Build Coastguard Worker 
58*8975f5c5SAndroid Build Coastguard Worker     // Framebuffer creation
59*8975f5c5SAndroid Build Coastguard Worker     FramebufferImpl *createFramebuffer(const gl::FramebufferState &data) override;
60*8975f5c5SAndroid Build Coastguard Worker 
61*8975f5c5SAndroid Build Coastguard Worker     // Texture creation
62*8975f5c5SAndroid Build Coastguard Worker     TextureImpl *createTexture(const gl::TextureState &state) override;
63*8975f5c5SAndroid Build Coastguard Worker 
64*8975f5c5SAndroid Build Coastguard Worker     // Renderbuffer creation
65*8975f5c5SAndroid Build Coastguard Worker     RenderbufferImpl *createRenderbuffer(const gl::RenderbufferState &state) override;
66*8975f5c5SAndroid Build Coastguard Worker 
67*8975f5c5SAndroid Build Coastguard Worker     // Buffer creation
68*8975f5c5SAndroid Build Coastguard Worker     BufferImpl *createBuffer(const gl::BufferState &state) override;
69*8975f5c5SAndroid Build Coastguard Worker 
70*8975f5c5SAndroid Build Coastguard Worker     // Vertex Array creation
71*8975f5c5SAndroid Build Coastguard Worker     VertexArrayImpl *createVertexArray(const gl::VertexArrayState &data) override;
72*8975f5c5SAndroid Build Coastguard Worker 
73*8975f5c5SAndroid Build Coastguard Worker     // Query and Fence creation
74*8975f5c5SAndroid Build Coastguard Worker     QueryImpl *createQuery(gl::QueryType type) override;
75*8975f5c5SAndroid Build Coastguard Worker     FenceNVImpl *createFenceNV() override;
76*8975f5c5SAndroid Build Coastguard Worker     SyncImpl *createSync() override;
77*8975f5c5SAndroid Build Coastguard Worker 
78*8975f5c5SAndroid Build Coastguard Worker     // Transform Feedback creation
79*8975f5c5SAndroid Build Coastguard Worker     TransformFeedbackImpl *createTransformFeedback(
80*8975f5c5SAndroid Build Coastguard Worker         const gl::TransformFeedbackState &state) override;
81*8975f5c5SAndroid Build Coastguard Worker 
82*8975f5c5SAndroid Build Coastguard Worker     // Sampler object creation
83*8975f5c5SAndroid Build Coastguard Worker     SamplerImpl *createSampler(const gl::SamplerState &state) override;
84*8975f5c5SAndroid Build Coastguard Worker 
85*8975f5c5SAndroid Build Coastguard Worker     // Program Pipeline object creation
86*8975f5c5SAndroid Build Coastguard Worker     ProgramPipelineImpl *createProgramPipeline(const gl::ProgramPipelineState &data) override;
87*8975f5c5SAndroid Build Coastguard Worker 
88*8975f5c5SAndroid Build Coastguard Worker     // Memory object creation.
89*8975f5c5SAndroid Build Coastguard Worker     MemoryObjectImpl *createMemoryObject() override;
90*8975f5c5SAndroid Build Coastguard Worker 
91*8975f5c5SAndroid Build Coastguard Worker     // Semaphore creation.
92*8975f5c5SAndroid Build Coastguard Worker     SemaphoreImpl *createSemaphore() override;
93*8975f5c5SAndroid Build Coastguard Worker 
94*8975f5c5SAndroid Build Coastguard Worker     // Overlay creation.
95*8975f5c5SAndroid Build Coastguard Worker     OverlayImpl *createOverlay(const gl::OverlayState &state) override;
96*8975f5c5SAndroid Build Coastguard Worker 
97*8975f5c5SAndroid Build Coastguard Worker     // Flush and finish.
98*8975f5c5SAndroid Build Coastguard Worker     angle::Result flush(const gl::Context *context) override;
99*8975f5c5SAndroid Build Coastguard Worker     angle::Result finish(const gl::Context *context) override;
100*8975f5c5SAndroid Build Coastguard Worker 
101*8975f5c5SAndroid Build Coastguard Worker     // Drawing methods.
102*8975f5c5SAndroid Build Coastguard Worker     angle::Result drawArrays(const gl::Context *context,
103*8975f5c5SAndroid Build Coastguard Worker                              gl::PrimitiveMode mode,
104*8975f5c5SAndroid Build Coastguard Worker                              GLint first,
105*8975f5c5SAndroid Build Coastguard Worker                              GLsizei count) override;
106*8975f5c5SAndroid Build Coastguard Worker     angle::Result drawArraysInstanced(const gl::Context *context,
107*8975f5c5SAndroid Build Coastguard Worker                                       gl::PrimitiveMode mode,
108*8975f5c5SAndroid Build Coastguard Worker                                       GLint first,
109*8975f5c5SAndroid Build Coastguard Worker                                       GLsizei count,
110*8975f5c5SAndroid Build Coastguard Worker                                       GLsizei instanceCount) override;
111*8975f5c5SAndroid Build Coastguard Worker     angle::Result drawArraysInstancedBaseInstance(const gl::Context *context,
112*8975f5c5SAndroid Build Coastguard Worker                                                   gl::PrimitiveMode mode,
113*8975f5c5SAndroid Build Coastguard Worker                                                   GLint first,
114*8975f5c5SAndroid Build Coastguard Worker                                                   GLsizei count,
115*8975f5c5SAndroid Build Coastguard Worker                                                   GLsizei instanceCount,
116*8975f5c5SAndroid Build Coastguard Worker                                                   GLuint baseInstance) override;
117*8975f5c5SAndroid Build Coastguard Worker 
118*8975f5c5SAndroid Build Coastguard Worker     angle::Result drawElements(const gl::Context *context,
119*8975f5c5SAndroid Build Coastguard Worker                                gl::PrimitiveMode mode,
120*8975f5c5SAndroid Build Coastguard Worker                                GLsizei count,
121*8975f5c5SAndroid Build Coastguard Worker                                gl::DrawElementsType type,
122*8975f5c5SAndroid Build Coastguard Worker                                const void *indices) override;
123*8975f5c5SAndroid Build Coastguard Worker     angle::Result drawElementsBaseVertex(const gl::Context *context,
124*8975f5c5SAndroid Build Coastguard Worker                                          gl::PrimitiveMode mode,
125*8975f5c5SAndroid Build Coastguard Worker                                          GLsizei count,
126*8975f5c5SAndroid Build Coastguard Worker                                          gl::DrawElementsType type,
127*8975f5c5SAndroid Build Coastguard Worker                                          const void *indices,
128*8975f5c5SAndroid Build Coastguard Worker                                          GLint baseVertex) override;
129*8975f5c5SAndroid Build Coastguard Worker     angle::Result drawElementsInstanced(const gl::Context *context,
130*8975f5c5SAndroid Build Coastguard Worker                                         gl::PrimitiveMode mode,
131*8975f5c5SAndroid Build Coastguard Worker                                         GLsizei count,
132*8975f5c5SAndroid Build Coastguard Worker                                         gl::DrawElementsType type,
133*8975f5c5SAndroid Build Coastguard Worker                                         const void *indices,
134*8975f5c5SAndroid Build Coastguard Worker                                         GLsizei instances) override;
135*8975f5c5SAndroid Build Coastguard Worker     angle::Result drawElementsInstancedBaseVertex(const gl::Context *context,
136*8975f5c5SAndroid Build Coastguard Worker                                                   gl::PrimitiveMode mode,
137*8975f5c5SAndroid Build Coastguard Worker                                                   GLsizei count,
138*8975f5c5SAndroid Build Coastguard Worker                                                   gl::DrawElementsType type,
139*8975f5c5SAndroid Build Coastguard Worker                                                   const void *indices,
140*8975f5c5SAndroid Build Coastguard Worker                                                   GLsizei instanceCount,
141*8975f5c5SAndroid Build Coastguard Worker                                                   GLint baseVertex) override;
142*8975f5c5SAndroid Build Coastguard Worker     angle::Result drawElementsInstancedBaseVertexBaseInstance(const gl::Context *context,
143*8975f5c5SAndroid Build Coastguard Worker                                                               gl::PrimitiveMode mode,
144*8975f5c5SAndroid Build Coastguard Worker                                                               GLsizei count,
145*8975f5c5SAndroid Build Coastguard Worker                                                               gl::DrawElementsType type,
146*8975f5c5SAndroid Build Coastguard Worker                                                               const void *indices,
147*8975f5c5SAndroid Build Coastguard Worker                                                               GLsizei instances,
148*8975f5c5SAndroid Build Coastguard Worker                                                               GLint baseVertex,
149*8975f5c5SAndroid Build Coastguard Worker                                                               GLuint baseInstance) override;
150*8975f5c5SAndroid Build Coastguard Worker     angle::Result drawRangeElements(const gl::Context *context,
151*8975f5c5SAndroid Build Coastguard Worker                                     gl::PrimitiveMode mode,
152*8975f5c5SAndroid Build Coastguard Worker                                     GLuint start,
153*8975f5c5SAndroid Build Coastguard Worker                                     GLuint end,
154*8975f5c5SAndroid Build Coastguard Worker                                     GLsizei count,
155*8975f5c5SAndroid Build Coastguard Worker                                     gl::DrawElementsType type,
156*8975f5c5SAndroid Build Coastguard Worker                                     const void *indices) override;
157*8975f5c5SAndroid Build Coastguard Worker     angle::Result drawRangeElementsBaseVertex(const gl::Context *context,
158*8975f5c5SAndroid Build Coastguard Worker                                               gl::PrimitiveMode mode,
159*8975f5c5SAndroid Build Coastguard Worker                                               GLuint start,
160*8975f5c5SAndroid Build Coastguard Worker                                               GLuint end,
161*8975f5c5SAndroid Build Coastguard Worker                                               GLsizei count,
162*8975f5c5SAndroid Build Coastguard Worker                                               gl::DrawElementsType type,
163*8975f5c5SAndroid Build Coastguard Worker                                               const void *indices,
164*8975f5c5SAndroid Build Coastguard Worker                                               GLint baseVertex) override;
165*8975f5c5SAndroid Build Coastguard Worker     angle::Result drawArraysIndirect(const gl::Context *context,
166*8975f5c5SAndroid Build Coastguard Worker                                      gl::PrimitiveMode mode,
167*8975f5c5SAndroid Build Coastguard Worker                                      const void *indirect) override;
168*8975f5c5SAndroid Build Coastguard Worker     angle::Result drawElementsIndirect(const gl::Context *context,
169*8975f5c5SAndroid Build Coastguard Worker                                        gl::PrimitiveMode mode,
170*8975f5c5SAndroid Build Coastguard Worker                                        gl::DrawElementsType type,
171*8975f5c5SAndroid Build Coastguard Worker                                        const void *indirect) override;
172*8975f5c5SAndroid Build Coastguard Worker 
173*8975f5c5SAndroid Build Coastguard Worker     angle::Result multiDrawArrays(const gl::Context *context,
174*8975f5c5SAndroid Build Coastguard Worker                                   gl::PrimitiveMode mode,
175*8975f5c5SAndroid Build Coastguard Worker                                   const GLint *firsts,
176*8975f5c5SAndroid Build Coastguard Worker                                   const GLsizei *counts,
177*8975f5c5SAndroid Build Coastguard Worker                                   GLsizei drawcount) override;
178*8975f5c5SAndroid Build Coastguard Worker     angle::Result multiDrawArraysInstanced(const gl::Context *context,
179*8975f5c5SAndroid Build Coastguard Worker                                            gl::PrimitiveMode mode,
180*8975f5c5SAndroid Build Coastguard Worker                                            const GLint *firsts,
181*8975f5c5SAndroid Build Coastguard Worker                                            const GLsizei *counts,
182*8975f5c5SAndroid Build Coastguard Worker                                            const GLsizei *instanceCounts,
183*8975f5c5SAndroid Build Coastguard Worker                                            GLsizei drawcount) override;
184*8975f5c5SAndroid Build Coastguard Worker     angle::Result multiDrawArraysIndirect(const gl::Context *context,
185*8975f5c5SAndroid Build Coastguard Worker                                           gl::PrimitiveMode mode,
186*8975f5c5SAndroid Build Coastguard Worker                                           const void *indirect,
187*8975f5c5SAndroid Build Coastguard Worker                                           GLsizei drawcount,
188*8975f5c5SAndroid Build Coastguard Worker                                           GLsizei stride) override;
189*8975f5c5SAndroid Build Coastguard Worker     angle::Result multiDrawElements(const gl::Context *context,
190*8975f5c5SAndroid Build Coastguard Worker                                     gl::PrimitiveMode mode,
191*8975f5c5SAndroid Build Coastguard Worker                                     const GLsizei *counts,
192*8975f5c5SAndroid Build Coastguard Worker                                     gl::DrawElementsType type,
193*8975f5c5SAndroid Build Coastguard Worker                                     const GLvoid *const *indices,
194*8975f5c5SAndroid Build Coastguard Worker                                     GLsizei drawcount) override;
195*8975f5c5SAndroid Build Coastguard Worker     angle::Result multiDrawElementsInstanced(const gl::Context *context,
196*8975f5c5SAndroid Build Coastguard Worker                                              gl::PrimitiveMode mode,
197*8975f5c5SAndroid Build Coastguard Worker                                              const GLsizei *counts,
198*8975f5c5SAndroid Build Coastguard Worker                                              gl::DrawElementsType type,
199*8975f5c5SAndroid Build Coastguard Worker                                              const GLvoid *const *indices,
200*8975f5c5SAndroid Build Coastguard Worker                                              const GLsizei *instanceCounts,
201*8975f5c5SAndroid Build Coastguard Worker                                              GLsizei drawcount) override;
202*8975f5c5SAndroid Build Coastguard Worker     angle::Result multiDrawElementsIndirect(const gl::Context *context,
203*8975f5c5SAndroid Build Coastguard Worker                                             gl::PrimitiveMode mode,
204*8975f5c5SAndroid Build Coastguard Worker                                             gl::DrawElementsType type,
205*8975f5c5SAndroid Build Coastguard Worker                                             const void *indirect,
206*8975f5c5SAndroid Build Coastguard Worker                                             GLsizei drawcount,
207*8975f5c5SAndroid Build Coastguard Worker                                             GLsizei stride) override;
208*8975f5c5SAndroid Build Coastguard Worker     angle::Result multiDrawArraysInstancedBaseInstance(const gl::Context *context,
209*8975f5c5SAndroid Build Coastguard Worker                                                        gl::PrimitiveMode mode,
210*8975f5c5SAndroid Build Coastguard Worker                                                        const GLint *firsts,
211*8975f5c5SAndroid Build Coastguard Worker                                                        const GLsizei *counts,
212*8975f5c5SAndroid Build Coastguard Worker                                                        const GLsizei *instanceCounts,
213*8975f5c5SAndroid Build Coastguard Worker                                                        const GLuint *baseInstances,
214*8975f5c5SAndroid Build Coastguard Worker                                                        GLsizei drawcount) override;
215*8975f5c5SAndroid Build Coastguard Worker     angle::Result multiDrawElementsInstancedBaseVertexBaseInstance(const gl::Context *context,
216*8975f5c5SAndroid Build Coastguard Worker                                                                    gl::PrimitiveMode mode,
217*8975f5c5SAndroid Build Coastguard Worker                                                                    const GLsizei *counts,
218*8975f5c5SAndroid Build Coastguard Worker                                                                    gl::DrawElementsType type,
219*8975f5c5SAndroid Build Coastguard Worker                                                                    const GLvoid *const *indices,
220*8975f5c5SAndroid Build Coastguard Worker                                                                    const GLsizei *instanceCounts,
221*8975f5c5SAndroid Build Coastguard Worker                                                                    const GLint *baseVertices,
222*8975f5c5SAndroid Build Coastguard Worker                                                                    const GLuint *baseInstances,
223*8975f5c5SAndroid Build Coastguard Worker                                                                    GLsizei drawcount) override;
224*8975f5c5SAndroid Build Coastguard Worker 
225*8975f5c5SAndroid Build Coastguard Worker     // Device loss
226*8975f5c5SAndroid Build Coastguard Worker     gl::GraphicsResetStatus getResetStatus() override;
227*8975f5c5SAndroid Build Coastguard Worker 
228*8975f5c5SAndroid Build Coastguard Worker     // EXT_debug_marker
229*8975f5c5SAndroid Build Coastguard Worker     angle::Result insertEventMarker(GLsizei length, const char *marker) override;
230*8975f5c5SAndroid Build Coastguard Worker     angle::Result pushGroupMarker(GLsizei length, const char *marker) override;
231*8975f5c5SAndroid Build Coastguard Worker     angle::Result popGroupMarker() override;
232*8975f5c5SAndroid Build Coastguard Worker 
233*8975f5c5SAndroid Build Coastguard Worker     // KHR_debug
234*8975f5c5SAndroid Build Coastguard Worker     angle::Result pushDebugGroup(const gl::Context *context,
235*8975f5c5SAndroid Build Coastguard Worker                                  GLenum source,
236*8975f5c5SAndroid Build Coastguard Worker                                  GLuint id,
237*8975f5c5SAndroid Build Coastguard Worker                                  const std::string &message) override;
238*8975f5c5SAndroid Build Coastguard Worker     angle::Result popDebugGroup(const gl::Context *context) override;
239*8975f5c5SAndroid Build Coastguard Worker 
240*8975f5c5SAndroid Build Coastguard Worker     // State sync with dirty bits.
241*8975f5c5SAndroid Build Coastguard Worker     angle::Result syncState(const gl::Context *context,
242*8975f5c5SAndroid Build Coastguard Worker                             const gl::state::DirtyBits dirtyBits,
243*8975f5c5SAndroid Build Coastguard Worker                             const gl::state::DirtyBits bitMask,
244*8975f5c5SAndroid Build Coastguard Worker                             const gl::state::ExtendedDirtyBits extendedDirtyBits,
245*8975f5c5SAndroid Build Coastguard Worker                             const gl::state::ExtendedDirtyBits extendedBitMask,
246*8975f5c5SAndroid Build Coastguard Worker                             gl::Command command) override;
247*8975f5c5SAndroid Build Coastguard Worker 
248*8975f5c5SAndroid Build Coastguard Worker     // Disjoint timer queries
249*8975f5c5SAndroid Build Coastguard Worker     GLint getGPUDisjoint() override;
250*8975f5c5SAndroid Build Coastguard Worker     GLint64 getTimestamp() override;
251*8975f5c5SAndroid Build Coastguard Worker 
252*8975f5c5SAndroid Build Coastguard Worker     // Context switching
253*8975f5c5SAndroid Build Coastguard Worker     angle::Result onMakeCurrent(const gl::Context *context) override;
254*8975f5c5SAndroid Build Coastguard Worker     angle::Result onUnMakeCurrent(const gl::Context *context) override;
255*8975f5c5SAndroid Build Coastguard Worker 
256*8975f5c5SAndroid Build Coastguard Worker     // Caps queries
257*8975f5c5SAndroid Build Coastguard Worker     gl::Caps getNativeCaps() const override;
258*8975f5c5SAndroid Build Coastguard Worker     const gl::TextureCapsMap &getNativeTextureCaps() const override;
259*8975f5c5SAndroid Build Coastguard Worker     const gl::Extensions &getNativeExtensions() const override;
260*8975f5c5SAndroid Build Coastguard Worker     const gl::Limitations &getNativeLimitations() const override;
261*8975f5c5SAndroid Build Coastguard Worker     const ShPixelLocalStorageOptions &getNativePixelLocalStorageOptions() const override;
262*8975f5c5SAndroid Build Coastguard Worker 
263*8975f5c5SAndroid Build Coastguard Worker     // Handle helpers
getFunctions()264*8975f5c5SAndroid Build Coastguard Worker     ANGLE_INLINE const FunctionsGL *getFunctions() const { return mRenderer->getFunctions(); }
265*8975f5c5SAndroid Build Coastguard Worker 
266*8975f5c5SAndroid Build Coastguard Worker     StateManagerGL *getStateManager();
267*8975f5c5SAndroid Build Coastguard Worker     const angle::FeaturesGL &getFeaturesGL() const;
268*8975f5c5SAndroid Build Coastguard Worker     BlitGL *getBlitter() const;
269*8975f5c5SAndroid Build Coastguard Worker     ClearMultiviewGL *getMultiviewClearer() const;
270*8975f5c5SAndroid Build Coastguard Worker 
271*8975f5c5SAndroid Build Coastguard Worker     angle::Result dispatchCompute(const gl::Context *context,
272*8975f5c5SAndroid Build Coastguard Worker                                   GLuint numGroupsX,
273*8975f5c5SAndroid Build Coastguard Worker                                   GLuint numGroupsY,
274*8975f5c5SAndroid Build Coastguard Worker                                   GLuint numGroupsZ) override;
275*8975f5c5SAndroid Build Coastguard Worker     angle::Result dispatchComputeIndirect(const gl::Context *context, GLintptr indirect) override;
276*8975f5c5SAndroid Build Coastguard Worker 
277*8975f5c5SAndroid Build Coastguard Worker     angle::Result memoryBarrier(const gl::Context *context, GLbitfield barriers) override;
278*8975f5c5SAndroid Build Coastguard Worker     angle::Result memoryBarrierByRegion(const gl::Context *context, GLbitfield barriers) override;
279*8975f5c5SAndroid Build Coastguard Worker 
280*8975f5c5SAndroid Build Coastguard Worker     void framebufferFetchBarrier() override;
281*8975f5c5SAndroid Build Coastguard Worker 
282*8975f5c5SAndroid Build Coastguard Worker     angle::Result startTiling(const gl::Context *context,
283*8975f5c5SAndroid Build Coastguard Worker                               const gl::Rectangle &area,
284*8975f5c5SAndroid Build Coastguard Worker                               GLbitfield preserveMask) override;
285*8975f5c5SAndroid Build Coastguard Worker     angle::Result endTiling(const gl::Context *context, GLbitfield preserveMask) override;
286*8975f5c5SAndroid Build Coastguard Worker 
287*8975f5c5SAndroid Build Coastguard Worker     void setMaxShaderCompilerThreads(GLuint count) override;
288*8975f5c5SAndroid Build Coastguard Worker 
289*8975f5c5SAndroid Build Coastguard Worker     void invalidateTexture(gl::TextureType target) override;
290*8975f5c5SAndroid Build Coastguard Worker 
291*8975f5c5SAndroid Build Coastguard Worker     void validateState() const;
292*8975f5c5SAndroid Build Coastguard Worker 
293*8975f5c5SAndroid Build Coastguard Worker     void setNeedsFlushBeforeDeleteTextures();
294*8975f5c5SAndroid Build Coastguard Worker     void flushIfNecessaryBeforeDeleteTextures();
295*8975f5c5SAndroid Build Coastguard Worker 
296*8975f5c5SAndroid Build Coastguard Worker     void markWorkSubmitted();
297*8975f5c5SAndroid Build Coastguard Worker 
298*8975f5c5SAndroid Build Coastguard Worker     MultiviewImplementationTypeGL getMultiviewImplementationType() const;
299*8975f5c5SAndroid Build Coastguard Worker     bool hasNativeParallelCompile();
300*8975f5c5SAndroid Build Coastguard Worker 
getDebug()301*8975f5c5SAndroid Build Coastguard Worker     const gl::Debug &getDebug() const { return mState.getDebug(); }
302*8975f5c5SAndroid Build Coastguard Worker 
303*8975f5c5SAndroid Build Coastguard Worker   private:
304*8975f5c5SAndroid Build Coastguard Worker     angle::Result setDrawArraysState(const gl::Context *context,
305*8975f5c5SAndroid Build Coastguard Worker                                      GLint first,
306*8975f5c5SAndroid Build Coastguard Worker                                      GLsizei count,
307*8975f5c5SAndroid Build Coastguard Worker                                      GLsizei instanceCount);
308*8975f5c5SAndroid Build Coastguard Worker 
309*8975f5c5SAndroid Build Coastguard Worker     angle::Result setDrawElementsState(const gl::Context *context,
310*8975f5c5SAndroid Build Coastguard Worker                                        GLsizei count,
311*8975f5c5SAndroid Build Coastguard Worker                                        gl::DrawElementsType type,
312*8975f5c5SAndroid Build Coastguard Worker                                        const void *indices,
313*8975f5c5SAndroid Build Coastguard Worker                                        GLsizei instanceCount,
314*8975f5c5SAndroid Build Coastguard Worker                                        const void **outIndices);
315*8975f5c5SAndroid Build Coastguard Worker 
316*8975f5c5SAndroid Build Coastguard Worker     gl::AttributesMask updateAttributesForBaseInstance(GLuint baseInstance);
317*8975f5c5SAndroid Build Coastguard Worker     void resetUpdatedAttributes(gl::AttributesMask attribMask);
318*8975f5c5SAndroid Build Coastguard Worker 
319*8975f5c5SAndroid Build Coastguard Worker   protected:
320*8975f5c5SAndroid Build Coastguard Worker     std::shared_ptr<RendererGL> mRenderer;
321*8975f5c5SAndroid Build Coastguard Worker 
322*8975f5c5SAndroid Build Coastguard Worker     RobustnessVideoMemoryPurgeStatus mRobustnessVideoMemoryPurgeStatus;
323*8975f5c5SAndroid Build Coastguard Worker };
324*8975f5c5SAndroid Build Coastguard Worker 
325*8975f5c5SAndroid Build Coastguard Worker }  // namespace rx
326*8975f5c5SAndroid Build Coastguard Worker 
327*8975f5c5SAndroid Build Coastguard Worker #endif  // LIBANGLE_RENDERER_GL_CONTEXTGL_H_
328