-
Notifications
You must be signed in to change notification settings - Fork 6k
Conversation
has_started_frame_ = true; | ||
|
||
FML_DCHECK(!active_frame_.has_value()); | ||
FML_DCHECK(query != 0); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
this is redundant with the query == 0
check above
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done
std::deque<uint32_t> pending_traces_; | ||
std::optional<uint32_t> active_frame_ = std::nullopt; | ||
std::thread::id raster_thread_; | ||
bool has_started_frame_ = false; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
has_started_frame_
can be removed. The code can instead check whether active_frame_
contains a value.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done
} | ||
|
||
// For reasons unknown to me, querying the state of more than | ||
// on query object per frame causes crashes on a Pixel 6 pro. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
typo: "on" -> "one"
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done
// For reasons unknown to me, querying the state of more than | ||
// on query object per frame causes crashes on a Pixel 6 pro. | ||
// It does not crash on an S10. | ||
auto latest_query = pending_traces_.front(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think latest_query
implies that this is the most recent query, when it's actually the least recent.
I'd rename this to query
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done
|
||
// For reasons unknown to me, querying the state of more than | ||
// on query object per frame causes crashes on a Pixel 6 pro. | ||
// It does not crash on an S10. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Where exactly is the crash happening?
If the tracer can only consume one pending query per MarkFrameStart
call, then that means the pending traces queue will grow unbounded each time a query result is unavailable at the next MarkFrameStart
.
This actually works OK on the Pixel 7s we have in the device lab. On a Pixel 6 pro the crash is almost immediate and appears to be in the driver:
Based on some other reports, this seems like a fiddly API (https://bugs.chromium.org/p/chromium/issues/detail?id=453965) . I'm going to make usage opt in so we can use it on our benchmarks when necessary without worrying about broader device compatibility. |
return; | ||
} | ||
|
||
FML_DCHECK(!active_frame_.has_value()); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This duplicates the active_frame_.has_value()
check above
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done
|
||
void GPUTracerGLES::MarkFrameEnd(const ProcTableGLES& gl) { | ||
if (!enabled_ || std::this_thread::get_id() != raster_thread_ || | ||
!active_frame_.has_value() || !active_frame_.has_value()) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Remove the second copy of !active_frame_.has_value()
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done
…136982) flutter/engine@d46933e...b27e1b3 2023-10-20 47866232+chunhtai@users.noreply.github.com Add link support in web accessibility (flutter/engine#46117) 2023-10-20 mdebbar@google.com [web] Support `flutterViewId` in platform view messages (flutter/engine#46891) 2023-10-20 jacksongardner@google.com Fix async image loading issues in skwasm. (flutter/engine#47117) 2023-10-20 flar@google.com Add option to save Impeller failure images in rendertests (flutter/engine#47142) 2023-10-20 skia-flutter-autoroll@skia.org Roll Skia from b960e9140f56 to 9ffd5ef9a9ed (3 revisions) (flutter/engine#47167) 2023-10-20 chris@bracken.jp [macOS] Eliminate extraneous loadView calls (flutter/engine#47166) 2023-10-20 skia-flutter-autoroll@skia.org Roll Dart SDK from ba96a157a8eb to 53fee35b299f (1 revision) (flutter/engine#47165) 2023-10-20 jonahwilliams@google.com [Impeller] GPU Tracer for GLES. (flutter/engine#47080) 2023-10-20 skia-flutter-autoroll@skia.org Roll Skia from de628929015d to b960e9140f56 (2 revisions) (flutter/engine#47164) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/flutter-engine-flutter-autoroll Please CC jimgraham@google.com,rmistry@google.com,zra@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://issues.skia.org/issues/new?component=1389291&template=1850622 Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
Trace GPU execution time on GLES using GL_EXT_disjoint_timer_query. This requires a per-app opt in from the Android Manifest with the key `"io.flutter.embedding.android.EnableOpenGLGPUTracing` set to true.
Fixes breakages from: * flutter/engine#47080 * flutter/engine#47247 * flutter/engine#47278
Fixes breakages from: * flutter/engine#47080 * flutter/engine#47247 * flutter/engine#47278
Fixes breakages from: * flutter/engine#47080 * flutter/engine#47247 * flutter/engine#47278
bdero/impeller-cmake#20 Fixes breakages from: * #47080 * #47247 * #47278
Trace GPU execution time on GLES using GL_EXT_disjoint_timer_query. This requires a per-app opt in from the Android Manifest with the key
"io.flutter.embedding.android.EnableOpenGLGPUTracing
set to true.