| // Copyright (c) 2016 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 "gpu/command_buffer/service/gpu_service_test.h" | |
| #include "gpu/command_buffer/service/test_helper.h" | |
| #include "gpu/command_buffer/service/transform_feedback_manager.h" | |
| #include "testing/gtest/include/gtest/gtest.h" | |
| #include "ui/gl/gl_mock.h" | |
| using ::testing::_; | |
| namespace gpu { | |
| namespace gles2 { | |
| namespace { | |
| const GLuint kTransformFeedbackClientId = 76; | |
| const GLuint kTransformFeedbackServiceId = 1076; | |
| } // anonymous | |
| class TransformFeedbackManagerTest : public GpuServiceTest { | |
| public: | |
| TransformFeedbackManagerTest() { | |
| } | |
| ~TransformFeedbackManagerTest() override {} | |
| protected: | |
| void SetUp() override { | |
| const GLuint kMaxTransformFeedbackSeparateAttribs = 16; | |
| GpuServiceTest::SetUpWithGLVersion("4.1", ""); | |
| manager_.reset(new TransformFeedbackManager( | |
| kMaxTransformFeedbackSeparateAttribs, true)); | |
| } | |
| void TearDown() override { | |
| manager_.reset(); | |
| GpuServiceTest::TearDown(); | |
| } | |
| std::unique_ptr<TransformFeedbackManager> manager_; | |
| }; | |
| TEST_F(TransformFeedbackManagerTest, LifeTime) { | |
| manager_->CreateTransformFeedback( | |
| kTransformFeedbackClientId, kTransformFeedbackServiceId); | |
| scoped_refptr<TransformFeedback> transform_feedback = | |
| manager_->GetTransformFeedback(kTransformFeedbackClientId); | |
| EXPECT_TRUE(transform_feedback.get()); | |
| manager_->RemoveTransformFeedback(kTransformFeedbackClientId); | |
| EXPECT_FALSE(manager_->GetTransformFeedback(kTransformFeedbackClientId)); | |
| EXPECT_CALL(*gl_, DeleteTransformFeedbacks(1, _)) | |
| .Times(1) | |
| .RetiresOnSaturation(); | |
| transform_feedback = nullptr; | |
| } | |
| } // namespace gles2 | |
| } // namespace gpu | |