1*8975f5c5SAndroid Build Coastguard Worker // 2*8975f5c5SAndroid Build Coastguard Worker // Copyright 2015 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 // GLImplFactory.h: 7*8975f5c5SAndroid Build Coastguard Worker // Factory interface for OpenGL ES Impl objects. 8*8975f5c5SAndroid Build Coastguard Worker // 9*8975f5c5SAndroid Build Coastguard Worker 10*8975f5c5SAndroid Build Coastguard Worker #ifndef LIBANGLE_RENDERER_GLIMPLFACTORY_H_ 11*8975f5c5SAndroid Build Coastguard Worker #define LIBANGLE_RENDERER_GLIMPLFACTORY_H_ 12*8975f5c5SAndroid Build Coastguard Worker 13*8975f5c5SAndroid Build Coastguard Worker #include <vector> 14*8975f5c5SAndroid Build Coastguard Worker 15*8975f5c5SAndroid Build Coastguard Worker #include "angle_gl.h" 16*8975f5c5SAndroid Build Coastguard Worker #include "libANGLE/Framebuffer.h" 17*8975f5c5SAndroid Build Coastguard Worker #include "libANGLE/Overlay.h" 18*8975f5c5SAndroid Build Coastguard Worker #include "libANGLE/Program.h" 19*8975f5c5SAndroid Build Coastguard Worker #include "libANGLE/ProgramExecutable.h" 20*8975f5c5SAndroid Build Coastguard Worker #include "libANGLE/ProgramPipeline.h" 21*8975f5c5SAndroid Build Coastguard Worker #include "libANGLE/Renderbuffer.h" 22*8975f5c5SAndroid Build Coastguard Worker #include "libANGLE/Shader.h" 23*8975f5c5SAndroid Build Coastguard Worker #include "libANGLE/Texture.h" 24*8975f5c5SAndroid Build Coastguard Worker #include "libANGLE/TransformFeedback.h" 25*8975f5c5SAndroid Build Coastguard Worker #include "libANGLE/VertexArray.h" 26*8975f5c5SAndroid Build Coastguard Worker #include "libANGLE/renderer/serial_utils.h" 27*8975f5c5SAndroid Build Coastguard Worker 28*8975f5c5SAndroid Build Coastguard Worker namespace gl 29*8975f5c5SAndroid Build Coastguard Worker { 30*8975f5c5SAndroid Build Coastguard Worker class State; 31*8975f5c5SAndroid Build Coastguard Worker } // namespace gl 32*8975f5c5SAndroid Build Coastguard Worker 33*8975f5c5SAndroid Build Coastguard Worker namespace rx 34*8975f5c5SAndroid Build Coastguard Worker { 35*8975f5c5SAndroid Build Coastguard Worker class BufferImpl; 36*8975f5c5SAndroid Build Coastguard Worker class CompilerImpl; 37*8975f5c5SAndroid Build Coastguard Worker class ContextImpl; 38*8975f5c5SAndroid Build Coastguard Worker class FenceNVImpl; 39*8975f5c5SAndroid Build Coastguard Worker class SyncImpl; 40*8975f5c5SAndroid Build Coastguard Worker class FramebufferImpl; 41*8975f5c5SAndroid Build Coastguard Worker class MemoryObjectImpl; 42*8975f5c5SAndroid Build Coastguard Worker class OverlayImpl; 43*8975f5c5SAndroid Build Coastguard Worker class PathImpl; 44*8975f5c5SAndroid Build Coastguard Worker class ProgramExecutableImpl; 45*8975f5c5SAndroid Build Coastguard Worker class ProgramImpl; 46*8975f5c5SAndroid Build Coastguard Worker class ProgramPipelineImpl; 47*8975f5c5SAndroid Build Coastguard Worker class QueryImpl; 48*8975f5c5SAndroid Build Coastguard Worker class RenderbufferImpl; 49*8975f5c5SAndroid Build Coastguard Worker class SamplerImpl; 50*8975f5c5SAndroid Build Coastguard Worker class SemaphoreImpl; 51*8975f5c5SAndroid Build Coastguard Worker class ShaderImpl; 52*8975f5c5SAndroid Build Coastguard Worker class TextureImpl; 53*8975f5c5SAndroid Build Coastguard Worker class TransformFeedbackImpl; 54*8975f5c5SAndroid Build Coastguard Worker class VertexArrayImpl; 55*8975f5c5SAndroid Build Coastguard Worker 56*8975f5c5SAndroid Build Coastguard Worker class GLImplFactory : angle::NonCopyable 57*8975f5c5SAndroid Build Coastguard Worker { 58*8975f5c5SAndroid Build Coastguard Worker public: 59*8975f5c5SAndroid Build Coastguard Worker GLImplFactory(); 60*8975f5c5SAndroid Build Coastguard Worker virtual ~GLImplFactory(); 61*8975f5c5SAndroid Build Coastguard Worker 62*8975f5c5SAndroid Build Coastguard Worker // Shader creation 63*8975f5c5SAndroid Build Coastguard Worker virtual CompilerImpl *createCompiler() = 0; 64*8975f5c5SAndroid Build Coastguard Worker virtual ShaderImpl *createShader(const gl::ShaderState &data) = 0; 65*8975f5c5SAndroid Build Coastguard Worker virtual ProgramImpl *createProgram(const gl::ProgramState &data) = 0; 66*8975f5c5SAndroid Build Coastguard Worker virtual ProgramExecutableImpl *createProgramExecutable( 67*8975f5c5SAndroid Build Coastguard Worker const gl::ProgramExecutable *executable) = 0; 68*8975f5c5SAndroid Build Coastguard Worker 69*8975f5c5SAndroid Build Coastguard Worker // Framebuffer creation 70*8975f5c5SAndroid Build Coastguard Worker virtual FramebufferImpl *createFramebuffer(const gl::FramebufferState &data) = 0; 71*8975f5c5SAndroid Build Coastguard Worker 72*8975f5c5SAndroid Build Coastguard Worker // Texture creation 73*8975f5c5SAndroid Build Coastguard Worker virtual TextureImpl *createTexture(const gl::TextureState &state) = 0; 74*8975f5c5SAndroid Build Coastguard Worker 75*8975f5c5SAndroid Build Coastguard Worker // Renderbuffer creation 76*8975f5c5SAndroid Build Coastguard Worker virtual RenderbufferImpl *createRenderbuffer(const gl::RenderbufferState &state) = 0; 77*8975f5c5SAndroid Build Coastguard Worker 78*8975f5c5SAndroid Build Coastguard Worker // Buffer creation 79*8975f5c5SAndroid Build Coastguard Worker virtual BufferImpl *createBuffer(const gl::BufferState &state) = 0; 80*8975f5c5SAndroid Build Coastguard Worker 81*8975f5c5SAndroid Build Coastguard Worker // Vertex Array creation 82*8975f5c5SAndroid Build Coastguard Worker virtual VertexArrayImpl *createVertexArray(const gl::VertexArrayState &data) = 0; 83*8975f5c5SAndroid Build Coastguard Worker 84*8975f5c5SAndroid Build Coastguard Worker // Query and Fence creation 85*8975f5c5SAndroid Build Coastguard Worker virtual QueryImpl *createQuery(gl::QueryType type) = 0; 86*8975f5c5SAndroid Build Coastguard Worker virtual FenceNVImpl *createFenceNV() = 0; 87*8975f5c5SAndroid Build Coastguard Worker virtual SyncImpl *createSync() = 0; 88*8975f5c5SAndroid Build Coastguard Worker 89*8975f5c5SAndroid Build Coastguard Worker // Transform Feedback creation 90*8975f5c5SAndroid Build Coastguard Worker virtual TransformFeedbackImpl *createTransformFeedback( 91*8975f5c5SAndroid Build Coastguard Worker const gl::TransformFeedbackState &state) = 0; 92*8975f5c5SAndroid Build Coastguard Worker 93*8975f5c5SAndroid Build Coastguard Worker // Sampler object creation 94*8975f5c5SAndroid Build Coastguard Worker virtual SamplerImpl *createSampler(const gl::SamplerState &state) = 0; 95*8975f5c5SAndroid Build Coastguard Worker 96*8975f5c5SAndroid Build Coastguard Worker // Program Pipeline object creation 97*8975f5c5SAndroid Build Coastguard Worker virtual ProgramPipelineImpl *createProgramPipeline(const gl::ProgramPipelineState &data) = 0; 98*8975f5c5SAndroid Build Coastguard Worker 99*8975f5c5SAndroid Build Coastguard Worker // Memory object creation 100*8975f5c5SAndroid Build Coastguard Worker virtual MemoryObjectImpl *createMemoryObject() = 0; 101*8975f5c5SAndroid Build Coastguard Worker 102*8975f5c5SAndroid Build Coastguard Worker // Semaphore creation 103*8975f5c5SAndroid Build Coastguard Worker virtual SemaphoreImpl *createSemaphore() = 0; 104*8975f5c5SAndroid Build Coastguard Worker 105*8975f5c5SAndroid Build Coastguard Worker // Overlay creation 106*8975f5c5SAndroid Build Coastguard Worker virtual OverlayImpl *createOverlay(const gl::OverlayState &state) = 0; 107*8975f5c5SAndroid Build Coastguard Worker generateSerial()108*8975f5c5SAndroid Build Coastguard Worker rx::UniqueSerial generateSerial() { return mSerialFactory.generate(); } 109*8975f5c5SAndroid Build Coastguard Worker 110*8975f5c5SAndroid Build Coastguard Worker private: 111*8975f5c5SAndroid Build Coastguard Worker rx::UniqueSerialFactory mSerialFactory; 112*8975f5c5SAndroid Build Coastguard Worker }; 113*8975f5c5SAndroid Build Coastguard Worker 114*8975f5c5SAndroid Build Coastguard Worker inline GLImplFactory::GLImplFactory() = default; 115*8975f5c5SAndroid Build Coastguard Worker 116*8975f5c5SAndroid Build Coastguard Worker inline GLImplFactory::~GLImplFactory() = default; 117*8975f5c5SAndroid Build Coastguard Worker 118*8975f5c5SAndroid Build Coastguard Worker } // namespace rx 119*8975f5c5SAndroid Build Coastguard Worker 120*8975f5c5SAndroid Build Coastguard Worker #endif // LIBANGLE_RENDERER_GLIMPLFACTORY_H_ 121