2 * Copyright (c) 2014 Samsung Electronics Co., Ltd.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
18 #include <dali-test-suite-utils.h>
20 #include <dali/internal/graphics/gles/gl-implementation.h>
21 #include <dali/internal/graphics/gles/gl-proxy-implementation.h>
22 #include <dali/internal/system/common/environment-options.h>
24 void gl_implementation_startup(void)
28 void gl_implementation_cleanup(void)
32 using namespace Dali::Internal::Adaptor;
36 void CallAllMethods(Dali::Integration::GlAbstraction& implementation)
38 // These tests are purely for coverage, they don't really test anything!
41 implementation.PreRender();
42 implementation.PostRender();
43 implementation.IsSurfacelessContextSupported();
45 // Cannot call the following functions as they have a Wait
46 // implementation.IsAdvancedBlendEquationSupported();
47 // implementation.IsMultisampledRenderToTextureSupported();
48 // implementation.IsBlendEquationSupported(Dali::DevelBlendEquation::ADD);
49 // implementation.GetShaderVersionPrefix();
50 // implementation.GetVertexShaderPrefix();
51 // implementation.GetFragmentShaderPrefix();
53 implementation.TextureRequiresConverting(0, 0, false);
54 implementation.ActiveTexture(0);
55 implementation.AttachShader(0, 0);
56 implementation.BindAttribLocation(0, 0, nullptr);
57 implementation.BindBuffer(0, 0);
58 implementation.BindFramebuffer(0, 0);
59 implementation.BindRenderbuffer(0, 0);
60 implementation.BindTexture(0, 0);
61 implementation.BlendColor(0, 0, 0, 0);
62 implementation.BlendEquation(0);
63 implementation.BlendEquationSeparate(0, 0);
64 implementation.BlendFunc(0, 0);
65 implementation.BlendFuncSeparate(0, 0, 0, 0);
66 implementation.BufferData(0, 0, nullptr, 0);
67 implementation.BufferSubData(0, 0, 0, nullptr);
68 implementation.CheckFramebufferStatus(0);
69 implementation.Clear(0);
70 implementation.ClearColor(0, 0, 0, 0);
71 implementation.ClearDepthf(0);
72 implementation.ClearStencil(0);
73 implementation.ColorMask(0, 0, 0, 0);
74 implementation.CompileShader(0);
75 implementation.CompressedTexImage2D(0, 0, 0, 0, 0, 0, 0, nullptr);
76 implementation.CompressedTexSubImage2D(0, 0, 0, 0, 0, 0, 0, 0, nullptr);
77 implementation.CopyTexImage2D(0, 0, 0, 0, 0, 0, 0, 0);
78 implementation.CopyTexSubImage2D(0, 0, 0, 0, 0, 0, 0, 0);
79 implementation.CreateProgram();
80 implementation.CreateShader(0);
81 implementation.CullFace(0);
82 implementation.DeleteBuffers(0, nullptr);
83 implementation.DeleteFramebuffers(0, nullptr);
84 implementation.DeleteProgram(0);
85 implementation.DeleteRenderbuffers(0, nullptr);
86 implementation.DeleteShader(0);
87 implementation.DeleteTextures(0, nullptr);
88 implementation.DepthFunc(0);
89 implementation.DepthMask(0);
90 implementation.DepthRangef(0, 0);
91 implementation.DetachShader(0, 0);
92 implementation.Disable(0);
93 implementation.DisableVertexAttribArray(0);
94 implementation.DrawArrays(0, 0, 0);
95 implementation.DrawElements(0, 0, 0, nullptr);
96 implementation.Enable(0);
97 implementation.EnableVertexAttribArray(0);
98 implementation.Finish();
99 implementation.Flush();
100 implementation.FramebufferRenderbuffer(0, 0, 0, 0);
101 implementation.FramebufferTexture2D(0, 0, 0, 0, 0);
102 implementation.FrontFace(0);
103 implementation.GenBuffers(0, nullptr);
104 implementation.GenerateMipmap(0);
105 implementation.GenFramebuffers(0, nullptr);
106 implementation.GenRenderbuffers(0, nullptr);
107 implementation.GenTextures(0, nullptr);
108 implementation.GetActiveAttrib(0, 0, 0, nullptr, nullptr, nullptr, nullptr);
109 implementation.GetActiveUniform(0, 0, 0, nullptr, nullptr, nullptr, nullptr);
110 implementation.GetAttachedShaders(0, 0, nullptr, nullptr);
111 implementation.GetAttribLocation(0, nullptr);
112 implementation.GetBooleanv(0, nullptr);
113 implementation.GetBufferParameteriv(0, 0, nullptr);
114 implementation.GetError();
115 implementation.GetFloatv(0, nullptr);
116 implementation.GetFramebufferAttachmentParameteriv(0, 0, 0, nullptr);
117 implementation.GetIntegerv(0, nullptr);
118 implementation.GetProgramiv(0, 0, nullptr);
119 implementation.GetProgramInfoLog(0, 0, nullptr, nullptr);
120 implementation.GetRenderbufferParameteriv(0, 0, nullptr);
121 implementation.GetShaderiv(0, 0, nullptr);
122 implementation.GetShaderInfoLog(0, 0, nullptr, nullptr);
123 implementation.GetShaderPrecisionFormat(0, 0, nullptr, nullptr);
124 implementation.GetShaderSource(0, 0, nullptr, nullptr);
125 implementation.GetString(0);
126 implementation.GetTexParameterfv(0, 0, nullptr);
127 implementation.GetTexParameteriv(0, 0, nullptr);
128 implementation.GetUniformfv(0, 0, nullptr);
129 implementation.GetUniformiv(0, 0, nullptr);
130 implementation.GetUniformLocation(0, nullptr);
131 implementation.GetVertexAttribfv(0, 0, nullptr);
132 implementation.GetVertexAttribiv(0, 0, nullptr);
133 implementation.GetVertexAttribPointerv(0, 0, nullptr);
134 implementation.Hint(0, 0);
135 implementation.IsBuffer(0);
136 implementation.IsEnabled(0);
137 implementation.IsFramebuffer(0);
138 implementation.IsProgram(0);
139 implementation.IsRenderbuffer(0);
140 implementation.IsShader(0);
141 implementation.IsTexture(0);
142 implementation.LineWidth(0);
143 implementation.LinkProgram(0);
144 implementation.PixelStorei(0, 0);
145 implementation.PolygonOffset(0, 0);
146 implementation.ReadPixels(0, 0, 0, 0, 0, 0, nullptr);
147 implementation.ReleaseShaderCompiler();
148 implementation.RenderbufferStorage(0, 0, 0, 0);
149 implementation.SampleCoverage(0, 0);
150 implementation.Scissor(0, 0, 0, 0);
151 implementation.ShaderBinary(0, nullptr, 0, nullptr, 0);
152 implementation.ShaderSource(0, 0, nullptr, nullptr);
153 implementation.StencilFunc(0, 0, 0);
154 implementation.StencilFuncSeparate(0, 0, 0, 0);
155 implementation.StencilMask(0);
156 implementation.StencilMaskSeparate(0, 0);
157 implementation.StencilOp(0, 0, 0);
158 implementation.StencilOpSeparate(0, 0, 0, 0);
159 implementation.TexImage2D(0, 0, 0, 0, 0, 0, 0, 0, nullptr);
160 implementation.TexParameterf(0, 0, 0);
161 implementation.TexParameterfv(0, 0, nullptr);
162 implementation.TexParameteri(0, 0, 0);
163 implementation.TexParameteriv(0, 0, nullptr);
164 implementation.TexSubImage2D(0, 0, 0, 0, 0, 0, 0, 0, nullptr);
165 implementation.Uniform1f(0, 0);
166 implementation.Uniform1fv(0, 0, nullptr);
167 implementation.Uniform1i(0, 0);
168 implementation.Uniform1iv(0, 0, nullptr);
169 implementation.Uniform2f(0, 0, 0);
170 implementation.Uniform2fv(0, 0, nullptr);
171 implementation.Uniform2i(0, 0, 0);
172 implementation.Uniform2iv(0, 0, nullptr);
173 implementation.Uniform3f(0, 0, 0, 0);
174 implementation.Uniform3fv(0, 0, nullptr);
175 implementation.Uniform3i(0, 0, 0, 0);
176 implementation.Uniform3iv(0, 0, nullptr);
177 implementation.Uniform4f(0, 0, 0, 0, 0);
178 implementation.Uniform4fv(0, 0, nullptr);
179 implementation.Uniform4i(0, 0, 0, 0, 0);
180 implementation.Uniform4iv(0, 0, nullptr);
181 implementation.UniformMatrix2fv(0, 0, 0, nullptr);
182 implementation.UniformMatrix3fv(0, 0, 0, nullptr);
183 implementation.UniformMatrix4fv(0, 0, 0, nullptr);
184 implementation.UseProgram(0);
185 implementation.ValidateProgram(0);
186 implementation.VertexAttrib1f(0, 0);
187 implementation.VertexAttrib1fv(0, nullptr);
188 implementation.VertexAttrib2f(0, 0, 0);
189 implementation.VertexAttrib2fv(0, nullptr);
190 implementation.VertexAttrib3f(0, 0, 0, 0);
191 implementation.VertexAttrib3fv(0, nullptr);
192 implementation.VertexAttrib4f(0, 0, 0, 0, 0);
193 implementation.VertexAttrib4fv(0, nullptr);
194 implementation.VertexAttribPointer(0, 0, 0, 0, 0, nullptr);
195 implementation.Viewport(0, 0, 0, 0);
196 implementation.ReadBuffer(0);
197 implementation.DrawRangeElements(0, 0, 0, 0, 0, nullptr);
198 implementation.TexImage3D(0, 0, 0, 0, 0, 0, 0, 0, 0, nullptr);
199 implementation.TexSubImage3D(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, nullptr);
200 implementation.CopyTexSubImage3D(0, 0, 0, 0, 0, 0, 0, 0, 0);
201 implementation.CompressedTexImage3D(0, 0, 0, 0, 0, 0, 0, 0, nullptr);
202 implementation.CompressedTexSubImage3D(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, nullptr);
203 implementation.GenQueries(0, nullptr);
204 implementation.DeleteQueries(0, nullptr);
205 implementation.IsQuery(0);
206 implementation.BeginQuery(0, 0);
207 implementation.EndQuery(0);
208 implementation.GetQueryiv(0, 0, nullptr);
209 implementation.GetQueryObjectuiv(0, 0, nullptr);
210 implementation.UnmapBuffer(0);
211 implementation.GetBufferPointerv(0, 0, nullptr);
212 implementation.DrawBuffers(0, nullptr);
213 implementation.UniformMatrix2x3fv(0, 0, 0, nullptr);
214 implementation.UniformMatrix3x2fv(0, 0, 0, nullptr);
215 implementation.UniformMatrix2x4fv(0, 0, 0, nullptr);
216 implementation.UniformMatrix4x2fv(0, 0, 0, nullptr);
217 implementation.UniformMatrix3x4fv(0, 0, 0, nullptr);
218 implementation.UniformMatrix4x3fv(0, 0, 0, nullptr);
219 implementation.BlitFramebuffer(0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
220 implementation.RenderbufferStorageMultisample(0, 0, 0, 0, 0);
221 implementation.FramebufferTexture2DMultisample(0, 0, 0, 0, 0, 0);
222 implementation.FramebufferTextureLayer(0, 0, 0, 0, 0);
223 implementation.MapBufferRange(0, 0, 0, 0);
224 implementation.FlushMappedBufferRange(0, 0, 0);
225 implementation.BindVertexArray(0);
226 implementation.DeleteVertexArrays(0, nullptr);
227 implementation.GenVertexArrays(0, nullptr);
228 implementation.IsVertexArray(0);
229 implementation.GetIntegeri_v(0, 0, nullptr);
230 implementation.BeginTransformFeedback(0);
231 implementation.EndTransformFeedback();
232 implementation.BindBufferRange(0, 0, 0, 0, 0);
233 implementation.BindBufferBase(0, 0, 0);
234 implementation.TransformFeedbackVaryings(0, 0, nullptr, 0);
235 implementation.GetTransformFeedbackVarying(0, 0, 0, nullptr, nullptr, nullptr, nullptr);
236 implementation.VertexAttribIPointer(0, 0, 0, 0, nullptr);
237 implementation.GetVertexAttribIiv(0, 0, nullptr);
238 implementation.GetVertexAttribIuiv(0, 0, nullptr);
239 implementation.VertexAttribI4i(0, 0, 0, 0, 0);
240 implementation.VertexAttribI4ui(0, 0, 0, 0, 0);
241 implementation.VertexAttribI4iv(0, nullptr);
242 implementation.VertexAttribI4uiv(0, nullptr);
243 implementation.GetUniformuiv(0, 0, nullptr);
244 implementation.GetFragDataLocation(0, nullptr);
245 implementation.Uniform1ui(0, 0);
246 implementation.Uniform2ui(0, 0, 0);
247 implementation.Uniform3ui(0, 0, 0, 0);
248 implementation.Uniform4ui(0, 0, 0, 0, 0);
249 implementation.Uniform1uiv(0, 0, nullptr);
250 implementation.Uniform2uiv(0, 0, nullptr);
251 implementation.Uniform3uiv(0, 0, nullptr);
252 implementation.Uniform4uiv(0, 0, nullptr);
253 implementation.ClearBufferiv(0, 0, nullptr);
254 implementation.ClearBufferuiv(0, 0, nullptr);
255 implementation.ClearBufferfv(0, 0, nullptr);
256 implementation.ClearBufferfi(0, 0, 0, 0);
257 implementation.GetStringi(0, 0);
258 implementation.CopyBufferSubData(0, 0, 0, 0, 0);
259 implementation.GetUniformIndices(0, 0, nullptr, nullptr);
260 implementation.GetActiveUniformsiv(0, 0, nullptr, 0, nullptr);
261 implementation.GetUniformBlockIndex(0, nullptr);
262 implementation.GetActiveUniformBlockiv(0, 0, 0, nullptr);
263 implementation.GetActiveUniformBlockName(0, 0, 0, nullptr, nullptr);
264 implementation.UniformBlockBinding(0, 0, 0);
265 implementation.DrawArraysInstanced(0, 0, 0, 0);
266 implementation.DrawElementsInstanced(0, 0, 0, nullptr, 0);
267 implementation.FenceSync(0, 0);
268 implementation.IsSync(0);
269 implementation.DeleteSync(0);
270 implementation.ClientWaitSync(0, 0, 0);
271 implementation.WaitSync(0, 0, 0);
272 implementation.GetInteger64v(0, nullptr);
273 implementation.GetSynciv(0, 0, 0, nullptr, nullptr);
274 implementation.GetInteger64i_v(0, 0, nullptr);
275 implementation.GetBufferParameteri64v(0, 0, nullptr);
276 implementation.GenSamplers(0, nullptr);
277 implementation.DeleteSamplers(0, nullptr);
278 implementation.IsSampler(0);
279 implementation.BindSampler(0, 0);
280 implementation.SamplerParameteri(0, 0, 0);
281 implementation.SamplerParameteriv(0, 0, nullptr);
282 implementation.SamplerParameterf(0, 0, 0);
283 implementation.SamplerParameterfv(0, 0, nullptr);
284 implementation.GetSamplerParameteriv(0, 0, nullptr);
285 implementation.GetSamplerParameterfv(0, 0, nullptr);
286 implementation.VertexAttribDivisor(0, 0);
287 implementation.BindTransformFeedback(0, 0);
288 implementation.DeleteTransformFeedbacks(0, nullptr);
289 implementation.GenTransformFeedbacks(0, nullptr);
290 implementation.IsTransformFeedback(0);
291 implementation.PauseTransformFeedback();
292 implementation.ResumeTransformFeedback();
293 implementation.GetProgramBinary(0, 0, nullptr, nullptr, nullptr);
294 implementation.ProgramBinary(0, 0, nullptr, 0);
295 implementation.ProgramParameteri(0, 0, 0);
296 implementation.InvalidateFramebuffer(0, 0, nullptr);
297 implementation.InvalidateSubFramebuffer(0, 0, nullptr, 0, 0, 0, 0);
298 implementation.TexStorage2D(0, 0, 0, 0, 0);
299 implementation.TexStorage3D(0, 0, 0, 0, 0, 0);
300 implementation.GetInternalformativ(0, 0, 0, 0, nullptr);
301 implementation.BlendBarrier();
303 DALI_TEST_CHECK(true); // Should get here!
307 DALI_TEST_CHECK(false); // Should not get here!
310 } // unnamed namespace
312 int UtcDaliGlImplementationConstruction(void)
314 // This derived destructor of the class is called which is purely for increasing function coverage
315 Dali::Integration::GlAbstraction* abstraction = new GlImplementation;
316 GlImplementation* implementation = dynamic_cast<GlImplementation*>(abstraction);
317 DALI_TEST_CHECK(implementation);
318 delete implementation;
322 int UtcDaliGlProxyImplementationConstruction(void)
324 // This derived destructor of the class is called which is purely for increasing function coverage
325 EnvironmentOptions envOptions;
326 Dali::Integration::GlAbstraction* abstraction = new GlProxyImplementation(envOptions);
327 GlProxyImplementation* implementation = dynamic_cast<GlProxyImplementation*>(abstraction);
328 DALI_TEST_CHECK(implementation);
329 delete implementation;
333 int UtcDaliGlImplementationMethods(void)
335 GlImplementation implementation;
336 CallAllMethods(implementation);
340 int UtcDaliGlProxyImplementationMethods(void)
342 EnvironmentOptions envOptions;
343 GlProxyImplementation implementation(envOptions);
344 CallAllMethods(implementation);