unsuccessful experimentation

This commit is contained in:
Asuro
2025-02-18 00:03:09 +01:00
parent fb5851020f
commit 2c32a261c1
12 changed files with 111 additions and 34 deletions

View File

@@ -1,6 +1,60 @@
#pragma once
#include "bx/timer.h"
#include <cstdint>
#define START_PERF() int64_t __perfStart = bx::getHPCounter();
#define END_PERF(counters, idx, frame) counters[(int32_t)idx].Write(bx::getHPCounter() - __perfStart, frame);
enum class PerfCounterType
{
WindowEvents,
GameDelta,
COUNT
};
struct PerfCounter
{
static constexpr int32_t TimeWindow = 128;
int64_t Times[TimeWindow]{0};
void Write(int64_t value, uint64_t frameCounter)
{
Times[frameCounter % TimeWindow] = value;
}
float GetAverage()
{
int64_t sum = 0;
for (int32_t i = 0; i < TimeWindow; ++i)
{
sum += Times[i];
}
return (double)sum / bx::getHPFrequency();
}
float GetMin()
{
int64_t min = INT64_MAX;
for (int32_t i = 0; i < TimeWindow; ++i)
{
if (Times[i] < min)
{
min = Times[i];
}
}
return (double)min / bx::getHPFrequency();
}
float GetMax()
{
int64_t max = 0;
for (int32_t i = 0; i < TimeWindow; ++i)
{
if (Times[i] > max)
{
max = Times[i];
}
}
return (double)max / bx::getHPFrequency();
}
};
struct SharedWindowData
{
void* Handle = nullptr;
@@ -12,6 +66,8 @@ struct SharedWindowData
bool LastHeldMouseButtons[8]{false};
float MouseDeltaX = 0.0f;
float MouseDeltaY = 0.0f;
uint64_t FrameCounter = 0;
PerfCounter PerfCounters[(int32_t)PerfCounterType::COUNT] = {0};
};
struct FileChangeNotification
@@ -39,9 +95,9 @@ struct GameData
struct SharedData
{
GameData Game;
SharedDevData Dev;
SharedWindowData Window;
GameData Game;
};
typedef void (*Startup)(SharedData& shared);