xref: /aosp_15_r20/external/angle/src/libANGLE/renderer/GLImplFactory.h (revision 8975f5c5ed3d1c378011245431ada316dfb6f244)
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