Merge changes I87bf1147,I1bfc5656 into nyc-dev

* changes:
  Enable blending for floating point formats
  Always disable blending for 32bit float formats
diff --git a/modules/gles31/functional/es31fDrawBuffersIndexedTests.cpp b/modules/gles31/functional/es31fDrawBuffersIndexedTests.cpp
index a9948f3..171d05c 100644
--- a/modules/gles31/functional/es31fDrawBuffersIndexedTests.cpp
+++ b/modules/gles31/functional/es31fDrawBuffersIndexedTests.cpp
@@ -661,7 +661,9 @@
 	else
 		state.fragOps.blendMode = rr::BLENDMODE_NONE;
 
-	if (tcu::getTextureChannelClass(info.getFormat().type) != tcu::TEXTURECHANNELCLASS_SIGNED_FIXED_POINT && tcu::getTextureChannelClass(info.getFormat().type) != tcu::TEXTURECHANNELCLASS_UNSIGNED_FIXED_POINT)
+	if (tcu::getTextureChannelClass(info.getFormat().type) != tcu::TEXTURECHANNELCLASS_SIGNED_FIXED_POINT
+		&& tcu::getTextureChannelClass(info.getFormat().type) != tcu::TEXTURECHANNELCLASS_UNSIGNED_FIXED_POINT
+		&& tcu::getTextureChannelClass(info.getFormat().type) != tcu::TEXTURECHANNELCLASS_FLOATING_POINT)
 		state.fragOps.blendMode = rr::BLENDMODE_NONE;
 
 	return state;
@@ -1357,6 +1359,32 @@
 		BlendState			blendState;
 
 		genRandomBlendState(rng, blendState);
+
+		// 32bit float formats don't support blending in GLES32
+		if (format.type == tcu::TextureFormat::FLOAT)
+		{
+			// If format is 32bit float post common can't enable blending
+			if (postCommon.enableBlend && *postCommon.enableBlend)
+			{
+				// Either don't set enable blend or disable blending
+				if (rng.getBool())
+					postCommon.enableBlend = tcu::nothing<bool>();
+				else
+					postCommon.enableBlend = tcu::just(false);
+			}
+
+			// If post common doesn't disable blending, per attachment state or
+			// pre common must.
+			if (!postCommon.enableBlend)
+			{
+				// If pre common enables blend per attachment must disable it
+				// If per attachment state changes blend state it must disable it
+				if ((preCommon.enableBlend && *preCommon.enableBlend)
+					|| blendState.enableBlend)
+					blendState.enableBlend = tcu::just(false);
+			}
+		}
+
 		drawBuffers.push_back(DrawBufferInfo(render, size, blendState, format));
 	}
 }