Home | History | Annotate | Download | only in src
      1 // Copyright 2015 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_WAFFLE_STUFF_H_
      6 #define BENCH_GL_WAFFLE_STUFF_H_
      7 
      8 #include <waffle.h>
      9 
     10 #include "glinterface.h"
     11 
     12 class WaffleInterface : public GLInterface {
     13  public:
     14 
     15   WaffleInterface() : display_(NULL),
     16                    config_(NULL),
     17                    surface_(NULL),
     18                    context_(NULL) { }
     19   virtual ~WaffleInterface() {}
     20 
     21   virtual bool Init();
     22   virtual void Cleanup();
     23 
     24   virtual void SwapBuffers();
     25   virtual bool SwapInterval(int interval);
     26 
     27   virtual void CheckError();
     28 
     29   virtual bool MakeCurrent(const GLContext& context);
     30   virtual const GLContext CreateContext();
     31   virtual void DeleteContext(const GLContext& context);
     32   virtual const GLContext& GetMainContext() {
     33     return context_;
     34   }
     35 
     36   const struct waffle_display* display() const {
     37     return display_;
     38   }
     39 
     40   const struct waffle_window* surface() const {
     41     return surface_;
     42   }
     43 
     44  private:
     45   void InitOnce();
     46   void GetSurfaceSize(GLint *width, GLint *height);
     47 
     48   struct waffle_display *display_;
     49   struct waffle_config *config_;
     50   struct waffle_window *surface_;
     51   struct waffle_context *context_;
     52 };
     53 
     54 #endif // BENCH_GL_WAFFLE_STUFF_H_
     55