Index: gpu/config/gpu_driver_bug_list_unittest.cc |
diff --git a/gpu/config/gpu_driver_bug_list_unittest.cc b/gpu/config/gpu_driver_bug_list_unittest.cc |
index 597e730fa93afb8673ff9f31824accbb6950a8fc..1a5590c556b72ba6742bc1e47f5b50025be21ae6 100644 |
--- a/gpu/config/gpu_driver_bug_list_unittest.cc |
+++ b/gpu/config/gpu_driver_bug_list_unittest.cc |
@@ -10,6 +10,8 @@ |
#include "gpu/config/gpu_info.h" |
#include "testing/gtest/include/gtest/gtest.h" |
+#define LONG_STRING_CONST(...) #__VA_ARGS__ |
+ |
namespace gpu { |
class GpuDriverBugListTest : public testing::Test { |
@@ -74,5 +76,54 @@ TEST_F(GpuDriverBugListTest, CurrentListForImagination) { |
EXPECT_EQ(1u, bugs.count(USE_CLIENT_SIDE_ARRAYS_FOR_STREAM_BUFFERS)); |
} |
+TEST_F(GpuDriverBugListTest, GpuSwitching) { |
+ const std::string json = LONG_STRING_CONST( |
+ { |
+ "name": "gpu driver bug list", |
+ "version": "0.1", |
+ "entries": [ |
+ { |
+ "id": 1, |
+ "os": { |
+ "type": "macosx" |
+ }, |
+ "features": [ |
+ "force_discrete_gpu" |
+ ] |
+ }, |
+ { |
+ "id": 2, |
+ "os": { |
+ "type": "win" |
+ }, |
+ "features": [ |
+ "force_integrated_gpu" |
+ ] |
+ } |
+ ] |
+ } |
+ ); |
+ scoped_ptr<GpuDriverBugList> driver_bug_list(GpuDriverBugList::Create()); |
+ EXPECT_TRUE(driver_bug_list->LoadList(json, GpuControlList::kAllOs)); |
+ std::set<int> switching = driver_bug_list->MakeDecision( |
+ GpuControlList::kOsMacosx, "10.8", gpu_info()); |
+ EXPECT_EQ(1u, switching.size()); |
+ EXPECT_EQ(1u, switching.count(FORCE_DISCRETE_GPU)); |
+ std::vector<uint32> entries; |
+ driver_bug_list->GetDecisionEntries(&entries, false); |
+ ASSERT_EQ(1u, entries.size()); |
+ EXPECT_EQ(1u, entries[0]); |
+ |
+ driver_bug_list.reset(GpuDriverBugList::Create()); |
+ EXPECT_TRUE(driver_bug_list->LoadList(json, GpuControlList::kAllOs)); |
+ switching = driver_bug_list->MakeDecision( |
+ GpuControlList::kOsWin, "6.1", gpu_info()); |
+ EXPECT_EQ(1u, switching.size()); |
+ EXPECT_EQ(1u, switching.count(FORCE_INTEGRATED_GPU)); |
+ driver_bug_list->GetDecisionEntries(&entries, false); |
+ ASSERT_EQ(1u, entries.size()); |
+ EXPECT_EQ(2u, entries[0]); |
+} |
+ |
} // namespace gpu |