Move back to C++
This commit is contained in:
13 files changed
+44
-83
No files matched your search
@@ -0,0 +1,104 @@
|
||||
/**
|
||||
* @file localeVulkan.h
|
||||
* @author Piotr Krygier (everyonecancode@gmail.com)
|
||||
* @brief Error messages for Vulkan initializers
|
||||
* @version 0.1
|
||||
* @date 2022-05-13
|
||||
*
|
||||
* @copyright Copyright (c) 2022
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef LOCALE_VULKAN_H
|
||||
#define LOCALE_VULKAN_H
|
||||
|
||||
#include "localization.hpp"
|
||||
|
||||
enum Errors
|
||||
{
|
||||
VULKAN_INTANCE_INIT_FAILED,
|
||||
VULKAN_NO_PHYSICAL_DEVICES,
|
||||
VULKAN_NO_SUITABLE_PHYSICAL_DEVICES,
|
||||
VULKAN_QUEUE_NOT_SUPPORTED,
|
||||
VULKAN_FAILED_TO_CREATE_DEVICE,
|
||||
VULKAN_ALLOCATOR_CREATION_FAILED,
|
||||
VULKAN_COMMAND_POOL_CREATION_FAILED,
|
||||
VULKAN_COMMAND_BUFFER_ALLOCATION_FAILED,
|
||||
VULKAN_SURFACE_CREATION_FAILED,
|
||||
VULKAN_SWAPCHAIN_CREATION_FAILED,
|
||||
VULKAN_SWAPCHAIN_IMVIEW_CREATION_FAILED,
|
||||
LAST_MESSAGE
|
||||
};
|
||||
|
||||
const struct MessageString_t vulkanErrorMesssages[LAST_MESSAGE] =
|
||||
{
|
||||
{
|
||||
38,
|
||||
{/* VULKAN_INTANCE_INIT_FAILED */
|
||||
"Vulkan instance initialization failed"
|
||||
}
|
||||
},
|
||||
{
|
||||
55,
|
||||
{/* VULKAN_NO_PHYSICAL_DEVICES */
|
||||
"No physical graphical physical devices found in system"
|
||||
}
|
||||
},
|
||||
{
|
||||
35,
|
||||
{/* VULKAN_NO_SUITABLE_PHYSICAL_DEVICES */
|
||||
"No suitable physical device found"
|
||||
}
|
||||
},
|
||||
{
|
||||
70,
|
||||
{/* VULKAN_QUEUE_NOT_SUPPORTED */
|
||||
"Selected physical device does not support required queue capabilities"
|
||||
}
|
||||
},
|
||||
{
|
||||
23,
|
||||
{/* VULKAN_FAILED_TO_CREATE_DEVICE */
|
||||
"Failed to create logical device"
|
||||
}
|
||||
},
|
||||
{
|
||||
41,
|
||||
{/* VULKAN_ALLOCATOR_CREATION_FAILED */
|
||||
"Failed to create Vulkan Memory Allocator"
|
||||
}
|
||||
},
|
||||
{
|
||||
30,
|
||||
{/* VULKAN_COMMAND_POOL_CREATION_FAILED */
|
||||
"Failed to create command pool"
|
||||
}
|
||||
},
|
||||
{
|
||||
35,
|
||||
{/* VULKAN_COMMAND_BUFFER_ALLOCATION_FAILED */
|
||||
"Failed to allocate command buffers"
|
||||
}
|
||||
},
|
||||
{
|
||||
32,
|
||||
{/* VULKAN_SURFACE_CREATION_FAILED */
|
||||
"Failed to create window surface"
|
||||
}
|
||||
},
|
||||
{
|
||||
27,
|
||||
{/* VULKAN_SWAPCHAIN_CREATION_FAILED */
|
||||
"Failed to create swapchain"
|
||||
}
|
||||
},
|
||||
{
|
||||
38,
|
||||
{/* VULKAN_SWAPCHAIN_IMVIEW_CREATION_FAILED */
|
||||
"Failed to create swapchain image view"
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,41 @@
|
||||
/**
|
||||
* @file localeWindow.hxx
|
||||
* @author Piotr Krygier (everyonencancode@gmail.com)
|
||||
* @brief Error messages
|
||||
* @version 0.1
|
||||
* @date 2022-02-15
|
||||
*
|
||||
* @copyright Copyright (c) 2022
|
||||
*
|
||||
*/
|
||||
|
||||
#include "localization.h"
|
||||
|
||||
enum Errors
|
||||
{
|
||||
WINDOW_GLFW_INIT_FAILED,
|
||||
WINDOW_VULKAN_NOT_SUPPORTED,
|
||||
WINDOW_NOT_CREATED,
|
||||
LAST_MESSAGE
|
||||
};
|
||||
|
||||
const struct MessageString_t windowErrorMesssages[LAST_MESSAGE] =
|
||||
{
|
||||
{
|
||||
17,
|
||||
{/* WINDOW_GLFW_INIT_FAILED */
|
||||
"GLFW init failed!"
|
||||
}
|
||||
},
|
||||
{
|
||||
22,
|
||||
{/* WINDOW_VULKAN_NOT_SUPPORTED */
|
||||
"Unable to load Vulkan"
|
||||
}
|
||||
},
|
||||
{
|
||||
31,
|
||||
{/*WINDOW_NOT_CREATED*/
|
||||
"Window context creation failed"
|
||||
}}
|
||||
};
|
||||
@@ -0,0 +1,51 @@
|
||||
/**
|
||||
* @file localization.h
|
||||
* @author Piotr Krygier (everyonencancode@gmail.com)
|
||||
* @brief Simple localization header
|
||||
* @version 0.1
|
||||
* @date 2022-02-15
|
||||
*
|
||||
* @copyright Copyright (c) 2022
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef LOCALIZATION_H
|
||||
#define LOCALIZATION_H
|
||||
|
||||
#include <stdlib.h>
|
||||
|
||||
#define SELECTED_LANGUAGE EN_US
|
||||
|
||||
#define LOCALIZE(string) string.message[SELECTED_LANGUAGE]
|
||||
|
||||
/**
|
||||
* @brief Available languages
|
||||
*
|
||||
*/
|
||||
enum Languages_t
|
||||
{
|
||||
EN_US = 0,
|
||||
LAST_LANGUAGE
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief
|
||||
*
|
||||
*/
|
||||
struct MessageString_t
|
||||
{
|
||||
/**
|
||||
* @brief Maximum message length. I.e. if French version is longer than English, use French length.
|
||||
*
|
||||
*/
|
||||
size_t maxMessageLength;
|
||||
|
||||
/**
|
||||
*
|
||||
* @brief Array holding list of translations for specific message
|
||||
*
|
||||
*/
|
||||
const char* const message[LAST_LANGUAGE];
|
||||
};
|
||||
|
||||
#endif /* LOCALIZATION_H */
|
||||
@@ -0,0 +1,90 @@
|
||||
/**
|
||||
* @file log.hxx
|
||||
* @author Piotr Krygier (everyonencancode@gmail.com)
|
||||
* @brief Logging interfaces
|
||||
* @version 0.1
|
||||
* @date 2022-02-11
|
||||
*
|
||||
* @copyright Copyright (c) 2022
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef LOG_H
|
||||
#define LOG_H
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
/* Controls level of logging. TODO: Move this to cmake or some config */
|
||||
#define LOG_LEVEL 6
|
||||
|
||||
#define LOG(level, ...) _LOG_##level(__VA_ARGS__)
|
||||
|
||||
#if LOG_LEVEL >= 1
|
||||
#define _LOG_FATAL(...) __LOG(FATAL, __VA_ARGS__)
|
||||
#else
|
||||
#define _LOG_FATAL(...)
|
||||
#endif
|
||||
|
||||
#if LOG_LEVEL >= 2
|
||||
#define _LOG_ERROR(...) __LOG(ERROR, __VA_ARGS__)
|
||||
#else
|
||||
#define _LOG_ERROR(...)
|
||||
#endif
|
||||
|
||||
#if LOG_LEVEL >= 3
|
||||
#define _LOG_WARNING(...) __LOG(WARNING, __VA_ARGS__)
|
||||
#else
|
||||
#define _LOG_WARNING(...)
|
||||
#endif
|
||||
|
||||
#if LOG_LEVEL >= 4
|
||||
#define _LOG_INFO(...) __LOG(INFO, __VA_ARGS__)
|
||||
#else
|
||||
#define _LOG_INFO(...)
|
||||
#endif
|
||||
|
||||
#if LOG_LEVEL >= 5
|
||||
#define _LOG_DEBUG(...) __LOG(DEBUG, __VA_ARGS__)
|
||||
#else
|
||||
#define _LOG_DEBUG(...)
|
||||
#endif
|
||||
|
||||
#if LOG_LEVEL >= 6
|
||||
#define _LOG_TRACE(...) __LOG(TRACE, __VA_ARGS__)
|
||||
#else
|
||||
#define _LOG_TRACE(...)
|
||||
#endif
|
||||
|
||||
/* Macro magic, that makes logging work. It's better than C++ solution anyway... */
|
||||
#define _LOG_SIZEOF(...) __LOG_SIZEOF(__VA_ARGS__, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 0)
|
||||
#define __LOG_SIZEOF(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, N, \
|
||||
...) \
|
||||
N
|
||||
#define _LOG_EVAL(x) x
|
||||
#define __LOG(level, ...) ___LOG(_LOG_SIZEOF(__VA_ARGS__), level, __VA_ARGS__)
|
||||
#define ___LOG(n, ...) ____LOG(n, __VA_ARGS__)
|
||||
#define ____LOG(n, ...) ____LOG##n(__VA_ARGS__)
|
||||
#define ____LOG1(level, format) \
|
||||
fprintf(stdout, \
|
||||
"[" #level \
|
||||
"]" \
|
||||
"\t%s:%d\t" format "\n", \
|
||||
__builtin_strrchr(__FILE__, '/') ? __builtin_strrchr(__FILE__, '/') + 1 : __FILE__, __LINE__)
|
||||
#define ____LOG2(level, format, ...) \
|
||||
fprintf(stdout, \
|
||||
"[" #level \
|
||||
"]" \
|
||||
"\t%s:%d\t" format "\n", \
|
||||
__builtin_strrchr(__FILE__, '/') ? __builtin_strrchr(__FILE__, '/') + 1 : __FILE__, __LINE__, __VA_ARGS__)
|
||||
|
||||
typedef enum
|
||||
{
|
||||
TRACE = 1,
|
||||
DEBUG = 2,
|
||||
INFO = 3,
|
||||
WARNING = 4,
|
||||
ERROR = 5,
|
||||
FATAL = 6
|
||||
} LogLevel;
|
||||
|
||||
#endif /* LOG_H */
|
||||
@@ -0,0 +1,18 @@
|
||||
/**
|
||||
* @file vulkanBase.h
|
||||
* @author Piotr Krygier (everyonecancode@gmail.com)
|
||||
* @brief Vulkan wrapper functions used by other parts of Graphics component
|
||||
* @version 0.1
|
||||
* @date 2022-05-13
|
||||
*
|
||||
* @copyright Copyright (c) 2022
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef VULKAN_BASE_H
|
||||
#define VULKAN_BASE_H
|
||||
|
||||
int initVulkan();
|
||||
void deinitVulkan();
|
||||
|
||||
#endif /* VULKAN_BASE_H */
|
||||
@@ -0,0 +1,45 @@
|
||||
/**
|
||||
* @file window.h
|
||||
* @author Piotr Krygier (everyonencancode@gmail.com)
|
||||
* @brief Window control system
|
||||
* @version 0.1
|
||||
* @date 2022-02-15
|
||||
*
|
||||
* @copyright Copyright (c) 2022
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef WINDOW_HANDLER_H
|
||||
#define WINDOW_HANDLER_H
|
||||
|
||||
/* Vulkan header MUST be included before glfw */
|
||||
#include <vulkan/vulkan.h>
|
||||
|
||||
#include <GLFW/glfw3.h>
|
||||
|
||||
/**
|
||||
* @brief Initialize window
|
||||
*
|
||||
* @return uint16_t WINDOW_SUCCESS on success. Possible errors:
|
||||
* WINDOW_VULKAN_NOT_LOADED
|
||||
* WINDOW_WINDOW_NOT_CREATED
|
||||
*
|
||||
*/
|
||||
uint16_t windowInit();
|
||||
|
||||
/**
|
||||
* @brief Main window loop
|
||||
*
|
||||
* @return uint16_t WINDOW_SUCCESS or error code
|
||||
*/
|
||||
uint16_t windowLoop();
|
||||
|
||||
/**
|
||||
* @brief Closes window and terminates GLFW
|
||||
*
|
||||
*/
|
||||
void windowTerminate();
|
||||
|
||||
GLFWwindow* getWindowHandle();
|
||||
|
||||
#endif /* WINDOW_HANDLER_H */
|
||||
Reference in new issue
Block a user