OLD | NEW |
---|---|
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 "content/common/gpu_feature_flags.h" | 5 #include "content/common/gpu_feature_flags.h" |
6 | 6 |
7 #include "base/logging.h" | 7 #include "base/logging.h" |
8 #include "base/string_util.h" | |
9 #include <vector> | |
8 | 10 |
9 const char GpuFeatureFlags::kGpuFeatureNameAccelerated2dCanvas[] = | 11 const char GpuFeatureFlags::kGpuFeatureNameAccelerated2dCanvas[] = |
10 "accelerated_2d_canvas"; | 12 "accelerated_2d_canvas"; |
11 const char GpuFeatureFlags::kGpuFeatureNameAcceleratedCompositing[] = | 13 const char GpuFeatureFlags::kGpuFeatureNameAcceleratedCompositing[] = |
12 "accelerated_compositing"; | 14 "accelerated_compositing"; |
13 const char GpuFeatureFlags::kGpuFeatureNameWebgl[] = "webgl"; | 15 const char GpuFeatureFlags::kGpuFeatureNameWebgl[] = "webgl"; |
14 const char GpuFeatureFlags::kGpuFeatureNameMultisampling[] = "multisampling"; | 16 const char GpuFeatureFlags::kGpuFeatureNameMultisampling[] = "multisampling"; |
15 const char GpuFeatureFlags::kGpuFeatureNameAll[] = "all"; | 17 const char GpuFeatureFlags::kGpuFeatureNameAll[] = "all"; |
16 | 18 |
17 GpuFeatureFlags::GpuFeatureFlags() | 19 GpuFeatureFlags::GpuFeatureFlags() |
18 : flags_(0) { | 20 : flags_(0) { |
19 } | 21 } |
20 | 22 |
21 void GpuFeatureFlags::set_flags(uint32 flags) { | 23 void GpuFeatureFlags::set_flags(uint32 flags) { |
22 DCHECK_EQ(flags & (~kGpuFeatureAll), 0u); | 24 DCHECK_EQ(flags & (~kGpuFeatureAll), 0u); |
23 flags_ = flags; | 25 flags_ = flags; |
24 } | 26 } |
25 | 27 |
26 uint32 GpuFeatureFlags::flags() const { | 28 uint32 GpuFeatureFlags::flags() const { |
27 return flags_; | 29 return flags_; |
28 } | 30 } |
29 | 31 |
30 void GpuFeatureFlags::Combine(const GpuFeatureFlags& other) { | 32 void GpuFeatureFlags::Combine(const GpuFeatureFlags& other) { |
31 flags_ |= other.flags_; | 33 flags_ |= other.flags_; |
32 } | 34 } |
33 | 35 |
36 // static | |
34 GpuFeatureFlags::GpuFeatureType GpuFeatureFlags::StringToGpuFeatureType( | 37 GpuFeatureFlags::GpuFeatureType GpuFeatureFlags::StringToGpuFeatureType( |
35 const std::string& feature_string) { | 38 const std::string& feature_string) { |
36 if (feature_string == kGpuFeatureNameAccelerated2dCanvas) | 39 if (feature_string == kGpuFeatureNameAccelerated2dCanvas) |
37 return kGpuFeatureAccelerated2dCanvas; | 40 return kGpuFeatureAccelerated2dCanvas; |
38 else if (feature_string == kGpuFeatureNameAcceleratedCompositing) | 41 else if (feature_string == kGpuFeatureNameAcceleratedCompositing) |
39 return kGpuFeatureAcceleratedCompositing; | 42 return kGpuFeatureAcceleratedCompositing; |
40 else if (feature_string == kGpuFeatureNameWebgl) | 43 else if (feature_string == kGpuFeatureNameWebgl) |
41 return kGpuFeatureWebgl; | 44 return kGpuFeatureWebgl; |
42 else if (feature_string == kGpuFeatureNameMultisampling) | 45 else if (feature_string == kGpuFeatureNameMultisampling) |
43 return kGpuFeatureMultisampling; | 46 return kGpuFeatureMultisampling; |
44 else if (feature_string == kGpuFeatureNameAll) | 47 else if (feature_string == kGpuFeatureNameAll) |
45 return kGpuFeatureAll; | 48 return kGpuFeatureAll; |
46 return kGpuFeatureUnknown; | 49 return kGpuFeatureUnknown; |
47 } | 50 } |
48 | 51 |
52 // static | |
53 std::string GpuFeatureFlags::GpuFeatureTypeToUserFriendlyString( | |
54 GpuFeatureFlags::GpuFeatureType type) { | |
55 std::vector<std::string> matches; | |
56 if (type == kGpuFeatureAll) { | |
57 matches.push_back("All GPU features"); | |
zmo
2011/04/07 20:46:06
If you don't care about the difference between "ac
| |
58 } else { | |
59 if (kGpuFeatureAccelerated2dCanvas & type) | |
60 matches.push_back("Accelerated 2D Canvas"); | |
61 if (kGpuFeatureAcceleratedCompositing & type) | |
62 matches.push_back("Accelerated Compositing"); | |
63 if (kGpuFeatureWebgl & type) | |
64 matches.push_back("WebGL"); | |
65 if (kGpuFeatureMultisampling & type) | |
66 matches.push_back("WebGL + Canvas Multisampling"); | |
zmo
2011/04/07 20:46:06
I think only WebGL has Multisampling
| |
67 if (!matches.size()) | |
68 matches.push_back("Unknown feature"); | |
Avi (use Gerrit)
2011/04/07 00:28:20
Gah. No, no, no. All user-visible text must go thr
| |
69 } | |
70 return JoinString(matches, ','); | |
zmo
2011/04/07 20:46:06
There is no loop here, so why do you need a vector
| |
71 } | |
OLD | NEW |