Adds BGRA packed sized internal formats

TRAC #21609

Signed-off-by: Daniel Koch

Author:    Shannon Woods

git-svn-id: https://angleproject.googlecode.com/svn/trunk@1302 736b8ea6-26fd-11df-bfd4-992fa37f6226
diff --git a/src/libGLESv2/Context.h b/src/libGLESv2/Context.h
index d312918..55de48c 100644
--- a/src/libGLESv2/Context.h
+++ b/src/libGLESv2/Context.h
@@ -78,7 +78,10 @@
     MAX_COMBINED_TEXTURE_IMAGE_UNITS_VTF = MAX_TEXTURE_IMAGE_UNITS + MAX_VERTEX_TEXTURE_IMAGE_UNITS_VTF,    
     MAX_FRAGMENT_UNIFORM_VECTORS_SM2 = 32 - 3,    // Reserve space for dx_Coord, dx_Depth, and dx_DepthRange. dx_PointOrLines and dx_FrontCCW use separate bool registers.
     MAX_FRAGMENT_UNIFORM_VECTORS_SM3 = 224 - 3,
-    MAX_DRAW_BUFFERS = 1
+    MAX_DRAW_BUFFERS = 1,
+
+    GL_BGRA4_REV = 0x6ABC,
+    GL_BGR5_A1_REV = 0x6ABD
 };
 
 enum QueryType
diff --git a/src/libGLESv2/utilities.cpp b/src/libGLESv2/utilities.cpp
index 1dae681..761833d 100644
--- a/src/libGLESv2/utilities.cpp
+++ b/src/libGLESv2/utilities.cpp
@@ -312,6 +312,8 @@
       case GL_RGBA32F_EXT:                      return sizeof(float) * 4;
       case GL_RGBA16F_EXT:                      return sizeof(unsigned short) * 4;
       case GL_BGRA8_EXT:                        return sizeof(unsigned char) * 4;
+      case GL_BGRA4_REV:                        return sizeof(unsigned short);
+      case GL_BGR5_A1_REV:                      return sizeof(unsigned short);
       default: UNREACHABLE();
     }
 
@@ -384,8 +386,9 @@
       case GL_BGRA_EXT:
         switch (type)
         {
-            // Are there sized internal formats for the packed BGRA types?
           case GL_UNSIGNED_BYTE:                    return GL_BGRA8_EXT;
+          case GL_UNSIGNED_SHORT_4_4_4_4_REV_EXT:   return GL_BGRA4_REV;
+          case GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT:   return GL_BGR5_A1_REV;
           default:                                  UNIMPLEMENTED();
         }
         break;