Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,12 @@

# Python directories
__pycache__
pve

# CMake build directories
build*

# Data files and build outputs
*.gputl
*.log
*.metadata
*.perfetto
Expand Down
1 change: 1 addition & 0 deletions lgl_mali_timeline_viewer.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
#!/usr/bin/env python3
# SPDX-License-Identifier: MIT
# -----------------------------------------------------------------------------
# Copyright (c) 2024-2025 Arm Limited
Expand Down
8 changes: 8 additions & 0 deletions lglpy/android/adb.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
from collections.abc import Iterable
import os
import shlex
import shutil
import subprocess as sp
from typing import Optional

Expand Down Expand Up @@ -64,10 +65,17 @@ def __init__(self, device: Optional[str] = None,
None for non-specific use.
package: The package name, as returned by `adb shell pm list
packages` or None for non-specific use.

Raise:
FileNotFoundError will be raised if adb is not available on the
environment PATH.
'''
self.device = device
self.package = package

if not shutil.which('adb'):
raise FileNotFoundError('Android adb not found on the PATH')

def set_device(self, device: Optional[str]) -> None:
'''
Set the device for this connection.
Expand Down
6 changes: 0 additions & 6 deletions lglpy/android/perfetto.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,6 @@ data_sources: {
producer_name_filter: "{{PACKAGE}}"
}

data_sources: {
config {
name: "android.surfaceflinger.frametimeline"
}
}

duration_ms: 60000
write_into_file: true
file_write_period_ms: 1000
Expand Down
5 changes: 4 additions & 1 deletion lglpy/comms/service_gpu_timeline.py
Original file line number Diff line number Diff line change
Expand Up @@ -327,7 +327,10 @@ def handle_header(self, msg: Any) -> None:
msg: The Python decode of a Timeline PB payload.
'''
assert msg.version_no == timeline_pb2.HeaderVersionNo.version_1
assert not self.seen_header
assert not self.seen_header, (
"Handshaking header has already been seen. To start a new "
"timeline, you need to restart this script."
)

self.seen_header = True

Expand Down
2 changes: 1 addition & 1 deletion lglpy/timeline/gui/timeline/view.py
Original file line number Diff line number Diff line change
Expand Up @@ -438,7 +438,7 @@ def load(self, trace_data=None):
workload = 'window'
style = self.timeline_styles.get_style('Submit', 0, workload)
draw = TLSpec.get_box(
'Submit', stime, etime, style, '', '', submit)
'Submit', stime, etime, style, '', '', present)
channel.add_object(draw)

# Add scheduling channels
Expand Down
2 changes: 1 addition & 1 deletion lglpy/timeline/gui/window.py
Original file line number Diff line number Diff line change
Expand Up @@ -339,7 +339,7 @@ def load_file(self, trace_file, metadata_file=None):
if not metadata_file:
postfix = '.perfetto'
if trace_file.endswith(postfix):
metadata_file = f'{trace_file[:-len(postfix)]}.gputl'
metadata_file = f'{trace_file[:-len(postfix)]}.metadata'

if not os.path.exists(metadata_file):
metadata_file = None
Expand Down