Flutter Engine Uber Docs
Docs for the entire Flutter Engine repo.
 
Loading...
Searching...
No Matches
mock_gles.h
Go to the documentation of this file.
1// Copyright 2013 The Flutter Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef FLUTTER_IMPELLER_RENDERER_BACKEND_GLES_TEST_MOCK_GLES_H_
6#define FLUTTER_IMPELLER_RENDERER_BACKEND_GLES_TEST_MOCK_GLES_H_
7
8#include <memory>
9#include <optional>
10
11#include "gmock/gmock.h"
13
14namespace impeller {
15namespace testing {
16
18
19/// A resolver that behaves like |kMockResolverGLES| but hides the hardware
20/// instancing entry points, so the OpenGL ES backend exercises its
21/// instanced-draw emulation fallback.
23
25 public:
26 virtual ~IMockGLESImpl() = default;
27 virtual void DeleteTextures(GLsizei size, const GLuint* queries) {}
28 virtual void GenTextures(GLsizei n, GLuint* textures) {}
29 virtual void BindTexture(GLenum target, GLuint texture) {}
30 virtual void TexImage2D(GLenum target,
31 GLint level,
32 GLint internalformat,
33 GLsizei width,
34 GLsizei height,
35 GLint border,
36 GLenum format,
37 GLenum type,
38 const void* pixels) {}
39 virtual void TexSubImage2D(GLenum target,
40 GLint level,
41 GLint xoffset,
42 GLint yoffset,
43 GLsizei width,
44 GLsizei height,
45 GLenum format,
46 GLenum type,
47 const void* pixels) {}
48 virtual void GenFramebuffers(GLsizei n, GLuint* framebuffers) {}
49 virtual void BindFramebuffer(GLenum target, GLuint framebuffer) {}
50 virtual void FramebufferTexture2D(GLenum target,
51 GLenum attachment,
52 GLenum textarget,
53 GLuint texture,
54 GLint level) {}
55 virtual GLenum CheckFramebufferStatus(GLenum target) {
56 return GL_FRAMEBUFFER_COMPLETE;
57 }
58 virtual void ReadPixels(GLint x,
59 GLint y,
60 GLsizei width,
61 GLsizei height,
62 GLenum format,
63 GLenum type,
64 void* pixels) {}
65 virtual void DeleteFramebuffers(GLsizei n, const GLuint* framebuffers) {}
66 virtual void ObjectLabelKHR(GLenum identifier,
67 GLuint name,
68 GLsizei length,
69 const GLchar* label) {}
70 virtual void Uniform1fv(GLint location, GLsizei count, const GLfloat* value) {
71 }
72 virtual void Uniform2fv(GLint location, GLsizei count, const GLfloat* value) {
73 }
74 virtual void Uniform3fv(GLint location, GLsizei count, const GLfloat* value) {
75 }
76 virtual void Uniform4fv(GLint location, GLsizei count, const GLfloat* value) {
77 }
78 virtual void UniformMatrix2fv(GLint location,
79 GLsizei count,
80 GLboolean transpose,
81 const GLfloat* value) {}
82 virtual void UniformMatrix3fv(GLint location,
83 GLsizei count,
84 GLboolean transpose,
85 const GLfloat* value) {}
86 virtual void UniformMatrix4fv(GLint location,
87 GLsizei count,
88 GLboolean transpose,
89 const GLfloat* value) {}
90 virtual void GenQueriesEXT(GLsizei n, GLuint* ids) {}
91 virtual void BeginQueryEXT(GLenum target, GLuint id) {}
92 virtual void EndQueryEXT(GLuint id) {}
93 virtual void GetQueryObjectuivEXT(GLuint id, GLenum target, GLuint* result) {}
94 virtual void GetQueryObjectui64vEXT(GLuint id,
95 GLenum target,
96 GLuint64* result) {}
97 virtual void DeleteQueriesEXT(GLsizei size, const GLuint* queries) {}
98 virtual void GenBuffers(GLsizei n, GLuint* buffers) {}
99 virtual void DeleteBuffers(GLsizei n, const GLuint* buffers) {}
100 virtual void BufferSubData(GLenum target,
101 GLintptr offset,
102 GLsizeiptr size,
103 const void* data) {}
104 virtual GLboolean IsTexture(GLuint texture) { return true; }
105 virtual void DiscardFramebufferEXT(GLenum target,
106 GLsizei numAttachments,
107 const GLenum* attachments) {};
108 virtual void InvalidateFramebuffer(GLenum target,
109 GLsizei numAttachments,
110 const GLenum* attachments) {};
111 virtual void GetIntegerv(GLenum name, GLint* attachments) {};
112 virtual void Viewport(GLint x, GLint y, GLsizei width, GLsizei height) {}
113 virtual void DrawArrays(GLenum mode, GLint first, GLsizei count) {}
114 virtual void DrawElements(GLenum mode,
115 GLsizei count,
116 GLenum type,
117 const void* indices) {}
118 virtual void DrawArraysInstanced(GLenum mode,
119 GLint first,
120 GLsizei count,
121 GLsizei instancecount) {}
122 virtual void DrawElementsInstanced(GLenum mode,
123 GLsizei count,
124 GLenum type,
125 const void* indices,
126 GLsizei instancecount) {}
127 virtual void VertexAttribDivisor(GLuint index, GLuint divisor) {}
128};
129
131 public:
134 (GLsizei size, const GLuint* queries),
135 (override));
136 MOCK_METHOD(void, GenTextures, (GLsizei n, GLuint* textures), (override));
137 MOCK_METHOD(void, BindTexture, (GLenum target, GLuint texture), (override));
140 (GLenum target,
141 GLint level,
142 GLint internalformat,
143 GLsizei width,
144 GLsizei height,
145 GLint border,
146 GLenum format,
147 GLenum type,
148 const void* pixels),
149 (override));
152 (GLenum target,
153 GLint level,
154 GLint xoffset,
155 GLint yoffset,
156 GLsizei width,
157 GLsizei height,
158 GLenum format,
159 GLenum type,
160 const void* pixels),
161 (override));
164 (GLsizei n, GLuint* framebuffers),
165 (override));
168 (GLenum target, GLuint framebuffer),
169 (override));
172 (GLenum target,
173 GLenum attachment,
174 GLenum textarget,
175 GLuint texture,
176 GLint level),
177 (override));
178 MOCK_METHOD(GLenum, CheckFramebufferStatus, (GLenum target), (override));
181 (GLint x,
182 GLint y,
183 GLsizei width,
184 GLsizei height,
185 GLenum format,
186 GLenum type,
187 void* pixels),
188 (override));
191 (GLsizei n, const GLuint* framebuffers),
192 (override));
194 void,
196 (GLenum identifier, GLuint name, GLsizei length, const GLchar* label),
197 (override));
200 (GLint location, GLsizei count, const GLfloat* value),
201 (override));
204 (GLint location, GLsizei count, const GLfloat* value),
205 (override));
208 (GLint location, GLsizei count, const GLfloat* value),
209 (override));
212 (GLint location, GLsizei count, const GLfloat* value),
213 (override));
216 (GLint location,
217 GLsizei count,
218 GLboolean transpose,
219 const GLfloat* value),
220 (override));
223 (GLint location,
224 GLsizei count,
225 GLboolean transpose,
226 const GLfloat* value),
227 (override));
230 (GLint location,
231 GLsizei count,
232 GLboolean transpose,
233 const GLfloat* value),
234 (override));
235 MOCK_METHOD(void, GenQueriesEXT, (GLsizei n, GLuint* ids), (override));
236 MOCK_METHOD(void, BeginQueryEXT, (GLenum target, GLuint id), (override));
237 MOCK_METHOD(void, EndQueryEXT, (GLuint id), (override));
240 (GLuint id, GLenum target, GLuint* result),
241 (override));
244 (GLuint id, GLenum target, GLuint64* result),
245 (override));
248 (GLsizei size, const GLuint* queries),
249 (override));
250 MOCK_METHOD(void, GenBuffers, (GLsizei n, GLuint* buffers), (override));
253 (GLsizei n, const GLuint* buffers),
254 (override));
256 void,
258 (GLenum target, GLintptr offset, GLsizeiptr size, const void* data),
259 (override));
260 MOCK_METHOD(GLboolean, IsTexture, (GLuint texture), (override));
263 (GLenum target,
264 GLsizei numAttachments,
265 const GLenum* attachments),
266 (override));
269 (GLenum target,
270 GLsizei numAttachments,
271 const GLenum* attachments),
272 (override));
273 MOCK_METHOD(void, GetIntegerv, (GLenum name, GLint* value), (override));
275 Viewport,
276 (GLint x, GLint y, GLsizei width, GLsizei height),
277 (override));
280 (GLenum mode, GLint first, GLsizei count),
281 (override));
284 (GLenum mode, GLsizei count, GLenum type, const void* indices),
285 (override));
288 (GLenum mode, GLint first, GLsizei count, GLsizei instancecount),
289 (override));
292 (GLenum mode,
293 GLsizei count,
294 GLenum type,
295 const void* indices,
296 GLsizei instancecount),
297 (override));
300 (GLuint index, GLuint divisor),
301 (override));
302};
303
304/// @brief Provides a mocked version of the |ProcTableGLES| class.
305///
306/// Typically, Open GLES at runtime will be provided the host's GLES bindings
307/// (as function pointers). This class maintains a set of function pointers that
308/// appear to be GLES functions, but are actually just stubs that record
309/// invocations.
310///
311/// See `README.md` for more information.
312class MockGLES final {
313 public:
314 static std::shared_ptr<MockGLES> Init(
315 std::unique_ptr<MockGLESImpl> impl,
316 const std::optional<std::vector<const char*>>& extensions = std::nullopt,
317 const char* version_string = "OpenGL ES 3.0");
318
319 /// @brief Returns an initialized |MockGLES| instance.
320 ///
321 /// This method overwrites mocked global GLES function pointers to record
322 /// invocations on this instance of |MockGLES|. As such, it should only be
323 /// called once per test.
324 static std::shared_ptr<MockGLES> Init(
325 const std::optional<std::vector<const char*>>& extensions = std::nullopt,
326 const char* version_string = "OpenGL ES 3.0",
328
329 /// @brief Returns a configured |ProcTableGLES| instance.
330 const ProcTableGLES& GetProcTable() const { return proc_table_; }
331
332 ~MockGLES();
333
334 IMockGLESImpl* GetImpl() { return impl_.get(); }
335
336 private:
337 friend void RecordGLCall(const char* name);
338 friend void mockGenTextures(GLsizei n, GLuint* textures);
339
341
342 ProcTableGLES proc_table_;
343 std::unique_ptr<IMockGLESImpl> impl_;
344
345 MockGLES(const MockGLES&) = delete;
346
347 MockGLES& operator=(const MockGLES&) = delete;
348};
349
350} // namespace testing
351} // namespace impeller
352
353#endif // FLUTTER_IMPELLER_RENDERER_BACKEND_GLES_TEST_MOCK_GLES_H_
std::function< void *(const char *function_name)> Resolver
virtual void GenFramebuffers(GLsizei n, GLuint *framebuffers)
Definition mock_gles.h:48
virtual void TexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels)
Definition mock_gles.h:39
virtual void InvalidateFramebuffer(GLenum target, GLsizei numAttachments, const GLenum *attachments)
Definition mock_gles.h:108
virtual void Uniform2fv(GLint location, GLsizei count, const GLfloat *value)
Definition mock_gles.h:72
virtual void BufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, const void *data)
Definition mock_gles.h:100
virtual void UniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
Definition mock_gles.h:86
virtual void GenBuffers(GLsizei n, GLuint *buffers)
Definition mock_gles.h:98
virtual void GetQueryObjectui64vEXT(GLuint id, GLenum target, GLuint64 *result)
Definition mock_gles.h:94
virtual void GetQueryObjectuivEXT(GLuint id, GLenum target, GLuint *result)
Definition mock_gles.h:93
virtual void DeleteQueriesEXT(GLsizei size, const GLuint *queries)
Definition mock_gles.h:97
virtual void DeleteFramebuffers(GLsizei n, const GLuint *framebuffers)
Definition mock_gles.h:65
virtual void DrawArrays(GLenum mode, GLint first, GLsizei count)
Definition mock_gles.h:113
virtual void ObjectLabelKHR(GLenum identifier, GLuint name, GLsizei length, const GLchar *label)
Definition mock_gles.h:66
virtual void BindTexture(GLenum target, GLuint texture)
Definition mock_gles.h:29
virtual void EndQueryEXT(GLuint id)
Definition mock_gles.h:92
virtual ~IMockGLESImpl()=default
virtual void UniformMatrix3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
Definition mock_gles.h:82
virtual void DiscardFramebufferEXT(GLenum target, GLsizei numAttachments, const GLenum *attachments)
Definition mock_gles.h:105
virtual void DeleteTextures(GLsizei size, const GLuint *queries)
Definition mock_gles.h:27
virtual void GenQueriesEXT(GLsizei n, GLuint *ids)
Definition mock_gles.h:90
virtual void VertexAttribDivisor(GLuint index, GLuint divisor)
Definition mock_gles.h:127
virtual void DrawElements(GLenum mode, GLsizei count, GLenum type, const void *indices)
Definition mock_gles.h:114
virtual void Uniform4fv(GLint location, GLsizei count, const GLfloat *value)
Definition mock_gles.h:76
virtual void BeginQueryEXT(GLenum target, GLuint id)
Definition mock_gles.h:91
virtual void DrawArraysInstanced(GLenum mode, GLint first, GLsizei count, GLsizei instancecount)
Definition mock_gles.h:118
virtual void FramebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)
Definition mock_gles.h:50
virtual void BindFramebuffer(GLenum target, GLuint framebuffer)
Definition mock_gles.h:49
virtual void GetIntegerv(GLenum name, GLint *attachments)
Definition mock_gles.h:111
virtual void TexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels)
Definition mock_gles.h:30
virtual GLboolean IsTexture(GLuint texture)
Definition mock_gles.h:104
virtual void Viewport(GLint x, GLint y, GLsizei width, GLsizei height)
Definition mock_gles.h:112
virtual void DrawElementsInstanced(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount)
Definition mock_gles.h:122
virtual void DeleteBuffers(GLsizei n, const GLuint *buffers)
Definition mock_gles.h:99
virtual void ReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void *pixels)
Definition mock_gles.h:58
virtual void UniformMatrix2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
Definition mock_gles.h:78
virtual void Uniform1fv(GLint location, GLsizei count, const GLfloat *value)
Definition mock_gles.h:70
virtual void Uniform3fv(GLint location, GLsizei count, const GLfloat *value)
Definition mock_gles.h:74
virtual void GenTextures(GLsizei n, GLuint *textures)
Definition mock_gles.h:28
virtual GLenum CheckFramebufferStatus(GLenum target)
Definition mock_gles.h:55
Provides a mocked version of the |ProcTableGLES| class.
Definition mock_gles.h:312
friend void RecordGLCall(const char *name)
static std::shared_ptr< MockGLES > Init(std::unique_ptr< MockGLESImpl > impl, const std::optional< std::vector< const char * > > &extensions=std::nullopt, const char *version_string="OpenGL ES 3.0")
Definition mock_gles.cc:417
friend void mockGenTextures(GLsizei n, GLuint *textures)
Definition mock_gles.cc:236
const ProcTableGLES & GetProcTable() const
Returns a configured |ProcTableGLES| instance.
Definition mock_gles.h:330
IMockGLESImpl * GetImpl()
Definition mock_gles.h:334
MOCK_METHOD(void, UniformMatrix4fv,(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value),(override))
MOCK_METHOD(void, TexImage2D,(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels),(override))
MOCK_METHOD(void, GetQueryObjectuivEXT,(GLuint id, GLenum target, GLuint *result),(override))
MOCK_METHOD(void, GenTextures,(GLsizei n, GLuint *textures),(override))
MOCK_METHOD(void, BeginQueryEXT,(GLenum target, GLuint id),(override))
MOCK_METHOD(void, DeleteBuffers,(GLsizei n, const GLuint *buffers),(override))
MOCK_METHOD(GLboolean, IsTexture,(GLuint texture),(override))
MOCK_METHOD(void, BindTexture,(GLenum target, GLuint texture),(override))
MOCK_METHOD(void, Uniform4fv,(GLint location, GLsizei count, const GLfloat *value),(override))
MOCK_METHOD(void, BindFramebuffer,(GLenum target, GLuint framebuffer),(override))
MOCK_METHOD(void, UniformMatrix2fv,(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value),(override))
MOCK_METHOD(void, UniformMatrix3fv,(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value),(override))
MOCK_METHOD(void, ReadPixels,(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void *pixels),(override))
MOCK_METHOD(void, DrawElements,(GLenum mode, GLsizei count, GLenum type, const void *indices),(override))
MOCK_METHOD(void, GenFramebuffers,(GLsizei n, GLuint *framebuffers),(override))
MOCK_METHOD(void, BufferSubData,(GLenum target, GLintptr offset, GLsizeiptr size, const void *data),(override))
MOCK_METHOD(void, EndQueryEXT,(GLuint id),(override))
MOCK_METHOD(void, Uniform2fv,(GLint location, GLsizei count, const GLfloat *value),(override))
MOCK_METHOD(void, DrawElementsInstanced,(GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount),(override))
MOCK_METHOD(GLenum, CheckFramebufferStatus,(GLenum target),(override))
MOCK_METHOD(void, GenBuffers,(GLsizei n, GLuint *buffers),(override))
MOCK_METHOD(void, FramebufferTexture2D,(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level),(override))
MOCK_METHOD(void, Viewport,(GLint x, GLint y, GLsizei width, GLsizei height),(override))
MOCK_METHOD(void, GetIntegerv,(GLenum name, GLint *value),(override))
MOCK_METHOD(void, Uniform1fv,(GLint location, GLsizei count, const GLfloat *value),(override))
MOCK_METHOD(void, DiscardFramebufferEXT,(GLenum target, GLsizei numAttachments, const GLenum *attachments),(override))
MOCK_METHOD(void, InvalidateFramebuffer,(GLenum target, GLsizei numAttachments, const GLenum *attachments),(override))
MOCK_METHOD(void, Uniform3fv,(GLint location, GLsizei count, const GLfloat *value),(override))
MOCK_METHOD(void, DrawArraysInstanced,(GLenum mode, GLint first, GLsizei count, GLsizei instancecount),(override))
MOCK_METHOD(void, DeleteTextures,(GLsizei size, const GLuint *queries),(override))
MOCK_METHOD(void, DeleteQueriesEXT,(GLsizei size, const GLuint *queries),(override))
MOCK_METHOD(void, VertexAttribDivisor,(GLuint index, GLuint divisor),(override))
MOCK_METHOD(void, DrawArrays,(GLenum mode, GLint first, GLsizei count),(override))
MOCK_METHOD(void, TexSubImage2D,(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels),(override))
MOCK_METHOD(void, GenQueriesEXT,(GLsizei n, GLuint *ids),(override))
MOCK_METHOD(void, ObjectLabelKHR,(GLenum identifier, GLuint name, GLsizei length, const GLchar *label),(override))
MOCK_METHOD(void, DeleteFramebuffers,(GLsizei n, const GLuint *framebuffers),(override))
MOCK_METHOD(void, GetQueryObjectui64vEXT,(GLuint id, GLenum target, GLuint64 *result),(override))
uint32_t location
int32_t x
uint32_t * target
size_t length
FlTexture * texture
double y
it will be possible to load the file into Perfetto s trace viewer use test Running tests that layout and measure text will not yield consistent results across various platforms Enabling this option will make font resolution default to the Ahem test font on all disable asset Prevents usage of any non test fonts unless they were explicitly Loaded via prefetched default font Indicates whether the embedding started a prefetch of the default font manager before creating the engine run In non interactive keep the shell running after the Dart script has completed enable serial On low power devices with low core running concurrent GC tasks on threads can cause them to contend with the UI thread which could potentially lead to jank This option turns off all concurrent GC activities domain network JSON encoded network policy per domain This overrides the DisallowInsecureConnections switch Embedder can specify whether to allow or disallow insecure connections at a domain level old gen heap size
DEF_SWITCHES_START aot vmservice shared library name
Definition switch_defs.h:27
DEF_SWITCHES_START aot vmservice shared library Name of the *so containing AOT compiled Dart assets for launching the service isolate vm snapshot data
Definition switch_defs.h:36
const ProcTableGLES::Resolver kMockResolverGLESWithoutInstancing
Definition mock_gles.cc:545
const ProcTableGLES::Resolver kMockResolverGLES
Definition mock_gles.cc:459
impeller::ShaderType type
int32_t height
int32_t width