[dali_2.3.25] Merge branch 'devel/master'
[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) 2022 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 namespace Internal
24 {
25 namespace Adaptor
26 {
27 class GlesAbstraction
28 {
29 public:
30   /**
31    * Destructor
32    */
33   virtual ~GlesAbstraction(){};
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 FramebufferTexture2DMultisample(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples) = 0;
86
87   virtual void FramebufferTextureLayer(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer) = 0;
88
89   virtual GLvoid* MapBufferRange(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access) = 0;
90
91   virtual void FlushMappedBufferRange(GLenum target, GLintptr offset, GLsizeiptr length) = 0;
92
93   virtual void BindVertexArray(GLuint array) = 0;
94
95   virtual void DeleteVertexArrays(GLsizei n, const GLuint* arrays) = 0;
96
97   virtual void GenVertexArrays(GLsizei n, GLuint* arrays) = 0;
98
99   virtual GLboolean IsVertexArray(GLuint array) = 0;
100
101   virtual void GetIntegeri_v(GLenum target, GLuint index, GLint* data) = 0;
102
103   virtual void BeginTransformFeedback(GLenum primitiveMode) = 0;
104
105   virtual void EndTransformFeedback(void) = 0;
106
107   virtual void BindBufferRange(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size) = 0;
108
109   virtual void BindBufferBase(GLenum target, GLuint index, GLuint buffer) = 0;
110
111   virtual void TransformFeedbackVaryings(GLuint program, GLsizei count, const GLchar* const* varyings, GLenum bufferMode) = 0;
112
113   virtual void GetTransformFeedbackVarying(GLuint program, GLuint index, GLsizei bufSize, GLsizei* length, GLsizei* size, GLenum* type, GLchar* name) = 0;
114
115   virtual void VertexAttribIPointer(GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid* pointer) = 0;
116
117   virtual void GetVertexAttribIiv(GLuint index, GLenum pname, GLint* params) = 0;
118
119   virtual void GetVertexAttribIuiv(GLuint index, GLenum pname, GLuint* params) = 0;
120
121   virtual void VertexAttribI4i(GLuint index, GLint x, GLint y, GLint z, GLint w) = 0;
122
123   virtual void VertexAttribI4ui(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w) = 0;
124
125   virtual void VertexAttribI4iv(GLuint index, const GLint* v) = 0;
126
127   virtual void VertexAttribI4uiv(GLuint index, const GLuint* v) = 0;
128
129   virtual void GetUniformuiv(GLuint program, GLint location, GLuint* params) = 0;
130
131   virtual GLint GetFragDataLocation(GLuint program, const GLchar* name) = 0;
132
133   virtual void Uniform1ui(GLint location, GLuint v0) = 0;
134
135   virtual void Uniform2ui(GLint location, GLuint v0, GLuint v1) = 0;
136
137   virtual void Uniform3ui(GLint location, GLuint v0, GLuint v1, GLuint v2) = 0;
138
139   virtual void Uniform4ui(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3) = 0;
140
141   virtual void Uniform1uiv(GLint location, GLsizei count, const GLuint* value) = 0;
142
143   virtual void Uniform2uiv(GLint location, GLsizei count, const GLuint* value) = 0;
144
145   virtual void Uniform3uiv(GLint location, GLsizei count, const GLuint* value) = 0;
146
147   virtual void Uniform4uiv(GLint location, GLsizei count, const GLuint* value) = 0;
148
149   virtual void ClearBufferiv(GLenum buffer, GLint drawbuffer, const GLint* value) = 0;
150
151   virtual void ClearBufferuiv(GLenum buffer, GLint drawbuffer, const GLuint* value) = 0;
152
153   virtual void ClearBufferfv(GLenum buffer, GLint drawbuffer, const GLfloat* value) = 0;
154
155   virtual void ClearBufferfi(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil) = 0;
156
157   virtual const GLubyte* GetStringi(GLenum name, GLuint index) = 0;
158
159   virtual void CopyBufferSubData(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size) = 0;
160
161   virtual void GetUniformIndices(GLuint program, GLsizei uniformCount, const GLchar* const* uniformNames, GLuint* uniformIndices) = 0;
162
163   virtual void GetActiveUniformsiv(GLuint program, GLsizei uniformCount, const GLuint* uniformIndices, GLenum pname, GLint* params) = 0;
164
165   virtual GLuint GetUniformBlockIndex(GLuint program, const GLchar* uniformBlockName) = 0;
166
167   virtual void GetActiveUniformBlockiv(GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint* params) = 0;
168
169   virtual void GetActiveUniformBlockName(GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei* length, GLchar* uniformBlockName) = 0;
170
171   virtual void UniformBlockBinding(GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding) = 0;
172
173   virtual void DrawArraysInstanced(GLenum mode, GLint first, GLsizei count, GLsizei instanceCount) = 0;
174
175   virtual void DrawElementsInstanced(GLenum mode, GLsizei count, GLenum type, const GLvoid* indices, GLsizei instanceCount) = 0;
176
177   virtual GLsync FenceSync(GLenum condition, GLbitfield flags) = 0;
178
179   virtual GLboolean IsSync(GLsync sync) = 0;
180
181   virtual void DeleteSync(GLsync sync) = 0;
182
183   virtual GLenum ClientWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout) = 0;
184
185   virtual void WaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout) = 0;
186
187   virtual void GetInteger64v(GLenum pname, GLint64* params) = 0;
188
189   virtual void GetSynciv(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei* length, GLint* values) = 0;
190
191   virtual void GetInteger64i_v(GLenum target, GLuint index, GLint64* data) = 0;
192
193   virtual void GetBufferParameteri64v(GLenum target, GLenum pname, GLint64* params) = 0;
194
195   virtual void GenSamplers(GLsizei count, GLuint* samplers) = 0;
196
197   virtual void DeleteSamplers(GLsizei count, const GLuint* samplers) = 0;
198
199   virtual GLboolean IsSampler(GLuint sampler) = 0;
200
201   virtual void BindSampler(GLuint unit, GLuint sampler) = 0;
202
203   virtual void SamplerParameteri(GLuint sampler, GLenum pname, GLint param) = 0;
204
205   virtual void SamplerParameteriv(GLuint sampler, GLenum pname, const GLint* param) = 0;
206
207   virtual void SamplerParameterf(GLuint sampler, GLenum pname, GLfloat param) = 0;
208
209   virtual void SamplerParameterfv(GLuint sampler, GLenum pname, const GLfloat* param) = 0;
210
211   virtual void GetSamplerParameteriv(GLuint sampler, GLenum pname, GLint* params) = 0;
212
213   virtual void GetSamplerParameterfv(GLuint sampler, GLenum pname, GLfloat* params) = 0;
214
215   virtual void VertexAttribDivisor(GLuint index, GLuint divisor) = 0;
216
217   virtual void BindTransformFeedback(GLenum target, GLuint id) = 0;
218
219   virtual void DeleteTransformFeedbacks(GLsizei n, const GLuint* ids) = 0;
220
221   virtual void GenTransformFeedbacks(GLsizei n, GLuint* ids) = 0;
222
223   virtual GLboolean IsTransformFeedback(GLuint id) = 0;
224
225   virtual void PauseTransformFeedback(void) = 0;
226
227   virtual void ResumeTransformFeedback(void) = 0;
228
229   virtual void GetProgramBinary(GLuint program, GLsizei bufSize, GLsizei* length, GLenum* binaryFormat, GLvoid* binary) = 0;
230
231   virtual void ProgramBinary(GLuint program, GLenum binaryFormat, const GLvoid* binary, GLsizei length) = 0;
232
233   virtual void ProgramParameteri(GLuint program, GLenum pname, GLint value) = 0;
234
235   virtual void InvalidateFramebuffer(GLenum target, GLsizei numAttachments, const GLenum* attachments) = 0;
236
237   virtual void InvalidateSubFramebuffer(GLenum target, GLsizei numAttachments, const GLenum* attachments, GLint x, GLint y, GLsizei width, GLsizei height) = 0;
238
239   virtual void TexStorage2D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height) = 0;
240
241   virtual void TexStorage3D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth) = 0;
242
243   virtual void GetInternalformativ(GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint* params) = 0;
244
245   virtual void BlendBarrier(void) = 0;
246 };
247
248 } // namespace Adaptor
249
250 } // namespace Internal
251
252 } // namespace Dali
253
254 #endif // DALI_INTERNAL_GLES_ABSTRACTION_H