/* #include "gpu/GLES2/gl2.h" #include "gpu/GLES2/gl2ext.h" */ void GrGLSetDefaultGLInterface() { static GrGLInterface cmd_buffer_interface = { kES2_GrGLBinding, glActiveTexture, glAttachShader, glBindAttribLocation, glBindBuffer, glBindTexture, glBlendColor, glBlendFunc, glBufferData, glBufferSubData, glClear, glClearColor, glClearStencil, NULL, // glClientActiveTexture NULL, // glColor4ub glColorMask, NULL, // glColorPointer glCompileShader, glCompressedTexImage2D, glCreateProgram, glCreateShader, glCullFace, glDeleteBuffers, glDeleteProgram, glDeleteShader, glDeleteTextures, glDepthMask, glDisable, NULL, // glDisableClientState glDisableVertexAttribArray, glDrawArrays, glDrawElements, glEnable, NULL, // glEnableClientState glEnableVertexAttribArray, glFrontFace, glGenBuffers, glGenTextures, glGetBufferParameteriv, glGetError, glGetIntegerv, glGetProgramInfoLog, glGetProgramiv, glGetShaderInfoLog, glGetShaderiv, glGetString, glGetUniformLocation, glLineWidth, glLinkProgram, NULL, // glLoadMatrixf NULL, // glMatrixMode glPixelStorei, NULL, // glPointSize glReadPixels, glScissor, NULL, // glShadeModel glShaderSource, glStencilFunc, glStencilFuncSeparate, glStencilMask, glStencilMaskSeparate, glStencilOp, glStencilOpSeparate, NULL, // glTexCoordPointer NULL, // glTexEnvi glTexImage2D, glTexParameteri, glTexSubImage2D, glUniform1f, glUniform1i, glUniform1fv, glUniform1iv, glUniform2f, glUniform2i, glUniform2fv, glUniform2iv, glUniform3f, glUniform3i, glUniform3fv, glUniform3iv, glUniform4f, glUniform4i, glUniform4fv, glUniform4iv, glUniformMatrix2fv, glUniformMatrix3fv, glUniformMatrix4fv, glUseProgram, glVertexAttrib4fv, glVertexAttribPointer, NULL, // glVertexPointer glViewport, glBindFramebuffer, glBindRenderbuffer, glCheckFramebufferStatus, glDeleteFramebuffers, glDeleteRenderbuffers, glFramebufferRenderbuffer, glFramebufferTexture2D, glGenFramebuffers, glGenRenderbuffers, glRenderbufferStorage, NULL, // glRenderbufferStorageMultisampleEXT, NULL, // glBlitFramebufferEXT, NULL, // glResolveMultisampleFramebuffer glMapBufferOES, glUnmapBufferOES, NULL, GrGLInterface::kStaticInitEndGuard }; static bool host_StubGL_initialized = false; if (!host_StubGL_initialized) { GrGLSetGLInterface(&cmd_buffer_interface); host_StubGL_initialized = true; } }
void GrGLSetDefaultGLInterface() { static GrGLInterface gDefaultInterface; static bool gDefaultInterfaceInit; if (!gDefaultInterfaceInit) { gDefaultInterface.fNPOTRenderTargetSupport = kProbe_GrGLCapability; gDefaultInterface.fMinRenderTargetHeight = kProbe_GrGLCapability; gDefaultInterface.fMinRenderTargetWidth = kProbe_GrGLCapability; gDefaultInterface.fActiveTexture = glActiveTexture; gDefaultInterface.fAttachShader = glAttachShader; gDefaultInterface.fBindAttribLocation = glBindAttribLocation; gDefaultInterface.fBindBuffer = glBindBuffer; gDefaultInterface.fBindTexture = glBindTexture; gDefaultInterface.fBlendColor = glBlendColor; gDefaultInterface.fBlendFunc = glBlendFunc; gDefaultInterface.fBufferData = glBufferData; gDefaultInterface.fBufferSubData = glBufferSubData; gDefaultInterface.fClear = glClear; gDefaultInterface.fClearColor = glClearColor; gDefaultInterface.fClearStencil = glClearStencil; gDefaultInterface.fClientActiveTexture = glClientActiveTexture; gDefaultInterface.fColorMask = glColorMask; gDefaultInterface.fColorPointer = glColorPointer; gDefaultInterface.fColor4ub = glColor4ub; gDefaultInterface.fCompileShader = glCompileShader; gDefaultInterface.fCompressedTexImage2D = glCompressedTexImage2D; gDefaultInterface.fCreateProgram = glCreateProgram; gDefaultInterface.fCreateShader = glCreateShader; gDefaultInterface.fCullFace = glCullFace; gDefaultInterface.fDeleteBuffers = glDeleteBuffers; gDefaultInterface.fDeleteProgram = glDeleteProgram; gDefaultInterface.fDeleteShader = glDeleteShader; gDefaultInterface.fDeleteTextures = glDeleteTextures; gDefaultInterface.fDepthMask = glDepthMask; gDefaultInterface.fDisable = glDisable; gDefaultInterface.fDisableClientState = glDisableClientState; gDefaultInterface.fDisableVertexAttribArray = glDisableVertexAttribArray; gDefaultInterface.fDrawArrays = glDrawArrays; gDefaultInterface.fDrawElements = glDrawElements; gDefaultInterface.fEnable = glEnable; gDefaultInterface.fEnableClientState = glEnableClientState; gDefaultInterface.fEnableVertexAttribArray = glEnableVertexAttribArray; gDefaultInterface.fFrontFace = glFrontFace; gDefaultInterface.fGenBuffers = glGenBuffers; gDefaultInterface.fGetBufferParameteriv = glGetBufferParameteriv; gDefaultInterface.fGetError = glGetError; gDefaultInterface.fGetIntegerv = glGetIntegerv; gDefaultInterface.fGetProgramInfoLog = glGetProgramInfoLog; gDefaultInterface.fGetProgramiv = glGetProgramiv; gDefaultInterface.fGetShaderInfoLog = glGetShaderInfoLog; gDefaultInterface.fGetShaderiv = glGetShaderiv; gDefaultInterface.fGetString = glGetString; gDefaultInterface.fGenTextures = glGenTextures; gDefaultInterface.fGetUniformLocation = glGetUniformLocation; gDefaultInterface.fLineWidth = glLineWidth; gDefaultInterface.fLinkProgram = glLinkProgram; gDefaultInterface.fLoadMatrixf = glLoadMatrixf; gDefaultInterface.fMapBuffer = glMapBuffer; gDefaultInterface.fMatrixMode = glMatrixMode; gDefaultInterface.fPointSize = glPointSize; gDefaultInterface.fPixelStorei = glPixelStorei; gDefaultInterface.fReadPixels = glReadPixels; gDefaultInterface.fScissor = glScissor; gDefaultInterface.fShadeModel = glShadeModel; gDefaultInterface.fShaderSource = glShaderSource; gDefaultInterface.fStencilFunc = glStencilFunc; gDefaultInterface.fStencilFuncSeparate = glStencilFuncSeparate; gDefaultInterface.fStencilMask = glStencilMask; gDefaultInterface.fStencilMaskSeparate = glStencilMaskSeparate; gDefaultInterface.fStencilOp = glStencilOp; gDefaultInterface.fStencilOpSeparate = glStencilOpSeparate; gDefaultInterface.fTexCoordPointer = glTexCoordPointer; gDefaultInterface.fTexEnvi = glTexEnvi; // mac uses GLenum for internalFormat param (non-standard) // amounts to int vs. uint. gDefaultInterface.fTexImage2D = (GrGLTexImage2DProc)glTexImage2D; gDefaultInterface.fTexParameteri = glTexParameteri; gDefaultInterface.fTexSubImage2D = glTexSubImage2D; gDefaultInterface.fUniform1f = glUniform1f; gDefaultInterface.fUniform1i = glUniform1i; gDefaultInterface.fUniform1fv = glUniform1fv; gDefaultInterface.fUniform1iv = glUniform1iv; gDefaultInterface.fUniform2f = glUniform2f; gDefaultInterface.fUniform2i = glUniform2i; gDefaultInterface.fUniform2fv = glUniform2fv; gDefaultInterface.fUniform2iv = glUniform2iv; gDefaultInterface.fUniform3f = glUniform3f; gDefaultInterface.fUniform3i = glUniform3i; gDefaultInterface.fUniform3fv = glUniform3fv; gDefaultInterface.fUniform3iv = glUniform3iv; gDefaultInterface.fUniform4f = glUniform4f; gDefaultInterface.fUniform4i = glUniform4i; gDefaultInterface.fUniform4fv = glUniform4fv; gDefaultInterface.fUniform4iv = glUniform4iv; gDefaultInterface.fUniform4fv = glUniform4fv; gDefaultInterface.fUniformMatrix2fv = glUniformMatrix2fv; gDefaultInterface.fUniformMatrix3fv = glUniformMatrix3fv; gDefaultInterface.fUniformMatrix4fv = glUniformMatrix4fv; gDefaultInterface.fUnmapBuffer = glUnmapBuffer; gDefaultInterface.fUseProgram = glUseProgram; gDefaultInterface.fVertexAttrib4fv = glVertexAttrib4fv; gDefaultInterface.fVertexAttribPointer = glVertexAttribPointer; gDefaultInterface.fVertexPointer = glVertexPointer; gDefaultInterface.fViewport = glViewport; #if GL_ARB_framebuffer_object gDefaultInterface.fGenFramebuffers = glGenFramebuffers; gDefaultInterface.fBindFramebuffer = glBindFramebuffer; gDefaultInterface.fFramebufferTexture2D = glFramebufferTexture2D; gDefaultInterface.fCheckFramebufferStatus = glCheckFramebufferStatus; gDefaultInterface.fDeleteFramebuffers = glDeleteFramebuffers; gDefaultInterface.fRenderbufferStorage = glRenderbufferStorage; gDefaultInterface.fGenRenderbuffers = glGenRenderbuffers; gDefaultInterface.fDeleteRenderbuffers = glDeleteRenderbuffers; gDefaultInterface.fFramebufferRenderbuffer = glFramebufferRenderbuffer; gDefaultInterface.fBindRenderbuffer = glBindRenderbuffer; gDefaultInterface.fRenderbufferStorageMultisample = glRenderbufferStorageMultisample; gDefaultInterface.fBlitFramebuffer = glBlitFramebuffer; #elif GL_EXT_framebuffer_object gDefaultInterface.fGenFramebuffers = glGenFramebuffersEXT; gDefaultInterface.fBindFramebuffer = glBindFramebufferEXT; gDefaultInterface.fFramebufferTexture2D = glFramebufferTexture2DEXT; gDefaultInterface.fCheckFramebufferStatus = glCheckFramebufferStatusEXT; gDefaultInterface.fDeleteFramebuffers = glDeleteFramebuffersEXT; gDefaultInterface.fRenderbufferStorage = glRenderbufferStorageEXT; gDefaultInterface.fGenRenderbuffers = glGenRenderbuffersEXT; gDefaultInterface.fDeleteRenderbuffers = glDeleteRenderbuffers; gDefaultInterface.fFramebufferRenderbuffer = glFramebufferRenderbufferEXT; gDefaultInterface.fBindRenderbuffer = glBindRenderbufferEXT; #if GL_EXT_framebuffer_multisample gDefaultInterface.fRenderbufferStorageMultisample = glRenderbufferStorageMultisampleEXT; #endif #if GL_EXT_framebuffer_blit gDefaultInterface.fBlitFramebuffer = glBlitFramebufferEXT; #endif #endif gDefaultInterface.fBindFragDataLocationIndexed = NULL; gDefaultInterface.fBindingsExported = kDesktop_GrGLBinding; gDefaultInterfaceInit = true; } GrGLSetGLInterface(&gDefaultInterface); }
void GrGLSetDefaultGLInterface() { static GrGLInterface gDefaultInterface; static bool gDefaultInterfaceInit; if (!gDefaultInterfaceInit && NULL != OSMesaGetCurrentContext()) { int major, minor; const char* versionString = (const char*) glGetString(GL_VERSION); const char* extString = (const char*) glGetString(GL_EXTENSIONS); gl_version_from_string(&major, &minor, versionString); if (major == 1 && minor < 5) { // We must have array and element_array buffer objects. return; } gDefaultInterface.fActiveTexture = glActiveTexture; GR_GL_GET_PROC(AttachShader); GR_GL_GET_PROC(BindAttribLocation); GR_GL_GET_PROC(BindBuffer); gDefaultInterface.fBindTexture = glBindTexture; gDefaultInterface.fBlendColor = glBlendColor; gDefaultInterface.fBlendFunc = glBlendFunc; GR_GL_GET_PROC(BufferData); GR_GL_GET_PROC(BufferSubData); gDefaultInterface.fClear = glClear; gDefaultInterface.fClearColor = glClearColor; gDefaultInterface.fClearStencil = glClearStencil; gDefaultInterface.fClientActiveTexture = glClientActiveTexture; gDefaultInterface.fColorMask = glColorMask; gDefaultInterface.fColorPointer = glColorPointer; gDefaultInterface.fColor4ub = glColor4ub; GR_GL_GET_PROC(CompileShader); gDefaultInterface.fCompressedTexImage2D = glCompressedTexImage2D; GR_GL_GET_PROC(CreateProgram); GR_GL_GET_PROC(CreateShader); gDefaultInterface.fCullFace = glCullFace; GR_GL_GET_PROC(DeleteBuffers); GR_GL_GET_PROC(DeleteProgram); GR_GL_GET_PROC(DeleteShader); gDefaultInterface.fDeleteTextures = glDeleteTextures; gDefaultInterface.fDepthMask = glDepthMask; gDefaultInterface.fDisable = glDisable; gDefaultInterface.fDisableClientState = glDisableClientState; GR_GL_GET_PROC(DisableVertexAttribArray); gDefaultInterface.fDrawArrays = glDrawArrays; gDefaultInterface.fDrawElements = glDrawElements; gDefaultInterface.fEnable = glEnable; gDefaultInterface.fEnableClientState = glEnableClientState; GR_GL_GET_PROC(EnableVertexAttribArray); gDefaultInterface.fFrontFace = glFrontFace; GR_GL_GET_PROC(GenBuffers); GR_GL_GET_PROC(GetBufferParameteriv); gDefaultInterface.fGetError = glGetError; gDefaultInterface.fGetIntegerv = glGetIntegerv; GR_GL_GET_PROC(GetProgramInfoLog); GR_GL_GET_PROC(GetProgramiv); GR_GL_GET_PROC(GetShaderInfoLog); GR_GL_GET_PROC(GetShaderiv); gDefaultInterface.fGetString = glGetString; gDefaultInterface.fGenTextures = glGenTextures; GR_GL_GET_PROC(GetUniformLocation); gDefaultInterface.fLineWidth = glLineWidth; GR_GL_GET_PROC(LinkProgram); gDefaultInterface.fLoadMatrixf = glLoadMatrixf; GR_GL_GET_PROC(MapBuffer); gDefaultInterface.fMatrixMode = glMatrixMode; gDefaultInterface.fPointSize = glPointSize; gDefaultInterface.fPixelStorei = glPixelStorei; gDefaultInterface.fReadPixels = glReadPixels; gDefaultInterface.fScissor = glScissor; gDefaultInterface.fShadeModel = glShadeModel; GR_GL_GET_PROC(ShaderSource); gDefaultInterface.fStencilFunc = glStencilFunc; GR_GL_GET_PROC(StencilFuncSeparate); gDefaultInterface.fStencilMask = glStencilMask; GR_GL_GET_PROC(StencilMaskSeparate); gDefaultInterface.fStencilOp = glStencilOp; GR_GL_GET_PROC(StencilOpSeparate); gDefaultInterface.fTexCoordPointer = glTexCoordPointer; gDefaultInterface.fTexEnvi = glTexEnvi; //OSMesa on Mac's glTexImage2D takes a GLenum for internalFormat rather than a GLint. gDefaultInterface.fTexImage2D = reinterpret_cast<GrGLTexImage2DProc>(glTexImage2D); gDefaultInterface.fTexParameteri = glTexParameteri; gDefaultInterface.fTexSubImage2D = glTexSubImage2D; GR_GL_GET_PROC(Uniform1f); GR_GL_GET_PROC(Uniform1i); GR_GL_GET_PROC(Uniform1fv); GR_GL_GET_PROC(Uniform1iv); GR_GL_GET_PROC(Uniform2f); GR_GL_GET_PROC(Uniform2i); GR_GL_GET_PROC(Uniform2fv); GR_GL_GET_PROC(Uniform2iv); GR_GL_GET_PROC(Uniform3f); GR_GL_GET_PROC(Uniform3i); GR_GL_GET_PROC(Uniform3fv); GR_GL_GET_PROC(Uniform3iv); GR_GL_GET_PROC(Uniform4f); GR_GL_GET_PROC(Uniform4i); GR_GL_GET_PROC(Uniform4fv); GR_GL_GET_PROC(Uniform4iv); GR_GL_GET_PROC(UniformMatrix2fv); GR_GL_GET_PROC(UniformMatrix3fv); GR_GL_GET_PROC(UniformMatrix4fv); GR_GL_GET_PROC(UnmapBuffer); GR_GL_GET_PROC(UseProgram); GR_GL_GET_PROC(VertexAttrib4fv); GR_GL_GET_PROC(VertexAttribPointer); gDefaultInterface.fVertexPointer = glVertexPointer; gDefaultInterface.fViewport = glViewport; // First look for GL3.0 FBO or GL_ARB_framebuffer_object (same since // GL_ARB_framebuffer_object doesn't use ARB suffix.) if (major >= 3 || has_gl_extension_from_string( "GL_ARB_framebuffer_object", extString)) { GR_GL_GET_PROC(GenFramebuffers); GR_GL_GET_PROC(BindFramebuffer); GR_GL_GET_PROC(FramebufferTexture2D); GR_GL_GET_PROC(CheckFramebufferStatus); GR_GL_GET_PROC(DeleteFramebuffers); GR_GL_GET_PROC(RenderbufferStorage); GR_GL_GET_PROC(GenRenderbuffers); GR_GL_GET_PROC(DeleteRenderbuffers); GR_GL_GET_PROC(FramebufferRenderbuffer); GR_GL_GET_PROC(BindRenderbuffer); GR_GL_GET_PROC(RenderbufferStorageMultisample); GR_GL_GET_PROC(BlitFramebuffer); } else if (has_gl_extension_from_string("GL_EXT_framebuffer_object", extString)) { GR_GL_GET_PROC_SUFFIX(GenFramebuffers, EXT); GR_GL_GET_PROC_SUFFIX(BindFramebuffer, EXT); GR_GL_GET_PROC_SUFFIX(FramebufferTexture2D, EXT); GR_GL_GET_PROC_SUFFIX(CheckFramebufferStatus, EXT); GR_GL_GET_PROC_SUFFIX(DeleteFramebuffers, EXT); GR_GL_GET_PROC_SUFFIX(RenderbufferStorage, EXT); GR_GL_GET_PROC_SUFFIX(GenRenderbuffers, EXT); GR_GL_GET_PROC_SUFFIX(DeleteRenderbuffers, EXT); GR_GL_GET_PROC_SUFFIX(FramebufferRenderbuffer, EXT); GR_GL_GET_PROC_SUFFIX(BindRenderbuffer, EXT); if (has_gl_extension_from_string("GL_EXT_framebuffer_multisample", extString)) { GR_GL_GET_PROC_SUFFIX(RenderbufferStorageMultisample, EXT); } if (has_gl_extension_from_string("GL_EXT_framebuffer_blit", extString)) { GR_GL_GET_PROC_SUFFIX(BlitFramebuffer, EXT); } } else { // we must have FBOs return; } GR_GL_GET_PROC(BindFragDataLocationIndexed); gDefaultInterface.fBindingsExported = kDesktop_GrGLBinding; gDefaultInterfaceInit = true; } if (gDefaultInterfaceInit) GrGLSetGLInterface(&gDefaultInterface); }