Skip to content
  • Mark Janes's avatar
    intel: Print GPU timing data based on INTEL_MEASURE · 0f4143ec
    Mark Janes authored
    
    
    This infrastructure collects GPU timestamps over common intervals, and
    generates a CSV report to show how long rendering took.  The overhead
    of collection is limited to the flushing that is required at the
    interval boundaries for accurate timestamps.
    
    By default, timing data is sent to stderr.  To direct output to a
    file:
     INTEL_MEASURE=file=/tmp/measure.csv {workload}
    
    To begin capturing timestamps at a particular frame:
     INTEL_MEASURE=file=/tmp/measure.csv,start=15 {workload}
    
    To capture only 23 frames:
     INTEL_MEASURE=count=23 {workload}
    
    To capture frames 15-37, stopping before frame 38:
     INTEL_MEASURE=start=15,count=23 {workload}
    
    Designate an asynchronous control file with:
     INTEL_MEASURE=control=path/to/control.fifo {workload}
    
    As the workload runs, enable capture for 5 frames with:
    
     $ echo 5 > path/to/control.fifo
    
    Enable unbounded capture:
    
     $ echo -1 > path/to/control.fifo
    
    and disable with:
    
     $ echo 0 > path/to/control.fifo
    
    Select the boundaries of each snapshot with:
     INTEL_MEASURE=draw  : DEFAULT - Collects timings for every render
     INTEL_MEASURE=rt    : Collects timings when the render target changes
     INTEL_MEASURE=batch : Collects timings when batches are submitted
     INTEL_MEASURE=frame : Collects timings at frame boundaries
    
    With INTEL_MEASURE=interval=5, the duration of 5 events will be
    combined into a single record in the output.  When possible, a single
    start and end event will be submitted to the GPU to minimize
    stalling.  Combined events will not span batches, except in
    the case of INTEL_MEASURE=frame.
    
    Acked-by: Kenneth Graunke's avatarKenneth Graunke <kenneth@whitecape.org>
    Part-of: <mesa/mesa!7354>
    0f4143ec