re implement debugger in C

This commit is contained in:
Greg Wells
2025-05-21 10:16:58 -04:00
parent fa58a2f2d6
commit f97e26d019
12 changed files with 158 additions and 255 deletions

View File

@@ -1,17 +1,11 @@
#undef GN_UTILS_CPP
#include "gryphn_debugger.h"
#include "core/gryphn_platform_functions.h"
#include "stdio.h"
static gnReturnCode (*_gnCreateDebugger)(gnDebugger* debugger, const struct gnDebuggerInfo_t info);
static void (*_gnDestroyDebugger)(gnDebugger* debugger);
void gn_load_functions() {
gnReturnCode gnCreateDebugger(gnDebugger* debugger, gnInstance* instance, const struct gnDebuggerInfo_t info) {
debugger->instance = instance;
return instance->functions->_gnCreateDebugger(debugger, instance, info);
}
void gnDestroyDebugger(gnDebugger* debugger) {
debugger->instance->functions->_gnDestroyDebugger(debugger);
}
// void gnAddDebugLayer(gnDebugger& debugger, const gnString& layer) {
// gnListAdd(debugger.debug_layers, layer);
// }
// const gnList<gnString>& gnDebuggerGetDebugLayers(gnDebugger& debugger) {
// return debugger.debug_layers;
// }

View File

@@ -1,17 +1,53 @@
#pragma once
#include "utils/strings/gryphn_string.h"
#include "utils/gryphn_error_code.h"
#include "core/instance/gryphn_instance.h"
struct gnPlatformDebugger;
typedef enum gnMessageSeverity_e {
GN_MESSAGE_VERBOSE = 0x00000001,
GN_MESSAGE_INFO = 0x00000010,
GN_MESSAGE_WARNING = 0x00000100,
GN_MESSAGE_ERROR = 0x00001000,
} gnMessageSeverity;
typedef enum gnMessageType_e {
GN_DEBUG_MESSAGE_GENERAL = 0x00000001,
GN_DEBUG_MESSAGE_VALIDATION = 0x00000002,
GN_DEBUG_MESSAGE_PERFORMANCE = 0x00000004,
// GN_DEBUG_MESSAGE_ADDRESS_BINDING = 0x00000008, vulkan had this but imma leave it out
} gnMessageType;
typedef struct gnMessageData {
// const char* pMessageIdName;
// int32_t messageIdNumber;
// uint32_t queueLabelCount;
// const VkDebugUtilsLabelEXT* pQueueLabels;
// uint32_t cmdBufLabelCount;
// const VkDebugUtilsLabelEXT* pCmdBufLabels;
// uint32_t objectCount;
// const VkDebugUtilsObjectNameInfoEXT* pObjects;
//
// If i ever figure out what this shit does il add it
gnString message;
} gnMessageData;
typedef gnBool (*gnDebuggerCallback)(
gnMessageSeverity messageSeverity,
gnMessageType messageType,
gnMessageData messageData,
void* userData);
typedef struct gnDebuggerInfo_t {
int layerCount;
gnString* layerNames;
gnDebuggerCallback callback;
void* userData;
} gnDebuggerInfo;
typedef struct gnDebugger_t {
struct gnPlatformDebugger* debugger;
gnInstance* instance;
} gnDebugger;
gnReturnCode gnCreateDebugger(gnDebugger* debugger, const struct gnDebuggerInfo_t info);
gnReturnCode gnDestroyDebugger(gnDebugger* debugger);
gnReturnCode gnCreateDebugger(gnDebugger* debugger, gnInstance* instance, const struct gnDebuggerInfo_t info);
void gnDestroyDebugger(gnDebugger* debugger);