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 "cc/layers/texture_layer_impl.h" | 5 #include "cc/layers/texture_layer_impl.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 | 8 |
9 #include "cc/output/compositor_frame_sink.h" | 9 #include "cc/output/compositor_frame_sink.h" |
10 #include "cc/output/context_provider.h" | 10 #include "cc/output/context_provider.h" |
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
140 | 140 |
141 EXPECT_EQ(1u, impl.quad_list().size()); | 141 EXPECT_EQ(1u, impl.quad_list().size()); |
142 ASSERT_EQ(DrawQuad::Material::TEXTURE_CONTENT, | 142 ASSERT_EQ(DrawQuad::Material::TEXTURE_CONTENT, |
143 impl.quad_list().front()->material); | 143 impl.quad_list().front()->material); |
144 const TextureDrawQuad* quad = | 144 const TextureDrawQuad* quad = |
145 TextureDrawQuad::MaterialCast(impl.quad_list().front()); | 145 TextureDrawQuad::MaterialCast(impl.quad_list().front()); |
146 EXPECT_TRUE(quad->secure_output_only); | 146 EXPECT_TRUE(quad->secure_output_only); |
147 } | 147 } |
148 } | 148 } |
149 | 149 |
| 150 TEST(TextureLayerImplTest, ResourceNotFreedOnGpuRasterToggle) { |
| 151 LayerTreeSettings settings; |
| 152 settings.gpu_rasterization_enabled = true; |
| 153 LayerTestCommon::LayerImplTest impl(settings); |
| 154 impl.host_impl()->AdvanceToNextFrame(base::TimeDelta::FromMilliseconds(1)); |
| 155 |
| 156 gfx::Size layer_size(1000, 1000); |
| 157 gfx::Size viewport_size(1000, 1000); |
| 158 |
| 159 gpu::Mailbox mailbox; |
| 160 impl.compositor_frame_sink() |
| 161 ->context_provider() |
| 162 ->ContextGL() |
| 163 ->GenMailboxCHROMIUM(mailbox.name); |
| 164 TextureMailbox texture_mailbox( |
| 165 mailbox, |
| 166 gpu::SyncToken(gpu::CommandBufferNamespace::GPU_IO, 0x123, |
| 167 gpu::CommandBufferId::FromUnsafeValue(0x234), 0x456), |
| 168 GL_TEXTURE_2D); |
| 169 |
| 170 TextureLayerImpl* texture_layer_impl = |
| 171 impl.AddChildToRoot<TextureLayerImpl>(); |
| 172 texture_layer_impl->SetBounds(layer_size); |
| 173 texture_layer_impl->SetDrawsContent(true); |
| 174 bool released = false; |
| 175 texture_layer_impl->SetTextureMailbox( |
| 176 texture_mailbox, |
| 177 SingleReleaseCallbackImpl::Create(base::Bind( |
| 178 [](bool* released, const gpu::SyncToken& sync_token, bool lost, |
| 179 BlockingTaskRunner* main_thread_task_runner) { *released = true; }, |
| 180 base::Unretained(&released)))); |
| 181 |
| 182 impl.CalcDrawProps(viewport_size); |
| 183 |
| 184 // Gpu rasterization is disabled by default. |
| 185 EXPECT_FALSE(impl.host_impl()->use_gpu_rasterization()); |
| 186 EXPECT_FALSE(released); |
| 187 // Toggling the gpu rasterization clears all tilings on both trees. |
| 188 impl.host_impl()->SetHasGpuRasterizationTrigger(true); |
| 189 impl.host_impl()->SetContentIsSuitableForGpuRasterization(true); |
| 190 impl.host_impl()->CommitComplete(); |
| 191 EXPECT_TRUE(impl.host_impl()->use_gpu_rasterization()); |
| 192 EXPECT_FALSE(released); |
| 193 } |
| 194 |
150 } // namespace | 195 } // namespace |
151 } // namespace cc | 196 } // namespace cc |
OLD | NEW |