OLD | NEW |
---|---|
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "ui/gl/gl_context.h" | 5 #include "ui/gl/gl_context.h" |
6 | 6 |
7 #include "base/android/sys_utils.h" | 7 #include "base/android/sys_utils.h" |
8 #include "base/logging.h" | 8 #include "base/logging.h" |
9 #include "base/memory/ref_counted.h" | 9 #include "base/memory/ref_counted.h" |
10 #include "base/sys_info.h" | 10 #include "base/sys_info.h" |
11 #include "ui/gl/gl_bindings.h" | 11 #include "ui/gl/gl_bindings.h" |
12 #include "ui/gl/gl_context_egl.h" | 12 #include "ui/gl/gl_context_egl.h" |
13 #include "ui/gl/gl_context_osmesa.h" | |
13 #include "ui/gl/gl_context_stub.h" | 14 #include "ui/gl/gl_context_stub.h" |
14 #include "ui/gl/gl_implementation.h" | 15 #include "ui/gl/gl_implementation.h" |
15 #include "ui/gl/gl_surface.h" | 16 #include "ui/gl/gl_surface.h" |
16 | 17 |
17 namespace gfx { | 18 namespace gfx { |
18 | 19 |
19 namespace { | 20 namespace { |
20 | 21 |
21 // Used to render into an already current context+surface, | 22 // Used to render into an already current context+surface, |
22 // that we do not have ownership of (draw callback). | 23 // that we do not have ownership of (draw callback). |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
68 return GLContext::GetExtensions() + " " + extensions; | 69 return GLContext::GetExtensions() + " " + extensions; |
69 } | 70 } |
70 | 71 |
71 } // anonymous namespace | 72 } // anonymous namespace |
72 | 73 |
73 // static | 74 // static |
74 scoped_refptr<GLContext> GLContext::CreateGLContext( | 75 scoped_refptr<GLContext> GLContext::CreateGLContext( |
75 GLShareGroup* share_group, | 76 GLShareGroup* share_group, |
76 GLSurface* compatible_surface, | 77 GLSurface* compatible_surface, |
77 GpuPreference gpu_preference) { | 78 GpuPreference gpu_preference) { |
78 if (GetGLImplementation() == kGLImplementationMockGL) | 79 scoped_refptr<GLContext> context; |
79 return scoped_refptr<GLContext>(new GLContextStub()); | 80 switch(GetGLImplementation()) { |
Sami
2013/09/19 16:37:46
Since you're here :) Could you change this to be a
Peter Beverloo
2013/09/19 16:48:44
Done.
| |
81 case kGLImplementationMockGL: | |
82 return scoped_refptr<GLContext>(new GLContextStub()); | |
83 case kGLImplementationOSMesaGL: | |
84 context = new GLContextOSMesa(share_group); | |
85 break; | |
86 default: | |
87 if (compatible_surface->GetHandle()) | |
88 context = new GLContextEGL(share_group); | |
89 else | |
90 context = new GLNonOwnedContext(share_group); | |
91 break; | |
92 } | |
80 | 93 |
81 scoped_refptr<GLContext> context; | |
82 if (compatible_surface->GetHandle()) | |
83 context = new GLContextEGL(share_group); | |
84 else | |
85 context = new GLNonOwnedContext(share_group); | |
86 if (!context->Initialize(compatible_surface, gpu_preference)) | 94 if (!context->Initialize(compatible_surface, gpu_preference)) |
87 return NULL; | 95 return NULL; |
96 | |
88 return context; | 97 return context; |
89 } | 98 } |
90 | 99 |
91 bool GLContextEGL::GetTotalGpuMemory(size_t* bytes) { | 100 bool GLContextEGL::GetTotalGpuMemory(size_t* bytes) { |
92 DCHECK(bytes); | 101 DCHECK(bytes); |
93 *bytes = 0; | 102 *bytes = 0; |
94 | 103 |
95 // We can't query available GPU memory from the system on Android. | 104 // We can't query available GPU memory from the system on Android. |
96 // Physical memory is also mis-reported sometimes (eg. Nexus 10 reports | 105 // Physical memory is also mis-reported sometimes (eg. Nexus 10 reports |
97 // 1262MB when it actually has 2GB, while Razr M has 1GB but only reports | 106 // 1262MB when it actually has 2GB, while Razr M has 1GB but only reports |
(...skipping 29 matching lines...) Expand all Loading... | |
127 } else { | 136 } else { |
128 limit_bytes = physical_memory_mb / 64; | 137 limit_bytes = physical_memory_mb / 64; |
129 } | 138 } |
130 limit_bytes = limit_bytes * 1024 * 1024; | 139 limit_bytes = limit_bytes * 1024 * 1024; |
131 } | 140 } |
132 *bytes = limit_bytes; | 141 *bytes = limit_bytes; |
133 return true; | 142 return true; |
134 } | 143 } |
135 | 144 |
136 } | 145 } |
OLD | NEW |