// Copyright (c) 2013 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "base/memory/scoped_ptr.h" #include "gpu/config/gpu_blacklist.h" #include "gpu/config/gpu_control_list_jsons.h" #include "gpu/config/gpu_feature_type.h" #include "gpu/config/gpu_info.h" #include "testing/gtest/include/gtest/gtest.h" const char kOsVersion[] = "10.6.4"; namespace gpu { class GpuBlacklistTest : public testing::Test { public: GpuBlacklistTest() { } ~GpuBlacklistTest() override {} const GPUInfo& gpu_info() const { return gpu_info_; } void RunFeatureTest( const std::string feature_name, GpuFeatureType feature_type) { const std::string json = "{\n" " \"name\": \"gpu blacklist\",\n" " \"version\": \"0.1\",\n" " \"entries\": [\n" " {\n" " \"id\": 1,\n" " \"os\": {\n" " \"type\": \"macosx\"\n" " },\n" " \"vendor_id\": \"0x10de\",\n" " \"device_id\": [\"0x0640\"],\n" " \"features\": [\n" " \"" + feature_name + "\"\n" " ]\n" " }\n" " ]\n" "}"; scoped_ptr blacklist(GpuBlacklist::Create()); EXPECT_TRUE(blacklist->LoadList(json, GpuBlacklist::kAllOs)); std::set type = blacklist->MakeDecision( GpuBlacklist::kOsMacosx, kOsVersion, gpu_info()); EXPECT_EQ(1u, type.size()); EXPECT_EQ(1u, type.count(feature_type)); } protected: void SetUp() override { gpu_info_.gpu.vendor_id = 0x10de; gpu_info_.gpu.device_id = 0x0640; gpu_info_.driver_vendor = "NVIDIA"; gpu_info_.driver_version = "1.6.18"; gpu_info_.driver_date = "7-14-2009"; gpu_info_.machine_model_name = "MacBookPro"; gpu_info_.machine_model_version = "7.1"; gpu_info_.gl_vendor = "NVIDIA Corporation"; gpu_info_.gl_renderer = "NVIDIA GeForce GT 120 OpenGL Engine"; gpu_info_.performance_stats.graphics = 5.0; gpu_info_.performance_stats.gaming = 5.0; gpu_info_.performance_stats.overall = 5.0; } void TearDown() override {} private: GPUInfo gpu_info_; }; TEST_F(GpuBlacklistTest, CurrentBlacklistValidation) { scoped_ptr blacklist(GpuBlacklist::Create()); EXPECT_TRUE(blacklist->LoadList( kSoftwareRenderingListJson, GpuBlacklist::kAllOs)); } #define GPU_BLACKLIST_FEATURE_TEST(test_name, feature_name, feature_type) \ TEST_F(GpuBlacklistTest, test_name) { \ RunFeatureTest(feature_name, feature_type); \ } GPU_BLACKLIST_FEATURE_TEST(Accelerated2DCanvas, "accelerated_2d_canvas", GPU_FEATURE_TYPE_ACCELERATED_2D_CANVAS) GPU_BLACKLIST_FEATURE_TEST(GpuCompositing, "gpu_compositing", GPU_FEATURE_TYPE_GPU_COMPOSITING) GPU_BLACKLIST_FEATURE_TEST(WebGL, "webgl", GPU_FEATURE_TYPE_WEBGL) GPU_BLACKLIST_FEATURE_TEST(Flash3D, "flash_3d", GPU_FEATURE_TYPE_FLASH3D) GPU_BLACKLIST_FEATURE_TEST(FlashStage3D, "flash_stage3d", GPU_FEATURE_TYPE_FLASH_STAGE3D) GPU_BLACKLIST_FEATURE_TEST(FlashStage3DBaseline, "flash_stage3d_baseline", GPU_FEATURE_TYPE_FLASH_STAGE3D_BASELINE) GPU_BLACKLIST_FEATURE_TEST(AcceleratedVideoDecode, "accelerated_video_decode", GPU_FEATURE_TYPE_ACCELERATED_VIDEO_DECODE) GPU_BLACKLIST_FEATURE_TEST(AcceleratedVideoEncode, "accelerated_video_encode", GPU_FEATURE_TYPE_ACCELERATED_VIDEO_ENCODE) GPU_BLACKLIST_FEATURE_TEST(PanelFitting, "panel_fitting", GPU_FEATURE_TYPE_PANEL_FITTING) GPU_BLACKLIST_FEATURE_TEST(GpuRasterization, "gpu_rasterization", GPU_FEATURE_TYPE_GPU_RASTERIZATION) } // namespace gpu