OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "base/atomicops.h" | 7 #include "base/atomicops.h" |
8 #include "gpu/command_buffer/common/gles2_cmd_format.h" | 8 #include "gpu/command_buffer/common/gles2_cmd_format.h" |
9 #include "gpu/command_buffer/common/gles2_cmd_utils.h" | 9 #include "gpu/command_buffer/common/gles2_cmd_utils.h" |
10 #include "gpu/command_buffer/common/id_allocator.h" | 10 #include "gpu/command_buffer/common/id_allocator.h" |
11 #include "gpu/command_buffer/service/async_pixel_transfer_delegate_mock.h" | 11 #include "gpu/command_buffer/service/async_pixel_transfer_delegate_mock.h" |
12 #include "gpu/command_buffer/service/async_pixel_transfer_manager.h" | 12 #include "gpu/command_buffer/service/async_pixel_transfer_manager.h" |
| 13 #include "gpu/command_buffer/service/async_pixel_transfer_manager_test.h" |
13 #include "gpu/command_buffer/service/cmd_buffer_engine.h" | 14 #include "gpu/command_buffer/service/cmd_buffer_engine.h" |
14 #include "gpu/command_buffer/service/context_group.h" | 15 #include "gpu/command_buffer/service/context_group.h" |
15 #include "gpu/command_buffer/service/gl_surface_mock.h" | 16 #include "gpu/command_buffer/service/gl_surface_mock.h" |
16 #include "gpu/command_buffer/service/gles2_cmd_decoder_unittest_base.h" | 17 #include "gpu/command_buffer/service/gles2_cmd_decoder_unittest_base.h" |
17 #include "gpu/command_buffer/service/image_manager.h" | 18 #include "gpu/command_buffer/service/image_manager.h" |
18 #include "gpu/command_buffer/service/mailbox_manager.h" | 19 #include "gpu/command_buffer/service/mailbox_manager.h" |
19 #include "gpu/command_buffer/service/mocks.h" | 20 #include "gpu/command_buffer/service/mocks.h" |
20 #include "gpu/command_buffer/service/program_manager.h" | 21 #include "gpu/command_buffer/service/program_manager.h" |
21 #include "gpu/command_buffer/service/stream_texture_manager_mock.h" | 22 #include "gpu/command_buffer/service/stream_texture_manager_mock.h" |
22 #include "gpu/command_buffer/service/stream_texture_mock.h" | 23 #include "gpu/command_buffer/service/stream_texture_mock.h" |
(...skipping 8051 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
8074 false, false, false, // has alpha/depth/stencil | 8075 false, false, false, // has alpha/depth/stencil |
8075 false, false, false, // request alpha/depth/stencil | 8076 false, false, false, // request alpha/depth/stencil |
8076 true); // bind generates resource | 8077 true); // bind generates resource |
8077 | 8078 |
8078 // Set up the texture. | 8079 // Set up the texture. |
8079 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); | 8080 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); |
8080 TextureRef* texture_ref = GetTexture(client_texture_id_); | 8081 TextureRef* texture_ref = GetTexture(client_texture_id_); |
8081 Texture* texture = texture_ref->texture(); | 8082 Texture* texture = texture_ref->texture(); |
8082 | 8083 |
8083 // Set a mock Async delegate | 8084 // Set a mock Async delegate |
| 8085 gpu::AsyncPixelTransferManagerTest* manager = |
| 8086 new gpu::AsyncPixelTransferManagerTest; |
| 8087 manager->Initialize(group().texture_manager()); |
| 8088 decoder_->SetAsyncPixelTransferManagerForTest(manager); |
8084 StrictMock<gpu::MockAsyncPixelTransferDelegate>* delegate = | 8089 StrictMock<gpu::MockAsyncPixelTransferDelegate>* delegate = |
8085 new StrictMock<gpu::MockAsyncPixelTransferDelegate>; | 8090 manager->GetMockDelegate(); |
8086 decoder_->SetAsyncPixelTransferDelegateForTest(delegate); | |
8087 StrictMock<gpu::MockAsyncPixelTransferState>* state = NULL; | 8091 StrictMock<gpu::MockAsyncPixelTransferState>* state = NULL; |
8088 | 8092 |
8089 // Tex(Sub)Image2D upload commands. | 8093 // Tex(Sub)Image2D upload commands. |
8090 AsyncTexImage2DCHROMIUM teximage_cmd; | 8094 AsyncTexImage2DCHROMIUM teximage_cmd; |
8091 teximage_cmd.Init(GL_TEXTURE_2D, 0, GL_RGBA, 8, 8, 0, GL_RGBA, | 8095 teximage_cmd.Init(GL_TEXTURE_2D, 0, GL_RGBA, 8, 8, 0, GL_RGBA, |
8092 GL_UNSIGNED_BYTE, kSharedMemoryId, kSharedMemoryOffset); | 8096 GL_UNSIGNED_BYTE, kSharedMemoryId, kSharedMemoryOffset); |
8093 AsyncTexSubImage2DCHROMIUM texsubimage_cmd; | 8097 AsyncTexSubImage2DCHROMIUM texsubimage_cmd; |
8094 texsubimage_cmd.Init(GL_TEXTURE_2D, 0, 0, 0, 8, 8, GL_RGBA, | 8098 texsubimage_cmd.Init(GL_TEXTURE_2D, 0, 0, 0, 8, 8, GL_RGBA, |
8095 GL_UNSIGNED_BYTE, kSharedMemoryId, kSharedMemoryOffset); | 8099 GL_UNSIGNED_BYTE, kSharedMemoryId, kSharedMemoryOffset); |
8096 WaitAsyncTexImage2DCHROMIUM wait_cmd; | 8100 WaitAsyncTexImage2DCHROMIUM wait_cmd; |
(...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
8237 EXPECT_TRUE(decoder_->GetAsyncPixelTransferManager()->GetPixelTransferState( | 8241 EXPECT_TRUE(decoder_->GetAsyncPixelTransferManager()->GetPixelTransferState( |
8238 texture_ref)); | 8242 texture_ref)); |
8239 | 8243 |
8240 EXPECT_TRUE(texture->IsImmutable()); | 8244 EXPECT_TRUE(texture->IsImmutable()); |
8241 // Wait for completion. | 8245 // Wait for completion. |
8242 EXPECT_CALL(*delegate, WaitForTransferCompletion(state)); | 8246 EXPECT_CALL(*delegate, WaitForTransferCompletion(state)); |
8243 EXPECT_CALL(*delegate, BindCompletedAsyncTransfers()); | 8247 EXPECT_CALL(*delegate, BindCompletedAsyncTransfers()); |
8244 EXPECT_EQ(error::kNoError, ExecuteCmd(wait_cmd)); | 8248 EXPECT_EQ(error::kNoError, ExecuteCmd(wait_cmd)); |
8245 EXPECT_EQ(GL_NO_ERROR, GetGLError()); | 8249 EXPECT_EQ(GL_NO_ERROR, GetGLError()); |
8246 } | 8250 } |
8247 | |
8248 decoder_->SetAsyncPixelTransferDelegateForTest(NULL); | |
8249 decoder_->GetAsyncPixelTransferManager() | |
8250 ->ClearPixelTransferStateForTest(texture_ref); | |
8251 } | 8251 } |
8252 | 8252 |
8253 TEST_F(GLES2DecoderManualInitTest, AsyncPixelTransferManager) { | 8253 TEST_F(GLES2DecoderManualInitTest, AsyncPixelTransferManager) { |
8254 InitDecoder( | 8254 InitDecoder( |
8255 "GL_CHROMIUM_async_pixel_transfers", // extensions | 8255 "GL_CHROMIUM_async_pixel_transfers", // extensions |
8256 false, false, false, // has alpha/depth/stencil | 8256 false, false, false, // has alpha/depth/stencil |
8257 false, false, false, // request alpha/depth/stencil | 8257 false, false, false, // request alpha/depth/stencil |
8258 true); // bind generates resource | 8258 true); // bind generates resource |
8259 | 8259 |
8260 // Set up the texture. | 8260 // Set up the texture. |
8261 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); | 8261 DoBindTexture(GL_TEXTURE_2D, client_texture_id_, kServiceTextureId); |
8262 TextureRef* texture_ref = GetTexture(client_texture_id_); | 8262 TextureRef* texture_ref = GetTexture(client_texture_id_); |
8263 | 8263 |
8264 // Set a mock Async delegate. | 8264 // Set a mock Async delegate. |
| 8265 gpu::AsyncPixelTransferManagerTest* manager = |
| 8266 new gpu::AsyncPixelTransferManagerTest; |
| 8267 manager->Initialize(group().texture_manager()); |
| 8268 decoder_->SetAsyncPixelTransferManagerForTest(manager); |
8265 StrictMock<gpu::MockAsyncPixelTransferDelegate>* delegate = | 8269 StrictMock<gpu::MockAsyncPixelTransferDelegate>* delegate = |
8266 new StrictMock<gpu::MockAsyncPixelTransferDelegate>; | 8270 manager->GetMockDelegate(); |
8267 decoder_->SetAsyncPixelTransferDelegateForTest(delegate); | |
8268 StrictMock<gpu::MockAsyncPixelTransferState>* state = NULL; | 8271 StrictMock<gpu::MockAsyncPixelTransferState>* state = NULL; |
8269 | 8272 |
8270 AsyncTexImage2DCHROMIUM teximage_cmd; | 8273 AsyncTexImage2DCHROMIUM teximage_cmd; |
8271 teximage_cmd.Init(GL_TEXTURE_2D, 0, GL_RGBA, 8, 8, 0, GL_RGBA, | 8274 teximage_cmd.Init(GL_TEXTURE_2D, 0, GL_RGBA, 8, 8, 0, GL_RGBA, |
8272 GL_UNSIGNED_BYTE, kSharedMemoryId, kSharedMemoryOffset); | 8275 GL_UNSIGNED_BYTE, kSharedMemoryId, kSharedMemoryOffset); |
8273 | 8276 |
8274 // No transfer state exists initially. | 8277 // No transfer state exists initially. |
8275 EXPECT_FALSE(decoder_->GetAsyncPixelTransferManager()->GetPixelTransferState( | 8278 EXPECT_FALSE(decoder_->GetAsyncPixelTransferManager()->GetPixelTransferState( |
8276 texture_ref)); | 8279 texture_ref)); |
8277 | 8280 |
(...skipping 364 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
8642 // TODO(gman): TexImage2DImmediate | 8645 // TODO(gman): TexImage2DImmediate |
8643 | 8646 |
8644 // TODO(gman): TexSubImage2DImmediate | 8647 // TODO(gman): TexSubImage2DImmediate |
8645 | 8648 |
8646 // TODO(gman): UseProgram | 8649 // TODO(gman): UseProgram |
8647 | 8650 |
8648 // TODO(gman): SwapBuffers | 8651 // TODO(gman): SwapBuffers |
8649 | 8652 |
8650 } // namespace gles2 | 8653 } // namespace gles2 |
8651 } // namespace gpu | 8654 } // namespace gpu |
OLD | NEW |