4 Commits

Author SHA1 Message Date
96722abe4e load vulkan using volk and create window instance surface 2022-06-01 02:39:20 +02:00
0f361f6505 add mushmachine ascii art 2022-05-16 18:25:41 +02:00
6b06d5cb99 update all cmake files to version 3.9
other misc cmake fixes

version 3.9 allows for ipo (lto)
2022-05-03 19:33:19 +02:00
052bdb45ec update entt to v3.10.1 2022-04-28 16:12:51 +02:00
44 changed files with 205 additions and 48 deletions

3
.gitmodules vendored
View File

@ -37,3 +37,6 @@
path = external/physfs/physfs path = external/physfs/physfs
url = https://github.com/icculus/physfs.git url = https://github.com/icculus/physfs.git
branch = main branch = main
[submodule "external/volk"]
path = external/volk
url = https://github.com/zeux/volk.git

View File

@ -1,4 +1,4 @@
cmake_minimum_required(VERSION 3.8 FATAL_ERROR) cmake_minimum_required(VERSION 3.9 FATAL_ERROR)
# cmake setup begin # cmake setup begin
project(MushMachine C CXX) project(MushMachine C CXX)
@ -19,6 +19,11 @@ set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib")
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib") set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib")
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin") set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin")
# add this to your projects cmake to enable ipo
#include(CheckIPOSupported)
#check_ipo_supported()
#set(CMAKE_INTERPROCEDURAL_OPTIMIZATION ON)
# enable test # enable test
if(CMAKE_PROJECT_NAME STREQUAL PROJECT_NAME) if(CMAKE_PROJECT_NAME STREQUAL PROJECT_NAME)
include(CTest) include(CTest)

View File

@ -1,4 +1,4 @@
cmake_minimum_required(VERSION 3.8 FATAL_ERROR) cmake_minimum_required(VERSION 3.9 FATAL_ERROR)
# external libs # external libs
@ -38,6 +38,13 @@ if(NOT MM_HEADLESS)
add_subdirectory("glad-debug") add_subdirectory("glad-debug")
endif() endif()
# TODO: determain if we need this
#if (WIN32)
#set(VOLK_STATIC_DEFINES VK_USE_PLATFORM_WIN32_KHR)
#elseif()
#endif()
add_subdirectory("volk")
# stb utilies # stb utilies
add_subdirectory("stb") add_subdirectory("stb")
@ -54,4 +61,3 @@ if(NOT MM_HEADLESS)
add_subdirectory("soloud") add_subdirectory("soloud")
endif() endif()

View File

@ -1,4 +1,4 @@
cmake_minimum_required(VERSION 3.2 FATAL_ERROR) cmake_minimum_required(VERSION 3.9 FATAL_ERROR)
add_library(imgui_color_text_edit add_library(imgui_color_text_edit
"${CMAKE_CURRENT_LIST_DIR}/ImGuiColorTextEdit/TextEditor.h" "${CMAKE_CURRENT_LIST_DIR}/ImGuiColorTextEdit/TextEditor.h"

View File

@ -1,4 +1,5 @@
cmake_minimum_required(VERSION 3.2) cmake_minimum_required(VERSION 3.9 FATAL_ERROR)
project(SquirrelNoise) project(SquirrelNoise)
add_library(squirrel_noise add_library(squirrel_noise

2
external/entt vendored

2
external/entt.cmake vendored
View File

@ -1,4 +1,4 @@
cmake_minimum_required(VERSION 3.2 FATAL_ERROR) cmake_minimum_required(VERSION 3.9 FATAL_ERROR)
add_library(entt INTERFACE) add_library(entt INTERFACE)
target_include_directories(entt INTERFACE "${CMAKE_CURRENT_LIST_DIR}/entt/src") target_include_directories(entt INTERFACE "${CMAKE_CURRENT_LIST_DIR}/entt/src")
target_compile_features(entt INTERFACE cxx_std_17) target_compile_features(entt INTERFACE cxx_std_17)

View File

@ -1,4 +1,5 @@
cmake_minimum_required(VERSION 3.2) cmake_minimum_required(VERSION 3.9 FATAL_ERROR)
project(glad C) project(glad C)
set(C_FILES set(C_FILES
@ -15,8 +16,6 @@ add_library(glad ${C_FILES} ${H_FILES})
target_include_directories(glad PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include") target_include_directories(glad PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include")
if(UNIX) if(UNIX)
target_link_libraries(glad target_link_libraries(glad dl)
dl
)
endif() endif()

2
external/glm.cmake vendored
View File

@ -1,4 +1,4 @@
cmake_minimum_required(VERSION 3.2 FATAL_ERROR) cmake_minimum_required(VERSION 3.9 FATAL_ERROR)
add_library(glm INTERFACE) add_library(glm INTERFACE)
target_include_directories(glm INTERFACE "${CMAKE_CURRENT_LIST_DIR}/glm") target_include_directories(glm INTERFACE "${CMAKE_CURRENT_LIST_DIR}/glm")

View File

@ -1,4 +1,4 @@
cmake_minimum_required(VERSION 3.2 FATAL_ERROR) cmake_minimum_required(VERSION 3.9 FATAL_ERROR)
add_library(icon_font_cpp_headers INTERFACE) add_library(icon_font_cpp_headers INTERFACE)
target_include_directories(icon_font_cpp_headers INTERFACE "${CMAKE_CURRENT_LIST_DIR}/IconFontCppHeaders/") target_include_directories(icon_font_cpp_headers INTERFACE "${CMAKE_CURRENT_LIST_DIR}/IconFontCppHeaders/")

View File

@ -1,4 +1,4 @@
cmake_minimum_required(VERSION 3.1) cmake_minimum_required(VERSION 3.9 FATAL_ERROR)
## ##
## PROJECT ## PROJECT

View File

@ -13,7 +13,7 @@
# compile, using preprocessor checks for platform-specific bits instead of # compile, using preprocessor checks for platform-specific bits instead of
# testing in here. # testing in here.
cmake_minimum_required(VERSION 3.0.2) cmake_minimum_required(VERSION 3.9 FATAL_ERROR)
project(PhysicsFS) project(PhysicsFS)
set(PHYSFS_VERSION 3.1.0) set(PHYSFS_VERSION 3.1.0)

View File

@ -1,4 +1,4 @@
cmake_minimum_required(VERSION 3.2 FATAL_ERROR) cmake_minimum_required(VERSION 3.9 FATAL_ERROR)
project(soloud CXX) project(soloud CXX)

View File

@ -1,4 +1,4 @@
cmake_minimum_required(VERSION 3.2 FATAL_ERROR) cmake_minimum_required(VERSION 3.9 FATAL_ERROR)
project(stb CXX) project(stb CXX)

View File

@ -1,4 +1,4 @@
cmake_minimum_required(VERSION 3.2 FATAL_ERROR) cmake_minimum_required(VERSION 3.9 FATAL_ERROR)
if(NOT EMSCRIPTEN) if(NOT EMSCRIPTEN)
add_library(tracy_client add_library(tracy_client

1
external/volk vendored Submodule

Submodule external/volk added at 2784718c91

View File

@ -1,5 +1,6 @@
cmake_minimum_required(VERSION 3.2) cmake_minimum_required(VERSION 3.9 FATAL_ERROR)
project(framework CXX)
project(framework)
add_subdirectory(engine) add_subdirectory(engine)
add_subdirectory(logger) add_subdirectory(logger)

View File

@ -1,4 +1,5 @@
cmake_minimum_required(VERSION 3.2) cmake_minimum_required(VERSION 3.9 FATAL_ERROR)
project(common_components CXX) project(common_components CXX)
add_library(common_components INTERFACE) add_library(common_components INTERFACE)

View File

@ -1,4 +1,5 @@
cmake_minimum_required(VERSION 3.2) cmake_minimum_required(VERSION 3.9 FATAL_ERROR)
project(engine CXX) project(engine CXX)
add_library(engine add_library(engine

View File

@ -30,6 +30,14 @@ void Engine::setup(void) {
Engine::Engine(void) { Engine::Engine(void) {
setup(); setup();
LOG_INFO(R"text(
__ __ _ __ __ _ _
| \/ | | | | \/ | | | (_)
| \ / |_ _ ___| |__ | \ / | __ _ ___| |__ _ _ __ ___
| |\/| | | | / __| '_ \| |\/| |/ _` |/ __| '_ \| | '_ \ / _ \
| | | | |_| \__ \ | | | | | | (_| | (__| | | | | | | | __/
|_| |_|\__,_|___/_| |_|_| |_|\__,_|\___|_| |_|_|_| |_|\___|)text");
_update_strategy = std::make_unique<MM::UpdateStrategies::Sequential>(); _update_strategy = std::make_unique<MM::UpdateStrategies::Sequential>();
LOG_INFO("defaulting to Sequential (single threaded) UpdateStrategy"); LOG_INFO("defaulting to Sequential (single threaded) UpdateStrategy");
//_update_strategy = std::make_unique<MM::UpdateStrategies::Dummy>(); //_update_strategy = std::make_unique<MM::UpdateStrategies::Dummy>();

View File

@ -1,4 +1,5 @@
cmake_minimum_required(VERSION 3.2) cmake_minimum_required(VERSION 3.9 FATAL_ERROR)
project(filesystem_service CXX) project(filesystem_service CXX)
add_library(filesystem_service add_library(filesystem_service

View File

@ -1,4 +1,4 @@
cmake_minimum_required(VERSION 3.1 FATAL_ERROR) cmake_minimum_required(VERSION 3.9 FATAL_ERROR)
project(imgui_lib CXX) project(imgui_lib CXX)

View File

@ -1,4 +1,5 @@
cmake_minimum_required(VERSION 3.2) cmake_minimum_required(VERSION 3.9 FATAL_ERROR)
project(input_service CXX) project(input_service CXX)
add_library(input_service add_library(input_service

View File

@ -1,4 +1,5 @@
cmake_minimum_required(VERSION 3.2) cmake_minimum_required(VERSION 3.9 FATAL_ERROR)
project(logger CXX) project(logger CXX)
file(GLOB_RECURSE CPP_FILES src/*.cpp) file(GLOB_RECURSE CPP_FILES src/*.cpp)

View File

@ -1,10 +1,33 @@
cmake_minimum_required(VERSION 3.2) cmake_minimum_required(VERSION 3.9 FATAL_ERROR)
project(opengl_primitives CXX) project(opengl_primitives CXX)
file(GLOB_RECURSE CPP_FILES src/*.cpp) file(GLOB_RECURSE CPP_FILES src/*.cpp)
file(GLOB_RECURSE HPP_FILES src/*.hpp) file(GLOB_RECURSE HPP_FILES src/*.hpp)
add_library(opengl_primitives ${CPP_FILES} ${HPP_FILES}) add_library(opengl_primitives
src/mm/opengl/buffer.hpp
src/mm/opengl/buffer.cpp
src/mm/opengl/fbo_builder.hpp
src/mm/opengl/fbo_builder.cpp
src/mm/opengl/frame_buffer_object.hpp
src/mm/opengl/frame_buffer_object.cpp
src/mm/opengl/instance_buffer.hpp
src/mm/opengl/shader.hpp
src/mm/opengl/shader.cpp
src/mm/opengl/shader_builder.hpp
src/mm/opengl/shader_builder.cpp
src/mm/opengl/spritesheet.hpp
src/mm/opengl/texture.hpp
src/mm/opengl/texture.cpp
src/mm/opengl/texture_loader.hpp
src/mm/opengl/texture_loader.cpp
src/mm/opengl/vertex_array_object.hpp
src/mm/opengl/vertex_array_object.cpp
src/mm/opengl/components/texture.hpp
)
target_include_directories(opengl_primitives PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/src") target_include_directories(opengl_primitives PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/src")

View File

@ -1,4 +1,5 @@
cmake_minimum_required(VERSION 3.2) cmake_minimum_required(VERSION 3.9 FATAL_ERROR)
project(opengl_renderer CXX) project(opengl_renderer CXX)
add_library(opengl_renderer_s add_library(opengl_renderer_s

View File

@ -1,4 +1,5 @@
cmake_minimum_required(VERSION 3.2) cmake_minimum_required(VERSION 3.9 FATAL_ERROR)
project(organizer_scene CXX) project(organizer_scene CXX)
add_library(organizer_scene add_library(organizer_scene

View File

@ -1,4 +1,5 @@
cmake_minimum_required(VERSION 3.2) cmake_minimum_required(VERSION 3.9 FATAL_ERROR)
project(random CXX) project(random CXX)
add_library(random add_library(random

View File

@ -1,4 +1,5 @@
cmake_minimum_required(VERSION 3.2) cmake_minimum_required(VERSION 3.9 FATAL_ERROR)
project(resource_manager CXX) project(resource_manager CXX)
add_library(resource_manager INTERFACE) add_library(resource_manager INTERFACE)

View File

@ -1,4 +1,5 @@
cmake_minimum_required(VERSION 3.2) cmake_minimum_required(VERSION 3.9 FATAL_ERROR)
project(screen_director CXX) project(screen_director CXX)
add_library(screen_director add_library(screen_director

View File

@ -1,4 +1,5 @@
cmake_minimum_required(VERSION 3.2) cmake_minimum_required(VERSION 3.9 FATAL_ERROR)
project(sdl_service CXX) project(sdl_service CXX)
add_library(sdl_service add_library(sdl_service
@ -39,6 +40,9 @@ else()
target_link_libraries(sdl_service glad) target_link_libraries(sdl_service glad)
endif() endif()
# TODO: conditionaly
target_link_libraries(sdl_service volk::volk)
if(VCPKG_TARGET_TRIPLET) if(VCPKG_TARGET_TRIPLET)
target_link_libraries(sdl_service SDL2::SDL2 SDL2::SDL2main SDL2::SDL2-static) target_link_libraries(sdl_service SDL2::SDL2 SDL2::SDL2main SDL2::SDL2-static)
endif() endif()

View File

@ -1,4 +1,7 @@
add_executable(sdl_service_test start_test.cpp) add_executable(sdl_service_test
./start_test.cpp
./volk_test1.cpp
)
target_include_directories(sdl_service_test PRIVATE ".") target_include_directories(sdl_service_test PRIVATE ".")

View File

@ -0,0 +1,82 @@
#include <gtest/gtest.h>
#include <mm/engine.hpp>
#include <mm/services/sdl_service.hpp>
#include <SDL_vulkan.h>
#include <volk.h>
TEST(sdl_service, window_volk) {
MM::Engine engine;
engine.addService<MM::Services::SDLService>();
ASSERT_TRUE(engine.enableService<MM::Services::SDLService>());
auto* sdl_ss_ptr = engine.tryService<MM::Services::SDLService>();
ASSERT_NE(sdl_ss_ptr, nullptr);
// init volk
auto init_res = volkInitialize();
ASSERT_EQ(init_res, VK_SUCCESS);
// create window
ASSERT_EQ(sdl_ss_ptr->win, nullptr);
ASSERT_TRUE(sdl_ss_ptr->createWindow("test vulkan window", 800, 600, SDL_WINDOW_VULKAN));
ASSERT_NE(sdl_ss_ptr->win, nullptr);
// create vulkan instance
// Get the required extension count
unsigned int count;
ASSERT_TRUE(
SDL_Vulkan_GetInstanceExtensions(
sdl_ss_ptr->win,
&count,
nullptr
)
);
std::vector<const char*> extensions {
//VK_EXT_DEBUG_REPORT_EXTENSION_NAME // Sample additional extension
};
size_t additional_extension_count = extensions.size();
extensions.resize(additional_extension_count + count);
ASSERT_TRUE(
SDL_Vulkan_GetInstanceExtensions(
sdl_ss_ptr->win,
&count,
extensions.data() + additional_extension_count
)
);
// Now we can make the Vulkan instance
VkInstanceCreateInfo create_info {};
//create_info.pApplicationInfo;
create_info.enabledExtensionCount = static_cast<uint32_t>(extensions.size());
create_info.ppEnabledExtensionNames = extensions.data();
VkInstance instance;
VkResult result = vkCreateInstance(&create_info, nullptr, &instance);
ASSERT_EQ(result, VK_SUCCESS);
// finish setting up volk ?
volkLoadInstance(instance);
// the surface for the window
VkSurfaceKHR surface;
ASSERT_TRUE(
SDL_Vulkan_CreateSurface(
sdl_ss_ptr->win,
instance,
&surface
)
);
engine.disableService<MM::Services::SDLService>();
ASSERT_EQ(sdl_ss_ptr->win, nullptr);
}

View File

@ -1,4 +1,5 @@
cmake_minimum_required(VERSION 3.2) cmake_minimum_required(VERSION 3.9 FATAL_ERROR)
project(simple_sdl_renderer_service CXX) project(simple_sdl_renderer_service CXX)
add_library(simple_sdl_renderer_service add_library(simple_sdl_renderer_service

View File

@ -1,4 +1,5 @@
cmake_minimum_required(VERSION 3.2) cmake_minimum_required(VERSION 3.9 FATAL_ERROR)
project(sound_service CXX) project(sound_service CXX)
add_library(sound_service add_library(sound_service

View File

@ -1,4 +1,5 @@
cmake_minimum_required(VERSION 3.2) cmake_minimum_required(VERSION 3.9 FATAL_ERROR)
project(std_utils CXX) project(std_utils CXX)
add_library(std_utils INTERFACE) add_library(std_utils INTERFACE)

View File

@ -1,4 +1,5 @@
cmake_minimum_required(VERSION 3.2) cmake_minimum_required(VERSION 3.9 FATAL_ERROR)
project(tilemap CXX) project(tilemap CXX)
add_library(tilemap add_library(tilemap

View File

@ -1,5 +1,6 @@
cmake_minimum_required(VERSION 3.2) cmake_minimum_required(VERSION 3.9 FATAL_ERROR)
project(screens CXX)
project(screens)
if(NOT MM_HEADLESS) if(NOT MM_HEADLESS)
add_subdirectory(mm_logo) add_subdirectory(mm_logo)

View File

@ -1,4 +1,5 @@
cmake_minimum_required(VERSION 3.2) cmake_minimum_required(VERSION 3.9 FATAL_ERROR)
project(mm_logo_screen CXX) project(mm_logo_screen CXX)
add_library(mm_logo_screen add_library(mm_logo_screen

View File

@ -1,5 +1,6 @@
cmake_minimum_required(VERSION 3.8) cmake_minimum_required(VERSION 3.9 FATAL_ERROR)
project(systems CXX)
project(systems)
add_subdirectory(transform) add_subdirectory(transform)
add_subdirectory(simple_velocity) add_subdirectory(simple_velocity)

View File

@ -1,4 +1,5 @@
cmake_minimum_required(VERSION 3.2) cmake_minimum_required(VERSION 3.9 FATAL_ERROR)
project(fast_sky_sun_system CXX) project(fast_sky_sun_system CXX)
add_library(fast_sky_sun_system add_library(fast_sky_sun_system

View File

@ -1,4 +1,5 @@
cmake_minimum_required(VERSION 3.2) cmake_minimum_required(VERSION 3.9 FATAL_ERROR)
project(player_velocity_system CXX) project(player_velocity_system CXX)
add_library(player_velocity_system add_library(player_velocity_system

View File

@ -1,4 +1,5 @@
cmake_minimum_required(VERSION 3.2) cmake_minimum_required(VERSION 3.9 FATAL_ERROR)
project(simple_velocity_system CXX) project(simple_velocity_system CXX)
add_library(simple_velocity_system add_library(simple_velocity_system

View File

@ -1,4 +1,5 @@
cmake_minimum_required(VERSION 3.2) cmake_minimum_required(VERSION 3.9 FATAL_ERROR)
project(transfrom_system CXX) project(transfrom_system CXX)
add_library(transform_system add_library(transform_system