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..9662123623b71959f5d74764f9004df8877e08d0 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_EXTENSIONS: |
no sievers
2015/12/04 20:16:14
did you mean GL_NUM_EXTENSIONS?
David Yen
2015/12/04 22:21:41
Ah yes, thank you for catching this. Done.
|
+ *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(); |
} |