Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(62)

Side by Side Diff: ui/gfx/gl/gl_context_osmesa.cc

Issue 7980006: Implement OSMesa image transport for TOUCH_UI builds (Closed) Base URL: http://git.chromium.org/git/chromium.git@trunk
Patch Set: Re-uploading to get OWNERS check. Created 9 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « content/common/gpu/image_transport_surface_linux.cc ('k') | ui/gfx/gl/gl_surface_glx.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 <GL/osmesa.h> 5 #include <GL/osmesa.h>
6 6
7 #include "ui/gfx/gl/gl_context_osmesa.h" 7 #include "ui/gfx/gl/gl_context_osmesa.h"
8 8
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "ui/gfx/gl/gl_bindings.h" 10 #include "ui/gfx/gl/gl_bindings.h"
(...skipping 11 matching lines...) Expand all
22 } 22 }
23 23
24 bool GLContextOSMesa::Initialize(GLSurface* compatible_surface) { 24 bool GLContextOSMesa::Initialize(GLSurface* compatible_surface) {
25 DCHECK(!context_); 25 DCHECK(!context_);
26 26
27 OSMesaContext share_handle = static_cast<OSMesaContext>( 27 OSMesaContext share_handle = static_cast<OSMesaContext>(
28 share_group() ? share_group()->GetHandle() : NULL); 28 share_group() ? share_group()->GetHandle() : NULL);
29 29
30 GLuint format = 30 GLuint format =
31 static_cast<GLSurfaceOSMesa*>(compatible_surface)->GetFormat(); 31 static_cast<GLSurfaceOSMesa*>(compatible_surface)->GetFormat();
32 DCHECK_NE(format, (unsigned)0);
32 context_ = OSMesaCreateContextExt(format, 33 context_ = OSMesaCreateContextExt(format,
33 0, // depth bits 34 0, // depth bits
34 0, // stencil bits 35 0, // stencil bits
35 0, // accum bits 36 0, // accum bits
36 share_handle); 37 share_handle);
37 if (!context_) { 38 if (!context_) {
38 LOG(ERROR) << "OSMesaCreateContextExt failed."; 39 LOG(ERROR) << "OSMesaCreateContextExt failed.";
39 return false; 40 return false;
40 } 41 }
41 42
42 return true; 43 return true;
43 } 44 }
44 45
45 void GLContextOSMesa::Destroy() { 46 void GLContextOSMesa::Destroy() {
46 if (context_) { 47 if (context_) {
47 OSMesaDestroyContext(static_cast<OSMesaContext>(context_)); 48 OSMesaDestroyContext(static_cast<OSMesaContext>(context_));
48 context_ = NULL; 49 context_ = NULL;
49 } 50 }
50 } 51 }
51 52
52 bool GLContextOSMesa::MakeCurrent(GLSurface* surface) { 53 bool GLContextOSMesa::MakeCurrent(GLSurface* surface) {
53 DCHECK(context_); 54 DCHECK(context_);
54 55
55 gfx::Size size = surface->GetSize(); 56 gfx::Size size = surface->GetSize();
56 57
57 if (!OSMesaMakeCurrent(static_cast<OSMesaContext>(context_), 58 if (!OSMesaMakeCurrent(context_,
58 surface->GetHandle(), 59 surface->GetHandle(),
59 GL_UNSIGNED_BYTE, 60 GL_UNSIGNED_BYTE,
60 size.width(), 61 size.width(),
61 size.height())) { 62 size.height())) {
62 LOG(ERROR) << "OSMesaMakeCurrent failed."; 63 LOG(ERROR) << "OSMesaMakeCurrent failed.";
63 Destroy(); 64 Destroy();
64 return false; 65 return false;
65 } 66 }
66 67
67 // Row 0 is at the top. 68 // Row 0 is at the top.
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
107 void* GLContextOSMesa::GetHandle() { 108 void* GLContextOSMesa::GetHandle() {
108 return context_; 109 return context_;
109 } 110 }
110 111
111 void GLContextOSMesa::SetSwapInterval(int interval) { 112 void GLContextOSMesa::SetSwapInterval(int interval) {
112 DCHECK(IsCurrent(NULL)); 113 DCHECK(IsCurrent(NULL));
113 LOG(WARNING) << "GLContextOSMesa::SetSwapInterval is ignored."; 114 LOG(WARNING) << "GLContextOSMesa::SetSwapInterval is ignored.";
114 } 115 }
115 116
116 } // namespace gfx 117 } // namespace gfx
OLDNEW
« no previous file with comments | « content/common/gpu/image_transport_surface_linux.cc ('k') | ui/gfx/gl/gl_surface_glx.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698