D3D11 Texture refactoring: Store ANGLEFormat in TextureStorage11

This is needed to enable removing GetDXGIFormatInfo calls, which are
difficult to use correctly due to a texture format being associated
with multiple DXGI formats. This is done in preparation of changing
some of the DXGI formats associated with integer textures.

BUG=angleproject:1244
TEST=angle_end2end_tests,
     dEQP-GLES3.functional.fbo.* (no regressions)

Change-Id: I992c4c06189887c1b9de02f9b63dd9a474fcffab
Reviewed-on: https://chromium-review.googlesource.com/329094
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
diff --git a/src/tests/gl_tests/FramebufferTest.cpp b/src/tests/gl_tests/FramebufferTest.cpp
index 5edd998..1c679f6 100644
--- a/src/tests/gl_tests/FramebufferTest.cpp
+++ b/src/tests/gl_tests/FramebufferTest.cpp
@@ -124,6 +124,16 @@
         EXPECT_GL_NO_ERROR();
     }
 
+    void testZeroHeightRenderbuffer()
+    {
+        glGenRenderbuffers(1, &mRenderbuffer);
+        glBindRenderbuffer(GL_RENDERBUFFER, mRenderbuffer);
+        glRenderbufferStorage(GL_RENDERBUFFER, GL_RGBA8, 1, 0);
+        glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER,
+                                  mRenderbuffer);
+        EXPECT_GL_NO_ERROR();
+    }
+
     void SetUp() override
     {
         ANGLETest::SetUp();
@@ -303,6 +313,18 @@
     ASSERT_GL_ERROR(GL_INVALID_FRAMEBUFFER_OPERATION);
 }
 
+// Test that a renderbuffer with zero height but nonzero width is handled without crashes/asserts.
+TEST_P(FramebufferFormatsTest, ZeroHeightRenderbuffer)
+{
+    if (getClientVersion() < 3)
+    {
+        std::cout << "Test skipped due to missing ES3" << std::endl;
+        return;
+    }
+
+    testZeroHeightRenderbuffer();
+}
+
 // Use this to select which configurations (e.g. which renderer, which GLES major version) these
 // tests should be run against.
 ANGLE_INSTANTIATE_TEST(FramebufferFormatsTest,