OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "gpu/command_buffer/service/gles2_cmd_decoder.h" | 5 #include "gpu/command_buffer/service/gles2_cmd_decoder.h" |
6 | 6 |
7 #include <limits.h> | 7 #include <limits.h> |
8 #include <stddef.h> | 8 #include <stddef.h> |
9 #include <stdint.h> | 9 #include <stdint.h> |
10 | 10 |
(...skipping 17 matching lines...) Expand all Loading... |
28 #include "gpu/command_buffer/service/test_helper.h" | 28 #include "gpu/command_buffer/service/test_helper.h" |
29 #include "testing/gtest/include/gtest/gtest.h" | 29 #include "testing/gtest/include/gtest/gtest.h" |
30 #include "ui/gl/gl_implementation.h" | 30 #include "ui/gl/gl_implementation.h" |
31 #include "ui/gl/gl_mock.h" | 31 #include "ui/gl/gl_mock.h" |
32 #include "ui/gl/gl_surface_stub.h" | 32 #include "ui/gl/gl_surface_stub.h" |
33 | 33 |
34 #if !defined(GL_DEPTH24_STENCIL8) | 34 #if !defined(GL_DEPTH24_STENCIL8) |
35 #define GL_DEPTH24_STENCIL8 0x88F0 | 35 #define GL_DEPTH24_STENCIL8 0x88F0 |
36 #endif | 36 #endif |
37 | 37 |
38 using ::gfx::MockGLInterface; | 38 using ::gl::MockGLInterface; |
39 using ::testing::_; | 39 using ::testing::_; |
40 using ::testing::AnyNumber; | 40 using ::testing::AnyNumber; |
41 using ::testing::DoAll; | 41 using ::testing::DoAll; |
42 using ::testing::InSequence; | 42 using ::testing::InSequence; |
43 using ::testing::Invoke; | 43 using ::testing::Invoke; |
44 using ::testing::MatcherCast; | 44 using ::testing::MatcherCast; |
45 using ::testing::Mock; | 45 using ::testing::Mock; |
46 using ::testing::Pointee; | 46 using ::testing::Pointee; |
47 using ::testing::Return; | 47 using ::testing::Return; |
48 using ::testing::SaveArg; | 48 using ::testing::SaveArg; |
(...skipping 2927 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2976 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 2976 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
2977 } | 2977 } |
2978 | 2978 |
2979 TEST_P(GLES2DecoderManualInitTest, InvalidateFramebufferBinding) { | 2979 TEST_P(GLES2DecoderManualInitTest, InvalidateFramebufferBinding) { |
2980 InitState init; | 2980 InitState init; |
2981 init.gl_version = "opengl es 3.0"; | 2981 init.gl_version = "opengl es 3.0"; |
2982 InitDecoder(init); | 2982 InitDecoder(init); |
2983 | 2983 |
2984 // EXPECT_EQ can't be used to compare function pointers | 2984 // EXPECT_EQ can't be used to compare function pointers |
2985 EXPECT_TRUE( | 2985 EXPECT_TRUE( |
2986 gfx::MockGLInterface::GetGLProcAddress("glInvalidateFramebuffer") != | 2986 gl::MockGLInterface::GetGLProcAddress("glInvalidateFramebuffer") != |
2987 gfx::g_driver_gl.fn.glDiscardFramebufferEXTFn); | 2987 gl::g_driver_gl.fn.glDiscardFramebufferEXTFn); |
2988 EXPECT_TRUE( | 2988 EXPECT_TRUE( |
2989 gfx::MockGLInterface::GetGLProcAddress("glInvalidateFramebuffer") != | 2989 gl::MockGLInterface::GetGLProcAddress("glInvalidateFramebuffer") != |
2990 gfx::MockGLInterface::GetGLProcAddress("glDiscardFramebufferEXT")); | 2990 gl::MockGLInterface::GetGLProcAddress("glDiscardFramebufferEXT")); |
2991 } | 2991 } |
2992 | 2992 |
2993 TEST_P(GLES2DecoderTest, ClearBackbufferBitsOnFlipSwap) { | 2993 TEST_P(GLES2DecoderTest, ClearBackbufferBitsOnFlipSwap) { |
2994 surface_->set_buffers_flipped(true); | 2994 surface_->set_buffers_flipped(true); |
2995 | 2995 |
2996 EXPECT_EQ(0u, GetAndClearBackbufferClearBitsForTest()); | 2996 EXPECT_EQ(0u, GetAndClearBackbufferClearBitsForTest()); |
2997 | 2997 |
2998 SwapBuffers& cmd = *GetImmediateAs<SwapBuffers>(); | 2998 SwapBuffers& cmd = *GetImmediateAs<SwapBuffers>(); |
2999 cmd.Init(); | 2999 cmd.Init(); |
3000 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 3000 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
(...skipping 25 matching lines...) Expand all Loading... |
3026 } | 3026 } |
3027 | 3027 |
3028 TEST_P(GLES2DecoderManualInitTest, DiscardFramebufferEXT) { | 3028 TEST_P(GLES2DecoderManualInitTest, DiscardFramebufferEXT) { |
3029 InitState init; | 3029 InitState init; |
3030 init.extensions = "GL_EXT_discard_framebuffer"; | 3030 init.extensions = "GL_EXT_discard_framebuffer"; |
3031 init.gl_version = "opengl es 2.0"; | 3031 init.gl_version = "opengl es 2.0"; |
3032 InitDecoder(init); | 3032 InitDecoder(init); |
3033 | 3033 |
3034 // EXPECT_EQ can't be used to compare function pointers | 3034 // EXPECT_EQ can't be used to compare function pointers |
3035 EXPECT_TRUE( | 3035 EXPECT_TRUE( |
3036 gfx::MockGLInterface::GetGLProcAddress("glDiscardFramebufferEXT") == | 3036 gl::MockGLInterface::GetGLProcAddress("glDiscardFramebufferEXT") == |
3037 gfx::g_driver_gl.fn.glDiscardFramebufferEXTFn); | 3037 gl::g_driver_gl.fn.glDiscardFramebufferEXTFn); |
3038 | 3038 |
3039 const GLenum target = GL_FRAMEBUFFER; | 3039 const GLenum target = GL_FRAMEBUFFER; |
3040 const GLsizei count = 1; | 3040 const GLsizei count = 1; |
3041 const GLenum attachments[] = {GL_COLOR_ATTACHMENT0}; | 3041 const GLenum attachments[] = {GL_COLOR_ATTACHMENT0}; |
3042 | 3042 |
3043 SetupTexture(); | 3043 SetupTexture(); |
3044 DoBindFramebuffer( | 3044 DoBindFramebuffer( |
3045 GL_FRAMEBUFFER, client_framebuffer_id_, kServiceFramebufferId); | 3045 GL_FRAMEBUFFER, client_framebuffer_id_, kServiceFramebufferId); |
3046 DoFramebufferTexture2D(GL_FRAMEBUFFER, | 3046 DoFramebufferTexture2D(GL_FRAMEBUFFER, |
3047 GL_COLOR_ATTACHMENT0, | 3047 GL_COLOR_ATTACHMENT0, |
(...skipping 20 matching lines...) Expand all Loading... |
3068 } | 3068 } |
3069 | 3069 |
3070 TEST_P(GLES2DecoderManualInitTest, ClearBackbufferBitsOnDiscardFramebufferEXT) { | 3070 TEST_P(GLES2DecoderManualInitTest, ClearBackbufferBitsOnDiscardFramebufferEXT) { |
3071 InitState init; | 3071 InitState init; |
3072 init.extensions = "GL_EXT_discard_framebuffer"; | 3072 init.extensions = "GL_EXT_discard_framebuffer"; |
3073 init.gl_version = "opengl es 2.0"; | 3073 init.gl_version = "opengl es 2.0"; |
3074 InitDecoder(init); | 3074 InitDecoder(init); |
3075 | 3075 |
3076 // EXPECT_EQ can't be used to compare function pointers. | 3076 // EXPECT_EQ can't be used to compare function pointers. |
3077 EXPECT_TRUE( | 3077 EXPECT_TRUE( |
3078 gfx::MockGLInterface::GetGLProcAddress("glDiscardFramebufferEXT") == | 3078 gl::MockGLInterface::GetGLProcAddress("glDiscardFramebufferEXT") == |
3079 gfx::g_driver_gl.fn.glDiscardFramebufferEXTFn); | 3079 gl::g_driver_gl.fn.glDiscardFramebufferEXTFn); |
3080 | 3080 |
3081 const GLenum target = GL_FRAMEBUFFER; | 3081 const GLenum target = GL_FRAMEBUFFER; |
3082 const GLsizei count = 1; | 3082 const GLsizei count = 1; |
3083 GLenum attachments[] = {GL_COLOR_EXT}; | 3083 GLenum attachments[] = {GL_COLOR_EXT}; |
3084 | 3084 |
3085 EXPECT_CALL(*gl_, DiscardFramebufferEXT(target, count, _)) | 3085 EXPECT_CALL(*gl_, DiscardFramebufferEXT(target, count, _)) |
3086 .Times(1) | 3086 .Times(1) |
3087 .RetiresOnSaturation(); | 3087 .RetiresOnSaturation(); |
3088 DiscardFramebufferEXTImmediate& cmd = | 3088 DiscardFramebufferEXTImmediate& cmd = |
3089 *GetImmediateAs<DiscardFramebufferEXTImmediate>(); | 3089 *GetImmediateAs<DiscardFramebufferEXTImmediate>(); |
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3205 // Check that framebuffer is cleared and complete. | 3205 // Check that framebuffer is cleared and complete. |
3206 FramebufferManager* framebuffer_manager = group().framebuffer_manager(); | 3206 FramebufferManager* framebuffer_manager = group().framebuffer_manager(); |
3207 Framebuffer* framebuffer = | 3207 Framebuffer* framebuffer = |
3208 framebuffer_manager->GetFramebuffer(client_framebuffer_id_); | 3208 framebuffer_manager->GetFramebuffer(client_framebuffer_id_); |
3209 EXPECT_TRUE(framebuffer->IsCleared()); | 3209 EXPECT_TRUE(framebuffer->IsCleared()); |
3210 EXPECT_TRUE(framebuffer_manager->IsComplete(framebuffer)); | 3210 EXPECT_TRUE(framebuffer_manager->IsComplete(framebuffer)); |
3211 | 3211 |
3212 // Check that Discard GL_COLOR_ATTACHMENT0, sets the attachment as uncleared | 3212 // Check that Discard GL_COLOR_ATTACHMENT0, sets the attachment as uncleared |
3213 // and the framebuffer as incomplete. | 3213 // and the framebuffer as incomplete. |
3214 EXPECT_TRUE( | 3214 EXPECT_TRUE( |
3215 gfx::MockGLInterface::GetGLProcAddress("glDiscardFramebufferEXT") == | 3215 gl::MockGLInterface::GetGLProcAddress("glDiscardFramebufferEXT") == |
3216 gfx::g_driver_gl.fn.glDiscardFramebufferEXTFn); | 3216 gl::g_driver_gl.fn.glDiscardFramebufferEXTFn); |
3217 | 3217 |
3218 const GLenum target = GL_FRAMEBUFFER; | 3218 const GLenum target = GL_FRAMEBUFFER; |
3219 const GLsizei count = 1; | 3219 const GLsizei count = 1; |
3220 const GLenum attachments[] = {GL_COLOR_ATTACHMENT0}; | 3220 const GLenum attachments[] = {GL_COLOR_ATTACHMENT0}; |
3221 | 3221 |
3222 DiscardFramebufferEXTImmediate& discard_cmd = | 3222 DiscardFramebufferEXTImmediate& discard_cmd = |
3223 *GetImmediateAs<DiscardFramebufferEXTImmediate>(); | 3223 *GetImmediateAs<DiscardFramebufferEXTImmediate>(); |
3224 discard_cmd.Init(target, count, attachments); | 3224 discard_cmd.Init(target, count, attachments); |
3225 | 3225 |
3226 EXPECT_CALL(*gl_, DiscardFramebufferEXT(target, count, _)) | 3226 EXPECT_CALL(*gl_, DiscardFramebufferEXT(target, count, _)) |
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3325 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); | 3325 EXPECT_EQ(error::kNoError, ExecuteCmd(cmd)); |
3326 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 3326 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
3327 } | 3327 } |
3328 | 3328 |
3329 // TODO(gman): PixelStorei | 3329 // TODO(gman): PixelStorei |
3330 | 3330 |
3331 // TODO(gman): SwapBuffers | 3331 // TODO(gman): SwapBuffers |
3332 | 3332 |
3333 } // namespace gles2 | 3333 } // namespace gles2 |
3334 } // namespace gpu | 3334 } // namespace gpu |
OLD | NEW |