blob: 6d7f5c9f3505476317282cf49a1c7d3b324e795e [file] [log] [blame]
// Copyright 2015 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef BENCH_GL_WAFFLE_STUFF_H_
#define BENCH_GL_WAFFLE_STUFF_H_
#include <waffle.h>
#include "glinterface.h"
class WaffleInterface : public GLInterface {
public:
WaffleInterface()
: display_(NULL), config_(NULL), surface_(NULL), context_(NULL) {}
virtual ~WaffleInterface() {}
virtual bool Init();
virtual void Cleanup();
virtual void SwapBuffers();
virtual bool SwapInterval(int interval);
virtual void CheckError();
virtual bool MakeCurrent(const GLContext& context);
virtual const GLContext CreateContext();
virtual void DeleteContext(const GLContext& context);
virtual const GLContext& GetMainContext() { return context_; }
const struct waffle_display* display() const { return display_; }
const struct waffle_window* surface() const { return surface_; }
private:
void InitOnce();
void GetSurfaceSize(GLint* width, GLint* height);
struct waffle_display* display_;
struct waffle_config* config_;
struct waffle_window* surface_;
struct waffle_context* context_;
};
#endif // BENCH_GL_WAFFLE_STUFF_H_