Index: ui/gl/gl_gl_api_implementation.cc |
diff --git a/ui/gl/gl_gl_api_implementation.cc b/ui/gl/gl_gl_api_implementation.cc |
index b6d55980a0cd2e7f0a7eb4cac6fd14854d2afc64..e40d27a23027b3c387fa0156d8ef284df11a0e1c 100644 |
--- a/ui/gl/gl_gl_api_implementation.cc |
+++ b/ui/gl/gl_gl_api_implementation.cc |
@@ -527,6 +527,8 @@ void VirtualGLApi::Initialize(DriverGL* driver, GLContext* real_context) { |
DCHECK(real_context->IsCurrent(NULL)); |
extensions_ = real_context->GetExtensions(); |
+ extensions_vec_ = base::SplitString(extensions_, " ", base::TRIM_WHITESPACE, |
+ base::SPLIT_WANT_ALL); |
} |
bool VirtualGLApi::MakeCurrent(GLContext* virtual_context, GLSurface* surface) { |
@@ -600,6 +602,17 @@ void VirtualGLApi::OnReleaseVirtuallyCurrent(GLContext* virtual_context) { |
current_context_ = NULL; |
} |
+void VirtualGLApi::glGetIntegervFn(GLenum pname, GLint* params) { |
+ switch (pname) { |
+ case GL_NUM_EXTENSIONS: |
+ *params = static_cast<GLint>(extensions_vec_.size()); |
+ break; |
+ default: |
+ driver_->fn.glGetIntegervFn(pname, params); |
+ break; |
+ } |
+} |
+ |
const GLubyte* VirtualGLApi::glGetStringFn(GLenum name) { |
switch (name) { |
case GL_EXTENSIONS: |
@@ -609,6 +622,17 @@ const GLubyte* VirtualGLApi::glGetStringFn(GLenum name) { |
} |
} |
+const GLubyte* VirtualGLApi::glGetStringiFn(GLenum name, GLuint index) { |
+ switch (name) { |
+ case GL_EXTENSIONS: |
+ if (index >= extensions_vec_.size()) |
+ return NULL; |
+ return reinterpret_cast<const GLubyte*>(extensions_vec_[index].c_str()); |
+ default: |
+ return driver_->fn.glGetStringiFn(name, index); |
+ } |
+} |
+ |
void VirtualGLApi::glFlushFn() { |
GLApiBase::glFlushFn(); |
} |