// Copyright (c) 2010 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 GLBENCH_TEARTEST_H_
#define GLBENCH_TEARTEST_H_

#include <X11/Xlib.h>


class Test {
 public:
  virtual bool Start() = 0;
  virtual bool Loop(int shift) = 0;
  virtual void Stop() = 0;
  virtual ~Test() {}
};


Pixmap AllocatePixmap();
void InitializePixmap(Pixmap pixmap);
void UpdatePixmap(Pixmap pixmap, int i);
void CopyPixmapToTexture(Pixmap pixmap);

Test* GetUniformTest();
Test* GetTexImage2DTest();
#if defined(USE_OPENGLES)
Test* GetPixmapToTextureTestEGL();
#elif defined(USE_OPENGL)
Test* GetPixmapToTextureTest();
#endif


#endif  // GLBENCH_TEARTEST_H_
