| 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/test/layer_tree_pixel_resource_test.h" | 5 #include "cc/test/layer_tree_pixel_resource_test.h" |
| 6 | 6 |
| 7 #include "cc/layers/layer.h" | 7 #include "cc/layers/layer.h" |
| 8 #include "cc/output/compositor_frame_sink.h" | 8 #include "cc/output/compositor_frame_sink.h" |
| 9 #include "cc/raster/bitmap_raster_buffer_provider.h" | 9 #include "cc/raster/bitmap_raster_buffer_provider.h" |
| 10 #include "cc/raster/gpu_raster_buffer_provider.h" | 10 #include "cc/raster/gpu_raster_buffer_provider.h" |
| (...skipping 26 matching lines...) Expand all Loading... |
| 37 NOTREACHED(); | 37 NOTREACHED(); |
| 38 return false; | 38 return false; |
| 39 } | 39 } |
| 40 | 40 |
| 41 } // namespace | 41 } // namespace |
| 42 | 42 |
| 43 LayerTreeHostPixelResourceTest::LayerTreeHostPixelResourceTest( | 43 LayerTreeHostPixelResourceTest::LayerTreeHostPixelResourceTest( |
| 44 PixelResourceTestCase test_case) | 44 PixelResourceTestCase test_case) |
| 45 : draw_texture_target_(GL_INVALID_VALUE), | 45 : draw_texture_target_(GL_INVALID_VALUE), |
| 46 raster_buffer_provider_type_(RASTER_BUFFER_PROVIDER_TYPE_BITMAP), | 46 raster_buffer_provider_type_(RASTER_BUFFER_PROVIDER_TYPE_BITMAP), |
| 47 texture_hint_(ResourceProvider::TEXTURE_HINT_IMMUTABLE), |
| 47 initialized_(false), | 48 initialized_(false), |
| 48 test_case_(test_case) { | 49 test_case_(test_case) { |
| 49 InitializeFromTestCase(test_case); | 50 InitializeFromTestCase(test_case); |
| 50 } | 51 } |
| 51 | 52 |
| 52 LayerTreeHostPixelResourceTest::LayerTreeHostPixelResourceTest() | 53 LayerTreeHostPixelResourceTest::LayerTreeHostPixelResourceTest() |
| 53 : draw_texture_target_(GL_INVALID_VALUE), | 54 : draw_texture_target_(GL_INVALID_VALUE), |
| 54 raster_buffer_provider_type_(RASTER_BUFFER_PROVIDER_TYPE_BITMAP), | 55 raster_buffer_provider_type_(RASTER_BUFFER_PROVIDER_TYPE_BITMAP), |
| 55 initialized_(false), | 56 initialized_(false), |
| 56 test_case_(SOFTWARE) {} | 57 test_case_(SOFTWARE) {} |
| 57 | 58 |
| 58 void LayerTreeHostPixelResourceTest::InitializeFromTestCase( | 59 void LayerTreeHostPixelResourceTest::InitializeFromTestCase( |
| 59 PixelResourceTestCase test_case) { | 60 PixelResourceTestCase test_case) { |
| 60 DCHECK(!initialized_); | 61 DCHECK(!initialized_); |
| 61 initialized_ = true; | 62 initialized_ = true; |
| 62 switch (test_case) { | 63 switch (test_case) { |
| 63 case SOFTWARE: | 64 case SOFTWARE: |
| 64 test_type_ = PIXEL_TEST_SOFTWARE; | 65 test_type_ = PIXEL_TEST_SOFTWARE; |
| 65 draw_texture_target_ = GL_INVALID_VALUE; | 66 draw_texture_target_ = GL_INVALID_VALUE; |
| 66 raster_buffer_provider_type_ = RASTER_BUFFER_PROVIDER_TYPE_BITMAP; | 67 raster_buffer_provider_type_ = RASTER_BUFFER_PROVIDER_TYPE_BITMAP; |
| 68 texture_hint_ = ResourceProvider::TEXTURE_HINT_IMMUTABLE; |
| 67 return; | 69 return; |
| 68 case GL_GPU_RASTER_2D_DRAW: | 70 case GL_GPU_RASTER_2D_DRAW: |
| 69 test_type_ = PIXEL_TEST_GL; | 71 test_type_ = PIXEL_TEST_GL; |
| 70 draw_texture_target_ = GL_TEXTURE_2D; | 72 draw_texture_target_ = GL_TEXTURE_2D; |
| 71 raster_buffer_provider_type_ = RASTER_BUFFER_PROVIDER_TYPE_GPU; | 73 raster_buffer_provider_type_ = RASTER_BUFFER_PROVIDER_TYPE_GPU; |
| 74 texture_hint_ = ResourceProvider::TEXTURE_HINT_IMMUTABLE_FRAMEBUFFER; |
| 72 return; | 75 return; |
| 73 case GL_ONE_COPY_2D_STAGING_2D_DRAW: | 76 case GL_ONE_COPY_2D_STAGING_2D_DRAW: |
| 74 test_type_ = PIXEL_TEST_GL; | 77 test_type_ = PIXEL_TEST_GL; |
| 75 draw_texture_target_ = GL_TEXTURE_2D; | 78 draw_texture_target_ = GL_TEXTURE_2D; |
| 76 raster_buffer_provider_type_ = RASTER_BUFFER_PROVIDER_TYPE_ONE_COPY; | 79 raster_buffer_provider_type_ = RASTER_BUFFER_PROVIDER_TYPE_ONE_COPY; |
| 80 texture_hint_ = ResourceProvider::TEXTURE_HINT_IMMUTABLE; |
| 77 return; | 81 return; |
| 78 case GL_ONE_COPY_RECT_STAGING_2D_DRAW: | 82 case GL_ONE_COPY_RECT_STAGING_2D_DRAW: |
| 79 test_type_ = PIXEL_TEST_GL; | 83 test_type_ = PIXEL_TEST_GL; |
| 80 draw_texture_target_ = GL_TEXTURE_2D; | 84 draw_texture_target_ = GL_TEXTURE_2D; |
| 81 raster_buffer_provider_type_ = RASTER_BUFFER_PROVIDER_TYPE_ONE_COPY; | 85 raster_buffer_provider_type_ = RASTER_BUFFER_PROVIDER_TYPE_ONE_COPY; |
| 86 texture_hint_ = ResourceProvider::TEXTURE_HINT_IMMUTABLE; |
| 82 return; | 87 return; |
| 83 case GL_ONE_COPY_EXTERNAL_STAGING_2D_DRAW: | 88 case GL_ONE_COPY_EXTERNAL_STAGING_2D_DRAW: |
| 84 test_type_ = PIXEL_TEST_GL; | 89 test_type_ = PIXEL_TEST_GL; |
| 85 draw_texture_target_ = GL_TEXTURE_2D; | 90 draw_texture_target_ = GL_TEXTURE_2D; |
| 86 raster_buffer_provider_type_ = RASTER_BUFFER_PROVIDER_TYPE_ONE_COPY; | 91 raster_buffer_provider_type_ = RASTER_BUFFER_PROVIDER_TYPE_ONE_COPY; |
| 92 texture_hint_ = ResourceProvider::TEXTURE_HINT_IMMUTABLE; |
| 87 return; | 93 return; |
| 88 case GL_ZERO_COPY_2D_DRAW: | 94 case GL_ZERO_COPY_2D_DRAW: |
| 89 test_type_ = PIXEL_TEST_GL; | 95 test_type_ = PIXEL_TEST_GL; |
| 90 draw_texture_target_ = GL_TEXTURE_2D; | 96 draw_texture_target_ = GL_TEXTURE_2D; |
| 91 raster_buffer_provider_type_ = RASTER_BUFFER_PROVIDER_TYPE_ZERO_COPY; | 97 raster_buffer_provider_type_ = RASTER_BUFFER_PROVIDER_TYPE_ZERO_COPY; |
| 98 texture_hint_ = ResourceProvider::TEXTURE_HINT_IMMUTABLE; |
| 92 return; | 99 return; |
| 93 case GL_ZERO_COPY_RECT_DRAW: | 100 case GL_ZERO_COPY_RECT_DRAW: |
| 94 test_type_ = PIXEL_TEST_GL; | 101 test_type_ = PIXEL_TEST_GL; |
| 95 draw_texture_target_ = GL_TEXTURE_RECTANGLE_ARB; | 102 draw_texture_target_ = GL_TEXTURE_RECTANGLE_ARB; |
| 96 raster_buffer_provider_type_ = RASTER_BUFFER_PROVIDER_TYPE_ZERO_COPY; | 103 raster_buffer_provider_type_ = RASTER_BUFFER_PROVIDER_TYPE_ZERO_COPY; |
| 104 texture_hint_ = ResourceProvider::TEXTURE_HINT_IMMUTABLE; |
| 97 return; | 105 return; |
| 98 case GL_ZERO_COPY_EXTERNAL_DRAW: | 106 case GL_ZERO_COPY_EXTERNAL_DRAW: |
| 99 test_type_ = PIXEL_TEST_GL; | 107 test_type_ = PIXEL_TEST_GL; |
| 100 draw_texture_target_ = GL_TEXTURE_EXTERNAL_OES; | 108 draw_texture_target_ = GL_TEXTURE_EXTERNAL_OES; |
| 101 raster_buffer_provider_type_ = RASTER_BUFFER_PROVIDER_TYPE_ZERO_COPY; | 109 raster_buffer_provider_type_ = RASTER_BUFFER_PROVIDER_TYPE_ZERO_COPY; |
| 110 texture_hint_ = ResourceProvider::TEXTURE_HINT_IMMUTABLE; |
| 102 return; | 111 return; |
| 103 } | 112 } |
| 104 NOTREACHED(); | 113 NOTREACHED(); |
| 105 } | 114 } |
| 106 | 115 |
| 107 void LayerTreeHostPixelResourceTest::CreateResourceAndRasterBufferProvider( | 116 void LayerTreeHostPixelResourceTest::CreateResourceAndRasterBufferProvider( |
| 108 LayerTreeHostImpl* host_impl, | 117 LayerTreeHostImpl* host_impl, |
| 109 std::unique_ptr<RasterBufferProvider>* raster_buffer_provider, | 118 std::unique_ptr<RasterBufferProvider>* raster_buffer_provider, |
| 110 std::unique_ptr<ResourcePool>* resource_pool) { | 119 std::unique_ptr<ResourcePool>* resource_pool) { |
| 111 base::SingleThreadTaskRunner* task_runner = | 120 base::SingleThreadTaskRunner* task_runner = |
| 112 task_runner_provider()->HasImplThread() | 121 task_runner_provider()->HasImplThread() |
| 113 ? task_runner_provider()->ImplThreadTaskRunner() | 122 ? task_runner_provider()->ImplThreadTaskRunner() |
| 114 : task_runner_provider()->MainThreadTaskRunner(); | 123 : task_runner_provider()->MainThreadTaskRunner(); |
| 115 DCHECK(task_runner); | 124 DCHECK(task_runner); |
| 116 DCHECK(initialized_); | 125 DCHECK(initialized_); |
| 117 | 126 |
| 118 ContextProvider* compositor_context_provider = | 127 ContextProvider* compositor_context_provider = |
| 119 host_impl->compositor_frame_sink()->context_provider(); | 128 host_impl->compositor_frame_sink()->context_provider(); |
| 120 ContextProvider* worker_context_provider = | 129 ContextProvider* worker_context_provider = |
| 121 host_impl->compositor_frame_sink()->worker_context_provider(); | 130 host_impl->compositor_frame_sink()->worker_context_provider(); |
| 122 ResourceProvider* resource_provider = host_impl->resource_provider(); | 131 ResourceProvider* resource_provider = host_impl->resource_provider(); |
| 123 int max_bytes_per_copy_operation = 1024 * 1024; | 132 int max_bytes_per_copy_operation = 1024 * 1024; |
| 124 int max_staging_buffer_usage_in_bytes = 32 * 1024 * 1024; | 133 int max_staging_buffer_usage_in_bytes = 32 * 1024 * 1024; |
| 125 | 134 |
| 126 // Create resource pool. | 135 // Create resource pool. |
| 127 *resource_pool = ResourcePool::Create(resource_provider, task_runner, | 136 *resource_pool = |
| 128 ResourcePool::kDefaultExpirationDelay); | 137 ResourcePool::Create(resource_provider, task_runner, texture_hint_, |
| 138 ResourcePool::kDefaultExpirationDelay); |
| 129 | 139 |
| 130 switch (raster_buffer_provider_type_) { | 140 switch (raster_buffer_provider_type_) { |
| 131 case RASTER_BUFFER_PROVIDER_TYPE_BITMAP: | 141 case RASTER_BUFFER_PROVIDER_TYPE_BITMAP: |
| 132 EXPECT_FALSE(compositor_context_provider); | 142 EXPECT_FALSE(compositor_context_provider); |
| 133 EXPECT_EQ(PIXEL_TEST_SOFTWARE, test_type_); | 143 EXPECT_EQ(PIXEL_TEST_SOFTWARE, test_type_); |
| 134 | 144 |
| 135 *raster_buffer_provider = | 145 *raster_buffer_provider = |
| 136 BitmapRasterBufferProvider::Create(resource_provider); | 146 BitmapRasterBufferProvider::Create(resource_provider); |
| 137 break; | 147 break; |
| 138 case RASTER_BUFFER_PROVIDER_TYPE_GPU: | 148 case RASTER_BUFFER_PROVIDER_TYPE_GPU: |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 171 if (!IsTestCaseSupported(test_case_)) | 181 if (!IsTestCaseSupported(test_case_)) |
| 172 return; | 182 return; |
| 173 RunPixelTest(test_type_, content_root, file_name); | 183 RunPixelTest(test_type_, content_root, file_name); |
| 174 } | 184 } |
| 175 | 185 |
| 176 ParameterizedPixelResourceTest::ParameterizedPixelResourceTest() | 186 ParameterizedPixelResourceTest::ParameterizedPixelResourceTest() |
| 177 : LayerTreeHostPixelResourceTest(GetParam()) { | 187 : LayerTreeHostPixelResourceTest(GetParam()) { |
| 178 } | 188 } |
| 179 | 189 |
| 180 } // namespace cc | 190 } // namespace cc |
| OLD | NEW |