Commit f6b537ed authored by kylechar's avatar kylechar Committed by Commit Bot

Adjust Graphics.Pipeline.DrawAndSwap trace.

Adjust the events to be more accurate. "WaitForSwap" starts when display
compositor thread starts issuing the swap buffers command. "Swap" starts
when the GPU thread starts running the swap buffers task.
"WaitForPresentation" starts when the swap buffers command has been
issued and ends at presentation time.

Bug: none
Change-Id: Ia1aa9f64f946c24b03b8c720b72ca35673f86e56
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1876973Reviewed-by: default avatarSadrul Chowdhury <sadrul@chromium.org>
Commit-Queue: Sadrul Chowdhury <sadrul@chromium.org>
Cr-Commit-Position: refs/heads/master@{#709914}
parent 9109135d
...@@ -175,6 +175,7 @@ Display::Display( ...@@ -175,6 +175,7 @@ Display::Display(
scheduler_(std::move(scheduler)), scheduler_(std::move(scheduler)),
current_task_runner_(std::move(current_task_runner)), current_task_runner_(std::move(current_task_runner)),
swapped_trace_id_(GetStartingTraceId()), swapped_trace_id_(GetStartingTraceId()),
last_swap_ack_trace_id_(swapped_trace_id_),
last_presented_trace_id_(swapped_trace_id_) { last_presented_trace_id_(swapped_trace_id_) {
DCHECK(output_surface_); DCHECK(output_surface_);
DCHECK(frame_sink_id_.is_valid()); DCHECK(frame_sink_id_.is_valid());
...@@ -616,7 +617,7 @@ bool Display::DrawAndSwap() { ...@@ -616,7 +617,7 @@ bool Display::DrawAndSwap() {
if (should_swap) { if (should_swap) {
TRACE_EVENT_ASYNC_STEP_INTO0("viz,benchmark", TRACE_EVENT_ASYNC_STEP_INTO0("viz,benchmark",
"Graphics.Pipeline.DrawAndSwap", "Graphics.Pipeline.DrawAndSwap",
swapped_trace_id_, "Swap"); swapped_trace_id_, "WaitForSwap");
swapped_since_resize_ = true; swapped_since_resize_ = true;
ui::LatencyInfo::TraceIntermediateFlowEvents(frame.metadata.latency_info, ui::LatencyInfo::TraceIntermediateFlowEvents(frame.metadata.latency_info,
...@@ -626,9 +627,6 @@ bool Display::DrawAndSwap() { ...@@ -626,9 +627,6 @@ bool Display::DrawAndSwap() {
renderer_->SwapBuffers(std::move(frame.metadata.latency_info)); renderer_->SwapBuffers(std::move(frame.metadata.latency_info));
if (scheduler_) if (scheduler_)
scheduler_->DidSwapBuffers(); scheduler_->DidSwapBuffers();
TRACE_EVENT_ASYNC_STEP_INTO0("viz,benchmark",
"Graphics.Pipeline.DrawAndSwap",
swapped_trace_id_, "WaitForPresentation");
} else { } else {
TRACE_EVENT_INSTANT0("viz", "Swap skipped.", TRACE_EVENT_SCOPE_THREAD); TRACE_EVENT_INSTANT0("viz", "Swap skipped.", TRACE_EVENT_SCOPE_THREAD);
...@@ -677,6 +675,14 @@ void Display::DidReceiveSwapBuffersAck(const gfx::SwapTimings& timings) { ...@@ -677,6 +675,14 @@ void Display::DidReceiveSwapBuffersAck(const gfx::SwapTimings& timings) {
// DidReceiveSwapBuffersAck. // DidReceiveSwapBuffersAck.
DCHECK(!pending_presentation_group_timings_.empty()); DCHECK(!pending_presentation_group_timings_.empty());
++last_swap_ack_trace_id_;
TRACE_EVENT_ASYNC_STEP_INTO_WITH_TIMESTAMP0(
"viz,benchmark", "Graphics.Pipeline.DrawAndSwap", last_swap_ack_trace_id_,
"Swap", timings.swap_start);
TRACE_EVENT_ASYNC_STEP_INTO_WITH_TIMESTAMP0(
"viz,benchmark", "Graphics.Pipeline.DrawAndSwap", last_swap_ack_trace_id_,
"WaitForPresentation", timings.swap_end);
if (scheduler_) { if (scheduler_) {
scheduler_->DidReceiveSwapBuffersAck(); scheduler_->DidReceiveSwapBuffersAck();
if (no_pending_swaps_callback_ && scheduler_->pending_swaps() == 0) if (no_pending_swaps_callback_ && scheduler_->pending_swaps() == 0)
......
...@@ -261,6 +261,7 @@ class VIZ_SERVICE_EXPORT Display : public DisplaySchedulerClient, ...@@ -261,6 +261,7 @@ class VIZ_SERVICE_EXPORT Display : public DisplaySchedulerClient,
base::OnceClosure no_pending_swaps_callback_; base::OnceClosure no_pending_swaps_callback_;
int64_t swapped_trace_id_ = 0; int64_t swapped_trace_id_ = 0;
int64_t last_swap_ack_trace_id_ = 0;
int64_t last_presented_trace_id_ = 0; int64_t last_presented_trace_id_ = 0;
DISALLOW_COPY_AND_ASSIGN(Display); DISALLOW_COPY_AND_ASSIGN(Display);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment