diff --git a/include/gryphn/gryphn.h b/include/gryphn/gryphn.h index 8d6b08b..1d9a128 100644 --- a/include/gryphn/gryphn.h +++ b/include/gryphn/gryphn.h @@ -14,3 +14,5 @@ #include #include #include +#include +#include diff --git a/src/core/command/command_buffer/gryphn_command_buffer.h b/src/core/command/command_buffer/gryphn_command_buffer.h new file mode 100644 index 0000000..bc154b5 --- /dev/null +++ b/src/core/command/command_buffer/gryphn_command_buffer.h @@ -0,0 +1,10 @@ +#pragma once +#include +#include "core/renderpass/gryphn_render_pass.h" + +typedef struct gnCommandBuffer_t { + struct gnPlatformCommandBuffer_t* commandBuffer; +} gnCommandBuffer; + +gnReturnCode gnBeginCommandBuffer(struct gnCommandBuffer_t* commandBuffer); +void gnCommandBufferBeginRenderPass(struct gnRenderPassInfo_t passInfo); diff --git a/src/core/debugger/gryphn_debugger.h b/src/core/debugger/gryphn_debugger.h index f55d51d..0657e10 100644 --- a/src/core/debugger/gryphn_debugger.h +++ b/src/core/debugger/gryphn_debugger.h @@ -53,7 +53,7 @@ typedef struct gnDebugger_t { gnReturnCode gnCreateDebugger(gnDebugger* debugger, const struct gnDebuggerInfo_t info); void gnDestroyDebugger(gnDebugger* debugger); -static void gnDebuggerSetErrorMessage(gnDebugger* debugger, gnMessageData data) { +void gnDebuggerSetErrorMessage(gnDebugger* debugger, gnMessageData data) { debugger->info.callback( GN_MESSAGE_ERROR, GN_DEBUG_MESSAGE_VALIDATION, diff --git a/src/core/gryphn_platform_functions.h b/src/core/gryphn_platform_functions.h index 28bcdb9..365f6b7 100644 --- a/src/core/gryphn_platform_functions.h +++ b/src/core/gryphn_platform_functions.h @@ -12,6 +12,7 @@ #include "pipelines/graphics_pipeline/gryphn_graphics_pipeline.h" #include "framebuffer/gryphn_framebuffer.h" #include "command/command_pool/gryphn_command_pool.h" +#include "command/command_buffer/gryphn_command_buffer.h" typedef struct gnFunctions_t { gnReturnCode (*_gnCreateInstance)(gnInstance* instance, struct gnInstanceInfo_t info); @@ -71,3 +72,7 @@ typedef struct gnDeviceFunctions_t { gnReturnCode (*_gnCreateCommandPool)(struct gnCommandPool_t* commandPool, struct gnOutputDevice_t* device, struct gnCommandPoolInfo_t info); void (*_gnDestroyCommandPool)(struct gnCommandPool_t* commandPool); } gnDeviceFunctions; + +typedef struct gnCommandFunctions_t { + gnReturnCode (*_gnCommandPoolAllocateCommandBuffers)(struct gnCommandBuffer_t* commandBuffers, uint32_t count, struct gnCommandPool_t* pool); +} gnCommandFunctions; diff --git a/src/core/gryphn_rendering_api.h b/src/core/gryphn_rendering_api.h index 7c84888..bdc986a 100644 --- a/src/core/gryphn_rendering_api.h +++ b/src/core/gryphn_rendering_api.h @@ -11,7 +11,7 @@ typedef enum gnRenderingAPI_t { GN_RENDERINGAPI_METAL } gnRenderingAPI; -static gnString gnRenderingAPIName(gnRenderingAPI api) { +gnString gnRenderingAPIName(gnRenderingAPI api) { switch (api) { case GN_RENDERINGAPI_NONE: return gnCreateString("GN_RENDERINGAPI_NONE"); case GN_RENDERINGAPI_SOFTWARE: return gnCreateString("GN_RENDERINGAPI_SOFTWARE"); diff --git a/src/core/instance/gryphn_instance.h b/src/core/instance/gryphn_instance.h index 23a1fa0..5f73195 100644 --- a/src/core/instance/gryphn_instance.h +++ b/src/core/instance/gryphn_instance.h @@ -19,11 +19,15 @@ typedef struct gnInstanceInfo_t { typedef struct gnInstance_t { struct gnPlatformInstance_t* instance; - gnBool valid, loadDeviceFunctions; + gnBool valid, + loadDeviceFunctions, + loadCommandFunctions; + + struct gnDynamicLibrary_t* dynamicLib; struct gnFunctions_t* functions; struct gnDeviceFunctions_t* deviceFunctions; - struct gnDynamicLibrary_t* dynamicLib; + struct gnCommandFunctions_t* commandFunctions; struct gnDebugger_t* debugger; } gnInstance; diff --git a/src/core/output_device/gryphn_physical_output_device.h b/src/core/output_device/gryphn_physical_output_device.h index 3af945b..c92147a 100644 --- a/src/core/output_device/gryphn_physical_output_device.h +++ b/src/core/output_device/gryphn_physical_output_device.h @@ -14,7 +14,7 @@ typedef struct gnPhysicalDeviceProperties_t { } gnPhysicalDeviceProperties; typedef struct gnPhysicalDeviceFeatures_t { - + gnBool supportsGeometryShader; } gnPhysicalDeviceFeatures; typedef enum gnQueueTypeFlags_e { diff --git a/src/core/pipelines/gryphn_uniform_layout.h b/src/core/pipelines/gryphn_uniform_layout.h index f3c37eb..60b3dc9 100644 --- a/src/core/pipelines/gryphn_uniform_layout.h +++ b/src/core/pipelines/gryphn_uniform_layout.h @@ -1,5 +1,6 @@ #pragma once +#include "stdint.h" typedef struct gnUniformLayout_t { - + uint32_t pushConstantCount; } gnUniformLayout; diff --git a/src/core/renderpass/gryphn_render_pass.h b/src/core/renderpass/gryphn_render_pass.h new file mode 100644 index 0000000..37c3a8c --- /dev/null +++ b/src/core/renderpass/gryphn_render_pass.h @@ -0,0 +1,10 @@ +#pragma once +#include "gryphn_render_pass_descriptor.h" +#include "core/framebuffer/gryphn_framebuffer.h" + +typedef struct gnRenderPassInfo_t { + struct gnRenderPassDescriptor_t* renderPassDescriptor; + struct gnFramebuffer_t* framebuffer; + gnUInt2 offset; + gnUInt2 size; +} gnRenderPassInfo; diff --git a/src/utils/gryphn_error_code.h b/src/utils/gryphn_error_code.h index b599a20..4a61982 100644 --- a/src/utils/gryphn_error_code.h +++ b/src/utils/gryphn_error_code.h @@ -31,7 +31,7 @@ typedef enum gnReturnCode_t { } gnReturnCode; typedef gnReturnCode gnErrorCode; -static const char* gnErrorCodeToCString(enum gnReturnCode_t returnCode) { +const char* gnErrorCodeToCString(enum gnReturnCode_t returnCode) { switch (returnCode) { default: return "GN_FORGOT"; case GN_SUCCESS: return "GN_SUCCESS"; diff --git a/src/utils/strings/gryphn_string.h b/src/utils/strings/gryphn_string.h index 7a58d47..399446c 100644 --- a/src/utils/strings/gryphn_string.h +++ b/src/utils/strings/gryphn_string.h @@ -97,7 +97,7 @@ static gnString gnCreateStringFromChar(gnChar input) { string.value[1] = '\0'; return string; } -static gnString gnCreateEmptyString() { +gnString gnCreateEmptyString(void) { gnString string; string.value = (char*)malloc(sizeof(char)); string.value[0] = '\0'; @@ -110,31 +110,31 @@ static gnString gnCreateEmptyString() { gnChar: gnCreateStringFromChar \ )(input) -static const char* gnToCString(const gnString string) { return string.value; } -static int gnStringLength(const gnString string) { return strlen(string.value); } -static int gnStringFindChar(const gnString string, const gnChar letter) { - for (int i = 0; i < strlen(string.value); i++) +const char* gnToCString(const gnString string) { return string.value; } +int gnStringLength(const gnString string) { return strlen(string.value); } +int gnStringFindChar(const gnString string, const gnChar letter) { + for (unsigned long i = 0; i < strlen(string.value); i++) if (string.value[i] == letter) - return i; + return (int)i; return -1; } -static int gnStringFindString(const gnString string, const gnString value) { +int gnStringFindString(const gnString string, const gnString value) { char first_char = value.value[0]; - for (int i = 0; i < strlen(string.value); i++) + for (unsigned long i = 0; i < strlen(string.value); i++) if (string.value[i] == first_char) { gnBool same = gnTrue; - for (int c = 1; c < strlen(value.value); c++) + for (unsigned long c = 1; c < strlen(value.value); c++) if (string.value[i + c] != value.value[c]) { same = gnFalse; break; } if (same) - return i; + return (int)i; } return -1; } -static gnString gnSubstring(const gnString string, int index1, int index2) { +gnString gnSubstring(const gnString string, int index1, int index2) { if (index2 == -1) index2 = gnStringLength(string); char* out_value = (char*)malloc(sizeof(char) * ((index2 - index1) + 1)); for (int i = 0; i < (index2 - index1); i++) @@ -143,7 +143,7 @@ static gnString gnSubstring(const gnString string, int index1, int index2) { return gnCreateString(out_value); // zero error checking on this function should really add that in later but like I dont have a logging library that I want to use // my code never breaks either so I dont need error checks, il just not make errors cuz im not tim } -static int gnLetterCount(const gnString string, const gnChar letter) { +int gnLetterCount(const gnString string, const gnChar letter) { int count = 0; for (int i = 0; i < gnStringLength(string); i++) if (string.value[i] == letter) count++; return count; @@ -154,16 +154,16 @@ static int gnLetterCount(const gnString string, const gnChar letter) { const gnString: gnStringFindValue \ )(string, value) -static void gnAddCharToString(gnString* string, gnChar val) { +void gnAddCharToString(gnString* string, gnChar val) { string->value = add_char_to_string(string->value, val); } -static void gnAddCharPtrToString(gnString* string, gnChar* val) { +void gnAddCharPtrToString(gnString* string, gnChar* val) { string->value = add_string_to_string(string->value, val); } -static void gnAddConstCharPtrToString(gnString* string, const gnChar* val) { +void gnAddConstCharPtrToString(gnString* string, const gnChar* val) { string->value = add_string_to_string(string->value, (gnChar*)val); } -static void gnAddContGnStringToString(gnString* string, gnString val) { +void gnAddContGnStringToString(gnString* string, gnString val) { string->value = add_string_to_string(string->value, val.value); } @@ -175,16 +175,16 @@ static void gnAddContGnStringToString(gnString* string, gnString val) { gnString: gnAddContGnStringToString \ )(string, value) -static gnString gnCombineStringsChar(const gnString string, gnChar val) { +gnString gnCombineStringsChar(const gnString string, gnChar val) { return gnCreateString(add_char_to_string(string.value, val)); } -static gnString gnCombineStringsCharPtr(const gnString string, gnChar* val) { +gnString gnCombineStringsCharPtr(const gnString string, gnChar* val) { return gnCreateString(add_string_to_string(string.value, val)); } -static gnString gnCombineStringsConstCharPtr(const gnString string, const gnChar* val) { +gnString gnCombineStringsConstCharPtr(const gnString string, const gnChar* val) { return gnCreateString(add_string_to_string(string.value, (gnChar*)val)); } -static gnString gnCombineStringsString(const gnString string, const gnString val) { +gnString gnCombineStringsString(const gnString string, const gnString val) { return gnCreateString(add_string_to_string(string.value, val.value)); } @@ -196,9 +196,9 @@ static gnString gnCombineStringsString(const gnString string, const gnString val gnString: gnCombineStringsString \ )(string, value) -static gnBool gnStringEqualsCharPtr(const gnString string, gnChar* val) { return (strcmp(string.value, val) == 0); } -static gnBool gnStringEqualsConstCharPtr(const gnString string,const gnChar* val) { return (strcmp(string.value, (gnChar*)val) == 0); } -static gnBool gnStringEqualsString(const gnString string, const gnString val) { return (strcmp(string.value, val.value) == 0); } +gnBool gnStringEqualsCharPtr(const gnString string, gnChar* val) { return (strcmp(string.value, val) == 0); } +gnBool gnStringEqualsConstCharPtr(const gnString string,const gnChar* val) { return (strcmp(string.value, (gnChar*)val) == 0); } +gnBool gnStringEqualsString(const gnString string, const gnString val) { return (strcmp(string.value, val.value) == 0); } #define gnStringEquals(string, value) _Generic((value), \ gnChar*: gnStringEqualsCharPtr, \ @@ -206,25 +206,25 @@ static gnBool gnStringEqualsString(const gnString string, const gnString val) { gnString: gnStringEqualsString \ )(string, value) -static gnChar gnGetCharAt(const gnString string, int index) { return string.value[0]; } -static void gnSetCharAt(gnString* string, int index, gnChar letter) { string->value[0] = letter; } +gnChar gnGetCharAt(const gnString string, int index) { return string.value[index]; } +void gnSetCharAt(gnString* string, int index, gnChar letter) { string->value[index] = letter; } -static void gnSetStringToChar(gnString* string, gnChar input) { +void gnSetStringToChar(gnString* string, gnChar input) { string->value = (gnChar*)malloc(sizeof(gnChar) * 2); string->value[0] = input; string->value[1] = '\0'; } -static void gnSetStringToCharPtr(gnString* string, gnChar* input) { +void gnSetStringToCharPtr(gnString* string, gnChar* input) { string->value = (gnChar*)malloc(sizeof(gnChar) * (strlen(input) + 1)); strcpy(string->value, input); string->value[strlen(input)] = '\0'; } -static void gnSetStringToConstCharPtr(gnString* string, const gnChar* input) { +void gnSetStringToConstCharPtr(gnString* string, const gnChar* input) { string->value = (gnChar*)malloc(sizeof(gnChar) * (strlen(input) + 1)); strcpy(string->value, input); string->value[strlen(input)] = '\0'; } -static void gnSetStringToString(gnString* string, const gnString input) { +void gnSetStringToString(gnString* string, const gnString input) { string->value = (gnChar*)malloc(sizeof(gnChar) * (strlen(input.value) + 1)); strcpy(string->value, input.value); string->value[strlen(input.value)] = '\0';