tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

GLImplFactory.h (3240B)


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