diff --git a/Graphics/CMakeLists.txt b/Graphics/CMakeLists.txt deleted file mode 100644 index 8f4586d7..00000000 --- a/Graphics/CMakeLists.txt +++ /dev/null @@ -1,18 +0,0 @@ -cmake_minimum_required(VERSION 3.10) - -project(GraphicsEngine) - -add_library(${PROJECT_NAME} SHARED - src/window.c - src/vmaInit.cpp - src/vulkanBase.c) - -target_include_directories(${PROJECT_NAME} PUBLIC - ${PROJECT_SOURCE_DIR}/include - ${PROJECT_SOURCE_DIR}/locales - ${CMAKE_SOURCE_DIR}/third_party/vma/include - ${CMAKE_SOURCE_DIR}/Utilities/include) - -target_link_libraries(${PROJECT_NAME} - vulkan - glfw) diff --git a/Graphics/src/vmaInit.cpp b/Graphics/src/vmaInit.cpp deleted file mode 100644 index 1b342a34..00000000 --- a/Graphics/src/vmaInit.cpp +++ /dev/null @@ -1,26 +0,0 @@ -/** - * @file vmaInit.cpp - * @author Piotr Krygier (everyonecancode@gmail.com) - * @brief VMA is written in C, but has C++ compatible interface. It still needs to compiled as C++ though, hence the - * file - * @version 0.1 - * @date 2022-05-23 - * - * @copyright Copyright (c) 2022 - * - */ - -#pragma GCC diagnostic push -# pragma GCC diagnostic warning "-Wunused" -# pragma GCC diagnostic warning "-Wpedantic" -# pragma GCC diagnostic warning "-Wignored-qualifiers" -# pragma GCC diagnostic warning "-Wmissing-field-initializers" -# pragma GCC diagnostic warning "-Wimplicit-fallthrough" -# pragma GCC diagnostic warning "-Wswitch" -# pragma GCC diagnostic warning "-Wparentheses" -#define VMA_IMPLEMENTATION -#define VMA_STATIC_VULKAN_FUNCTIONS 0 -#define VMA_DYNAMIC_VULKAN_FUNCTIONS 1 -#define VMA_STATS_STRING_ENABLED 0 -#include -#pragma GCC diagnostic pop \ No newline at end of file diff --git a/Makefile b/Makefile new file mode 100644 index 00000000..a7201925 --- /dev/null +++ b/Makefile @@ -0,0 +1,20 @@ +CC := /usr/bin/g++ +INCLUDE_DIR := -I./include -I./third_party/vma/include +CFLAGS := -g -Werror -Wall -std=c++17 $(INCLUDE_DIR) +SRC_DIR := src +BUILD_DIR := ./build +TARGET := RedScarfEngine +SOURCES := main.cpp \ + vulkanBase.cpp \ + window.cpp + +OBJECTS := $(SOURCES:.cpp=.o) + +all: $(BUILD_DIR)/$(OBJECTS) + $(CC) $(CFLAGS) -o $(BUILD_DIR)/$(TARGET) $(BUILD_DIR)/$(OBJECTS) + +$(BUILD_DIR)/main.o: $(SRC_DIR)/main.cpp $(BUILD_DIR)/vulkanBase.o + $(CC) $(CFLAGS) -c $(SRC_DIR)/main.cpp + +$(BUILD_DIR)/vulkanBase.o: $(SRC_DIR)/vulkanBase.cpp + $(CC) $(CFLAGS) -c $(SRC_DIR)/vulkanBase.cpp diff --git a/RedScarfEngine/CMakeLists.txt b/RedScarfEngine/CMakeLists.txt deleted file mode 100644 index e5f25cb5..00000000 --- a/RedScarfEngine/CMakeLists.txt +++ /dev/null @@ -1,10 +0,0 @@ -cmake_minimum_required(VERSION 3.10) - -add_executable(${PROJECT_NAME} src/main.c) - -target_include_directories(${PROJECT_NAME} PRIVATE - ${CMAKE_SOURCE_DIR}/Utilities/include) - - -target_link_libraries(${PROJECT_NAME} - GraphicsEngine) \ No newline at end of file diff --git a/Graphics/locales/localeVulkan.h b/include/localeVulkan.hpp similarity index 98% rename from Graphics/locales/localeVulkan.h rename to include/localeVulkan.hpp index 5ce4affb..ec33b05d 100644 --- a/Graphics/locales/localeVulkan.h +++ b/include/localeVulkan.hpp @@ -12,7 +12,7 @@ #ifndef LOCALE_VULKAN_H #define LOCALE_VULKAN_H -#include "localization.h" +#include "localization.hpp" enum Errors { @@ -101,4 +101,4 @@ const struct MessageString_t vulkanErrorMesssages[LAST_MESSAGE] = }; -#endif \ No newline at end of file +#endif diff --git a/Graphics/locales/localeWindow.h b/include/localeWindow.hpp similarity index 100% rename from Graphics/locales/localeWindow.h rename to include/localeWindow.hpp diff --git a/Utilities/include/localization.h b/include/localization.hpp similarity index 100% rename from Utilities/include/localization.h rename to include/localization.hpp diff --git a/Utilities/include/log.h b/include/log.hpp similarity index 100% rename from Utilities/include/log.h rename to include/log.hpp diff --git a/Graphics/include/vulkanBase.h b/include/vulkanBase.hpp similarity index 100% rename from Graphics/include/vulkanBase.h rename to include/vulkanBase.hpp diff --git a/Graphics/include/window.h b/include/window.hpp similarity index 100% rename from Graphics/include/window.h rename to include/window.hpp diff --git a/RedScarfEngine/src/main.c b/src/main.cpp similarity index 72% rename from RedScarfEngine/src/main.c rename to src/main.cpp index 07176589..019f7555 100644 --- a/RedScarfEngine/src/main.c +++ b/src/main.cpp @@ -1,6 +1,6 @@ -#include "log.h" -#include "window.h" -#include "vulkanBase.h" +#include "log.hpp" +#include "window.hpp" +#include "vulkanBase.hpp" int main(int argc, char** argv) @@ -19,4 +19,4 @@ int main(int argc, char** argv) windowTerminate(); return 0; -} \ No newline at end of file +} diff --git a/Graphics/src/vulkanBase.c b/src/vulkanBase.cpp similarity index 96% rename from Graphics/src/vulkanBase.c rename to src/vulkanBase.cpp index 180fd31f..98d7498f 100644 --- a/Graphics/src/vulkanBase.c +++ b/src/vulkanBase.cpp @@ -1,5 +1,5 @@ /** - * @file vulkanBase.c + * @file vulkanBase.cpp * @author Piotr Krygier (everyonecancode@gmail.com) * @brief Base configuration for Vulkan API * @version 0.1 @@ -12,18 +12,18 @@ /* TODO: Replace with more dynamic include */ #define VK_USE_PLATFORM_XCB_KHR -#include "vulkanBase.h" - -#include -#include +#include "vulkanBase.hpp" #include #include #include -#include "localeVulkan.h" -#include "log.h" -#include "window.h" +#include "localeVulkan.hpp" +#include "log.hpp" +#include "window.hpp" + +#include +#include enum VULKAN_ERROR { @@ -54,20 +54,15 @@ enum VULKAN_ERROR /* Define Validation Layers for debug build */ #ifndef NDEBUG -#define ENABLED_INSTANCE_LAYERS_COUNT 1U +std::vector gEnabledInstanceLayersNames = {"VK_LAYER_KHRONOS_validation"}; #else -#define ENABLED_INSTANCE_LAYERS_COUNT 0U +std::vector gEnabledInstanceLayersNames = {}; #endif -#define ENABLED_INSTANCE_EXTENSIONS_COUNT 4U #define ENABLED_DEVICE_EXTENSIONS_COUNT 1U -#ifndef NDEBUG -const char* gEnabledInstanceLayersNames[ENABLED_INSTANCE_LAYERS_COUNT] = {"VK_LAYER_KHRONOS_validation"}; -#endif - /* Extensions required by GLFW. TODO: Check for extensions required on other platforms */ -const char* gEnabledInstanceExtensionsNames[ENABLED_INSTANCE_EXTENSIONS_COUNT] = { +std::vector gEnabledInstanceExtensionsNames = { "VK_KHR_surface", "VK_KHR_xcb_surface", "VK_KHR_device_group_creation", @@ -76,7 +71,7 @@ const char* gEnabledInstanceExtensionsNames[ENABLED_INSTANCE_EXTENSIONS_COUNT] = #endif }; -const char* gEnabledDeviceExtensionsNames[ENABLED_DEVICE_EXTENSIONS_COUNT] = { +std::vector gEnabledDeviceExtensionsNames[ENABLED_DEVICE_EXTENSIONS_COUNT] = { "VK_KHR_swapchain", }; @@ -265,12 +260,12 @@ static int createInstance() uint32_t layersCount = 0; VkApplicationInfo applicationInfo; VkInstanceCreateInfo createInfo; - VkLayerProperties* layerProperties = NULL; - VkExtensionProperties* extensionsProperties = NULL; + std::vector layerProperties; + std::vector extensionsProperties; /* TODO: Remove or use later layer and extension properties */ vkEnumerateInstanceLayerProperties(&layersCount, NULL); - layerProperties = malloc(sizeof(VkLayerProperties) * layersCount); + layerProperties.resize(layersCount); vkEnumerateInstanceLayerProperties(&layersCount, layerProperties); vkEnumerateInstanceExtensionProperties(NULL, &extensionCount, NULL); @@ -299,13 +294,13 @@ static int createInstance() createInfo.pNext = NULL; createInfo.flags = 0U; createInfo.pApplicationInfo = &applicationInfo; - createInfo.enabledLayerCount = ENABLED_INSTANCE_LAYERS_COUNT; + createInfo.enabledLayerCount = gEnabledInstanceLayersNames.size(); #ifndef NDEBUG createInfo.ppEnabledLayerNames = gEnabledInstanceLayersNames; #else createInfo.ppEnabledLayerNames = NULL; #endif - createInfo.enabledExtensionCount = ENABLED_INSTANCE_EXTENSIONS_COUNT; + createInfo.enabledExtensionCount = gEnabledInstanceExtensionsNames.size(); createInfo.ppEnabledExtensionNames = gEnabledInstanceExtensionsNames; VkResult result = vkCreateInstance(&createInfo, NULL, &gVulkanInstance); @@ -607,4 +602,4 @@ void deinitVulkan() #endif vkDestroySurfaceKHR(gVulkanInstance, gSurface, NULL); vkDestroyInstance(gVulkanInstance, NULL); -} \ No newline at end of file +} diff --git a/Graphics/src/window.c b/src/window.cpp similarity index 100% rename from Graphics/src/window.c rename to src/window.cpp