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

Side by Side Diff: mojo/converters/surfaces/surfaces_type_converters.cc

Issue 1325703002: Mandoline: Fix OOPIF high DPI sizing. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Hopefully fixed on Windows Created 5 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 unified diff | Download patch
« no previous file with comments | « mojo/converters/surfaces/surfaces_type_converters.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 "mojo/converters/surfaces/surfaces_type_converters.h" 5 #include "mojo/converters/surfaces/surfaces_type_converters.h"
6 6
7 #include "base/macros.h" 7 #include "base/macros.h"
8 #include "cc/output/compositor_frame.h" 8 #include "cc/output/compositor_frame.h"
9 #include "cc/output/compositor_frame_metadata.h"
9 #include "cc/output/delegated_frame_data.h" 10 #include "cc/output/delegated_frame_data.h"
10 #include "cc/quads/debug_border_draw_quad.h" 11 #include "cc/quads/debug_border_draw_quad.h"
11 #include "cc/quads/draw_quad.h" 12 #include "cc/quads/draw_quad.h"
12 #include "cc/quads/render_pass.h" 13 #include "cc/quads/render_pass.h"
13 #include "cc/quads/render_pass_draw_quad.h" 14 #include "cc/quads/render_pass_draw_quad.h"
14 #include "cc/quads/shared_quad_state.h" 15 #include "cc/quads/shared_quad_state.h"
15 #include "cc/quads/solid_color_draw_quad.h" 16 #include "cc/quads/solid_color_draw_quad.h"
16 #include "cc/quads/surface_draw_quad.h" 17 #include "cc/quads/surface_draw_quad.h"
17 #include "cc/quads/texture_draw_quad.h" 18 #include "cc/quads/texture_draw_quad.h"
18 #include "cc/quads/tile_draw_quad.h" 19 #include "cc/quads/tile_draw_quad.h"
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
56 input->quad_layer_bounds.To<gfx::Size>(), 57 input->quad_layer_bounds.To<gfx::Size>(),
57 input->visible_quad_layer_rect.To<gfx::Rect>(), 58 input->visible_quad_layer_rect.To<gfx::Rect>(),
58 input->clip_rect.To<gfx::Rect>(), input->is_clipped, 59 input->clip_rect.To<gfx::Rect>(), input->is_clipped,
59 input->opacity, 60 input->opacity,
60 static_cast<::SkXfermode::Mode>(input->blend_mode), 61 static_cast<::SkXfermode::Mode>(input->blend_mode),
61 input->sorting_context_id); 62 input->sorting_context_id);
62 return state; 63 return state;
63 } 64 }
64 65
65 bool ConvertDrawQuad(const QuadPtr& input, 66 bool ConvertDrawQuad(const QuadPtr& input,
67 const CompositorFrameMetadataPtr& metadata,
66 cc::SharedQuadState* sqs, 68 cc::SharedQuadState* sqs,
67 cc::RenderPass* render_pass, 69 cc::RenderPass* render_pass,
68 CustomSurfaceConverter* custom_converter) { 70 CustomSurfaceConverter* custom_converter) {
69 switch (input->material) { 71 switch (input->material) {
70 case MATERIAL_DEBUG_BORDER: { 72 case MATERIAL_DEBUG_BORDER: {
71 cc::DebugBorderDrawQuad* debug_border_quad = 73 cc::DebugBorderDrawQuad* debug_border_quad =
72 render_pass->CreateAndAppendDrawQuad<cc::DebugBorderDrawQuad>(); 74 render_pass->CreateAndAppendDrawQuad<cc::DebugBorderDrawQuad>();
73 debug_border_quad->SetAll( 75 debug_border_quad->SetAll(
74 sqs, 76 sqs,
75 input->rect.To<gfx::Rect>(), 77 input->rect.To<gfx::Rect>(),
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
117 input->needs_blending, 119 input->needs_blending,
118 input->solid_color_quad_state->color.To<SkColor>(), 120 input->solid_color_quad_state->color.To<SkColor>(),
119 input->solid_color_quad_state->force_anti_aliasing_off); 121 input->solid_color_quad_state->force_anti_aliasing_off);
120 break; 122 break;
121 } 123 }
122 case MATERIAL_SURFACE_CONTENT: { 124 case MATERIAL_SURFACE_CONTENT: {
123 if (input->surface_quad_state.is_null()) 125 if (input->surface_quad_state.is_null())
124 return false; 126 return false;
125 127
126 if (custom_converter) { 128 if (custom_converter) {
127 return custom_converter->ConvertSurfaceDrawQuad(input, 129 return custom_converter->ConvertSurfaceDrawQuad(input, metadata, sqs,
128 sqs,
129 render_pass); 130 render_pass);
130 } 131 }
131 cc::SurfaceDrawQuad* surface_quad = 132 cc::SurfaceDrawQuad* surface_quad =
132 render_pass->CreateAndAppendDrawQuad<cc::SurfaceDrawQuad>(); 133 render_pass->CreateAndAppendDrawQuad<cc::SurfaceDrawQuad>();
133 surface_quad->SetAll( 134 surface_quad->SetAll(
134 sqs, 135 sqs,
135 input->rect.To<gfx::Rect>(), 136 input->rect.To<gfx::Rect>(),
136 input->opaque_rect.To<gfx::Rect>(), 137 input->opaque_rect.To<gfx::Rect>(),
137 input->visible_rect.To<gfx::Rect>(), 138 input->visible_rect.To<gfx::Rect>(),
138 input->needs_blending, 139 input->needs_blending,
(...skipping 281 matching lines...) Expand 10 before | Expand all | Expand 10 after
420 // We should copy all shared quad states. 421 // We should copy all shared quad states.
421 DCHECK_EQ(next_sqs_iter.index(), shared_quad_state.size()); 422 DCHECK_EQ(next_sqs_iter.index(), shared_quad_state.size());
422 pass->quads = quads.Pass(); 423 pass->quads = quads.Pass();
423 pass->shared_quad_states = shared_quad_state.Pass(); 424 pass->shared_quad_states = shared_quad_state.Pass();
424 return pass.Pass(); 425 return pass.Pass();
425 } 426 }
426 427
427 // static 428 // static
428 scoped_ptr<cc::RenderPass> ConvertToRenderPass( 429 scoped_ptr<cc::RenderPass> ConvertToRenderPass(
429 const mojo::PassPtr& input, 430 const mojo::PassPtr& input,
431 const mojo::CompositorFrameMetadataPtr& metadata,
430 CustomSurfaceConverter* custom_converter) { 432 CustomSurfaceConverter* custom_converter) {
431 scoped_ptr<cc::RenderPass> pass = cc::RenderPass::Create( 433 scoped_ptr<cc::RenderPass> pass = cc::RenderPass::Create(
432 input->shared_quad_states.size(), input->quads.size()); 434 input->shared_quad_states.size(), input->quads.size());
433 pass->SetAll(input->id.To<cc::RenderPassId>(), 435 pass->SetAll(input->id.To<cc::RenderPassId>(),
434 input->output_rect.To<gfx::Rect>(), 436 input->output_rect.To<gfx::Rect>(),
435 input->damage_rect.To<gfx::Rect>(), 437 input->damage_rect.To<gfx::Rect>(),
436 input->transform_to_root_target.To<gfx::Transform>(), 438 input->transform_to_root_target.To<gfx::Transform>(),
437 input->has_transparent_background); 439 input->has_transparent_background);
438 for (size_t i = 0; i < input->shared_quad_states.size(); ++i) { 440 for (size_t i = 0; i < input->shared_quad_states.size(); ++i) {
439 ConvertSharedQuadState(input->shared_quad_states[i], pass.get()); 441 ConvertSharedQuadState(input->shared_quad_states[i], pass.get());
440 } 442 }
441 cc::SharedQuadStateList::Iterator sqs_iter = 443 cc::SharedQuadStateList::Iterator sqs_iter =
442 pass->shared_quad_state_list.begin(); 444 pass->shared_quad_state_list.begin();
443 for (size_t i = 0; i < input->quads.size(); ++i) { 445 for (size_t i = 0; i < input->quads.size(); ++i) {
444 QuadPtr quad = input->quads[i].Pass(); 446 QuadPtr quad = input->quads[i].Pass();
445 while (quad->shared_quad_state_index > sqs_iter.index()) { 447 while (quad->shared_quad_state_index > sqs_iter.index()) {
446 ++sqs_iter; 448 ++sqs_iter;
447 } 449 }
448 if (!ConvertDrawQuad(quad, *sqs_iter, pass.get(), custom_converter)) 450 if (!ConvertDrawQuad(quad, metadata, *sqs_iter, pass.get(),
451 custom_converter))
449 return scoped_ptr<cc::RenderPass>(); 452 return scoped_ptr<cc::RenderPass>();
450 } 453 }
451 return pass.Pass(); 454 return pass.Pass();
452 } 455 }
453 456
454 // static 457 // static
455 scoped_ptr<cc::RenderPass> 458 scoped_ptr<cc::RenderPass>
456 TypeConverter<scoped_ptr<cc::RenderPass>, PassPtr>::Convert( 459 TypeConverter<scoped_ptr<cc::RenderPass>, PassPtr>::Convert(
457 const PassPtr& input) { 460 const PassPtr& input) {
458 return ConvertToRenderPass(input, nullptr /* CustomSurfaceConverter */); 461 mojo::CompositorFrameMetadataPtr metadata;
462 return ConvertToRenderPass(input, metadata,
463 nullptr /* CustomSurfaceConverter */);
459 } 464 }
460 465
461 // static 466 // static
462 MailboxPtr TypeConverter<MailboxPtr, gpu::Mailbox>::Convert( 467 MailboxPtr TypeConverter<MailboxPtr, gpu::Mailbox>::Convert(
463 const gpu::Mailbox& input) { 468 const gpu::Mailbox& input) {
464 Array<int8_t> name(64); 469 Array<int8_t> name(64);
465 for (int i = 0; i < 64; ++i) { 470 for (int i = 0; i < 64; ++i) {
466 name[i] = input.name[i]; 471 name[i] = input.name[i];
467 } 472 }
468 MailboxPtr mailbox(Mailbox::New()); 473 MailboxPtr mailbox(Mailbox::New());
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after
592 TypeConverter<cc::ReturnedResourceArray, Array<ReturnedResourcePtr>>::Convert( 597 TypeConverter<cc::ReturnedResourceArray, Array<ReturnedResourcePtr>>::Convert(
593 const Array<ReturnedResourcePtr>& input) { 598 const Array<ReturnedResourcePtr>& input) {
594 cc::ReturnedResourceArray resources(input.size()); 599 cc::ReturnedResourceArray resources(input.size());
595 for (size_t i = 0; i < input.size(); ++i) { 600 for (size_t i = 0; i < input.size(); ++i) {
596 resources[i] = input[i].To<cc::ReturnedResource>(); 601 resources[i] = input[i].To<cc::ReturnedResource>();
597 } 602 }
598 return resources; 603 return resources;
599 } 604 }
600 605
601 // static 606 // static
607 CompositorFrameMetadataPtr
608 TypeConverter<CompositorFrameMetadataPtr, cc::CompositorFrameMetadata>::Convert(
609 const cc::CompositorFrameMetadata& input) {
610 CompositorFrameMetadataPtr metadata = CompositorFrameMetadata::New();
611 metadata->device_scale_factor = input.device_scale_factor;
612 return metadata.Pass();
613 }
614
615 // static
616 cc::CompositorFrameMetadata
617 TypeConverter<cc::CompositorFrameMetadata, CompositorFrameMetadataPtr>::Convert(
618 const CompositorFrameMetadataPtr& input) {
619 cc::CompositorFrameMetadata metadata;
620 metadata.device_scale_factor = input->device_scale_factor;
621 return metadata;
622 }
623
624 // static
602 CompositorFramePtr 625 CompositorFramePtr
603 TypeConverter<CompositorFramePtr, cc::CompositorFrame>::Convert( 626 TypeConverter<CompositorFramePtr, cc::CompositorFrame>::Convert(
604 const cc::CompositorFrame& input) { 627 const cc::CompositorFrame& input) {
605 CompositorFramePtr frame = CompositorFrame::New(); 628 CompositorFramePtr frame = CompositorFrame::New();
606 DCHECK(input.delegated_frame_data); 629 DCHECK(input.delegated_frame_data);
607 cc::DelegatedFrameData* frame_data = input.delegated_frame_data.get(); 630 cc::DelegatedFrameData* frame_data = input.delegated_frame_data.get();
608 frame->resources = 631 frame->resources =
609 Array<TransferableResourcePtr>::From(frame_data->resource_list); 632 Array<TransferableResourcePtr>::From(frame_data->resource_list);
633 frame->metadata = CompositorFrameMetadata::From(input.metadata);
610 const cc::RenderPassList& pass_list = frame_data->render_pass_list; 634 const cc::RenderPassList& pass_list = frame_data->render_pass_list;
611 frame->passes = Array<PassPtr>::New(pass_list.size()); 635 frame->passes = Array<PassPtr>::New(pass_list.size());
612 for (size_t i = 0; i < pass_list.size(); ++i) { 636 for (size_t i = 0; i < pass_list.size(); ++i) {
613 frame->passes[i] = Pass::From(*pass_list[i]); 637 frame->passes[i] = Pass::From(*pass_list[i]);
614 } 638 }
615 return frame.Pass(); 639 return frame.Pass();
616 } 640 }
617 641
618 // static 642 // static
619 scoped_ptr<cc::CompositorFrame> ConvertToCompositorFrame( 643 scoped_ptr<cc::CompositorFrame> ConvertToCompositorFrame(
620 const mojo::CompositorFramePtr& input, 644 const mojo::CompositorFramePtr& input,
621 CustomSurfaceConverter* custom_converter) { 645 CustomSurfaceConverter* custom_converter) {
622 scoped_ptr<cc::DelegatedFrameData> frame_data(new cc::DelegatedFrameData); 646 scoped_ptr<cc::DelegatedFrameData> frame_data(new cc::DelegatedFrameData);
623 frame_data->device_scale_factor = 1.f; 647 frame_data->device_scale_factor = 1.f;
624 frame_data->resource_list = 648 frame_data->resource_list =
625 input->resources.To<cc::TransferableResourceArray>(); 649 input->resources.To<cc::TransferableResourceArray>();
626 frame_data->render_pass_list.reserve(input->passes.size()); 650 frame_data->render_pass_list.reserve(input->passes.size());
627 for (size_t i = 0; i < input->passes.size(); ++i) { 651 for (size_t i = 0; i < input->passes.size(); ++i) {
628 scoped_ptr<cc::RenderPass> pass = 652 scoped_ptr<cc::RenderPass> pass = ConvertToRenderPass(
629 ConvertToRenderPass(input->passes[i], custom_converter); 653 input->passes[i], input->metadata, custom_converter);
630 if (!pass) 654 if (!pass)
631 return scoped_ptr<cc::CompositorFrame>(); 655 return scoped_ptr<cc::CompositorFrame>();
632 frame_data->render_pass_list.push_back(pass.Pass()); 656 frame_data->render_pass_list.push_back(pass.Pass());
633 } 657 }
634 scoped_ptr<cc::CompositorFrame> frame(new cc::CompositorFrame); 658 scoped_ptr<cc::CompositorFrame> frame(new cc::CompositorFrame);
659 cc::CompositorFrameMetadata metadata =
660 input->metadata.To<cc::CompositorFrameMetadata>();
635 frame->delegated_frame_data = frame_data.Pass(); 661 frame->delegated_frame_data = frame_data.Pass();
636 return frame.Pass(); 662 return frame.Pass();
637 } 663 }
638 664
639 // static 665 // static
640 scoped_ptr<cc::CompositorFrame> 666 scoped_ptr<cc::CompositorFrame>
641 TypeConverter<scoped_ptr<cc::CompositorFrame>, CompositorFramePtr>::Convert( 667 TypeConverter<scoped_ptr<cc::CompositorFrame>, CompositorFramePtr>::Convert(
642 const CompositorFramePtr& input) { 668 const CompositorFramePtr& input) {
643 return ConvertToCompositorFrame(input, nullptr); 669 return ConvertToCompositorFrame(input, nullptr);
644 } 670 }
645 671
646 } // namespace mojo 672 } // namespace mojo
OLDNEW
« no previous file with comments | « mojo/converters/surfaces/surfaces_type_converters.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698