Index: gpu/command_buffer/service/test_helper.cc |
diff --git a/gpu/command_buffer/service/test_helper.cc b/gpu/command_buffer/service/test_helper.cc |
index 92c5ec456ef78ca6ff2d1ab6a0b922c224bf3bf3..c164eea9d92c9cae1743be4653728179738014e5 100644 |
--- a/gpu/command_buffer/service/test_helper.cc |
+++ b/gpu/command_buffer/service/test_helper.cc |
@@ -227,16 +227,20 @@ void TestHelper::SetupTextureManagerDestructionExpectations( |
void TestHelper::SetupContextGroupInitExpectations( |
::gfx::MockGLInterface* gl, |
const DisallowedFeatures& disallowed_features, |
- const char* extensions) { |
+ const char* extensions, |
+ const char* gl_version) { |
InSequence sequence; |
- SetupFeatureInfoInitExpectations(gl, extensions); |
+ SetupFeatureInfoInitExpectationsWithGLVersion(gl, extensions, "", gl_version); |
+ |
+ std::string l_version(StringToLowerASCII(std::string(gl_version))); |
+ bool is_es3 = (l_version.substr(0, 12) == "opengl es 3."); |
EXPECT_CALL(*gl, GetIntegerv(GL_MAX_RENDERBUFFER_SIZE, _)) |
.WillOnce(SetArgumentPointee<1>(kMaxRenderbufferSize)) |
.RetiresOnSaturation(); |
if (strstr(extensions, "GL_EXT_framebuffer_multisample") || |
- strstr(extensions, "GL_EXT_multisampled_render_to_texture")) { |
+ strstr(extensions, "GL_EXT_multisampled_render_to_texture") || is_es3) { |
EXPECT_CALL(*gl, GetIntegerv(GL_MAX_SAMPLES, _)) |
.WillOnce(SetArgumentPointee<1>(kMaxSamples)) |
.RetiresOnSaturation(); |
@@ -297,6 +301,78 @@ void TestHelper::SetupFeatureInfoInitExpectationsWithGLVersion( |
EXPECT_CALL(*gl, GetString(GL_VERSION)) |
.WillOnce(Return(reinterpret_cast<const uint8*>(gl_version))) |
.RetiresOnSaturation(); |
+ |
+ std::string l_version(StringToLowerASCII(std::string(gl_version))); |
+ bool is_es3 = (l_version.substr(0, 12) == "opengl es 3."); |
+ |
+ if (strstr(extensions, "GL_ARB_texture_float") || |
+ (is_es3 && strstr(extensions, "GL_EXT_color_buffer_float"))) { |
+ static const GLuint gl_ids[] = {101, 102}; |
+ const GLsizei width = 16; |
+ EXPECT_CALL(*gl, GetIntegerv(GL_FRAMEBUFFER_BINDING, _)) |
+ .WillOnce(SetArgumentPointee<1>(gl_ids[0])) |
+ .RetiresOnSaturation(); |
+ EXPECT_CALL(*gl, GetIntegerv(GL_TEXTURE_BINDING_2D, _)) |
+ .WillOnce(SetArgumentPointee<1>(gl_ids[0])) |
+ .RetiresOnSaturation(); |
+ EXPECT_CALL(*gl, GenTextures(1, _)) |
+ .WillOnce(SetArrayArgument<1>(gl_ids + 1, gl_ids + 2)) |
+ .RetiresOnSaturation(); |
+ EXPECT_CALL(*gl, GenFramebuffersEXT(1, _)) |
+ .WillOnce(SetArrayArgument<1>(gl_ids + 1, gl_ids + 2)) |
+ .RetiresOnSaturation(); |
+ EXPECT_CALL(*gl, BindTexture(GL_TEXTURE_2D, gl_ids[1])) |
+ .Times(1) |
+ .RetiresOnSaturation(); |
+ EXPECT_CALL(*gl, TexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, |
+ GL_NEAREST)) |
+ .Times(1) |
+ .RetiresOnSaturation(); |
+ EXPECT_CALL(*gl, TexImage2D(GL_TEXTURE_2D, 0, GL_RGBA32F, width, width, 0, |
+ GL_RGBA, GL_FLOAT, _)) |
+ .Times(1) |
+ .RetiresOnSaturation(); |
+ EXPECT_CALL(*gl, BindFramebufferEXT(GL_FRAMEBUFFER, gl_ids[1])) |
+ .Times(1) |
+ .RetiresOnSaturation(); |
+ EXPECT_CALL(*gl, FramebufferTexture2DEXT(GL_FRAMEBUFFER, |
+ GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, gl_ids[1], 0)) |
+ .Times(1) |
+ .RetiresOnSaturation(); |
+ EXPECT_CALL(*gl, CheckFramebufferStatusEXT(GL_FRAMEBUFFER)) |
+ .WillOnce(Return(GL_FRAMEBUFFER_COMPLETE)) |
+ .RetiresOnSaturation(); |
+ EXPECT_CALL(*gl, TexImage2D(GL_TEXTURE_2D, 0, GL_RGB32F, width, width, 0, |
+ GL_RGB, GL_FLOAT, _)) |
+ .Times(1) |
+ .RetiresOnSaturation(); |
+ if (is_es3) { |
+ EXPECT_CALL(*gl, CheckFramebufferStatusEXT(GL_FRAMEBUFFER)) |
+ .WillOnce(Return(GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT)) |
+ .RetiresOnSaturation(); |
+ } else { |
+ EXPECT_CALL(*gl, CheckFramebufferStatusEXT(GL_FRAMEBUFFER)) |
+ .WillOnce(Return(GL_FRAMEBUFFER_COMPLETE)) |
+ .RetiresOnSaturation(); |
+ } |
+ EXPECT_CALL(*gl, DeleteFramebuffersEXT(1, _)) |
+ .Times(1) |
+ .RetiresOnSaturation(); |
+ EXPECT_CALL(*gl, DeleteTextures(1, _)) |
+ .Times(1) |
+ .RetiresOnSaturation(); |
+ EXPECT_CALL(*gl, BindFramebufferEXT(GL_FRAMEBUFFER, gl_ids[0])) |
+ .Times(1) |
+ .RetiresOnSaturation(); |
+ EXPECT_CALL(*gl, BindTexture(GL_TEXTURE_2D, gl_ids[0])) |
+ .Times(1) |
+ .RetiresOnSaturation(); |
+ if (DCHECK_IS_ON()) { |
+ EXPECT_CALL(*gl, GetError()) |
+ .WillOnce(Return(GL_NO_ERROR)) |
+ .RetiresOnSaturation(); |
+ } |
+ } |
} |
void TestHelper::SetupExpectationsForClearingUniforms( |