#include "ui/gl/gl_surface_presentation_helper.h"
#include <utility>
#include "base/functional/bind.h"
#include "base/logging.h"
#include "base/task/single_thread_task_runner.h"
#include "build/build_config.h"
#include "ui/gfx/vsync_provider.h"
#include "ui/gl/egl_timestamps.h"
#include "ui/gl/gl_context.h"
#include "ui/gl/gl_fence.h"
#include "ui/gl/gpu_timing.h"
namespace gl {
GLSurfacePresentationHelper::ScopedSwapBuffers::ScopedSwapBuffers(
GLSurfacePresentationHelper* helper,
GLSurface::PresentationCallback callback)
: … { … }
GLSurfacePresentationHelper::ScopedSwapBuffers::ScopedSwapBuffers(
GLSurfacePresentationHelper* helper,
GLSurface::PresentationCallback callback,
int frame_id)
: … { … }
GLSurfacePresentationHelper::ScopedSwapBuffers::~ScopedSwapBuffers() { … }
GLSurfacePresentationHelper::Frame::Frame(Frame&& other) = default;
GLSurfacePresentationHelper::Frame::Frame(
int frame_id,
GLSurface::PresentationCallback callback)
: … { … }
GLSurfacePresentationHelper::Frame::Frame(
std::unique_ptr<GPUTimer>&& timer,
GLSurface::PresentationCallback callback)
: … { … }
GLSurfacePresentationHelper::Frame::Frame(
std::unique_ptr<GLFence>&& fence,
GLSurface::PresentationCallback callback)
: … { … }
GLSurfacePresentationHelper::Frame::Frame(
GLSurface::PresentationCallback callback)
: … { … }
GLSurfacePresentationHelper::Frame::~Frame() = default;
GLSurfacePresentationHelper::Frame& GLSurfacePresentationHelper::Frame::
operator=(Frame&& other) = default;
bool GLSurfacePresentationHelper::GetFrameTimestampInfoIfAvailable(
const Frame& frame,
base::TimeTicks* timestamp,
base::TimeDelta* interval,
base::TimeTicks* writes_done,
uint32_t* flags) { … }
void GLSurfacePresentationHelper::Frame::Destroy(bool has_context) { … }
GLSurfacePresentationHelper::GLSurfacePresentationHelper(
gfx::VSyncProvider* vsync_provider)
: … { … }
GLSurfacePresentationHelper::GLSurfacePresentationHelper(
base::TimeTicks timebase,
base::TimeDelta interval)
: … { … }
GLSurfacePresentationHelper::~GLSurfacePresentationHelper() { … }
void GLSurfacePresentationHelper::OnMakeCurrent(GLContext* context,
GLSurface* surface) { … }
void GLSurfacePresentationHelper::PreSwapBuffers(
GLSurface::PresentationCallback callback,
int frame_id) { … }
void GLSurfacePresentationHelper::PostSwapBuffers(gfx::SwapResult result) { … }
void GLSurfacePresentationHelper::CheckPendingFrames() { … }
void GLSurfacePresentationHelper::CheckPendingFramesCallback() { … }
void GLSurfacePresentationHelper::UpdateVSyncCallback(
bool should_check_pending_frames,
const base::TimeTicks timebase,
const base::TimeDelta interval) { … }
void GLSurfacePresentationHelper::ScheduleCheckPendingFrames(
bool align_with_next_vsync) { … }
}