1/*-------------------------------------------------------------------------
2 * drawElements Quality Program OpenGL ES Utilities
3 * ------------------------------------------------
4 *
5 * Copyright 2014 The Android Open Source Project
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 * \file
21 * \brief Context wrapper that exposes sglr API as GL-compatible API.
22 *//*--------------------------------------------------------------------*/
23
24#include "sglrContextWrapper.hpp"
25#include "sglrContext.hpp"
26
27namespace sglr
28{
29
30ContextWrapper::ContextWrapper (void)
31 : m_curCtx(DE_NULL)
32{
33}
34
35ContextWrapper::~ContextWrapper (void)
36{
37}
38
39void ContextWrapper::setContext (Context* context)
40{
41	m_curCtx = context;
42}
43
44Context* ContextWrapper::getCurrentContext (void) const
45{
46	return m_curCtx;
47}
48
49int ContextWrapper::getWidth (void) const
50{
51	return m_curCtx->getWidth();
52}
53
54int ContextWrapper::getHeight (void) const
55{
56	return m_curCtx->getHeight();
57}
58
59void ContextWrapper::glViewport (int x, int y, int width, int height)
60{
61	m_curCtx->viewport(x, y, width, height);
62}
63
64void ContextWrapper::glActiveTexture (deUint32 texture)
65{
66	m_curCtx->activeTexture(texture);
67}
68
69void ContextWrapper::glBindTexture (deUint32 target, deUint32 texture)
70{
71	m_curCtx->bindTexture(target, texture);
72}
73
74void ContextWrapper::glGenTextures (int numTextures, deUint32* textures)
75{
76	m_curCtx->genTextures(numTextures, textures);
77}
78
79void ContextWrapper::glDeleteTextures (int numTextures, const deUint32* textures)
80{
81	m_curCtx->deleteTextures(numTextures, textures);
82}
83
84void ContextWrapper::glBindFramebuffer (deUint32 target, deUint32 framebuffer)
85{
86	m_curCtx->bindFramebuffer(target, framebuffer);
87}
88
89void ContextWrapper::glGenFramebuffers (int numFramebuffers, deUint32* framebuffers)
90{
91	m_curCtx->genFramebuffers(numFramebuffers, framebuffers);
92}
93
94void ContextWrapper::glDeleteFramebuffers (int numFramebuffers, const deUint32* framebuffers)
95{
96	m_curCtx->deleteFramebuffers(numFramebuffers, framebuffers);
97}
98
99void ContextWrapper::glBindRenderbuffer (deUint32 target, deUint32 renderbuffer)
100{
101	m_curCtx->bindRenderbuffer(target, renderbuffer);
102}
103
104void ContextWrapper::glGenRenderbuffers (int numRenderbuffers, deUint32* renderbuffers)
105{
106	m_curCtx->genRenderbuffers(numRenderbuffers, renderbuffers);
107}
108
109void ContextWrapper::glDeleteRenderbuffers (int numRenderbuffers, const deUint32* renderbuffers)
110{
111	m_curCtx->deleteRenderbuffers(numRenderbuffers, renderbuffers);
112}
113
114void ContextWrapper::glPixelStorei (deUint32 pname, int param)
115{
116	m_curCtx->pixelStorei(pname, param);
117}
118
119void ContextWrapper::glTexImage1D (deUint32 target, int level, int internalFormat, int width, int border, deUint32 format, deUint32 type, const void* data)
120{
121	m_curCtx->texImage1D(target, level, (deUint32)internalFormat, width, border, format, type, data);
122}
123
124void ContextWrapper::glTexImage2D (deUint32 target, int level, int internalFormat, int width, int height, int border, deUint32 format, deUint32 type, const void* data)
125{
126	m_curCtx->texImage2D(target, level, (deUint32)internalFormat, width, height, border, format, type, data);
127}
128
129void ContextWrapper::glTexImage3D (deUint32 target, int level, int internalFormat, int width, int height, int depth, int border, deUint32 format, deUint32 type, const void* data)
130{
131	m_curCtx->texImage3D(target, level, (deUint32)internalFormat, width, height, depth, border, format, type, data);
132}
133
134void ContextWrapper::glTexSubImage1D (deUint32 target, int level, int xoffset, int width, deUint32 format, deUint32 type, const void* data)
135{
136	m_curCtx->texSubImage1D(target, level, xoffset, width, format, type, data);
137}
138
139void ContextWrapper::glTexSubImage2D (deUint32 target, int level, int xoffset, int yoffset, int width, int height, deUint32 format, deUint32 type, const void* data)
140{
141	m_curCtx->texSubImage2D(target, level, xoffset, yoffset, width, height, format, type, data);
142}
143
144void ContextWrapper::glTexSubImage3D (deUint32 target, int level, int xoffset, int yoffset, int zoffset, int width, int height, int depth, deUint32 format, deUint32 type, const void* data)
145{
146	m_curCtx->texSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, data);
147}
148
149void ContextWrapper::glCopyTexImage1D (deUint32 target, int level, deUint32 internalFormat, int x, int y, int width, int border)
150{
151	m_curCtx->copyTexImage1D(target, level, internalFormat, x, y, width, border);
152}
153
154void ContextWrapper::glCopyTexImage2D (deUint32 target, int level, deUint32 internalFormat, int x, int y, int width, int height, int border)
155{
156	m_curCtx->copyTexImage2D(target, level, internalFormat, x, y, width, height, border);
157}
158
159void ContextWrapper::glCopyTexSubImage1D (deUint32 target, int level, int xoffset, int x, int y, int width)
160{
161	m_curCtx->copyTexSubImage1D(target, level, xoffset, x, y, width);
162}
163
164void ContextWrapper::glCopyTexSubImage2D (deUint32 target, int level, int xoffset, int yoffset, int x, int y, int width, int height)
165{
166	m_curCtx->copyTexSubImage2D(target, level, xoffset, yoffset, x, y, width, height);
167}
168
169void ContextWrapper::glTexStorage2D (deUint32 target, int levels, deUint32 internalFormat, int width, int height)
170{
171	m_curCtx->texStorage2D(target, levels, internalFormat, width, height);
172}
173
174void ContextWrapper::glTexStorage3D (deUint32 target, int levels, deUint32 internalFormat, int width, int height, int depth)
175{
176	m_curCtx->texStorage3D(target, levels, internalFormat, width, height, depth);
177}
178
179void ContextWrapper::glTexParameteri (deUint32 target, deUint32 pname, int value)
180{
181	m_curCtx->texParameteri(target, pname, value);
182}
183
184void ContextWrapper::glUseProgram (deUint32 program)
185{
186	m_curCtx->useProgram(program);
187}
188
189void ContextWrapper::glFramebufferTexture2D (deUint32 target, deUint32 attachment, deUint32 textarget, deUint32 texture, int level)
190{
191	m_curCtx->framebufferTexture2D(target, attachment, textarget, texture, level);
192}
193
194void ContextWrapper::glFramebufferTextureLayer (deUint32 target, deUint32 attachment, deUint32 texture, int level, int layer)
195{
196	m_curCtx->framebufferTextureLayer(target, attachment, texture, level, layer);
197}
198
199void ContextWrapper::glFramebufferRenderbuffer (deUint32 target, deUint32 attachment, deUint32 renderbuffertarget, deUint32 renderbuffer)
200{
201	m_curCtx->framebufferRenderbuffer(target, attachment, renderbuffertarget, renderbuffer);
202}
203
204deUint32 ContextWrapper::glCheckFramebufferStatus (deUint32 target)
205{
206	return m_curCtx->checkFramebufferStatus(target);
207}
208
209void ContextWrapper::glGetFramebufferAttachmentParameteriv (deUint32 target, deUint32 attachment, deUint32 pname, int* params)
210{
211	m_curCtx->getFramebufferAttachmentParameteriv(target, attachment, pname, params);
212}
213
214void ContextWrapper::glRenderbufferStorage (deUint32 target, deUint32 internalformat, int width, int height)
215{
216	m_curCtx->renderbufferStorage(target, internalformat, width, height);
217}
218
219void ContextWrapper::glRenderbufferStorageMultisample (deUint32 target, int samples, deUint32 internalformat, int width, int height)
220{
221	m_curCtx->renderbufferStorageMultisample(target, samples, internalformat, width, height);
222}
223
224void ContextWrapper::glBindBuffer (deUint32 target, deUint32 buffer)
225{
226	m_curCtx->bindBuffer(target, buffer);
227}
228
229void ContextWrapper::glGenBuffers (int n, deUint32* buffers)
230{
231	m_curCtx->genBuffers(n, buffers);
232}
233
234void ContextWrapper::glDeleteBuffers (int n, const deUint32* buffers)
235{
236	m_curCtx->deleteBuffers(n, buffers);
237}
238
239void ContextWrapper::glBufferData (deUint32 target, deIntptr size, const void* data, deUint32 usage)
240{
241	m_curCtx->bufferData(target, size, data, usage);
242}
243
244void ContextWrapper::glBufferSubData (deUint32 target, deIntptr offset, deIntptr size, const void* data)
245{
246	m_curCtx->bufferSubData(target, offset, size, data);
247}
248
249void ContextWrapper::glClearColor (float red, float green, float blue, float alpha)
250{
251	m_curCtx->clearColor(red, green, blue, alpha);
252}
253
254void ContextWrapper::glClearDepthf (float depth)
255{
256	m_curCtx->clearDepthf(depth);
257}
258
259void ContextWrapper::glClearStencil (int stencil)
260{
261	m_curCtx->clearStencil(stencil);
262}
263
264void ContextWrapper::glClear (deUint32 buffers)
265{
266	m_curCtx->clear(buffers);
267}
268
269void ContextWrapper::glClearBufferiv (deUint32 buffer, int drawbuffer, const int* value)
270{
271	m_curCtx->clearBufferiv(buffer, drawbuffer, value);
272}
273
274void ContextWrapper::glClearBufferfv (deUint32 buffer, int drawbuffer, const float* value)
275{
276	m_curCtx->clearBufferfv(buffer, drawbuffer, value);
277}
278
279void ContextWrapper::glClearBufferuiv (deUint32 buffer, int drawbuffer, const deUint32* value)
280{
281	m_curCtx->clearBufferuiv(buffer, drawbuffer, value);
282}
283
284void ContextWrapper::glClearBufferfi (deUint32 buffer, int drawbuffer, float depth, int stencil)
285{
286	m_curCtx->clearBufferfi(buffer, drawbuffer, depth, stencil);
287}
288
289void ContextWrapper::glScissor (int x, int y, int width, int height)
290{
291	m_curCtx->scissor(x, y, width, height);
292}
293
294void ContextWrapper::glEnable (deUint32 cap)
295{
296	m_curCtx->enable(cap);
297}
298
299void ContextWrapper::glDisable (deUint32 cap)
300{
301	m_curCtx->disable(cap);
302}
303
304void ContextWrapper::glStencilFunc (deUint32 func, int ref, deUint32 mask)
305{
306	m_curCtx->stencilFunc(func, ref, mask);
307}
308
309void ContextWrapper::glStencilOp (deUint32 sfail, deUint32 dpfail, deUint32 dppass)
310{
311	m_curCtx->stencilOp(sfail, dpfail, dppass);
312}
313
314void ContextWrapper::glDepthFunc (deUint32 func)
315{
316	m_curCtx->depthFunc(func);
317}
318
319void ContextWrapper::glBlendEquation (deUint32 mode)
320{
321	m_curCtx->blendEquation(mode);
322}
323
324void ContextWrapper::glBlendEquationSeparate (deUint32 modeRGB, deUint32 modeAlpha)
325{
326	m_curCtx->blendEquationSeparate(modeRGB, modeAlpha);
327}
328
329void ContextWrapper::glBlendFunc (deUint32 src, deUint32 dst)
330{
331	m_curCtx->blendFunc(src, dst);
332}
333
334void ContextWrapper::glBlendFuncSeparate (deUint32 srcRGB, deUint32 dstRGB, deUint32 srcAlpha, deUint32 dstAlpha)
335{
336	m_curCtx->blendFuncSeparate(srcRGB, dstRGB, srcAlpha, dstAlpha);
337}
338
339void ContextWrapper::glBlendColor (float red, float green, float blue, float alpha)
340{
341	m_curCtx->blendColor(red, green, blue, alpha);
342}
343
344void ContextWrapper::glColorMask (deBool r, deBool g, deBool b, deBool a)
345{
346	m_curCtx->colorMask(r, g, b, a);
347}
348
349void ContextWrapper::glDepthMask (deBool mask)
350{
351	m_curCtx->depthMask(mask);
352}
353
354void ContextWrapper::glStencilMask (deUint32 mask)
355{
356	m_curCtx->stencilMask(mask);
357}
358
359void ContextWrapper::glBlitFramebuffer (int srcX0, int srcY0, int srcX1, int srcY1, int dstX0, int dstY0, int dstX1, int dstY1, deUint32 mask, deUint32 filter)
360{
361	m_curCtx->blitFramebuffer(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter);
362}
363
364void ContextWrapper::glInvalidateSubFramebuffer (deUint32 target, int numAttachments, const deUint32* attachments, int x, int y, int width, int height)
365{
366	m_curCtx->invalidateSubFramebuffer(target, numAttachments, attachments, x, y, width, height);
367}
368
369void ContextWrapper::glInvalidateFramebuffer (deUint32 target, int numAttachments, const deUint32* attachments)
370{
371	m_curCtx->invalidateFramebuffer(target, numAttachments, attachments);
372}
373
374void ContextWrapper::glReadPixels (int x, int y, int width, int height, deUint32 format, deUint32 type, void* data)
375{
376	m_curCtx->readPixels(x, y, width, height, format, type, data);
377}
378
379deUint32 ContextWrapper::glGetError (void)
380{
381	return m_curCtx->getError();
382}
383
384void ContextWrapper::glGetIntegerv (deUint32 pname, int* params)
385{
386	m_curCtx->getIntegerv(pname, params);
387}
388
389} // sglr
390