Chromium Code Reviews| 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 |