1#!/usr/bin/env python3 2# Copyright (C) 2019 The Android Open Source Project 3# 4# Licensed under the Apache License, Version 2.0 (the "License"); 5# you may not use this file except in compliance with the License. 6# You may obtain a copy of the License at 7# 8# http://www.apache.org/licenses/LICENSE-2.0 9# 10# Unless required by applicable law or agreed to in writing, software 11# distributed under the License is distributed on an "AS IS" BASIS, 12# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13# See the License for the specific language governing permissions and 14# limitations under the License. 15 16from os import sys, path 17 18import synth_common 19 20 21class BufferEvent: 22 UNSPECIFIED = 0 23 DEQUEUE = 1 24 QUEUE = 2 25 POST = 3 26 ACQUIRE_FENCE = 4 27 LATCH = 5 28 HWC_COMPOSITION_QUEUED = 6 29 FALLBACK_COMPOSITION = 7 30 PRESENT_FENCE = 8 31 RELEASE_FENCE = 9 32 MODIFY = 10 33 DETACH = 11 34 ATTACH = 12 35 CANCEL = 13 36 37 38trace = synth_common.create_trace() 39# Layer 1 40trace.add_buffer_event_packet( 41 ts=1, 42 buffer_id=1, 43 layer_name="layer1", 44 frame_number=11, 45 event_type=BufferEvent.DEQUEUE, 46 duration=0) 47trace.add_buffer_event_packet( 48 ts=4, 49 buffer_id=1, 50 layer_name="layer1", 51 frame_number=11, 52 event_type=BufferEvent.QUEUE, 53 duration=0) 54trace.add_buffer_event_packet( 55 ts=6, 56 buffer_id=1, 57 layer_name="layer1", 58 frame_number=11, 59 event_type=BufferEvent.ACQUIRE_FENCE, 60 duration=0) 61trace.add_buffer_event_packet( 62 ts=8, 63 buffer_id=1, 64 layer_name="layer1", 65 frame_number=11, 66 event_type=BufferEvent.LATCH, 67 duration=0) 68trace.add_buffer_event_packet( 69 ts=14, 70 buffer_id=1, 71 layer_name="layer1", 72 frame_number=11, 73 event_type=BufferEvent.PRESENT_FENCE, 74 duration=0) 75# Layer 2 76trace.add_buffer_event_packet( 77 ts=6, 78 buffer_id=2, 79 layer_name="layer2", 80 frame_number=12, 81 event_type=BufferEvent.DEQUEUE, 82 duration=0) 83trace.add_buffer_event_packet( 84 ts=8, 85 buffer_id=2, 86 layer_name="layer2", 87 frame_number=12, 88 event_type=BufferEvent.ACQUIRE_FENCE, 89 duration=0) 90trace.add_buffer_event_packet( 91 ts=9, 92 buffer_id=2, 93 layer_name="layer2", 94 frame_number=12, 95 event_type=BufferEvent.QUEUE, 96 duration=0) 97trace.add_buffer_event_packet( 98 ts=11, 99 buffer_id=2, 100 layer_name="layer2", 101 frame_number=12, 102 event_type=BufferEvent.LATCH, 103 duration=0) 104trace.add_buffer_event_packet( 105 ts=16, 106 buffer_id=2, 107 layer_name="layer2", 108 frame_number=12, 109 event_type=BufferEvent.PRESENT_FENCE, 110 duration=0) 111# Next Present of layer 1 112trace.add_buffer_event_packet( 113 ts=24, 114 buffer_id=1, 115 layer_name="layer1", 116 frame_number=13, 117 event_type=BufferEvent.PRESENT_FENCE, 118 duration=0) 119# Missing id. 120trace.add_buffer_event_packet( 121 ts=6, 122 buffer_id=-1, 123 layer_name="layer6", 124 frame_number=14, 125 event_type=BufferEvent.HWC_COMPOSITION_QUEUED, 126 duration=0) 127# Missing type. 128trace.add_buffer_event_packet( 129 ts=7, 130 buffer_id=7, 131 layer_name="layer7", 132 frame_number=15, 133 event_type=-1, 134 duration=0) 135# Missing Acquire 136trace.add_buffer_event_packet( 137 ts=31, 138 buffer_id=1, 139 layer_name="layer1", 140 frame_number=21, 141 event_type=BufferEvent.DEQUEUE, 142 duration=0) 143trace.add_buffer_event_packet( 144 ts=34, 145 buffer_id=1, 146 layer_name="layer1", 147 frame_number=21, 148 event_type=BufferEvent.QUEUE, 149 duration=0) 150trace.add_buffer_event_packet( 151 ts=37, 152 buffer_id=1, 153 layer_name="layer1", 154 frame_number=22, 155 event_type=BufferEvent.DEQUEUE, 156 duration=0) 157trace.add_buffer_event_packet( 158 ts=41, 159 buffer_id=1, 160 layer_name="layer1", 161 frame_number=22, 162 event_type=BufferEvent.QUEUE, 163 duration=0) 164trace.add_buffer_event_packet( 165 ts=46, 166 buffer_id=1, 167 layer_name="layer1", 168 frame_number=22, 169 event_type=BufferEvent.ACQUIRE_FENCE, 170 duration=0) 171# Missing queue with acquire 172trace.add_buffer_event_packet( 173 ts=53, 174 buffer_id=2, 175 layer_name="layer2", 176 frame_number=24, 177 event_type=BufferEvent.DEQUEUE, 178 duration=0) 179trace.add_buffer_event_packet( 180 ts=59, 181 buffer_id=2, 182 layer_name="layer2", 183 frame_number=24, 184 event_type=BufferEvent.ACQUIRE_FENCE, 185 duration=0) 186trace.add_buffer_event_packet( 187 ts=61, 188 buffer_id=2, 189 layer_name="layer2", 190 frame_number=24, 191 event_type=BufferEvent.LATCH, 192 duration=0) 193# Missing queue without acquire 194trace.add_buffer_event_packet( 195 ts=63, 196 buffer_id=1, 197 layer_name="layer1", 198 frame_number=25, 199 event_type=BufferEvent.DEQUEUE, 200 duration=0) 201trace.add_buffer_event_packet( 202 ts=73, 203 buffer_id=1, 204 layer_name="layer1", 205 frame_number=26, 206 event_type=BufferEvent.DEQUEUE, 207 duration=0) 208trace.add_buffer_event_packet( 209 ts=75, 210 buffer_id=1, 211 layer_name="layer1", 212 frame_number=26, 213 event_type=BufferEvent.QUEUE, 214 duration=0) 215trace.add_buffer_event_packet( 216 ts=79, 217 buffer_id=1, 218 layer_name="layer1", 219 frame_number=26, 220 event_type=BufferEvent.ACQUIRE_FENCE, 221 duration=0) 222# Same buffer in multiple layers 223trace.add_buffer_event_packet( 224 ts=81, 225 buffer_id=1, 226 layer_name="layer1", 227 frame_number=30, 228 event_type=BufferEvent.DEQUEUE, 229 duration=0) 230trace.add_buffer_event_packet( 231 ts=83, 232 buffer_id=1, 233 layer_name="layer1", 234 frame_number=30, 235 event_type=BufferEvent.QUEUE, 236 duration=0) 237trace.add_buffer_event_packet( 238 ts=90, 239 buffer_id=1, 240 layer_name="layer2", 241 frame_number=35, 242 event_type=BufferEvent.DEQUEUE, 243 duration=0) 244trace.add_buffer_event_packet( 245 ts=92, 246 buffer_id=1, 247 layer_name="layer2", 248 frame_number=35, 249 event_type=BufferEvent.QUEUE, 250 duration=0) 251sys.stdout.buffer.write(trace.trace.SerializeToString()) 252