1 #ifndef DALI_INTERNAL_GLES3_IMPLEMENTATION_H
2 #define DALI_INTERNAL_GLES3_IMPLEMENTATION_H
5 * Copyright (c) 2019 Samsung Electronics Co., Ltd.
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
22 #include <GLES3/gl3.h>
25 #include <dali/internal/graphics/gles/gles-abstraction.h>
36 class Gles3Implementation : public GlesAbstraction
40 Gles3Implementation() {}
42 ~Gles3Implementation() override {}
44 void ReadBuffer( GLenum mode ) override
49 void DrawRangeElements( GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid* indices ) override
51 glDrawRangeElements( mode, start, end, count, type, indices );
54 void TexImage3D( GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid* pixels ) override
56 glTexImage3D( target, level, internalformat, width, height, depth, border, format, type, pixels );
59 void TexSubImage3D( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid* pixels ) override
61 glTexSubImage3D( target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels );
64 void CopyTexSubImage3D( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height ) override
66 glCopyTexSubImage3D( target, level, xoffset, yoffset, zoffset, x, y, width, height );
69 void CompressedTexImage3D( GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid* data ) override
71 glCompressedTexImage3D( target, level, internalformat, width, height, depth, border, imageSize, data );
74 void CompressedTexSubImage3D( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid* data ) override
76 glCompressedTexSubImage3D( target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data );
79 void GenQueries( GLsizei n, GLuint* ids ) override
81 glGenQueries( n, ids );
84 void DeleteQueries( GLsizei n, const GLuint* ids ) override
86 glDeleteQueries( n, ids );
89 GLboolean IsQuery( GLuint id ) override
91 return glIsQuery( id );
94 void BeginQuery( GLenum target, GLuint id ) override
96 glBeginQuery( target, id );
99 void EndQuery( GLenum target ) override
101 glEndQuery( target );
104 void GetQueryiv( GLenum target, GLenum pname, GLint* params ) override
106 glGetQueryiv( target, pname, params );
109 void GetQueryObjectuiv( GLuint id, GLenum pname, GLuint* params ) override
111 glGetQueryObjectuiv( id, pname, params );
114 GLboolean UnmapBuffer( GLenum target ) override
116 return glUnmapBuffer( target );
119 void GetBufferPointerv( GLenum target, GLenum pname, GLvoid** params ) override
121 glGetBufferPointerv( target, pname, params );
124 void DrawBuffers( GLsizei n, const GLenum* bufs ) override
126 glDrawBuffers( n, bufs );
129 void UniformMatrix2x3fv( GLint location, GLsizei count, GLboolean transpose, const GLfloat* value ) override
131 glUniformMatrix2x3fv( location, count, transpose, value );
134 void UniformMatrix3x2fv( GLint location, GLsizei count, GLboolean transpose, const GLfloat* value ) override
136 glUniformMatrix3x2fv( location, count, transpose, value );
139 void UniformMatrix2x4fv( GLint location, GLsizei count, GLboolean transpose, const GLfloat* value ) override
141 glUniformMatrix2x4fv( location, count, transpose, value );
144 void UniformMatrix4x2fv( GLint location, GLsizei count, GLboolean transpose, const GLfloat* value ) override
146 glUniformMatrix4x2fv( location, count, transpose, value );
149 void UniformMatrix3x4fv( GLint location, GLsizei count, GLboolean transpose, const GLfloat* value ) override
151 glUniformMatrix3x4fv( location, count, transpose, value );
154 void UniformMatrix4x3fv( GLint location, GLsizei count, GLboolean transpose, const GLfloat* value ) override
156 glUniformMatrix4x3fv( location, count, transpose, value );
159 void BlitFramebuffer( GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter ) override
161 glBlitFramebuffer( srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter );
164 void RenderbufferStorageMultisample( GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height ) override
166 glRenderbufferStorageMultisample( target, samples, internalformat, width, height );
169 void FramebufferTextureLayer( GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer ) override
171 glFramebufferTextureLayer( target, attachment, texture, level, layer );
174 GLvoid* MapBufferRange( GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access ) override
176 return glMapBufferRange( target, offset, length, access );
179 void FlushMappedBufferRange( GLenum target, GLintptr offset, GLsizeiptr length ) override
181 glFlushMappedBufferRange( target, offset, length );
184 void BindVertexArray( GLuint array ) override
186 glBindVertexArray( array );
189 void DeleteVertexArrays( GLsizei n, const GLuint* arrays ) override
191 glDeleteVertexArrays( n, arrays );
194 void GenVertexArrays( GLsizei n, GLuint* arrays ) override
196 glGenVertexArrays( n, arrays );
199 GLboolean IsVertexArray( GLuint array ) override
201 return glIsVertexArray( array );
204 void GetIntegeri_v( GLenum target, GLuint index, GLint* data ) override
206 glGetIntegeri_v( target, index, data );
209 void BeginTransformFeedback( GLenum primitiveMode ) override
211 glBeginTransformFeedback( primitiveMode );
214 void EndTransformFeedback( void ) override
216 glEndTransformFeedback();
219 void BindBufferRange( GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size ) override
221 glBindBufferRange( target, index, buffer, offset, size );
224 void BindBufferBase( GLenum target, GLuint index, GLuint buffer ) override
226 glBindBufferBase( target, index, buffer );
229 void TransformFeedbackVaryings( GLuint program, GLsizei count, const GLchar* const* varyings, GLenum bufferMode ) override
231 glTransformFeedbackVaryings( program, count, varyings, bufferMode );
234 void GetTransformFeedbackVarying( GLuint program, GLuint index, GLsizei bufSize, GLsizei* length, GLsizei* size, GLenum* type, GLchar* name ) override
236 glGetTransformFeedbackVarying( program, index, bufSize, length, size, type, name );
239 void VertexAttribIPointer( GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid* pointer ) override
241 glVertexAttribIPointer( index, size, type, stride, pointer );
244 void GetVertexAttribIiv( GLuint index, GLenum pname, GLint* params ) override
246 glGetVertexAttribIiv( index, pname, params );
249 void GetVertexAttribIuiv( GLuint index, GLenum pname, GLuint* params ) override
251 glGetVertexAttribIuiv( index, pname, params );
254 void VertexAttribI4i( GLuint index, GLint x, GLint y, GLint z, GLint w ) override
256 glVertexAttribI4i( index, x, y, z, w );
259 void VertexAttribI4ui( GLuint index, GLuint x, GLuint y, GLuint z, GLuint w ) override
261 glVertexAttribI4ui( index, x, y, z, w );
264 void VertexAttribI4iv( GLuint index, const GLint* v ) override
266 glVertexAttribI4iv( index, v );
269 void VertexAttribI4uiv( GLuint index, const GLuint* v ) override
271 glVertexAttribI4uiv( index, v );
274 void GetUniformuiv( GLuint program, GLint location, GLuint* params ) override
276 glGetUniformuiv( program, location, params );
279 GLint GetFragDataLocation( GLuint program, const GLchar *name ) override
281 return glGetFragDataLocation( program, name );
284 void Uniform1ui( GLint location, GLuint v0 ) override
286 glUniform1ui( location, v0 );
289 void Uniform2ui( GLint location, GLuint v0, GLuint v1 ) override
291 glUniform2ui( location, v0, v1 );
294 void Uniform3ui( GLint location, GLuint v0, GLuint v1, GLuint v2 ) override
296 glUniform3ui( location, v0, v1, v2 );
299 void Uniform4ui( GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3 ) override
301 glUniform4ui( location, v0, v1, v2, v3 );
304 void Uniform1uiv( GLint location, GLsizei count, const GLuint* value ) override
306 glUniform1uiv( location, count, value );
309 void Uniform2uiv( GLint location, GLsizei count, const GLuint* value ) override
311 glUniform2uiv( location, count, value );
314 void Uniform3uiv( GLint location, GLsizei count, const GLuint* value ) override
316 glUniform3uiv( location, count, value );
319 void Uniform4uiv( GLint location, GLsizei count, const GLuint* value ) override
321 glUniform4uiv( location, count, value );
324 void ClearBufferiv( GLenum buffer, GLint drawbuffer, const GLint* value ) override
326 glClearBufferiv( buffer, drawbuffer, value );
329 void ClearBufferuiv( GLenum buffer, GLint drawbuffer, const GLuint* value ) override
331 glClearBufferuiv( buffer, drawbuffer, value );
334 void ClearBufferfv( GLenum buffer, GLint drawbuffer, const GLfloat* value ) override
336 glClearBufferfv( buffer, drawbuffer, value );
339 void ClearBufferfi( GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil ) override
341 glClearBufferfi( buffer, drawbuffer, depth, stencil );
344 const GLubyte* GetStringi( GLenum name, GLuint index ) override
346 return glGetStringi( name, index );
349 void CopyBufferSubData( GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size ) override
351 glCopyBufferSubData( readTarget, writeTarget, readOffset, writeOffset, size );
354 void GetUniformIndices( GLuint program, GLsizei uniformCount, const GLchar* const* uniformNames, GLuint* uniformIndices ) override
356 glGetUniformIndices( program, uniformCount, uniformNames, uniformIndices );
359 void GetActiveUniformsiv( GLuint program, GLsizei uniformCount, const GLuint* uniformIndices, GLenum pname, GLint* params ) override
361 glGetActiveUniformsiv( program, uniformCount, uniformIndices, pname, params );
364 GLuint GetUniformBlockIndex( GLuint program, const GLchar* uniformBlockName ) override
366 return glGetUniformBlockIndex( program, uniformBlockName );
369 void GetActiveUniformBlockiv( GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint* params ) override
371 glGetActiveUniformBlockiv( program, uniformBlockIndex, pname, params );
374 void GetActiveUniformBlockName( GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei* length, GLchar* uniformBlockName ) override
376 glGetActiveUniformBlockName( program, uniformBlockIndex, bufSize, length, uniformBlockName );
379 void UniformBlockBinding( GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding ) override
381 glUniformBlockBinding( program, uniformBlockIndex, uniformBlockBinding );
384 void DrawArraysInstanced( GLenum mode, GLint first, GLsizei count, GLsizei instanceCount ) override
386 glDrawArraysInstanced( mode, first, count, instanceCount );
389 void DrawElementsInstanced( GLenum mode, GLsizei count, GLenum type, const GLvoid* indices, GLsizei instanceCount ) override
391 glDrawElementsInstanced( mode, count, type, indices, instanceCount );
394 GLsync FenceSync( GLenum condition, GLbitfield flags ) override
396 return glFenceSync( condition, flags );
399 GLboolean IsSync( GLsync sync ) override
401 return glIsSync( sync );
404 void DeleteSync( GLsync sync ) override
406 glDeleteSync( sync );
409 GLenum ClientWaitSync( GLsync sync, GLbitfield flags, GLuint64 timeout ) override
411 return glClientWaitSync( sync, flags, timeout );
414 void WaitSync( GLsync sync, GLbitfield flags, GLuint64 timeout ) override
416 glWaitSync( sync, flags, timeout );
419 void GetInteger64v( GLenum pname, GLint64* params ) override
421 glGetInteger64v( pname, params );
424 void GetSynciv( GLsync sync, GLenum pname, GLsizei bufSize, GLsizei* length, GLint* values ) override
426 glGetSynciv( sync, pname, bufSize, length, values );
429 void GetInteger64i_v( GLenum target, GLuint index, GLint64* data ) override
431 glGetInteger64i_v( target, index, data );
434 void GetBufferParameteri64v( GLenum target, GLenum pname, GLint64* params ) override
436 glGetBufferParameteri64v( target, pname, params );
439 void GenSamplers( GLsizei count, GLuint* samplers ) override
441 glGenSamplers( count, samplers );
444 void DeleteSamplers( GLsizei count, const GLuint* samplers ) override
446 glDeleteSamplers( count, samplers );
449 GLboolean IsSampler( GLuint sampler ) override
451 return glIsSampler( sampler );
454 void BindSampler( GLuint unit, GLuint sampler ) override
456 glBindSampler( unit, sampler );
459 void SamplerParameteri( GLuint sampler, GLenum pname, GLint param ) override
461 glSamplerParameteri( sampler, pname, param );
464 void SamplerParameteriv( GLuint sampler, GLenum pname, const GLint* param ) override
466 glSamplerParameteriv( sampler, pname, param );
469 void SamplerParameterf( GLuint sampler, GLenum pname, GLfloat param ) override
471 glSamplerParameterf( sampler, pname, param );
474 void SamplerParameterfv( GLuint sampler, GLenum pname, const GLfloat* param ) override
476 glSamplerParameterfv( sampler, pname, param );
479 void GetSamplerParameteriv( GLuint sampler, GLenum pname, GLint* params ) override
481 glGetSamplerParameteriv( sampler, pname, params );
484 void GetSamplerParameterfv( GLuint sampler, GLenum pname, GLfloat* params ) override
486 glGetSamplerParameterfv( sampler, pname, params );
489 void VertexAttribDivisor( GLuint index, GLuint divisor ) override
491 glVertexAttribDivisor( index, divisor );
494 void BindTransformFeedback( GLenum target, GLuint id ) override
496 glBindTransformFeedback( target, id );
499 void DeleteTransformFeedbacks( GLsizei n, const GLuint* ids ) override
501 glDeleteTransformFeedbacks( n, ids );
504 void GenTransformFeedbacks( GLsizei n, GLuint* ids ) override
506 glGenTransformFeedbacks( n, ids );
509 GLboolean IsTransformFeedback( GLuint id ) override
511 return glIsTransformFeedback( id );
514 void PauseTransformFeedback( void ) override
516 glPauseTransformFeedback();
519 void ResumeTransformFeedback( void ) override
521 glResumeTransformFeedback();
524 void GetProgramBinary( GLuint program, GLsizei bufSize, GLsizei* length, GLenum* binaryFormat, GLvoid* binary ) override
526 glGetProgramBinary( program, bufSize, length, binaryFormat, binary );
529 void ProgramBinary( GLuint program, GLenum binaryFormat, const GLvoid* binary, GLsizei length ) override
531 glProgramBinary( program, binaryFormat, binary, length );
534 void ProgramParameteri( GLuint program, GLenum pname, GLint value ) override
536 glProgramParameteri( program, pname, value );
539 void InvalidateFramebuffer( GLenum target, GLsizei numAttachments, const GLenum* attachments ) override
541 glInvalidateFramebuffer( target, numAttachments, attachments );
544 void InvalidateSubFramebuffer( GLenum target, GLsizei numAttachments, const GLenum* attachments, GLint x, GLint y, GLsizei width, GLsizei height ) override
546 glInvalidateSubFramebuffer( target, numAttachments, attachments, x, y, width, height );
549 void TexStorage2D( GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height ) override
551 glTexStorage2D( target, levels, internalformat, width, height );
554 void TexStorage3D( GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth ) override
556 glTexStorage3D( target, levels, internalformat, width, height, depth );
559 void GetInternalformativ( GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint* params ) override
561 glGetInternalformativ( target, internalformat, pname, bufSize, params );
565 } // namespace Adaptor
567 } // namespace Internal
571 #endif // DALI_INTERNAL_GLES3_IMPLEMENTATION_H