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

Side by Side Diff: ui/gl/gl_image_ozone_native_pixmap.cc

Issue 2109803003: Add support for EXT_image_flush_external extension (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Add support for EXT_image_flush_external extension Created 4 years, 5 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
« no previous file with comments | « ui/gl/gl_image_ozone_native_pixmap.h ('k') | ui/gl/gl_image_stub.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 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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/gfx/buffer_format_util.h" 5 #include "ui/gfx/buffer_format_util.h"
6 #include "ui/gl/gl_image_ozone_native_pixmap.h" 6 #include "ui/gl/gl_image_ozone_native_pixmap.h"
7 #include "ui/gl/gl_surface_egl.h" 7 #include "ui/gl/gl_surface_egl.h"
8 8
9 #define FOURCC(a, b, c, d) \ 9 #define FOURCC(a, b, c, d) \
10 ((static_cast<uint32_t>(a)) | (static_cast<uint32_t>(b) << 8) | \ 10 ((static_cast<uint32_t>(a)) | (static_cast<uint32_t>(b) << 8) | \
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
94 } 94 }
95 95
96 NOTREACHED(); 96 NOTREACHED();
97 return 0; 97 return 0;
98 } 98 }
99 99
100 } // namespace 100 } // namespace
101 101
102 GLImageOzoneNativePixmap::GLImageOzoneNativePixmap(const gfx::Size& size, 102 GLImageOzoneNativePixmap::GLImageOzoneNativePixmap(const gfx::Size& size,
103 unsigned internalformat) 103 unsigned internalformat)
104 : GLImageEGL(size), internalformat_(internalformat) {} 104 : GLImageEGL(size),
105 internalformat_(internalformat),
106 has_image_flush_external_(
107 GLSurfaceEGL::HasEGLExtension("EGL_EXT_image_flush_external")) {}
105 108
106 GLImageOzoneNativePixmap::~GLImageOzoneNativePixmap() { 109 GLImageOzoneNativePixmap::~GLImageOzoneNativePixmap() {
107 } 110 }
108 111
109 bool GLImageOzoneNativePixmap::Initialize(ui::NativePixmap* pixmap, 112 bool GLImageOzoneNativePixmap::Initialize(ui::NativePixmap* pixmap,
110 gfx::BufferFormat format) { 113 gfx::BufferFormat format) {
111 DCHECK(!pixmap_); 114 DCHECK(!pixmap_);
112 if (pixmap->GetEGLClientBuffer()) { 115 if (pixmap->GetEGLClientBuffer()) {
113 EGLint attrs[] = {EGL_IMAGE_PRESERVED_KHR, EGL_TRUE, EGL_NONE}; 116 EGLint attrs[] = {EGL_IMAGE_PRESERVED_KHR, EGL_TRUE, EGL_NONE};
114 if (!GLImageEGL::Initialize(EGL_NATIVE_PIXMAP_KHR, 117 if (!GLImageEGL::Initialize(EGL_NATIVE_PIXMAP_KHR,
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
201 gfx::AcceleratedWidget widget, 204 gfx::AcceleratedWidget widget,
202 int z_order, 205 int z_order,
203 gfx::OverlayTransform transform, 206 gfx::OverlayTransform transform,
204 const gfx::Rect& bounds_rect, 207 const gfx::Rect& bounds_rect,
205 const gfx::RectF& crop_rect) { 208 const gfx::RectF& crop_rect) {
206 DCHECK(pixmap_); 209 DCHECK(pixmap_);
207 return pixmap_->ScheduleOverlayPlane(widget, z_order, transform, bounds_rect, 210 return pixmap_->ScheduleOverlayPlane(widget, z_order, transform, bounds_rect,
208 crop_rect); 211 crop_rect);
209 } 212 }
210 213
214 void GLImageOzoneNativePixmap::Flush() {
215 if (has_image_flush_external_) {
liberato (no reviews please) 2016/07/14 14:38:35 random nit: can early out and avoid the indent.
216 EGLDisplay display = GLSurfaceEGL::GetHardwareDisplay();
217 const EGLAttrib attribs[] = {
218 EGL_NONE,
219 };
220 if (!eglImageFlushExternalEXT(display, egl_image_, attribs)) {
221 LOG(ERROR) << "Failed to flush rendering";
222 return;
223 }
224 }
225 }
226
211 void GLImageOzoneNativePixmap::OnMemoryDump( 227 void GLImageOzoneNativePixmap::OnMemoryDump(
212 base::trace_event::ProcessMemoryDump* pmd, 228 base::trace_event::ProcessMemoryDump* pmd,
213 uint64_t process_tracing_id, 229 uint64_t process_tracing_id,
214 const std::string& dump_name) { 230 const std::string& dump_name) {
215 // TODO(ericrk): Implement GLImage OnMemoryDump. crbug.com/514914 231 // TODO(ericrk): Implement GLImage OnMemoryDump. crbug.com/514914
216 } 232 }
217 233
218 // static 234 // static
219 unsigned GLImageOzoneNativePixmap::GetInternalFormatForTesting( 235 unsigned GLImageOzoneNativePixmap::GetInternalFormatForTesting(
220 gfx::BufferFormat format) { 236 gfx::BufferFormat format) {
(...skipping 20 matching lines...) Expand all
241 case gfx::BufferFormat::UYVY_422: 257 case gfx::BufferFormat::UYVY_422:
242 NOTREACHED(); 258 NOTREACHED();
243 return GL_NONE; 259 return GL_NONE;
244 } 260 }
245 261
246 NOTREACHED(); 262 NOTREACHED();
247 return GL_NONE; 263 return GL_NONE;
248 } 264 }
249 265
250 } // namespace gl 266 } // namespace gl
OLDNEW
« no previous file with comments | « ui/gl/gl_image_ozone_native_pixmap.h ('k') | ui/gl/gl_image_stub.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698