Index: gpu/command_buffer/tests/gl_gpu_memory_buffer_unittests.cc |
diff --git a/gpu/command_buffer/tests/gl_gpu_memory_buffer_unittests.cc b/gpu/command_buffer/tests/gl_gpu_memory_buffer_unittests.cc |
deleted file mode 100644 |
index 91fbc6ae87337a0be0db9f133de6d7b4ec9d4fff..0000000000000000000000000000000000000000 |
--- a/gpu/command_buffer/tests/gl_gpu_memory_buffer_unittests.cc |
+++ /dev/null |
@@ -1,209 +0,0 @@ |
-// Copyright (c) 2013 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include <GLES2/gl2.h> |
-#include <GLES2/gl2chromium.h> |
-#include <GLES2/gl2ext.h> |
-#include <GLES2/gl2extchromium.h> |
- |
-#include "base/bind.h" |
-#include "base/memory/ref_counted.h" |
-#include "base/process/process_handle.h" |
-#include "gpu/command_buffer/client/gles2_implementation.h" |
-#include "gpu/command_buffer/client/gpu_memory_buffer_factory.h" |
-#include "gpu/command_buffer/service/command_buffer_service.h" |
-#include "gpu/command_buffer/service/image_manager.h" |
-#include "gpu/command_buffer/tests/gl_manager.h" |
-#include "gpu/command_buffer/tests/gl_test_utils.h" |
-#include "testing/gmock/include/gmock/gmock.h" |
-#include "testing/gtest/include/gtest/gtest.h" |
-#include "ui/gl/gl_image.h" |
- |
-using testing::_; |
-using testing::IgnoreResult; |
-using testing::InvokeWithoutArgs; |
-using testing::Invoke; |
-using testing::Return; |
-using testing::SetArgPointee; |
-using testing::StrictMock; |
- |
-namespace gpu { |
-namespace gles2 { |
- |
-static const int kImageWidth = 32; |
-static const int kImageHeight = 32; |
-static const int kImageBytesPerPixel = 4; |
- |
-class MockGpuMemoryBuffer : public gfx::GpuMemoryBuffer { |
- public: |
- MockGpuMemoryBuffer(int width, int height) {} |
- virtual ~MockGpuMemoryBuffer() { |
- Die(); |
- } |
- |
- MOCK_METHOD2(Map, void(gfx::GpuMemoryBuffer::AccessMode, void**)); |
- MOCK_METHOD0(Unmap, void()); |
- MOCK_CONST_METHOD0(IsMapped, bool()); |
- MOCK_CONST_METHOD0(GetStride, uint32()); |
- MOCK_CONST_METHOD0(GetHandle, gfx::GpuMemoryBufferHandle()); |
- MOCK_METHOD0(Die, void()); |
- |
- private: |
- DISALLOW_COPY_AND_ASSIGN(MockGpuMemoryBuffer); |
-}; |
- |
-class MockGpuMemoryBufferFactory : public GpuMemoryBufferFactory { |
- public: |
- MockGpuMemoryBufferFactory() {} |
- virtual ~MockGpuMemoryBufferFactory() {} |
- |
- MOCK_METHOD3(CreateGpuMemoryBuffer, |
- gfx::GpuMemoryBuffer*(size_t, size_t, unsigned)); |
- |
- private: |
- DISALLOW_COPY_AND_ASSIGN(MockGpuMemoryBufferFactory); |
-}; |
- |
-class MockGpuMemoryBufferTest : public testing::Test { |
- protected: |
- virtual void SetUp() { |
- GLManager::Options options; |
- image_manager_ = new ImageManager; |
- gpu_memory_buffer_factory_.reset(new MockGpuMemoryBufferFactory); |
- options.image_manager = image_manager_.get(); |
- options.gpu_memory_buffer_factory = gpu_memory_buffer_factory_.get(); |
- |
- gl_.Initialize(options); |
- gl_.MakeCurrent(); |
- |
- glGenTextures(2, texture_ids_); |
- glBindTexture(GL_TEXTURE_2D, texture_ids_[1]); |
- |
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); |
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); |
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); |
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); |
- |
- glGenFramebuffers(1, &framebuffer_id_); |
- glBindFramebuffer(GL_FRAMEBUFFER, framebuffer_id_); |
- glFramebufferTexture2D(GL_FRAMEBUFFER, |
- GL_COLOR_ATTACHMENT0, |
- GL_TEXTURE_2D, |
- texture_ids_[1], |
- 0); |
- } |
- |
- virtual void TearDown() { |
- glDeleteTextures(2, texture_ids_); |
- glDeleteFramebuffers(1, &framebuffer_id_); |
- |
- gl_.Destroy(); |
- } |
- |
- scoped_refptr<ImageManager> image_manager_; |
- scoped_ptr<MockGpuMemoryBufferFactory> gpu_memory_buffer_factory_; |
- GLManager gl_; |
- GLuint texture_ids_[2]; |
- GLuint framebuffer_id_; |
-}; |
- |
-// An end to end test that tests the whole GpuMemoryBuffer lifecycle. |
-TEST_F(MockGpuMemoryBufferTest, Lifecycle) { |
- size_t bytes = kImageWidth * kImageHeight * kImageBytesPerPixel; |
- uint8 pixels[1 * 4] = { 255u, 0u, 0u, 255u }; |
- |
- // Buffer is owned and freed by GpuMemoryBufferTracker. |
- StrictMock<MockGpuMemoryBuffer>* gpu_memory_buffer = |
- new StrictMock<MockGpuMemoryBuffer>(kImageWidth, kImageHeight); |
- base::SharedMemory shared_memory; |
- shared_memory.CreateAnonymous(bytes); |
- |
- base::SharedMemoryHandle duped_shared_memory_handle; |
- shared_memory.ShareToProcess(base::GetCurrentProcessHandle(), |
- &duped_shared_memory_handle); |
- gfx::GpuMemoryBufferHandle handle; |
- handle.type = gfx::SHARED_MEMORY_BUFFER; |
- handle.handle = duped_shared_memory_handle; |
- |
- EXPECT_CALL(*gpu_memory_buffer_factory_.get(), CreateGpuMemoryBuffer( |
- kImageWidth, kImageHeight, GL_RGBA8_OES)) |
- .Times(1) |
- .WillOnce(Return(gpu_memory_buffer)) |
- .RetiresOnSaturation(); |
- EXPECT_CALL(*gpu_memory_buffer, GetHandle()) |
- .Times(1) |
- .WillOnce(Return(handle)) |
- .RetiresOnSaturation(); |
- |
- // Create the image. This should add the image ID to the ImageManager. |
- GLuint image_id = glCreateImageCHROMIUM( |
- kImageWidth, kImageHeight, GL_RGBA8_OES); |
- EXPECT_NE(0u, image_id); |
- EXPECT_TRUE(image_manager_->LookupImage(image_id) != NULL); |
- |
- EXPECT_CALL(*gpu_memory_buffer, IsMapped()) |
- .WillOnce(Return(false)) |
- .RetiresOnSaturation(); |
- |
- shared_memory.Map(bytes); |
- EXPECT_TRUE(shared_memory.memory()); |
- |
- EXPECT_CALL(*gpu_memory_buffer, Map(_, _)) |
- .Times(1) |
- .WillOnce(SetArgPointee<1>(shared_memory.memory())) |
- .RetiresOnSaturation(); |
- uint8* mapped_buffer = static_cast<uint8*>( |
- glMapImageCHROMIUM(image_id, GL_READ_WRITE)); |
- ASSERT_TRUE(mapped_buffer != NULL); |
- |
- // Assign a value to each pixel. |
- int stride = kImageWidth * kImageBytesPerPixel; |
- for (int x = 0; x < kImageWidth; ++x) { |
- for (int y = 0; y < kImageHeight; ++y) { |
- mapped_buffer[y * stride + x * kImageBytesPerPixel + 0] = pixels[0]; |
- mapped_buffer[y * stride + x * kImageBytesPerPixel + 1] = pixels[1]; |
- mapped_buffer[y * stride + x * kImageBytesPerPixel + 2] = pixels[2]; |
- mapped_buffer[y * stride + x * kImageBytesPerPixel + 3] = pixels[3]; |
- } |
- } |
- |
- EXPECT_CALL(*gpu_memory_buffer, IsMapped()) |
- .WillOnce(Return(true)) |
- .RetiresOnSaturation(); |
- |
- // Unmap the image. |
- EXPECT_CALL(*gpu_memory_buffer, Unmap()) |
- .Times(1) |
- .RetiresOnSaturation(); |
- glUnmapImageCHROMIUM(image_id); |
- |
- // Bind the texture and the image. |
- glBindTexture(GL_TEXTURE_2D, texture_ids_[0]); |
- glBindTexImage2DCHROMIUM(GL_TEXTURE_2D, image_id); |
- |
- // Copy texture so we can verify result using CheckPixels. |
- glCopyTextureCHROMIUM(GL_TEXTURE_2D, |
- texture_ids_[0], |
- texture_ids_[1], |
- 0, |
- GL_RGBA, |
- GL_UNSIGNED_BYTE); |
- EXPECT_TRUE(glGetError() == GL_NO_ERROR); |
- |
- // Check if pixels match the values that were assigned to the mapped buffer. |
- GLTestHelper::CheckPixels(0, 0, kImageWidth, kImageHeight, 0, pixels); |
- EXPECT_TRUE(GL_NO_ERROR == glGetError()); |
- |
- // Release the image. |
- glReleaseTexImage2DCHROMIUM(GL_TEXTURE_2D, image_id); |
- |
- // Destroy the image. |
- EXPECT_CALL(*gpu_memory_buffer, Die()) |
- .Times(1) |
- .RetiresOnSaturation(); |
- glDestroyImageCHROMIUM(image_id); |
-} |
- |
-} // namespace gles2 |
-} // namespace gpu |