Add support to CHROMIUM_color_buffer_rgba for creating RGBA32F renderbuffers on ES2.

This is desired for implementing WEBGL_color_buffer_float support on
WebGL1 on ANGLE's ES2 driver, for Firefox.

Bug: angleproject:3322
Change-Id: I599f86db62402333d3ef9235956c63e667f1513d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1541722
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Kenneth Russell <kbr@chromium.org>
diff --git a/src/libANGLE/formatutils.cpp b/src/libANGLE/formatutils.cpp
index 2d2f5e0..adb4034 100644
--- a/src/libANGLE/formatutils.cpp
+++ b/src/libANGLE/formatutils.cpp
@@ -280,6 +280,13 @@
            (extensions.colorBufferFloat || extensions.colorBufferHalfFloat);
 }
 
+static bool SizedFloatRGBARenderbufferSupport(const Version &clientVersion,
+                                              const Extensions &extensions)
+{
+    return (clientVersion >= Version(3, 0) || extensions.textureFloat) &&
+           (extensions.colorBufferFloat || extensions.colorBufferFloatRGBA);
+}
+
 // R32F, RG32F
 static bool SizedFloatRGSupport(const Version &clientVersion, const Extensions &extensions)
 {
@@ -783,7 +790,7 @@
     AddRGBAFormat(&map, GL_R32F,          true, 32,  0,  0,  0, 0, GL_RED,  GL_FLOAT,          GL_FLOAT,        false, SizedFloatRGSupport,        RequireExt<&Extensions::textureFloatLinear>, RequireExt<&Extensions::colorBufferFloat>,    RequireExt<&Extensions::colorBufferFloat>);
     AddRGBAFormat(&map, GL_RG32F,         true, 32, 32,  0,  0, 0, GL_RG,   GL_FLOAT,          GL_FLOAT,        false, SizedFloatRGSupport,        RequireExt<&Extensions::textureFloatLinear>, RequireExt<&Extensions::colorBufferFloat>,    RequireExt<&Extensions::colorBufferFloat>);
     AddRGBAFormat(&map, GL_RGB32F,        true, 32, 32, 32,  0, 0, GL_RGB,  GL_FLOAT,          GL_FLOAT,        false, SizedFloatRGBSupport,       RequireExt<&Extensions::textureFloatLinear>, RequireExt<&Extensions::colorBufferFloatRGB>, NeverSupported                           );
-    AddRGBAFormat(&map, GL_RGBA32F,       true, 32, 32, 32, 32, 0, GL_RGBA, GL_FLOAT,          GL_FLOAT,        false, SizedFloatRGBASupport,      RequireExt<&Extensions::textureFloatLinear>, SizedFloatRGBATextureAttachmentSupport,       RequireExt<&Extensions::colorBufferFloat>);
+    AddRGBAFormat(&map, GL_RGBA32F,       true, 32, 32, 32, 32, 0, GL_RGBA, GL_FLOAT,          GL_FLOAT,        false, SizedFloatRGBASupport,      RequireExt<&Extensions::textureFloatLinear>, SizedFloatRGBATextureAttachmentSupport,       SizedFloatRGBARenderbufferSupport);
 
     // Depth stencil formats
     //                         | Internal format         |sized| D |S | X | Format            | Type                             | Component type        | Texture supported                                                | Filterable                                      | Texture attachment                                                                   | Renderbuffer                                                                         |