Home | History | Annotate | Download | only in config
      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