@@ -19,8 +19,12 @@ static std::mutex g_test_lock;
1919
2020static std::weak_ptr<MockGLES> g_mock_gles;
2121
22+ static ProcTableGLES::Resolver g_resolver;
23+
2224static std::vector<const unsigned char *> g_extensions;
2325
26+ static const unsigned char * g_version;
27+
2428// Has friend visibility into MockGLES to record calls.
2529void RecordGLCall (const char * name) {
2630 if (auto mock_gles = g_mock_gles.lock ()) {
@@ -38,7 +42,7 @@ struct CheckSameSignature<Ret(Args...), Ret(Args...)> : std::true_type {};
3842void doNothing () {}
3943
4044auto const kMockVendor = (unsigned char *)" MockGLES" ;
41- auto const kMockVersion = (unsigned char *)" 3 .0" ;
45+ const auto kMockShadingLanguageVersion = (unsigned char *)" GLSL ES 1 .0" ;
4246auto const kExtensions = std::vector<const unsigned char *>{
4347 (unsigned char *)" GL_KHR_debug" //
4448};
@@ -48,9 +52,9 @@ const unsigned char* mockGetString(GLenum name) {
4852 case GL_VENDOR:
4953 return kMockVendor ;
5054 case GL_VERSION:
51- return kMockVersion ;
55+ return g_version ;
5256 case GL_SHADING_LANGUAGE_VERSION:
53- return kMockVersion ;
57+ return kMockShadingLanguageVersion ;
5458 default :
5559 return (unsigned char *)" " ;
5660 }
@@ -160,17 +164,20 @@ static_assert(CheckSameSignature<decltype(mockDeleteQueriesEXT), //
160164 decltype (glDeleteQueriesEXT)>::value);
161165
162166std::shared_ptr<MockGLES> MockGLES::Init (
163- const std::optional<std::vector<const unsigned char *>>& extensions) {
167+ const std::optional<std::vector<const unsigned char *>>& extensions,
168+ const char * version_string,
169+ ProcTableGLES::Resolver resolver) {
164170 // If we cannot obtain a lock, MockGLES is already being used elsewhere.
165171 FML_CHECK (g_test_lock.try_lock ())
166172 << " MockGLES is already being used by another test." ;
173+ g_version = (unsigned char *)version_string;
167174 g_extensions = extensions.value_or (kExtensions );
168- auto mock_gles = std::shared_ptr<MockGLES>(new MockGLES ());
175+ auto mock_gles = std::shared_ptr<MockGLES>(new MockGLES (std::move (resolver) ));
169176 g_mock_gles = mock_gles;
170177 return mock_gles;
171178}
172179
173- const ProcTableGLES::Resolver kMockResolver = [](const char * name) {
180+ const ProcTableGLES::Resolver kMockResolverGLES = [](const char * name) {
174181 if (strcmp (name, " glPopDebugGroupKHR" ) == 0 ) {
175182 return reinterpret_cast <void *>(&mockPopDebugGroupKHR);
176183 } else if (strcmp (name, " glPushDebugGroupKHR" ) == 0 ) {
@@ -200,7 +207,8 @@ const ProcTableGLES::Resolver kMockResolver = [](const char* name) {
200207 }
201208};
202209
203- MockGLES::MockGLES () : proc_table_(kMockResolver ) {}
210+ MockGLES::MockGLES (ProcTableGLES::Resolver resolver)
211+ : proc_table_(std::move(resolver)) {}
204212
205213MockGLES::~MockGLES () {
206214 g_test_lock.unlock ();
0 commit comments