Home | History | Annotate | Download | only in egl
      1 /*
      2  * Copyright 2014 Google Inc.
      3  *
      4  * Use of this source code is governed by a BSD-style license that can be
      5  * found in the LICENSE file.
      6  */
      7 #include "gl/GrGLInterface.h"
      8 #include "gl/GrGLAssembleInterface.h"
      9 #include "gl/GrGLUtil.h"
     10 
     11 #include <EGL/egl.h>
     12 #ifndef GL_GLEXT_PROTOTYPES
     13 #define GL_GLEXT_PROTOTYPES
     14 #endif
     15 #include <GLES2/gl2.h>
     16 
     17 static GrGLFuncPtr egl_get_gl_proc(void* ctx, const char name[]) {
     18     SkASSERT(nullptr == ctx);
     19     // https://www.khronos.org/registry/EGL/extensions/KHR/EGL_KHR_get_all_proc_addresses.txt
     20     // eglGetProcAddress() is not guaranteed to support the querying of non-extension EGL functions.
     21     #define M(X) if (0 == strcmp(#X, name)) { return (GrGLFuncPtr) X; }
     22     M(eglGetCurrentDisplay)
     23     M(eglQueryString)
     24     M(glActiveTexture)
     25     M(glAttachShader)
     26     M(glBindAttribLocation)
     27     M(glBindBuffer)
     28     M(glBindFramebuffer)
     29     M(glBindRenderbuffer)
     30     M(glBindTexture)
     31     M(glBlendColor)
     32     M(glBlendEquation)
     33     M(glBlendFunc)
     34     M(glBufferData)
     35     M(glBufferSubData)
     36     M(glCheckFramebufferStatus)
     37     M(glClear)
     38     M(glClearColor)
     39     M(glClearStencil)
     40     M(glColorMask)
     41     M(glCompileShader)
     42     M(glCompressedTexImage2D)
     43     M(glCompressedTexSubImage2D)
     44     M(glCopyTexSubImage2D)
     45     M(glCreateProgram)
     46     M(glCreateShader)
     47     M(glCullFace)
     48     M(glDeleteBuffers)
     49     M(glDeleteFramebuffers)
     50     M(glDeleteProgram)
     51     M(glDeleteRenderbuffers)
     52     M(glDeleteShader)
     53     M(glDeleteTextures)
     54     M(glDepthMask)
     55     M(glDisable)
     56     M(glDisableVertexAttribArray)
     57     M(glDrawArrays)
     58     M(glDrawElements)
     59     M(glEnable)
     60     M(glEnableVertexAttribArray)
     61     M(glFinish)
     62     M(glFlush)
     63     M(glFramebufferRenderbuffer)
     64     M(glFramebufferTexture2D)
     65     M(glFrontFace)
     66     M(glGenBuffers)
     67     M(glGenFramebuffers)
     68     M(glGenRenderbuffers)
     69     M(glGenTextures)
     70     M(glGenerateMipmap)
     71     M(glGetBufferParameteriv)
     72     M(glGetError)
     73     M(glGetFramebufferAttachmentParameteriv)
     74     M(glGetIntegerv)
     75     M(glGetProgramInfoLog)
     76     M(glGetProgramiv)
     77     M(glGetRenderbufferParameteriv)
     78     M(glGetShaderInfoLog)
     79     M(glGetShaderPrecisionFormat)
     80     M(glGetShaderiv)
     81     M(glGetString)
     82     M(glGetUniformLocation)
     83     M(glIsTexture)
     84     M(glLineWidth)
     85     M(glLinkProgram)
     86     M(glPixelStorei)
     87     M(glReadPixels)
     88     M(glRenderbufferStorage)
     89     M(glScissor)
     90     M(glShaderSource)
     91     M(glStencilFunc)
     92     M(glStencilFuncSeparate)
     93     M(glStencilMask)
     94     M(glStencilMaskSeparate)
     95     M(glStencilOp)
     96     M(glStencilOpSeparate)
     97     M(glTexImage2D)
     98     M(glTexParameterf)
     99     M(glTexParameterfv)
    100     M(glTexParameteri)
    101     M(glTexParameteriv)
    102     M(glTexSubImage2D)
    103     M(glUniform1f)
    104     M(glUniform1fv)
    105     M(glUniform1i)
    106     M(glUniform1iv)
    107     M(glUniform2f)
    108     M(glUniform2fv)
    109     M(glUniform2i)
    110     M(glUniform2iv)
    111     M(glUniform3f)
    112     M(glUniform3fv)
    113     M(glUniform3i)
    114     M(glUniform3iv)
    115     M(glUniform4f)
    116     M(glUniform4fv)
    117     M(glUniform4i)
    118     M(glUniform4iv)
    119     M(glUniformMatrix2fv)
    120     M(glUniformMatrix3fv)
    121     M(glUniformMatrix4fv)
    122     M(glUseProgram)
    123     M(glVertexAttrib1f)
    124     M(glVertexAttrib2fv)
    125     M(glVertexAttrib3fv)
    126     M(glVertexAttrib4fv)
    127     M(glVertexAttribPointer)
    128     M(glViewport)
    129     #undef M
    130     return eglGetProcAddress(name);
    131 }
    132 
    133 sk_sp<const GrGLInterface> GrGLMakeNativeInterface() {
    134     return GrGLMakeAssembledInterface(nullptr, egl_get_gl_proc);
    135 }
    136 
    137 const GrGLInterface* GrGLCreateNativeInterface() { return GrGLMakeNativeInterface().release(); }
    138