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