Hi,
I am using PVRScope & PVRTune to get PowerVR Counters on a Odroid XU+E board with SGX544 GPU.
PVRTune Documentation say about “Frame Time Counter” - "The frame time is calculated based on the time the GPU is idle and active (TA & 3D Time). I want to know how this calculation is being performed.
Following is simultaneous counter values (of Group 0) when Anomaly 2 Android Game is running on full GPU & CPU frequency -
Frame time : 0.009103
Frames per second (FPS) : 109.848488
GPU task load: 2D core : 0.000000 %
GPU task load: 3D core : 79.608833 %
GPU task load: Compute core : 0.000000 %
GPU task load: TA core : 45.282978 %
GPU task time: 2D core : 0.000000
GPU task time: 3D core : 0.840669
GPU task time: Compute core : 0.000000
GPU task time: TA core : 0.478188
SPM : 0.000000 %
ISP load : 4.860190 %
TA load : 31.711254 %
USSE clock cycles per pixel : 1.579859
USSE clock cycles per vertex : 69.105301
USSE load: Pixel : 34.233200 %
USSE load: Vertex : 7.979070 %
Vertices per frame : 80777.015625 ( 80554.632812)
Vertices per second : 8873233.000000 ( 8871863.000000)
As you can see the TA Load and 3D Time load is greater than 100% when sum together. Is this an indication that TA and 3D are pipelined and performing parallel processing?
I can see “GPU task time: 3D core” & “GPU task time: TA core” and 3D time, but I have no clue about these counters. How can “Frame time” be obtained from them and what unit are these time reported (millisecond, microsecond)??
I need this understanding in my research.
Thanks For Your Time.
Regards
Anuj Pathania
Hi Anuj,
As you can see the TA Load and 3D Time load is greater than 100% when sum together. Is this an indication that TA and 3D are pipelined and performing parallel processing?
As you've assumed, the TA and 3D workloads are processed in parallel. If you've not already done so, I would recommend reading our "PowerVR Series 5 Architecture Guide for Developers" document (available in our SDK and online here) to better understand how PowerVR GPUs process work.
How can "Frame time" be obtained from them and what unit are these time reported (millisecond, microsecond)?
If you want to calculate the number of ms the GPU takes to process a frame, you use the GPU idle percentage and total frame time (including v-sync), e.g. total_frame_time * ((100-gpu_idle_percentage) * 0.01). Keep in mind that the time taken to complete a given task will depend on how much work the GPU is processing in parallel.
Regards,
Joe