1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "base/memory/scoped_ptr.h" 6 #include "gpu/config/gpu_blacklist.h" 7 #include "gpu/config/gpu_control_list_jsons.h" 8 #include "gpu/config/gpu_feature_type.h" 9 #include "gpu/config/gpu_info.h" 10 #include "testing/gtest/include/gtest/gtest.h" 11 12 const char kOsVersion[] = "10.6.4"; 13 14 namespace gpu { 15 16 class GpuBlacklistTest : public testing::Test { 17 public: 18 GpuBlacklistTest() { } 19 20 virtual ~GpuBlacklistTest() { } 21 22 const GPUInfo& gpu_info() const { 23 return gpu_info_; 24 } 25 26 void RunFeatureTest( 27 const std::string feature_name, GpuFeatureType feature_type) { 28 const std::string json = 29 "{\n" 30 " \"name\": \"gpu blacklist\",\n" 31 " \"version\": \"0.1\",\n" 32 " \"entries\": [\n" 33 " {\n" 34 " \"id\": 1,\n" 35 " \"os\": {\n" 36 " \"type\": \"macosx\"\n" 37 " },\n" 38 " \"vendor_id\": \"0x10de\",\n" 39 " \"device_id\": [\"0x0640\"],\n" 40 " \"features\": [\n" 41 " \"" + 42 feature_name + 43 "\"\n" 44 " ]\n" 45 " }\n" 46 " ]\n" 47 "}"; 48 49 scoped_ptr<GpuBlacklist> blacklist(GpuBlacklist::Create()); 50 EXPECT_TRUE(blacklist->LoadList(json, GpuBlacklist::kAllOs)); 51 std::set<int> type = blacklist->MakeDecision( 52 GpuBlacklist::kOsMacosx, kOsVersion, gpu_info()); 53 EXPECT_EQ(1u, type.size()); 54 EXPECT_EQ(1u, type.count(feature_type)); 55 } 56 57 protected: 58 virtual void SetUp() { 59 gpu_info_.gpu.vendor_id = 0x10de; 60 gpu_info_.gpu.device_id = 0x0640; 61 gpu_info_.driver_vendor = "NVIDIA"; 62 gpu_info_.driver_version = "1.6.18"; 63 gpu_info_.driver_date = "7-14-2009"; 64 gpu_info_.machine_model = "MacBookPro 7.1"; 65 gpu_info_.gl_vendor = "NVIDIA Corporation"; 66 gpu_info_.gl_renderer = "NVIDIA GeForce GT 120 OpenGL Engine"; 67 gpu_info_.performance_stats.graphics = 5.0; 68 gpu_info_.performance_stats.gaming = 5.0; 69 gpu_info_.performance_stats.overall = 5.0; 70 } 71 72 virtual void TearDown() { 73 } 74 75 private: 76 GPUInfo gpu_info_; 77 }; 78 79 TEST_F(GpuBlacklistTest, CurrentBlacklistValidation) { 80 scoped_ptr<GpuBlacklist> blacklist(GpuBlacklist::Create()); 81 EXPECT_TRUE(blacklist->LoadList( 82 kSoftwareRenderingListJson, GpuBlacklist::kAllOs)); 83 EXPECT_FALSE(blacklist->contains_unknown_fields()); 84 } 85 86 #define GPU_BLACKLIST_FEATURE_TEST(test_name, feature_name, feature_type) \ 87 TEST_F(GpuBlacklistTest, test_name) { \ 88 RunFeatureTest(feature_name, feature_type); \ 89 } 90 91 GPU_BLACKLIST_FEATURE_TEST(Accelerated2DCanvas, 92 "accelerated_2d_canvas", 93 GPU_FEATURE_TYPE_ACCELERATED_2D_CANVAS) 94 95 GPU_BLACKLIST_FEATURE_TEST(AcceleratedCompositing, 96 "accelerated_compositing", 97 GPU_FEATURE_TYPE_ACCELERATED_COMPOSITING) 98 99 GPU_BLACKLIST_FEATURE_TEST(WebGL, 100 "webgl", 101 GPU_FEATURE_TYPE_WEBGL) 102 103 GPU_BLACKLIST_FEATURE_TEST(Multisampling, 104 "multisampling", 105 GPU_FEATURE_TYPE_MULTISAMPLING) 106 107 GPU_BLACKLIST_FEATURE_TEST(Flash3D, 108 "flash_3d", 109 GPU_FEATURE_TYPE_FLASH3D) 110 111 GPU_BLACKLIST_FEATURE_TEST(FlashStage3D, 112 "flash_stage3d", 113 GPU_FEATURE_TYPE_FLASH_STAGE3D) 114 115 GPU_BLACKLIST_FEATURE_TEST(FlashStage3DBaseline, 116 "flash_stage3d_baseline", 117 GPU_FEATURE_TYPE_FLASH_STAGE3D_BASELINE) 118 119 GPU_BLACKLIST_FEATURE_TEST(TextureSharing, 120 "texture_sharing", 121 GPU_FEATURE_TYPE_TEXTURE_SHARING) 122 123 GPU_BLACKLIST_FEATURE_TEST(AcceleratedVideoDecode, 124 "accelerated_video_decode", 125 GPU_FEATURE_TYPE_ACCELERATED_VIDEO_DECODE) 126 127 GPU_BLACKLIST_FEATURE_TEST(Css3D, 128 "3d_css", 129 GPU_FEATURE_TYPE_3D_CSS) 130 131 GPU_BLACKLIST_FEATURE_TEST(AcceleratedVideo, 132 "accelerated_video", 133 GPU_FEATURE_TYPE_ACCELERATED_VIDEO) 134 135 GPU_BLACKLIST_FEATURE_TEST(PanelFitting, 136 "panel_fitting", 137 GPU_FEATURE_TYPE_PANEL_FITTING) 138 139 GPU_BLACKLIST_FEATURE_TEST(ForceCompositingMode, 140 "force_compositing_mode", 141 GPU_FEATURE_TYPE_FORCE_COMPOSITING_MODE) 142 143 } // namespace gpu 144