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  }