| ; Copyright (C) 2015 The Android Open Source Project |
| ; |
| ; Licensed under the Apache License, Version 2.0 (the "License"); |
| ; you may not use this file except in compliance with the License. |
| ; You may obtain a copy of the License at |
| ; |
| ; http://www.apache.org/licenses/LICENSE-2.0 |
| ; |
| ; Unless required by applicable law or agreed to in writing, software |
| ; distributed under the License is distributed on an "AS IS" BASIS, |
| ; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| ; See the License for the specific language governing permissions and |
| ; limitations under the License. |
| |
| ; This masm exposes trampoline functions for OpenGL 1.1 and WGL functions that |
| ; are expected to be exposed by OpenGL32.dll but not declared by the API files. |
| |
| ; Lazy resolve all functions, then trampoline to the resolved address |
| TRAMPOLINE macro FUNC, REAL |
| local skip |
| public FUNC |
| extern REAL:proc |
| |
| FUNC PROC |
| mov eax, resolved |
| cmp eax, 0 |
| jnz skip |
| ; Function are not resolved, resolve now... |
| |
| ; Preserve arguments stored in registers (ecx, edx, r8 and r9) |
| push rcx |
| push rdx |
| push r8 |
| push r9 |
| |
| ; give resolve() the necessary 32 byte 'shadow space', and call resolve |
| sub rsp, 28h |
| call resolve |
| add rsp, 28h |
| |
| ; Reload argument registers |
| pop r9 |
| pop r8 |
| pop rdx |
| pop rcx |
| skip: |
| mov rax, [REAL] |
| mov rax, [rax] |
| jmp rax |
| FUNC ENDP |
| endm |
| |
| extern resolve:proc |
| extern resolved:SDWORD |
| |
| .CODE |
| TRAMPOLINE glAccum, real__glAccum |
| TRAMPOLINE glAreTexturesResident, real__glAreTexturesResident |
| TRAMPOLINE glArrayElement, real__glArrayElement |
| TRAMPOLINE glBegin, real__glBegin |
| TRAMPOLINE glBitmap, real__glBitmap |
| TRAMPOLINE glCallList, real__glCallList |
| TRAMPOLINE glCallLists, real__glCallLists |
| TRAMPOLINE glClearAccum, real__glClearAccum |
| TRAMPOLINE glClearDepth, real__glClearDepth |
| TRAMPOLINE glClearIndex, real__glClearIndex |
| TRAMPOLINE glClipPlane, real__glClipPlane |
| TRAMPOLINE glColor3b, real__glColor3b |
| TRAMPOLINE glColor3bv, real__glColor3bv |
| TRAMPOLINE glColor3d, real__glColor3d |
| TRAMPOLINE glColor3dv, real__glColor3dv |
| TRAMPOLINE glColor3f, real__glColor3f |
| TRAMPOLINE glColor3fv, real__glColor3fv |
| TRAMPOLINE glColor3i, real__glColor3i |
| TRAMPOLINE glColor3iv, real__glColor3iv |
| TRAMPOLINE glColor3s, real__glColor3s |
| TRAMPOLINE glColor3sv, real__glColor3sv |
| TRAMPOLINE glColor3ub, real__glColor3ub |
| TRAMPOLINE glColor3ubv, real__glColor3ubv |
| TRAMPOLINE glColor3ui, real__glColor3ui |
| TRAMPOLINE glColor3uiv, real__glColor3uiv |
| TRAMPOLINE glColor3us, real__glColor3us |
| TRAMPOLINE glColor3usv, real__glColor3usv |
| TRAMPOLINE glColor4b, real__glColor4b |
| TRAMPOLINE glColor4bv, real__glColor4bv |
| TRAMPOLINE glColor4d, real__glColor4d |
| TRAMPOLINE glColor4dv, real__glColor4dv |
| TRAMPOLINE glColor4fv, real__glColor4fv |
| TRAMPOLINE glColor4i, real__glColor4i |
| TRAMPOLINE glColor4iv, real__glColor4iv |
| TRAMPOLINE glColor4s, real__glColor4s |
| TRAMPOLINE glColor4sv, real__glColor4sv |
| TRAMPOLINE glColor4ubv, real__glColor4ubv |
| TRAMPOLINE glColor4ui, real__glColor4ui |
| TRAMPOLINE glColor4uiv, real__glColor4uiv |
| TRAMPOLINE glColor4us, real__glColor4us |
| TRAMPOLINE glColor4usv, real__glColor4usv |
| TRAMPOLINE glColorMaterial, real__glColorMaterial |
| TRAMPOLINE glCopyPixels, real__glCopyPixels |
| TRAMPOLINE glCopyTexImage1D, real__glCopyTexImage1D |
| TRAMPOLINE glCopyTexSubImage1D, real__glCopyTexSubImage1D |
| TRAMPOLINE glDebugEntry, real__glDebugEntry |
| TRAMPOLINE glDeleteLists, real__glDeleteLists |
| TRAMPOLINE glDepthRange, real__glDepthRange |
| TRAMPOLINE glDrawBuffer, real__glDrawBuffer |
| TRAMPOLINE glDrawPixels, real__glDrawPixels |
| TRAMPOLINE glEdgeFlag, real__glEdgeFlag |
| TRAMPOLINE glEdgeFlagPointer, real__glEdgeFlagPointer |
| TRAMPOLINE glEdgeFlagv, real__glEdgeFlagv |
| TRAMPOLINE glEnd, real__glEnd |
| TRAMPOLINE glEndList, real__glEndList |
| TRAMPOLINE glEvalCoord1d, real__glEvalCoord1d |
| TRAMPOLINE glEvalCoord1dv, real__glEvalCoord1dv |
| TRAMPOLINE glEvalCoord1f, real__glEvalCoord1f |
| TRAMPOLINE glEvalCoord1fv, real__glEvalCoord1fv |
| TRAMPOLINE glEvalCoord2d, real__glEvalCoord2d |
| TRAMPOLINE glEvalCoord2dv, real__glEvalCoord2dv |
| TRAMPOLINE glEvalCoord2f, real__glEvalCoord2f |
| TRAMPOLINE glEvalCoord2fv, real__glEvalCoord2fv |
| TRAMPOLINE glEvalMesh1, real__glEvalMesh1 |
| TRAMPOLINE glEvalMesh2, real__glEvalMesh2 |
| TRAMPOLINE glEvalPoint1, real__glEvalPoint1 |
| TRAMPOLINE glEvalPoint2, real__glEvalPoint2 |
| TRAMPOLINE glFeedbackBuffer, real__glFeedbackBuffer |
| TRAMPOLINE glFogi, real__glFogi |
| TRAMPOLINE glFogiv, real__glFogiv |
| TRAMPOLINE glFrustum, real__glFrustum |
| TRAMPOLINE glGenLists, real__glGenLists |
| TRAMPOLINE glGetClipPlane, real__glGetClipPlane |
| TRAMPOLINE glGetDoublev, real__glGetDoublev |
| TRAMPOLINE glGetLightiv, real__glGetLightiv |
| TRAMPOLINE glGetMapdv, real__glGetMapdv |
| TRAMPOLINE glGetMapfv, real__glGetMapfv |
| TRAMPOLINE glGetMapiv, real__glGetMapiv |
| TRAMPOLINE glGetMaterialiv, real__glGetMaterialiv |
| TRAMPOLINE glGetPixelMapfv, real__glGetPixelMapfv |
| TRAMPOLINE glGetPixelMapuiv, real__glGetPixelMapuiv |
| TRAMPOLINE glGetPixelMapusv, real__glGetPixelMapusv |
| TRAMPOLINE glGetPolygonStipple, real__glGetPolygonStipple |
| TRAMPOLINE glGetTexGendv, real__glGetTexGendv |
| TRAMPOLINE glGetTexGenfv, real__glGetTexGenfv |
| TRAMPOLINE glGetTexGeniv, real__glGetTexGeniv |
| TRAMPOLINE glGetTexImage, real__glGetTexImage |
| TRAMPOLINE glIndexd, real__glIndexd |
| TRAMPOLINE glIndexdv, real__glIndexdv |
| TRAMPOLINE glIndexf, real__glIndexf |
| TRAMPOLINE glIndexfv, real__glIndexfv |
| TRAMPOLINE glIndexi, real__glIndexi |
| TRAMPOLINE glIndexiv, real__glIndexiv |
| TRAMPOLINE glIndexMask, real__glIndexMask |
| TRAMPOLINE glIndexPointer, real__glIndexPointer |
| TRAMPOLINE glIndexs, real__glIndexs |
| TRAMPOLINE glIndexsv, real__glIndexsv |
| TRAMPOLINE glIndexub, real__glIndexub |
| TRAMPOLINE glIndexubv, real__glIndexubv |
| TRAMPOLINE glInitNames, real__glInitNames |
| TRAMPOLINE glInterleavedArrays, real__glInterleavedArrays |
| TRAMPOLINE glIsList, real__glIsList |
| TRAMPOLINE glLighti, real__glLighti |
| TRAMPOLINE glLightiv, real__glLightiv |
| TRAMPOLINE glLightModeli, real__glLightModeli |
| TRAMPOLINE glLightModeliv, real__glLightModeliv |
| TRAMPOLINE glLineStipple, real__glLineStipple |
| TRAMPOLINE glListBase, real__glListBase |
| TRAMPOLINE glLoadMatrixd, real__glLoadMatrixd |
| TRAMPOLINE glLoadName, real__glLoadName |
| TRAMPOLINE glMap1d, real__glMap1d |
| TRAMPOLINE glMap1f, real__glMap1f |
| TRAMPOLINE glMap2d, real__glMap2d |
| TRAMPOLINE glMap2f, real__glMap2f |
| TRAMPOLINE glMapGrid1d, real__glMapGrid1d |
| TRAMPOLINE glMapGrid1f, real__glMapGrid1f |
| TRAMPOLINE glMapGrid2d, real__glMapGrid2d |
| TRAMPOLINE glMapGrid2f, real__glMapGrid2f |
| TRAMPOLINE glMateriali, real__glMateriali |
| TRAMPOLINE glMaterialiv, real__glMaterialiv |
| TRAMPOLINE GlmfBeginGlsBlock, real__GlmfBeginGlsBlock |
| TRAMPOLINE GlmfCloseMetaFile, real__GlmfCloseMetaFile |
| TRAMPOLINE GlmfEndGlsBlock, real__GlmfEndGlsBlock |
| TRAMPOLINE GlmfEndPlayback, real__GlmfEndPlayback |
| TRAMPOLINE GlmfInitPlayback, real__GlmfInitPlayback |
| TRAMPOLINE GlmfPlayGlsRecord, real__GlmfPlayGlsRecord |
| TRAMPOLINE glMultMatrixd, real__glMultMatrixd |
| TRAMPOLINE glNewList, real__glNewList |
| TRAMPOLINE glNormal3b, real__glNormal3b |
| TRAMPOLINE glNormal3bv, real__glNormal3bv |
| TRAMPOLINE glNormal3d, real__glNormal3d |
| TRAMPOLINE glNormal3dv, real__glNormal3dv |
| TRAMPOLINE glNormal3fv, real__glNormal3fv |
| TRAMPOLINE glNormal3i, real__glNormal3i |
| TRAMPOLINE glNormal3iv, real__glNormal3iv |
| TRAMPOLINE glNormal3s, real__glNormal3s |
| TRAMPOLINE glNormal3sv, real__glNormal3sv |
| TRAMPOLINE glOrtho, real__glOrtho |
| TRAMPOLINE glPassThrough, real__glPassThrough |
| TRAMPOLINE glPixelMapfv, real__glPixelMapfv |
| TRAMPOLINE glPixelMapuiv, real__glPixelMapuiv |
| TRAMPOLINE glPixelMapusv, real__glPixelMapusv |
| TRAMPOLINE glPixelStoref, real__glPixelStoref |
| TRAMPOLINE glPixelTransferf, real__glPixelTransferf |
| TRAMPOLINE glPixelTransferi, real__glPixelTransferi |
| TRAMPOLINE glPixelZoom, real__glPixelZoom |
| TRAMPOLINE glPolygonMode, real__glPolygonMode |
| TRAMPOLINE glPolygonStipple, real__glPolygonStipple |
| TRAMPOLINE glPopAttrib, real__glPopAttrib |
| TRAMPOLINE glPopClientAttrib, real__glPopClientAttrib |
| TRAMPOLINE glPopName, real__glPopName |
| TRAMPOLINE glPrioritizeTextures, real__glPrioritizeTextures |
| TRAMPOLINE glPushAttrib, real__glPushAttrib |
| TRAMPOLINE glPushClientAttrib, real__glPushClientAttrib |
| TRAMPOLINE glPushName, real__glPushName |
| TRAMPOLINE glRasterPos2d, real__glRasterPos2d |
| TRAMPOLINE glRasterPos2dv, real__glRasterPos2dv |
| TRAMPOLINE glRasterPos2f, real__glRasterPos2f |
| TRAMPOLINE glRasterPos2fv, real__glRasterPos2fv |
| TRAMPOLINE glRasterPos2i, real__glRasterPos2i |
| TRAMPOLINE glRasterPos2iv, real__glRasterPos2iv |
| TRAMPOLINE glRasterPos2s, real__glRasterPos2s |
| TRAMPOLINE glRasterPos2sv, real__glRasterPos2sv |
| TRAMPOLINE glRasterPos3d, real__glRasterPos3d |
| TRAMPOLINE glRasterPos3dv, real__glRasterPos3dv |
| TRAMPOLINE glRasterPos3f, real__glRasterPos3f |
| TRAMPOLINE glRasterPos3fv, real__glRasterPos3fv |
| TRAMPOLINE glRasterPos3i, real__glRasterPos3i |
| TRAMPOLINE glRasterPos3iv, real__glRasterPos3iv |
| TRAMPOLINE glRasterPos3s, real__glRasterPos3s |
| TRAMPOLINE glRasterPos3sv, real__glRasterPos3sv |
| TRAMPOLINE glRasterPos4d, real__glRasterPos4d |
| TRAMPOLINE glRasterPos4dv, real__glRasterPos4dv |
| TRAMPOLINE glRasterPos4f, real__glRasterPos4f |
| TRAMPOLINE glRasterPos4fv, real__glRasterPos4fv |
| TRAMPOLINE glRasterPos4i, real__glRasterPos4i |
| TRAMPOLINE glRasterPos4iv, real__glRasterPos4iv |
| TRAMPOLINE glRasterPos4s, real__glRasterPos4s |
| TRAMPOLINE glRasterPos4sv, real__glRasterPos4sv |
| TRAMPOLINE glRectd, real__glRectd |
| TRAMPOLINE glRectdv, real__glRectdv |
| TRAMPOLINE glRectf, real__glRectf |
| TRAMPOLINE glRectfv, real__glRectfv |
| TRAMPOLINE glRecti, real__glRecti |
| TRAMPOLINE glRectiv, real__glRectiv |
| TRAMPOLINE glRects, real__glRects |
| TRAMPOLINE glRectsv, real__glRectsv |
| TRAMPOLINE glRenderMode, real__glRenderMode |
| TRAMPOLINE glRotated, real__glRotated |
| TRAMPOLINE glScaled, real__glScaled |
| TRAMPOLINE glSelectBuffer, real__glSelectBuffer |
| TRAMPOLINE glTexCoord1d, real__glTexCoord1d |
| TRAMPOLINE glTexCoord1dv, real__glTexCoord1dv |
| TRAMPOLINE glTexCoord1f, real__glTexCoord1f |
| TRAMPOLINE glTexCoord1fv, real__glTexCoord1fv |
| TRAMPOLINE glTexCoord1i, real__glTexCoord1i |
| TRAMPOLINE glTexCoord1iv, real__glTexCoord1iv |
| TRAMPOLINE glTexCoord1s, real__glTexCoord1s |
| TRAMPOLINE glTexCoord1sv, real__glTexCoord1sv |
| TRAMPOLINE glTexCoord2d, real__glTexCoord2d |
| TRAMPOLINE glTexCoord2dv, real__glTexCoord2dv |
| TRAMPOLINE glTexCoord2f, real__glTexCoord2f |
| TRAMPOLINE glTexCoord2fv, real__glTexCoord2fv |
| TRAMPOLINE glTexCoord2i, real__glTexCoord2i |
| TRAMPOLINE glTexCoord2iv, real__glTexCoord2iv |
| TRAMPOLINE glTexCoord2s, real__glTexCoord2s |
| TRAMPOLINE glTexCoord2sv, real__glTexCoord2sv |
| TRAMPOLINE glTexCoord3d, real__glTexCoord3d |
| TRAMPOLINE glTexCoord3dv, real__glTexCoord3dv |
| TRAMPOLINE glTexCoord3f, real__glTexCoord3f |
| TRAMPOLINE glTexCoord3fv, real__glTexCoord3fv |
| TRAMPOLINE glTexCoord3i, real__glTexCoord3i |
| TRAMPOLINE glTexCoord3iv, real__glTexCoord3iv |
| TRAMPOLINE glTexCoord3s, real__glTexCoord3s |
| TRAMPOLINE glTexCoord3sv, real__glTexCoord3sv |
| TRAMPOLINE glTexCoord4d, real__glTexCoord4d |
| TRAMPOLINE glTexCoord4dv, real__glTexCoord4dv |
| TRAMPOLINE glTexCoord4f, real__glTexCoord4f |
| TRAMPOLINE glTexCoord4fv, real__glTexCoord4fv |
| TRAMPOLINE glTexCoord4i, real__glTexCoord4i |
| TRAMPOLINE glTexCoord4iv, real__glTexCoord4iv |
| TRAMPOLINE glTexCoord4s, real__glTexCoord4s |
| TRAMPOLINE glTexCoord4sv, real__glTexCoord4sv |
| TRAMPOLINE glTexGend, real__glTexGend |
| TRAMPOLINE glTexGendv, real__glTexGendv |
| TRAMPOLINE glTexGenf, real__glTexGenf |
| TRAMPOLINE glTexGenfv, real__glTexGenfv |
| TRAMPOLINE glTexGeni, real__glTexGeni |
| TRAMPOLINE glTexGeniv, real__glTexGeniv |
| TRAMPOLINE glTexImage1D, real__glTexImage1D |
| TRAMPOLINE glTexSubImage1D, real__glTexSubImage1D |
| TRAMPOLINE glTranslated, real__glTranslated |
| TRAMPOLINE glVertex2d, real__glVertex2d |
| TRAMPOLINE glVertex2dv, real__glVertex2dv |
| TRAMPOLINE glVertex2f, real__glVertex2f |
| TRAMPOLINE glVertex2fv, real__glVertex2fv |
| TRAMPOLINE glVertex2i, real__glVertex2i |
| TRAMPOLINE glVertex2iv, real__glVertex2iv |
| TRAMPOLINE glVertex2s, real__glVertex2s |
| TRAMPOLINE glVertex2sv, real__glVertex2sv |
| TRAMPOLINE glVertex3d, real__glVertex3d |
| TRAMPOLINE glVertex3dv, real__glVertex3dv |
| TRAMPOLINE glVertex3f, real__glVertex3f |
| TRAMPOLINE glVertex3fv, real__glVertex3fv |
| TRAMPOLINE glVertex3i, real__glVertex3i |
| TRAMPOLINE glVertex3iv, real__glVertex3iv |
| TRAMPOLINE glVertex3s, real__glVertex3s |
| TRAMPOLINE glVertex3sv, real__glVertex3sv |
| TRAMPOLINE glVertex4d, real__glVertex4d |
| TRAMPOLINE glVertex4dv, real__glVertex4dv |
| TRAMPOLINE glVertex4f, real__glVertex4f |
| TRAMPOLINE glVertex4fv, real__glVertex4fv |
| TRAMPOLINE glVertex4i, real__glVertex4i |
| TRAMPOLINE glVertex4iv, real__glVertex4iv |
| TRAMPOLINE glVertex4s, real__glVertex4s |
| TRAMPOLINE glVertex4sv, real__glVertex4sv |
| TRAMPOLINE wglChoosePixelFormat, real__wglChoosePixelFormat |
| TRAMPOLINE wglCopyContext, real__wglCopyContext |
| TRAMPOLINE wglCreateLayerContext, real__wglCreateLayerContext |
| TRAMPOLINE wglDeleteContext, real__wglDeleteContext |
| TRAMPOLINE wglDescribeLayerPlane, real__wglDescribeLayerPlane |
| TRAMPOLINE wglDescribePixelFormat, real__wglDescribePixelFormat |
| TRAMPOLINE wglGetCurrentContext, real__wglGetCurrentContext |
| TRAMPOLINE wglGetCurrentDC, real__wglGetCurrentDC |
| TRAMPOLINE wglGetDefaultProcAddress, real__wglGetDefaultProcAddress |
| TRAMPOLINE wglGetLayerPaletteEntries, real__wglGetLayerPaletteEntries |
| TRAMPOLINE wglGetPixelFormat, real__wglGetPixelFormat |
| TRAMPOLINE wglRealizeLayerPalette, real__wglRealizeLayerPalette |
| TRAMPOLINE wglSetLayerPaletteEntries, real__wglSetLayerPaletteEntries |
| TRAMPOLINE wglSetPixelFormat, real__wglSetPixelFormat |
| TRAMPOLINE wglShareLists, real__wglShareLists |
| TRAMPOLINE wglSwapLayerBuffers, real__wglSwapLayerBuffers |
| TRAMPOLINE wglSwapMultipleBuffers, real__wglSwapMultipleBuffers |
| TRAMPOLINE wglUseFontBitmapsA, real__wglUseFontBitmapsA |
| TRAMPOLINE wglUseFontBitmapsW, real__wglUseFontBitmapsW |
| TRAMPOLINE wglUseFontOutlinesA, real__wglUseFontOutlinesA |
| TRAMPOLINE wglUseFontOutlinesW, real__wglUseFontOutlinesW |
| end |