1 //
2 // Copyright 2021 The ANGLE Project Authors. All rights reserved.
3 // Use of this source code is governed by a BSD-style license that can be
4 // found in the LICENSE file.
5 //
6
7 #include "gmock/gmock.h"
8 #include "gtest/gtest.h"
9
10 #include "tests/angle_unittests_utils.h"
11
12 namespace rx
13 {
14
15 extern std::string SanitizeRendererString(std::string rendererString);
16 extern std::string SanitizeVersionString(std::string versionString,
17 bool isES,
18 bool includeFullVersion);
19
20 namespace testing
21 {
22
23 namespace
24 {
25
TEST(DisplayGLTest,SanitizeRendererStringIntel)26 TEST(DisplayGLTest, SanitizeRendererStringIntel)
27 {
28 std::string testString = "Mesa DRI Intel(R) HD Graphics 4000 (IVB GT2)";
29 std::string testExpectation = "Mesa DRI Intel(R) HD Graphics 4000 (IVB GT2)";
30 EXPECT_EQ(SanitizeRendererString(testString), testExpectation);
31 }
32
TEST(DisplayGLTest,SanitizeRendererStringLLVMPipe)33 TEST(DisplayGLTest, SanitizeRendererStringLLVMPipe)
34 {
35 std::string testString = "llvmpipe (LLVM 11.0.0, 256 bits)";
36 std::string testExpectation = "llvmpipe (LLVM 11.0.0, 256 bits)";
37 EXPECT_EQ(SanitizeRendererString(testString), testExpectation);
38 }
39
TEST(DisplayGLTest,SanitizeRendererStringRadeonVega)40 TEST(DisplayGLTest, SanitizeRendererStringRadeonVega)
41 {
42 std::string testString = "Radeon RX Vega";
43 std::string testExpectation = "Radeon RX Vega";
44 EXPECT_EQ(SanitizeRendererString(testString), testExpectation);
45 }
46
TEST(DisplayGLTest,SanitizeRendererStringRadeonTM)47 TEST(DisplayGLTest, SanitizeRendererStringRadeonTM)
48 {
49 std::string testString =
50 "AMD Radeon (TM) RX 460 Graphics (POLARIS11, DRM 3.35.0, 5.4.0-65-generic, LLVM 11.0.0)";
51 std::string testExpectation = "AMD Radeon (TM) RX 460 Graphics (POLARIS11)";
52 EXPECT_EQ(SanitizeRendererString(testString), testExpectation);
53 }
54
TEST(DisplayGLTest,SanitizeRendererStringRadeonWithoutGeneration)55 TEST(DisplayGLTest, SanitizeRendererStringRadeonWithoutGeneration)
56 {
57 std::string testString = "AMD Radeon RX 5700 (DRM 3.35.0, 5.4.0-65-generic, LLVM 11.0.0)";
58 std::string testExpectation = "AMD Radeon RX 5700";
59 EXPECT_EQ(SanitizeRendererString(testString), testExpectation);
60 }
61
TEST(DisplayGLTest,SanitizeVersionStringOpenGLMissing)62 TEST(DisplayGLTest, SanitizeVersionStringOpenGLMissing)
63 {
64 std::string testString = "4.6.0 NVIDIA 391.76";
65 std::string testExpectation = "OpenGL 4.6.0 NVIDIA 391.76";
66 EXPECT_EQ(SanitizeVersionString(testString, false, true), testExpectation);
67 }
68
69 // Note: OpenGL renderers with this prefix don't actually seem to be present in the wild
TEST(DisplayGLTest,SanitizeVersionStringOpenGLPresent)70 TEST(DisplayGLTest, SanitizeVersionStringOpenGLPresent)
71 {
72 std::string testString = "OpenGL 4.5.0 - Build 22.20.16.4749";
73 std::string testExpectation = "OpenGL 4.5.0 - Build 22.20.16.4749";
74 EXPECT_EQ(SanitizeVersionString(testString, false, true), testExpectation);
75 }
76
TEST(DisplayGLTest,SanitizeVersionStringOpenGLESMissing)77 TEST(DisplayGLTest, SanitizeVersionStringOpenGLESMissing)
78 {
79 std::string testString = "4.6.0 NVIDIA 419.67";
80 std::string testExpectation = "OpenGL ES 4.6.0 NVIDIA 419.67";
81 EXPECT_EQ(SanitizeVersionString(testString, true, true), testExpectation);
82 }
83
TEST(DisplayGLTest,SanitizeVersionStringOpenGLESPresent)84 TEST(DisplayGLTest, SanitizeVersionStringOpenGLESPresent)
85 {
86 std::string testString = "OpenGL ES 3.2 v1.r12p0-04rel0.44f2946824bb8739781564bffe2110c9";
87 std::string testExpectation = "OpenGL ES 3.2 v1.r12p0-04rel0.44f2946824bb8739781564bffe2110c9";
88 EXPECT_EQ(SanitizeVersionString(testString, true, true), testExpectation);
89 }
90
TEST(DisplayGLTest,SanitizeVersionStringOpenGLMissingLimited)91 TEST(DisplayGLTest, SanitizeVersionStringOpenGLMissingLimited)
92 {
93 std::string testString = "4.6.0 NVIDIA 391.76";
94 std::string testExpectation = "OpenGL 4.6.0";
95 EXPECT_EQ(SanitizeVersionString(testString, false, false), testExpectation);
96 }
97
98 // Note: OpenGL renderers with this prefix don't actually seem to be present in the wild
TEST(DisplayGLTest,SanitizeVersionStringOpenGLPresentLimited)99 TEST(DisplayGLTest, SanitizeVersionStringOpenGLPresentLimited)
100 {
101 std::string testString = "OpenGL 4.5.0 - Build 22.20.16.4749";
102 std::string testExpectation = "OpenGL 4.5.0";
103 EXPECT_EQ(SanitizeVersionString(testString, false, false), testExpectation);
104 }
105
TEST(DisplayGLTest,SanitizeVersionStringOpenGLESMissingLimited)106 TEST(DisplayGLTest, SanitizeVersionStringOpenGLESMissingLimited)
107 {
108 std::string testString = "4.6.0 NVIDIA 419.67";
109 std::string testExpectation = "OpenGL ES 4.6.0";
110 EXPECT_EQ(SanitizeVersionString(testString, true, false), testExpectation);
111 }
112
TEST(DisplayGLTest,SanitizeVersionStringOpenGLESPresentLimited)113 TEST(DisplayGLTest, SanitizeVersionStringOpenGLESPresentLimited)
114 {
115 std::string testString = "OpenGL ES 3.2 v1.r12p0-04rel0.44f2946824bb8739781564bffe2110c9";
116 std::string testExpectation = "OpenGL ES 3.2";
117 EXPECT_EQ(SanitizeVersionString(testString, true, false), testExpectation);
118 }
119
120 } // anonymous namespace
121
122 } // namespace testing
123
124 } // namespace rx
125