Path: blob/main_old/src/tests/test_expectations/GPUTestExpectationsTest.cpp
1693 views
//1// Copyright 2019 The ANGLE Project Authors. All rights reserved.2// Use of this source code is governed by a BSD-style license that can be3// found in the LICENSE file.4//56// GPUTestExpectationsTest.cpp : Tests of the test_expectations library.78#include "test_expectations/GPUTestConfig.h"9#include "test_expectations/GPUTestExpectationsParser.h"10#include "test_utils/ANGLETest.h"1112namespace angle13{1415class GPUTestConfigTest : public ANGLETest16{17protected:18GPUTestConfigTest() {}1920// todo(jonahr): Eventually could add support for all conditions/operating21// systems, but these are the ones in use for now22void validateConfigBase(const GPUTestConfig &config)23{24EXPECT_EQ(IsWindows(), config.getConditions()[GPUTestConfig::kConditionWin]);25EXPECT_EQ(IsOSX(), config.getConditions()[GPUTestConfig::kConditionMac]);26EXPECT_EQ(IsIOS(), config.getConditions()[GPUTestConfig::kConditionIOS]);27EXPECT_EQ(IsLinux(), config.getConditions()[GPUTestConfig::kConditionLinux]);28EXPECT_EQ(IsAndroid(), config.getConditions()[GPUTestConfig::kConditionAndroid]);29EXPECT_EQ(IsNexus5X(), config.getConditions()[GPUTestConfig::kConditionNexus5X]);30EXPECT_EQ((IsPixel2() || IsPixel2XL()),31config.getConditions()[GPUTestConfig::kConditionPixel2OrXL]);32EXPECT_EQ(IsIntel(), config.getConditions()[GPUTestConfig::kConditionIntel]);33EXPECT_EQ(IsAMD(), config.getConditions()[GPUTestConfig::kConditionAMD]);34EXPECT_EQ(IsNVIDIA(), config.getConditions()[GPUTestConfig::kConditionNVIDIA]);35EXPECT_EQ(IsDebug(), config.getConditions()[GPUTestConfig::kConditionDebug]);36EXPECT_EQ(IsRelease(), config.getConditions()[GPUTestConfig::kConditionRelease]);37}3839void validateConfigAPI(const GPUTestConfig &config,40const GPUTestConfig::API &api,41uint32_t preRotation,42bool enableDirectSPIRVGen)43{44bool D3D9 = false;45bool D3D11 = false;46bool GLDesktop = false;47bool GLES = false;48bool Vulkan = false;49bool Metal = false;50switch (api)51{52case GPUTestConfig::kAPID3D9:53D3D9 = true;54break;55case GPUTestConfig::kAPID3D11:56D3D11 = true;57break;58case GPUTestConfig::kAPIGLDesktop:59GLDesktop = true;60break;61case GPUTestConfig::kAPIGLES:62GLES = true;63break;64case GPUTestConfig::kAPIVulkan:65Vulkan = true;66break;67case GPUTestConfig::kAPIMetal:68Metal = true;69break;70case GPUTestConfig::kAPIUnknown:71default:72break;73}74EXPECT_EQ(D3D9, config.getConditions()[GPUTestConfig::kConditionD3D9]);75EXPECT_EQ(D3D11, config.getConditions()[GPUTestConfig::kConditionD3D11]);76EXPECT_EQ(GLDesktop, config.getConditions()[GPUTestConfig::kConditionGLDesktop]);77EXPECT_EQ(GLES, config.getConditions()[GPUTestConfig::kConditionGLES]);78EXPECT_EQ(Vulkan, config.getConditions()[GPUTestConfig::kConditionVulkan]);79EXPECT_EQ(Metal, config.getConditions()[GPUTestConfig::kConditionMetal]);8081switch (preRotation)82{83case 90:84EXPECT_TRUE(config.getConditions()[GPUTestConfig::kConditionPreRotation]);85EXPECT_TRUE(config.getConditions()[GPUTestConfig::kConditionPreRotation90]);86EXPECT_FALSE(config.getConditions()[GPUTestConfig::kConditionPreRotation180]);87EXPECT_FALSE(config.getConditions()[GPUTestConfig::kConditionPreRotation270]);88break;89case 180:90EXPECT_TRUE(config.getConditions()[GPUTestConfig::kConditionPreRotation]);91EXPECT_FALSE(config.getConditions()[GPUTestConfig::kConditionPreRotation90]);92EXPECT_TRUE(config.getConditions()[GPUTestConfig::kConditionPreRotation180]);93EXPECT_FALSE(config.getConditions()[GPUTestConfig::kConditionPreRotation270]);94break;95case 270:96EXPECT_TRUE(config.getConditions()[GPUTestConfig::kConditionPreRotation]);97EXPECT_FALSE(config.getConditions()[GPUTestConfig::kConditionPreRotation90]);98EXPECT_FALSE(config.getConditions()[GPUTestConfig::kConditionPreRotation180]);99EXPECT_TRUE(config.getConditions()[GPUTestConfig::kConditionPreRotation270]);100break;101default:102EXPECT_FALSE(config.getConditions()[GPUTestConfig::kConditionPreRotation]);103EXPECT_FALSE(config.getConditions()[GPUTestConfig::kConditionPreRotation90]);104EXPECT_FALSE(config.getConditions()[GPUTestConfig::kConditionPreRotation180]);105EXPECT_FALSE(config.getConditions()[GPUTestConfig::kConditionPreRotation270]);106break;107}108109EXPECT_EQ(enableDirectSPIRVGen, config.getConditions()[GPUTestConfig::kConditionSPIRVGen]);110}111};112113// Create a new GPUTestConfig and make sure all the condition flags were set114// correctly based on the hardware.115TEST_P(GPUTestConfigTest, GPUTestConfigConditions)116{117GPUTestConfig config;118validateConfigBase(config);119}120121// Create a new GPUTestConfig with each backend specified and validate the122// condition flags are set correctly.123TEST_P(GPUTestConfigTest, GPUTestConfigConditions_D3D9)124{125GPUTestConfig config(GPUTestConfig::kAPID3D9, 0, false);126validateConfigAPI(config, GPUTestConfig::kAPID3D9, 0, false);127}128129TEST_P(GPUTestConfigTest, GPUTestConfigConditions_D3D11)130{131GPUTestConfig config(GPUTestConfig::kAPID3D11, 0, false);132validateConfigAPI(config, GPUTestConfig::kAPID3D11, 0, false);133}134135TEST_P(GPUTestConfigTest, GPUTestConfigConditions_Metal)136{137GPUTestConfig config(GPUTestConfig::kAPIMetal, 0, false);138validateConfigAPI(config, GPUTestConfig::kAPIMetal, 0, false);139}140141TEST_P(GPUTestConfigTest, GPUTestConfigConditions_GLDesktop)142{143GPUTestConfig config(GPUTestConfig::kAPIGLDesktop, 0, false);144validateConfigAPI(config, GPUTestConfig::kAPIGLDesktop, 0, false);145}146147TEST_P(GPUTestConfigTest, GPUTestConfigConditions_GLES)148{149GPUTestConfig config(GPUTestConfig::kAPIGLES, 0, false);150validateConfigAPI(config, GPUTestConfig::kAPIGLES, 0, false);151}152153TEST_P(GPUTestConfigTest, GPUTestConfigConditions_Vulkan)154{155GPUTestConfig config(GPUTestConfig::kAPIVulkan, 0, false);156validateConfigAPI(config, GPUTestConfig::kAPIVulkan, 0, false);157}158159TEST_P(GPUTestConfigTest, GPUTestConfigConditions_Vulkan_PreRotation90)160{161GPUTestConfig config(GPUTestConfig::kAPIVulkan, 90, false);162validateConfigAPI(config, GPUTestConfig::kAPIVulkan, 90, false);163}164165TEST_P(GPUTestConfigTest, GPUTestConfigConditions_Vulkan_PreRotation180)166{167GPUTestConfig config(GPUTestConfig::kAPIVulkan, 180, false);168validateConfigAPI(config, GPUTestConfig::kAPIVulkan, 180, false);169}170171TEST_P(GPUTestConfigTest, GPUTestConfigConditions_Vulkan_PreRotation270)172{173GPUTestConfig config(GPUTestConfig::kAPIVulkan, 270, false);174validateConfigAPI(config, GPUTestConfig::kAPIVulkan, 270, false);175}176177TEST_P(GPUTestConfigTest, GPUTestConfigConditions_Vulkan_PreRotation270_DirectSPIRVGen)178{179GPUTestConfig config(GPUTestConfig::kAPIVulkan, 270, true);180validateConfigAPI(config, GPUTestConfig::kAPIVulkan, 270, true);181}182183// Use this to select which configurations (e.g. which renderer, which GLES major version) these184// tests should be run against.185ANGLE_INSTANTIATE_TEST_ES2_AND_ES3(GPUTestConfigTest);186187} // namespace angle188189190