Copy libGLESv2 to libGLES_CM.

BUG=18110152

Change-Id: Ibf9b8c47e2d7c145d844ac4e69d6a20a7342d5db
Reviewed-on: https://swiftshader-review.googlesource.com/1230
Reviewed-by: Nicolas Capens <nicolascapens@google.com>
Tested-by: Nicolas Capens <nicolascapens@google.com>
diff --git a/src/GLES2/libGLES_CM/Framebuffer.h b/src/GLES2/libGLES_CM/Framebuffer.h
new file mode 100644
index 0000000..c3e0f0b
--- /dev/null
+++ b/src/GLES2/libGLES_CM/Framebuffer.h
@@ -0,0 +1,90 @@
+// SwiftShader Software Renderer

+//

+// Copyright(c) 2005-2013 TransGaming Inc.

+//

+// All rights reserved. No part of this software may be copied, distributed, transmitted,

+// transcribed, stored in a retrieval system, translated into any human or computer

+// language by any means, or disclosed to third parties without the explicit written

+// agreement of TransGaming Inc. Without such an agreement, no rights or licenses, express

+// or implied, including but not limited to any patent rights, are granted to you.

+//

+

+// Framebuffer.h: Defines the Framebuffer class. Implements GL framebuffer

+// objects and related functionality. [OpenGL ES 2.0.24] section 4.4 page 105.

+

+#ifndef LIBGLESV2_FRAMEBUFFER_H_

+#define LIBGLESV2_FRAMEBUFFER_H_

+

+#include "RefCountObject.h"

+#include "Image.hpp"

+

+#define GL_APICALL

+#include <GLES2/gl2.h>

+

+namespace gl

+{

+class Renderbuffer;

+class Colorbuffer;

+class Depthbuffer;

+class Stencilbuffer;

+class DepthStencilbuffer;

+

+class Framebuffer

+{

+public:

+    Framebuffer();

+

+    virtual ~Framebuffer();

+

+    void setColorbuffer(GLenum type, GLuint colorbuffer);

+    void setDepthbuffer(GLenum type, GLuint depthbuffer);

+    void setStencilbuffer(GLenum type, GLuint stencilbuffer);

+

+    void detachTexture(GLuint texture);

+    void detachRenderbuffer(GLuint renderbuffer);

+

+    Image *getRenderTarget();

+    Image *getDepthStencil();

+

+    Renderbuffer *getColorbuffer();

+    Renderbuffer *getDepthbuffer();

+    Renderbuffer *getStencilbuffer();

+

+    GLenum getColorbufferType();

+    GLenum getDepthbufferType();

+    GLenum getStencilbufferType();

+

+    GLuint getColorbufferHandle();

+    GLuint getDepthbufferHandle();

+    GLuint getStencilbufferHandle();

+

+    bool hasStencil();

+

+	virtual GLenum completeness();

+	GLenum completeness(int &width, int &height, int &samples);

+

+protected:

+    GLenum mColorbufferType;

+    BindingPointer<Renderbuffer> mColorbufferPointer;

+

+    GLenum mDepthbufferType;

+    BindingPointer<Renderbuffer> mDepthbufferPointer;

+

+    GLenum mStencilbufferType;

+    BindingPointer<Renderbuffer> mStencilbufferPointer;

+

+private:

+    Renderbuffer *lookupRenderbuffer(GLenum type, GLuint handle) const;

+};

+

+class DefaultFramebuffer : public Framebuffer

+{

+public:

+    DefaultFramebuffer(Colorbuffer *colorbuffer, DepthStencilbuffer *depthStencil);

+

+    virtual GLenum completeness();

+};

+

+}

+

+#endif   // LIBGLESV2_FRAMEBUFFER_H_