Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3186)

Unified Diff: cc/trees/layer_tree_host_unittest_delegated.cc

Issue 23451023: cc: Tell the LayerTreeHost that the filter context is needed. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: delegated-filters: add header Created 7 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « cc/test/render_pass_test_utils.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/trees/layer_tree_host_unittest_delegated.cc
diff --git a/cc/trees/layer_tree_host_unittest_delegated.cc b/cc/trees/layer_tree_host_unittest_delegated.cc
index 3fd040bc31ce4e2dc9f7e14f8de56b9d762c6520..5363d683e58603003aa753aedce08005b4e6d6c9 100644
--- a/cc/trees/layer_tree_host_unittest_delegated.cc
+++ b/cc/trees/layer_tree_host_unittest_delegated.cc
@@ -16,6 +16,7 @@
#include "cc/output/compositor_frame.h"
#include "cc/output/compositor_frame_ack.h"
#include "cc/output/delegated_frame_data.h"
+#include "cc/quads/render_pass_draw_quad.h"
#include "cc/quads/shared_quad_state.h"
#include "cc/quads/texture_draw_quad.h"
#include "cc/resources/returned_resource.h"
@@ -154,6 +155,39 @@ class LayerTreeHostDelegatedTest : public LayerTreeTest {
frame->render_pass_list[0]->quad_list.push_back(quad.PassAs<DrawQuad>());
}
+ void AddRenderPass(DelegatedFrameData* frame,
+ RenderPass::Id id,
+ gfx::Rect output_rect,
+ gfx::Rect damage_rect,
+ const FilterOperations& filters,
+ const FilterOperations& background_filters) {
+ for (size_t i = 0; i < frame->render_pass_list.size(); ++i)
+ DCHECK(id != frame->render_pass_list[i]->id);
+
+ scoped_ptr<RenderPass> pass(RenderPass::Create());
+ pass->SetNew(id,
+ output_rect,
+ damage_rect,
+ gfx::Transform());
+ frame->render_pass_list.push_back(pass.Pass());
+
+ scoped_ptr<SharedQuadState> sqs = SharedQuadState::Create();
+ scoped_ptr<RenderPassDrawQuad> quad = RenderPassDrawQuad::Create();
+
+ quad->SetNew(sqs.get(),
+ output_rect,
+ id,
+ false, // is_replica
+ 0, // mask_resource_id
+ damage_rect,
+ gfx::Rect(0, 0, 1, 1), // mask_uv_rect
+ filters,
+ skia::RefPtr<SkImageFilter>(),
+ background_filters);
+ frame->render_pass_list[0]->shared_quad_state_list.push_back(sqs.Pass());
+ frame->render_pass_list[0]->quad_list.push_back(quad.PassAs<DrawQuad>());
+ }
+
scoped_ptr<DelegatedFrameData> CreateEmptyFrameData() {
scoped_ptr<DelegatedFrameData> frame(new DelegatedFrameData);
return frame.Pass();
@@ -338,6 +372,131 @@ class LayerTreeHostDelegatedTestCreateChildId
SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostDelegatedTestCreateChildId);
+class LayerTreeHostDelegatedTestOffscreenContext_NoFilters
+ : public LayerTreeHostDelegatedTestCaseSingleDelegatedLayer {
+ protected:
+ virtual void BeginTest() OVERRIDE {
+ scoped_ptr<DelegatedFrameData> frame =
+ CreateFrameData(gfx::Rect(0, 0, 1, 1),
+ gfx::Rect(0, 0, 1, 1));
+ delegated_->SetFrameData(frame.Pass());
+
+ PostSetNeedsCommitToMainThread();
+ }
+
+ virtual void DrawLayersOnThread(LayerTreeHostImpl* host_impl) OVERRIDE {
+ EXPECT_FALSE(host_impl->offscreen_context_provider());
+ EndTest();
+ }
+
+ virtual void AfterTest() OVERRIDE {}
+};
+
+SINGLE_AND_MULTI_THREAD_TEST_F(
+ LayerTreeHostDelegatedTestOffscreenContext_NoFilters);
+
+class LayerTreeHostDelegatedTestOffscreenContext_Filters
+ : public LayerTreeHostDelegatedTestCaseSingleDelegatedLayer {
+ protected:
+ virtual void BeginTest() OVERRIDE {
+ scoped_ptr<DelegatedFrameData> frame =
+ CreateFrameData(gfx::Rect(0, 0, 1, 1),
+ gfx::Rect(0, 0, 1, 1));
+
+ FilterOperations filters;
+ filters.Append(FilterOperation::CreateGrayscaleFilter(0.5f));
+ AddRenderPass(frame.get(),
+ RenderPass::Id(2, 1),
+ gfx::Rect(0, 0, 1, 1),
+ gfx::Rect(0, 0, 1, 1),
+ filters,
+ FilterOperations());
+ delegated_->SetFrameData(frame.Pass());
+
+ PostSetNeedsCommitToMainThread();
+ }
+
+ virtual void DrawLayersOnThread(LayerTreeHostImpl* host_impl) OVERRIDE {
+ bool expect_context = !delegating_renderer();
+ EXPECT_EQ(expect_context, !!host_impl->offscreen_context_provider());
+ EndTest();
+ }
+
+ virtual void AfterTest() OVERRIDE {}
+};
+
+SINGLE_AND_MULTI_THREAD_TEST_F(
+ LayerTreeHostDelegatedTestOffscreenContext_Filters);
+
+class LayerTreeHostDelegatedTestOffscreenContext_BackgroundFilters
+ : public LayerTreeHostDelegatedTestCaseSingleDelegatedLayer {
+ protected:
+ virtual void BeginTest() OVERRIDE {
+ scoped_ptr<DelegatedFrameData> frame =
+ CreateFrameData(gfx::Rect(0, 0, 1, 1),
+ gfx::Rect(0, 0, 1, 1));
+
+ FilterOperations filters;
+ filters.Append(FilterOperation::CreateGrayscaleFilter(0.5f));
+ AddRenderPass(frame.get(),
+ RenderPass::Id(2, 1),
+ gfx::Rect(0, 0, 1, 1),
+ gfx::Rect(0, 0, 1, 1),
+ FilterOperations(),
+ filters);
+ delegated_->SetFrameData(frame.Pass());
+
+ PostSetNeedsCommitToMainThread();
+ }
+
+ virtual void DrawLayersOnThread(LayerTreeHostImpl* host_impl) OVERRIDE {
+ bool expect_context = !delegating_renderer();
+ EXPECT_EQ(expect_context, !!host_impl->offscreen_context_provider());
+ EndTest();
+ }
+
+ virtual void AfterTest() OVERRIDE {}
+};
+
+SINGLE_AND_MULTI_THREAD_TEST_F(
+ LayerTreeHostDelegatedTestOffscreenContext_BackgroundFilters);
+
+class LayerTreeHostDelegatedTestOffscreenContext_Filters_AddedToTree
+ : public LayerTreeHostDelegatedTestCaseSingleDelegatedLayer {
+ protected:
+ virtual void BeginTest() OVERRIDE {
+ scoped_ptr<DelegatedFrameData> frame =
+ CreateFrameData(gfx::Rect(0, 0, 1, 1),
+ gfx::Rect(0, 0, 1, 1));
+
+ FilterOperations filters;
+ filters.Append(FilterOperation::CreateGrayscaleFilter(0.5f));
+ AddRenderPass(frame.get(),
+ RenderPass::Id(2, 1),
+ gfx::Rect(0, 0, 1, 1),
+ gfx::Rect(0, 0, 1, 1),
+ filters,
+ FilterOperations());
+
+ delegated_->RemoveFromParent();
+ delegated_->SetFrameData(frame.Pass());
+ layer_tree_host()->root_layer()->AddChild(delegated_);
+
+ PostSetNeedsCommitToMainThread();
+ }
+
+ virtual void DrawLayersOnThread(LayerTreeHostImpl* host_impl) OVERRIDE {
+ bool expect_context = !delegating_renderer();
+ EXPECT_EQ(expect_context, !!host_impl->offscreen_context_provider());
+ EndTest();
+ }
+
+ virtual void AfterTest() OVERRIDE {}
+};
+
+SINGLE_AND_MULTI_THREAD_TEST_F(
+ LayerTreeHostDelegatedTestOffscreenContext_Filters_AddedToTree);
+
class LayerTreeHostDelegatedTestLayerUsesFrameDamage
: public LayerTreeHostDelegatedTestCaseSingleDelegatedLayer {
public:
« no previous file with comments | « cc/test/render_pass_test_utils.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698