From bedd6906eabdd513042d6a178d4dc56a3a41d1d3 Mon Sep 17 00:00:00 2001 From: Fox Caminiti Date: Fri, 16 Dec 2022 20:16:43 -0500 Subject: v3, file/build organization --- src/include/debug.h | 99 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 99 insertions(+) create mode 100644 src/include/debug.h (limited to 'src/include/debug.h') diff --git a/src/include/debug.h b/src/include/debug.h new file mode 100644 index 0000000..6321679 --- /dev/null +++ b/src/include/debug.h @@ -0,0 +1,99 @@ +#if DEBUG + +static int32 *debugnull = NULL; +#define Assert(Expression) if(!(Expression)) {*debugnull = 21;} + +enum valtype { + d_float, + d_uint, + d_int +}; + +union debugval { + real32 f; + uint32 u; + int32 i; +}; + +// things that get cleared every frame with the UI +struct debug_temp +{ + valtype DebugPropertyType[16]; + debugval Val[16]; + char *String[16]; + uint32 WatchedProperties; +}; + +struct project_debug +{ + debug_temp Temp; + bool32 ToggleWindow = 1; + bool32 ReloadUI = true; + bool32 NoThreading = 0; + bool32 DisableAlpha = 0; + uint64 PixelCountTransparent; + uint64 PixelCountRendered; + uint64 PixelCountChecked; + // NOTE(fox): Pixel count isn't thread safe; don't use with multithreading! + uint64 LayerCycleCount[64]; + uint32 UndoState = 0; + uint64 ScratchSize[6]; + uint32 ScratchState = 0; +}; + +static project_debug Debug; + +static void +DebugWatchVar(char *Name, void *Address, valtype Type) { + uint32 i = Debug.Temp.WatchedProperties; + Debug.Temp.String[i] = Name; + if (Type == d_float) + Debug.Temp.Val[i].f = *(real32 *)Address; + if (Type == d_uint) + Debug.Temp.Val[i].u = *(uint32 *)Address; + if (Type == d_int) + Debug.Temp.Val[i].i = *(int32 *)Address; + Debug.Temp.DebugPropertyType[i] = Type; + Debug.Temp.WatchedProperties++; +} + +#else + +#define Assert(Expression) + +enum valtype { +}; + +union debugval { +}; + +struct debug_temp +{ +}; + +struct project_debug +{ +}; + +static void +DebugWatchVar(char *Name, void *Address, valtype Type) { +} + +static void +DebugPrintMemoryUsage(memory Memory) { +} +#endif + +#ifdef PERF + +struct perf_stats +{ + uint64 PixelCountTransparent; + uint64 PixelCountRendered; + uint64 PixelCountChecked; +}; + +static uint64 Test; + +#endif + -- cgit v1.2.3