gfx/skia/trunk/src/gpu/gl/angle/GrGLCreateANGLEInterface.cpp

changeset 0
6474c204b198
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/gfx/skia/trunk/src/gpu/gl/angle/GrGLCreateANGLEInterface.cpp	Wed Dec 31 06:09:35 2014 +0100
     1.3 @@ -0,0 +1,167 @@
     1.4 +
     1.5 +/*
     1.6 + * Copyright 2012 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 +#ifndef GL_GLEXT_PROTOTYPES
    1.16 +#define GL_GLEXT_PROTOTYPES
    1.17 +#endif
    1.18 +
    1.19 +#include "GLES2/gl2.h"
    1.20 +#include "GLES2/gl2ext.h"
    1.21 +#include "EGL/egl.h"
    1.22 +
    1.23 +#define GET_PROC(name)             \
    1.24 +    interface->fFunctions.f ## name = (GrGL ## name ## Proc) GetProcAddress(ghANGLELib, "gl" #name);
    1.25 +
    1.26 +const GrGLInterface* GrGLCreateANGLEInterface() {
    1.27 +
    1.28 +    static HMODULE ghANGLELib = NULL;
    1.29 +
    1.30 +    if (NULL == ghANGLELib) {
    1.31 +        // We load the ANGLE library and never let it go
    1.32 +        ghANGLELib = LoadLibrary("libGLESv2.dll");
    1.33 +    }
    1.34 +    if (NULL == ghANGLELib) {
    1.35 +        // We can't setup the interface correctly w/o the DLL
    1.36 +        return NULL;
    1.37 +    }
    1.38 +
    1.39 +    GrGLInterface* interface = SkNEW(GrGLInterface);
    1.40 +    interface->fStandard = kGLES_GrGLStandard;
    1.41 +
    1.42 +    GrGLInterface::Functions* functions = &interface->fFunctions;
    1.43 +
    1.44 +    GET_PROC(ActiveTexture);
    1.45 +    GET_PROC(AttachShader);
    1.46 +    GET_PROC(BindAttribLocation);
    1.47 +    GET_PROC(BindBuffer);
    1.48 +    GET_PROC(BindTexture);
    1.49 +    functions->fBindVertexArray =
    1.50 +        (GrGLBindVertexArrayProc) eglGetProcAddress("glBindVertexArrayOES");
    1.51 +    GET_PROC(BlendColor);
    1.52 +    GET_PROC(BlendFunc);
    1.53 +    GET_PROC(BufferData);
    1.54 +    GET_PROC(BufferSubData);
    1.55 +    GET_PROC(Clear);
    1.56 +    GET_PROC(ClearColor);
    1.57 +    GET_PROC(ClearStencil);
    1.58 +    GET_PROC(ColorMask);
    1.59 +    GET_PROC(CompileShader);
    1.60 +    GET_PROC(CompressedTexImage2D);
    1.61 +    GET_PROC(CopyTexSubImage2D);
    1.62 +    GET_PROC(CreateProgram);
    1.63 +    GET_PROC(CreateShader);
    1.64 +    GET_PROC(CullFace);
    1.65 +    GET_PROC(DeleteBuffers);
    1.66 +    GET_PROC(DeleteProgram);
    1.67 +    GET_PROC(DeleteShader);
    1.68 +    GET_PROC(DeleteTextures);
    1.69 +    functions->fDeleteVertexArrays =
    1.70 +        (GrGLDeleteVertexArraysProc) eglGetProcAddress("glDeleteVertexArraysOES");
    1.71 +    GET_PROC(DepthMask);
    1.72 +    GET_PROC(Disable);
    1.73 +    GET_PROC(DisableVertexAttribArray);
    1.74 +    GET_PROC(DrawArrays);
    1.75 +    GET_PROC(DrawElements);
    1.76 +    GET_PROC(Enable);
    1.77 +    GET_PROC(EnableVertexAttribArray);
    1.78 +    GET_PROC(Finish);
    1.79 +    GET_PROC(Flush);
    1.80 +    GET_PROC(FrontFace);
    1.81 +    GET_PROC(GenBuffers);
    1.82 +    GET_PROC(GenerateMipmap);
    1.83 +    GET_PROC(GenTextures);
    1.84 +    functions->fGenVertexArrays =
    1.85 +        (GrGLGenVertexArraysProc) eglGetProcAddress("glGenVertexArraysOES");
    1.86 +    GET_PROC(GetBufferParameteriv);
    1.87 +    GET_PROC(GetError);
    1.88 +    GET_PROC(GetIntegerv);
    1.89 +    GET_PROC(GetProgramInfoLog);
    1.90 +    GET_PROC(GetProgramiv);
    1.91 +    GET_PROC(GetShaderInfoLog);
    1.92 +    GET_PROC(GetShaderiv);
    1.93 +    GET_PROC(GetString);
    1.94 +    GET_PROC(GetUniformLocation);
    1.95 +    GET_PROC(LineWidth);
    1.96 +    GET_PROC(LinkProgram);
    1.97 +    GET_PROC(PixelStorei);
    1.98 +    GET_PROC(ReadPixels);
    1.99 +    GET_PROC(Scissor);
   1.100 +    GET_PROC(ShaderSource);
   1.101 +    GET_PROC(StencilFunc);
   1.102 +    GET_PROC(StencilFuncSeparate);
   1.103 +    GET_PROC(StencilMask);
   1.104 +    GET_PROC(StencilMaskSeparate);
   1.105 +    GET_PROC(StencilOp);
   1.106 +    GET_PROC(StencilOpSeparate);
   1.107 +    GET_PROC(TexImage2D);
   1.108 +    GET_PROC(TexParameteri);
   1.109 +    GET_PROC(TexParameteriv);
   1.110 +    GET_PROC(TexSubImage2D);
   1.111 +#if GL_ARB_texture_storage
   1.112 +    GET_PROC(TexStorage2D);
   1.113 +#elif GL_EXT_texture_storage
   1.114 +    functions->fTexStorage2D = (GrGLTexStorage2DProc) eglGetProcAddress("glTexStorage2DEXT");
   1.115 +#endif
   1.116 +    GET_PROC(Uniform1f);
   1.117 +    GET_PROC(Uniform1i);
   1.118 +    GET_PROC(Uniform1fv);
   1.119 +    GET_PROC(Uniform1iv);
   1.120 +
   1.121 +    GET_PROC(Uniform2f);
   1.122 +    GET_PROC(Uniform2i);
   1.123 +    GET_PROC(Uniform2fv);
   1.124 +    GET_PROC(Uniform2iv);
   1.125 +
   1.126 +    GET_PROC(Uniform3f);
   1.127 +    GET_PROC(Uniform3i);
   1.128 +    GET_PROC(Uniform3fv);
   1.129 +    GET_PROC(Uniform3iv);
   1.130 +
   1.131 +    GET_PROC(Uniform4f);
   1.132 +    GET_PROC(Uniform4i);
   1.133 +    GET_PROC(Uniform4fv);
   1.134 +    GET_PROC(Uniform4iv);
   1.135 +
   1.136 +    GET_PROC(UniformMatrix2fv);
   1.137 +    GET_PROC(UniformMatrix3fv);
   1.138 +    GET_PROC(UniformMatrix4fv);
   1.139 +    GET_PROC(UseProgram);
   1.140 +    GET_PROC(VertexAttrib4fv);
   1.141 +    GET_PROC(VertexAttribPointer);
   1.142 +    GET_PROC(Viewport);
   1.143 +    GET_PROC(BindFramebuffer);
   1.144 +    GET_PROC(BindRenderbuffer);
   1.145 +    GET_PROC(CheckFramebufferStatus);
   1.146 +    GET_PROC(DeleteFramebuffers);
   1.147 +    GET_PROC(DeleteRenderbuffers);
   1.148 +    GET_PROC(FramebufferRenderbuffer);
   1.149 +    GET_PROC(FramebufferTexture2D);
   1.150 +    GET_PROC(GenFramebuffers);
   1.151 +    GET_PROC(GenRenderbuffers);
   1.152 +    GET_PROC(GetFramebufferAttachmentParameteriv);
   1.153 +    GET_PROC(GetRenderbufferParameteriv);
   1.154 +    GET_PROC(RenderbufferStorage);
   1.155 +
   1.156 +    functions->fMapBuffer = (GrGLMapBufferProc) eglGetProcAddress("glMapBufferOES");
   1.157 +    functions->fUnmapBuffer = (GrGLUnmapBufferProc) eglGetProcAddress("glUnmapBufferOES");
   1.158 +
   1.159 +#if GL_EXT_debug_marker
   1.160 +    functions->fInsertEventMarker = (GrGLInsertEventMarkerProc) eglGetProcAddress("glInsertEventMarkerEXT");
   1.161 +    functions->fPushGroupMarker = (GrGLInsertEventMarkerProc) eglGetProcAddress("glPushGroupMarkerEXT");
   1.162 +    functions->fPopGroupMarker = (GrGLPopGroupMarkerProc) eglGetProcAddress("glPopGropuMarkerEXT");
   1.163 +#endif
   1.164 +
   1.165 +    interface->fExtensions.init(kGLES_GrGLStandard,
   1.166 +                                interface->fFunctions.fGetString,
   1.167 +                                interface->fFunctions.fGetStringi,
   1.168 +                                interface->fFunctions.fGetIntegerv);
   1.169 +    return interface;
   1.170 +}

mercurial