github.com/graybobo/golang.org-package-offline-cache@v0.0.0-20200626051047-6608995c132f/x/mobile/gl/work.c (about) 1 // Copyright 2015 The Go Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 // +build darwin linux 6 7 #include <stdlib.h> 8 #include "_cgo_export.h" 9 #include "work.h" 10 11 uintptr_t processFn(struct fnargs* args, char* parg) { 12 uintptr_t ret = 0; 13 switch (args->fn) { 14 case glfnUNDEFINED: 15 abort(); // bad glfn 16 break; 17 case glfnActiveTexture: 18 glActiveTexture((GLenum)args->a0); 19 break; 20 case glfnAttachShader: 21 glAttachShader((GLint)args->a0, (GLint)args->a1); 22 break; 23 case glfnBindAttribLocation: 24 glBindAttribLocation((GLint)args->a0, (GLint)args->a1, (GLchar*)args->a2); 25 break; 26 case glfnBindBuffer: 27 glBindBuffer((GLenum)args->a0, (GLuint)args->a1); 28 break; 29 case glfnBindFramebuffer: 30 glBindFramebuffer((GLenum)args->a0, (GLint)args->a1); 31 break; 32 case glfnBindRenderbuffer: 33 glBindRenderbuffer((GLenum)args->a0, (GLint)args->a1); 34 break; 35 case glfnBindTexture: 36 glBindTexture((GLenum)args->a0, (GLint)args->a1); 37 break; 38 case glfnBlendColor: 39 glBlendColor(*(GLfloat*)&args->a0, *(GLfloat*)&args->a1, *(GLfloat*)&args->a2, *(GLfloat*)&args->a3); 40 break; 41 case glfnBlendEquation: 42 glBlendEquation((GLenum)args->a0); 43 break; 44 case glfnBlendEquationSeparate: 45 glBlendEquationSeparate((GLenum)args->a0, (GLenum)args->a1); 46 break; 47 case glfnBlendFunc: 48 glBlendFunc((GLenum)args->a0, (GLenum)args->a1); 49 break; 50 case glfnBlendFuncSeparate: 51 glBlendFuncSeparate((GLenum)args->a0, (GLenum)args->a1, (GLenum)args->a2, (GLenum)args->a3); 52 break; 53 case glfnBufferData: 54 glBufferData((GLenum)args->a0, (GLsizeiptr)args->a1, (GLvoid*)parg, (GLenum)args->a2); 55 break; 56 case glfnBufferSubData: 57 glBufferSubData((GLenum)args->a0, (GLint)args->a1, (GLsizeiptr)args->a2, (GLvoid*)parg); 58 break; 59 case glfnCheckFramebufferStatus: 60 ret = glCheckFramebufferStatus((GLenum)args->a0); 61 break; 62 case glfnClear: 63 glClear((GLenum)args->a0); 64 break; 65 case glfnClearColor: 66 glClearColor(*(GLfloat*)&args->a0, *(GLfloat*)&args->a1, *(GLfloat*)&args->a2, *(GLfloat*)&args->a3); 67 break; 68 case glfnClearDepthf: 69 glClearDepthf(*(GLfloat*)&args->a0); 70 break; 71 case glfnClearStencil: 72 glClearStencil((GLint)args->a0); 73 break; 74 case glfnColorMask: 75 glColorMask((GLboolean)args->a0, (GLboolean)args->a1, (GLboolean)args->a2, (GLboolean)args->a3); 76 break; 77 case glfnCompileShader: 78 glCompileShader((GLint)args->a0); 79 break; 80 case glfnCompressedTexImage2D: 81 glCompressedTexImage2D((GLenum)args->a0, (GLint)args->a1, (GLenum)args->a2, (GLint)args->a3, (GLint)args->a4, (GLint)args->a5, (GLsizeiptr)args->a6, (GLvoid*)parg); 82 break; 83 case glfnCompressedTexSubImage2D: 84 glCompressedTexSubImage2D((GLenum)args->a0, (GLint)args->a1, (GLint)args->a2, (GLint)args->a3, (GLint)args->a4, (GLint)args->a5, (GLenum)args->a6, (GLsizeiptr)args->a7, (GLvoid*)parg); 85 break; 86 case glfnCopyTexImage2D: 87 glCopyTexImage2D((GLenum)args->a0, (GLint)args->a1, (GLenum)args->a2, (GLint)args->a3, (GLint)args->a4, (GLint)args->a5, (GLint)args->a6, (GLint)args->a7); 88 break; 89 case glfnCopyTexSubImage2D: 90 glCopyTexSubImage2D((GLenum)args->a0, (GLint)args->a1, (GLint)args->a2, (GLint)args->a3, (GLint)args->a4, (GLint)args->a5, (GLint)args->a6, (GLint)args->a7); 91 break; 92 case glfnCreateProgram: 93 ret = glCreateProgram(); 94 break; 95 case glfnCreateShader: 96 ret = glCreateShader((GLenum)args->a0); 97 break; 98 case glfnCullFace: 99 glCullFace((GLenum)args->a0); 100 break; 101 case glfnDeleteBuffer: 102 glDeleteBuffers(1, (const GLuint*)(&args->a0)); 103 break; 104 case glfnDeleteFramebuffer: 105 glDeleteFramebuffers(1, (const GLuint*)(&args->a0)); 106 break; 107 case glfnDeleteProgram: 108 glDeleteProgram((GLint)args->a0); 109 break; 110 case glfnDeleteRenderbuffer: 111 glDeleteRenderbuffers(1, (const GLuint*)(&args->a0)); 112 break; 113 case glfnDeleteShader: 114 glDeleteShader((GLint)args->a0); 115 break; 116 case glfnDeleteTexture: 117 glDeleteTextures(1, (const GLuint*)(&args->a0)); 118 break; 119 case glfnDepthFunc: 120 glDepthFunc((GLenum)args->a0); 121 break; 122 case glfnDepthMask: 123 glDepthMask((GLboolean)args->a0); 124 break; 125 case glfnDepthRangef: 126 glDepthRangef(*(GLfloat*)&args->a0, *(GLfloat*)&args->a1); 127 break; 128 case glfnDetachShader: 129 glDetachShader((GLint)args->a0, (GLint)args->a1); 130 break; 131 case glfnDisable: 132 glDisable((GLenum)args->a0); 133 break; 134 case glfnDisableVertexAttribArray: 135 glDisableVertexAttribArray((GLint)args->a0); 136 break; 137 case glfnDrawArrays: 138 glDrawArrays((GLenum)args->a0, (GLint)args->a1, (GLint)args->a2); 139 break; 140 case glfnDrawElements: 141 glDrawElements((GLenum)args->a0, (GLint)args->a1, (GLenum)args->a2, (void*)args->a3); 142 break; 143 case glfnEnable: 144 glEnable((GLenum)args->a0); 145 break; 146 case glfnEnableVertexAttribArray: 147 glEnableVertexAttribArray((GLint)args->a0); 148 break; 149 case glfnFinish: 150 glFinish(); 151 break; 152 case glfnFlush: 153 glFlush(); 154 break; 155 case glfnFramebufferRenderbuffer: 156 glFramebufferRenderbuffer((GLenum)args->a0, (GLenum)args->a1, (GLenum)args->a2, (GLint)args->a3); 157 break; 158 case glfnFramebufferTexture2D: 159 glFramebufferTexture2D((GLenum)args->a0, (GLenum)args->a1, (GLenum)args->a2, (GLint)args->a3, (GLint)args->a4); 160 break; 161 case glfnFrontFace: 162 glFrontFace((GLenum)args->a0); 163 break; 164 case glfnGenBuffer: 165 glGenBuffers(1, (GLuint*)&ret); 166 break; 167 case glfnGenFramebuffer: 168 glGenFramebuffers(1, (GLuint*)&ret); 169 break; 170 case glfnGenRenderbuffer: 171 glGenRenderbuffers(1, (GLuint*)&ret); 172 break; 173 case glfnGenTexture: 174 glGenTextures(1, (GLuint*)&ret); 175 break; 176 case glfnGenerateMipmap: 177 glGenerateMipmap((GLenum)args->a0); 178 break; 179 case glfnGetActiveAttrib: 180 glGetActiveAttrib( 181 (GLuint)args->a0, 182 (GLuint)args->a1, 183 (GLsizei)args->a2, 184 NULL, 185 (GLint*)&ret, 186 (GLenum*)args->a3, 187 (GLchar*)parg); 188 break; 189 case glfnGetActiveUniform: 190 glGetActiveUniform( 191 (GLuint)args->a0, 192 (GLuint)args->a1, 193 (GLsizei)args->a2, 194 NULL, 195 (GLint*)&ret, 196 (GLenum*)args->a3, 197 (GLchar*)parg); 198 break; 199 case glfnGetAttachedShaders: 200 glGetAttachedShaders((GLuint)args->a0, (GLsizei)args->a1, (GLsizei*)&ret, (GLuint*)parg); 201 break; 202 case glfnGetAttribLocation: 203 ret = glGetAttribLocation((GLint)args->a0, (GLchar*)args->a1); 204 break; 205 case glfnGetBooleanv: 206 glGetBooleanv((GLenum)args->a0, (GLboolean*)parg); 207 break; 208 case glfnGetBufferParameteri: 209 glGetBufferParameteriv((GLenum)args->a0, (GLenum)args->a1, (GLint*)&ret); 210 break; 211 case glfnGetFloatv: 212 glGetFloatv((GLenum)args->a0, (GLfloat*)parg); 213 break; 214 case glfnGetIntegerv: 215 glGetIntegerv((GLenum)args->a0, (GLint*)parg); 216 break; 217 case glfnGetError: 218 ret = glGetError(); 219 break; 220 case glfnGetFramebufferAttachmentParameteriv: 221 glGetFramebufferAttachmentParameteriv((GLenum)args->a0, (GLenum)args->a1, (GLenum)args->a2, (GLint*)&ret); 222 break; 223 case glfnGetProgramiv: 224 glGetProgramiv((GLint)args->a0, (GLenum)args->a1, (GLint*)&ret); 225 break; 226 case glfnGetProgramInfoLog: 227 glGetProgramInfoLog((GLuint)args->a0, (GLsizei)args->a1, 0, (GLchar*)parg); 228 break; 229 case glfnGetRenderbufferParameteriv: 230 glGetRenderbufferParameteriv((GLenum)args->a0, (GLenum)args->a1, (GLint*)&ret); 231 break; 232 case glfnGetShaderiv: 233 glGetShaderiv((GLint)args->a0, (GLenum)args->a1, (GLint*)&ret); 234 break; 235 case glfnGetShaderInfoLog: 236 glGetShaderInfoLog((GLuint)args->a0, (GLsizei)args->a1, 0, (GLchar*)parg); 237 break; 238 case glfnGetShaderPrecisionFormat: 239 glGetShaderPrecisionFormat((GLenum)args->a0, (GLenum)args->a1, (GLint*)parg, &((GLint*)parg)[2]); 240 break; 241 case glfnGetShaderSource: 242 glGetShaderSource((GLuint)args->a0, (GLsizei)args->a1, 0, (GLchar*)parg); 243 break; 244 case glfnGetString: 245 ret = (uintptr_t)glGetString((GLenum)args->a0); 246 break; 247 case glfnGetTexParameterfv: 248 glGetTexParameterfv((GLenum)args->a0, (GLenum)args->a1, (GLfloat*)parg); 249 break; 250 case glfnGetTexParameteriv: 251 glGetTexParameteriv((GLenum)args->a0, (GLenum)args->a1, (GLint*)parg); 252 break; 253 case glfnGetUniformfv: 254 glGetUniformfv((GLuint)args->a0, (GLint)args->a1, (GLfloat*)parg); 255 break; 256 case glfnGetUniformiv: 257 glGetUniformiv((GLuint)args->a0, (GLint)args->a1, (GLint*)parg); 258 break; 259 case glfnGetUniformLocation: 260 ret = glGetUniformLocation((GLint)args->a0, (GLchar*)args->a1); 261 break; 262 case glfnGetVertexAttribfv: 263 glGetVertexAttribfv((GLuint)args->a0, (GLenum)args->a1, (GLfloat*)parg); 264 break; 265 case glfnGetVertexAttribiv: 266 glGetVertexAttribiv((GLuint)args->a0, (GLenum)args->a1, (GLint*)parg); 267 break; 268 case glfnHint: 269 glHint((GLenum)args->a0, (GLenum)args->a1); 270 break; 271 case glfnIsBuffer: 272 ret = glIsBuffer((GLint)args->a0); 273 break; 274 case glfnIsEnabled: 275 ret = glIsEnabled((GLenum)args->a0); 276 break; 277 case glfnIsFramebuffer: 278 ret = glIsFramebuffer((GLint)args->a0); 279 break; 280 case glfnIsProgram: 281 ret = glIsProgram((GLint)args->a0); 282 break; 283 case glfnIsRenderbuffer: 284 ret = glIsRenderbuffer((GLint)args->a0); 285 break; 286 case glfnIsShader: 287 ret = glIsShader((GLint)args->a0); 288 break; 289 case glfnIsTexture: 290 ret = glIsTexture((GLint)args->a0); 291 break; 292 case glfnLineWidth: 293 glLineWidth(*(GLfloat*)&args->a0); 294 break; 295 case glfnLinkProgram: 296 glLinkProgram((GLint)args->a0); 297 break; 298 case glfnPixelStorei: 299 glPixelStorei((GLenum)args->a0, (GLint)args->a1); 300 break; 301 case glfnPolygonOffset: 302 glPolygonOffset(*(GLfloat*)&args->a0, *(GLfloat*)&args->a1); 303 break; 304 case glfnReadPixels: 305 glReadPixels((GLint)args->a0, (GLint)args->a1, (GLsizei)args->a2, (GLsizei)args->a3, (GLenum)args->a4, (GLenum)args->a5, (void*)parg); 306 break; 307 case glfnReleaseShaderCompiler: 308 glReleaseShaderCompiler(); 309 break; 310 case glfnRenderbufferStorage: 311 glRenderbufferStorage((GLenum)args->a0, (GLenum)args->a1, (GLint)args->a2, (GLint)args->a3); 312 break; 313 case glfnSampleCoverage: 314 glSampleCoverage(*(GLfloat*)&args->a0, (GLboolean)args->a1); 315 break; 316 case glfnScissor: 317 glScissor((GLint)args->a0, (GLint)args->a1, (GLint)args->a2, (GLint)args->a3); 318 break; 319 case glfnShaderSource: 320 #if defined(os_ios) || defined(os_osx) 321 glShaderSource((GLuint)args->a0, (GLsizei)args->a1, (const GLchar *const *)args->a2, NULL); 322 #else 323 glShaderSource((GLuint)args->a0, (GLsizei)args->a1, (const GLchar **)args->a2, NULL); 324 #endif 325 break; 326 case glfnStencilFunc: 327 glStencilFunc((GLenum)args->a0, (GLint)args->a1, (GLuint)args->a2); 328 break; 329 case glfnStencilFuncSeparate: 330 glStencilFuncSeparate((GLenum)args->a0, (GLenum)args->a1, (GLint)args->a2, (GLuint)args->a3); 331 break; 332 case glfnStencilMask: 333 glStencilMask((GLuint)args->a0); 334 break; 335 case glfnStencilMaskSeparate: 336 glStencilMaskSeparate((GLenum)args->a0, (GLuint)args->a1); 337 break; 338 case glfnStencilOp: 339 glStencilOp((GLenum)args->a0, (GLenum)args->a1, (GLenum)args->a2); 340 break; 341 case glfnStencilOpSeparate: 342 glStencilOpSeparate((GLenum)args->a0, (GLenum)args->a1, (GLenum)args->a2, (GLenum)args->a3); 343 break; 344 case glfnTexImage2D: 345 glTexImage2D( 346 (GLenum)args->a0, 347 (GLint)args->a1, 348 (GLint)args->a2, 349 (GLsizei)args->a3, 350 (GLsizei)args->a4, 351 0, // border 352 (GLenum)args->a5, 353 (GLenum)args->a6, 354 (const GLvoid*)parg); 355 break; 356 case glfnTexSubImage2D: 357 glTexSubImage2D( 358 (GLenum)args->a0, 359 (GLint)args->a1, 360 (GLint)args->a2, 361 (GLint)args->a3, 362 (GLsizei)args->a4, 363 (GLsizei)args->a5, 364 (GLenum)args->a6, 365 (GLenum)args->a7, 366 (const GLvoid*)parg); 367 break; 368 case glfnTexParameterf: 369 glTexParameterf((GLenum)args->a0, (GLenum)args->a1, *(GLfloat*)&args->a2); 370 break; 371 case glfnTexParameterfv: 372 glTexParameterfv((GLenum)args->a0, (GLenum)args->a1, (GLfloat*)parg); 373 break; 374 case glfnTexParameteri: 375 glTexParameteri((GLenum)args->a0, (GLenum)args->a1, (GLint)args->a2); 376 break; 377 case glfnTexParameteriv: 378 glTexParameteriv((GLenum)args->a0, (GLenum)args->a1, (GLint*)parg); 379 break; 380 case glfnUniform1f: 381 glUniform1f((GLint)args->a0, *(GLfloat*)&args->a1); 382 break; 383 case glfnUniform1fv: 384 glUniform1fv((GLint)args->a0, (GLsizeiptr)args->a1, (GLvoid*)parg); 385 break; 386 case glfnUniform1i: 387 glUniform1i((GLint)args->a0, (GLint)args->a1); 388 break; 389 case glfnUniform1iv: 390 glUniform1iv((GLint)args->a0, (GLsizeiptr)args->a1, (GLvoid*)parg); 391 break; 392 case glfnUniform2f: 393 glUniform2f((GLint)args->a0, *(GLfloat*)&args->a1, *(GLfloat*)&args->a2); 394 break; 395 case glfnUniform2fv: 396 glUniform2fv((GLint)args->a0, (GLsizeiptr)args->a1, (GLvoid*)parg); 397 break; 398 case glfnUniform2i: 399 glUniform2i((GLint)args->a0, (GLint)args->a1, (GLint)args->a2); 400 break; 401 case glfnUniform2iv: 402 glUniform2iv((GLint)args->a0, (GLsizeiptr)args->a1, (GLvoid*)parg); 403 break; 404 case glfnUniform3f: 405 glUniform3f((GLint)args->a0, *(GLfloat*)&args->a1, *(GLfloat*)&args->a2, *(GLfloat*)&args->a3); 406 break; 407 case glfnUniform3fv: 408 glUniform3fv((GLint)args->a0, (GLsizeiptr)args->a1, (GLvoid*)parg); 409 break; 410 case glfnUniform3i: 411 glUniform3i((GLint)args->a0, (GLint)args->a1, (GLint)args->a2, (GLint)args->a3); 412 break; 413 case glfnUniform3iv: 414 glUniform3iv((GLint)args->a0, (GLsizeiptr)args->a1, (GLvoid*)parg); 415 break; 416 case glfnUniform4f: 417 glUniform4f((GLint)args->a0, *(GLfloat*)&args->a1, *(GLfloat*)&args->a2, *(GLfloat*)&args->a3, *(GLfloat*)&args->a4); 418 break; 419 case glfnUniform4fv: 420 glUniform4fv((GLint)args->a0, (GLsizeiptr)args->a1, (GLvoid*)parg); 421 break; 422 case glfnUniform4i: 423 glUniform4i((GLint)args->a0, (GLint)args->a1, (GLint)args->a2, (GLint)args->a3, (GLint)args->a4); 424 break; 425 case glfnUniform4iv: 426 glUniform4iv((GLint)args->a0, (GLsizeiptr)args->a1, (GLvoid*)parg); 427 break; 428 case glfnUniformMatrix2fv: 429 glUniformMatrix2fv((GLint)args->a0, (GLsizeiptr)args->a1, 0, (GLvoid*)parg); 430 break; 431 case glfnUniformMatrix3fv: 432 glUniformMatrix3fv((GLint)args->a0, (GLsizeiptr)args->a1, 0, (GLvoid*)parg); 433 break; 434 case glfnUniformMatrix4fv: 435 glUniformMatrix4fv((GLint)args->a0, (GLsizeiptr)args->a1, 0, (GLvoid*)parg); 436 break; 437 case glfnUseProgram: 438 glUseProgram((GLint)args->a0); 439 break; 440 case glfnValidateProgram: 441 glValidateProgram((GLint)args->a0); 442 break; 443 case glfnVertexAttrib1f: 444 glVertexAttrib1f((GLint)args->a0, *(GLfloat*)&args->a1); 445 break; 446 case glfnVertexAttrib1fv: 447 glVertexAttrib1fv((GLint)args->a0, (GLfloat*)parg); 448 break; 449 case glfnVertexAttrib2f: 450 glVertexAttrib2f((GLint)args->a0, *(GLfloat*)&args->a1, *(GLfloat*)&args->a2); 451 break; 452 case glfnVertexAttrib2fv: 453 glVertexAttrib2fv((GLint)args->a0, (GLfloat*)parg); 454 break; 455 case glfnVertexAttrib3f: 456 glVertexAttrib3f((GLint)args->a0, *(GLfloat*)&args->a1, *(GLfloat*)&args->a2, *(GLfloat*)&args->a3); 457 break; 458 case glfnVertexAttrib3fv: 459 glVertexAttrib3fv((GLint)args->a0, (GLfloat*)parg); 460 break; 461 case glfnVertexAttrib4f: 462 glVertexAttrib4f((GLint)args->a0, *(GLfloat*)&args->a1, *(GLfloat*)&args->a2, *(GLfloat*)&args->a3, *(GLfloat*)&args->a4); 463 break; 464 case glfnVertexAttrib4fv: 465 glVertexAttrib4fv((GLint)args->a0, (GLfloat*)parg); 466 break; 467 case glfnVertexAttribPointer: 468 glVertexAttribPointer((GLuint)args->a0, (GLint)args->a1, (GLenum)args->a2, (GLboolean)args->a3, (GLsizei)args->a4, (const GLvoid*)args->a5); 469 break; 470 case glfnViewport: 471 glViewport((GLint)args->a0, (GLint)args->a1, (GLint)args->a2, (GLint)args->a3); 472 break; 473 } 474 return ret; 475 }