| 177 | } |
| 178 | |
| 179 | bool ProfilerGPU::GetLastFrameData(float& drawTimeMs, float& presentTimeMs, RenderStatsData& statsData) |
| 180 | { |
| 181 | uint64 maxFrame = 0; |
| 182 | int32 maxFrameIndex = -1; |
| 183 | auto& frames = Buffers; |
| 184 | for (uint32 i = 0; i < ARRAY_COUNT(frames); i++) |
| 185 | { |
| 186 | if (frames[i].HasData() && frames[i].FrameIndex > maxFrame) |
| 187 | { |
| 188 | maxFrame = frames[i].FrameIndex; |
| 189 | maxFrameIndex = i; |
| 190 | } |
| 191 | } |
| 192 | if (maxFrameIndex != -1) |
| 193 | { |
| 194 | auto& frame = frames[maxFrameIndex]; |
| 195 | const auto root = frame.Get(0); |
| 196 | drawTimeMs = root->Time; |
| 197 | presentTimeMs = frame.PresentTime; |
| 198 | statsData = root->Stats; |
| 199 | return true; |
| 200 | } |
| 201 | |
| 202 | // No data |
| 203 | drawTimeMs = 0.0f; |
| 204 | presentTimeMs = 0.0f; |
| 205 | Platform::MemoryClear(&statsData, sizeof(statsData)); |
| 206 | return false; |
| 207 | } |
| 208 | |
| 209 | struct GraphicsDumping |
| 210 | { |
nothing calls this directly
no test coverage detected