summaryrefslogtreecommitdiffstats
path: root/ui/gl/gl_surface_osmesa.h
diff options
context:
space:
mode:
Diffstat (limited to 'ui/gl/gl_surface_osmesa.h')
-rw-r--r--ui/gl/gl_surface_osmesa.h45
1 files changed, 45 insertions, 0 deletions
diff --git a/ui/gl/gl_surface_osmesa.h b/ui/gl/gl_surface_osmesa.h
new file mode 100644
index 0000000..ab3feec
--- /dev/null
+++ b/ui/gl/gl_surface_osmesa.h
@@ -0,0 +1,45 @@
+// Copyright (c) 2012 The Chromium 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 UI_GL_GL_SURFACE_OSMESA_H_
+#define UI_GL_GL_SURFACE_OSMESA_H_
+#pragma once
+
+#include "base/memory/scoped_ptr.h"
+#include "ui/gfx/size.h"
+#include "ui/gl/gl_surface.h"
+
+namespace gfx {
+
+// A surface that the Mesa software renderer draws to. This is actually just a
+// buffer in system memory. GetHandle returns a pointer to the buffer. These
+// surfaces can be resized and resizing preserves the contents.
+class GL_EXPORT GLSurfaceOSMesa : public GLSurface {
+ public:
+ GLSurfaceOSMesa(unsigned format, const gfx::Size& size);
+
+ // Implement GLSurface.
+ virtual bool Initialize() OVERRIDE;
+ virtual void Destroy() OVERRIDE;
+ virtual bool Resize(const gfx::Size& new_size) OVERRIDE;
+ virtual bool IsOffscreen() OVERRIDE;
+ virtual bool SwapBuffers() OVERRIDE;
+ virtual gfx::Size GetSize() OVERRIDE;
+ virtual void* GetHandle() OVERRIDE;
+ virtual unsigned GetFormat() OVERRIDE;
+
+ protected:
+ virtual ~GLSurfaceOSMesa();
+
+ private:
+ unsigned format_;
+ gfx::Size size_;
+ scoped_array<int32> buffer_;
+
+ DISALLOW_COPY_AND_ASSIGN(GLSurfaceOSMesa);
+};
+
+} // namespace gfx
+
+#endif // UI_GL_GL_SURFACE_OSMESA_H_