Added new extensions

The new extensions are:
- GL_OES_framebuffer_object (with extra exports)
- GL_OES_depth24
- GL_OES_depth32
- GL_EXT_color_buffer_half_float

These were mostly supported already with the GLES3 related changes,
so only a few minor changes were required.

Change-Id: Iab6e94043cfdabb8ad74e526f44f7bd9d57c267f
Reviewed-on: https://swiftshader-review.googlesource.com/4342
Reviewed-by: Nicolas Capens <capn@google.com>
Tested-by: Alexis Hétu <sugoi@google.com>
diff --git a/src/OpenGL/libGL/utilities.cpp b/src/OpenGL/libGL/utilities.cpp
index ebdfdca..7483fad 100644
--- a/src/OpenGL/libGL/utilities.cpp
+++ b/src/OpenGL/libGL/utilities.cpp
@@ -858,8 +858,9 @@
 		switch(format)

 		{

 		case sw::FORMAT_D16:

-		case sw::FORMAT_D32:

 			return GL_DEPTH_COMPONENT16;

+		case sw::FORMAT_D32:

+			return GL_DEPTH_COMPONENT32;

         case sw::FORMAT_D24X8:

             return GL_DEPTH_COMPONENT24;

 		case sw::FORMAT_D24S8:

diff --git a/src/OpenGL/libGLESv2/Context.cpp b/src/OpenGL/libGLESv2/Context.cpp
index d95240e..a87da2d 100644
--- a/src/OpenGL/libGLESv2/Context.cpp
+++ b/src/OpenGL/libGLESv2/Context.cpp
@@ -4238,12 +4238,15 @@
 	// Vendor extensions

 	static const GLubyte* extensions[] = {

 		(const GLubyte*)"GL_OES_compressed_ETC1_RGB8_texture",

+		(const GLubyte*)"GL_OES_depth24",

+		(const GLubyte*)"GL_OES_depth32",

 		(const GLubyte*)"GL_OES_depth_texture",

 		(const GLubyte*)"GL_OES_depth_texture_cube_map",

 		(const GLubyte*)"GL_OES_EGL_image",

 		(const GLubyte*)"GL_OES_EGL_image_external",

 		(const GLubyte*)"GL_OES_EGL_sync",

 		(const GLubyte*)"GL_OES_element_index_uint",

+		(const GLubyte*)"GL_OES_framebuffer_object",

 		(const GLubyte*)"GL_OES_packed_depth_stencil",

 		(const GLubyte*)"GL_OES_rgb8_rgba8",

 		(const GLubyte*)"GL_OES_standard_derivatives",

@@ -4254,6 +4257,7 @@
 		(const GLubyte*)"GL_OES_texture_npot",

 		(const GLubyte*)"GL_OES_texture_3D",

 		(const GLubyte*)"GL_EXT_blend_minmax",

+		(const GLubyte*)"GL_EXT_color_buffer_half_float",

 		(const GLubyte*)"GL_EXT_occlusion_query_boolean",

 		(const GLubyte*)"GL_EXT_read_format_bgra",

 #if (S3TC_SUPPORT)

diff --git a/src/OpenGL/libGLESv2/Framebuffer.cpp b/src/OpenGL/libGLESv2/Framebuffer.cpp
index 272a26d..a97ec2c 100644
--- a/src/OpenGL/libGLESv2/Framebuffer.cpp
+++ b/src/OpenGL/libGLESv2/Framebuffer.cpp
@@ -476,6 +476,7 @@
 		case sw::FORMAT_X16B16G16R16UI:
 		case sw::FORMAT_X32B32G32R32I:
 		case sw::FORMAT_X32B32G32R32UI:return GL_RGB_INTEGER;
+		case sw::FORMAT_B16G16R16F:
 		case sw::FORMAT_X8B8G8R8I_SNORM:
 		case sw::FORMAT_X8B8G8R8:
 		case sw::FORMAT_X8R8G8B8:
diff --git a/src/OpenGL/libGLESv2/exports.map b/src/OpenGL/libGLESv2/exports.map
index 0accca9..2c11c20 100644
--- a/src/OpenGL/libGLESv2/exports.map
+++ b/src/OpenGL/libGLESv2/exports.map
@@ -167,6 +167,21 @@
     glGetQueryObjectuivEXT;
     glEGLImageTargetTexture2DOES;
     glEGLImageTargetRenderbufferStorageOES;
+	glIsRenderbufferOES;

+	glBindRenderbufferOES;

+	glDeleteRenderbuffersOES;

+	glGenRenderbuffersOES;

+	glRenderbufferStorageOES;

+	glGetRenderbufferParameterivOES;

+	glIsFramebufferOES;

+	glBindFramebufferOES;

+	glDeleteFramebuffersOES;

+	glGenFramebuffersOES;

+	glCheckFramebufferStatusOES;

+	glFramebufferRenderbufferOES;

+	glFramebufferTexture2DOES;

+	glGetFramebufferAttachmentParameterivOES;

+	glGenerateMipmapOES;
 
     # GLES 3.0 Functions
     glReadBuffer;
diff --git a/src/OpenGL/libGLESv2/libGLESv2.cpp b/src/OpenGL/libGLESv2/libGLESv2.cpp
index e4c568c..44bf326 100644
--- a/src/OpenGL/libGLESv2/libGLESv2.cpp
+++ b/src/OpenGL/libGLESv2/libGLESv2.cpp
@@ -4800,7 +4800,6 @@
 		egl::GLint clientVersion = context->getClientVersion();

 		switch(internalformat)

 		{

-		case GL_DEPTH_COMPONENT24:

 		case GL_DEPTH_COMPONENT32F:

 			if(clientVersion < 3)

 			{

@@ -4808,6 +4807,8 @@
 			}

 			// fall through

 		case GL_DEPTH_COMPONENT16:

+		case GL_DEPTH_COMPONENT24:

+		case GL_DEPTH_COMPONENT32_OES:

 			context->setRenderbufferStorage(new es2::Depthbuffer(width, height, samples));

 			break;

 		case GL_R8:

@@ -4857,7 +4858,6 @@
 			context->setRenderbufferStorage(new es2::Stencilbuffer(width, height, samples));

 			break;

 		case GL_DEPTH32F_STENCIL8:

-		case GL_DEPTH_COMPONENT32_OES:

 			if(clientVersion < 3)

 			{

 				return error(GL_INVALID_ENUM);

@@ -5817,6 +5817,7 @@
 				}

 				break;

 			case GL_DEPTH_COMPONENT24:

+			case GL_DEPTH_COMPONENT32_OES:

 				switch(type)

 				{

 				case GL_UNSIGNED_INT:

@@ -7492,6 +7493,81 @@
 	UNIMPLEMENTED();

 }

 

+GLboolean IsRenderbufferOES(GLuint renderbuffer)

+{

+	return IsRenderbuffer(renderbuffer);

+}

+

+void BindRenderbufferOES(GLenum target, GLuint renderbuffer)

+{

+	BindRenderbuffer(target, renderbuffer);

+}

+

+void DeleteRenderbuffersOES(GLsizei n, const GLuint* renderbuffers)

+{

+	DeleteRenderbuffers(n, renderbuffers);

+}

+

+void GenRenderbuffersOES(GLsizei n, GLuint* renderbuffers)

+{

+	GenRenderbuffers(n, renderbuffers);

+}

+

+void RenderbufferStorageOES(GLenum target, GLenum internalformat, GLsizei width, GLsizei height)

+{

+	RenderbufferStorage(target, internalformat, width, height);

+}

+

+void GetRenderbufferParameterivOES(GLenum target, GLenum pname, GLint* params)

+{

+	GetRenderbufferParameteriv(target, pname, params);

+}

+

+GLboolean IsFramebufferOES(GLuint framebuffer)

+{

+	return IsFramebuffer(framebuffer);

+}

+

+void BindFramebufferOES(GLenum target, GLuint framebuffer)

+{

+	BindFramebuffer(target, framebuffer);

+}

+

+void DeleteFramebuffersOES(GLsizei n, const GLuint* framebuffers)

+{

+	DeleteFramebuffers(n, framebuffers);

+}

+

+void GenFramebuffersOES(GLsizei n, GLuint* framebuffers)

+{

+	GenFramebuffers(n, framebuffers);

+}

+

+GLenum CheckFramebufferStatusOES(GLenum target)

+{

+	return CheckFramebufferStatus(target);

+}

+

+void FramebufferRenderbufferOES(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer)

+{

+	FramebufferRenderbuffer(target, attachment, renderbuffertarget, renderbuffer);

+}

+

+void FramebufferTexture2DOES(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)

+{

+	FramebufferTexture2D(target, attachment, textarget, texture, level);

+}

+

+void GetFramebufferAttachmentParameterivOES(GLenum target, GLenum attachment, GLenum pname, GLint* params)

+{

+	GetFramebufferAttachmentParameteriv(target, attachment, pname, params);

+}

+

+void GenerateMipmapOES(GLenum target)

+{

+	GenerateMipmap(target);

+}

+

 }

 

 extern "C" __eglMustCastToProperFunctionPointerType es2GetProcAddress(const char *procname)

@@ -7536,6 +7612,21 @@
 		EXTENSION(glDrawArraysInstancedANGLE),

 		EXTENSION(glDrawElementsInstancedANGLE),

 		EXTENSION(glVertexAttribDivisorANGLE),

+		EXTENSION(glIsRenderbufferOES),

+		EXTENSION(glBindRenderbufferOES),

+		EXTENSION(glDeleteRenderbuffersOES),

+		EXTENSION(glGenRenderbuffersOES),

+		EXTENSION(glRenderbufferStorageOES),

+		EXTENSION(glGetRenderbufferParameterivOES),

+		EXTENSION(glIsFramebufferOES),

+		EXTENSION(glBindFramebufferOES),

+		EXTENSION(glDeleteFramebuffersOES),

+		EXTENSION(glGenFramebuffersOES),

+		EXTENSION(glCheckFramebufferStatusOES),

+		EXTENSION(glFramebufferRenderbufferOES),

+		EXTENSION(glFramebufferTexture2DOES),

+		EXTENSION(glGetFramebufferAttachmentParameterivOES),

+		EXTENSION(glGenerateMipmapOES),

 

 		#undef EXTENSION

 	};

diff --git a/src/OpenGL/libGLESv2/libGLESv2.def b/src/OpenGL/libGLESv2/libGLESv2.def
index 9a7770b..fb94783 100644
--- a/src/OpenGL/libGLESv2/libGLESv2.def
+++ b/src/OpenGL/libGLESv2/libGLESv2.def
@@ -167,6 +167,21 @@
     glGetQueryObjectuivEXT
 	glEGLImageTargetTexture2DOES
 	glEGLImageTargetRenderbufferStorageOES
+	glIsRenderbufferOES
+	glBindRenderbufferOES
+	glDeleteRenderbuffersOES
+	glGenRenderbuffersOES
+	glRenderbufferStorageOES
+	glGetRenderbufferParameterivOES
+	glIsFramebufferOES
+	glBindFramebufferOES
+	glDeleteFramebuffersOES
+	glGenFramebuffersOES
+	glCheckFramebufferStatusOES
+	glFramebufferRenderbufferOES
+	glFramebufferTexture2DOES
+	glGetFramebufferAttachmentParameterivOES
+	glGenerateMipmapOES
 
     ; GLES 3.0 Functions
     glReadBuffer                    @211
diff --git a/src/OpenGL/libGLESv2/libGLESv2.hpp b/src/OpenGL/libGLESv2/libGLESv2.hpp
index 4cbd7ec..bde6c0a 100644
--- a/src/OpenGL/libGLESv2/libGLESv2.hpp
+++ b/src/OpenGL/libGLESv2/libGLESv2.hpp
@@ -209,6 +209,21 @@
 	void (*glFramebufferTexture3DOES)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);
 	void (*glEGLImageTargetTexture2DOES)(GLenum target, GLeglImageOES image);
 	void (*glEGLImageTargetRenderbufferStorageOES)(GLenum target, GLeglImageOES image);
+	GLboolean (*glIsRenderbufferOES)(GLuint renderbuffer);

+	void (*glBindRenderbufferOES)(GLenum target, GLuint renderbuffer);

+	void (*glDeleteRenderbuffersOES)(GLsizei n, const GLuint* renderbuffers);

+	void (*glGenRenderbuffersOES)(GLsizei n, GLuint* renderbuffers);

+	void (*glRenderbufferStorageOES)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height);

+	void (*glGetRenderbufferParameterivOES)(GLenum target, GLenum pname, GLint* params);

+	GLboolean (*glIsFramebufferOES)(GLuint framebuffer);

+	void (*glBindFramebufferOES)(GLenum target, GLuint framebuffer);

+	void (*glDeleteFramebuffersOES)(GLsizei n, const GLuint* framebuffers);

+	void (*glGenFramebuffersOES)(GLsizei n, GLuint* framebuffers);

+	GLenum (*glCheckFramebufferStatusOES)(GLenum target);

+	void (*glFramebufferRenderbufferOES)(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);

+	void (*glFramebufferTexture2DOES)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);

+	void (*glGetFramebufferAttachmentParameterivOES)(GLenum target, GLenum attachment, GLenum pname, GLint* params);

+	void (*glGenerateMipmapOES)(GLenum target);
 
 	egl::Context *(*es2CreateContext)(const egl::Config *config, const egl::Context *shareContext, int clientVersion);
 	__eglMustCastToProperFunctionPointerType (*es2GetProcAddress)(const char *procname);
diff --git a/src/OpenGL/libGLESv2/libGLESv3.cpp b/src/OpenGL/libGLESv2/libGLESv3.cpp
index 98397ec..488f529 100644
--- a/src/OpenGL/libGLESv2/libGLESv3.cpp
+++ b/src/OpenGL/libGLESv2/libGLESv3.cpp
@@ -213,6 +213,7 @@
 	InsertFormatMapping(map, GL_DEPTH_COMPONENT16, GL_DEPTH_COMPONENT, GL_UNSIGNED_SHORT);

 	InsertFormatMapping(map, GL_DEPTH_COMPONENT16, GL_DEPTH_COMPONENT, GL_UNSIGNED_INT);

 	InsertFormatMapping(map, GL_DEPTH_COMPONENT24, GL_DEPTH_COMPONENT, GL_UNSIGNED_INT);

+	InsertFormatMapping(map, GL_DEPTH_COMPONENT32_OES, GL_DEPTH_COMPONENT, GL_UNSIGNED_INT);

 	InsertFormatMapping(map, GL_DEPTH_COMPONENT32F, GL_DEPTH_COMPONENT, GL_FLOAT);

 	InsertFormatMapping(map, GL_DEPTH24_STENCIL8, GL_DEPTH_STENCIL, GL_UNSIGNED_INT_24_8);

 	InsertFormatMapping(map, GL_DEPTH32F_STENCIL8, GL_DEPTH_STENCIL, GL_FLOAT_32_UNSIGNED_INT_24_8_REV);

@@ -1507,6 +1508,7 @@
 		{

 		case GL_DEPTH_COMPONENT16:

 		case GL_DEPTH_COMPONENT24:

+		case GL_DEPTH_COMPONENT32_OES:

 		case GL_DEPTH_COMPONENT32F:

 			context->setRenderbufferStorage(new es2::Depthbuffer(width, height, samples));

 			break;

diff --git a/src/OpenGL/libGLESv2/main.cpp b/src/OpenGL/libGLESv2/main.cpp
index 3936852..1b51f67 100644
--- a/src/OpenGL/libGLESv2/main.cpp
+++ b/src/OpenGL/libGLESv2/main.cpp
@@ -337,6 +337,21 @@
 GL_APICALL void FramebufferTexture3DOES(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);

 GL_APICALL void EGLImageTargetTexture2DOES(GLenum target, GLeglImageOES image);

 GL_APICALL void EGLImageTargetRenderbufferStorageOES(GLenum target, GLeglImageOES image);

+GL_APICALL GLboolean IsRenderbufferOES(GLuint renderbuffer);
+GL_APICALL void BindRenderbufferOES(GLenum target, GLuint renderbuffer);
+GL_APICALL void DeleteRenderbuffersOES(GLsizei n, const GLuint* renderbuffers);
+GL_APICALL void GenRenderbuffersOES(GLsizei n, GLuint* renderbuffers);
+GL_APICALL void RenderbufferStorageOES(GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
+GL_APICALL void GetRenderbufferParameterivOES(GLenum target, GLenum pname, GLint* params);
+GL_APICALL GLboolean IsFramebufferOES(GLuint framebuffer);
+GL_APICALL void BindFramebufferOES(GLenum target, GLuint framebuffer);
+GL_APICALL void DeleteFramebuffersOES(GLsizei n, const GLuint* framebuffers);
+GL_APICALL void GenFramebuffersOES(GLsizei n, GLuint* framebuffers);
+GL_APICALL GLenum CheckFramebufferStatusOES(GLenum target);
+GL_APICALL void FramebufferRenderbufferOES(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
+GL_APICALL void FramebufferTexture2DOES(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
+GL_APICALL void GetFramebufferAttachmentParameterivOES(GLenum target, GLenum attachment, GLenum pname, GLint* params);
+GL_APICALL void GenerateMipmapOES(GLenum target);

 }

 

 extern "C"

@@ -371,11 +386,21 @@
 	return es2::BindFramebuffer(target, framebuffer);

 }

 

+GL_APICALL void GL_APIENTRY glBindFramebufferOES(GLenum target, GLuint framebuffer)

+{

+	return es2::BindFramebuffer(target, framebuffer);

+}

+

 GL_APICALL void GL_APIENTRY glBindRenderbuffer(GLenum target, GLuint renderbuffer)

 {

 	return es2::BindRenderbuffer(target, renderbuffer);

 }

 

+GL_APICALL void GL_APIENTRY glBindRenderbufferOES(GLenum target, GLuint renderbuffer)

+{

+	return es2::BindRenderbuffer(target, renderbuffer);

+}

+

 GL_APICALL void GL_APIENTRY glBindTexture(GLenum target, GLuint texture)

 {

 	return es2::BindTexture(target, texture);

@@ -421,6 +446,11 @@
 	return es2::CheckFramebufferStatus(target);

 }

 

+GL_APICALL GLenum GL_APIENTRY glCheckFramebufferStatusOES(GLenum target)

+{

+	return es2::CheckFramebufferStatus(target);

+}

+

 GL_APICALL void GL_APIENTRY glClear(GLbitfield mask)

 {

 	return es2::Clear(mask);

@@ -503,6 +533,11 @@
 	return es2::DeleteFramebuffers(n, framebuffers);

 }

 

+GL_APICALL void GL_APIENTRY glDeleteFramebuffersOES(GLsizei n, const GLuint* framebuffers)

+{

+	return es2::DeleteFramebuffers(n, framebuffers);

+}

+

 GL_APICALL void GL_APIENTRY glDeleteProgram(GLuint program)

 {

 	return es2::DeleteProgram(program);

@@ -518,6 +553,11 @@
 	return es2::DeleteRenderbuffers(n, renderbuffers);

 }

 

+GL_APICALL void GL_APIENTRY glDeleteRenderbuffersOES(GLsizei n, const GLuint* renderbuffers)

+{

+	return es2::DeleteRenderbuffers(n, renderbuffers);

+}

+

 GL_APICALL void GL_APIENTRY glDeleteShader(GLuint shader)

 {

 	return es2::DeleteShader(shader);

@@ -633,11 +673,21 @@
 	return es2::FramebufferRenderbuffer(target, attachment, renderbuffertarget, renderbuffer);

 }

 

+GL_APICALL void GL_APIENTRY glFramebufferRenderbufferOES(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer)

+{

+	return es2::FramebufferRenderbuffer(target, attachment, renderbuffertarget, renderbuffer);

+}

+

 GL_APICALL void GL_APIENTRY glFramebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)

 {

 	return es2::FramebufferTexture2D(target, attachment, textarget, texture, level);

 }

 

+GL_APICALL void GL_APIENTRY glFramebufferTexture2DOES(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)

+{

+	return es2::FramebufferTexture2D(target, attachment, textarget, texture, level);

+}

+

 GL_APICALL void GL_APIENTRY glFrontFace(GLenum mode)

 {

 	return es2::FrontFace(mode);

@@ -653,6 +703,11 @@
 	return es2::GenerateMipmap(target);

 }

 

+GL_APICALL void GL_APIENTRY glGenerateMipmapOES(GLenum target)

+{

+	return es2::GenerateMipmap(target);

+}

+

 GL_APICALL void GL_APIENTRY glGenFencesNV(GLsizei n, GLuint* fences)

 {

 	return es2::GenFencesNV(n, fences);

@@ -663,6 +718,11 @@
 	return es2::GenFramebuffers(n, framebuffers);

 }

 

+GL_APICALL void GL_APIENTRY glGenFramebuffersOES(GLsizei n, GLuint* framebuffers)

+{

+	return es2::GenFramebuffers(n, framebuffers);

+}

+

 GL_APICALL void GL_APIENTRY glGenQueriesEXT(GLsizei n, GLuint* ids)

 {

 	return es2::GenQueriesEXT(n, ids);

@@ -673,6 +733,11 @@
 	return es2::GenRenderbuffers(n, renderbuffers);

 }

 

+GL_APICALL void GL_APIENTRY glGenRenderbuffersOES(GLsizei n, GLuint* renderbuffers)

+{

+	return es2::GenRenderbuffers(n, renderbuffers);

+}

+

 GL_APICALL void GL_APIENTRY glGenTextures(GLsizei n, GLuint* textures)

 {

 	return es2::GenTextures(n, textures);

@@ -728,6 +793,11 @@
 	return es2::GetFramebufferAttachmentParameteriv(target, attachment, pname, params);

 }

 

+GL_APICALL void GL_APIENTRY glGetFramebufferAttachmentParameterivOES(GLenum target, GLenum attachment, GLenum pname, GLint* params)

+{

+	return es2::GetFramebufferAttachmentParameteriv(target, attachment, pname, params);

+}

+

 GL_APICALL GLenum GL_APIENTRY glGetGraphicsResetStatusEXT(void)

 {

 	return es2::GetGraphicsResetStatusEXT();

@@ -763,6 +833,11 @@
 	return es2::GetRenderbufferParameteriv(target, pname, params);

 }

 

+GL_APICALL void GL_APIENTRY glGetRenderbufferParameterivOES(GLenum target, GLenum pname, GLint* params)

+{

+	return es2::GetRenderbufferParameteriv(target, pname, params);

+}

+

 GL_APICALL void GL_APIENTRY glGetShaderiv(GLuint shader, GLenum pname, GLint* params)

 {

 	return es2::GetShaderiv(shader, pname, params);

@@ -863,6 +938,11 @@
 	return es2::IsFramebuffer(framebuffer);

 }

 

+GL_APICALL GLboolean GL_APIENTRY glIsFramebufferOES(GLuint framebuffer)

+{

+	return es2::IsFramebuffer(framebuffer);

+}

+

 GL_APICALL GLboolean GL_APIENTRY glIsProgram(GLuint program)

 {

 	return es2::IsProgram(program);

@@ -878,6 +958,11 @@
 	return es2::IsRenderbuffer(renderbuffer);

 }

 

+GL_APICALL GLboolean GL_APIENTRY glIsRenderbufferOES(GLuint renderbuffer)

+{

+	return es2::IsRenderbuffer(renderbuffer);

+}

+

 GL_APICALL GLboolean GL_APIENTRY glIsShader(GLuint shader)

 {

 	return es2::IsShader(shader);

@@ -934,6 +1019,11 @@
 	return es2::RenderbufferStorage(target, internalformat, width, height);

 }

 

+GL_APICALL void GL_APIENTRY glRenderbufferStorageOES(GLenum target, GLenum internalformat, GLsizei width, GLsizei height)

+{

+	return es2::RenderbufferStorage(target, internalformat, width, height);

+}

+

 GL_APICALL void GL_APIENTRY glSampleCoverage(GLclampf value, GLboolean invert)

 {

 	return es2::SampleCoverage(value, invert);

@@ -1424,6 +1514,21 @@
 	this->glFramebufferTexture3DOES = es2::FramebufferTexture3DOES;

 	this->glEGLImageTargetTexture2DOES = es2::EGLImageTargetTexture2DOES;

 	this->glEGLImageTargetRenderbufferStorageOES = es2::EGLImageTargetRenderbufferStorageOES;

+	this->glIsRenderbufferOES = es2::IsRenderbufferOES;
+	this->glBindRenderbufferOES = es2::BindRenderbufferOES;
+	this->glDeleteRenderbuffersOES = es2::DeleteRenderbuffersOES;
+	this->glGenRenderbuffersOES = es2::GenRenderbuffersOES;
+	this->glRenderbufferStorageOES = es2::RenderbufferStorageOES;
+	this->glGetRenderbufferParameterivOES = es2::GetRenderbufferParameterivOES;
+	this->glIsFramebufferOES = es2::IsFramebufferOES;
+	this->glBindFramebufferOES = es2::BindFramebufferOES;
+	this->glDeleteFramebuffersOES = es2::DeleteFramebuffersOES;
+	this->glGenFramebuffersOES = es2::GenFramebuffersOES;
+	this->glCheckFramebufferStatusOES = es2::CheckFramebufferStatusOES;
+	this->glFramebufferRenderbufferOES = es2::FramebufferRenderbufferOES;
+	this->glFramebufferTexture2DOES = es2::FramebufferTexture2DOES;
+	this->glGetFramebufferAttachmentParameterivOES = es2::GetFramebufferAttachmentParameterivOES;
+	this->glGenerateMipmapOES = es2::GenerateMipmapOES;
 

 	this->es2CreateContext = ::es2CreateContext;

 	this->es2GetProcAddress = ::es2GetProcAddress;

diff --git a/src/OpenGL/libGLESv2/utilities.cpp b/src/OpenGL/libGLESv2/utilities.cpp
index dfff1da..4896b27 100644
--- a/src/OpenGL/libGLESv2/utilities.cpp
+++ b/src/OpenGL/libGLESv2/utilities.cpp
@@ -440,7 +440,13 @@
 	bool IsDepthTexture(GLenum format)

 	{

 		return format == GL_DEPTH_COMPONENT ||

-		       format == GL_DEPTH_STENCIL_OES;

+		       format == GL_DEPTH_STENCIL_OES ||

+		       format == GL_DEPTH_COMPONENT16 ||

+		       format == GL_DEPTH_COMPONENT24 ||

+		       format == GL_DEPTH_COMPONENT32_OES ||

+		       format == GL_DEPTH_COMPONENT32F ||

+		       format == GL_DEPTH24_STENCIL8 ||

+		       format == GL_DEPTH32F_STENCIL8;

 	}

 

 	bool IsStencilTexture(GLenum format)