1a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include "gpu/skia_bindings/gl_bindings_skia_cmd_buffer.h" 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef GL_GLEXT_PROTOTYPES 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define GL_GLEXT_PROTOTYPES 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "gpu/GLES2/gl2extchromium.h" 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "third_party/khronos/GLES2/gl2.h" 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "third_party/khronos/GLES2/gl2ext.h" 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "third_party/skia/include/gpu/gl/GrGLInterface.h" 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 15a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)namespace skia_bindings { 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)GrGLInterface* CreateCommandBufferSkiaGLBinding() { 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GrGLInterface* interface = new GrGLInterface; 19a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) interface->fStandard = kGLES_GrGLStandard; 20a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) interface->fExtensions.init(kGLES_GrGLStandard, 21a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) glGetString, 22a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) NULL, 23a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) glGetIntegerv); 24a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 25a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) GrGLInterface::Functions* functions = &interface->fFunctions; 26a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) functions->fActiveTexture = glActiveTexture; 27a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) functions->fAttachShader = glAttachShader; 28a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) functions->fBindAttribLocation = glBindAttribLocation; 29a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) functions->fBindBuffer = glBindBuffer; 30a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) functions->fBindTexture = glBindTexture; 31a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) functions->fBindVertexArray = glBindVertexArrayOES; 32a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) functions->fBlendColor = glBlendColor; 33a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) functions->fBlendFunc = glBlendFunc; 34a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) functions->fBufferData = glBufferData; 35a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) functions->fBufferSubData = glBufferSubData; 36a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) functions->fClear = glClear; 37a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) functions->fClearColor = glClearColor; 38a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) functions->fClearStencil = glClearStencil; 39a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) functions->fColorMask = glColorMask; 40a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) functions->fCompileShader = glCompileShader; 41a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) functions->fCompressedTexImage2D = glCompressedTexImage2D; 42a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) functions->fCopyTexSubImage2D = glCopyTexSubImage2D; 431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci functions->fCopyTextureCHROMIUM = glCopyTextureCHROMIUM; 44a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) functions->fCreateProgram = glCreateProgram; 45a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) functions->fCreateShader = glCreateShader; 46a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) functions->fCullFace = glCullFace; 47a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) functions->fDeleteBuffers = glDeleteBuffers; 48a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) functions->fDeleteProgram = glDeleteProgram; 49a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) functions->fDeleteShader = glDeleteShader; 50a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) functions->fDeleteTextures = glDeleteTextures; 51a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) functions->fDeleteVertexArrays = glDeleteVertexArraysOES; 52a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) functions->fDepthMask = glDepthMask; 53a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) functions->fDisable = glDisable; 54a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) functions->fDisableVertexAttribArray = glDisableVertexAttribArray; 55e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch functions->fDiscardFramebuffer = glDiscardFramebufferEXT; 56a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) functions->fDrawArrays = glDrawArrays; 57a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) functions->fDrawElements = glDrawElements; 58a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) functions->fEnable = glEnable; 59a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) functions->fEnableVertexAttribArray = glEnableVertexAttribArray; 60a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) functions->fFinish = glFinish; 61a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) functions->fFlush = glFlush; 62a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) functions->fFrontFace = glFrontFace; 63a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) functions->fGenBuffers = glGenBuffers; 64a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) functions->fGenTextures = glGenTextures; 65a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) functions->fGenVertexArrays = glGenVertexArraysOES; 66a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) functions->fGetBufferParameteriv = glGetBufferParameteriv; 67a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) functions->fGetError = glGetError; 68a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) functions->fGetIntegerv = glGetIntegerv; 69a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) functions->fGetProgramInfoLog = glGetProgramInfoLog; 70a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) functions->fGetProgramiv = glGetProgramiv; 71a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) functions->fGetShaderInfoLog = glGetShaderInfoLog; 72a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) functions->fGetShaderiv = glGetShaderiv; 73a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) functions->fGetString = glGetString; 74a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) functions->fGetUniformLocation = glGetUniformLocation; 75a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) functions->fInsertEventMarker = glInsertEventMarkerEXT; 76a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) functions->fLineWidth = glLineWidth; 77a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) functions->fLinkProgram = glLinkProgram; 780529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch functions->fMapBufferSubData = glMapBufferSubDataCHROMIUM; 790529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch functions->fMapTexSubImage2D = glMapTexSubImage2DCHROMIUM; 80a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) functions->fPixelStorei = glPixelStorei; 81a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) functions->fPopGroupMarker = glPopGroupMarkerEXT; 82a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) functions->fPushGroupMarker = glPushGroupMarkerEXT; 83a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) functions->fReadPixels = glReadPixels; 84a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) functions->fScissor = glScissor; 85a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) functions->fShaderSource = glShaderSource; 86a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) functions->fStencilFunc = glStencilFunc; 87a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) functions->fStencilFuncSeparate = glStencilFuncSeparate; 88a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) functions->fStencilMask = glStencilMask; 89a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) functions->fStencilMaskSeparate = glStencilMaskSeparate; 90a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) functions->fStencilOp = glStencilOp; 91a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) functions->fStencilOpSeparate = glStencilOpSeparate; 92a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) functions->fTexImage2D = glTexImage2D; 93a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) functions->fTexParameteri = glTexParameteri; 94a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) functions->fTexParameteriv = glTexParameteriv; 95a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) functions->fTexStorage2D = glTexStorage2DEXT; 96a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) functions->fTexSubImage2D = glTexSubImage2D; 97a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) functions->fUniform1f = glUniform1f; 98a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) functions->fUniform1i = glUniform1i; 99a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) functions->fUniform1fv = glUniform1fv; 100a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) functions->fUniform1iv = glUniform1iv; 101a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) functions->fUniform2f = glUniform2f; 102a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) functions->fUniform2i = glUniform2i; 103a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) functions->fUniform2fv = glUniform2fv; 104a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) functions->fUniform2iv = glUniform2iv; 105a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) functions->fUniform3f = glUniform3f; 106a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) functions->fUniform3i = glUniform3i; 107a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) functions->fUniform3fv = glUniform3fv; 108a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) functions->fUniform3iv = glUniform3iv; 109a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) functions->fUniform4f = glUniform4f; 110a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) functions->fUniform4i = glUniform4i; 111a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) functions->fUniform4fv = glUniform4fv; 112a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) functions->fUniform4iv = glUniform4iv; 113a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) functions->fUniformMatrix2fv = glUniformMatrix2fv; 114a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) functions->fUniformMatrix3fv = glUniformMatrix3fv; 115a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) functions->fUniformMatrix4fv = glUniformMatrix4fv; 1160529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch functions->fUnmapBufferSubData = glUnmapBufferSubDataCHROMIUM; 1170529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch functions->fUnmapTexSubImage2D = glUnmapTexSubImage2DCHROMIUM; 118a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) functions->fUseProgram = glUseProgram; 119a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) functions->fVertexAttrib4fv = glVertexAttrib4fv; 120a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) functions->fVertexAttribPointer = glVertexAttribPointer; 121a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) functions->fViewport = glViewport; 122a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) functions->fBindFramebuffer = glBindFramebuffer; 123a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) functions->fBindRenderbuffer = glBindRenderbuffer; 124a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) functions->fCheckFramebufferStatus = glCheckFramebufferStatus; 125a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) functions->fDeleteFramebuffers = glDeleteFramebuffers; 126a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) functions->fDeleteRenderbuffers = glDeleteRenderbuffers; 127a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) functions->fFramebufferRenderbuffer = glFramebufferRenderbuffer; 128a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) functions->fFramebufferTexture2D = glFramebufferTexture2D; 129a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) functions->fFramebufferTexture2DMultisample = 1307dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch glFramebufferTexture2DMultisampleEXT; 131a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) functions->fGenFramebuffers = glGenFramebuffers; 132a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) functions->fGenRenderbuffers = glGenRenderbuffers; 133a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) functions->fGetFramebufferAttachmentParameteriv = 1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) glGetFramebufferAttachmentParameteriv; 135a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) functions->fGetRenderbufferParameteriv = glGetRenderbufferParameteriv; 136a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) functions->fRenderbufferStorage = glRenderbufferStorage; 137a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) functions->fRenderbufferStorageMultisample = 138f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) glRenderbufferStorageMultisampleCHROMIUM; 139a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) functions->fRenderbufferStorageMultisampleES2EXT = 1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) glRenderbufferStorageMultisampleEXT; 141a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) functions->fBindUniformLocation = glBindUniformLocationCHROMIUM; 142a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) functions->fBlitFramebuffer = glBlitFramebufferCHROMIUM; 143a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) functions->fGenerateMipmap = glGenerateMipmap; 1441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci functions->fMatrixLoadf = glMatrixLoadfCHROMIUM; 1451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci functions->fMatrixLoadIdentity = glMatrixLoadIdentityCHROMIUM; 146a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return interface; 1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 150a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)} // namespace skia 151