1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/gfx/skia/trunk/src/gpu/gl/iOS/GrGLCreateNativeInterface_iOS.cpp Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,157 @@ 1.4 + 1.5 +/* 1.6 + * Copyright 2011 Google Inc. 1.7 + * 1.8 + * Use of this source code is governed by a BSD-style license that can be 1.9 + * found in the LICENSE file. 1.10 + */ 1.11 + 1.12 + 1.13 +#include "gl/GrGLInterface.h" 1.14 + 1.15 +#import <OpenGLES/ES2/gl.h> 1.16 +#import <OpenGLES/ES2/glext.h> 1.17 + 1.18 +const GrGLInterface* GrGLCreateNativeInterface() { 1.19 + GrGLInterface* interface = SkNEW(GrGLInterface); 1.20 + 1.21 + GrGLInterface::Functions* functions = &interface->fFunctions; 1.22 + 1.23 + functions->fActiveTexture = glActiveTexture; 1.24 + functions->fAttachShader = glAttachShader; 1.25 + functions->fBindAttribLocation = glBindAttribLocation; 1.26 + functions->fBindBuffer = glBindBuffer; 1.27 + functions->fBindTexture = glBindTexture; 1.28 + functions->fBlendColor = glBlendColor; 1.29 + functions->fBlendFunc = glBlendFunc; 1.30 + functions->fBufferData = (GrGLBufferDataProc)glBufferData; 1.31 + functions->fBufferSubData = (GrGLBufferSubDataProc)glBufferSubData; 1.32 + functions->fClear = glClear; 1.33 + functions->fClearColor = glClearColor; 1.34 + functions->fClearStencil = glClearStencil; 1.35 + functions->fColorMask = glColorMask; 1.36 + functions->fCompileShader = glCompileShader; 1.37 + functions->fCompressedTexImage2D = glCompressedTexImage2D; 1.38 + functions->fCopyTexSubImage2D = glCopyTexSubImage2D; 1.39 + functions->fCreateProgram = glCreateProgram; 1.40 + functions->fCreateShader = glCreateShader; 1.41 + functions->fCullFace = glCullFace; 1.42 + functions->fDeleteBuffers = glDeleteBuffers; 1.43 + functions->fDeleteProgram = glDeleteProgram; 1.44 + functions->fDeleteShader = glDeleteShader; 1.45 + functions->fDeleteTextures = glDeleteTextures; 1.46 + functions->fDepthMask = glDepthMask; 1.47 + functions->fDisable = glDisable; 1.48 + functions->fDisableVertexAttribArray = glDisableVertexAttribArray; 1.49 + functions->fDrawArrays = glDrawArrays; 1.50 + functions->fDrawBuffer = NULL; 1.51 + functions->fDrawBuffers = NULL; 1.52 + functions->fDrawElements = glDrawElements; 1.53 + functions->fEnable = glEnable; 1.54 + functions->fEnableVertexAttribArray = glEnableVertexAttribArray; 1.55 + functions->fFinish = glFinish; 1.56 + functions->fFlush = glFlush; 1.57 + functions->fFrontFace = glFrontFace; 1.58 + functions->fGenBuffers = glGenBuffers; 1.59 + functions->fGenerateMipmap = glGenerateMipmap; 1.60 + functions->fGetBufferParameteriv = glGetBufferParameteriv; 1.61 + functions->fGetError = glGetError; 1.62 + functions->fGetIntegerv = glGetIntegerv; 1.63 + functions->fGetProgramInfoLog = glGetProgramInfoLog; 1.64 + functions->fGetProgramiv = glGetProgramiv; 1.65 + functions->fGetShaderInfoLog = glGetShaderInfoLog; 1.66 + functions->fGetShaderiv = glGetShaderiv; 1.67 + functions->fGetString = glGetString; 1.68 + functions->fGenTextures = glGenTextures; 1.69 + functions->fGetUniformLocation = glGetUniformLocation; 1.70 + functions->fLineWidth = glLineWidth; 1.71 + functions->fLinkProgram = glLinkProgram; 1.72 + functions->fPixelStorei = glPixelStorei; 1.73 + functions->fReadBuffer = NULL; 1.74 + functions->fReadPixels = glReadPixels; 1.75 + functions->fScissor = glScissor; 1.76 + functions->fShaderSource = glShaderSource; 1.77 + functions->fStencilFunc = glStencilFunc; 1.78 + functions->fStencilFuncSeparate = glStencilFuncSeparate; 1.79 + functions->fStencilMask = glStencilMask; 1.80 + functions->fStencilMaskSeparate = glStencilMaskSeparate; 1.81 + functions->fStencilOp = glStencilOp; 1.82 + functions->fStencilOpSeparate = glStencilOpSeparate; 1.83 + // mac uses GLenum for internalFormat param (non-standard) 1.84 + // amounts to int vs. uint. 1.85 + functions->fTexImage2D = (GrGLTexImage2DProc)glTexImage2D; 1.86 +#if GL_ARB_texture_storage 1.87 + functions->fTexStorage2D = glTexStorage2D; 1.88 +#elif GL_EXT_texture_storage 1.89 + functions->fTexStorage2D = glTexStorage2DEXT; 1.90 +#endif 1.91 +#if GL_EXT_discard_framebuffer 1.92 + functions->fDiscardFramebuffer = glDiscardFramebufferEXT; 1.93 +#endif 1.94 + functions->fTexParameteri = glTexParameteri; 1.95 + functions->fTexParameteriv = glTexParameteriv; 1.96 + functions->fTexSubImage2D = glTexSubImage2D; 1.97 + functions->fUniform1f = glUniform1f; 1.98 + functions->fUniform1i = glUniform1i; 1.99 + functions->fUniform1fv = glUniform1fv; 1.100 + functions->fUniform1iv = glUniform1iv; 1.101 + functions->fUniform2f = glUniform2f; 1.102 + functions->fUniform2i = glUniform2i; 1.103 + functions->fUniform2fv = glUniform2fv; 1.104 + functions->fUniform2iv = glUniform2iv; 1.105 + functions->fUniform3f = glUniform3f; 1.106 + functions->fUniform3i = glUniform3i; 1.107 + functions->fUniform3fv = glUniform3fv; 1.108 + functions->fUniform3iv = glUniform3iv; 1.109 + functions->fUniform4f = glUniform4f; 1.110 + functions->fUniform4i = glUniform4i; 1.111 + functions->fUniform4fv = glUniform4fv; 1.112 + functions->fUniform4iv = glUniform4iv; 1.113 + functions->fUniform4fv = glUniform4fv; 1.114 + functions->fUniformMatrix2fv = glUniformMatrix2fv; 1.115 + functions->fUniformMatrix3fv = glUniformMatrix3fv; 1.116 + functions->fUniformMatrix4fv = glUniformMatrix4fv; 1.117 + functions->fUseProgram = glUseProgram; 1.118 + functions->fVertexAttrib4fv = glVertexAttrib4fv; 1.119 + functions->fVertexAttribPointer = glVertexAttribPointer; 1.120 + functions->fViewport = glViewport; 1.121 + functions->fGenFramebuffers = glGenFramebuffers; 1.122 + functions->fGetFramebufferAttachmentParameteriv = glGetFramebufferAttachmentParameteriv; 1.123 + functions->fGetRenderbufferParameteriv = glGetRenderbufferParameteriv; 1.124 + functions->fBindFramebuffer = glBindFramebuffer; 1.125 + functions->fFramebufferTexture2D = glFramebufferTexture2D; 1.126 + functions->fCheckFramebufferStatus = glCheckFramebufferStatus; 1.127 + functions->fDeleteFramebuffers = glDeleteFramebuffers; 1.128 + functions->fRenderbufferStorage = glRenderbufferStorage; 1.129 + functions->fGenRenderbuffers = glGenRenderbuffers; 1.130 + functions->fDeleteRenderbuffers = glDeleteRenderbuffers; 1.131 + functions->fFramebufferRenderbuffer = glFramebufferRenderbuffer; 1.132 + functions->fBindRenderbuffer = glBindRenderbuffer; 1.133 + 1.134 +#if GL_OES_mapbuffer 1.135 + functions->fMapBuffer = glMapBufferOES; 1.136 + functions->fUnmapBuffer = glUnmapBufferOES; 1.137 +#endif 1.138 + 1.139 +#if GL_APPLE_framebuffer_multisample 1.140 + functions->fRenderbufferStorageMultisample = glRenderbufferStorageMultisampleAPPLE; 1.141 + functions->fResolveMultisampleFramebuffer = glResolveMultisampleFramebufferAPPLE; 1.142 +#endif 1.143 + 1.144 +#if GL_OES_vertex_array_object 1.145 + functions->fBindVertexArray = glBindVertexArrayOES; 1.146 + functions->fDeleteVertexArrays = glDeleteVertexArraysOES; 1.147 + functions->fGenVertexArrays = glGenVertexArraysOES; 1.148 +#endif 1.149 + 1.150 +#if GL_EXT_debug_marker 1.151 + functions->fInsertEventMarker = glInsertEventMarkerEXT; 1.152 + functions->fPushGroupMarker = glPushGroupMarkerEXT; 1.153 + functions->fPopGroupMarker = glPopGroupMarkerEXT; 1.154 +#endif 1.155 + 1.156 + interface->fStandard = kGLES_GrGLStandard; 1.157 + interface->fExtensions.init(kGLES_GrGLStandard, glGetString, NULL, glGetIntegerv); 1.158 + 1.159 + return interface; 1.160 +}