Select OpenGL es version automatically
[platform/core/uifw/dali-adaptor.git] / dali / internal / graphics / gles / gles-abstraction.h
1 #ifndef DALI_INTERNAL_GLES_ABSTRACTION_H
2 #define DALI_INTERNAL_GLES_ABSTRACTION_H
3
4 /*
5  * Copyright (c) 2019 Samsung Electronics Co., Ltd.
6  *
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
10  *
11  * http://www.apache.org/licenses/LICENSE-2.0
12  *
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.
18  *
19  */
20
21 namespace Dali
22 {
23
24 namespace Internal
25 {
26
27 namespace Adaptor
28 {
29
30 class GlesAbstraction
31 {
32
33 public:
34
35   virtual void ReadBuffer( GLenum mode ) = 0;
36
37   virtual void DrawRangeElements( GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid* indices ) = 0;
38
39   virtual void TexImage3D( GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid* pixels ) = 0;
40
41   virtual 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 ) = 0;
42
43   virtual void CopyTexSubImage3D( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height ) = 0;
44
45   virtual void CompressedTexImage3D( GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid* data ) = 0;
46
47   virtual 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 ) = 0;
48
49   virtual void GenQueries( GLsizei n, GLuint* ids ) = 0;
50
51   virtual void DeleteQueries( GLsizei n, const GLuint* ids ) = 0;
52
53   virtual GLboolean IsQuery( GLuint id ) = 0;
54
55   virtual void BeginQuery( GLenum target, GLuint id ) = 0;
56
57   virtual void EndQuery( GLenum target ) = 0;
58
59   virtual void GetQueryiv( GLenum target, GLenum pname, GLint* params ) = 0;
60
61   virtual void GetQueryObjectuiv( GLuint id, GLenum pname, GLuint* params ) = 0;
62
63   virtual GLboolean UnmapBuffer( GLenum target ) = 0;
64
65   virtual void GetBufferPointerv( GLenum target, GLenum pname, GLvoid** params ) = 0;
66
67   virtual void DrawBuffers( GLsizei n, const GLenum* bufs ) = 0;
68
69   virtual void UniformMatrix2x3fv( GLint location, GLsizei count, GLboolean transpose, const GLfloat* value ) = 0;
70
71   virtual void UniformMatrix3x2fv( GLint location, GLsizei count, GLboolean transpose, const GLfloat* value ) = 0;
72
73   virtual void UniformMatrix2x4fv( GLint location, GLsizei count, GLboolean transpose, const GLfloat* value ) = 0;
74
75   virtual void UniformMatrix4x2fv( GLint location, GLsizei count, GLboolean transpose, const GLfloat* value ) = 0;
76
77   virtual void UniformMatrix3x4fv( GLint location, GLsizei count, GLboolean transpose, const GLfloat* value ) = 0;
78
79   virtual void UniformMatrix4x3fv( GLint location, GLsizei count, GLboolean transpose, const GLfloat* value ) = 0;
80
81   virtual void BlitFramebuffer( GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter ) = 0;
82
83   virtual void RenderbufferStorageMultisample( GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height ) = 0;
84
85   virtual void FramebufferTextureLayer( GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer ) = 0;
86
87   virtual GLvoid* MapBufferRange( GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access ) = 0;
88
89   virtual void FlushMappedBufferRange( GLenum target, GLintptr offset, GLsizeiptr length ) = 0;
90
91   virtual void BindVertexArray( GLuint array ) = 0;
92
93   virtual void DeleteVertexArrays( GLsizei n, const GLuint* arrays ) = 0;
94
95   virtual void GenVertexArrays( GLsizei n, GLuint* arrays ) = 0;
96
97   virtual GLboolean IsVertexArray( GLuint array ) = 0;
98
99   virtual void GetIntegeri_v( GLenum target, GLuint index, GLint* data ) = 0;
100
101   virtual void BeginTransformFeedback( GLenum primitiveMode ) = 0;
102
103   virtual void EndTransformFeedback( void ) = 0;
104
105   virtual void BindBufferRange( GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size ) = 0;
106
107   virtual void BindBufferBase( GLenum target, GLuint index, GLuint buffer ) = 0;
108
109   virtual void TransformFeedbackVaryings( GLuint program, GLsizei count, const GLchar* const* varyings, GLenum bufferMode ) = 0;
110
111   virtual void GetTransformFeedbackVarying( GLuint program, GLuint index, GLsizei bufSize, GLsizei* length, GLsizei* size, GLenum* type, GLchar* name ) = 0;
112
113   virtual void VertexAttribIPointer( GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid* pointer ) = 0;
114
115   virtual void GetVertexAttribIiv( GLuint index, GLenum pname, GLint* params ) = 0;
116
117   virtual void GetVertexAttribIuiv( GLuint index, GLenum pname, GLuint* params ) = 0;
118
119   virtual void VertexAttribI4i( GLuint index, GLint x, GLint y, GLint z, GLint w ) = 0;
120
121   virtual void VertexAttribI4ui( GLuint index, GLuint x, GLuint y, GLuint z, GLuint w ) = 0;
122
123   virtual void VertexAttribI4iv( GLuint index, const GLint* v ) = 0;
124
125   virtual void VertexAttribI4uiv( GLuint index, const GLuint* v ) = 0;
126
127   virtual void GetUniformuiv( GLuint program, GLint location, GLuint* params ) = 0;
128
129   virtual GLint GetFragDataLocation( GLuint program, const GLchar *name ) = 0;
130
131   virtual void Uniform1ui( GLint location, GLuint v0 ) = 0;
132
133   virtual void Uniform2ui( GLint location, GLuint v0, GLuint v1 ) = 0;
134
135   virtual void Uniform3ui( GLint location, GLuint v0, GLuint v1, GLuint v2 ) = 0;
136
137   virtual void Uniform4ui( GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3 ) = 0;
138
139   virtual void Uniform1uiv( GLint location, GLsizei count, const GLuint* value ) = 0;
140
141   virtual void Uniform2uiv( GLint location, GLsizei count, const GLuint* value ) = 0;
142
143   virtual void Uniform3uiv( GLint location, GLsizei count, const GLuint* value ) = 0;
144
145   virtual void Uniform4uiv( GLint location, GLsizei count, const GLuint* value ) = 0;
146
147   virtual void ClearBufferiv( GLenum buffer, GLint drawbuffer, const GLint* value ) = 0;
148
149   virtual void ClearBufferuiv( GLenum buffer, GLint drawbuffer, const GLuint* value ) = 0;
150
151   virtual void ClearBufferfv( GLenum buffer, GLint drawbuffer, const GLfloat* value ) = 0;
152
153   virtual void ClearBufferfi( GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil ) = 0;
154
155   virtual const GLubyte* GetStringi( GLenum name, GLuint index ) = 0;
156
157   virtual void CopyBufferSubData( GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size ) = 0;
158
159   virtual void GetUniformIndices( GLuint program, GLsizei uniformCount, const GLchar* const* uniformNames, GLuint* uniformIndices ) = 0;
160
161   virtual void GetActiveUniformsiv( GLuint program, GLsizei uniformCount, const GLuint* uniformIndices, GLenum pname, GLint* params ) = 0;
162
163   virtual GLuint GetUniformBlockIndex( GLuint program, const GLchar* uniformBlockName ) = 0;
164
165   virtual void GetActiveUniformBlockiv( GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint* params ) = 0;
166
167   virtual void GetActiveUniformBlockName( GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei* length, GLchar* uniformBlockName ) = 0;
168
169   virtual void UniformBlockBinding( GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding ) = 0;
170
171   virtual void DrawArraysInstanced( GLenum mode, GLint first, GLsizei count, GLsizei instanceCount ) = 0;
172
173   virtual void DrawElementsInstanced( GLenum mode, GLsizei count, GLenum type, const GLvoid* indices, GLsizei instanceCount ) = 0;
174
175   virtual GLsync FenceSync( GLenum condition, GLbitfield flags ) = 0;
176
177   virtual GLboolean IsSync( GLsync sync ) = 0;
178
179   virtual void DeleteSync( GLsync sync ) = 0;
180
181   virtual GLenum ClientWaitSync( GLsync sync, GLbitfield flags, GLuint64 timeout ) = 0;
182
183   virtual void WaitSync( GLsync sync, GLbitfield flags, GLuint64 timeout ) = 0;
184
185   virtual void GetInteger64v( GLenum pname, GLint64* params ) = 0;
186
187   virtual void GetSynciv( GLsync sync, GLenum pname, GLsizei bufSize, GLsizei* length, GLint* values ) = 0;
188
189   virtual void GetInteger64i_v( GLenum target, GLuint index, GLint64* data ) = 0;
190
191   virtual void GetBufferParameteri64v( GLenum target, GLenum pname, GLint64* params ) = 0;
192
193   virtual void GenSamplers( GLsizei count, GLuint* samplers ) = 0;
194
195   virtual void DeleteSamplers( GLsizei count, const GLuint* samplers ) = 0;
196
197   virtual GLboolean IsSampler( GLuint sampler ) = 0;
198
199   virtual void BindSampler( GLuint unit, GLuint sampler ) = 0;
200
201   virtual void SamplerParameteri( GLuint sampler, GLenum pname, GLint param ) = 0;
202
203   virtual void SamplerParameteriv( GLuint sampler, GLenum pname, const GLint* param ) = 0;
204
205   virtual void SamplerParameterf( GLuint sampler, GLenum pname, GLfloat param ) = 0;
206
207   virtual void SamplerParameterfv( GLuint sampler, GLenum pname, const GLfloat* param ) = 0;
208
209   virtual void GetSamplerParameteriv( GLuint sampler, GLenum pname, GLint* params ) = 0;
210
211   virtual void GetSamplerParameterfv( GLuint sampler, GLenum pname, GLfloat* params ) = 0;
212
213   virtual void VertexAttribDivisor( GLuint index, GLuint divisor ) = 0;
214
215   virtual void BindTransformFeedback( GLenum target, GLuint id ) = 0;
216
217   virtual void DeleteTransformFeedbacks( GLsizei n, const GLuint* ids ) = 0;
218
219   virtual void GenTransformFeedbacks( GLsizei n, GLuint* ids ) = 0;
220
221   virtual GLboolean IsTransformFeedback( GLuint id ) = 0;
222
223   virtual void PauseTransformFeedback( void ) = 0;
224
225   virtual void ResumeTransformFeedback( void ) = 0;
226
227   virtual void GetProgramBinary( GLuint program, GLsizei bufSize, GLsizei* length, GLenum* binaryFormat, GLvoid* binary ) = 0;
228
229   virtual void ProgramBinary( GLuint program, GLenum binaryFormat, const GLvoid* binary, GLsizei length ) = 0;
230
231   virtual void ProgramParameteri( GLuint program, GLenum pname, GLint value ) = 0;
232
233   virtual void InvalidateFramebuffer( GLenum target, GLsizei numAttachments, const GLenum* attachments ) = 0;
234
235   virtual void InvalidateSubFramebuffer( GLenum target, GLsizei numAttachments, const GLenum* attachments, GLint x, GLint y, GLsizei width, GLsizei height ) = 0;
236
237   virtual void TexStorage2D( GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height ) = 0;
238
239   virtual void TexStorage3D( GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth ) = 0;
240
241   virtual void GetInternalformativ( GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint* params ) = 0;
242 };
243
244 } // namespace Adaptor
245
246 } // namespace Internal
247
248 } // namespace Dali
249
250 #endif // DALI_INTERNAL_GLES_ABSTRACTION_H