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/output/renderer_settings.h" | 5 #include "cc/output/renderer_settings.h" |
6 | 6 |
7 #include <limits> | 7 #include <limits> |
8 | 8 |
9 #include "base/logging.h" | 9 #include "base/logging.h" |
10 #include "cc/proto/renderer_settings.pb.h" | |
11 #include "cc/resources/platform_color.h" | 10 #include "cc/resources/platform_color.h" |
12 | 11 |
13 namespace cc { | 12 namespace cc { |
14 | 13 |
15 RendererSettings::RendererSettings() | 14 RendererSettings::RendererSettings() |
16 : allow_antialiasing(true), | 15 : allow_antialiasing(true), |
17 force_antialiasing(false), | 16 force_antialiasing(false), |
18 force_blending_with_shaders(false), | 17 force_blending_with_shaders(false), |
19 partial_swap_enabled(false), | 18 partial_swap_enabled(false), |
20 finish_rendering_on_resize(false), | 19 finish_rendering_on_resize(false), |
21 should_clear_root_render_pass(true), | 20 should_clear_root_render_pass(true), |
22 disable_display_vsync(false), | 21 disable_display_vsync(false), |
23 release_overlay_resources_after_gpu_query(false), | 22 release_overlay_resources_after_gpu_query(false), |
24 gl_composited_texture_quad_border(false), | 23 gl_composited_texture_quad_border(false), |
25 refresh_rate(60.0), | 24 refresh_rate(60.0), |
26 highp_threshold_min(0), | 25 highp_threshold_min(0), |
27 texture_id_allocation_chunk_size(64), | 26 texture_id_allocation_chunk_size(64), |
28 use_gpu_memory_buffer_resources(false), | 27 use_gpu_memory_buffer_resources(false), |
29 preferred_tile_format(PlatformColor::BestTextureFormat()) {} | 28 preferred_tile_format(PlatformColor::BestTextureFormat()) {} |
30 | 29 |
31 RendererSettings::RendererSettings(const RendererSettings& other) = default; | 30 RendererSettings::RendererSettings(const RendererSettings& other) = default; |
32 | 31 |
33 RendererSettings::~RendererSettings() { | 32 RendererSettings::~RendererSettings() { |
34 } | 33 } |
35 | 34 |
36 void RendererSettings::ToProtobuf(proto::RendererSettings* proto) const { | |
37 proto->set_allow_antialiasing(allow_antialiasing); | |
38 proto->set_force_antialiasing(force_antialiasing); | |
39 proto->set_force_blending_with_shaders(force_blending_with_shaders); | |
40 proto->set_partial_swap_enabled(partial_swap_enabled); | |
41 proto->set_finish_rendering_on_resize(finish_rendering_on_resize); | |
42 proto->set_should_clear_root_render_pass(should_clear_root_render_pass); | |
43 proto->set_disable_display_vsync(disable_display_vsync); | |
44 proto->set_release_overlay_resources_after_gpu_query( | |
45 release_overlay_resources_after_gpu_query); | |
46 proto->set_refresh_rate(refresh_rate); | |
47 proto->set_highp_threshold_min(highp_threshold_min); | |
48 proto->set_texture_id_allocation_chunk_size(texture_id_allocation_chunk_size); | |
49 proto->set_use_gpu_memory_buffer_resources(use_gpu_memory_buffer_resources); | |
50 proto->set_preferred_tile_format(preferred_tile_format); | |
51 | |
52 for (const auto& target : buffer_to_texture_target_map) { | |
53 auto* proto_target = proto->add_buffer_to_texture_target(); | |
54 proto_target->set_buffer_usage(static_cast<uint32_t>(target.first.first)); | |
55 proto_target->set_buffer_format(static_cast<uint32_t>(target.first.second)); | |
56 proto_target->set_texture_target(target.second); | |
57 } | |
58 } | |
59 | |
60 void RendererSettings::FromProtobuf(const proto::RendererSettings& proto) { | |
61 allow_antialiasing = proto.allow_antialiasing(); | |
62 force_antialiasing = proto.force_antialiasing(); | |
63 force_blending_with_shaders = proto.force_blending_with_shaders(); | |
64 partial_swap_enabled = proto.partial_swap_enabled(); | |
65 finish_rendering_on_resize = proto.finish_rendering_on_resize(); | |
66 should_clear_root_render_pass = proto.should_clear_root_render_pass(); | |
67 disable_display_vsync = proto.disable_display_vsync(); | |
68 release_overlay_resources_after_gpu_query = | |
69 proto.release_overlay_resources_after_gpu_query(); | |
70 refresh_rate = proto.refresh_rate(); | |
71 highp_threshold_min = proto.highp_threshold_min(); | |
72 texture_id_allocation_chunk_size = proto.texture_id_allocation_chunk_size(); | |
73 use_gpu_memory_buffer_resources = proto.use_gpu_memory_buffer_resources(); | |
74 | |
75 DCHECK_LE(proto.preferred_tile_format(), | |
76 static_cast<uint32_t>(RESOURCE_FORMAT_MAX)); | |
77 preferred_tile_format = | |
78 static_cast<ResourceFormat>(proto.preferred_tile_format()); | |
79 | |
80 // |buffer_to_texture_target_map| may contain existing values, so clear first. | |
81 buffer_to_texture_target_map.clear(); | |
82 for (const auto& proto_target : proto.buffer_to_texture_target()) { | |
83 buffer_to_texture_target_map.insert(BufferToTextureTargetMap::value_type( | |
84 BufferToTextureTargetKey( | |
85 static_cast<gfx::BufferUsage>(proto_target.buffer_usage()), | |
86 static_cast<gfx::BufferFormat>(proto_target.buffer_format())), | |
87 proto_target.texture_target())); | |
88 } | |
89 } | |
90 | |
91 bool RendererSettings::operator==(const RendererSettings& other) const { | 35 bool RendererSettings::operator==(const RendererSettings& other) const { |
92 return allow_antialiasing == other.allow_antialiasing && | 36 return allow_antialiasing == other.allow_antialiasing && |
93 force_antialiasing == other.force_antialiasing && | 37 force_antialiasing == other.force_antialiasing && |
94 force_blending_with_shaders == other.force_blending_with_shaders && | 38 force_blending_with_shaders == other.force_blending_with_shaders && |
95 partial_swap_enabled == other.partial_swap_enabled && | 39 partial_swap_enabled == other.partial_swap_enabled && |
96 finish_rendering_on_resize == other.finish_rendering_on_resize && | 40 finish_rendering_on_resize == other.finish_rendering_on_resize && |
97 should_clear_root_render_pass == other.should_clear_root_render_pass && | 41 should_clear_root_render_pass == other.should_clear_root_render_pass && |
98 disable_display_vsync == other.disable_display_vsync && | 42 disable_display_vsync == other.disable_display_vsync && |
99 release_overlay_resources_after_gpu_query == | 43 release_overlay_resources_after_gpu_query == |
100 other.release_overlay_resources_after_gpu_query && | 44 other.release_overlay_resources_after_gpu_query && |
101 refresh_rate == other.refresh_rate && | 45 refresh_rate == other.refresh_rate && |
102 highp_threshold_min == other.highp_threshold_min && | 46 highp_threshold_min == other.highp_threshold_min && |
103 texture_id_allocation_chunk_size == | 47 texture_id_allocation_chunk_size == |
104 other.texture_id_allocation_chunk_size && | 48 other.texture_id_allocation_chunk_size && |
105 use_gpu_memory_buffer_resources == | 49 use_gpu_memory_buffer_resources == |
106 other.use_gpu_memory_buffer_resources && | 50 other.use_gpu_memory_buffer_resources && |
107 preferred_tile_format == other.preferred_tile_format && | 51 preferred_tile_format == other.preferred_tile_format && |
108 buffer_to_texture_target_map == other.buffer_to_texture_target_map; | 52 buffer_to_texture_target_map == other.buffer_to_texture_target_map; |
109 } | 53 } |
110 | 54 |
111 } // namespace cc | 55 } // namespace cc |
OLD | NEW |