Home | History | Annotate | Download | only in src
      1 // Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #ifndef BENCH_GL_GLINTERFACE_H_
      6 #define BENCH_GL_GLINTERFACE_H_
      7 
      8 #include <memory>
      9 
     10 //TODO: Remove cases where PLATFORM is not defined, when no longer needed.
     11 //      Only synccontroltest and teartest get compiled that way, and we plan
     12 //      to remove them.
     13 #ifdef PLATFORM
     14 
     15 typedef struct waffle_context *GLContext;  // Forward declaration from waffle.h.
     16 
     17 #else
     18 
     19 #include <X11/Xutil.h>
     20 
     21 #if defined(USE_OPENGL)
     22 
     23 struct __GLXcontextRec;  // Forward declaration from GLX.h.
     24 typedef struct __GLXcontextRec *GLXContext;
     25 typedef GLXContext GLContext;
     26 
     27 #elif defined(USE_OPENGLES)
     28 
     29 typedef void *EGLContext;  // Forward declaration from EGL.h.
     30 typedef EGLContext GLContext;
     31 
     32 #endif
     33 #endif
     34 
     35 //TODO: Once synccontroltest and teartest are removed, only the waffle
     36 //      implementation of this interface will remain.  At that time consider
     37 //      removing this class as waffle itself provides platform-independence.
     38 class GLInterface {
     39  public:
     40   GLInterface() {}
     41   virtual ~GLInterface() {}
     42   virtual bool Init() = 0;
     43   virtual void Cleanup() = 0;
     44 #ifndef PLATFORM
     45   virtual XVisualInfo* GetXVisual() = 0;
     46 #endif
     47 
     48   virtual void SwapBuffers() = 0;
     49   //TODO: Remove this when it is no longer used.
     50   //      Only teartest calls this, and we plan to remove that.
     51   virtual bool SwapInterval(int interval) = 0;
     52 
     53   //TODO: Remove this when it is no longer used.
     54   //      Only synccontroltest_egl calls this, and we plan to remove that.
     55   virtual void CheckError() = 0;
     56 
     57   virtual bool MakeCurrent(const GLContext& context) = 0;
     58   virtual const GLContext CreateContext() = 0;
     59   virtual void DeleteContext(const GLContext& context) = 0;
     60   virtual const GLContext& GetMainContext() = 0;
     61 
     62   static GLInterface* Create();
     63 };
     64 
     65 extern std::unique_ptr<GLInterface> g_main_gl_interface;
     66 
     67 #endif  // BENCH_GL_GLINTERFACE_H_
     68