1 // GENERATED FILE - DO NOT EDIT.
2 // Generated by generate_entry_points.py using data from gl.xml.
3 //
4 // Copyright 2019 The ANGLE Project Authors. All rights reserved.
5 // Use of this source code is governed by a BSD-style license that can be
6 // found in the LICENSE file.
7 //
8 // entry_points_gl_4_2_autogen.cpp:
9 // Defines the GL 4.2 entry points.
10
11 #include "libGL/entry_points_gl_4_2_autogen.h"
12
13 #include "libANGLE/Context.h"
14 #include "libANGLE/Context.inl.h"
15 #include "libANGLE/entry_points_utils.h"
16 #include "libANGLE/gl_enum_utils_autogen.h"
17 #include "libANGLE/validationEGL.h"
18 #include "libANGLE/validationES.h"
19 #include "libANGLE/validationES1.h"
20 #include "libANGLE/validationES2.h"
21 #include "libANGLE/validationES3.h"
22 #include "libANGLE/validationES31.h"
23 #include "libANGLE/validationESEXT.h"
24 #include "libANGLE/validationGL42_autogen.h"
25 #include "libGLESv2/global_state.h"
26
27 namespace gl
28 {
BindImageTexture(GLuint unit,GLuint texture,GLint level,GLboolean layered,GLint layer,GLenum access,GLenum format)29 void GL_APIENTRY BindImageTexture(GLuint unit,
30 GLuint texture,
31 GLint level,
32 GLboolean layered,
33 GLint layer,
34 GLenum access,
35 GLenum format)
36 {
37 EVENT(
38 "(GLuint unit = %u, GLuint texture = %u, GLint level = %d, GLboolean layered = %s, GLint "
39 "layer = %d, GLenum access = %s, GLenum format = %s)",
40 unit, texture, level, GLbooleanToString(layered), layer,
41 GLenumToString(GLenumGroup::BufferAccessARB, access),
42 GLenumToString(GLenumGroup::InternalFormat, format));
43
44 Context *context = GetValidGlobalContext();
45 if (context)
46 {
47 TextureID texturePacked = FromGL<TextureID>(texture);
48 std::unique_lock<std::mutex> shareContextLock = GetShareGroupLock(context);
49 bool isCallValid = (context->skipValidation() ||
50 ValidateBindImageTexture(context, unit, texturePacked, level, layered,
51 layer, access, format));
52 if (isCallValid)
53 {
54 context->bindImageTexture(unit, texturePacked, level, layered, layer, access, format);
55 }
56 ANGLE_CAPTURE(BindImageTexture, isCallValid, context, unit, texturePacked, level, layered,
57 layer, access, format);
58 }
59 }
60
DrawArraysInstancedBaseInstance(GLenum mode,GLint first,GLsizei count,GLsizei instancecount,GLuint baseinstance)61 void GL_APIENTRY DrawArraysInstancedBaseInstance(GLenum mode,
62 GLint first,
63 GLsizei count,
64 GLsizei instancecount,
65 GLuint baseinstance)
66 {
67 EVENT(
68 "(GLenum mode = %s, GLint first = %d, GLsizei count = %d, GLsizei instancecount = %d, "
69 "GLuint baseinstance = %u)",
70 GLenumToString(GLenumGroup::PrimitiveType, mode), first, count, instancecount,
71 baseinstance);
72
73 Context *context = GetValidGlobalContext();
74 if (context)
75 {
76 PrimitiveMode modePacked = FromGL<PrimitiveMode>(mode);
77 std::unique_lock<std::mutex> shareContextLock = GetShareGroupLock(context);
78 bool isCallValid = (context->skipValidation() ||
79 ValidateDrawArraysInstancedBaseInstance(
80 context, modePacked, first, count, instancecount, baseinstance));
81 if (isCallValid)
82 {
83 context->drawArraysInstancedBaseInstance(modePacked, first, count, instancecount,
84 baseinstance);
85 }
86 ANGLE_CAPTURE(DrawArraysInstancedBaseInstance, isCallValid, context, modePacked, first,
87 count, instancecount, baseinstance);
88 }
89 }
90
DrawElementsInstancedBaseInstance(GLenum mode,GLsizei count,GLenum type,const void * indices,GLsizei instancecount,GLuint baseinstance)91 void GL_APIENTRY DrawElementsInstancedBaseInstance(GLenum mode,
92 GLsizei count,
93 GLenum type,
94 const void *indices,
95 GLsizei instancecount,
96 GLuint baseinstance)
97 {
98 EVENT(
99 "(GLenum mode = %s, GLsizei count = %d, GLenum type = %s, const void *indices = "
100 "0x%016" PRIxPTR ", GLsizei instancecount = %d, GLuint baseinstance = %u)",
101 GLenumToString(GLenumGroup::PrimitiveType, mode), count,
102 GLenumToString(GLenumGroup::PrimitiveType, type), (uintptr_t)indices, instancecount,
103 baseinstance);
104
105 Context *context = GetValidGlobalContext();
106 if (context)
107 {
108 std::unique_lock<std::mutex> shareContextLock = GetShareGroupLock(context);
109 bool isCallValid = (context->skipValidation() ||
110 ValidateDrawElementsInstancedBaseInstance(
111 context, mode, count, type, indices, instancecount, baseinstance));
112 if (isCallValid)
113 {
114 context->drawElementsInstancedBaseInstance(mode, count, type, indices, instancecount,
115 baseinstance);
116 }
117 ANGLE_CAPTURE(DrawElementsInstancedBaseInstance, isCallValid, context, mode, count, type,
118 indices, instancecount, baseinstance);
119 }
120 }
121
DrawElementsInstancedBaseVertexBaseInstance(GLenum mode,GLsizei count,GLenum type,const void * indices,GLsizei instancecount,GLint basevertex,GLuint baseinstance)122 void GL_APIENTRY DrawElementsInstancedBaseVertexBaseInstance(GLenum mode,
123 GLsizei count,
124 GLenum type,
125 const void *indices,
126 GLsizei instancecount,
127 GLint basevertex,
128 GLuint baseinstance)
129 {
130 EVENT(
131 "(GLenum mode = %s, GLsizei count = %d, GLenum type = %s, const void *indices = "
132 "0x%016" PRIxPTR
133 ", GLsizei instancecount = %d, GLint basevertex = %d, GLuint baseinstance = %u)",
134 GLenumToString(GLenumGroup::PrimitiveType, mode), count,
135 GLenumToString(GLenumGroup::PrimitiveType, type), (uintptr_t)indices, instancecount,
136 basevertex, baseinstance);
137
138 Context *context = GetValidGlobalContext();
139 if (context)
140 {
141 PrimitiveMode modePacked = FromGL<PrimitiveMode>(mode);
142 DrawElementsType typePacked = FromGL<DrawElementsType>(type);
143 std::unique_lock<std::mutex> shareContextLock = GetShareGroupLock(context);
144 bool isCallValid =
145 (context->skipValidation() || ValidateDrawElementsInstancedBaseVertexBaseInstance(
146 context, modePacked, count, typePacked, indices,
147 instancecount, basevertex, baseinstance));
148 if (isCallValid)
149 {
150 context->drawElementsInstancedBaseVertexBaseInstance(
151 modePacked, count, typePacked, indices, instancecount, basevertex, baseinstance);
152 }
153 ANGLE_CAPTURE(DrawElementsInstancedBaseVertexBaseInstance, isCallValid, context, modePacked,
154 count, typePacked, indices, instancecount, basevertex, baseinstance);
155 }
156 }
157
DrawTransformFeedbackInstanced(GLenum mode,GLuint id,GLsizei instancecount)158 void GL_APIENTRY DrawTransformFeedbackInstanced(GLenum mode, GLuint id, GLsizei instancecount)
159 {
160 EVENT("(GLenum mode = %s, GLuint id = %u, GLsizei instancecount = %d)",
161 GLenumToString(GLenumGroup::PrimitiveType, mode), id, instancecount);
162
163 Context *context = GetValidGlobalContext();
164 if (context)
165 {
166 std::unique_lock<std::mutex> shareContextLock = GetShareGroupLock(context);
167 bool isCallValid = (context->skipValidation() || ValidateDrawTransformFeedbackInstanced(
168 context, mode, id, instancecount));
169 if (isCallValid)
170 {
171 context->drawTransformFeedbackInstanced(mode, id, instancecount);
172 }
173 ANGLE_CAPTURE(DrawTransformFeedbackInstanced, isCallValid, context, mode, id,
174 instancecount);
175 }
176 }
177
DrawTransformFeedbackStreamInstanced(GLenum mode,GLuint id,GLuint stream,GLsizei instancecount)178 void GL_APIENTRY DrawTransformFeedbackStreamInstanced(GLenum mode,
179 GLuint id,
180 GLuint stream,
181 GLsizei instancecount)
182 {
183 EVENT("(GLenum mode = %s, GLuint id = %u, GLuint stream = %u, GLsizei instancecount = %d)",
184 GLenumToString(GLenumGroup::PrimitiveType, mode), id, stream, instancecount);
185
186 Context *context = GetValidGlobalContext();
187 if (context)
188 {
189 std::unique_lock<std::mutex> shareContextLock = GetShareGroupLock(context);
190 bool isCallValid =
191 (context->skipValidation() || ValidateDrawTransformFeedbackStreamInstanced(
192 context, mode, id, stream, instancecount));
193 if (isCallValid)
194 {
195 context->drawTransformFeedbackStreamInstanced(mode, id, stream, instancecount);
196 }
197 ANGLE_CAPTURE(DrawTransformFeedbackStreamInstanced, isCallValid, context, mode, id, stream,
198 instancecount);
199 }
200 }
201
GetActiveAtomicCounterBufferiv(GLuint program,GLuint bufferIndex,GLenum pname,GLint * params)202 void GL_APIENTRY GetActiveAtomicCounterBufferiv(GLuint program,
203 GLuint bufferIndex,
204 GLenum pname,
205 GLint *params)
206 {
207 EVENT(
208 "(GLuint program = %u, GLuint bufferIndex = %u, GLenum pname = %s, GLint *params = "
209 "0x%016" PRIxPTR ")",
210 program, bufferIndex, GLenumToString(GLenumGroup::AtomicCounterBufferPName, pname),
211 (uintptr_t)params);
212
213 Context *context = GetValidGlobalContext();
214 if (context)
215 {
216 std::unique_lock<std::mutex> shareContextLock = GetShareGroupLock(context);
217 bool isCallValid =
218 (context->skipValidation() ||
219 ValidateGetActiveAtomicCounterBufferiv(context, program, bufferIndex, pname, params));
220 if (isCallValid)
221 {
222 context->getActiveAtomicCounterBufferiv(program, bufferIndex, pname, params);
223 }
224 ANGLE_CAPTURE(GetActiveAtomicCounterBufferiv, isCallValid, context, program, bufferIndex,
225 pname, params);
226 }
227 }
228
GetInternalformativ(GLenum target,GLenum internalformat,GLenum pname,GLsizei bufSize,GLint * params)229 void GL_APIENTRY GetInternalformativ(GLenum target,
230 GLenum internalformat,
231 GLenum pname,
232 GLsizei bufSize,
233 GLint *params)
234 {
235 EVENT(
236 "(GLenum target = %s, GLenum internalformat = %s, GLenum pname = %s, GLsizei bufSize = %d, "
237 "GLint *params = 0x%016" PRIxPTR ")",
238 GLenumToString(GLenumGroup::TextureTarget, target),
239 GLenumToString(GLenumGroup::InternalFormat, internalformat),
240 GLenumToString(GLenumGroup::InternalFormatPName, pname), bufSize, (uintptr_t)params);
241
242 Context *context = GetValidGlobalContext();
243 if (context)
244 {
245 std::unique_lock<std::mutex> shareContextLock = GetShareGroupLock(context);
246 bool isCallValid =
247 (context->skipValidation() ||
248 ValidateGetInternalformativ(context, target, internalformat, pname, bufSize, params));
249 if (isCallValid)
250 {
251 context->getInternalformativ(target, internalformat, pname, bufSize, params);
252 }
253 ANGLE_CAPTURE(GetInternalformativ, isCallValid, context, target, internalformat, pname,
254 bufSize, params);
255 }
256 }
257
MemoryBarrier(GLbitfield barriers)258 void GL_APIENTRY MemoryBarrier(GLbitfield barriers)
259 {
260 EVENT("(GLbitfield barriers = %s)",
261 GLbitfieldToString(GLenumGroup::MemoryBarrierMask, barriers).c_str());
262
263 Context *context = GetValidGlobalContext();
264 if (context)
265 {
266 std::unique_lock<std::mutex> shareContextLock = GetShareGroupLock(context);
267 bool isCallValid = (context->skipValidation() || ValidateMemoryBarrier(context, barriers));
268 if (isCallValid)
269 {
270 context->memoryBarrier(barriers);
271 }
272 ANGLE_CAPTURE(MemoryBarrier, isCallValid, context, barriers);
273 }
274 }
275
TexStorage1D(GLenum target,GLsizei levels,GLenum internalformat,GLsizei width)276 void GL_APIENTRY TexStorage1D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width)
277 {
278 EVENT(
279 "(GLenum target = %s, GLsizei levels = %d, GLenum internalformat = %s, GLsizei width = %d)",
280 GLenumToString(GLenumGroup::TextureTarget, target), levels,
281 GLenumToString(GLenumGroup::InternalFormat, internalformat), width);
282
283 Context *context = GetValidGlobalContext();
284 if (context)
285 {
286 std::unique_lock<std::mutex> shareContextLock = GetShareGroupLock(context);
287 bool isCallValid = (context->skipValidation() ||
288 ValidateTexStorage1D(context, target, levels, internalformat, width));
289 if (isCallValid)
290 {
291 context->texStorage1D(target, levels, internalformat, width);
292 }
293 ANGLE_CAPTURE(TexStorage1D, isCallValid, context, target, levels, internalformat, width);
294 }
295 }
296
297 void GL_APIENTRY
TexStorage2D(GLenum target,GLsizei levels,GLenum internalformat,GLsizei width,GLsizei height)298 TexStorage2D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height)
299 {
300 EVENT(
301 "(GLenum target = %s, GLsizei levels = %d, GLenum internalformat = %s, GLsizei width = %d, "
302 "GLsizei height = %d)",
303 GLenumToString(GLenumGroup::TextureTarget, target), levels,
304 GLenumToString(GLenumGroup::InternalFormat, internalformat), width, height);
305
306 Context *context = GetValidGlobalContext();
307 if (context)
308 {
309 TextureType targetPacked = FromGL<TextureType>(target);
310 std::unique_lock<std::mutex> shareContextLock = GetShareGroupLock(context);
311 bool isCallValid =
312 (context->skipValidation() ||
313 ValidateTexStorage2D(context, targetPacked, levels, internalformat, width, height));
314 if (isCallValid)
315 {
316 context->texStorage2D(targetPacked, levels, internalformat, width, height);
317 }
318 ANGLE_CAPTURE(TexStorage2D, isCallValid, context, targetPacked, levels, internalformat,
319 width, height);
320 }
321 }
322
TexStorage3D(GLenum target,GLsizei levels,GLenum internalformat,GLsizei width,GLsizei height,GLsizei depth)323 void GL_APIENTRY TexStorage3D(GLenum target,
324 GLsizei levels,
325 GLenum internalformat,
326 GLsizei width,
327 GLsizei height,
328 GLsizei depth)
329 {
330 EVENT(
331 "(GLenum target = %s, GLsizei levels = %d, GLenum internalformat = %s, GLsizei width = %d, "
332 "GLsizei height = %d, GLsizei depth = %d)",
333 GLenumToString(GLenumGroup::TextureTarget, target), levels,
334 GLenumToString(GLenumGroup::InternalFormat, internalformat), width, height, depth);
335
336 Context *context = GetValidGlobalContext();
337 if (context)
338 {
339 TextureType targetPacked = FromGL<TextureType>(target);
340 std::unique_lock<std::mutex> shareContextLock = GetShareGroupLock(context);
341 bool isCallValid = (context->skipValidation() ||
342 ValidateTexStorage3D(context, targetPacked, levels, internalformat,
343 width, height, depth));
344 if (isCallValid)
345 {
346 context->texStorage3D(targetPacked, levels, internalformat, width, height, depth);
347 }
348 ANGLE_CAPTURE(TexStorage3D, isCallValid, context, targetPacked, levels, internalformat,
349 width, height, depth);
350 }
351 }
352 } // namespace gl
353