Skip to content

Commit fd065cc

Browse files
committed
Use volk
1 parent d5ea224 commit fd065cc

13 files changed

Lines changed: 48 additions & 905 deletions

File tree

.gitmodules

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,3 +17,7 @@
1717

1818
# Set branch:
1919
# git submodule set-branch --branch [BRANCH_NAME] [SUBMODULE_PATH]
20+
[submodule "third_party/volk"]
21+
path = third_party/volk
22+
url = https://github.com/zeux/volk.git
23+
branch = vulkan-sdk-1.4.341

CMakeLists.txt

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -61,14 +61,24 @@ endif ()
6161
if (PATHFINDER_BACKEND_VULKAN)
6262
message("[Pathfinder] Enabled Vulkan backend")
6363

64-
find_package(Vulkan REQUIRED)
65-
66-
target_link_libraries(pathfinder PUBLIC Vulkan::Vulkan)
64+
# Load Vulkan dll
65+
# find_package(Vulkan REQUIRED)
66+
#
67+
# target_link_libraries(pathfinder PUBLIC Vulkan::Vulkan)
68+
#
69+
# # This is to please GitHub Actions.
70+
# target_include_directories(pathfinder PUBLIC "${Vulkan_INCLUDE_DIRS}")
71+
#
72+
73+
# Load Vulkan dynamically
74+
if (ANDROID)
75+
# Prevent crash at vkCreateAndroidSurfaceKHR.
76+
set(VOLK_STATIC_DEFINES VK_USE_PLATFORM_ANDROID_KHR)
77+
endif ()
6778

68-
# This is to please GitHub Actions.
69-
target_include_directories(pathfinder PUBLIC "${Vulkan_INCLUDE_DIRS}")
79+
add_subdirectory("third_party/volk")
80+
target_link_libraries(pathfinder PUBLIC volk)
7081

71-
# Don't use add_compile_definitions, which doesn't propagate to parent projects.
7282
target_compile_definitions(pathfinder PRIVATE PATHFINDER_USE_VULKAN)
7383

7484
# Enable this for Vulkan 1.3 and higher on macOS.

demo/android/app/src/main/cpp/AndroidMain.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ void handle_cmd(android_app *app, int32_t cmd) {
1010
case APP_CMD_INIT_WINDOW:
1111
// The window is being shown, get it ready.
1212
native_engine = new NativeEngine(app);
13-
native_engine->init_app(false);
13+
native_engine->init_app(true);
1414
break;
1515
case APP_CMD_TERM_WINDOW:
1616
// The window is being hidden or closed, clean it up.

demo/android/app/src/main/cpp/CMakeLists.txt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ link_directories(lib/${ANDROID_ABI})
2323

2424
add_library(${CMAKE_PROJECT_NAME} SHARED
2525
AndroidMain.cpp
26-
vulkan_wrapper.cpp
2726
GameActivitySources.cpp
2827
native_engine.cpp)
2928

demo/android/app/src/main/cpp/native_engine.cpp

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
#include "native_engine.h"
22

33
// clang-format off
4-
#include "vulkan_wrapper.h"
4+
#include <volk/volk.h>
55
#include "pathfinder/gpu/gl/window_builder.h"
66
#include "pathfinder/gpu/vk/window_builder.h"
77
// clang-format on
@@ -83,11 +83,6 @@ bool NativeEngine::init_app(bool use_vulkan) {
8383
if (!use_vulkan) {
8484
window_builder = std::make_shared<Pathfinder::WindowBuilderGl>(mAppCtx->window, window_size);
8585
} else {
86-
if (!InitVulkan()) {
87-
Pathfinder::Logger::warn("Vulkan is unavailable, install vulkan and re-start");
88-
return false;
89-
}
90-
9186
window_builder = std::make_shared<Pathfinder::WindowBuilderVk>(mAppCtx->window, window_size);
9287
}
9388

demo/android/app/src/main/cpp/vulkan_wrapper.cpp

Lines changed: 0 additions & 404 deletions
This file was deleted.

demo/android/app/src/main/cpp/vulkan_wrapper.h

Lines changed: 0 additions & 236 deletions
This file was deleted.

pathfinder/gpu/render_api.h

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,7 @@
1313
#endif
1414

1515
#ifdef PATHFINDER_USE_VULKAN
16-
// Vulkan header.
17-
#include "vulkan_wrapper.h"
16+
#include <volk/volk.h>
1817
#endif
1918

2019
#elif defined(__EMSCRIPTEN__)
@@ -24,18 +23,17 @@
2423

2524
#ifdef PATHFINDER_USE_OPENGL
2625
#if defined(__linux__) && defined(__ARM_ARCH) || (defined(_WIN32) && defined(_M_ARM64))
27-
// Include OpenGL ES header via GLAD.
28-
#include <glad/gles2.h>
29-
#else
30-
// Include OpenGL header via GLAD.
31-
#include <glad/gl.h>
32-
#endif
33-
#define GLFW_INCLUDE_NONE
26+
// Include OpenGL ES header via GLAD.
27+
#include <glad/gles2.h>
28+
#else
29+
// Include OpenGL header via GLAD.
30+
#include <glad/gl.h>
31+
#endif
32+
#define GLFW_INCLUDE_NONE
3433
#endif
3534

3635
#ifdef PATHFINDER_USE_VULKAN
37-
#define GLFW_INCLUDE_VULKAN
38-
#include <vulkan/vulkan.h>
36+
#include <volk/volk.h>
3937
#endif
4038

4139
#include <GLFW/glfw3.h>

pathfinder/gpu/vk/window_builder.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,8 @@ WindowBuilderVk::WindowBuilderVk(const Vec2I &logical_size) {
3737

3838
create_instance();
3939

40+
volkLoadInstance(instance_);
41+
4042
setup_debug_messenger();
4143

4244
float dpi_scaling_factor;
@@ -58,6 +60,8 @@ WindowBuilderVk::WindowBuilderVk(ANativeWindow *native_window, const Vec2I &phys
5860

5961
create_instance();
6062

63+
volkLoadInstance(instance_);
64+
6165
setup_debug_messenger();
6266

6367
VkSurfaceKHR surface{};

pathfinder/gpu/vk/window_builder.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
#include <memory>
55
#include <vector>
66

7+
#include "../render_api.h"
78
#include "../window.h"
89
#include "../window_builder.h"
910
#include "device.h"

0 commit comments

Comments
 (0)