Allow other attachment points for glFramebufferTexture2D
TRAC #12040
Signed-off-by: Andrew Lewycky
Signed-off-by: Daniel Koch

Author:    Nicolas Capens

git-svn-id: https://angleproject.googlecode.com/svn/trunk@194 736b8ea6-26fd-11df-bfd4-992fa37f6226
diff --git a/src/libGLESv2/libGLESv2.cpp b/src/libGLESv2/libGLESv2.cpp
index c751b18..bda72ea 100644
--- a/src/libGLESv2/libGLESv2.cpp
+++ b/src/libGLESv2/libGLESv2.cpp
@@ -730,7 +730,7 @@
 
     try
     {
-        if (target != GL_TEXTURE_2D && !es2dx::IsCubemapTextureTarget(target))
+        if (!es2dx::IsTextureTarget(target))
         {
             return error(GL_INVALID_ENUM);
         }
@@ -763,7 +763,7 @@
 
     try
     {
-        if (target != GL_TEXTURE_2D && !es2dx::IsCubemapTextureTarget(target))
+        if (!es2dx::IsTextureTarget(target))
         {
             return error(GL_INVALID_ENUM);
         }
@@ -902,7 +902,7 @@
 
     try
     {
-        if (target != GL_TEXTURE_2D && !es2dx::IsCubemapTextureTarget(target))
+        if (!es2dx::IsTextureTarget(target))
         {
             return error(GL_INVALID_ENUM);
         }
@@ -1627,6 +1627,8 @@
         switch (attachment)
         {
           case GL_COLOR_ATTACHMENT0:
+          case GL_DEPTH_ATTACHMENT:
+          case GL_STENCIL_ATTACHMENT:
             break;
           default:
             return error(GL_INVALID_ENUM);
@@ -1687,7 +1689,12 @@
                 return error(GL_INVALID_OPERATION);
             }
 
-            framebuffer->setColorbuffer(textarget, texture);
+            switch (attachment)
+            {
+              case GL_COLOR_ATTACHMENT0:  framebuffer->setColorbuffer(textarget, texture);   break;
+              case GL_DEPTH_ATTACHMENT:   framebuffer->setDepthbuffer(textarget, texture);   break;
+              case GL_STENCIL_ATTACHMENT: framebuffer->setStencilbuffer(textarget, texture); break;
+            }
         }
     }
     catch(std::bad_alloc&)
@@ -2263,11 +2270,11 @@
             }
 
             GLenum attachmentObjectType;   // Type category
-            if (attachmentType ==  GL_NONE || attachmentType == GL_RENDERBUFFER)
+            if (attachmentType == GL_NONE || attachmentType == GL_RENDERBUFFER)
             {
                 attachmentObjectType = attachmentType;
             }
-            else if (attachmentType == GL_TEXTURE_2D || es2dx::IsCubemapTextureTarget(attachmentType))
+            else if (es2dx::IsTextureTarget(attachmentType))
             {
                 attachmentObjectType = GL_TEXTURE;
             }
@@ -4125,7 +4132,7 @@
 
     try
     {
-        if (target != GL_TEXTURE_2D && !es2dx::IsCubemapTextureTarget(target))
+        if (!es2dx::IsTextureTarget(target))
         {
             return error(GL_INVALID_ENUM);
         }