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

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

Issue 1570643002: GLSurfaceOzone: move the IsUDL() check after ScheduleOverlayPlanes() (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@2564
Patch Set: Created 4 years, 11 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 | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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_surface.h" 5 #include "ui/gl/gl_surface.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/callback.h" 8 #include "base/callback.h"
9 #include "base/location.h" 9 #include "base/location.h"
10 #include "base/logging.h" 10 #include "base/logging.h"
(...skipping 265 matching lines...) Expand 10 before | Expand all | Expand 10 after
276 // TODO: the following should be replaced by a per surface flush as it gets 276 // TODO: the following should be replaced by a per surface flush as it gets
277 // implemented in GL drivers. 277 // implemented in GL drivers.
278 if (has_implicit_external_sync_) { 278 if (has_implicit_external_sync_) {
279 EGLSyncKHR fence = InsertFence(); 279 EGLSyncKHR fence = InsertFence();
280 if (!fence) 280 if (!fence)
281 return SwapResult::SWAP_FAILED; 281 return SwapResult::SWAP_FAILED;
282 282
283 EGLDisplay display = GetDisplay(); 283 EGLDisplay display = GetDisplay();
284 WaitForFence(display, fence); 284 WaitForFence(display, fence);
285 eglDestroySyncKHR(display, fence); 285 eglDestroySyncKHR(display, fence);
286 } else if (ozone_surface_->IsUniversalDisplayLinkDevice()) {
287 glFinish();
288 } 286 }
289 287
290 unsubmitted_frames_.back()->ScheduleOverlayPlanes(widget_); 288 unsubmitted_frames_.back()->ScheduleOverlayPlanes(widget_);
291 unsubmitted_frames_.back()->overlays.clear(); 289 unsubmitted_frames_.back()->overlays.clear();
292 290
291 if (ozone_surface_->IsUniversalDisplayLinkDevice())
292 glFinish();
293
293 return ozone_surface_->OnSwapBuffers() ? gfx::SwapResult::SWAP_ACK 294 return ozone_surface_->OnSwapBuffers() ? gfx::SwapResult::SWAP_ACK
294 : gfx::SwapResult::SWAP_FAILED; 295 : gfx::SwapResult::SWAP_FAILED;
295 } 296 }
296 297
297 bool GLSurfaceOzoneSurfaceless::ScheduleOverlayPlane(int z_order, 298 bool GLSurfaceOzoneSurfaceless::ScheduleOverlayPlane(int z_order,
298 OverlayTransform transform, 299 OverlayTransform transform,
299 GLImage* image, 300 GLImage* image,
300 const Rect& bounds_rect, 301 const Rect& bounds_rect,
301 const RectF& crop_rect) { 302 const RectF& crop_rect) {
302 unsubmitted_frames_.back()->overlays.push_back( 303 unsubmitted_frames_.back()->overlays.push_back(
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
351 base::Closure fence_wait_task = 352 base::Closure fence_wait_task =
352 base::Bind(&WaitForFence, GetDisplay(), fence); 353 base::Bind(&WaitForFence, GetDisplay(), fence);
353 354
354 base::Closure fence_retired_callback = 355 base::Closure fence_retired_callback =
355 base::Bind(&GLSurfaceOzoneSurfaceless::FenceRetired, 356 base::Bind(&GLSurfaceOzoneSurfaceless::FenceRetired,
356 weak_factory_.GetWeakPtr(), fence, frame); 357 weak_factory_.GetWeakPtr(), fence, frame);
357 358
358 base::WorkerPool::PostTaskAndReply(FROM_HERE, fence_wait_task, 359 base::WorkerPool::PostTaskAndReply(FROM_HERE, fence_wait_task,
359 fence_retired_callback, false); 360 fence_retired_callback, false);
360 return true; 361 return true;
361 } else if (ozone_surface_->IsUniversalDisplayLinkDevice()) {
362 glFinish();
363 } 362 }
364 363
365 frame->ready = true; 364 frame->ready = true;
366 SubmitFrame(); 365 SubmitFrame();
367 return last_swap_buffers_result_; 366 return last_swap_buffers_result_;
368 } 367 }
369 368
370 bool GLSurfaceOzoneSurfaceless::PostSubBufferAsync( 369 bool GLSurfaceOzoneSurfaceless::PostSubBufferAsync(
371 int x, 370 int x,
372 int y, 371 int y,
(...skipping 15 matching lines...) Expand all
388 unsubmitted_frames_.weak_erase(unsubmitted_frames_.begin()); 387 unsubmitted_frames_.weak_erase(unsubmitted_frames_.begin());
389 swap_buffers_pending_ = true; 388 swap_buffers_pending_ = true;
390 389
391 if (!frame->ScheduleOverlayPlanes(widget_)) { 390 if (!frame->ScheduleOverlayPlanes(widget_)) {
392 // |callback| is a wrapper for SwapCompleted(). Call it to properly 391 // |callback| is a wrapper for SwapCompleted(). Call it to properly
393 // propagate the failed state. 392 // propagate the failed state.
394 frame->callback.Run(gfx::SwapResult::SWAP_FAILED); 393 frame->callback.Run(gfx::SwapResult::SWAP_FAILED);
395 return; 394 return;
396 } 395 }
397 396
397 if (ozone_surface_->IsUniversalDisplayLinkDevice())
398 glFinish();
399
398 ozone_surface_->OnSwapBuffersAsync(frame->callback); 400 ozone_surface_->OnSwapBuffersAsync(frame->callback);
399 } 401 }
400 } 402 }
401 403
402 EGLSyncKHR GLSurfaceOzoneSurfaceless::InsertFence() { 404 EGLSyncKHR GLSurfaceOzoneSurfaceless::InsertFence() {
403 const EGLint attrib_list[] = {EGL_SYNC_CONDITION_KHR, 405 const EGLint attrib_list[] = {EGL_SYNC_CONDITION_KHR,
404 EGL_SYNC_PRIOR_COMMANDS_IMPLICIT_EXTERNAL_ARM, 406 EGL_SYNC_PRIOR_COMMANDS_IMPLICIT_EXTERNAL_ARM,
405 EGL_NONE}; 407 EGL_NONE};
406 return eglCreateSyncKHR(GetDisplay(), EGL_SYNC_FENCE_KHR, attrib_list); 408 return eglCreateSyncKHR(GetDisplay(), EGL_SYNC_FENCE_KHR, attrib_list);
407 } 409 }
(...skipping 315 matching lines...) Expand 10 before | Expand all | Expand 10 after
723 } 725 }
724 } 726 }
725 727
726 EGLNativeDisplayType GetPlatformDefaultEGLNativeDisplay() { 728 EGLNativeDisplayType GetPlatformDefaultEGLNativeDisplay() {
727 return ui::OzonePlatform::GetInstance() 729 return ui::OzonePlatform::GetInstance()
728 ->GetSurfaceFactoryOzone() 730 ->GetSurfaceFactoryOzone()
729 ->GetNativeDisplay(); 731 ->GetNativeDisplay();
730 } 732 }
731 733
732 } // namespace gfx 734 } // namespace gfx
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698