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