• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 //
2 // Copyright 2020 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 #include "angle_test_platform.h"
7 
8 #include "common/platform.h"
9 #include "gpu_info_util/SystemInfo.h"
10 
11 #if defined(ANGLE_PLATFORM_WINDOWS)
12 #    include <VersionHelpers.h>
13 #endif  // defined(ANGLE_PLATFORM_WINDOWS)
14 
15 using namespace angle;
16 
IsAdreno()17 bool IsAdreno()
18 {
19     std::string rendererString(reinterpret_cast<const char *>(glGetString(GL_RENDERER)));
20     return (rendererString.find("Adreno") != std::string::npos);
21 }
22 
IsD3D11()23 bool IsD3D11()
24 {
25     std::string rendererString(reinterpret_cast<const char *>(glGetString(GL_RENDERER)));
26     return (rendererString.find("Direct3D11 vs_5_0") != std::string::npos);
27 }
28 
IsD3D9()29 bool IsD3D9()
30 {
31     std::string rendererString(reinterpret_cast<const char *>(glGetString(GL_RENDERER)));
32     return (rendererString.find("Direct3D9") != std::string::npos);
33 }
34 
IsDesktopOpenGL()35 bool IsDesktopOpenGL()
36 {
37     return IsOpenGL() && !IsOpenGLES();
38 }
39 
IsOpenGLES()40 bool IsOpenGLES()
41 {
42     std::string rendererString(reinterpret_cast<const char *>(glGetString(GL_RENDERER)));
43     return (rendererString.find("OpenGL ES") != std::string::npos);
44 }
45 
IsOpenGL()46 bool IsOpenGL()
47 {
48     std::string rendererString(reinterpret_cast<const char *>(glGetString(GL_RENDERER)));
49     return (rendererString.find("OpenGL") != std::string::npos);
50 }
51 
IsNULL()52 bool IsNULL()
53 {
54     std::string rendererString(reinterpret_cast<const char *>(glGetString(GL_RENDERER)));
55     return (rendererString.find("NULL") != std::string::npos);
56 }
57 
IsVulkan()58 bool IsVulkan()
59 {
60     const char *renderer = reinterpret_cast<const char *>(glGetString(GL_RENDERER));
61     std::string rendererString(renderer);
62     return (rendererString.find("Vulkan") != std::string::npos);
63 }
64 
IsMetal()65 bool IsMetal()
66 {
67     const char *renderer = reinterpret_cast<const char *>(glGetString(GL_RENDERER));
68     std::string rendererString(renderer);
69     return (rendererString.find("ANGLE Metal") != std::string::npos);
70 }
71 
IsD3D()72 bool IsD3D()
73 {
74     return IsD3D9() || IsD3D11();
75 }
76 
IsDebug()77 bool IsDebug()
78 {
79 #if !defined(NDEBUG)
80     return true;
81 #else
82     return false;
83 #endif
84 }
85 
IsRelease()86 bool IsRelease()
87 {
88     return !IsDebug();
89 }
90 
EnsureGLExtensionEnabled(const std::string & extName)91 bool EnsureGLExtensionEnabled(const std::string &extName)
92 {
93     if (IsGLExtensionEnabled("GL_ANGLE_request_extension") && IsGLExtensionRequestable(extName))
94     {
95         glRequestExtensionANGLE(extName.c_str());
96     }
97 
98     return IsGLExtensionEnabled(extName);
99 }
100 
IsEGLClientExtensionEnabled(const std::string & extName)101 bool IsEGLClientExtensionEnabled(const std::string &extName)
102 {
103     return CheckExtensionExists(eglQueryString(EGL_NO_DISPLAY, EGL_EXTENSIONS), extName);
104 }
105 
IsEGLDeviceExtensionEnabled(EGLDeviceEXT device,const std::string & extName)106 bool IsEGLDeviceExtensionEnabled(EGLDeviceEXT device, const std::string &extName)
107 {
108     return CheckExtensionExists(eglQueryDeviceStringEXT(device, EGL_EXTENSIONS), extName);
109 }
110 
IsEGLDisplayExtensionEnabled(EGLDisplay display,const std::string & extName)111 bool IsEGLDisplayExtensionEnabled(EGLDisplay display, const std::string &extName)
112 {
113     return CheckExtensionExists(eglQueryString(display, EGL_EXTENSIONS), extName);
114 }
115 
IsGLExtensionEnabled(const std::string & extName)116 bool IsGLExtensionEnabled(const std::string &extName)
117 {
118     return CheckExtensionExists(reinterpret_cast<const char *>(glGetString(GL_EXTENSIONS)),
119                                 extName);
120 }
121 
IsGLExtensionRequestable(const std::string & extName)122 bool IsGLExtensionRequestable(const std::string &extName)
123 {
124     return CheckExtensionExists(
125         reinterpret_cast<const char *>(glGetString(GL_REQUESTABLE_EXTENSIONS_ANGLE)), extName);
126 }
127